> `cargo-eosiocontract` is a CLI tool which helps you develop EOS smart contracts.



## Installation * Step 1: `rustup component add rust-src`. * Step 2: Install `binaryen` in a version >= 99: * [Debian/Ubuntu](https://tracker.debian.org/pkg/binaryen): `apt-get install binaryen` * [Homebrew](https://formulae.brew.sh/formula/binaryen): `brew install binaryen` * [Arch Linux](https://archlinux.org/packages/community/x86_64/binaryen/): `pacman -S binaryen` * Windows: [binary releases are available](https://github.com/WebAssembly/binaryen/releases) There's only an old version in your distributions package manager? Just use a [binary release](https://github.com/WebAssembly/binaryen/releases). * Step 3: `cargo install --force cargo-eosiocontract`. ## Usage You can always use `cargo eosiocontract help` to print information on available commands and their usage. For each command there is also a `--help` flag with info on additional parameters, e.g. `cargo eosiocontract new --help`. ##### `cargo eosiocontract new my_contract` Creates an initial smart contract with some scaffolding code into a new folder `my_contract` . The contract contains the source code for the [`Flipper`](https://github.com/paritytech/ink/blob/master/examples/flipper/lib.rs) contract, which is about the simplest "smart" contract you can build ‒ a `bool` which gets flipped from `true` to `false` through the `flip()` function. ##### `cargo +nightly contract build` Compiles the contract into optimized WebAssembly bytecode, generates metadata for it, and bundles both together in a `.contract` file, which you can use for deploying the contract on-chain. `cargo eosiocontract build` must be run using the `nightly` toolchain. If you have [`rustup`](https://github.com/rust-lang/rustup) installed, the simplest way to do so is `cargo +nightly contract build`. To avoid having to always add `+nightly` you can also set `nightly` as the default toolchain of a directory by executing `rustup override set nightly` in it. ##### `cargo eosiocontract check` Checks that the code builds as WebAssembly. This command does not output any `.contract` artifact to the `target/` directory. ## License The entire code within this repository is licensed under the [GPLv3](LICENSE).