Interact with contracts: upload, instantiate and call commands

We added commands to upload, instantiate and call contracts! This allows interacting with contracts on live chains with a compatible pallet-contracts.

For command-line examples on how to use these commands see #79.

Linting rules for smart contracts

We are introducing a linter for ink! smart contracts in this release! From now on cargo-contract checks if the ink! smart contract that is build or check-ed follows certain rules.

As a starting point we've only added one linting rule so far; it asserts correct initialization of the ink_storage::Mapping data structure.

In order for the linting to work with your smart contract, the contract has to be written in at least ink! 3.0.0-rc9. If it's older the linting will just always succeed.

Added

  • Interact with contracts: upload, instantiate and call commands - #79
  • Add linting to assert correct initialization of ink_storage::Mapping - #431

Changed

  • Upgrade subxt, SCALE crates, and substrate primitive sp-* crates #451.
  • Updated cargo contract new template dependencies to ink! 3.0.0-rc9 - #443