×

Web app VS 以太坊 dapp

96
萌萌哒小肥他爹
2018.05.02 23:30 字数 1627

感谢

源文章来自于: https://medium.com/@mvmurthy/ethereum-for-web-developers-890be23d1d0c
感谢该作者的无私奉献。 本文采取意译,并不逐词对应。

传统的web开发

我学习以太坊区块链平台有一段时间了,我学到的东西越多,心情就越激动。 有很多关于以太坊的资源(文章,视频,平台文档),很容易让人不知所措。 但是,它们中的很多已经过时了,因为该平台仍在快速发展。 我花了一些时间拼凑起来,全面了解以太坊是什么以及它是如何工作的。 与会议小组和其他在线社区的开发人员交谈时,感觉好像有很多人希望动手试试。 本文是我从Web开发人员的角度解释Ethereum的尝试。

如果你是一个Web开发人员,那么你会知道从抽象层次来看, 一个webapp与它的客户端服务器架构是如何打交道的:


image.png

你的Web应用程序托管在托管服务提供商(如AWS,Heroku或VPS)上。 所有客户都与这一个中心应用程序进行交互。 客户端可以是一个浏览器,另一个api使用您的服务等。当客户端向服务器发出请求时,服务器会与数据库和/或缓存进行通信,读取/写入/更新数据库, 并为客户端返回应答。

大多数场合下这种架构是ok的。 但是请考虑这种场合: 数据库是公开而又安全的, 所有人都能访问到, 并且不用依赖于这个webapp的拥有者。 (该怎么办?)

例如,让我们看看eBay。 如果你是一位已经赢得数百次好评的优秀销售商,但由于某种原因,eBay暂停了你的帐户。 这将非常糟糕,并可能严重影响你的业务。 此时你可能会想如果你可以将所有评论和评分转移到另一个平台(比如说eBay竞争对手)那就太好了。 eBay会不会提供这样的服务呢? 很大可能不会, 即使会, 他也会在每次销售中拿出一笔佣金。 所以这种情况下, 你不得不依赖这个平台。

如果有一种方法可以彻底消除买卖双方之间的交易依赖,那么你可以节省佣金,并且还可以访问所有数据? 这是去中心化应用程序登场的原因。 以太坊使得构建Dapps(去中心化应用程序)变得非常简单。

这是以太坊dapp看起来的样子:


image.png

每个dapp客户端(浏览器)都与它自己的应用程序实例进行通信。 没有所有客户端连接到的中央服务器。 这意味着,每个想要与dapp交互的人都需要在其计算机运行区块链的完整副本。这意味着,在您使用应用程序之前,您必须下载整个区块链并 然后开始使用该应用程序。 这听起来可能起初很荒谬,但它的优势在于不依赖于明天可能会消失的单个中央服务器。(译注: 这也是区块链暂时没有流行的原因。 以太坊的TPS并不高,记得好像是70/s ? )

实际上,你不需要花费大量的硬盘和RAM来下载整个区块链。 有几种解决方法/优化可以使应用程序分散,而使交互更加快速和简单。

现在,这块区块链包含两个信息:
1)数据库:在Ethereum网络中发生的每一个事务都被打包到块中,并且每个块都链接到下一个块。 这个链接的一系列保存所有交易数据的块是区块链。 如果我们回到eBay的例子,买卖双方之间的每笔交易,无论是出售,退款还是争议,都将记录在区块链上,供所有人查看。 为确保网络中的所有节点具有相同的数据副本并确保没有无效的数据写入此数据库,以太坊使用称为工作证明(POW, Proof of Work) 的算法。 以太坊POW说明
2)代码。区块链的数据库只存储数据。 但是,所有购买,出售,取消,退款的逻辑在哪里?在以太坊的世界中,您使用称为Solidity的语言编写应用程序代码(称为合同)。 然后使用solidity编译器将其编译为以太坊字节码,然后将该字节码部署到区块链。 暂时,Solidity是迄今为止最受欢迎的合同开发语言。

所以基本上,区块链存储您的数据,存储代码并在EVM(以太坊虚拟机)中运行代码。

为了构建基于Web的dapps,Ethereum附带了一个名为web3.js的方便的JavaScript库,它连接到您的区块链节点。 所以你可以将这个库包含在像reactjs,angularjs等js框架中并开始构建。

另一个重要的特点是平台的财务能力。 如果我告诉你,只要你开始使用dapp,你会得到一个内置的银行账户? 实际上,不是一个银行账户,但你可以在很短的时间内创建尽可能多的银行账户? 这些银行账户称为钱包,您可以在其中存储资金(以太币 - 以太坊生态系统中使用的货币)并进行交易。

我故意没有介绍太多区块链的内部运作细节,因为我想集中精力将基于区块链的Dapp与一个中央化的webapp进行比较。 希望这篇文章能够完成这一点,并对Ethereum是什么以及如何用它来构建去中心化的应用程序提供了一个很好的高层次思路。

dapp开发
Web note ad 1