Remix+Geth 實現智能合約部署和調用詳解


Remix編寫智能合約

編寫代碼

Remix 在線編輯器
https://ethereum.github.io/browser-solidity/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js0

記得在setting里選擇對應版本

在線調試

當complie沒出現問題時, 就可以在線運行調試了

實現部署

點擊Run, create, 實現部署
在這里插入圖片描述

調用接口

在部署完之后會出現下面界面, 包括合約名字
在這里插入圖片描述
如何調用接口?

只需要在對應的接口上輸入參數, 調用的話,點擊前面的接口名就能在下面看到輸出

在這里插入圖片描述

經過以上兩步 我們應該已經調試好合約, 下面就是部署在私有鏈上了

Geth實現私有鏈部署合約和調用接口

部署合約

首先在ubantu安裝好Geth環境, 配置好私有鏈,具體可參考此博客
https://blog.csdn.net/qq874455953/article/details/83692732

然后我們打開web3命令行
在這里插入圖片描述

然后在Remix的complies界面點擊detail

在這里插入圖片描述

找到remix為我們自動生成的部署合約代碼

在這里插入圖片描述

復制此段代碼 然后放到web3命令行

注意 生成的默認是第一個賬戶發起的
from: web3.eth.accounts[0]

需要解鎖此用戶才可以

personal.unlockAccount(eth.accounts[0])

然后挖礦確認 部署合約

miner.start();admin.sleepBlocks(1);miner.stop()

在這里插入圖片描述

顯示已經部署成功, 而且顯示了合約的地址, 地址需要復制下來后面需要用

調用合約

獲得合約實例

方法1:
其實當你在web3命令行運行remix賦值的命令語句時, 此時已經是有一個實例了, 對於我上面的例子,此時的實例就是 fitbody , 注意不是fitbodyContract , fitbodyContract 相當於一個類, 而fitbody是合約類生成的合約實例, 我們用的就是合約實例。這時的fitbody相當於下文的MyContract

這是方法2:

調用合約首先需要獲得合約的實例,通過實例調用

var ac0 = web3.eth.accounts[0];

var MyContract = web3.eth.contract(<合約abi>).at(<合約地址>);

合約abi 通過編譯本地合約代碼獲得
把remix的合約放到ubantu里 保存為code.sol

solc --abi code.tol

需要自行安裝solidity編譯器

而合約地址剛才已經保存。

通過實例調用合約接口

獲得實例MyContract后可以通過下面方法調用

一般是需要先unLock調用的地址賬戶的

這種是對內容進行修改,或者合約需要發送以太幣時的調用方式,執行完可獲得交易的hash

MyContract.<你的合約接口, 這里一般會自動補全>.sendTransaction(<參數列表>, {from:<調用合約賬戶>, value : <附送的以太幣>, gas: 10000000});

這種是進行查詢時的接口調用方式

 MyContract.<接口名>.call(<參數>);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM