Contract-Development

智能合約客戶端如何工作?

  • July 31, 2021

我不明白客戶是如何工作的。我試圖解釋我的懷疑。由於經典客戶端-伺服器範式中的客戶端是輕量級應用程序,我不明白這個應用程序如何使用區塊鏈技術。智能合約客戶端是可以使用智能手機訪問合約 API 的最終使用者。當然,要做到這一點,不可能在智能手機上下載區塊鏈。所以,我不明白這個客戶端如何在不下載 BC 的情況下使用智能合約。

此外,web3js(僅用於引用庫)僅適用於 nodeJS 並且初始化下載區塊鏈,或者有一些機制可以避免下載並在瀏覽器上執行它,比如抱歉愚蠢的並行性,Angular 或 JQuery 呢?為了想像移動設備上的一些應用程序。

你說的有些話實際上是對的,但你仍然沒有把一切都做對。

您談到的 Contract API 可以通過 RPC 呼叫(一種 API 結構,類似於 rest )。一個名為 JSON RPC 的庫允許您使用 JS 進行呼叫。Web3JS 的工作與 JSON RPC 相同,但具有更好的抽象性和易於使用的方法。

現在,使用 Web3JS 呼叫合約方法根本不需要你下載區塊鏈,合約就是你的抽象。

當合約中的函式被呼叫時,合約會執行該函式的程式碼並創建將儲存在區塊鏈中的交易。因此,在這種情況下,與合約背後的區塊鏈互動的唯一層是合約本身。

因此,沒有 web3 客戶端需要下載區塊鏈來使用某些合約及其方法。如果您遵循一個簡單的教程並簽訂工作契約,您會更好地理解這一點。

我將嘗試與現有的客戶端-伺服器架構進行類比。

現有系統:

客戶端:任何用 JS(Web)、android、ios(Mobile) 編寫的前端。

新系統:

客戶端:任何用 JS(Web)、android、ios(Mobile) 編寫的前端。

附加事項:

  1. Web3JS 庫:提供與區塊鏈互動的 API。
  2. Metamask(或任何其他區塊鏈支持軟體):允許地址管理、簽署交易等……

Metamask 和其他支持區塊鏈的軟體將對象注入瀏覽器視窗對象。即web3。

如果您在 Metamask 中看到,您可以選擇要連接的網路。選擇作為我們目前目標區塊鍊網路的網路時。

在客戶端應用程序開始執行時,我們向 web3 提供以下資訊,以針對特定網路上的特定合約。

  1. 目前網路提供商
  2. ABI 契約
  3. 網路上的合約地址

一旦我們有了這 3 個元素,web3 就可以讓我們與該合約對話。

這裡的關鍵軟體是 Metamask,它實際上彌合了客戶端和區塊鍊網路之間的差距。

幕後:一旦交易被元遮罩確認,然後該請求將被發送到中央節點提供商,通常是 Infura 服務,該服務具有為不同網路執行的節點。然後這些節點將您的消息/tx 廣播到網路,這就是您在不實際執行節點或下載區塊鏈的情況下訪問區塊鏈的方式。

在 Metamask 的引擎蓋下 它通過 Infura 提供的 API 與乙太坊的任何網路對話,最終從它們執行/維護的節點廣播 tx/消息。

引用自:https://ethereum.stackexchange.com/questions/40563