初識Solidity、Remix與Geth節點結合部署智能合約
- 初識Solidity、Remix與Geth節點結合部署智能合約
- 初識Solidity
- Remix與Geth節點結合部署智能合約
- 第一步:訪問
http://remix.ethereum.org/,進入以太坊智能合約在線IDE工具Remix - 第二步:創建并撰寫sol檔案
- 第三步:編譯
- 第四步:部署
- 第一步:訪問
- 相關資料
初識Solidity
目前支持智能合約的區塊鏈平臺很多,智能合約的開發語言也有多種選擇,以太坊智能合約的開發語言主要采用Solidity,(因為以太坊是第一個誕生智能合約的區塊鏈平臺,后續區塊鏈平臺大多都借鑒了它的智能合約開發環境,所以)目前Solidity是多數主流區塊鏈平臺所采用的智能合約開發語言,
示例說明:
下面代碼的功能是將Msg值初始化為hello
pragma solidity^0.6.0;
contract hello {
string public Msg;
constructor () public {
Msg = "hello";
}
}
-
pragma:Solidity的編譯控制指令 -
^0.6.0:指定使用0.6.0版本的編譯器對改代碼進行編碼注:也可以指定編譯器版本的范圍,如:
pragma solidity > 0.4.99 < 0.6.0; -
contract:定義智能合約的關鍵字 -
hello:自定義的智能合約名稱 -
string public Msg::類似于Java中的實體變數 -
constructor:智能合約的建構式,智能合約在被部署時,其建構式會被呼叫
Remix與Geth節點結合部署智能合約
第一步:訪問http://remix.ethereum.org/,進入以太坊智能合約在線IDE工具Remix

第二步:創建并撰寫sol檔案

第三步:編譯

- ①切換至編譯頁
- ②選擇編譯器版本
- ③選擇語言
- ④選擇虛擬機版本(上圖選擇的是拜占庭版虛擬機)
- ⑤右側選擇要編譯的sol檔案,然后點擊此處進行編譯
- ⑥查看編譯后的統計結果(這里有一個警告)
第四步:部署
部署的方式有三種:
JavaScript VM:Remix內置的虛擬機,運行速度快,無需挖礦,測驗方便,Injected Web3:單擊時會連接瀏覽器安裝的Metamask插件(即:以太坊瀏覽器錢包插件),很多時候,我們都是通過Metamask錢包將合約部署到主網或測驗網,Web3 Provider:單機時,將代表要連接某個以太坊節點,需要指定Geth的連接池,
提示: 本步驟示例演示以Web3 Provider的方式進行部署,
-
第一步:啟動Geth私網節點
root@ubuntu:~# geth --datadir ./data --networkid 18 --port 30303 --rpc --rpcport 8545 --rpcapi 'db,net,eth,web3,personal' --rpcaddr 192.168.19.129 --rpccorsdomain '*' --gasprice 0 --allow-insecure-unlock console 2> 1.log Welcome to the Geth JavaScript console! instance: Geth/v1.9.10-stable-58cf5686/linux-amd64/go1.13.6 at block: 0 (Wed, 31 Dec 1969 16:00:00 PST) datadir: /root/data modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > -
第二步:呼叫
personal.newAccount("密碼")創建賬戶并設定密碼提示: 若已存在賬戶,那么可跳過此步驟,
> personal.newAccount("123") "0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f" >personal:遠程api"類"newAccount:遠程api"類"中的"方法"123:"方法"的引數0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f:得到的賬戶地址
-
第三步:解鎖賬戶
提示: 對于Geth內的賬戶,需要解鎖后才可使用
> eth.accounts ["0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f"] > acc0=eth.accounts[0] "0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f" > personal.unlockAccount(acc0,"123") true >eth.accounts:查看所有賬戶acc0=eth.accounts[0]:令eth.accounts[0]賬戶為默認賬戶personal.unlockAccount(acc0,"123"):解鎖acco所在表的賬戶,此時需要輸入早該賬戶的密碼
-
第四步:回傳Remix界面,選擇
Web3 Provider部署,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mTwMX85m-1630768103790)(../repository/image-20210830012221298.png)]](https://img.uj5u.com/2021/09/06/262276062134135.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-p9FsSTbf-1630768103793)(../repository/image-20210830012506682.png)]](https://img.uj5u.com/2021/09/06/262276062134136.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IjfXPg9i-1630768103796)(../repository/image-20210904212920759.png)]](https://img.uj5u.com/2021/09/06/262276062134137.png)
-
第五步:啟動挖礦,完成交易,
區塊鏈的每次智能合約的執行都是一次交易,這個交易需要挖礦才能被打包到區塊中,只有被打包到區塊中,才代表交易執行成功了,需要啟動挖礦,這也是區塊鏈平臺的最大特點,
合約要想跑,挖礦少不了,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kII4UeLY-1630768103799)(../repository/image-20210904214248861.png)]](https://img.uj5u.com/2021/09/06/262276062134138.png)
-
第六步:驗證一下,
提示:因為挖礦存在一定的概率問題,所以上一步執行后進行這一步驗證時,可能需要等一會兒才會出來部署成功的結果(即:可能需要等一會兒才會出來交易的結果),挖礦給力就比較快,挖礦不給力就等得久,
注:本人等了約10分鐘,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3HQZwRW3-1630768103803)(../repository/image-20210904215817446.png)]](https://img.uj5u.com/2021/09/06/262276062134139.png)
^_^ 整理自《Go語言區塊鏈應用開發從入門到精通》高野 編著
^_^ 本文已經被收錄進《程式員成長筆記》 ,筆者JustryDeng
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/297975.html
標籤:區塊鏈

