http://www.7klian.com

选择 BEAM 用于区块链开拓的四大完美原因

把问题简化为历程
References
•Forge 应用措施:执行智能合约并支持 RPC 界面的历程
总结
•若生意业务有效,它将被插入内存池,然后涌入整个网络;不然,它会被放弃

首先,需要将巨大的问题解析为历程。区块链自己是很多问题的殽杂办理方案,OTP 使我们可以解构并逐个办理它们。将差异的历程分组到应用的机动性也有助于代码库维护。
•当用户发出生意业务时,gRPC 处事器会对其举办处理惩罚并将其推至内存池的阵列
•当区块同步给我们后,生意业务会被一个接一个收取并由智能合约引擎执行
我们选择 Erlang/OTP 的第三个重要原因是它为区块链系统提供了很多精彩的内置成果,好比热进级、并发和高可用性。
区块链框架入门
假如可以选择构建面向将来的区块链框架,我们团队照旧将 100% 利用 Erlang/OTP。当他人还在尽力构建和维护巨大的系统时,Erlang/OTP 已经在高压情况中接管了时间的检验。当今的 Erlang/OTP 办理了我们面对的大部门挑战,让我们的团队可以或许更多地存眷于构建高级成果特性,并让它们越发用户友好。
•存储应用措施:打点与文件系统相关任务的历程
•共鸣应用措施:打点与共鸣算法相关任务的历程
开放机动
[3] Erlang Solutions Blog: https://www.erlang-solutions.com/blog/erlang-and-elixir-for-blockchain-4-key-advantages.html

原文载于 Erlang Solutions Blog[3]
区块链框架的一个浸染是以殽杂的方法运行框架代码和客户本身代码,这需要安详断绝才气正常事情。

在 Forge[2],我们利用 Erlang/OTP 已经可用的成果和利益提供一个辅佐开拓者完成所有坚苦事情的框架。譬喻,假如您利用 Forge 启动一个区块链,独一的要求是通过在设置或运行时启用或禁用它们来配置行为。更重要的是,假如您但愿在链启动时举办更新,则可以热进级系统的各个部门,而无需从头启动整个网络节点——这是任何产物级应用或处事的要害特性。

利用 Erlang/OTP 让区块链框架拥有优于其他语言的很是重要的优势,就是机动性。作为区块链开拓框架,Forge 在设计时即是扩展开放的:您可以通过添加更多的应用措施来扩展框架,以实现更巨大的成果,好比利用差异的共鸣引擎。
第二是“让它瓦解”的思想。区块链系统由很多通过网络关联的运行实体组成。重要的是,我们需要有适当的错误处理惩罚系统,在网络不不变或其他意外间断产生时可以或许维持正常运行。
Forge 是区块链开拓东西,它极大地简化了构建框架以支持多链网络,即建设本身的链(Build Your Own Chain,BYOC)这一观念的进程。在 Forge 之前,建设一条区块链是很有挑战性的。假如人们想要本身发链,首先需要配置一个区块链系统的差异组件,包罗共鸣算法、点对点网络等。在耗费大量精神使这些组件协同事情之后,开拓者还需要抉择如何调解链的差异参数,譬喻通证供给总量和分派、特定生意业务配置和打点员会见节制等。假如足够幸运让区块链运行起来,但假如发明纵然有一些轻微堕落,则需要遏制所有运行的节点,并从新开始,从头举办配置。

布置这些勾当大概很坚苦。然而,在 OTP 的辅佐下,,我们可以或许通过一种一连的分而治之的要领轻松地打点认真的历程——将事物组织成应用措施,将每个应用措施组织成一个监控树,而且每棵树由很多小历程构成。当需要并发时,我们可以输出历程池;当需要牢靠的顺序处理惩罚时,我们利用单个历程——从本质上讲,它的收件箱充当动静行列,这担保了任务以正确的顺序得处处理惩罚。

•事件应用措施:打点事件订阅的历程
在这些应用措施中,Forge 尚有一些其他历程,它们彼此相助,辅佐历程并处理惩罚区块链的生意业务勾当。譬喻:
为区块链筹备停当

我第一次通过乔·阿姆斯特朗(Joe Armstrong)相识到了 Erlang/OTP,他将世界解析成可以像人类一样彼此攀谈的历程。当我开始在 ArcBlock 区块基石[1]事情时,我们的任务是构建一个平台,我们抉择将 Erlang/OTP 遍及用于后端处事,以及我们的区块链开拓框架:Forge。本文中描写了这些原因,而且因为 OTP 的成果,我们得以构建一个具有高度实用性、可当即开展出产的区块链框架,它不只提供运行区块链网络的要害处事,同时极大地简化了新一代应用和处事的需要。

在 Forge 框架的设计筹划阶段,我们还评估了其他区块链社区的风行语言,如 Golang。Golang 有它的长处,包罗一些很是高级的库;然而,为了构建我们想要提供应客户的强大平台,真正敦促我们走向 Elixir 的有三件事。
[2] Forge: https://www.arcblockio.cn/zh/forge-sdk
在我们基于 Erlang/OTP 的框架中建设的区块链网络答允用户在需要时热进级他们的智能合约,而无需封锁整个系统,这为用户在运行时提供了极大的机动性。譬喻,假如需要删除区块链系统中的一个节点来进级部门代码,则需要同时进级所有节点,以便它们利用沟通的代码逻辑集并输出沟通的功效。在这种环境下,OTP 答允在生意业务中包括部门进级,所有节点都可以执行生意业务务并同时进级代码。

•索引应用措施:一连从状态数据库抓取数据并将其索引至相关数据库的历程
譬喻,用户自界说的智能合约大概利用与框架界说的合约沟通的变量名。其他设置大概会替换系统的某些部门(譬喻,客户大概可以用本身的陈设替换共鸣引擎),而且可以在运行时将新成果添加到现有的区块链节点中,而不会影响可用性和不变性。因此,Forge 是在巨人的肩膀上打造的,这是一个颠末战斗检验的出产系统,可以或许提供我们所需要的特性。
譬喻,当用户需要构建区块链节点时,这是一个很是雷同于构建操纵系统的进程。我们需要编排一个“应用措施”列表,为互换事件协同事情(譬喻,区块链系统生意业务),执行这些事件,然后存储更新后的状态。为了辅佐每小我私家领略其事情道理,很容易把布局解析成几个焦点应用措施:

“易瓦解”
譬喻,假如一个历程需要读取链上信息来处理惩罚 RPC 请求,而且因网络不不变而瓦解,在这种环境下,重试屡次就可以修复问题。那么,OTP 中的监控器可以辅佐规复历程。这正是乔·阿姆斯特朗(Joe Armstrong)所说的“编写一次,永远运行”的
完美例证。
[1] ArcBlock 区块基石: https://www.arcblockio.cn

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读