Contract-Deployment
供應商如何運作?
提供商在我和主網/測試網中的一個節點之間創建了一個連結,對吧?例如,如果 infura 的一個或多個節點出現故障會發生什麼。我的應用程序仍想使用該節點,但無法連接,對吧?那如何保證分佈式系統所需的高可用性,我仍然依賴於我的應用程序使用提供程序連接到的一個節點。還是我完全理解錯了?
同樣在穩固的課程中,沒有人告訴我打電話時實際發生了什麼
web3.eth.contract(....).deploy(...)
。我的意思是部署在幕後做什麼?它到達節點然後該節點是否將我的契約廣告給每個礦工的記憶體池?基本上,當資訊在一個地方啟動時,記憶體池是如何填充的?
好像有兩個問題:
首先,INFURA 是一個集中的供應商,在後端 INFURA 執行它自己的分佈式奇偶校驗/geth 節點網路,所以一切都不太可能出現故障。但是,您是對的,如果發生這種情況,您將遇到中斷。但這只是因為您選擇連接一個集中式服務,其中分散的部分是您可以選擇執行自己的節點並得出與連接到 INFURA 相同的結論。沒有資訊是 INFURA 的私有資訊,您作為使用者將無法通過在網路上執行節點來檢索。
由您來設計您的應用程序以在中斷的情況下具有備份功能,可能預設返回到您自己的私有節點或其他服務。
要回答您的第二個問題,當您部署合約時,您會創建並捆綁交易。假設您正在使用像 INFURA 這樣的集中式服務,您的前端客戶端(MetaMask、Mist 等)會捆綁並簽署事務並將其傳播到 INFURA 端點,最終會傳播(通過某個節點 INFURA 正在執行) 通過八卦協議連接到乙太坊網路。