使用JavaScript和Menlo One构建dApp

Menlo One是一个用Javascript编写的开发框架,它为开发人员提供了一个工具包,用于构建托管在基于云的内容节点上的分散应用程序(dApp)。 您可以将这些dApp视为“ web-dApps”。 传统上,仅dApp的一小部分保存在区块链上,而其余的应用程序则保留在传统的集中式系统上。 Menlo One通过将所有数据存储在几个分散的系统上来解决该问题(启动时可与IPFS和以太坊一起使用) ,并通过在许多独立操作的服务器上镜像服务器端应用程序来消除单点故障。

对于已经在Node.js生态系统中构建单页应用程序(SPA)的开发人员,我们的框架会感到非常熟悉。 客户端SPA通过ExpressF提供的RESTFul API与服务器端Node.JS后端进行通信。 Express与ORM进行交互,然后与数据库进行通信。 但是,此经典模型需要考虑一些范式转换。

  • 开发人员不维护单个集中式服务器。 相反,后端由第三方在其服务器上托管,并且用户连接其中之一。 在Menlo生态系统中,有多个独立运行的服务器,它们均镜像同一服务器端Node应用程序。 我们称这些为“内容节点”。
  • 用户必须先在桌面Menlo电子钱包上运行客户端应用程序,然后才能使用Web dApp。 这个程序负责发现并连接到服务器供用户连接。 它还包含多个区块链系统的精简节点,并负责与用户与区块链网络进行交互。 最后,此应用程序负责验证用户从内容链中的内容节点接收的数据。 向开发人员公开了一个简单的API,并自动为开发人员处理了验证协议的复杂性。
  • 在服务器端,应用程序数据未存储在单个集中式数据库中。 当数据保存到数据库时,将进行第二次调用以将该数据保存到区块链。 服务器运行一个应用程序,该应用程序处理与区块链进行通信的协议。
  • 如果您是去中心化系统的新开发人员,那么可能会感到惊讶的是,进入dApp的所有用户都将自动进行身份验证,但默认情况下是匿名的。 用户不使用传统的用户名和密码登录,而是使用加密密钥对验证其身份。 在启动时,这是以太坊,但用户可以通过多种协议进行身份验证。 如果该应用程序需要2FA或单击一次登录,则Menlo会与集成到Civic(一种私有的分散式身份解决方案)的软件包捆绑在一起。

框架组件

Menlo One捆绑了开始构建dApp所需的一切。 如果您熟悉某些“ React / Node hackathon入门工具包”,则其含义完全相同。 它包含以下主要组件:

  • 带有React的前端入门套件。 但是,由于Menlo遵循非常经典的RESTful设计模式,因此可以轻松使用其他前端框架或构建自己的前端框架。
  • 在客户端运行的Menlo钱包。
  • 内容节点泊坞窗配置,其中Node.js预先配置了h Express&Mongoose,配置为支持Typescript以安全处理REST API,Mongo作为数据库来索引IPFS中分发的内容,以太坊节点具有最新的元数据,并将其存储在区块链中。
  • 该框架自动使用基于Kovan的已部署合同,可帮助您快速建立测试网络。
  • 部署脚本可轻松将您的dApp服务器端解决方案推送到中央存储库,所有内容节点均从该中央存储库中移至主机应用程序。

本着许多出色框架的精神,Menlo的目标是为您提供框架,以便您可以专注于项目本身。 尽管dApp与区块链通信的协议可能很复杂,尤其是对于刚接触区块链开发的开发人员,但我们已将大部分复杂性抽象化了,因此您可以专注于为用户构建。 但是,在构建Web-dApp时,需要考虑一些Menlo的特定注意事项。

  • 当ORM对数据库进行CRUD操作时,可以包括Menlo中间件,以便您可以指定还应将哪些数据持久保存到区块链中。
  • Menlo中间件可以包含在Express路由中,以便客户知道如何使用区块链验证该数据。
  • 尽管所有数据都保存到公共系统中,但某些用户数据(例如私人消息)必须保持私人状态。 我们向客户端库提供API,以在REST上加密消息。

与下一代区块链向前兼容

