智慧合約開發神器-Remix
Remix是一個基於solidity語言的線上智慧合約開發IDE,它提供從編譯,除錯到部署的全流程工具,功能非常強大。
介面
開啟Remix, 就會看到它的工作區:

資料夾管理
最左邊是資料夾管理,裡面列出了當前的工作區裡的檔案,remix可以支援從本地資料夾讀取檔案。工作區
正中間是工作區,工作區上半部是程式碼編輯區,在這裡可以寫solidity合約。
下半部是日誌區,在執行智慧合約時,會顯示transaction相關的資訊。功能區
最右邊是功能區,也是最為強大的地方,最主要的就是編譯和執行區了,除錯區其實也很強大,但是對於一般開發者太難用了(我..)
- 編譯
編譯裡會顯示當前合約的編譯結果以及編譯錯誤和報警等資訊 - 執行
在執行區,你可以選擇不同的環境(虛擬環境,內建web3等)部署和執行你的合約。
工作區裡的合約程式碼編譯後,可以在這個區裡部署和檢視。
Remix使用示例
對於智慧合約互相呼叫,我一直有一個疑問,如果使用者A呼叫合約a,而合約a又呼叫了合約b,那麼在合約b的程式碼執行時,msg.sender是誰?是使用者A還是合約a?
為了解決這個問題,我們來親自動手驗證下:
- 開啟remix,輸入程式碼
pragma solidity ^0.4.9;
contract Called {
address public caller;
function Test() {
caller = msg.sender;
}
}
contract Caller {
Called public called;
function Caller(address _called) {
called = Called(_called);
}
function Go() {
called.Test();
}
}
程式碼裡寫了一個Called和一個Caller合約,當我們呼叫Caller.Go()時,它會去呼叫對應Caller的Test()函式, Caller就會將msg.sender記錄下來。
-
部署Called
在功能區的編譯tab看到編譯沒有問題後,點開執行tab,我們可以選擇browser/ballot.sol:Called合約,然後點選Create,部署。(注意,這裡一定把上面的Envonment選項選成Javascript VM)remix-c1-create.png這時我們應該能看到Called已經部署了,右下多出了一個已經部署的Caller例項,我們可以點選複製按鈕複製該例項的地址。
-
部署Caller
在執行區中間選擇Caller合約,這裡可以看到它的Create裡是可以接收一個引數的,我們把剛剛複製的Called地址複製進去(記得用引號包圍)remix-c2-create.png點選Create,我們就部署了一個Caller了,該Caller裡有一個Called合約的引用。
-
測試
好,我們現在就可以測試啦,點選執行Caller合約的Go函式,可以看到日誌裡輸出了一些transaction資訊,但是Called裡面的caller值沒有更新,我們還需要點一下caller獲取當前的最新值。remix-c2-run.png可以看到,caller值更新成了0xbbf289d846208c16edc8474705c748aff07732db, 而這個就是下面的Caller合約的地址。
於是我們可以得到結論,當合約再去呼叫合約時,msg.sender會是上一個合約的地址,而不是交易發起者的地址。
相關文章
- 搭建智慧合約開發環境Remix IDE及使用開發環境REMIDE
- 使用remix ethereum部署智慧合約REM
- 使用Remix編譯和部署以太坊智慧合約REM編譯
- remix合約除錯設定pinfoREM除錯
- Dapp 合約代幣系統開發智慧合約APP
- 智慧合約Dapp專案如何開發構建?智慧合約開發原始碼示例APP原始碼
- Remix本地化,載入本地合約檔案,本地連結RemixREM
- SET智慧合約量化系統開發|秒合約量化開發搭建
- DAPP開發流程 | DAPP智慧合約開發APP
- 智慧合約系統開發原理介紹丨智慧合約開發原始碼詳情原始碼
- 智慧合約開發環境搭建及Hello World合約開發環境
- 區塊鏈智慧合約開發區塊鏈
- DApp智慧合約系統開發APP
- DAPP智慧合約/系統開發/智慧合約原始碼/DAPP/Defi/NFT/IDOAPP原始碼
- 智慧合約Dapp系統開發(方案)APP
- 智慧合約DApp專案開發流程APP
- ptahDAO智慧合約模式系統開發模式
- 中移鏈合約常用開發介紹(三)工程化開發智慧合約
- 使用remix實現給合約賬戶轉賬REM
- 智慧合約鏈遊開發詳情丨智慧合約鏈遊系統開發(開發方案)及原始碼分析原始碼
- 以太坊智慧合約開發第四篇:實現Hello World智慧合約
- 智慧合約盲盒遊戲開發上線版丨智慧合約盲盒遊戲系統開發(開發案例)遊戲開發
- Dapp智慧合約遊戲鏈遊開發丨智慧合約遊戲鏈遊系統開發案例版APP遊戲
- 迴圈互助智慧合約(FDF)系統開發(參考版)丨FDF智慧合約開發程式碼示例
- 合約交易系統開發|智慧合約交易平臺原始碼搭建原始碼
- 潘多拉Pandora系統開發/Pandoradapp開發智慧合約APP
- 利用Python在本地開發Neo智慧合約Python
- 開發NEO智慧合約的實用技巧
- 開發NEO智慧合約的工作流程
- 區塊鏈BSC智慧合約DAPP開發區塊鏈APP
- 馬蹄鏈Dapp智慧合約(系統開發)案例丨馬蹄鏈MATIC智慧合約技術開發原理APP
- DEFI借貸協議智慧合約開發技術丨dapp智慧合約系統開發應用詳情協議APP
- IDO雙幣流動性挖礦智慧合約開發流程丨智慧合約系統開發案例詳情
- 如何建立智慧合約遊戲系統?智慧合約遊戲開發核心原始碼示例遊戲開發原始碼
- MMM互助智慧合約(3M)公排互助迴圈智慧合約系統開發
- 以太坊智慧合約開發第七篇:智慧合約與網頁互動網頁
- DAPP智慧合約迴圈互助遊戲開發原理丨DAPP智慧合約迴圈互助遊戲系統開發(開發案例)APP遊戲開發
- 馬蹄鏈智慧合約DAPP開發需求丨馬蹄鏈智慧合約DAPP質押挖礦系統開發(開發案例)APP
- 智慧AI交易merrill合約系統開發/智慧AI交易merrill量化合約開發技術AI