Blockchain
為什麼要使用節點池或後端?
我有一個關於 eth/blockchain 基礎設施的基本問題。我看到有幾篇文章討論了在啟動 dapp/智能合約時對後端節點基礎設施的需求。該基礎設施可以是 infura、trongrid、ethscan 等,也可以是執行您自己的節點。
我不明白的是:
(1) 為什麼需要這個基礎設施?我想當我啟動智能合約時,我只需使用一些 web3 api 將它放在 eth 區塊鏈上,我們就可以開始了。有一些性能原因嗎?
(2) 人們在執行自己的完整節點時會提到一些問題,例如與 infura 等託管服務相比,延遲、可用性和可管理性更高。是什麼讓這些託管服務比執行您自己的節點或僅使用 eth 的 API 與區塊鏈互動更快/更容易使用。
謝謝你
首先讓我們整理一下基本面。
您通過實現區塊鏈的節點連接到區塊鏈。所以節點是一個客戶端程序,它執行構成區塊鏈的程式碼——區塊鏈由節點組成。如果沒有節點(無論是你的還是其他人的),就無法連接到區塊鏈。
因此,dapp 使用一些 web3 庫(為了方便)連接到某個節點,該節點又是區塊鏈的一部分,因此可以與之互動。
區塊鏈的主要方面之一是去中心化。所以沒有人控制它,每個人都可以執行一個節點並連接到它。
現在獲得實際答案:
1)使用集中式實體(例如 Infura 或您所說的任何“web3 API”)是集中式的。您依賴於服務/API 提供者。如果它們出現故障,您將失去訪問權限,您必須切換提供商或開始執行自己的節點。或者他們可能會受到損害等等。此外,我們需要這個基礎設施,因為沒有其他方法可以連接到區塊鏈。
- 執行自己的節點可能相當麻煩。有一定的硬體要求,您需要保持節點客戶端程式碼是最新的(例如,在硬分叉上,您必須擁有最新的客戶端版本才能探勘新鏈)。但是,如果您執行自己的節點,您就不會依賴於任何其他人——而且您不能因為任何停機時間而責備自己以外的任何人。我不認為任何解決方案之間存在很大的性能差異,並且無論如何它不會有太大的區別,因為大部分時間都花在等待探勘上。因此,使用現成的提供者設置起來更容易、更快捷,但您可能會在此過程中失去一部分靈魂。