區塊鏈(八)在本地以太坊客戶端部署智能合約

此博客講解智能合約在本地以太坊客戶端的部署和測試。本地以太坊的搭建和啓動在區塊鏈(三)基於本地以太坊客戶端搭建多節點私鏈中已經介紹過,在此不再闡述。有關智能合約部署過程中涉及到的智能合約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()

測試效果如下:

至此,智能合約在本地以太坊客戶端的部署、測試工作已經完成。

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