从资源模型的角度看意图
在这篇博客中,我们探讨了意图是什么,并描述了在资源模型中实例化它们的两种具体方法。
目录
介绍
我们之前花了一些时间捕捉和形式化意图。这是关于意图的另一个笔记,现在是从资源模型的角度来看。
意图,一种抽象
在一个以意图为中心的协议(如 Anoma)中,用户通过向意图广播网络提交其意图来发起链状态变更。意图是用户偏好的表示,它们约束了发起的状态转换。它们在所有可能的满足状态转换中都是不变的,这意味着无论构建什么交易,用户的意图都将被满足。求解器是接收用户意图并将它们匹配在一起的参与者,构建平衡的交易。
*[图示:意图流程图]*
约束和偏好
意图有两个组成部分:约束和偏好。约束对应于必须满足的硬性要求,意图才会被视为满足;而偏好对应于如何更好地满足意图的额外信息,但它们不一定需要强制执行才能使意图被视为满足。在本篇博文中,我们只考虑表达约束的方式。
资源模型基础
本节简要介绍了资源模型组件。若想了解更多关于资源模型的信息,请查看这篇博客文章。
核心概念
资源:资源模型中的状态原子单位
资源逻辑:与每个资源相关联的谓词。它指定资源可以在何种条件下被创建和消耗。每个资源逻辑都属于某个应用程序
资源数量:与资源关联的数值。当资源被消耗时,其数量被视为正值,当资源被创建时,其数量被视为负值
资源类型:资源的等价性领域。由包含资源逻辑的资源组件计算得出
应用:以其逻辑和读写接口为特征的虚拟结构。与应用逻辑关联的资源构成应用的状态
事务:状态更新的表示。求解器构建事务以满足用户的意图。事务可以是平衡的和不平衡的
交易余额:本交易中消耗和创建的资源数量的总和,按每种资源类型计算
平衡交易:对于每种资源类型,其数量之和等于零的交易¹。只有平衡交易才能被执行
不平衡交易:一个不平衡的交易 🤷🏻♀️。不平衡交易会持续组合直到平衡,然后,如果有效,它们会被排序并执行
在下方的图中,矩形代表由虚线矩形(不平衡交易)组成的平衡交易。方块代表资源,灰色方块是同类资源。应用程序状态更新为秋季:绿色叶资源被消耗(正数量),橙色叶资源被创建(负数量)。
*[图示:资源模型示意图]*
意图是[不平衡]的交易吗?
不。为了向求解器传达其意图,用户将其初始不平衡交易发送到意图广播网络。交易约束可以表示为:
1. 用户发起的交易所暗示的部分状态转换
2. 一种资源逻辑直接或谓词必须返回 true,以便资源逻辑得到满足
3. 以我们尚未想到的其他方式(未在本博客文章中描述)
意图并不等同于[不平衡]交易。让我们更仔细地看看两种表达约束的方式,以便更好地理解原因。
两种表达约束的方式
I. 创建你想要的东西
当用户确切知道他们想要什么时,他们可以简单地生成一个不平衡²的交易,从而创建他们想要的资产。这个交易是不平衡的(因为用户想要创建的资产已经为用户生成,但并未实际交付给或被前一个所有者使用——而且前一个所有者甚至还未被知晓),而求解器的目标则是找到一个能够平衡给定交易的交易³。
*[图示:创建所需资产的流程]*
II. 描述你希望在谓词中看到的内容
在用户不知道确切想要什么⁴,而只知道所需资产的一些属性的情况下,他们可以在与交易资源中某些资源相关联的资源逻辑⁵中指定约束。
一个应用程序可能将其自身的逻辑的一部分包含一些约束执行逻辑(例如,这个无标度荣誉应用程序实现允许表达某些形式的意图),或者它可以与一个作为表达意图方式的"载体"应用程序结合使用。这种载体应用程序的逻辑是,其资源只有在它所携带的意图谓词得到满足时才能被消耗。用户会在初始交易中创建一个载体资源。在交易中消耗载体资源可以证明意图得到了满足。
比较
将约束表达为谓词允许指定所需资产必须具有的属性,而无需指定其他属性,但这需要应用程序在使用中或可用来表达约束的载体应用程序实现一定的功能。
另一方面,通过直接创建所需资产来表达约束不依赖于任何应用程序的约束表达逻辑,但要求用户确切地知道他们想要什么:种类、数量以及所有所需资源的所有其他资源组件。
结论
意图 = 偏好 + 约束。约束可以通过直接创建所需资产或通过谓词描述其属性来表示。在这两种情况下,资源机都确保意图得到满足。
---
脚注
¹ 交易余额与平衡值进行核对。为简化起见,我们可以假设平衡值设置为 0。
² 平衡交易对应于已满足的意图(同一个平衡交易可能满足多个意图),不平衡交易对应于尚未满足的意图。
³ 通常情况下,构成一个平衡交易的不平衡交易数量没有限制,但我们总能想象到所有其他预先组合的交易。
⁴ 当用户确切知道他们想要什么时也可以使用,但让我们假设他们不知道
⁵ 或者一个必须为资源逻辑满足的谓词,机制是相同的