溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何搭建以太坊私有鏈

發(fā)布時(shí)間:2022-01-18 10:42:16 來(lái)源:億速云 閱讀:149 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“如何搭建以太坊私有鏈”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“如何搭建以太坊私有鏈”文章能幫助大家解決問(wèn)題。

安裝geth

下載離線安裝地址:https://geth.ethereum.org/downloads/ ,選擇對(duì)應(yīng)的操作版本

初始化創(chuàng)世區(qū)塊

創(chuàng)建工作區(qū)目錄

如何搭建以太坊私有鏈

區(qū)塊描述文件

文件結(jié)構(gòu)語(yǔ)法采用json數(shù)據(jù)格式配置,genesis.json文件內(nèi)容如下

{
    "config": {
        "chainId": 7777,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "alloc": {},
    "coinbase": "0x0000000000000000000000000000000000000000",
    "difficulty": "0x20000",
    "extraData": "",
    "gasLimit": "0x2fefd8",
    "nonce": "0x0000000000000042",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp": "0x00"
}
config.chainId // 區(qū)塊鏈的ID,在 geth 命令中的 --networkid 參數(shù)需要與 chainId 的值一致
config.homesteadBlock // Homestead 硬分叉區(qū)塊高度,不需要關(guān)注
config.eip155Block // EIP 155 硬分叉高度,不需要關(guān)注
config.eip158Block // EIP 158 硬分叉高度,不需要關(guān)注
coinbase // 礦工賬號(hào),第一個(gè)區(qū)塊挖出后將給這個(gè)礦工賬號(hào)發(fā)送獎(jiǎng)勵(lì)的以太幣
difficulty // 難度值,越大越難
extraData // 附加信息隨便填
gasLimit // gas 的消耗總量限制,用來(lái)限制區(qū)塊能包含的交易信息總和,因?yàn)槲覀兪撬接墟?,所以填最?
nonce // 一個(gè) 64 位隨機(jī)數(shù)
mixhash // 與 nonce 配合用于挖礦,由上一個(gè)區(qū)塊的一部分生成的 hash
parentHash // 上一個(gè)區(qū)塊的 hash 值
alloc // 預(yù)設(shè)賬號(hào)以及賬號(hào)的以太幣數(shù)量,私有鏈挖礦比較容易可以不配置
運(yùn)行命令:

./geth --datadir ./privateChain/data0 init genesis.json

執(zhí)行命名后在privateChain生產(chǎn)如下結(jié)構(gòu)目錄及文件

啟動(dòng)私鏈節(jié)點(diǎn)

./geth --identity "TestNode1" --datadir "./privateChain/data0" --rpc --rpcapi "db,eth,net,web3" --rpcaddr "127.0.0.1" --rpcport "8486" --port "30304" --networkid "7777" console

令的主體是geth console,表示啟動(dòng)節(jié)點(diǎn)并進(jìn)入交互式控制臺(tái),--datadir選項(xiàng)指定使用data0作為數(shù)據(jù)目錄,--networkid選項(xiàng)后面跟一個(gè)數(shù)字,這里是7777,表示指定這個(gè)私有鏈的網(wǎng)絡(luò)id為7777。網(wǎng)絡(luò)id在連接到其他節(jié)點(diǎn)的時(shí)候會(huì)用到,以太坊公網(wǎng)的網(wǎng)絡(luò)id是1,為了不與公有鏈網(wǎng)絡(luò)沖突,運(yùn)行私有鏈節(jié)點(diǎn)的時(shí)候要指定自己的網(wǎng)絡(luò)id。運(yùn)行上面的命令后,就啟動(dòng)了區(qū)塊鏈節(jié)點(diǎn)并進(jìn)入了Javascript Console:只有console命令和attach命令會(huì)進(jìn)入js交互窗口。

 使用命令 geth -h 可以查看geth 相關(guān)的幫助文檔。這里我說(shuō)幾個(gè)常用的屬性。

   --Identity : 節(jié)點(diǎn)身份標(biāo)識(shí),起個(gè)名字
   --datadir : 指定節(jié)點(diǎn)存在位置,“data0”
   --rpc : 啟用http-rpc服務(wù)器
   --rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db...
  --rpcaddr : http-rpc服務(wù)器接口地址:默認(rèn)“127.0.0.1”
   --rpcport : http-rpc 端口(多節(jié)點(diǎn)時(shí),不要重復(fù))
   --port : 節(jié)點(diǎn)端口號(hào)(多節(jié)點(diǎn)時(shí),不要重復(fù))
   --networkid : 網(wǎng)絡(luò)標(biāo)識(shí)符 隨便指定一個(gè)id(確保多節(jié)點(diǎn)是統(tǒng)一網(wǎng)絡(luò),保持一致)

如何搭建以太坊私有鏈

這是一個(gè)交互式的Javascript執(zhí)行環(huán)境,在這里面可以執(zhí)行Javascript代碼,其中>是命令提示符。在這個(gè)環(huán)境里也內(nèi)置了一些用來(lái)操作以太坊的Javascript對(duì)象,可以直接使用這些對(duì)象。這些對(duì)象主要包括:

  • eth:包含一些跟操作區(qū)塊鏈相關(guān)的方法

eth.accounts:枚舉系統(tǒng)中的賬戶; 
eth.getBalance():查看賬戶余額,返回值的單位是 Wei(Wei 是以太坊中最小貨幣面額單位,類似比特幣中的聰,1 ether = 10^18 Wei);
eth.blockNumber:列出區(qū)塊總數(shù); 
eth.getTransaction():獲取交易; 
eth.getBlock():獲取區(qū)塊
  • net:包含以下查看p2p網(wǎng)絡(luò)狀態(tài)的方法

  • admin:包含一些與管理節(jié)點(diǎn)相關(guān)的方法

admin.addPeer():連接到其他節(jié)點(diǎn) 
admin.nodeInfo.enode 查看本節(jié)點(diǎn)enode
  • miner:包含啟動(dòng)&停止挖礦的一些方法

miner.start():開(kāi)始挖礦;

miner.stop():停止挖礦

  • personal:主要包含一些管理賬戶的方法

personal.newAccount():創(chuàng)建賬戶;

personal.unlockAccount():解鎖賬戶 以太坊的一個(gè)保護(hù)機(jī)制,每隔一段時(shí)間賬戶就會(huì)自動(dòng)鎖定

  • txpool:包含一些查看交易內(nèi)存池的方法

txpool.status:交易池中的狀態(tài);

  • web3:包含了以上對(duì)象,還包含一些單位換算的方法

web3.fromWei():Wei 換算成以太幣;

web3.toWei():以太幣換算成 Wei;

向本節(jié)點(diǎn)添加其他P2P節(jié)點(diǎn)信息

查看節(jié)點(diǎn)信息

添加在同一個(gè)創(chuàng)世鏈上節(jié)點(diǎn)
admin.addPeer("enode://2f86dbb18242371fa0a8e7098cb13a012ad9d8ee80f0bbba94a798b16d3c6c3c247d3e333b8da27a591b38365f927a25359376d4bf38575bb0371a1365294f91@[::]:30301?discport=0")

注意:當(dāng)連接同一個(gè)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)時(shí),使用的就是上面的第一個(gè)字段enode的值。

按照如上操作,可以建立并形成一個(gè)私鏈去中心化的集群。任意一個(gè)節(jié)點(diǎn)挖礦,挖到區(qū)塊之后,都會(huì)同步到其他的兩個(gè)節(jié)點(diǎn)。如果genesis.json文件不相同或者networkid不相同時(shí),都不能添加成功。genesis.json不同,將會(huì)生成不一樣的創(chuàng)世區(qū)塊,networkid不同就是兩個(gè)不同的網(wǎng)絡(luò),自然就不能添加成功。

關(guān)于“如何搭建以太坊私有鏈”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI