以太坊多節(jié)點私有鏈部署

1.1 參考文檔

https://g2ex.github.io/2017/09/12/ethereum-guidance/

1.2 GO語言安裝

  1. 下載https://dl.google.com/go/go1.10.linux-amd64.tar.gz

  2. 解壓

  3. 設(shè)置環(huán)境變量

  4. 運行g(shù)o version獲取go的版本信息憎亚,說明安裝成功

1.3 安裝ethereum

  1. 下載https://codeload.github.com/ethereum/go-ethereum/zip/v1.8.3

  2. 解壓戈次,cd根目錄下

  3. make all

  4. 設(shè)置環(huán)境變量

  5. 運行g(shù)eth version獲取geth的版本信息,說明安裝成功

1.4 搭建私有鏈

1.4.1 創(chuàng)建目錄和genesis.json文件

  • 創(chuàng)建私有鏈根目錄./testnet

  • 創(chuàng)建數(shù)據(jù)存儲目錄./testnet/data0

  • 創(chuàng)建創(chuàng)世區(qū)塊配置文件./testnet/genesis.json

{

 "config": {

 "chainID": 1024,

 "homesteadBlock": 0,

 "eip155Block": 0,

 "eip158Block": 0

 },

 "alloc": {},

 "coinbase": "0x0000000000000000000000000000000000000000",

 "difficulty": "0x400",

 "extraData": "",

 "gasLimit": "0x2fefd8",

 "nonce": "0xdeadbeefdeadbeef",

 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

 "timestamp": "0x00"

}

1.4.2 初始化操作

cd ./testnet

geth --datadir data0 init genesis.json

成功后顯示:

<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"><v:formulas></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:stroke></v:shapetype><v:shape id="圖片_x0020_6" o:spid="_x0000_i1027" type="#_x0000_t75" style="width:414.75pt;height:59.25pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""></v:imagedata></v:shape>

1.4.3 啟動私有節(jié)點

cd ./testnet

geth --networkid 1024 --identity "bootnode" --rpc --rpcaddr "192.168.0.1" --rpcport "8545" --datadir data0 --port "30303" --nodiscover console

1.4.4 創(chuàng)建賬號

personal.newAccount()

1.4.5 查看賬號

eth.accounts

1.4.6 查看賬號余額

eth.getBalance(eth.accounts[0])

1.4.7 啟動&停止挖礦

啟動挖礦:
miner.start(1)

其中 start 的參數(shù)表示挖礦使用的線程數(shù)核偿。第一次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢匈辱,等進(jìn)度達(dá)到 100% 后钾埂,就會開始挖礦,此時屏幕會被挖礦信息刷屏蝶怔。

停止挖礦,在 console 中輸入:
miner.stop()
挖到一個區(qū)塊會獎勵5個以太幣兄墅,挖礦所得的獎勵會進(jìn)入礦工的賬戶踢星,這個賬戶叫做 coinbase,默認(rèn)情況下 coinbase 是本地賬戶中的第一個賬戶隙咸,可以通過 miner.setEtherbase() 將其他賬戶設(shè)置成 coinbase沐悦。

1.4.8 轉(zhuǎn)賬

目前,賬戶 0 已經(jīng)挖到了 3 個塊的獎勵五督,賬戶 1 的余額還是0:

eth.getBalance(eth.accounts[0])
15000000000000000000
eth.getBalance(eth.accounts[1])
0
我們要從賬戶 0 向賬戶 1 轉(zhuǎn)賬藏否,所以要先解鎖賬戶 0,才能發(fā)起交易:

personal.unlockAccount(eth.accounts[0])
Unlock account 0x3443ffb2a5ce3f4b80080791e0fde16a3fac2802
Passphrase:
true

發(fā)送交易充包,賬戶 0 -> 賬戶 1:
amount = web3.toWei(5,'ether')
"5000000000000000000"
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})

需要輸入密碼 123456

 INFO [09-12|07:38:12] Submitted transaction fullhash=0x9f5e61f3d686f793e2df6378d1633d7a9d1df8ec8c597441e1355112d102a6ce recipient=0x02bee2a1582bbf58c42bbdfe7b8db4685d4d4c62
"0x9f5e61f3d686f793e2df6378d1633d7a9d1df8ec8c597441e1355112d102a6ce"

此時如果沒有挖礦副签,用 txpool.status 命令可以看到本地交易池中有一個待確認(rèn)的交易遥椿,可以使用 eth.getBlock("pending", true).transactions 查看當(dāng)前待確認(rèn)交易。

使用 miner.start() 命令開始挖礦:
miner.start(1);admin.sleepBlocks(1);miner.stop();

新區(qū)塊挖出后淆储,挖礦結(jié)束冠场,查看賬戶 1 的余額,已經(jīng)收到了賬戶 0 的以太幣:

web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')

1.4.9 連接到其他節(jié)點

可以通過 admin.addPeer() 方法連接到其他節(jié)點本砰,兩個節(jié)點要要指定相同的 chainID碴裙。

假設(shè)有兩個節(jié)點:節(jié)點一和節(jié)點二,chainID 都是 1024点额,通過下面的步驟就可以從節(jié)點一連接到節(jié)點二舔株。

首先要知道節(jié)點二的 enode 信息,在節(jié)點二的 JavaScript console 中執(zhí)行下面的命令查看 enode 信息:

admin.nodeInfo.enode"enode://d465bcbd5c34da7f4b8e00cbf9dd18e7e2c38fbd6642b7435f340c7d5168947ff2b822146e1dc1b07e02f7c15d5ca09249a92f1d0caa34587c9b2743172259ee@[::]:30303"
然后在節(jié)點一的 JavaScript console 中執(zhí)行 admin.addPeer()还棱,就可以連接到節(jié)點二:

admin.addPeer("enode://d465bcbd5c34da7f4b8e00cbf9dd18e7e2c38fbd6642b7435f340c7d5168947ff2b822146e1dc1b07e02f7c15d5ca09249a92f1d0caa34587c9b2743172259ee@127.0.0.1:30304")

addPeer() 的參數(shù)就是節(jié)點二的 enode 信息载慈,注意要把 enode 中的 [::] 替換成節(jié)點二的 IP 地址。連接成功后珍手,節(jié)點二就會開始同步節(jié)點一的區(qū)塊娃肿,同步完成后,任意一個節(jié)點開始挖礦珠十,另一個節(jié)點會自動同步區(qū)塊,向任意一個節(jié)點發(fā)送交易凭豪,另一個節(jié)點也會收到該筆交易焙蹭。

通過 admin.peers 可以查看連接到的其他節(jié)點信息,通過 net.peerCount 可以查看已連接到的節(jié)點數(shù)量嫂伞。

除了上面的方法孔厉,也可以在啟動節(jié)點的時候指定 --bootnodes 選項連接到其他節(jié)點。

1.4.10 創(chuàng)建Windows節(jié)點

1. 初始化新節(jié)點:

G:\blockchain\testnet>"C:\Program Files\Geth\geth.exe" --datadir data0 init genesis.json

注意:

  • 新節(jié)點的 networkid 要與 boot node 一致
  • 需要與 boot node 使用同一個創(chuàng)世區(qū)塊genesis.json

2. 啟動新節(jié)點:

G:\blockchain\testnet>"C:\Program Files\Geth\geth.exe" --networkid 1024 --identity "onenode" --rpc --rpcport "8545" --datadir data0 --port "30303" --nodiscover console(不指定IP地址帖努,默認(rèn)訪問http://localhost:8545

指定IP****地址撰豺,訪問http://192.168.0.158:8545****:

"C:\Program Files\Geth\geth.exe" --networkid 1024 --identity "onenode" --rpc --rpcaddr "192.168.0.158" --rpcport "8545" --datadir data0 --port "30303" --nodiscover console

3. 建立節(jié)點間聯(lián)系:

使用admin.nodeInfo.enode獲取主節(jié)點的節(jié)點信息,如:

"enode://acb58e7dc684a0663f29be62c75db56efcb16d77ed9320e6d8d0969be436f06eb83f222367be071dac0337d007fb17033d820b287fe5b79982e820b8d7d86338@[::]:30303?discport=0"

其中@[::]****修改為@[192.168.0.1]****,即實際IP****地址拼余。

在新節(jié)點加入有兩種方式:

1是在testnet/data0/geth/目錄 下添加static-nodes.json污桦,內(nèi)容為:

[

"enode://acb58e7dc684a0663f29be62c75db56efcb16d77ed9320e6d8d0969be436f06eb83f222367be071dac0337d007fb17033d820b287fe5b79982e820b8d7d86338@[192.168.0.1]:30303?discport=0"

]

2 使用命令添加

admin.addPeer("enode://acb58e7dc684a0663f29be62c75db56efcb16d77ed9320e6d8d0969be436f06eb83f222367be071dac0337d007fb17033d820b287fe5b79982e820b8d7d86338@[192.168.0.1]:30303?discport=0");

4. 查看節(jié)點間的聯(lián)系

admin.peers

5. 查看節(jié)點信息

admin.nodeInfo

6. 創(chuàng)建賬號

0xd4ed594d42c53f3e0ecf2b04d847b582f7afc7be/123456

0x8aa41e6394cf59efda41c8ca6c3030d35a0aaa02/123456

0xcd96c4200610a8fee23327757a2da91666c6ff98/123456

7. 注意事項:

啟動挖礦,才能確認(rèn)交易和同步數(shù)據(jù)區(qū)塊匙监。

1.4.11 Windows客戶端Ethereum Wallet連接Linux部署的私有鏈

G:\blockchain\Ethereum-Wallet-win64-0-10-0>"Ethereum Wallet.exe" --rpc http://192.168.0.1:8545

遠(yuǎn)程RPC****連接的風(fēng)險提示:

<v:shape id="圖片_x0020_8" o:spid="_x0000_i1026" type="#_x0000_t75" style="width:415.5pt;height:212.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png" o:title=""></v:imagedata></v:shape>

<v:shape id="圖片_x0020_7" o:spid="_x0000_i1025" type="#_x0000_t75" style="width:415.5pt;height:229.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" o:title=""></v:imagedata></v:shape>

1.5 geth相關(guān)參數(shù)

1.5.1 啟動geth時指定同步區(qū)塊數(shù)據(jù)路徑

geth --datadir=/home/blockchain/ethereum

1.5.2 查看區(qū)塊內(nèi)容

eth.getBlock(0)

1.5.3 查看區(qū)塊數(shù)目

eth.blockNumber

1.5.4 查看交易

eth.getTransaction("0xa838434f36d753af82f863a40c27a8e4620c654265f876b3df75e1d54d169139")

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凡橱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亭姥,更是在濱河造成了極大的恐慌稼钩,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件达罗,死亡現(xiàn)場離奇詭異坝撑,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門巡李,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抚笔,“玉大人,你說我怎么就攤上這事击儡∷郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵阳谍,是天一觀的道長蛀柴。 經(jīng)常有香客問我,道長矫夯,這世上最難降的妖魔是什么鸽疾? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮训貌,結(jié)果婚禮上制肮,老公的妹妹穿的比我還像新娘。我一直安慰自己递沪,他們只是感情好豺鼻,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著款慨,像睡著了一般儒飒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上檩奠,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天桩了,我揣著相機與錄音,去河邊找鬼埠戳。 笑死井誉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的整胃。 我是一名探鬼主播颗圣,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屁使!你這毒婦竟也來了欠啤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤屋灌,失蹤者是張志新(化名)和其女友劉穎洁段,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體共郭,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡祠丝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年疾呻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓣喊,靈堂內(nèi)的尸體忽然破棺而出弛说,到底是詐尸還是另有隱情颅停,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響铃慷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜕该,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一犁柜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堂淡,春花似錦馋缅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至皆的,卻和暖如春覆履,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祭务。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怪嫌,地道東北人义锥。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像岩灭,于是被迫代替她去往敵國和親拌倍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容