原文载于 Erlang Solutions Blog[4]
保持沉着,继承 BEAM。
BEAM 利用“演员模子”来模仿真实世界,一切都是不行变的。因此,不需要锁定状态并防范竞争状况。虽然,一切都是有价钱的。BEAM 简朴而瑰丽的稳定性大概会导致措施运行得更慢。为了缓解这一潜在的迟钝,ArcBlock 操作 Rust 来辅佐 CPU 完成麋集的任务,譬喻为状态建设 Merkle-Patricia 树。再次强调,通过提供简朴的要领来与外部世界相同,利用 Rust 将机能提高到另一个程度,BEAM 证明白它的代价。
[4] Erlang Solutions Blog: https://www.erlang-solutions.com/blog/why-arcblock-is-using-the-beam-to-build-their-next-generation-blockchain-framework.html[3] 网络研讨会: https://www.erlang-solutions.com/resources/webinars.html
ArcBlock 区块基石[1]负担这样一项使命:大大简化技能并将其迅速应用于日常糊口之中。为此,他们开拓了一个区块链全栈开拓平台,为开拓者提供了轻松构建、运行和陈设去中心化应用(DApps)所需的一切。其平台的焦点是 BEAM 虚拟机。他们鞠躬尽瘁信任和支持 Erlang 生态系统,而且作为首创赞助人插手了 Erlang 生态系统基金会。在这篇博文中,ArcBlock 研发副总裁陈天将谈谈他们为什么钟爱 BEAM 虚拟机以及将其用作所有但愿开拓 DApp 的人的基石的益处。
ArcBlock 副总裁陈天将是 Erlang 办理方案 11 月 27 日礼拜三网络研讨会[3]的高朋。接待注册参加,纵然您无法当天出席,也可第一个收到该研讨会的录像。将 BEAM 作为构建去中心化应用的要害组件的抉择很简朴。首先,区块链和去中心化应用[2]需要在网络中的所有节点上实现一致的状态。我们通过利用状态副本引擎(也称为共鸣引擎)来实现这一点。共鸣很重要,因为这种机制确保信息添加到区块链账本是有效的。为了告竣共鸣,网络上的节点需要对信息告竣一致,共鸣告竣后,,数据就可被添加到分类账中。可用的引擎许多,我们平台今朝选择 Tendermint,支持状态复制引擎。
网络共鸣
如今,BEAM 为全球一半以上的互联网路由器助力,我们不认为能找到比这更有力的证明白。以下是 BEAM 的一些长处,使其极其适合打造区块链。
在大大都环境下,开拓者必需更新和从头启动他们的节点以启用最新软件,这将导致潜在的问题和不须要的宕机。通过 ArcBlock,我们操作 BEAM 的代码热重载特性,让节点在整个网络中动态地启用/禁用智能合约。这只需通过发送生意业务来完成,该生意业务汇报系统,它应该在特定的时间进级软件。当这种环境产生时,ArcBlock 将汇报 BEAM 安装新代码,然后网络中的每个节点都将拥有最新的成果。
BEAM + DApps
代码热重载
[1] ArcBlock 区块基石: https://www.arcblock.io
除了 BEAM 的调治器,我们喜欢的另一个特性是代码热重载。它可以让你在运行中做险些任何工作,而不需要封锁 BEAM。譬喻,我们的平台附带了很多差异的智能合约,开拓者可以利用这些合约使去中心化应用的成果越发富厚。然而,通过区块链,您拥有一个漫衍式网络,需要确保每个节点都行为一致。
除了共鸣引擎外,BEAM 是满意去中心化应用其他几个要害需求的完美办理方案。为了让去中心化应用能在我们的开拓框架中事情,我们需要一个嵌入式数据库来存储应用状态,以及一个用于区块链数据的索引数据库。在此进程中,我们还需要区块链节点可以或许监听网络上的节点,并为下一个数据区块“投票”。对付这些需求,系统需要一连的响应和可用性。
BEAM 和区块链简介
固然这个表明有点技能性,可是 BEAM 的垃圾收集进程是在历程程度完成的,从而确保不会呈现“让世界遏制,让我清理垃圾”这类的垃圾收集。相反,它确保历程在没有任何范例的间断环境下继承运行。
相识更多
我们把这一点留到最后是有原因的。这是今朝为止 ArcBlock 最依赖 BEAM 的特性。在区块链规模,它是使 BEAM 优于很多竞争敌手的技能。尽量成千上万的生意业务同时产生;但系统特定部门产生的任何错误都不会影响整个节点。错误将可自我修复,使节点可以或许抵制不良行为或特定进攻。对付向用户交付处事或支持出产物质的应用的任何人来说,这都是一个要害特性。通过引入默认容错,我们可以确保运行在 ArcBlock 平台上的任何人都保持在线和可用。
[2] 区块链和去中心化应用: https://www.arcblock.io/zh/forge-sdk
在构建具有高可费用、容错本领和可扩展性的及时系统方面,Erlang 是最好的编程语言之一。BEAM 是虚拟机——在我们看来也是冷静无闻的英雄。BEAM 的利益也合用于在虚拟机上运行的其他语言,包罗 Elixir。无论人们利用何种高级编程语言,一切都归结于 BEAM。这是技能中重要的一环,它辅佐实现所有重要的百分百可用性。
容错
References
我们相信,BEAM 固然是多年前设计的,但其目标是用于区块链。它为开拓者和像 ArcBlock 这样的区块链平台提供了所有须要的特性,以及运行高并发、容错系统的本领,让开拓者的事情变得越发轻松。
ArcBlock 是谁,为什么他们喜欢 BEAM?
速度是相对的垃圾收集
此刻,需要留意的是,除了一连响应之外,我们还需要思量 CPU 任务。出格是当系统碰着 CPU 麋集型任务时,我们的区块链平台和处事不能遏制事情。假如系统变得无响应,则大概产生潜在的劫难性错误。
OTP
别让这个名字欺骗你。垃圾收集是至关重要的。Erlang 利用动态内存和跟踪垃圾收集。每个历程都有本身的仓库和堆,它们被分派在沟通的内存块中,而且可以互相增长。当仓库和堆相遇时,垃圾收集器被触发,内存将被接纳。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。