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(<參數>);