AEA的兴起 — 解释自治经济代理(AEA)框架

Jason Wong
Fetch.ai
Published in
8 min readMay 11, 2021

介绍

自主经济代理(AEA)框架的概念是一个软件工具箱。开发人员和研究人员可以使用这些工具从组件中创建代理。当前版本是v1。

软件代理是代表人员或组织行事并完成目标或优化内部效用功能的计算机程序。

为此,代理通常需要连接到许多其他服务和与其他代理通信。

AEA是可以自我执行交易并与其他AEA,人员和组织使用其他形式交换经济价值的代理。 分布式账本技术(DLT)支持结算承诺(或智能合约)层的活动。

用编程术语来说,AEA由软件组件组成,初始化所用的数据以及它们所控制的钱包来建立。他们的钱包包含用于签署交易和消息的加密密钥对。

实际上,AEA框架不是第一个代理框架。文献中已经提出了许多框架,并且可以使用多种形式实现存在。最主要的是基于Java的Jade,以及几种基于Python的框架(例如1, 2, 3)。AEA框架与众不同之处在于,它是为真正去中心化考虑多方面利益相关方而构建的,并为DLT提供了支持,既面向开发人员,又面向代理用户。

在以下各节中,我将详细讨论该框架,其动机和应用。

为什么我们创建这个框架

AEA框架是根据Fetch.ai团队在2019年进行的交易代理竞赛(TAC)上所做的工作演变而来的。当时没有代理框架,Fetch.ai的大多数开发重点是分类帐和几个代理库。 但是在TAC上工作时,我们注意到基于代码库的方法不不能以结构化和可重用的方式构建代理。 因此,我们开始研究一种框架。该框架将使我们能够通过重复使用代码和封装功能来快速构建代理。

基于我自己在使用DjangoRuby on Rails等网页框架方面的经验,我渴望为开发代理复制类似的经验。 但是很明显与开发网页不同,代理程序开发更具挑战性 — 开发人员不仅为用户构建,他们还在构建代表用户的软件 — 因此,如果开发人员不仅要重用特定框架的插件,还要重用整个业务逻辑的组件或代理。

Fetch.ai除了实现DLT的多利益相关者多代理系统的愿景外,我个人感觉创建框架很有挑战性。该框架允许用户能够完全控制软件和运行,而无需依赖第三方,并且 该软件 是为他们工作。

幸运的是,我在Fetch.ai的同事Ali Hosseini和Marco Favorito同样感到兴奋并致力于开发框架。他们提供来自多智能代理系统(MAS)和(symbolic)人工智能(AI)的宝贵经验。 Fetch.ai的高级管理层也支持该想法,并为该想法的发展提供了必要的支持。

框架设计

框架基于异步訊息传递的概念,并使用类似演员模型的设计。 訊息是框架组件与代理之间进行通信的主要方式。也就是说,訊息(和事件不同)是针对收件人的,并且收件人可以在代理系统的外部或内部。

框架目标是模块化和重用性。 因此,它定义了构成代理的四个核心组件:

  • 技能 (Skills): 是框架可扩展性的核心焦点,因为它们实施业务逻辑以为AEA及其所有者带来经济价值。框架将技能容易使用。技能包括简单的逻辑条件或高级强化学习算法。
  • 连接器 (Connections): 包装SDKAPI,并提供网络,分类帐和其他服务的接口。 必要时,连接负责在框架特定协议与外部服务或第三方协议(例如HTTP)之间进行转换。
  • 协议 (Protocols): 定义代理到代理以及组件到组件之间的交互。它们包括定义消息的表示形式和定义消息如何编码以进行传输的序列化逻辑。对话定义了给定协议的消息序列规则。
  • 合约 (Contracts): 包装(使用)Fetch.ai和第三方分散式分类帐的智能合约。它们提供围绕智能合约的API或ABI及其二进制码的包装器。

开发人员开发某些程序包或重复使用其他开发的程序包,然后将它们放在AEA中。然后,框架使用程序包中的代码。与代码库不同,它是通过返向控制来运行和调用代码的框架。

当前框架以Python编程语言开发。 但是用其他语言开发也是可行的,而且重要的是,只要协议开发正确,它就可以与任何语言堆栈完全通用。有一个使用Golang开发的简单代理的演示

这四个组件一起可以用来在实体之间建立交互协议

框架还提供辅助工具和服务,包括命令行界面(CLI),从定义中生成协议代码的协议生成器,测试工具,框架包的注册表以及最终运行代理的桌面应用程序。

在设计中,框架不限于任何代理类型。 如下所述,它可以在广泛的应用领域中使用。

研究

尽管在研究社区中开发了数十年,代理框架和多代理系统(MAS)只能在有限的实际应用中使用(1, 2)。 我们希望AEA框架能够被更广泛的MAS社区采纳并做出贡献。

我们撰写了许多论文研究,向更广泛的MAS社区介绍我们的工作。 此外,我们也很幸运地从牛津大学的Michael WooldridgeAnisoara Calinescu等代理领域的杰出研究人员那里得到了建议。

