帶有瀏覽器客戶端的 Dapp 的典型架構
我試圖了解帶有瀏覽器客戶端的 Dapp 的典型架構。下面的理解正確嗎?
[網路瀏覽器 (最終使用者)] <==> [伺服器 (Web 應用程序/javascript <==> web3 <==> 乙太坊客戶端,如 geth)] <==> [乙太坊網路 (solidity 程式碼)]****
******我不確定您是否在描述數據流而不是實際的系統架構,但如果是的話,它並不完全正確。
去中心化應用概述:
Alex Van de Sande 寫了一篇關於建構無伺服器應用程序的精彩文章,並在其中對比了集中建構和分散建構之間的區別。
https://blog.ethereum.org/2016/07/12/build-server-less-applications-mist/
這篇文章談論了很多關於 Mist 的內容,但此時 Mist 確實是鎮上唯一出現的。現在我們有了 Parity 甚至 MetaMask,允許使用者訪問 web3.js 並連接到乙太坊錢包,重要的是能夠使用乙太坊錢包在乙太坊區塊鏈/網路上簽署交易。
考慮到你的例子:
[網路瀏覽器 (最終使用者)] <==> [伺服器 (Web 應用程序/javascript <==> web3 <==> 乙太坊客戶端)] <==> [乙太坊網路 (solidity 程式碼)]****
******乙太坊客戶端通常不在伺服器端,有一些例外情況,例如使用 MetaMask 之類的東西,但在這種情況下,你會使用 MetaMasks 伺服器端而不是你自己的。乙太坊客戶端將成為 Web 瀏覽器的一部分。此外,客戶端是與乙太坊網路通信的,而不是你的伺服器。所以你的結構/關係需要分成兩部分,看起來更像:
下載 HTML 和 JS:
[Web 瀏覽器(最終使用者 <==> 乙太坊客戶端)] <==> [伺服器(Web 應用程序/JavaJcript <==> web3)]
與區塊鏈互動:
[Web 瀏覽器(最終使用者 <==> 乙太坊客戶端)] <==> [乙太坊網路(solidity 程式碼)]************