您的位置:首页 > 其它

在geth客户端部署智能合约

2018-03-26 22:58 363 查看
https://www.cnblogs.com/fengzhiwu/p/5629468.html 在geth上部署和调用智能合约完整教程在geth客户端部署智能合约1、编写智能合约源代码source="contract test { function multiply(uint a) returns(uint d) { return a * 7; } }";2、编译智能合约contract = eth.compile.solidity(source).test;这种方式需要在geth客户端安装solidity编译器solc,这个我暂时还没有找到解决办法,以后研究。我是用truffle客户端对智能合约进行编译的,编译之后,会生成一个合约对应的json文件。打开json文件,找到abi和bytecode在geth客户端进行定义。var abi=[{"constant": false,"inputs": [{"name": "a","type": "uint256"}],"name": "multiply","outputs": [{"name": "","type": "uint256"}],"payable": false,"stateMutability": "nonpayable","type": "function"}];var code="0x6060604052341561000f57600080fd5b60b18061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60006008820290509190505600a165627a7a72305820af1e3196bec2eb276a849a388e9c47ad20541b590c500c78c062d516b5b8de680029";3、创建智能合约对象MyContract=eth.contract(abi);4、部署合约。部署合约就是向以太坊上发送一个交易,目的地址不写就是发送给区块链contract=MyContract.new({from:eth.accounts[0],data:code});此时,可能会提示你账户不可用,就是没有解锁,用personal.unlockAccount()解锁即可,然后再部署部署完之后查看contract,发现address是undefined,这是因为交易才发送出去,没有矿工挖矿,没有写进区块链,所以还不知道。可以用txpool.status查看到5、启动挖矿miner.start();admin.sleepBlocks(13);miner.stop();挖矿之后,交易就写进区块链了,此时再查看contract就能看见有地址了。这样,智能合约就成功的部署在了以太坊上。
部署合约例子,带gas值和函数的var browser_test_sol_test = browser_test_sol_testContract.new(   {     from: web3.eth.accounts[0],      data: '0x6060604052341561000f57600080fd5b61014f8061001e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303b067c1146100675780632d74eb541461008a57806341c0e1b5146100b3578063b1976a02146100c8575b600080fd5b341561007257600080fd5b61008860048080359060200190919050506100f1565b005b341561009557600080fd5b61009d6100fb565b6040518082815260200191505060405180910390f35b34156100be57600080fd5b6100c6610101565b005b34156100d357600080fd5b6100db61011a565b6040518082815260200191505060405180910390f35b8060008190555050565b60005481565b3373ffffffffffffffffffffffffffffffffffffffff16ff5b600080549050905600a165627a7a72305820bbd6b703b7105d973e93a71195c628268c59227321b4f6f3aa1c3a2b510525950029',      gas: '4700000'   }, function (e, contract){    console.log(e, contract);    if (typeof contract.address !== 'undefined') {         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);    } })
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  区块链 以太坊