Skip to content
A fast, flexible and simple development environment framework for Ethereum smart contract, testing and deployment on Ethereum virtual machine(EVM).
Python
Branch: master
Clone or download
Latest commit 2fce465 Aug 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cobra Update Greeter location Jul 19, 2019
docs removed images Aug 5, 2019
templates/Greeter Update greeter_test.py Jul 10, 2019
tests Update cobra Jul 16, 2019
.gitignore
.travis.yml Upgraded eth-cobra Jul 14, 2019
LICENSE Update LICENSE Jul 25, 2019
MANIFEST.in added MANIFEST.in Jun 27, 2019
Pipfile update Pipfile Jun 22, 2019
Pipfile.lock Pipfile lock Jun 22, 2019
README.md
cobra.png
pytest.ini Update tests paths. Jul 11, 2019
requirements.txt pytest-cobra 1.0.1 to 1.0.4 Jul 18, 2019
setup.py Upgraded v0.1.0 to v0.1.1 Jul 14, 2019
tox.ini Update tox.ini Jul 10, 2019

README.md

Build Status PyPI Python Version PyPI License PyPI Version Coverage Status


A fast, flexible and simple development environment framework for Ethereum smart contract, testing and deployment on Ethereum virtual machine(EVM).

With cobra you can get built-in smart contract compilation, linking, deployment, binary management, automated contract testing with Unittest and PyTest frameworks, scriptable deployment & migrations framework and network management for deploying to many public & private networks like INFURA or Ganache CLI.

Dependency

This library requires the solc executable to be present.

Only versions >=0.4.2 are supported and tested though this library may work with other versions.

  • solc: Ethereum solidity compiler.
  • ganache-cli: A command-line version of Ethereum blockchain server.
  • pip: To install packages from the Python Package Index and other indexes.
  • python3: version 3.6 or greater.

Installation

PIP to install cobra globally. For Linux sudo may be required.

pip install eth-cobra

Development

We welcome pull requests. To get started, just fork this repo, clone it locally, and run:

pip install -e . -r requirements.txt

Quick Usage

Initialize project structure

A default set of contract and tests, run the following command:

cobra init

Get help:

cobra --help

From there, you can run cobra compile, cobra deploy/migrate and cobra test --unittest/--pytest to compile your contracts, deploy those contracts to the network, and run their associated unit tests.

advanced cobra.yaml
compile:
  solidity_path: "./contracts" # global
  artifact_path: "./build/contracts"
  contracts: [
    contract: {
        solidity: "Contract.sol",
        solidity_path: "./contracts/libs", # detail
        import_remappings: [
          "=/path/folder/contracts/"
       ],
        allow_paths: [
          "/path/folder/contracts/"
        ]
    }
  ]

deploy:
  artifact_path: "./build/contracts/"
  contracts: [
    contract: {
        artifact: "Contract.json",
        links: ["Contract.json"]
    }
  ]

test:
  artifact_path: "./build/contracts/"
  test_paths: ["./tests"]
  contracts: [
    contract: {
        artifact: "Contract.json",
        links: ["Contract.json"]
    }
  ]

network:
  development: {
    url: "https://ropsten.infura.io/...",
    host: "localhost",
    port: 8545,
    hdwallet: {
        mnemonic: "decide adjust legend nation type same task aim rigid lucky guilt close", # or
        seed: "decide adjust legend nation type same task aim rigid lucky guilt close",
        password: "meherett",
        private: "5f8935bb3b61b312ba1114cbf6f1ea30102383f2b043a1b213aa482132d25049",
        gas: 3000000,
        gas_price: 1000000
    },
    protocol: "HTTP", # HTTP, HTTPS, WS(WebSocket) and ICP
    account: {
      address: "0x6a373a75c388ac2d160f1d2b6d9ada34f29831cd",
      gas: 3000000,
      gas_price: 1000000
    }
  }

Testing

Tests are still under development.

You can run the tests with:

pytest tests

Or use tox to run the complete suite against the full set of build targets, or pytest to run specific tests against a specific version of Python.

Meta

Meheret Tesfaye – @meherettmeherett@zoho.com

Distributed under the MIT license. See LICENSE for more information.

https://github.com/meherett

License

This project is licensed under the MIT License - see the LICENSE file for details

You can’t perform that action at this time.