随着我越来越多地了解如何开发Dapps,我很难理解什么需要存储在智能契约中(通过我们的数据库等等)。
让我们以一个简单的赌博网站为例。我想象创建一个博彩网站的Dapp的方式如下,如果我错了,请纠正我。
使用的技术: Rails (后端),React (前端),Solidity(智能契约)
( 1)我会将下列资料储存在我的资料库内:
2)创建用户后,我将创建一个新的Ethereum,其密码与他的凭据相同,并将他钱包的公共地址存储在数据库中。
3)我将储存在智能合同中:
因此,智能合同将只包含与投注交易相关的信息(打赌结果、投注金额),而数据库将包含其余信息。要检索用户的投注历史记录,我将从数据库中检索列表,并从智能契约中检索结果(通过打赌和用户的ID链接)。
我是否完全误解了Dapps/智能合同的概念?请指教,谢谢!!
发布于 2017-06-11 17:56:43
首先,很高兴你对DApps有了更多的了解,看到社区的发展总是很棒的。但是,您确实对DApps的设计方式有一些误解,所以我将尝试为您指明一个有用的方向。
使用的技术: Rails (后端),React (前端),Solidity(智能契约)
正如这回答中指出的那样:
DApp的后端代码运行在分散的对等网络上。
按照定义,DApps没有典型的后端,就像RoR那样。这意味着,为了使应用程序被称为DApp,智能契约应该包含所有后端逻辑。前端可以是任何JavaScript,实际上,还有为您提供API以与智能契约后端通信的web3 3库。
这是一种完全不同的模式,我在头上绕了很长一段时间就有问题了。一些经典的技术有分散的选择,比如IPFS或蜂群用于存储或托管您的DApp网站,“用户”应该绑定到块链地址,您可以使用PouchDB等等。DApp应该是完全开放的和自主的。
如果您希望构建投注DApp,您真的不需要将用户信息存储在数据库中--您可以对前端进行编程,例如,通过合同进行交互,该合同将所有投注的%发送到您的控制范围内,并在提供良好服务的DApp用户的同时拥有良好的业务模式。但如果你想每次押注于区块链,交易成本有时会被证明过高。然而,这并不意味着你不能有混合应用程序-真正的DApps在他们目前的状态确实有一些限制。
在处理柠檬电子邮件时,我们必须权衡现有技术(例如SMTP服务器)的一些好处以及分散应用程序的好处--因此我们决定创建适合每个人的DApp。我们使用存储我们交互的元数据,IPFS作为我们的存储。如果你愿意,你可以在这里阅读更多关于我们的架构的内容。。
另加如下:
https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide/
https://www.packtpub.com/big-data-and-business-intelligence/mastering-blockchain
https://ethereum.stackexchange.com/questions/17691
复制相似问题