EOS通信模型(上)

e1fc4b4adf6b1045c45b3e5cbd02acb5.png

今天,我们将探索EOS通信模型。我们将深入探讨不同类型的沟通模式和行动。

明天,我们将展示一个制造机器人的EOS智能合约示例,我们将看到如何在代码中使用EOS通信模型,并演示如何使用EOS智能合约,创造机器人。

首先,让我们从EOS智能合约的包含的内容开始。这将奠定基础。

EOS智能合约

1

每个EOS智能合约都有一组行动和类型。

Action表示一个单一的行动。您可以将其视为JavaScript中的函数或C#中的方法。

Type定义了在合同中需要使用到的内容和结构。大多数时候,我们将其用于数据表格。

EOSIO中的合约可以相互通信。它是通过基于消息的通信架构实现的。

EOS通信模型就是合约之间沟通的方式途径。

通信模型有两种类型:内联通信模型和延迟通信模型。

内联行动(内联通信模型)

内联行动是内联通信模型的一部分。如果了解它们,您将理解内联通信。

我们来看看下图:

image

用户从智能合约A执行Action(Action#1)。当Action开始执行时,它会触发另外两个Action - 来自智能合约B的Action#1.1和来自智能合约C的Action#1.2。一切都在当前交易中完成。

在当前事务中执行并与其完成相关的操作,称为内联行动。

重要的是,要记住内联行动是作为调用操作的一部分执行的。因此,它们与原始交易的范围和权限相同。这是他们将被执行的保证。如果其中一个Action(行动)失败,则整个事务将失败。

所以,你已经知道内联通信是什么了。

请求执行的Action作为调用操作的一部分,就是内联通信的示例。

延期行动(延期通信模式)

第二种类型是延迟通信模型。延迟通信模型的Action非常有趣,因为它们不在同一事务中执行。来看看下图:

image

我们有相同的交易流程。这里唯一的区别是从智能合约C执行的第二个动作不是内联行动而是延迟行动。延期行动,计划在将来某个时间运行。

根据区块生产者的判断,延迟的操作最好被安排在稍后的时间运行。但是不能100%保证一个延迟行动将被执行。

即使这些Action不属于同一个交易,它们也具有发送它们的合约的权限。

所以基本上,延迟通信,在概念上,采用发送Action通知到对等的事务的形式。

交易与行动

在明天的演示之前,让我们在看一些有趣的东西。

在EOSIO中,事务和行动(Action)之间存在差异。该行动表示单个操作,而事务是一个或多个操作的集合。

image

事务可以包含N个动作(Action)。但是,每个事务必须在30ms或更短的时间内执行。如果事务包含多个操作,并且这些操作的总和大于30毫秒,则整个事务将失败。

大家圣诞快乐!明天我们看代码,继续 _

原文链接:https://infinitexlabs.com/eos-communication-model/

谢谢阅读!欢迎点赞!

你可能感兴趣的:(EOS通信模型(上))