这篇文章将尝试详解 Band 协议的经济模型设计,包括它的数据和币都是如何流动的,以及它的双代币模型是如何围绕数据提供者和使用者进行治理和激励的。

作者:DeFi 研究员 Ivy

Band 是一个为区块链上的去中心化应用提供预言机服务的协议。我们知道区块链,尤其是公链,是一个封闭( Self-Contained)的系统,即它并没有能力去主动的读取链外的信息,链上的去中心化应用也就因此无法获取真实世界的数据,很多的应用也就无法实现。

Band 这样的预言机协议就是要解决这个问题。Band 协议通过将多个数据提供方链接到同一个网络当中,用去中心化的方式实现了让链上的智能合约能过读取链下的数据信息这一目标,为链上的 DApp (去中心化应用)和 DeFi (去中心化金融应用)等带来了更多的可能性。

但 Band 并不是市场上唯一的一个预言机项目。在 Band 之前已经有例如 ChainLink 和 Oraclize 等项目,尝试想要实现类似的功能。大家的实现方法其实也非常类似,即通过将多个数据提供方的数据进行可信度加权后再求个平均值,以此来得到一个相对可信的数据供链上使用。在最火的 DeFi 项目 MakerDAO (去中心化稳定币)中,也是使用了类似方法来获得链下的美元价格数据的。

Band 的不同之处在于它的经济模型。我们知道在以太坊这种接近图灵完备的智能合约平台上,实现将多个数据源进行整理加权的逻辑并不复杂。通过一些工程设计将这一功能打包并做成给其他 DApp 提供服务的库函数也并不是什么难事。虽然在早期曾出现过一些安全问题,不过以太坊在经过一段时间的发展,在 SafeMath 等安全库的帮助下,工程实现方面已经没有任何难点。于是,预言机的难点便主要集中在了如何通过经济模型设计实现真正可靠的去中心化上

这篇文章将尝试详解 Band 协议的经济模型设计,包括它的数据和币都是如何流动的,以及它的双代币模型是如何围绕数据提供者和使用者进行治理和激励的。

数据如何流动?

Band 协议的定位是一个 Layer 2 协议,也就是说它会依赖于某个拥有智能合约功能的 Layer 1 公链平台来实现其功能。从官网信息来看,Band 协议虽不会局限于仅兼容某个公链,但目前还是只在以太坊的测试网 Kovan 上进行了部署。未来 Band 应该会兼容更多的公链,支持更多的平台。

作为一个 Layer 2 协议,Band 由链上和链下两部分组成。链上的合约主要负责代币的发行和托管,以及对预言机数据进行验签这两部分工作。而链下的协议则包含了一个由数据提供者们所组成的 P2P 网络。这个网络中的每个节点都是为某个数据集提供数据的供应商。对于每一个数据集来说,都会有多个数据供应节点存在,为该数据集提供数据。而只有当某个数据经过了数据供应商网络中的 2/3 的节点进行签名后,这个数据才会被发送到链上,提供给链上应用

同时,在链下的网络中还存在着一个特殊的节点,即协调者(Coordinator Node)。协调者节点将负责从所有的数据提供商那里收集数据。在协调者收到来自链上的数据请求后,它会将该请求解析并转发到所有相关的数据提供商节点那里,然后所有的数据提供商们会按照请求返回相应的数据,发送给这个协调者节点。接着,协调者节点将对这些数据进行合并处理(Aggregation),并将合并处理后的数据再次发送到各个数据提供节点那里,由它们进行签名。最后,协调者节点需要再次从各个数据提供商节点收集签名后的最终数据,并进行验签来确认签名节点数是否达到 2/3 以上。成功之后,协调者会将数据发送到链上的数据集智能合约中。链上的其他智能合约就能够从该数据集智能合约中读取到最新的链外数据了。

在 Band 协议中,数据的合并处理并没有一个固定的算法。这是因为对于每一种数据集来说,可能会有不同的数据类型或者有着不同的意义。比如有的数据可能需要寻找中位数,有的可能需要众数。所以 Band 在这里并没有提供一个统一的算法,为的就是让各个数据集开发者能够对其进行灵活定义。

