Etch smart contracts
Smart contract code runs on the
etch virtual machine.
All ledger nodes contain the
etch VM and smart contract code.
The identity of a smart contract is calculated by performing a
SHA256 hash on the contract code string as an initial step. Next, a further
SHA256 hash is calculated from the previous result concatenated with a public key
Address which represents the contract owner.
On the ledger, the
etch VM stores the contract identity, the contract source code, and the data resources that are mapped by a
With this information, the
etch VM performs a modulo 16 calculation to decide where to store the data on the ledger, i.e. onto which shard.
Coming soon: details on how developers may dictate the sharding storage design for a smart contract.
Smart contract addresses
etch smart contracts have a unique identification protocol for addressing on the Fetch.ai Ledger.
etch smart contract identifiers are a SHA256 hash of the contract source code which is then Base64 encoded and finally concatenated with the Base64 encoded owner's public key.
Using this identifier, smart contract functions are accessible with a subsequent
. plus function name.
If you run an
etch contract in the simulator containing one or more
State types and flag the compiler with
-data and a filename, it will create a
json file containing the details of the data that will be stored on the ledger.
./etch *filename* -data data.json
If we run one of the above code examples in this way,
data.json may contain the following: