在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); } })
部署合约例子,带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); } })
相关文章推荐
- 以太坊(geth客户端)利用truffle部署智能合约
- 在geth客户端调用已部署的智能合约
- 在geth客户端调用已部署的智能合约
- 使用Geth和truffle进行私有区块链智能合约Ethereum的创建和部署
- geth1.6部署智能合约
- 以太坊智能合约代币应用开发(4)-web3客户端与geth节点交互
- Ubuntu下geth搭建私有链+部署智能合约+与合约交互笔记
- 【区块链学习】以Linux为例,通过控制台部署和运行智能合约
- 如何使用web3.js 部署智能合约
- 智能合约图形化部署和运行原理
- Truffle 3.0部署智能合约至Ethereum节点(区别truffle部署智能合约到testrpc)
- 搭建以太坊私有链和部署智能合约开发环境
- 区块链入门(5)Truffle 项目实战,Solidity IDE, 智能合约部署
- 【智能合约】客户端和web端对智能合约的事件Event进行调用的代码示例
- 以太坊私有链环境下智能合约部署流程
- 【附代码】如何在私有链上编写、部署与以太坊进行交互的智能合约
- 了解以太坊区块链智能合约开发从零构建和部署去中心化投票
- geth javascript控制台与智能合约交互
- 091023 T GIX4 项目中的 智能部署 和 智能客户端
- 以太坊笔记 Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约