Cointime

扫码下载App
iOS & Android

为什么使用 Actor 模型?

为了让程序有效地完成工作,通常需要与其他程序通信——无论它们是外部依赖项、API 还是同一系统的独立部分。沟通方法是影响项目运作整体有效性的关键因素。

程序可以通过两种主要方式进行通信;通过访问相同的“共享内存”,或利用“消息传递”。每种方式都有自己的特殊优势和设计考虑因素。

在“共享内存”通信模型中,程序依靠全局数据库来管理它们的状态。这种模型在当今的智能合约平台中很常见,其中区块链用于存储网络的当前状态和所有智能合约。虽然这种方法确保了程序之间的一致性,但它不支持并发操作,这会严重限制交易吞吐量,因为状态必须按顺序更改。实际上,每次只能处理一笔交易,可能最终导致用户等待时间更长并支付高昂的 gas 费。

Gear 智能合约平台利用的“消息传递”通信模型允许异步通信和并行消息到 / 来自不同的 actor。与共享内存方法相比,这提供了几个好处——包括更好的性能和可扩展性、更强的稳健性,以及在设计智能合约时为开发人员增加灵活性。

在采用内部消息传递的协议中,Actor 模型是使用最广泛且经过实战检验的进程间通信框架之一,Gear 在其网络架构中实现了该模型。在本文中,我们将探讨什么是 Actor 模型、它的工作原理,以及最重要的一点:Gear 为什么使用它。

什么是 Actor 模型?

Actor 模型是一种设计和实现并发处理系统的方法。“Actor”是独立的实体,如用户和程序,它们通过交换消息相互通信。Actor 模型的独特之处在于 actor 彼此独立,不共享内存。相反,每个 actor 都维护自己的状态,并且只能更改其状态以响应从其他 actor 接收到的消息。当一个 actor 收到一条消息时,它可以根据消息的内容和它的内部状态执行一些计算,也可以向其他 actor 发送消息作为响应。

Actor 模型的工作原理

在 Gear Protocol 中,无论是智能合约还是用户——每个 actor 都有自己的私有内部状态,包含在该 actor 的“持久内存”中。Actor 通过发送异步消息相互通信。

发送消息完成后,它们存储在 Gear 节点维护的消息队列中。一旦满足消息标准(例如可用代币余额或特定区块编号已通过),消息就会出队并作为出现在当前区块中的成功交易进行处理。未处理的消息稍后由验证者重新评估,以查看是否满足其标准,以便将它们包含在未来的区块中。

本质上,actor 能够独立地接收输入、执行函数和发送输出。这就是程序(包括智能合约)可以自动并行工作的方式。还有一点值得注意,actor 可以创建其他 actor,扩展程序中的链并允许更灵活和复杂的功能。

为什么 Gear 使用 Actor 模型?

Actor 模型不同于其他程序通信方法,因为它在 actor 之间传递消息而不是共享网络状态。这有助于提高程序的安全性和稳健性,因为每个 actor 都有自己的个人邮箱,并且不能更改链上另一个 actor 的状态。

通常,智能合约缺乏支持异步消息传递的能力,但正如 Gear 所实现的那样,Actor 模型为所有程序提供了原生的任意异步通信。这允许使用当今 Web 2 上下文中常见的由异步编程支持的设计模式和语言结构——极大地简化了开发和测试,同时为智能合约解锁了全新的用例。更重要的是,Gear 详细说明了智能合约逻辑内部的并发通信与程序状态一致性保持一致的设计原则和模式。

Actor 隔离、异步消息传递和状态封装使 Actor 模型成为容错性非常高的框架,因为它提供了允许系统从故障中恢复并继续运行的机制。结合上述对性能、可扩展性、开发人员体验和设计选择的改进——Gear 对 Actor 模型的使用,使 Gear 成为使用 Web 2 世界中已构建的工具和工作流创建下一代快速且可扩展的 Web 3.0 dApp 的理想环境.

评论

所有评论

推荐阅读