搭建以太坊智能合約開發環境
- 搭建以太坊智能合約開發環境
- 相關概念
- 以太坊智能合約開發環境介紹
- Linux安裝Geth
- 搭建私網并啟動Geth
- 第一步:配置創世塊檔案
- 第二步:資料初始化
- 第三步:啟動Geth節點
- 相關資料
相關概念
-
什么是智能合約?
如果我們把以太坊看作是一臺"全球計算機",那么智能合約就是是運行在以太坊這個"全球計算機"上的"行程",
注:之所以有上述比喻,是因為以太坊網路的節點遍布全球,在這樣的網路中運行計算就相當于在"一臺全球計算機"中運行計算,
-
為什么叫智能合約?
智能:智能合約是可以自動運行的,
合約:以太坊的合約代碼多會涉及一些資產轉移,而現實世界中簽訂合同也多是伴隨著資產轉移,因此把這樣的代碼叫合約,
以太坊智能合約開發環境介紹
以太坊智能合約是運行在以太坊節點上的,因此安裝開發環境時,就需要安裝至少一個以太坊節點(詳見下文
Geth安裝步驟),注:不只是以太坊,學習其他區塊鏈平臺前,也是需要安裝對應區塊鏈平臺的節點的,
以太坊針對多種語言(Go、C++、Rust、Java、Python),都開發了對應的客戶端軟體,其中最受歡迎的還是Geth(go-ethereum),它是由Go語言撰寫的,
Linux安裝Geth
提示:本人的安裝環境為
Ubuntu18
官網安裝說明見:
https://geth.ethereum.org/docs/install-and-build/installing-geth
-
以命令列的方式安裝
-
sudo add-apt-repository -y ppa:ethereum/ethereum
-
sudo apt-get update

-
sudo apt-get install ethereum

-
輸入
geth --help驗證一下

-
-
以壓縮包的方式安裝(略)
搭建私網并啟動Geth
相關概念:
- 主網:以太坊真是節點運行的網路,節點遍布全球,此網路中使用的
ETH是真實的虛擬數字貨幣,部署合約時需要消耗真金白銀,- 測驗網:測驗網的節點沒有主網節點那么多,主要是為以太坊開發者提供一個測驗的平臺環境,此網路上的
ETH可以通過做任務獲得,- 私網:私網是由開發者自行組建的網路,不與主網及測驗網連通,獨立存在,僅用于個人測驗或企業專案使用,
不論是主網、測驗網還是私網,都可以使用
Geth來啟動;Geth默認連接的是以太網主網,如果想要連接測驗網可以連接Ropsten或rinkeby:// Ropsten測驗網路 geth --testnet --fast --cache=512 console // Rinkeby測驗網路 geth --rinkeby --fast --cache=512 console
第一步:配置創世塊檔案
創建genesis.json檔案:
{
"config":{
"chainId": 18,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {},
"coinbase":"0x0000000000000000000000000000000000000000",
"difficulty":"0x2",
"extraData":"",
"gasLimit":"0xffffffff",
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
coinbase:挖礦后獲得獎勵的賬戶地址difficulty:挖礦難度gasLimit:一個區塊所能容納gas的上限,智能合約指令在執行時需要消耗gas,,可通過以太幣自動兌換nonce:隨機值mixhash:一個256位的hash證明,與nonce相結合,驗證本塊的有效性extraData:附加資訊,隨意填寫parentHash:前一塊的hash值,創世塊的parentHash值為0
第二步:資料初始化
初始化指令
geth init genesis.json --datadir ./data
init:初始化關鍵字datadir:指定資料存盤位置
效果如圖:

第三步:啟動Geth節點
geth --datadir ./data --networkid 18 --port 30303 --http --http.port 8545 --http.api 'db,net,eth,web3,personal' --http.corsdomain '*' --allow-insecure-unlock console 2> 1.log
datadir:指定之前第二步初始化的資料目錄檔案networkid:配置成與第一步genesis.json組態檔config內的chainId相同值,代表加入哪個網路,私網隨意編號即可port:P2P埠,即:節點之間互相通信的埠http:開啟遠程呼叫服務http.port:遠程服務埠,默認值為8545http.api:遠程服務提供的遠程呼叫函式集http.corsdomain:指定可以接收請求來源的域名串列(瀏覽器訪問,必須開啟)allow-insecure-unlock:允許在Geth命令視窗解鎖賬戶console:進入控制臺2 > 1.log:UNIX系統下的重定向,將Geth產生的日志輸出都重定向到1.log中,以免刷日志影響操作
效果如圖:

^_^ 整理自《Go語言區塊鏈應用開發從入門到精通》高野 編著
^_^ 本文已經被收錄進《程式員成長筆記》 ,筆者JustryDeng
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/294538.html
標籤:區塊鏈
