智能合约发布准备
我们将这份智能合约部署到Geth节点运行的私有区块链上,如果还未开始,请按如下命令启动 Geth节点并启用挖矿。
cd ether-test geth --datadir ./db/ --rpc --rpcaddr=127.0.0.1 --rpcport 8545 --rpccorsdomain "*" \ --rpcapi "eth,net,web3,personal,admin,shh,txpool,debug,miner" \ --nodiscover --maxpeers 30 --networkid 198989 --port 30303 \ --mine --minerthreads 1 \ --etherbase "0x53dc408a8fa060fd3b72b30ca312f4b3f3232f4f"
好,Geth 节点开始稳步挖矿,区块链已经运行。我们再用 attach 命令依附到正在运转的 Geth节点上,获得操作台的控制权。
geth --datadir ./db attach ipc:./db/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.8.14-stable/darwin-amd64/go1.10.3 coinbase: 0x7df9a875a174b3bc565e6424a0050ebc1b2d1d82 at block: 90 (Sun, 16 Sep 2018 15:56:37 CST) datadir: /ether-test/db modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
我们导入刚才建立好的 temp.js 文件。
> loadScript('/path/to/your/ether-test/temp.js') true > output { contracts: { Vault.sol:Vault: { abi: "[{\"constant\":false,\"inputs\":[{\"name\":\"data\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]", bin: "608060405234801561001057600080fd5b5060bf8061001f6000396000f30060806040526004361060485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360fe47b18114604d5780636d4ce63c146064575b600080fd5b348015605857600080fd5b5060626004356088565b005b348015606f57600080fd5b506076608d565b60408051918252519081900360200190f35b600055565b600054905600a165627a7a723058203269ba0a634bf05e2a15966872aaa719b6d147aaa419d656374ad860104e6ef40029" } }, version: "0.4.24+commit.e67f0147.Darwin.appleclang" }
至此我们已经将编译好的智能合约顺利导入了开发环境中。
智能合约的部署过程也是一次普通的交易过程,我们需要将智能合约的数据整合到交易体的数据区(data),并发送出去。 一旦交易被捕获且挖矿完成,我们的合约就已经部署在了区块链上并具有了一个独一无二的地址。通过该地址,我们就能和智能 ...