1. 字节雪球爱好者社区首页
  2. 技术应用

OByte自治代理协议(Autonomous Agents)介绍

定义

智能合约从字节雪球发布的第一天就存在了。

在传统合约的基础上,智能合约赋与了人们根据某些条件而拥有协议中的特定权利。一个例子是当特定条件满足时,合约方有权从合约中取得锁定的所有金额,例如,特定条件包括:当另外一笔金额支付时、当货物收到时、当一个球队赢得比赛时。

与传统合约不同,智能合约由在网络中的所有节点强制执行,这些节点检查合约条件并且只有在所有条件满足时,会在账本上加一条新交易记录。这是一个完全独立的去中心化的模型,区别于任何政府的法制形式。

智能合约所能创造的应用例子有:

  • 条件支付
  • P2P预测市场
  • P2P保险

所有的这些应用都是基于P2P交互来创建的——两个自由平等合约方之间的自愿关系。

然而,有另外一种类型的应用没有被智能合约所覆盖:一个专用的、自治的、集中的的合约方与多个用户之间交互的应用程序,并且能严格的遵守公开的规则,这些规则是事先知道的并且永不可改变的。

这就是自治代理协议(Autonomous Agents,简称AA)。

自治代理以预定的程序进行工作。它的行为特性类似于一台接受投币的自动售货机,接受投币然后由键盘输入数据指令,然后做出相应的动作,例如冲一杯咖啡、播一首歌、或者其它已设定好的动作。

和自动售货机不同的是,自动售货机有一个管理员来设置或关闭它,而自治代理是真正自我治理的。它的程序自创建就存储在OByte账本上,并且永远不能被改变或移除。

对于终端用户来说,和自治代理交互就像和一台自动售货机打交道。用户从他们的OByte钱包里发送交易到自治代理的地址上,并且可以包含任何相关的额外数据(参数)。然后自治代理会把这笔交易当做一个输入,并且按照自身设计好的程序来执行。作为响应,自治代理可以执行许多的任务,例如发回另一种token给用户、发送数据到账本上、发送加密货币到另一个用户地址上,甚至发送加密货币和数据到另一个自治代理。

从一个开发者的角度来说,自治代理程序是一种用简单语言编写的程序,用于在分布式账本上上创建自治代理应用。自治代理的源码需要在分布式账本上部署,一旦部署好,它可供所有人使用。 并且,源代码就会开源,每个人都能看到自治代理会做什么。

与最适合用于P2P关系的智能合约不同,自治代理可以与多个用户进行交互。自治代理始终工作在区块链上,并随时准备接受请求和提供服务。

应用

这一特性极大地增加了开发人员可用的设计空间。通过编程,自治代理可以执行现实世界里的服务提供商可以提供的几乎任何操作,但区别在于:

  • 以完全自动化的方式;
  • 严格按照事先知道的程序,永远不能更改。与人类不同,我们可以信赖它们应该做的事情。

一些基于自治代理可以构建的应用程序包括:

  • 预测市场的流通股;
  • 期货合约;
  • 算法稳定的加密货币;
  • 合成资产;
  • 其他衍生品;
  • 抵押贷款;
  • 保证金交易;
  • 去中心化的交易所;
  • 去中心化的Oracle;
  • 支付渠道;
  • 游戏经济;
  • 做市商;
  • 自动管理投资组合;

以及许多我们甚至没有考虑到的其他应用程序,而不仅仅是在去中心化金融领域。

而且自治代理当然可以利用Obyte所具有的独特功能,例如协议级token、轻松访问由Oracles发布的数据,以及丰富的用户身份认证。

透明性

OByte智能合约以可读性而闻名。这使用户可以清楚地看到协议的条件,而无需破译复杂的术语。

那么自治代理呢?它们是用计算机语言编写的。虽然自治代理代码不复杂,并且在分布式账本上公开地发布,但它仍然是计算机程序,不能指望非开发人员理解它。

好消息是,根据我们一贯对广大用户的透明和开放原则,我们找到了另一种解决方案。当用户试图从OByte钱包发送交易时,钱包可以预先计算出用户交易的预期效果,并将该信息显示给用户。

OByte自治代理协议(Autonomous Agents)介绍

如上图所例,用户不需要阅读代码,不需要确定自治代理执行了多少代码,他会看到他感兴趣的内容——执行结果。

我们不知道任何其他加密项目能否将透明度提升到这个级别。到目前为止,用户被要求盲目地将钱汇入神秘的0x开头的地址,并信任应用程序开发人员的“智能合约”行为。

Oscript——自治代理的语言

自治代理是用Oscript编写的——一种专门为此协议而开发的新编程语言。Oscript语言非常简单,任何具有编程基础(如JavaScript,PHP,Java,C/C++等)经验的开发人员都不会有困难来掌握它。

