'公有鏈、聯盟鏈、私有鏈及網絡配置介紹'

"
"
公有鏈、聯盟鏈、私有鏈及網絡配置介紹

以太坊網絡

去中心化共識的基礎是參與節點的點對點網絡,節點維護並保證區塊鏈網絡的安全。參見挖礦。

以太坊網絡數據統計

EthStats.net是以太坊網絡實時數據的儀表板,這個儀表板展示重要信息,諸如現在的區塊,散表難度,gas價格和gas花費等。頁面上顯示的節點只是精選了網絡上的實際節點。任何人都可以在EthStats儀表板上添加他們的節點。Github上的Eth-Netstats README描述瞭如何連接。

EtherNodes.com展示了節點數的當前和歷史數據以及以太坊主網絡和Morden測試網絡上的其他信息。

當前實時網絡上客戶端實現分配 – EtherChain上的實時數據。

公有鏈、私有鏈和聯盟鏈

當今大多數以太坊項目都依靠以太坊作為公有鏈,公有鏈可以訪問到更多用戶,網絡節點,貨幣和市場。然而通常有理由更偏好私有鏈或聯盟鏈(在一群值得信任的參與者中)。例如,銀行領域的很多公司都希望以太坊作為他們私有鏈的平臺。

以下是博客發文《關於公有鏈和私有鏈》的摘錄,它解釋了三種區塊鏈在許可方面的區別:

  • 公有鏈:世界上所有人都可以閱讀和發送交易。如果他們合法都有希望看到自己被包括在內。世界上任何人都能參與到共識形成過程——決定在鏈條上添加什麼區塊以及現狀是怎樣的。作為中心化或準中心化信任的替代品,公有鏈受加密經濟的保護,加密經濟是經濟激勵和加密圖形驗證的結合,用類似工作量證明或權益證明的機制,遵循的總原則是人們影響共識形成的程度和他們能夠影響的經濟資源數量成正比。這類區塊鏈通常被認為是"完全去中心化"。
  • 聯盟鏈:共識形成過程由預先選擇的一系列的節點所掌控,例如,設想一個有15個金融機構的團體,每個機構都操作一個節點,為了使區塊生效,其中的10個必須簽署那個區塊。閱讀區塊鏈的權利可能是公開的,或僅限於參與者,也有混合的路徑,比如區塊的根散表和應用程序編程接口一起公開,使公共成員可以進行一定量的查詢,重獲一部分區塊鏈狀態的加密圖形證明。這類區塊鏈被認為是"部分去中心化"。
  • 私人區塊鏈:書寫許可對一個組織保持中心化。閱讀許可可能是公開的或者限制在任意程度。應用很可能包含對單個公司內部的數據庫管理,審查等,因此公共的可讀性在很多情況下根本不必要,但在另一些情況下人們又想要公共可讀性。 私有鏈/聯盟鏈可能和公有鏈毫無聯繫,他們仍然通過投資以太坊軟件開發,對以太坊整體生態系統有利。經過一段時間,這會轉變成軟件改善,知識共享和工作機會。

如何連接

Geth會持續嘗試在網絡上連接到其他節點,直到有了端點為止。如果你在路由器上有可用的UPnP或者在面向因特網的服務器上運行以太坊,它也會接受其他節點的連接。

Geth通過發現協議找到對等端。在發現協議中,節點互相閒聊發現網絡上的其他節點。最開始,geth會使用一系列輔助程序節點,這些輔助程序節點的端點記錄在源代碼中。

檢查連接和ENODE身份

要檢查客戶端在交互控制檯上連接了多少對等端點,net模塊有兩個屬性可以提供信息,告訴你對等端點的數量以及你是否在監聽的節點。

> net.listening
true
> net.peerCount
4

瞭解更多關於連接對等端點的信息,比如IP地址、端口號和支持協議,用管理員對象的peers()功能。admin.peers()會返回到現在已連接的對等端點列表。

