
✦
作者: David/Hacpy
2 协议架构

2.1 流动性层
2.1.1 单币池 (Pool)
单币池是协议的核心。用户提供的流动性,由单币池负责托管。单币池本身是无状态的,用户的状态由协议核心的代币池管理器聚合管理。这种方式使得代币池非常的简单,带来了极大的可扩展性,有利于新公链快速接入协议。同时,用户的操作可以在不同链上分开进行,极大提高了用户操作的灵活性。用户可以在 A 链向协议充值赚取收益,在 B 链上提现提取收益。单币池的主要特征:
资产 ID:不同公链的资产在协议中有唯一 ID,不同公链的同类资产使用相同 ID 统一管理(如 Evm 和 Optimism 上的 USDT)
用户充值:允许用户向单币池发起充值,单币池负责编码用户地址,资产地址,资产数量,再通过桥完成协议负载的投递,实现用户的入金操作
用户提现:允许用户向单币池发起提现,单币池负责编码用户地址,再通过桥完成协议负载的投递,实现用户的出金操作
用户充值和提现:允许用户在一笔交易中完成充值和提现操作,Dex 应用中的 Swap 操作可以看作一次充值 T1 资产,提现 T2 资产的操作
2.1.2 桥 (Bridge)
桥负责接收来自单币池的消息,并利用 Wormhole,Layerzero 跨链消息协议完成消息传输。桥只允许单币池和协议核心的调用。单币池接收用户出入金操作并编码地址和数量,为协议提供了用户出入金的安全保障。
桥是不同跨链消息协议的适配器。为了实现不同公链消息的通用性,协议将制定统一的消息规范。其中消息属性的类型满足数值统一转换成 64 位整数,地址统一转换成字节类型,其他数据也统一用字节类型表示。桥接收到单币池消息完成类型转换后,会调用不同的跨链消息协议接口完成消息传输。
2.1.3 单币池管理器 (PoolManage)
Sui 结算中心的单币池管理器是不同链上单币池的统一管理者,负责单币池的资产分类,资产流动性管理等。通过单币池管理器可以全局透视不同链上单币池的资产分布。单币池管理器拥有一个动态跨链费算法,通过不同链上的可用流动性和期望流动性,激励单币池流行性自动再平衡。如果单币池的可用流动性低于期望流动性,跨链费用变高。如果单币池的可用流动性高于期望流动性,跨链费用变低。
2.1.4 应用管理器 (AppManage)
Sui 结算中心的应用管理器负责管理协议支持的应用。Omni Protocol 引入新应用,需要通过应用管理器获取权限并分配应用 ID。协议中的每一个应用拥有唯一 ID。用户可以通过应用 ID 自主选择想要使用的应用,为协议提供流动性,也可以根据协议推荐算法进行自动选择,让用户拥有较低的学习成本和良好的用户体验。应用管理器负责应用的冻结和下架,用于应对紧急情况。应用管理器负责制定或更新不同公链应用层接口使用的消息库。
2.1.5 治理 (Governance)
治理是协议可持续发展的最重要模块之一。通过去中心化链上治理,协议能持续升级和优化,并为协议参与者带来给多收益。治理模块采用 DAOStack 的思想,通过治理代币和声誉系统在链上进行共同治理,治理范围包含整个协议。早期由开发团队代理治理,治理代币发行后,逐步过渡到去中心化治理,最终完全由社区进行治理。治理代币的发行规则将在不久的未来确定。
权限管理涉及整个协议的所有权限。单币池管理器相关的权限,需要单币池管理器通过治理才能引入新的资产,更改动态跨链费算法参数。应用管理器相关的权限,需要应用管理器通过治理才能引入新的应用,冻结应用。通过链上治理,让治理代币持有者共同发展完善协议生态。
2.2 应用层
2.2.1 全链借贷
以 Aave 为代表的借贷协议,提供了对少数流动性最好的代币的借贷能力。在去中心化的金融世界里,Aave 提供了无信任和无许可的良好特性。经过时间证明,去中心化的借贷能够运行的很好,但同时目前的借贷协议也存在大量未满足的需求。Aave 仅仅满足了流动性最好的资产借贷能力,对于其他资产的借贷有待进一步扩展。Aave 是单链模式的。虽然通过代币桥实现了跨链抵押借贷,但是需要各公链部署 Aave 协议,成本高且用户操作复杂。
利率模型
储备金:借贷协议中,极少数情况下借款人抵押品的价值可能会低于其负债的价值,在这种情况下,借款人的能力被称为无力偿还。无力偿还的借款人被清算后,会出现剩余的负债被认为是坏账。如果坏账出现累积,贷款人可能一下子都来提取资金以避免成为坏账的承担者。为了减少这种风险,遵循 Compound 的做法,协议提取一部分利息积累成储备金。如果出现坏账,利用储备金进行偿还,只要储备金的积累速度高于坏账,就能避免贷款人成为坏账的承担者。提取成为储备金的利息比例称为储备金系数,记做
。不同的资产有不同的
。
取值在 0 和 1 之间,可以通过治理来进行调整权衡。
资金利用率:资金利用率是当前借贷资金和供应资金的比例。 代表资金利用率,代表借贷资金,代表剩余资金。

借款利率:Aave 和 Compound 使用静态线性利率模型来决定协议的借贷成本。简单来说,当从池子里的借贷需求增加或者供应减少,利率上升,而当供应增加或者借贷需求减少,利率下降。
代表基础借款利率。
代表最佳资金利用率。
代表当前资金利用率低于最佳资金利用率时,利率与利用率的比例关系的常数。
代表当前资金利用率高于最佳资金利用率时,利率与利用率的比例关系的常数。
代表当前借款利率。

流动性利率:流动性利率是贷款人提供贷款应获利息的利率,资金来源于借款利率,用
表示。

累积借贷指数:表示随着时间的累积,借款人应付利息的累积指数。代表当前时间到上一次更新的间隔时间,
代表一年时间,单位为秒。用
表示。

累积流动性指数:表示随着时间的累积,贷款人应获利息的累积指数。代表当前时间到上一次更新的间隔时间,
代表一年时间,单位为秒。用
表示。

利率模型参考了目前 Aave 和 Compound 的成熟做法进行建模,不同的地方是储备金系数
所获得的利息会成为一个特殊的借款人,加入累积流动性指数从而自动获得利息,进一步增加协议抵御坏账风险的能力。
权益化代币 (oToken)
权益化代币 oToken 是存款人存款后收到的衍生代币。权益化代币 oToken 会随着
的增加而自动累积,增加的数量代表存款用户所获得的利息。
用来表示用户在 t 时刻拥有的 scaled oToken 的数量。用来表示用户存款 / 提现数量为的代币。
用来表示用户在 t 时刻 oToken 的数量。权益化代币 oToken 的数量由
和
共同决定,如下所示:
用户存款:

用户提现:

债务化代币 (dToken)
债务化代币 dToken 是借款人借款产生的债务。债务化代币 dToken 随着
的增加而自动累积,增加的数量代表借款用户所要付出的利息。
用来表示用户在 t 时刻拥有的 scaled dToken 的数量。用来表示用户借款 / 还款数量为的代币。
用来表示用户在 t 时刻 oToken 的数量。债务化代币 dToken 的数量由
和
共同决定,如下所示:
用户借款:

用户还款:

清算
清算是当用户的负债价值和抵押品价值不满协议规定的超额抵押要求时,用户抵押品会被清算来偿还用户负债。
风险调整:不同于传统借贷,仅仅考虑用户抵押品价值降低带来的坏账风险。协议同时考虑负债价值上升带来的风险,通过
( 大于 1) 将负债价值提升来抵御这种风险。
( 小于 1) 用于降低抵押品价值。当用户的抵押品价值
和负债价值
不满足如下公式时,会被清算。

抗 MEV 能力:在传统借贷中,清算的激励方式是将借款人的抵押品以固定百分比的折扣提供给清算人,通常在 5%-10% 之间。清算人是有利可图的,但是不抗 MEV,因为矿工和跑在前面的人可以窃取清算人的交易。为了限制这种形式的 MEV,协议允许流动性提供者有资格获取折扣,矿工和其他人没有折扣。
清算成本:在传统借贷中,清算通常需要利用外部流动资金来处理。这种方式的确定导致清算人不能以理想的价格进行清算。造成这种情况的原因包括滑点,价格波动,手续费等。协议的全链单币池,允许清算允许通过闪电贷的进行清算。清算人仅仅需要支付 Gas 成本。
软性清算:在传统借贷中,清算人一次性清算的债务是固定的,目前是 0.5,即清算人一次性允许清算人清算一半的债务。这种方式的缺点是如果较小的清算可以使债务恢复健康,那么清算一半的债务是过度的且不公平的。因此,本协议将采用软性清算模式,每次允许清算的债务不超过使违约者恢复正常所需的金额(加上一个额外的安全系数)。这意味着轻微违约的借款人清算的债务少于一半,严重违约的借款人超过一半。
资产隔离
为了满足长尾资产的借贷需求,对于长尾资产允许用户在隔离模式下进行借贷。不同于普通资产,用户必须进入隔离模式,长尾资产只能用作抵押品,只能借入稳定币资产且存在债务上限。通过债务上限可以对风险进行良好的控制,从而避免长尾资产的价格波动导致坏账急剧增多。
总的来说,全链借贷应用借鉴了 Aave 和 Compuond 协议中的成熟做法,同时针对它们的不足进行了相应的改进。相比 Aave 和 Compuond:对于用户来说,可以实现一键在 A 链上存入 B 链上借出操作,降低了用户的学习成本。对于清算人来说,降低了清算陈本,减少了 MEV。对于协议来说,提高了抗风险的能力。
2.2.2 PMM
PMM 是主动做市商算法,来源于 DODO 协议。相比于传统的 AMM,PMM 允许用户进行单边充提,非常契合我们协议的全链单币池。将 PMM 构建在全链单币池基础之上形成的新型 Dex 应用,用户将拥有更低的滑点,做市商将拥有更低的无偿损失。不可避免的 PMM 引入更高的算法复杂度,但是算法逻辑构建在 Sui 上会有效降低额外手续费消耗。
边际价格
边际价格是当前状态下的瞬时价格,用来表示多少个 quote token 可以买一个 base token。表示做市商的 base token 总充值,表示做市商的 quote token 总充值。B 表示当前资产池的 base token 总数量,Q 表示当前资产池的 quote token 总数量。是由预言机提供的市价,是一个在 0 到 1 范围内的参数。
$$P=\begin{cases}i*(1-k+k*\frac{B_0^2}{B^2}),B<B_0\\\frac{i}{(1-k+k*\frac{Q_0^2}{Q^2})},Q<Q_0\end{cases}$$从边际价格公式可以看出,k 为 0 时,边际价格恒等于预言机提供的市价,无滑点,资金利用率高。k 为 1 时,退化为传统的 AMM,必须按照当前价格比例同时冲提两种资产,滑点高,资金利用率低。当池子中的资产数量 B 和 Q 偏离和时会导致当前价格高于和低于外部价格,促使套利者套利,使得 B 和 Q 归目标数量和。值得注意的是,当系统处于不平衡状态时,预言机的价格变化会带来盈利或亏损。如当 base token 短缺且预言机价格 base token 上涨,多余的 quote token 价值低于 base token 回归到平衡状态的价值,做市商就会出现亏损。因此对于边际价格波动大的 base token 和 quote token,需要设置一个较大的 k,减少做市商出现亏损的风险。
平均价格
如下公式,对边际价格积分,可以得到平均价格 P。通过平均价格 P,可以得出交易者想买卖一定数量的 base token 和 quote token 时,需要支付的 token 数量。

回归目标
和是回归目标,将和 代入平均价格公式,求解二元一次方程可以得出

做市商充值 base token 时上涨 b,上涨幅度更大,因此做市商一旦充入资金,会导致所有 base token 做市商盈利,协议会提供充值奖励做市商,奖励主要是由让系统偏离平衡状态的交易者支付的,quote token 遵循同样的规则。反之,做市商提现,会让所有的做市商遭受亏损,因此提现需要支付一定的手续费。手续费等于这笔引起的做市商的亏损总和,并被分配给还未提现的做市商。
总的来说,新型 Dex 应用利用 PMM 算法,让用户可以在任意公链充值资产进行单边做市。同时灵活的参数配置,可以带来更低的滑点,减少无常损失,以及更优秀的用户体验。
2.2.3 NFT 借贷
NFT 借贷,是指借款人通过在平台将其 NFT 作为抵押品,去借出加密货币,由贷款人或平台为借款人提供资金流动性。NFT 借贷目前主要有三种模式,分别是点对点、点对池和抵押债仓。在点对点 NFT 借贷模式中,借款人与放款人直接进行匹配,借款人申请某个时期内的贷款,放款人提供不同的利率条件,最终由借款人选择利率条件完成借贷;在点对池 NFT 借贷模式中,用户可以将 NFT 的投资组合进行抵押,并以可变利率获得 USDT 等其他代币,这就类似于 Compound 借贷;在抵押债仓 NTF 借贷模式中,用户将一类 NFT 抵押品抵押创建保险库后,就可以铸造稳定币,这种模式来源于 MakerDAO,实现方式基本一致。目前 NFT 借贷中,NFTfi,BendDAO 和 X2Y2 占据了绝大部分市场。其中,NFTfi 和 X2Y2 是点对点借贷模式,BendDAO 是点对池借贷模式。点对点和点对池借贷从同质化代币借贷衍生而来,具有很多的相似之处。不同的地方在于,NFT 的唯一性,导致同类型的 NFT 价值是不同的,需要考量更复杂的使用场景。
3 协议合约
协议合约有三个部分,分别是单币池、消息协议桥、协议核心。
3.1 单币池合约
单币池需要对外提供充值的接口,以及对消息协议桥提供提现的接口,并且要对来自应用的消息进行打包再发送给桥。

3.2 消息协议桥合约
消息协议桥需要根据接入的消息协议进行兼容,只负责消息的传递。

协议核心分为 3 个部分,分别是消息处理、应用逻辑和治理。第一部分是消息处理,消息处理主要负责将消息进行解码并分发到相应的应用逻辑合约,同时也要负责将不同应用的消息进行编码发送给消息桥;第二部分是应用逻辑,每个应用逻辑都对应着相应的应用消息,并对协议的用户信息和单币池进行相应的更新;第三部分是治理,治理需要对协议全局的权限进行控制和管理,包括对 Bridge 的授权、消息类型的添加和应用的权限设置等。

全链流动性协议是一个可扩展的协议,旨在聚合所有链上的流动性,并将流动性提供给应用。应用可以通过协议使用来自任意链上的流动性。对于开发者,在协议上层构建应用,让开发者能将更多的精力用在应用的创新上,不再需要关注链和流动性不足的问题,大大降低了开发者的门槛,也给予个人开发者更多的机会;对于想要赚币的流动性提供者,他们拥有了提供流动性的统一入口,不再需要去针对每个应用学习,极大地减少了用户的学习成本,同时也降低了添加流动性的门槛。对于用户,他们拥有了全链的未来,因为基于协议的应用都是全链的,用于可以使用任意链上的应用进行交互,而不需要去换某条链上的代币才能使用该链上的应用。我相信,未来的 Web3 用户使用 Web3 应用一定不会困难,只需要在一个应用上就应该能操作大部分 DeFi 应用,最终做到 Web2 用户就是 Web3 用户。全链流动性协议的未来就是 Web3 的核心,这里聚集着 Web3 的大部分资金和应用,是 Web3 金融体系的基础。
5 总结
全链流动性协议提供了一个为应用聚合流动性的方式,同时也给应用提供了使用全链流动性的机会。基于协议构建的应用会自然而然地聚合流动性,也能顺其自然地使用全链流动性。当前的 DeFi 应用主要都还是在各自的链上各自发展,就算有跨链其效果也不是很大,流动性主要还是聚合在原链上。并且对于每个团队他们想要在其他链上进行发展都比较困难,不管是开发上还是资源上,最根本上的原因是没有一个统一的协议支持他们。假如把 DeFi 应用比作企业,链比作国家的话,那么现在的全链流动性协议就是进行经济全球化的基础,应用通过我们的全链流动性协议可以更好地在全链进行发展,而不仅是困在一条链上。全链流动性协议通过恰到好处的设计将流动性池进行了统一,为借贷等各种 DeFi 应用提供了全链的操作便利,解决了当下链与链之间的孤岛困境。迈出了全链时代坚实的一步,为全链时代的发展奠定了良好的基础。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
