干货|EthereumMist负责人教你搭建serverless应用的架构经验,目前积极探索区块链的实现 蔡家辉:万云平台实习生,区块链技术爱好者,在伦敦帝国理工学院学习数学本教程负责人以太坊的Mist浏览器某人写的,完整介绍了如何开发一个标准的DApp。正文如下:以太坊并不是那种需要STEM文凭(1)才能理解的高深莫测的智能合约应用搭建平台,它的目标其实是成为万维网各种应用架构的中坚力量。在本文中,我们试图解释如何实现这一目标,并提供一些基本示例来展示如何开始构建去中心化应用程序。译者注:(1)STEM文凭是指:科学-科学、技术-技术、工程-工程、数学-数学相关文凭。目标读者本文适用于对Web技术有基本了解并知道如何构建简单的基于javascript和html的应用程序的读者。同时,我希望利用这些技能为以太坊生态系统构建应用程序。没有服务器的应用如何运行目前,Web应用中服务器完成的工作已经远远超出了最初的想象。除了提供静态网页外,它们还托管私人信息、处理用户身份验证并提供复杂的数据分析和存储。用户的计算机(在最初发明网络技术的时代,这样的设备将被视为超级计算机)无非就是加载信息并将其显示给用户。与当前的服务器模型不同,更加分散的系统结构允许采用更加模块化的方法。在这种方法中,不同的机器和不同的协议将处理特定的任务,一些任务由用户负责,一些由部署在对等网络中的专用机器负责。因此,所有的数据逻辑(存储什么,存储谁,如何解决冲突等)在区块链上由智能合约解决,静态文档由Swarm提供,实时通信在Whisper上进行.用户设备保留用户认证信息并运行程序界面。很少有单个节点保留大量未加密的数据,这降低了数据泄露和攻击的风险。同时,通过将它们分布在整个网络中,还可以降低应用程序的加载和开销成本。由于所有这些协议都是去中心化的,任何人都可以连接到网络并开始提供某些服务:例如,如果用户在功能强大的笔记本电脑上浏览,该计算机也可以提供静态文档。去中心化服务器模型去中心化的系统结构同时鼓励创新:由于交互界面与数据分离,任何人都可以为同一个应用程序提出一个全新的用户界面,创造一个更有活力和竞争力的生态系统。可以说,Twitter历史上最有趣和最具创新性的时期之一是它由中央数据中心提供服务,任何人都可以创建自己的Twitter应用程序。看看它是如何工作的如果您想在学习之前试用该应用程序,我们建议您下载Mist并阅读我们的入门教程,了解如何启动和运行该应用程序(下载链接:https://github.com/ethereum/米…)。如果只是想看看完整的应用,可以直接从Github下载(下载链接:https://github.com/ethereum/s...)。在Mist浏览器上运行的StakeVoice我们现在开始,我们将构建一个非常简单的应用程序,称为“StakeVoice”。它的要点是允许以太币投注者对他们想要的任何东西进行投票,该应用程序将计算所有同意和不同意该声明的以太币的总和。以下代码是本应用中用Solidity语言编写的合约。Solidity是一种类似于javascript的语言。很简单:第一行创建合约名称,第二行创建一个名为“LogVote”的事件,该事件将在日志文件中记录以下内容:将要投票的提案的哈希值投票者是否同意或拒绝提案投票者的地址“投票”功能然后启动日志,应用程序稍后对其进行计数。它还会检查以确保没有意外发送以太币。当任何以太币被存入智能合约时,一个“匿名”功能被执行并自动拒绝接收以太币。如果您想了解有关Solidity编程的更多信息,我们建议您从以太坊solidity教程(https://ethereum.org/dao)开始并阅读官方文档页面(https://solidity.readthedocs...)并尝试浏览器上的在线编译器(https://ethereum.github.io/br…)。差不多就是这样:你选择一个散列,选择一个边然后运行??Vote()。那么这如何转化为投票应用程序呢?Serverless架构遵循KISS原则,我们正在使产品尽可能小并且仍然可用。这意味着我们不使用数据库来存储提案,也不使用纯javascript和纯html以外的任何东西。因此,我们将使用应用程序本身的URL来存储提案文本,我们将使用URL向用户显示提案内容,并生成哈希值来检测投票。用户可以使用社交媒体分享他们想要辩论的提案,或者直接使用链接。从基础开始使用您最喜欢的html框架并在您的本地计算机上构建一个简单的网站,然后在Mist中打开它。Mist上的所有页面都可以访问名为web3的javascript对象,这是您的主要工作区域。我们做的第一件事是检查web3是否存在:一些应用程序开发人员可能希望加载自己的web3对象以确保向前兼容。为此,只需在
