Go-Ethereum

DAPPS - 放入智能合約的範圍

  • October 10, 2017

隨著我對開發 Dapps 的了解越來越多,我無法理解智能合約中需要儲存的內容(通過我們的數據庫等)。

讓我們以一個簡單的博彩網站為例。我想像創建一個博彩網站的 Dapp 的方式如下,如果我錯了,請糾正我。

使用的技術:Ruby on Rails(後端)、React(前端)、Solidity(智能合約)

1)我會在我的數據庫中儲存以下資訊:

  • 使用者(姓名、電子郵件等)
  • 可用投注列表
  • 使用者投注列表

2)創建使用者後,我將創建一個新的乙太坊錢包,其密碼與他的憑據相同,並將他的錢包的公共地址儲存在數據庫中。

3)我將儲存在智能合約中

  • 使用者 ID(來自數據庫)
  • 投注 ID(來自數據庫)
  • 投注金額
  • 投注結果/狀態
  • 使用者乙太坊錢包地址
  • 我的網站乙太坊錢包地址
  • 以及根據投注結果執行交易的程式碼(贏:將他的獎金轉移到使用者錢包,輸:將他的投注金額轉移到我的網站錢包)

因此,智能合約將僅包含與投注交易相關的資訊(投注結果、投注金額),而數據庫將包含其餘資訊。為了檢索使用者的投注歷史,我將從數據庫中檢索列表並從智能合約中檢索結果(通過投注和使用者的 ID 連結)。

我是否完全誤解了 Dapps/智能合約的概念?請指教,謝謝!!

首先,很高興您能更多地了解 DApp,看到社區不斷發展總是很高興。但是,您確實對 DApp 的設計方式存在一些誤解,因此我將嘗試為您指出有用的方向。

使用的技術:Ruby on Rails(後端)、React(前端)、Solidity(智能合約)

正如這個答案所指出的:

DApp 的後端程式碼在分散的點對點網路上執行。

根據定義,DApp 沒有像 RoR 那樣的經典後端。這意味著,為了讓你的應用程序被稱為 DApp,智能合約應該包含你所有的後端邏輯。實際上,前端可以是任何 JavaScript,以及為您提供與智能合約後端通信的 API 的web3 庫

這是一個完全不同的範例,我在很長一段時間內都遇到了問題。一些經典技術有去中心化的替代方案,例如用於儲存或託管您的 DApp 網站的IPFSSwarm,“使用者”應該與區塊鏈地址綁定,您可以使用PouchDB等。DApp 應該是完全開源的和自主。

如果您希望建構投注 DApp,您真的不需要將使用者資訊儲存在數據庫中 - 您可以對前端進行程式,例如,通過將任何投注的百分比發送到您控制的契約的契約進行互動,並擁有良好的商業模式,同時為 DApp 使用者提供良好的服務。但是,如果您希望每次都在區塊鏈上下注,交易成本有時會被證明太高。然而,這並不意味著你不能擁有混合應用程序——目前狀態下的真正 DApp確實有一些限制。

在開發 Lemon Email 時,我們必須權衡現有技術(例如 SMTP 伺服器)的一些好處以及去中心化應用程序的好處——因此我們決定創建適合所有人的 DApp。我們使用乙太坊區塊鏈來儲存我們互動的元數據,並使用 IPFS 作為我們的儲存。如果您願意,可以**在此處閱讀有關我們架構的更多資訊**。

一些額外的閱讀:

https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide/

https://ethereum.org/dao

https://www.packtpub.com/big-data-and-business-intelligence/mastering-blockchain

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