您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何搭建以太坊私有鏈”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“如何搭建以太坊私有鏈”文章能幫助大家解決問(wèn)題。
下載離線安裝地址:https://geth.ethereum.org/downloads/ ,選擇對(duì)應(yīng)的操作版本
文件結(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ù)量,私有鏈挖礦比較容易可以不配置
./geth --datadir ./privateChain/data0 init genesis.json
執(zhí)行命名后在privateChain生產(chǎn)如下結(jié)構(gòu)目錄及文件
./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;
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)。
免責(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)容。