Geth搭建私有鏈
以太坊官方網路(Official Network)
以太坊官方網路有兩種:
- 生產環境網路(又稱主網路)
- 測試網路TestNet
主網路是產生真正有價值的以太幣的網路,是全球化,部署在Internet環境上的.智慧合約的程式碼,執行,區塊的呼叫,都可以清晰地檢視到.而所有節點都是全球化的,速度較慢.
TestNet是專供使用者來開發,除錯和測試的.如果開發簡單的智慧合約的話,用測試網路就足夠了,使用者可以把更多的精力集中在智慧合約的編寫.但是由於網路是官方提供的,因此對於以太坊技術的底層實現,Geth的各種引數介面,整個以太坊技術真是效能的理解就會弱很多.所以從開發者的角度來說,一個更好的選擇是Private Network,可以從技術的底層去深入理解以太坊.
以太坊私有網路(Private Network)
以太坊私有網路,就是由使用者自己通過Geth建立的私有網路,是一個非常適合開發,除錯和測試的網路.私有網路可以方便開發者深入理解以太坊的技術底層.
Geth搭建私有網路
Step1:定義私有genesis state
建立一個新的資料夾privateNetwork,用來儲存genesis.json檔案和之後的私有鏈
wesley@wesley-PC:~/Code/blockchain$ mkdir privateNetwork
wesley@wesley-PC:~/Code/blockchain$ cd privateNetwork
wesley@wesley-PC:~/Code/blockchain$ vim genesis.json
將下面的內容複製到genesis.json中:
{
"config": {
"chainId": 14,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x05000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
官方文件中的chainId為0,應該修改為非0的值,不然會導致 insufficient funds for gas * price + value
difficulty表示挖礦的難度值,官方文件中為0x20000,由於測試機器配置低,修改為0x05000。
Step2:建立創世區塊
執行如下指令:
wesley@wesley-PC:~/Code/blockchain$ geth --datadir "./privateNetwork" init go-ethereum/genesis.json
結果如下:
然後在privateNetwork中能發現geth和keystore兩個新檔案.
- geth儲存的是區塊鏈的相關資訊
- keystore中儲存的是該鏈條中的使用者資訊
Step3:建立自己的私有鏈條
執行如下命令:
wesley@wesley-PC:~/Code/blockchain/privateNetwork$geth --networkid 14 --nodiscover --datadir "data/chain0" --rpc --rpcapi net,eth,web3,personal --rpcaddr localhost console 2>>geth.log
nodiscover的意思是不被其他節點自動發現(可以手動新增節點)
console是啟動geth控制檯,不加該選項,geth啟動之後成為一個後臺程式不會自動結束
最後把geth中的log資訊匯入geth.log中,方便了解geth執行的情況。
注意路徑要加引號,不然會出問題.
--nodiscover 關閉p2p網路的自動發現,需要手動新增節點,這樣有利於我們隱藏私有網路
--datadir 區塊鏈資料儲存目錄
--networkid 網路標識,私有鏈取一個大於4的隨意的值
--rpc 啟用ipc服務,預設埠號8545
--rpcapi 表示可以通過ipc呼叫的物件
--rpcaddr ipc監聽地址,預設為127.0.0.1,只能本地訪問
console 開啟一個可互動的javascript環境
更多引數:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options
Step4:在自己的私有鏈條上建立使用者
檢視私有鏈已有賬戶,會發現返回為[],此時還沒有任何賬戶.
>eth.accounts
建立新使用者,密碼是”wesley”,地址是"0xe8280b532f5cc8d614e35fb5071d85250ccbd2a4"
>personal.newAccount("wesley")
Step5:嘗試挖礦
繼續在console中輸入:
>miner.start()
開始挖礦,檢視geth.log,如下:
過了一段時間之後,再停止挖礦,檢視賬戶,只要不為0則挖礦成功
相關文章
- Geth搭建多節點私有鏈條
- 透過Geth搭建多節點私有鏈
- 以太坊學習記錄+geth配置+私有鏈搭建
- Truffle 4.0、Geth 1.7.2、TestRPC在私有鏈上搭建智慧合約Trpc
- 通過Geth搭建私有以太坊網路
- 如何搭建以太坊私有鏈
- 3.6 以太坊私有鏈與聯盟鏈搭建
- Mac環境搭建以太坊私有鏈Mac
- 區塊鏈私有鏈搭建中遇到的那些坑區塊鏈
- 區塊鏈baas平臺企業私有鏈聯盟鏈搭建區塊鏈
- 使用 Go-Ethereum 1.7.2搭建以太坊私有鏈Go
- 搭建基於以太坊的私有鏈環境
- Verdaccio 搭建私有 NPMNPM
- 搭建私有云:OwnCloudCloud
- 區塊鏈 2.0:公有鏈與私有鏈(七)區塊鏈
- 區塊鏈型別和共識機制 | 公共、私有和聯盟鏈開發搭建區塊鏈型別
- docker 私有倉庫搭建Docker
- docker搭建私有倉庫Docker
- 以太坊學習筆記————12、搭建測試網路和私有鏈筆記
- 區塊鏈--公司開發私有鏈搭建建議基於什麼開源框架開發區塊鏈框架
- NPM 私有倉庫的搭建NPM
- 使用 seafile搭建私有云盤
- Docker搭建Harbor私有倉庫Docker
- Docker搭建私有映象倉庫Docker
- 搭建前端私有npm雜記前端NPM
- gitlab私有倉庫搭建Gitlab
- 搭建python私有倉庫Python
- Ethereum Geth Mirror
- 區塊鏈開發_建立區塊鏈公鏈,聯盟鏈,私有鏈區塊鏈
- 使用verdaccio搭建私有npm倉庫NPM
- 搭建私有的Composer倉庫
- 使用 baget 搭建 nuget 私有服務
- 如何搭建自己的私有云盤
- 使用verdaccio 搭建npm私有倉庫NPM
- centos7搭建owncloud私有云CentOSCloud
- [gitlab]搭建私有github倉庫GitlabGithub
- 用Docker搭建cnpm私有倉庫以及私有倉庫的使用DockerNPM
- 以太坊學習筆記——————11、公有鏈、聯盟鏈、私有鏈筆記