以太坊構建本地私有網絡

以太坊網絡node

  •  以太網網絡的實時的統計數據信息能夠在EthStats.net(https://ethstats.net/)上查看。這網站上包含了許多重要的數據,如當前區塊,交易,gas價格等。這頁面上展現的節點只是實際網絡中的節點的一部分。任何人均可以添加他們本身的節點到這個網站上。
  • 添加方法: https://github.com/cubedro/eth-netstats
  • EtherNodes.com 這網站統計了當前和歷史上的有關節點的數量,這網站的統計信息包括了主網和測試網絡。
  • etherchain.org 實時區塊鏈統計信息

以太坊網絡類型git

  • 如今大多數的以太坊項目都運行在以太坊公有鏈上,以太坊公有鏈能夠爲這些項目提供大量的用戶,網絡節點,貨幣和市場。可是,也有一些項目更加適合運行在私有鏈或聯盟鏈(一羣值得信賴的夥伴)上。好比,一些垂直領域裏面的公司,如銀行正在試圖使用以太坊創建他們本身的私有區塊鏈平臺
  • 公有鏈:世界上任何一我的均可以參與的區塊鏈。用戶能夠查看,能夠發送交易,也能夠參與保持數據一致性的運算等。
  • 私有鏈:徹底的私有鏈是指寫權限是由一我的或一個單個組織控制的鏈。私有鏈的讀權限是能夠公開的或者是有限度的在必定範圍公開的。好比私有鏈能夠用在數據庫的管理,公司內部的管理等。
  • 聯盟鏈:聯盟鏈是指,數據一致性的運算被預先設定好的幾個節點共同控制的鏈。好比,有15家銀行組成了一個財團鏈,在這個鏈上的每個節點的每一次的操做都須要10個節點的共同簽名才能被驗證。這區快鏈上的讀權限多是公開的,也有多是部分公開的。
  • 雖然私有鏈和聯盟鏈不會和公有鏈之間有任何的連接,可是它們一般被當作開發者的開發環境,它們也一樣對以太坊區塊鏈生態系統作出着不可估量的貢獻。

以太坊查看網絡狀態github

  •  查看連接狀態 
    net.listening true 
    net.peerCount 4
  • 查看本身的夥伴的網絡信息 
    admin.peers
  • 查看本身的網絡信息 
    admin.nodeInfo 

以太坊加快下載速度web

  • 當以太坊客戶端一旦運行,就會自動去下載區塊鏈數據。這下載的速度跟客戶端的設置,連接網路的速度,同伴的數量有關。下面是一些能夠加快區塊鏈下載速度的選項。
  • 使用geth:
  • 使用geth客戶端,你能夠在命令行中添加一些選項,能夠加快區塊鏈數據的下載速度。你能夠在命令行中使用—fast標誌,這樣客戶端就不會保留過去的交易數據。
  • 可是要注意的是,這個參數,只有在你的客戶端沒有下載任何區塊鏈數據的狀況下才能使用。若是你客戶端已經下載了一些數據,那這個就不起做用了。
  • 下面是一些具體參數的說明,能夠加快你的數據的同步。

 參數說明:數據庫

  • --fast

    這個參數會加快同步的速度,而且顯著的下降同步的數據的大小。json

  • --cache=1024

    調節內存緩存(單位是M),默認是16M,能夠根據本身計算機的狀況,適當調大這個值,如256, 512, 1024 (1GB), 或 2048 (2GB)api

  • --jitvm

    開啓JIT VM.緩存

  • 整個命令以下面所示的樣子:
    geth --testnet --fast --cache=1024 --jitvm console

以太坊靜態節點網絡

  • 靜態節點
  • 若是有一個節點,你一直想要和它保持連接,那麼你能夠把那個節點配置成你的靜態節點
  • 配置方法
    <datadir>/static-nodes.json
  • 把節點信息寫入這個文件,格式以下:
     ["enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303", "enode://pubkey@ip:port" ]
  • 使用命令 
    >admin.addPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303")

以太坊構建本地私有網絡cors

  • 在本地私有的測試網絡上挖礦,或構建去中心化的應用都要比在公共的測試網絡上方便不少。
  • 使用geth命令行工具構建本地私有測試網絡須要指定如下參數信息:
    •   自定義genesis文件
    •   自定義數據目錄
    •   自定義網絡ID
    •   (推薦)關閉節點發現協議
  •  這genesis(創世)區塊是區塊鏈的起點,是它的第一塊區塊,0號區塊,惟一一個沒有前任的區塊。這個協議確保了沒有其餘節點會和你的節點的區塊鏈版本一致,除非它們的創世區塊和你的如出一轍。經過這種方法,你就能夠建立任意多的私有區塊鏈。 
CustomGenesis.json :
{
"nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x8000000", "difficulty": "0x400", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { } }
  • Mixhash:一個256位的哈希值,和nonce配合,一塊兒用來證實在區塊鏈上已經作了足夠的計算量(工做證實)。這個nonce 和 mixhash 的組成,必須知足一個在黃皮書中所描述的數學上的條件,黃皮書 4.3.4。
  • Nonce:一個64位的哈希值,和mixhash配合,一塊兒用來證實在區塊鏈上已經作了足夠的計算量(工做證實)
  • Difficulty 定義挖礦的目標,能夠用上一個區塊的難度值和時間戳計算出來,值越高,礦工越難挖到區塊
  • Alloc:預先填入一些錢包和餘額
  • Coinbase:160位的錢包地址。在創世區塊中能夠被定義成任何的地址,由於當每挖到一個區塊的時候,這個值會變成礦工的etherbase地址
  • Timestamp:一個unix的time()函數的輸出值,時間戳
  • extraData:32字節長度,能夠爲私有鏈留下一些信息,如你的姓名等,用以證實這個私有鏈是你建立的
  • gasLimit:當前鏈,一個區塊所能消耗的gas上限

私有鏈中會使用到的命令行參數

  • --nodiscover:添加這個參數,確保沒有人能發現你的節點。否則的話,可能有人無心中會連接到你的私有區塊鏈。
  • --maxpeers 0:使用maxpeers 0,若是你不但願其餘人鏈接到您的測試鏈。固然,您也能夠調整這個數,若是你知道有多少同伴會鏈接你的節點。
  • --rpc:在你的節點上激活RPC接口。這參數在geth中默認啓用。
  • --rpcapi "db,eth,net,web3":這個命令描述哪些接口能夠經過RPC來訪問,默認狀況下,geth開啓的是web3接口。
  • --rpcport "8080":將端口號設置成8000以上的任何一個你網絡中打開的端口。默認是8080。
  • --rpccorsdomain http://chriseth.github.io/browser-solidity/:設置能夠鏈接到你的節點的url地址,以執行RPC客戶端的任務。最好不要使用通配符 * ,這樣將容許任何url均可以連接到你的RPC實例。
  • --datadir "/home/TestChain1":私有鏈的數據目錄,確保與公共以太坊鏈的數據目錄區分開來。
  • --port "30303":這是「網絡監聽的端口」,您能夠用它手動的和你的同伴相連。
  • --identity "TestnetMainNode":爲你的節點設置一個ID。用於和大家的一系列同伴進行區分。

運行geth 依照上面所述,配置好命令行,運行:

Windows:

geth --identity "MyNodeName" --rpc --rpcport "8086" --rpccorsdomain "*" --datadir "C:\chains\TestChain1" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1006 init /path/to/CustomGenesis.json

 

注意:在運行以上命令前,必須在datadir參數指定的目錄中先建立一個chaindata目錄

運行geth 依照上面所述,配置好命令行,初始化創世區塊,運行:

Windows:

geth --identity "MyNodeName" --rpc --rpcport "8086" --rpccorsdomain "*" --datadir "C:\chains\TestChain1" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1006 init /path/to/CustomGenesis.json

 

注意:在運行以上命令前,必須在datadir參數指定的目錄中先建立一個chaindata目錄

每次,當你想要使用你自定義的私有鏈時,你都須要先使用geth來運行以上的命令來啓動它。

geth --identity "MyNodeName" --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "C:\chains\TestChain1" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1006 console
相關文章
相關標籤/搜索