cargo-contract is a unified CLI tool to develop and deploy ink! smart contracts.
cargo-contract, you can create new contracts, check and build existing ones and interact with uploaded contracts on-chain.
To start using
cargo-contract, ensure that you have your Rust toolchain installed. If you don't have an installed Rust toolchain, you can use Rustup to install one.
Besides using Rust toolchain,
cargo-contract requires a C++ compiler installed. You can use any modern version of GCC, Clang or MSVC.
After that, you can install
cargo-contract using the following steps:
rustup component add rust-src
cargo install --force --locked cargo-contract
To create a new contract use the
cargo contract new subcommand:
cargo contract new my_contract
After that, a new directory with the name
my_contract will be created, with the sample contract inside of it.
To build this sample contract, use the
cargo contract build command. This command automatically invokes Cargo, Rust's package manager with the necessary parameters to produce WASM blob. After generating WASM code, some ink!-specific optimizations are also applied automatically.
Assuming your build process was a success, we can proceed with uploading your code.
cargo contract upload subcommand, we can upload WASM blob to the specified chain (local development chain by default):
cargo contract upload --suri //Alice. In this case, we are using "Alice" test identity.
After running the
cargo-contract provides us with the code hash, which we can use to instantiate our smart contract.
Smart contract instantiation is required to "initialize" our contract by calling its constructor method:
cargo contract instantiate \
--constructor new \
--args false \
--suri //Alice \
cargo-contract provides us with the contract address, which we can use to call smart contract methods using the
cargo contract call \
--contract 0x123... \
--message hello \