双代币模型

在 Band 协议的经济模型中存在着两种代币。一种是每个数据集自己的代币,即 Dataset Token;还有一个是 Band 的协议的原生代币,即 BAND Token。

首先对于每个数据集来说,由于各个数据集之间互相独立并且可能会有着完全不一样的逻辑,所以理应存在一个属于每个数据集自己的 Token,在各自的系统中起到价值流转的作用。值得注意的是,这种多代币的设计在除 Band 协议之外的预言机项目中还从未出现过。

而 Band 协议本身拥有的原生代币 BAND,本质上是充当了各个数据集 Token 之间进行兑换时的一个流动性工具(Liqudation Instrument)。对于开发者或数据提供者来说,如果想获得某个数据集的 Token,除了可以通过在市场上去购买该代币以外,还可以通过在链上一个基于联合曲线模型的流动性合约中质押 BAND 代币来置换出不同数据集的 Token。

那么什么是联合曲线模型呢?它又在 Band 协议中起到了哪些作用呢?

联合曲线模型

简单来说,联合曲线(Bonding Curve)模型是一个可以在没有交易对手方的情况下,为某个交易对提供流动性的资金池模型。这个模型最早是由 Simon de la Rouviere 所 提出 的。其本身是属于 Simon 想要构造的一个 Curation Market 应用中的组件,用于为某个拥有共同的目标群体实现更有效率的价值流转。在被提出之后,联合曲线模型开始相继被其他的应用所使用,并且越玩越巧妙。

那么什么是联合曲线模型呢?在普通的市场里面,多个买方和卖方之间会通过沟通和撮合进行价格发现,来为某个交易对提供一个市场汇率。在该市场中进行挂单买卖操作的交易方,也会为该市场提供必要的流动性。但在某些情况下,由于市场参与人数较少,常常会出现流动性不足的问题。联合曲线模型就可以为这个问题提供解决方案。

我们可以假设链上有一个资金池子,这个池子里面预先存了若干个 Token A。当小明想要买 Token A 时,他就需要往池子里投入一些 Token X 来置换出一定数量的 Token A。我们假设一开始的汇率是 1 比 1,即小明用 1 个 Token X 就可以换出一个 Token A。在完成兑换以后,市场上的 Token A 数量从 0 个增加为 1 个。这时系统就会对两种 Token 之间的汇率进行调整,比如调整为 1 比 2。也就是说这时如果小明想要再从池子里购买出一个 Token A,他就要付出两个 Token X。在这个过程中我们可以发现,随着市场上的 Token A 的供应量的增加,Token A 兑 Token X 之间的汇率在逐渐上升。这就是一个简单的联合曲线模型。

所谓联合曲线,其实就是一个指定了交易对的汇率与其币的供应量之间的关系的曲线。当市场上的币的供应量少时,购买这个币所需要的花费就相对便宜;随着交易的进行,市场上的币的供应量增加,购买该币所需要的单位成本就会自然增多。

在 Band 协议这个用例中,每个数据集就有着自己的一个资金池子和一条对应的价格 / 供应量曲线(通过链上智能合约实现)。池子中预先存放该数据集对应的代币,开发者和数据提供者们可以使用 BAND 代币从每个对应的池子中购买相应的数据集代币。而购买的价格会随着每个数据集代币的供应量的变化,基于预先规定的联合曲线由系统作出相应的调整。

由于 Band 协议中每个数据集都会有其自己的代币,这种有多个代币存在的系统必然会存在缺少流动性的问题。而 Band 使用联合曲线模型巧妙的解决了这个问题,让所有人都可以在没有对手方的情况下以近似市场价的汇率换取需要的数据集代币。同时,联合曲线模型还有另外一个好处,即由于基于曲线购买,早期购买的价格会相对便宜,这就会对代币的早期购买者提供一定程度的激励,对每个数据集各自生态的建设和发展有着积极的作用。

