如何部署一个智能合约
2020-08-11 本文已影响0人
a树
智能合约的代码写完后,要编译成bytecode。创建合约时,外部帐户发起一个转账交易到0x0的地址,转账金额(“VALUE”域)是0,但是要支付汽油费,合约的代码放在data域里。
合约部署后会创建一个合约账户,合约账户里保存着智能合约的可执行字节码(编译之后的,在EVM里执行),并且有存储空间,合约能对合约账户的空间写入信息.而abi是一个接口结构,利用abiDefinition可以创建调用该合约的结构.abi应该由合约所有方自己保存和提供.
合约的数据正常情况下,需要全部放到链上的,例如以太坊的是statedb就是用来存放智能合约的状态的,statedb的根就在block header里面,用以保证数据的不可篡改。那么监督借点在接到旷工节点的块同步请求的时候,需要replay交易,然后监督节点也从新跑智能合约,完成statedb的状态转移,最后计算statedb的根,用来跟旷工节点同步的根对比,一致则将块放到链上,此时,你应该知道存储合约的状态其实很简单,只需要一个本地kv存储,例如leveldb或者couchdb等,提供给合约调用即可。