私链完成之后需要进行智能合约的部署,一种方案是通过Mist钱包进行编译、部署。另一种方案是通过命令行进行部署。
方案一的自行忽略;
方案二:每个以太坊合约编译之后都会得到ABI接口,通过使用ABI码来创建合约。在线编译器:https://remix.ethereum.org 获得ABI代码;
注:编译之后的ABI代码存放在 WEB3DEPLOY 中,在ABI栏中并不能看到ABI码;
获取ABI接口后,接下来利用命令行进行部署:(以下命令在geth中执行)
var mycontractContract = web3.eth.contract([{"constant":false,"inputs":[],"name":"getSum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]);
以上命令中web3.eth.contract(*)的 *是指通过编译器得到的abi;
var mycontract = mycontractContract.new( { from: web3.eth.accounts[0], data: '0x6080604052348015600f57600080fd5b5060868061001e6000396000f300608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063569c5f6d146044575b600080fd5b348015604f57600080fd5b5060566058565b005b5600a165627a7a723058203d6f886778e7b74f6e760c8b071bc5e31c848dac02751dcdee57f75514f6d4570029', gas: '4700000' }, function (e, contract){ console.log(e, contract); if (typeof contract.address !== 'undefined') { console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash); } })
以上命令中from :指创建合约的账户。其他数据均为编译器所得。
在开启new()时,需要开启挖矿模式: