Skip to main content

IC如何实现并行性

并行性

单个智能合约程序罐有一个执行线程用于更新,但互联网计算机可以并行地执行大量的智能合约程序罐。此外,我们对需要更新智能合约程序罐状态的请求和不能修改程序罐状态的查询做了区分。

互联网计算机的编程模型由内存隔离的智能程序罐组成,通过二进制数据编码候选值的异步消息传递进行通信。一个智能程序罐一次处理它的消息,以防止竞赛条件。一个智能程序罐使用回调来登记它发出的任何智能程序罐内消息的结果需要做什么。

作为 Actor 的智能合约罐

Actor 模型是一个并发计算的数学模型,在这个模型中,为了响应消息,行为体可以修改其状态,发送消息,并创建更多的行为体。

  • 一个智能程序罐在很多方面都像一个行为体。例如,一个行为体有:
    • 一个私有状态,只能由智能程序罐本身修改。
    • 一个单一的执行线程,所以它不需要基于锁的同步。
    • 能够通过异步消息与其他罐子通信;以及能够创建新的智能程序罐。

传统角色和智能程序罐之间的一个重要区别是,互联网计算机上的智能程序罐有双向的消息传递。消息被分为请求和响应,其中请求可以被回复,而互联网计算机则跟踪响应的回调。

在行为体术语中,每个行为体都有一个邮件地址,用来接收消息。一个智能程序罐也有一个邮件地址,恰好看起来与 IPv6 地址相似。

虽然一个智能程序罐的更新吞吐量受到区块链共识和单线程执行的限制,但一个智能程序罐可以同时为数百个查询提供服务,实现每秒数千次查询的吞吐量,而延迟则以毫秒计算。

为了完善这幅图画,应该补充的是,终端用户也作为 Actor 参与到这个模型中。这意味着,浏览器和移动应用程序可以直接对智能程序罐进行更新和查询操作。

此外,为互联网计算机量身定做的 Motoko 编程语言也受到了 Actor 模型的启发。