利用geth创建私有链
? ? ? ? 在geth安裝完成的情況下,我們就可以利用geth來創建我們的私有鏈或是同步公鏈上的數據。具體如何操作請看下文:
目錄
創建私有鏈
準備工作
初始化
?常用參數說明
啟動私鏈
創建私有鏈
準備工作
創建創世區塊所需的JSON腳本文件:genesis.json
{"config" : {"chainId" : 168,"homesteadBlock": 0,"eip150Block" : 0,"eip155Block" : 0,"eip158Block" : 0},"coinbase" : "0x0000000000000000000000000000000000000000","difficulty" : "0x20000","extraData" : "","gasLimit" : "0xffffffff","nonce" : "0x0000000000000042","mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp" : "0x00","alloc" : { } }| chainId | 私有鏈的ID,不要和公鏈的ID重復即可,后期啟動稀有鏈需要使用,只有當chainId、network、創世區塊配置相同時,才是同一條鏈。 |
| homesteadBlock | 升級區塊所在的高度,簽名算法是homesteadBlock->eip150Block->eip155Block->eip158Block,從homesteadBlock之前的區塊都通過homestead相關算法來驗證,homesteadBlock到eip150Block之間的用eip150Block算法來驗證,以此類推。 |
| coinbase | 初始的挖礦獎勵地址,一般我們在挖礦開始之前都會自己指定地址,所以這個參數隨便填。 |
| difficulty | 挖礦的難度,值越大難度越大,出塊的時間越長,根據自己的需要設置。 |
| extraData | 附加說明,根據自己的需求可填可不填。 |
| gasLimit | 預定此區塊鏈中gas的上限。 |
| nonce | 64位的隨機數,初始設置成0x0000000000000042?即可。 |
| mixhash | 配合nonce用于挖礦,由上一個區塊的一部分生成的hash |
| parentHash | 上一個區塊的hash,由于是創世區塊,所以填0即可。 |
| timestamp | 時間信息,設置創世區塊的開始時間。 |
| alloc | 預置資產,可以在創世時就給某此區塊預置一些資產。 |
初始化
1、創建存放區塊鏈的目錄(目錄名自己定義即可,這里用“privateChain”來做演示,datas1用來存放私有鏈的數據文件):
cd 自定義的數據目錄 mkdir privateChain cd privateChain mkdir datas12、將genesis.json?放入到privateChain目錄下
3、執行命令:
geth --datadir datas1 init genesis.json得到如下圖的返回信息,最后有“Successfully wrote genesis state”則表示初始化成功:
?常用參數說明
geth init?是初始化的主體命令,上文初始化命令中還有一個 --datadir?是命令的可選參數,如果不帶此參數則默認的數據目錄是在geth主目錄下。geth初始化命令或啟動命令還有一些可選參數如下表:
| datadir | 當前區塊鏈數據文件存放的目錄。 |
| identity | 當前區塊鏈的標識,即可以給它設置名字。 |
| rpc | 用于開啟RPC通信,此功能主要是提供給智能合約通信(http的形式)。方便后面使用錢包軟件進行連接。 注意:這個參數在1.10的版本里已廢棄,使用http來代替 |
| http | geth 1.10版本將rpc換成了http,功能相同 |
| rpcport | RPC通信的端口,默認端口是8545,可以通過此參數更改端口。 |
| rpcapi | 通過此參數可以設置連接區塊鏈的客戶端,默認情況下只有eth、net、web3可以連接。 |
| rpccorsdomain | 設置通過域名訪問RPC的白名單,多個域名中間用逗號隔開【如果是使用瀏覽器訪問,推薦配置此參數】。 |
| console | 帶此參數可以直接進入命令行模式,此模式下可以直接輸入命令操作區塊鏈上的數據,是javascrip的可執行環境。 |
| networkid | 設置要訪問的區塊鏈網絡ID,一般與初始化的chanId一致。 |
| dev | 如果是開發者的話,可以使用此參數,直接在啟動的時候就會創建一個開發者賬戶。不需要指定networkid |
啟動私鏈
啟動私鏈:
geth --datadir datas1 --networkid 168 console如下圖則成功啟動并進入console環境:
控制臺有時會打印特別多的日志,所以為了第一時間看到我們命令的返回結果,我們需要將多余的日志信息打印到日志文件中,使用如下命令即可:
geth --datadir datas1 --networkid 168 console 2>output.log?開發者模式
私鏈之間相互轉賬每次都需要輸入密碼,而且初始情況下無幣,還需要啟動礦工進行挖礦,這樣耽誤太多的時間,這時我們就需要啟動開發者模式,此模式下默認會創建一個開發者賬號,此賬號擁有巨額貨幣
使用如下命令新開一個數據文件目錄,創建開發環境私鏈:
geth --datadir datas2 --dev console 2>output.log?到此私鏈創建成功,并成功運行。
總結
以上是生活随笔為你收集整理的利用geth创建私有链的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10 如何关闭 Windo
- 下一篇: PLC基本原理