您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何搭建以太坊私有鏈”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何搭建以太坊私有鏈”文章能幫助大家解決問題。
下載離線安裝地址:https://geth.ethereum.org/downloads/ ,選擇對應的操作版本
文件結構語法采用json數據格式配置,genesis.json文件內容如下
{ "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 // 區塊鏈的ID,在 geth 命令中的 --networkid 參數需要與 chainId 的值一致 config.homesteadBlock // Homestead 硬分叉區塊高度,不需要關注 config.eip155Block // EIP 155 硬分叉高度,不需要關注 config.eip158Block // EIP 158 硬分叉高度,不需要關注 coinbase // 礦工賬號,第一個區塊挖出后將給這個礦工賬號發送獎勵的以太幣 difficulty // 難度值,越大越難 extraData // 附加信息隨便填 gasLimit // gas 的消耗總量限制,用來限制區塊能包含的交易信息總和,因為我們是私有鏈,所以填最大 nonce // 一個 64 位隨機數 mixhash // 與 nonce 配合用于挖礦,由上一個區塊的一部分生成的 hash parentHash // 上一個區塊的 hash 值 alloc // 預設賬號以及賬號的以太幣數量,私有鏈挖礦比較容易可以不配置
./geth --datadir ./privateChain/data0 init genesis.json
執行命名后在privateChain生產如下結構目錄及文件
./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
,表示啟動節點并進入交互式控制臺,--datadir
選項指定使用data0
作為數據目錄,--networkid
選項后面跟一個數字,這里是7777,表示指定這個私有鏈的網絡id為7777。網絡id在連接到其他節點的時候會用到,以太坊公網的網絡id是1,為了不與公有鏈網絡沖突,運行私有鏈節點的時候要指定自己的網絡id。運行上面的命令后,就啟動了區塊鏈節點并進入了Javascript Console:只有console命令和attach命令會進入js交互窗口。
使用命令 geth -h 可以查看geth 相關的幫助文檔。這里我說幾個常用的屬性。 --Identity : 節點身份標識,起個名字 --datadir : 指定節點存在位置,“data0” --rpc : 啟用http-rpc服務器 --rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db... --rpcaddr : http-rpc服務器接口地址:默認“127.0.0.1” --rpcport : http-rpc 端口(多節點時,不要重復) --port : 節點端口號(多節點時,不要重復) --networkid : 網絡標識符 隨便指定一個id(確保多節點是統一網絡,保持一致)
這是一個交互式的Javascript執行環境,在這里面可以執行Javascript代碼,其中>
是命令提示符。在這個環境里也內置了一些用來操作以太坊的Javascript對象,可以直接使用這些對象。這些對象主要包括:
eth:包含一些跟操作區塊鏈相關的方法
eth.accounts:枚舉系統中的賬戶; eth.getBalance():查看賬戶余額,返回值的單位是 Wei(Wei 是以太坊中最小貨幣面額單位,類似比特幣中的聰,1 ether = 10^18 Wei); eth.blockNumber:列出區塊總數; eth.getTransaction():獲取交易; eth.getBlock():獲取區塊
net:包含以下查看p2p網絡狀態的方法
admin:包含一些與管理節點相關的方法
admin.addPeer():連接到其他節點 admin.nodeInfo.enode 查看本節點enode
miner:包含啟動&停止挖礦的一些方法
miner.start():開始挖礦;
miner.stop():停止挖礦
personal:主要包含一些管理賬戶的方法
personal.newAccount():創建賬戶;
personal.unlockAccount():解鎖賬戶 以太坊的一個保護機制,每隔一段時間賬戶就會自動鎖定
txpool:包含一些查看交易內存池的方法
txpool.status:交易池中的狀態;
web3:包含了以上對象,還包含一些單位換算的方法
web3.fromWei():Wei 換算成以太幣;
web3.toWei():以太幣換算成 Wei;
admin.addPeer("enode://2f86dbb18242371fa0a8e7098cb13a012ad9d8ee80f0bbba94a798b16d3c6c3c247d3e333b8da27a591b38365f927a25359376d4bf38575bb0371a1365294f91@[::]:30301?discport=0")
注意:當連接同一個網絡中的其他節點時,使用的就是上面的第一個字段enode的值。
按照如上操作,可以建立并形成一個私鏈去中心化的集群。任意一個節點挖礦,挖到區塊之后,都會同步到其他的兩個節點。如果genesis.json文件不相同或者networkid不相同時,都不能添加成功。genesis.json不同,將會生成不一樣的創世區塊,networkid不同就是兩個不同的網絡,自然就不能添加成功。
關于“如何搭建以太坊私有鏈”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。