今天,我们将探索EOS通信模型。我们将深入探讨不同类型的沟通模式和行动。
明天,我们将展示一个制造机器人的EOS智能合约示例,我们将看到如何在代码中使用EOS通信模型,并演示如何使用EOS智能合约,创造机器人。
首先,让我们从EOS智能合约的包含的内容开始。这将奠定基础。
EOS智能合约
每个EOS智能合约都有一组行动和类型。
Action表示一个单一的行动。您可以将其视为JavaScript中的函数或C#中的方法。
Type定义了在合同中需要使用到的内容和结构。大多数时候,我们将其用于数据表格。
EOSIO中的合约可以相互通信。它是通过基于消息的通信架构实现的。
EOS通信模型就是合约之间沟通的方式途径。
通信模型有两种类型:内联通信模型和延迟通信模型。
内联行动(内联通信模型)
内联行动是内联通信模型的一部分。如果了解它们,您将理解内联通信。
我们来看看下图:
用户从智能合约A执行Action(Action#1)。当Action开始执行时,它会触发另外两个Action - 来自智能合约B的Action#1.1和来自智能合约C的Action#1.2。一切都在当前交易中完成。
在当前事务中执行并与其完成相关的操作,称为内联行动。
重要的是,要记住内联行动是作为调用操作的一部分执行的。因此,它们与原始交易的范围和权限相同。这是他们将被执行的保证。如果其中一个Action(行动)失败,则整个事务将失败。
所以,你已经知道内联通信是什么了。
请求执行的Action作为调用操作的一部分,就是内联通信的示例。
延期行动(延期通信模式)
第二种类型是延迟通信模型。延迟通信模型的Action非常有趣,因为它们不在同一事务中执行。来看看下图:
我们有相同的交易流程。这里唯一的区别是从智能合约C执行的第二个动作不是内联行动而是延迟行动。延期行动,计划在将来某个时间运行。
根据区块生产者的判断,延迟的操作最好被安排在稍后的时间运行。但是不能100%保证一个延迟行动将被执行。
即使这些Action不属于同一个交易,它们也具有发送它们的合约的权限。
所以基本上,延迟通信,在概念上,采用发送Action通知到对等的事务的形式。
交易与行动
在明天的演示之前,让我们在看一些有趣的东西。
在EOSIO中,事务和行动(Action)之间存在差异。该行动表示单个操作,而事务是一个或多个操作的集合。
事务可以包含N个动作(Action)。但是,每个事务必须在30ms或更短的时间内执行。如果事务包含多个操作,并且这些操作的总和大于30毫秒,则整个事务将失败。
大家圣诞快乐!明天我们看代码,继续 _
原文链接:https://infinitexlabs.com/eos-communication-model/
谢谢阅读!欢迎点赞!