Menlo One是现有区块链网络之上的一种“第二层”。 区块链空间肯定会在未来几年快速发展。 虽然以太坊目前是智能合约平台的王者,但目前有一些更快,更高效的竞争对手试图废除它。 我们已经设计了一个API,以便可以在不破坏更改的情况下交换构建应用程序的基础区块链,就像正确构建的ORM不可识别区块链一样。

常见问题解答:为什么首先要分散管理?

如果您不熟悉分散式系统,则似乎我们已经稍微改变了传统的Web体系结构,并且已经有了,但这是有充分理由的。 通常的想法是,我们应该假定服务器不可信,并且用户担心服务器会向他们提供与内容创建者所期望的内容不同的内容。 想象一下,如果您的朋友写了一篇题为“唐纳德·特朗普的手很细”的博客文章,但是我们的总司令要求中级首席执行官将文字更改为“唐纳德·特朗普的手很粗”。 如果不是Menlo One,您将无法验证这是否是您的朋友希望您阅读的内容。 但是,使用我们的框架,用户将获取服务器响应的哈希值,并将其与您的朋友留在区块链智能合约中的原始消息的哈希值进行比较。 这样,你们俩都知道收到了预期的消息,或者内容节点是否被恶意感染。

常见问题解答:谁将支付托管内容节点和用户区块链GAS的费用?

简而言之,在此生态系统中要考虑三个参与者:发布者(某人发布某种数据或内容),内容节点(某人托管该数据)和用户(某人使用该内容)。 在Menlo One框架中,发布者购买或赚取Menlo的ONE令牌,而在将消息发布到某处时,会将一些ONE令牌放入智能合约中。 ONE用于支付内容节点的费用,以便为您提供预期的数据。 ONE还用于补偿用户使用以太坊网络的固有成本。

此外,如果用户是发布者具有高价值的人,则向用户支付的费用可能远远超过GAS的费用。 例如,如果发布者是去中心化汽车交易商的汽车销售员,并且用户最近购买了几辆兰博基尼汽车,则发布者可以激励用户以获取宝贵的关注。 假设所有客户的汽车购买都在区块链上(并且很快就会有一天),这是历史上销售人员可以在交易之前使客户合格的第一次。

从这个意义上说,我们削减了中间商。 到现在为止,大多数在线市场都处于幸运的地位,可以成为交易的中介并收取费用。 但是,借助Menlo One(以及许多快速发展的区块链网络),有可能构建一个版本的Uber,驾驶员可以自行设定价格,而不必向Uber支付一定的费用。

Menlo One的第一个版本是围绕货币化“注意力”而设计的(也就是说,向用户付费以验证从内容节点接收到的数据)。 但是,在以后的版本中,我们将构建用于自定义发布者部署的智能合约的API,以便在发生另一事件(例如购买交易)时向用户付款。

常见问题解答:如果中间人不能再赚钱,为什么有人会开发一个应用程序?

似乎正在发生经济转变。 建立一个交换场所而不再是有利可图的,而是一个交换媒介。 我们建议您探索启动自己的加密货币,该加密货币特别适合您的用例。

常见问题:我是否必须对所有交易都使用一个令牌?

ONE令牌仅用于支付数据交易的费用,以此作为支付运行内容节点的人员的费用。 您可以自由选择开发人员来构建dApp。 可以将运行内容节点的成本传递给用户,内容创建者,或者您的dApp可以根据您的方案支付该成本。

完全有可能构建一个去中心化的Uber版本,在该版本中,结帐流程将通过您控制的智能合约进行,该合约占交易的一定百分比。 我们打算让许多正在启动自己的加密货币的项目使用我们的框架。 从用户的角度来看,Menlo One被设计为在后台工作。 您可以使用与Menlo建立的界面来制作类似Uber的“ CarToken” dApp,该界面主要具有令牌功能,而Menlo在幕后工作。 在以后的版本中,我们计划与去中心化交易所集成,以便用户甚至可以轻松地将其获得的ONE代币交换为另一个ERC20。

Menlo One目前欢迎开发人员加入我们的生态系统。 访问https://menlo.one了解更多信息。