接觸區塊鏈有一段時間了,然而僅僅停留在炒概念、蹭熱點是沒有意義的,於是決定沉下心來,踏踏實實的學習寫代碼,從最基礎的Geth,Mist,Solidity,Truffle等學起,按照網上各位達人寫的教程,一步步去實驗,出現問題百度,反反復復,直到問題一個一個解決,慢慢有了一些心得。今天就來講講怎樣從0開始,搭建起可以在自己電腦上進行測試的以太坊私有鏈,我用的是windows系統,雖然很多達人都寫了不少Mac和Linux上搭建的教程,因為想盡快上手,就懶得再去裝Centos或Ubuntu,更不想花銀子買台Mac。
1. 重要工具Geth和Mist(或Ethereum Wallet)
工欲善其事,必先利其器。要學會玩兒以太坊,首先得學習怎樣使用Geth跟Mist兩樣工具。先來解釋一下這兩樣工具分別是干嘛用的。
Geth:純命令行工具,用來新建賬戶、管理節點、部署執行合約、轉移以太幣、還有挖礦。
Windows版的Geth可以在官網上下載exe文件,然后直接安裝。官網:https://geth.ethereum.org/
Geth的運行需要在cmd或Powershell(“運行”里輸入打開)里面敲命令實現。
Mist(或Ethereum Wallet):以太坊錢包工具,Mist跟Ethereum Wallet的區別在於Ethereum Wallet僅僅是一個“錢包”,而Mist不僅是“錢包”,還是一個去中心化的瀏覽器。
Mist是一個圖形化的操作界面,可以更加直觀的在上面進行賬戶管理、發送以太幣、以及部署智能合約。
2. Geth安裝和配置
(1)https://geth.ethereum.org/ 官網上下載geth-windows-amd64-1.8.2-b8b9f7f4.exe(根據不同的系統選擇),雙擊安裝,再在“我的電腦”-“屬性”-“高級設置”里配置一下環境變量
(2)“運行”里輸入cmd或powershell打開命令行界面,輸入geth version回車,如果顯示版本信息,則表示geth安裝成功。
(3)准備創世區塊文件genesis.json
復制以下代碼,然后打開notepad++,粘貼進去,再保存為genesis.json文件名,放在Geth安裝目錄下新建的tmpPrivate(名字可以隨便取)的文件夾下里面{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x40000",
"extraData" : "",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": { }
}
(4)回到cmd命令行,用cd命令進入geth安裝目錄,輸入geth --datadir "./" init genesis.json
(5)打開geth控制台
按回車,輸入geth --rpc --rpccorsdomain "*" --datadir "C:\Users\用戶名\tmpPrivate" --port "30303" --rpcapi "db,eth,net,web3" --networkid 10000 console
10000是網絡id,可以隨便寫,其他的不用改
回車后,進入geth,如圖
“>”后面就可以輸入geth命令,建立賬戶、發送以太幣、以及挖礦了!
(6)創建賬號:
輸入命令personal.newAccount(“XXXXXX”)
XXXXXX是創建賬戶的密碼,也是發送以太幣的支付密碼,一定要保密!!如圖
123456是我隨便自己設的密碼
創建好以后,系統默認的賬戶是eth.accounts[0],可以輸入eth.accounts[0]查看該賬戶的公鑰
輸入eth.getBallance(eth.account[0])可以查看該賬戶里有多少以太幣
這里顯示的是0,因為我們還沒有挖礦,所以這里面是沒有錢的,下面我們就可以開始挖礦了
(7)挖礦
記住,我們現在建立的是私有鏈,挖礦得到的以太幣都是暫時的,一旦命令行界面關閉,所有的挖礦得到的以太幣都將清零。
挖礦的命令:miner.start()
停止挖礦命令:miner.stop()
這里注意幾點:
一、一旦輸入挖礦命令開始挖礦,所有挖到的以太幣(非真實的以太幣)都將進入account[0]賬戶
二、建議使用miner.start(1)使用一個進程來挖礦,miner.start()會耗用所有單機資源來挖礦,電腦會拖的很慢
三、一旦開挖,電腦會花幾分鍾進行配置,所以不要心急,耐心等待
等開始挖礦之后,輸入eth.getBallance(eth.account[0])可以看到賬戶里不斷增長的假以太幣了。
3. 配置靜態節點
我們知道,區塊鏈是由許許多多的節點來驗證交易的過程,並承認交易的合法性,然后產生相應的區塊,那么如何讓私有鏈不斷的產生合法的區塊?
這就需要我們為該私有鏈配置靜態節點。
靜態節點可以來自用戶自己的電腦,也可以來自其他IP地址提供的節點,目前已知這樣的節點有很多,后面我們會提供。我們先來介紹如何配置靜態節點:
(1)首先,配置靜態節點很簡單,只需要在geth命令行里輸入
admin.addPeer("enode:公有鏈地址@IP地址:30303") 如圖:
(2)使用自己賬戶的公有鏈地址和自己電腦的IP地址
使用自己賬戶的公有鏈地址:
輸入admin.nodeInfo查看
另外打開一個cmd輸入ipconfig查看自己的Ip地址,這個大家應該都會吧
(3)使用第三方提供的靜態節點
這里提供一些靜態節點供大家參考
"enode://6427b7e7446bb05f22fe7ce9ea175ec05858953d75a5a6e4f99a6aec0779a8bd6276f1959a42fe5948acbe14bcd0652082dc546d3b37ae8f2aea41eba4eca43b@121.201.14.181:30303",
"enode://91922b12115c067005c574844c6bbdb114eb262f90b6355cec89e13b483c3e4669c6d63ec66b6e3ca7a3a462d28edb3c659e9fa05ed4c7234524e582a8816743@120.27.164.92:13333",
"enode://3dde41a994b3b99f938f75ddf6d48318c78ddd869c70b48d00b922190bb434fc5474f6250c143723f4387273d123e02f6a38f07d0311f240d2915f6140e09850@207.226.141.212:30303",
"enode://7ab8fa90b204f2146c00939b8474549c544caa3598a0894fa639a5cdbd992cbc6135fd776f8bcf97ae95fdaa3afbfa2d107fea71549119afd7ea57356b899be5@121.201.24.236:30303",
"enode://db81152a8296089b04a21ad9bf347df3ff0450ffc8215d9f50c400ccf8d18963118010cacf03c4b71981cf9cac5394438cab3039e98db4d2aae5859ab7d1793e@139.198.1.244:30303",
"enode://68dd1360f0a4ac362b41124692e31652ffe26f6f06a284ca11f3b514b3968594ac1f4320d1aa1ca343b06327c18a2e40eded74edfb3086e1baaa27ca24226b21@113.106.85.172:30303",
"enode://58f6b6908286cefe43c166cfc4fed033c750caa1bc3f6e1e1e1507752c0b91248addb3122f8557c5f8912e702285a160ab3a10203ae1eff3807eda25d6ed6478@45.113.71.186:30303",
"enode://87190a01c02cafb97e7f49672b4c3be2937cf79c3969e0b8e7b35cac28cebfbda52a13d56fd2113c726a1dd359c9476ccf7e60651439cef56e3a71039f6a4f5e@119.29.207.90:30303",
"enode://d1fdd05a62fd9544eeb455e4f4d4bd8bb574138d82d8f909f3041d0792e3401f8695133d39ad0a3aa5d217e3c5bed0511b531505a67b03607a909ae9096720d2@120.26.129.121:30303",
"enode://a1e9cf99eca94590ae776c8dd5c6c043a8c1f0375e9e391c9fb55133385bf453ac3d3fb3ead8e63415b2ef99d54a19e2a7bc830cd1fdbbb283818e3bcb0ea31e@182.254.209.254:30303",
"enode://562796b19d43d79dfb6160abd2d7bb78a2f2efd9501a0a767c00677e0fb3a4407235f813c3003682c2a421a58709c52f595827bc15708cc5f534f55d0f8d03ad@121.40.199.54:30303",
"enode://fa2c17dcc83a6e2825668210abf7480452de4b13d8bdea8f301c3b603701918bc4dade9e68d119d7a8214e90e7ea10a2782041c98951385d97bee73358fb08f4@120.26.124.58:30303",
"enode://0b331b27e2976d797aed1d1464ac483a7f262860334cb5737a01a0188da08d79226a6973adc5f2a2c1a20192b399161eee23a0d56ecf472cbe4058d010ecc89f@47.89.49.61:30303",
"enode://0639f20fdb5af1fecd2f2bc0ddb648885483a5945686530e6b046678635d3435dd7b92fe34209f81ec6f003482aa78e407e5e6eb1b10be4773a2adbcf1fc1ba6@118.192.161.147:30303",
"enode://fd2a5d30e4f3917ee640876cc57d72a8bf5ecf049e9106c95e60cf306dd7a5dd68d1a295f3718af44a7083252686926d6e8a402f1abe6f805e10e7281967db28@121.201.29.82:30303",
"enode://0d1b9eed7afe2d5878d5d8a4c2066b600a3bcac2e5730586421af224e93a58cd03cac75bf0b2a62fd8049cd3692a085758cc1e407c8b2c94bb069814a5e8d0f0@209.9.106.245:30303",
"enode://ca087a651571d04953187753af969f7deb1582af2a06a3048b90adb3f87d4c41973aac4b5e80449efc97154dac769a5ea447b123c3aaf7a2c23825a1558804dc@182.150.37.23:30303",
"enode://9b53b9d41d964f71db60d2198cfa9013fc7808d707c5e0a32da1e22d3cacd6adbae46901df6506a752d9d4e3791df29171315fbb86f7b09331a25458158fe65b@182.150.37.24:30303"
4. Mist/EthereumWallet使用
https://github.com/ethereum/mist/releases/ 下載Mist或EthereumWallet客戶端
下載完后啟動,EthereumWallet不用安裝可以直接打開,所以我們以這個為例
如果沒有打開靜態節點,那么啟動界面將會一直提示“Ethereum node needs to sync, please wait...”
不用理會,直接點擊“LAUNCH APPLICATION”進入
因為我們還沒有挖礦,或者命令行重新啟動,主賬戶(Main Account)即命令行中的(eth.accounts[0])歸零,要讓主賬戶有錢,我們回到命令行中,通過geth的miner.start()命令開始挖礦就可以了
這里我們用5個線程來挖,需要等上幾分鍾,泡杯茶,然后就可以看到:
同時,你的EthereumWallet里面的MainAccount上面的金額也在不斷增加
至此,我們的私有鏈便搭建完成!!
希望感興趣的朋友加我微信一起討論