代币如何流动?

讲明白了双代币模型,我们再来看看代币是如何在 Band 的系统中流通,并且对于系统中的各个参与者起到激励作用的。在 Band 协议的整个经济模型中有这么几个角色:

  • 数据提供者:这部分用户是预言机数据的产生者,负责将真实世界中的数据发送到区块链上。
  • 数据消费者:这部分用户会在链上使用预言机数据。它们可能是应用的开发者,也可能是是使用去中心化应用的用户。
  • 代币持有者:这部分用户会持有 BAND 代币或者是某个数据集的代币。他们既享有获取代币收益的权利,也肩负着治理系统并维持系统安全的责任。

首先对于数据消费者来说,你可以在完全不接触 Band 协议中的任何一种代币的情况下,完成数据的消费。这也是 Band 协议与绝大多数其他预言机协议完全不同的地方,即 Band 支持数据消费者们使用 Layer 1 公链的原生代币来支付预言机数据的查询费用。对于应用开发者和使用者来说,他们并不需要为了使用集成了 Band 协议的应用而花费额外的步骤去购买 Band 系统中的代币,这就大大地提升了开发和使用体验。

Band 的经济模型主要围绕数据提供者和代币持有者这两个角色,使用各个数据集的 Token 进行构建。每种数据集的 Token 简单来说都有两个作用:治理和激励。

Band 协议中治理的目的是保证数据的安全和可靠,即解决“谁能提供数据”这个根本问题。在 Band 协议中,如果小明想要成为某个数据集的数据提供者,获得提供数据的权利,他就必须先要在链上抵押一定数量的该数据集 Token。而对于除小明以外的其他持币者来说,他们也可以通过为小明抵押该数据集的代币来增加小明的“票数”。Band 协议会对每个数据集中的所有数据提供者进行排名,最终只有排名前几的节点才能成为有效的数据提供者(Active Providers)。

在每次数据查询操作过后,Band 协议会对数据提供者和为他们投票的持币者们,使用该数据集的代币进行激励。其中会有较大一部分的代币被奖励给数据提供者本身,剩余的代币将按照其投票者投票时所付出的代币的比例进行分配。

所有的数据提供者和投了票的持币者们,随时都可以从系统中取回其抵押的代币和其通过抵押代币所获得的所有奖励代币。(但需要注意的是,为了保障投票者们的利益,数据提供者需要在提出退币申请后的一段时间之后才能成功完成退币)在退币完成之后,Band 系统会重新计算该数据集的所有数据提供者的排名,并选出新的有效数据提供者,为该数据集提供数据。

除了数据集 Token,Band 协议的原生 Token BAND 也有着一定的治理功能。在未来的 Band 协议的版本当中,持币者们将可以使用 BAND 代币来为协议升级作出投票,这有些类似于 ZRX 代币在 0x 协议中的作用。另外,BAND 持币者们还将负责选择数据集。虽然第一批 Band 上的数据集将由 Band 基金会选出,但在未来 BAND 的持币者们将会担起这一职责,并为 Band 协议中有潜力发展起来的新数据集们进行投票。

总结

作为一个预言机协议,Band 协议的经济模型有很多与众不同的地方:

  • 双代币模型让每个使用 Band 协议的数据集都可以有其自己的 Token,对其自身生态的参与者进行激励。
  • 为了解决每种数据集 Token 的价格发现和流动性的问题,Band 协议采用了联合曲线模型让开发者们可以在没有对手方的情况下完成代币兑换,大大提升了市场效率。
  • Band 围绕数据的提供者和其他持币者们设计了一套有效的激励模型,确保所有参与者们的利益对齐,保证了协议的安全性。

预言机之间的竞争是经济模型上的竞争。因此,对于拥有一个完整的经济模型 Band 协议,拥有非常好的优势去激励以及管理数据提供商,我非常看好未来 Band 预言机可以办演好 DeFi 与数据提供商之间的推进器角色。