> admin.peers
[{
ID: 'a4de274d3a159e10c2c9a68c326511236381b84c9ec52e72ad732eb0b2b1a2277938f78593cdbe734e6002bf23114d434a085d260514ab336d4acdc312db671b',
Name: 'Geth/v0.9.14/linux/go1.4.2',
Caps: 'eth/60',
RemoteAddress: '5.9.150.40:30301',
LocalAddress: '192.168.0.28:39219'
}, {
ID: 'a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c',
Name: 'Geth/v0.9.15/linux/go1.4.2',
Caps: 'eth/60',
RemoteAddress: '52.16.188.185:30303',
LocalAddress: '192.168.0.28:50995'
}, {
ID: 'f6ba1f1d9241d48138136ccf5baa6c2c8b008435a1c2bd009ca52fb8edbbc991eba36376beaee9d45f16d5dcbf2ed0bc23006c505d57ffcf70921bd94aa7a172',
Name: 'pyethapp_dd52/v0.9.13/linux2/py2.7.9',
Caps: 'eth/60, p2p/3',
RemoteAddress: '144.76.62.101:30303',
LocalAddress: '192.168.0.28:40454'
}, {
ID: 'f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0',
Name: '++eth/Zeppelin/Rascal/v0.9.14/Release/Darwin/clang/int',
Caps: 'eth/60, shh/2',
RemoteAddress: '129.16.191.64:30303',
LocalAddress: '192.168.0.28:39705'
} ]

要檢查geth使用的端口,發現你自己的enode URI 執行:

> admin.nodeInfo
{
Name: 'Geth/v0.9.14/darwin/go1.4.2',
NodeUrl: 'enode://3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba60f14998a3a98c0cf14915eabfdacf914a92b27a01769de18fa2d049dbf4c17694@[::]:30303',
NodeID: '3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba60f14998a3a98c0cf14915eabfdacf914a92b27a01769de18fa2d049dbf4c17694',
IP: '::',
DiscPort: 30303,
TCPPort: 30303,
Td: '2044952618444',
ListenAddr: '[::]:30303'
}

更快下載區塊鏈

啟動以太坊客戶端時,會自動下載以太坊區塊鏈。用於下載以太坊區塊鏈的時間會根據客戶端、客戶端設置、連接速度和可用的端點數量變化。下面是更快獲取以太坊區塊鏈的一些選項。

使用geth

如果你在用geth客戶端,你可以做些什麼來加速下載以太坊區塊的時間。如果你用—fast標誌來執行以太坊快速同步,不會保留過去的交易數據。

注意:你不能在執行所有或者部分正常的同步操作之後再使用這個標誌,也就是說在用這個指令之前,不能下載以太坊區塊鏈的任何部分。查看這個Ethereum Stack.Exchange answer瞭解更多。

下面是想要更快同步客戶端時使用的一些標誌。

—fast

這個標誌使通過狀態下載而不是下載整個區塊數據來實現快速同步成為可能。這樣也能大幅減少區塊鏈尺寸。注意:—fast只在從頭開始同步區塊鏈,並且是出於安全原因第一次下載區塊鏈時,才會運行。查看Reddit發文瞭解更多。

—cache=1024

分配到內部緩存的千兆內存(最少 16MB / 數據庫)。默認是16MB,所以根據你電腦內存多少,增加到256, 512, 1024 (1GB)或者2048 (2GB)會帶來不同。

—jitvm 這個標誌可以激活JIT VM。

完整的控制檯命令示例:

geth --fast --cache=1024 --jitvm console

瞭解更多關於快速同步和區塊鏈下載次數的討論,查看這篇Reddit發文。

導出/導入區塊鏈

如果你已經同步了整個以太坊節點,可以從完全同步的節點中導出區塊鏈數據並將其導入新節點。你可以在geth中用geth export filename指令導出所有節點,並用geth import filename將區塊鏈導入節點,來實現這一目的。

靜態節點,信任節點和啟動節點

Geth支持一個叫靜態節點的特徵,如果你有特定的端點,你會一直想與靜態節點連接。如果斷開連接,靜態節點會再次連接。你可以配置永久性靜態節點,方法是將如下所說的放進/static-nodes.json(這應該是和chaindata以及keystone在同一個文件夾)

[
"enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303",
"enode://pubkey@ip:port"
]

你也可以在運行期間通過Javascript使用admin.addPeer()加入靜態節點。

> admin.addPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae

連接的常見問題

有時候可能無法連接,最常見的原因有:

  • 本地時間不正確。要參與到以太坊網絡中,需要精確的時鐘。檢查OS如何同步時鐘(例如sudo ntpdate -s time.nist.gov),即便只快了12秒也有可能導致0端點。
  • 有的防火牆配置可能會阻止UDP流通。可以用靜態節點功能或者控制檯上的admin.addPeer() 來手動配置連接。

不使用發現協議來啟動geth,你可以用—nodiscover參數。你只會在運行測試節點或有固定節點的實驗測試網絡時才想要這樣做。

文章出於:http://wangxiaoming.com/blog/2016/07/06/e16/

"

相關推薦

推薦中...