我们欢迎AI研究界为框架进一步发展做出贡献,并帮助我们改善机器学习,强化学习和其他AI在框架中的作用。我们希望MAS研究社区将帮助我们改善代理人的互动(协议,技能)和其他框架。经济学家可以帮助我们为多方利益相关者代理实施其他机制。例如,诸如BrownieVyper之类web3工具的开发人员可能会帮助我们将其与框架集成。 我们邀请所有人尽其所能作出贡献!

互动的例子

如上所述,AEA可以与外部各种实体进行交互:

  • AEA <-> AEA

AEA使用公共互联网进行传输。代理通信网络允许AEA仅在知道其加密地址的情况下进行通信。ACN是一个多层消息传递系统,其核心是对等覆盖网络。对等方将地址映射到网络地址的分布式哈希表

消息是代理通信协议的一部分。 AEA框架允许开发人员使用现有协议,创建新协议并通过AEA注册中心与其他开发人员共享。

AEA可以进行的交互类型没有限制。一个常见的示例是两个AEA参与协商,从而在分类账上进行交易。

  • AEA <-> 服务器

AEA不仅限于与其他AEA通信。 AEA可以作为客户端连接到服务器,请求服务器提供任何服务。

一个常见的示例是AEA向公共API查询信息,例如 公共交通信息。

  • AEA <-> 客户

AEA还可以维护服务器将请求提供给其他客户端。例如,AEA可能运行服务器以允许其所有者通过网页客户端连接。

  • AEA <-> 区块链节点

在DLT中,AEA在区块链之外。他们可以查询分类帐状态,提交交易并使用智能合约。这使AEA可以利用区块链的属性,例如执行公共代码和不受监管交易。

应用领域

到现在为止,你应该想到多个应用领域。 这里介绍了一些具体的例子,但这不是一切。 涵盖所有这些应用领域是将不同经济实体之间的交互编码

  1. 自动化用户与区块链的互动

AEA可自动化用户与区块链的交互。好处是AEA可靠,有效地执行交互。一个很好的例子是Autonomous Hegician,它使用AEA来自动执行期权结算

2. 增强用户与区块链的互动

并非每个网页客户端可以连接区块链。 AEA可以比人类更快,更安全,并且使用更多(链上)协议与区块链进行交互。

想象一下,未来的钱包会自动检测到您拥有哪个网络并使用该网络来结算汽油费!

3. 针对开发人员的分类帐组件

对于开发人员而言,框架有许多分类帐功能。 它允许开发人员将插件重用于提供公共接口的特定分类帐,从而直接编写交叉分类帐应用程序。

4. 向区块链提供链外数据

区块链的交易系统依靠持续不断的外部数据。结果,预言机对许多链上应用程序起着重要作用。 AEA可用于开发预言机。由于AEA可以提供链下数据,因此它们是开发弹性预言机的理想框架。

5. 和不同的生态系统连接

AEA可以弥合断开的生态系统。 例如,它可以包装公共API以使用代理协议将数据提供给其他代理,也可以通过服务器分享信息。

6. 代理和代理的交互

AEA用于构建基于多方利益相关者代理的解决方案。 我们和其他团队研究的一些例子包括供应链交通去中心化制造市场

AEA也可以连接到第2层解决方案,例如 State Channels(例如,PerunState Channels)和汇总(例如,OptimismZkSync),以实现更快,更便宜的交易。

还记得当自动驾驶汽车使用加密技术来协商道路,燃料,Wifi的想法是科幻小说吗?

7. 简化协议开发

AEA协议生成器的副作用是,它允许开发人员轻松定义新的交互协议。 实际上,只要付出一些额外的努力,就可以使每个人都可以使用该工具,从而为该问题提供答案

如何使开发协议像开发网站一样容易?

8. 模拟多方利益相关者经济

尽管框架不是为模拟和代理建模而开发的,但确实可以在某些情况下。 特别是当不需要同步代理并且模拟应尽可能接近真实时,则可以将AEA框架用于此目的。多代理程序管理员使开发人员能够以编程和动态方式运行许多代理程序。

从上面的例子可以明显看出,代理框架是面向开发人员和最终用户的产品

对我有什么用?

  • 作为智能合约开发人员,您可以使用AEA自动执行合约和部署。 类似于Keeper,但不依赖于特定的代币或用例。
  • 作为面向代理的开发人员,您可以使用AEA框架在一个代码库中组合机器学习代码,代理到代理的通信,DLT支持的交易以及搜索和发现机制。
  • 一般而言,任何开发人员都可以利用框架基础结构(AEA注册中心)和工具来分发代码,重用现有组件(适用于分散式应用程序,也适用于旧应用程序)并开发可重用的新组件。
  • 作为研究人员,您可以为框架的发展做出贡献。 我们只是开头,有很多空白需要填补!

我们希望您也成为致力于机器学习,MAS和DLT领域技术前沿的研究人员和工程师社区的一部分。

现在开始使用我们的文档来构建您的第一个AEA? 并在推特GitHub — aeaGitHub — aea.dev和IRL上与我们联系。

--

--

Jason Wong
Fetch.ai
Writer for

Fetch.AI 中文官方社群,欢迎大家的参与!https://t.me/fetchai_cn | Wechat 中文官方社群 请加我 Wechat ID: jasonwong1911