Dapp-Development
Dapp 後端的哪些元素通常儲存在去中心化位置?
我不清楚 Dapp 後端程式碼的哪些元素實際上是去中心化的。
以下連結表明 Dapp 的後端完全儲存在區塊鏈上。但是,如果我要創建一個 Dapp Web 應用程序,通常在 Web 開發意義上被稱為“後端”的東西有多少實際上位於區塊鏈上?
例如,如果我要使用 Python 開發 Web 應用程序,如果我正在開發 Dapp,我的 Python 程式碼的整個功能是否會被智能合約取代,或者只是業務邏輯的關鍵元素?
下圖幫助我了解了去中心化應用程序是如何組合在一起的。我通常是一名 Java 開發人員,所以我更熟悉為一些 J2EE 伺服器編寫中間件並託管這樣的應用程序。我保持這個解釋有點非常高級。
我目前正在選擇以下方法:
- 用 Solidity 編寫的乙太坊智能合約替換 Java(後端程式碼)。
- 我的應用程序通常會與用於持久儲存的數據庫相結合。為了在我的新 DApp 中體現這一點,我選擇使用IPFS。
- IPFS 儲存託管在整個節點網路中的靜態內容。例如圖像、前端程式碼、數據。
- 一旦我們有了靜態內容,即 HTML、JS、CSS,我們就可以與我們的本地乙太坊節點進行互動。即區塊鏈(更具體地說,是通過其合約地址和合約“abi”部署到網路的智能合約。)
- 在圖像中,我們可以看到從Ethereum指向IPFS的箭頭。這被簡單地解釋了。我們可以將發佈到 IPFS 的文件的雜湊值儲存在智能合約中。有了這個參考,我們可以隨時使用我們的 IPFS 節點來檢索它。
IPFS NODE ----> REQUESTS
有內容#
IPFS NODE <---- RECEIVES
來自網路的相應內容- 新的閃亮內容文件現在包含在 DApp 中供使用者使用!
我有一個標準的網路應用程序,允許使用者上傳他們的個人資料。Java 程式碼的範圍是通過端點讀取數據並儲存到數據庫中。應用伺服器還將靜態內容提供給點擊某個 URL 的使用者。這個簡單應用程序的去中心化版本如下:
- Solidity 後端以雜湊的形式接受使用者數據(替換 Java 後端)。更改應用程序“全域狀態”
- IPFS 持有網頁,將根據要求提供。
- IPFS 持有更多與儲存在智能合約中的雜湊相關的數據。
應用程序中的很多邏輯已經遷移到前端程式碼。請注意,這是一個虛構的應用程序,僅用作範例。
這是將 IPFS 與 Solidity 合約連接並通過瀏覽器中的 JS 控制台進行查詢的一個很好的範例。
謝謝,我希望這會有所幫助!