该语言的一些功能包括:

  • 能方便地访问描述分布式账本状态的变量,收到的触发(请求,激活)交易的变量。这就是这种语言特有的特点。例如,可以使用以下变量:
  • 触发交易中收到的金额;
  • 触发交易中收到的数据;
  • 谁发送了触发交易;
  • 当前和其他自治代理的状态变量;
  • 数据订阅;
  • 认证;
  • 自己和其他自治代理的余额;
  • 有关资产的信息;
  • 算术运算;
  • 逻辑运算(AND,OR等);
  • 比较运算;
  • 字符串连接;
  • 数学函数;
  • 用于计算哈希和验证离线创建签名的加密函数;
  • 条件语句if/else;
  • 没有循环;
  • 没有函数(防止无限递归);
  • 标量和对象数据类型;
  • 从种子生成确定性伪随机数。

为了控制资源使用,比较昂贵的操作(例如,加密功能和数据库访问)的数量限制为每个自治代理100。在部署时会检查此限制,任何试图超出此限制的自治代理不会部署。这确保了部署的自治代理在运行时不会出现由于诸如“没有燃料”之类的资源限制而导致的失败。

操作和运行时资源计算没有复杂的价格机制,我们让事情保持简单,并且单独定义比较耗资源的操作数量的上限。

用户和自治代理支付的费用仍然是每1字节数据添加到DAG账本时,支付等价的1byte。

Oscript用于指定响应交易的内容,具体取决于触发事务和分布式账本的整体状态。反过来,响应交易可以向其他自治代理发送交易并触发其执行。但是,响应交易首先会写入分布式账本,这是初始自治代理在将控制权交给下一个自治代理之前完成的。这种处理请求的方式确保在任何时候都很容易表达程序的状态,因为在初始自治代理的执行过程中,另一个自治代理无法影响它。这样就没有重复执行的问题。

没有矿工——没有前端运行,没有矿工操纵

在传统区块链中,矿工可以操纵区块中的交易顺序,拒绝在区块中包含交易,或者将自己的交易插入其它交易以便在某些智能合约中获得不公平的优势,这是一个普遍的问题。非矿工用户也可以通过在看到其他(受害者)交易后支付更高的费用来尝试在区块中获得更好的位置。每个智能合约设计都必须仔细分析,以应对此类威胁和应对措施。这使得智能合约设计在区块链上具有挑战性并且容易出错。

OByte没有区块或矿工,这些问题根本就不存在。交易按照在DAG上的顺序进行处理,不能收取任何费用以更改交易。用户只需将他们的交易添加到DAG本身,没有任何权限可以决定包含或不包含交易。

向自治代理发送支付交易将在该交易变得稳定之后执行自治代理的代码(以确定它不是双花交易)。每一个全节点自己执行自治代理代码,并将生成的响应交易添加到其账本中。它不需要将响应交易广播给其他节点,因为所有的节点遵循完全相同的规则并且必须到达完全相同的结果。结果仅由规则决定,不需要投票或竞争证明(proof-of-competitions, POC)。

自治代理 VS 智能合约

虽然自治代理与智能合约不同,但它们之间仍有很多共同之处。

对于智能合约来说,两方或多方之间存在(智能)合同,对于(自治)代理来说,它是交互的一方。

智能合约的当事人是从合同中获得权利的平等自由参与体(或代表并完全控制平等自由参与体的软件代理人),自治代理是没有自由意志的服务提供者。用户和自治代理之间的关系在设计上是不相等的——所有权利都属于用户,自治代理只是遵循他们的命令。

智能合约和自治代理之间有什么共同之处?它们都有与之相关的规则,规则以机器可读的形式编写,供所有人查看,规则永远不会改变,规则由网络上所有全节点来执行且没有人有权限修改。

展望

这将是OByte协议的第一次重大升级,我们花了大约9个月的时间来开发。我们通常对协议升级保守,因为它们可能破坏现有的应用程序,我们认为技术栈越底层,就应该越稳定。协议是基础层,应该是最稳定的。

虽然当前的更新应该不会影响现有的应用,但仍然可能存在错误,我们希望新版本在主网络上发布之前进行大量测试。

所以目前我们只在测试网上发布升级。

我们同时推出了一个开发者有奖竞赛,邀请开发人员创建自治代理,在测试网上运行它们,探索可能潜伏着bug的各种情况,这样在主网上启动升级的时候,就会拥有经过大量实践和测试过的自治代理。

我们预计此测试和开发将需要2-4个月。

现在,如果您是开发人员并且想要尝试自治代理,请访问testnet.oscript.org,在易于使用的浏览器编辑器Oscript中编写您的第一个自治代理,并将其部署到测试网上!我们的开发者网站上有许多可供学习和开始的示例以及入门指南。对了,您还需要个测试钱包

OByte自治代理协议(Autonomous Agents)介绍

本文转载自Medium,文中观点不代表字节雪球爱好者社区立场。

发表评论

登录后才能评论

联系我们

加入ByteBall技术群请添加

QR code