区块链(八)在本地以太坊客户端部署智能合约

此博客讲解智能合约在本地以太坊客户端的部署和测试。本地以太坊的搭建和启动在区块链(三)基于本地以太坊客户端搭建多节点私链中已经介绍过,在此不再阐述。有关智能合约部署过程中涉及到的智能合约abi和字节码数据在区块链(七)智能合约(Smart Contract)中已经详细作了介绍在此也不再做阐述。接下来,我们介绍一下在本地以太坊客户端如何部署智能合约。

1. 查看本地账户有没有足够的gas来进行部署合约。

eth.getBalance(eth.accounts[0])

效果如下:

如果账户没有足够的gas需要挖矿代码如下:

miner.start()

2. 定义智能合约的abi

abi = [{"constant":true,"inputs":[],"name":"getmanagResult","outputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"},{"internalType":"uint256","name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}]

以太坊客户端会自动进行json数组对齐,效果如下:

3. 通过abi创建智能合约

MyContract = eth.contract(abi)

效果如下:

4.在部署合约之前需要解锁账户

 personal.unlockAccount(eth.accounts[0])

5.部署合约

strContract=MyContract.new({from:eth.accounts[0],data:"0x6080604052348015600f57600080fd5b5060ab8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063a0268dac14602d575b600080fd5b60336057565b60405180848152602001838152602001828152602001935050505060405180910390f35b600080600060016002600382925081915080905092509250925090919256fea265627a7a72315820d730cd6dd59b2d2f91b2b3ce1fdc420df258bb22b8cb42b2af3cab5f787f5e4c64736f6c634300050d0032"})

效果如下:

6. 测试合约部署状态(pending为1成功)

txpool.status

效果如下:

7.通过挖矿,让合约上块

miner.start()

8.停止挖矿

miner.stop()

9.再次查看合约状态(pending为0成功)

txpool.status

效果如下:

10. 查看合约地址

strContract.address

11.  调用合约

BackContract=MyContract.at(strContract.address)

效果如下:

12. 测试智能合约中的方法

BackContract.getmanagResult.call()

测试效果如下:

至此,智能合约在本地以太坊客户端的部署、测试工作已经完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章