IOHK官网博客:宝贝鱼费用-以原生代币计价的交易成本

image
原文来自IOHK Aggelos Kiayias,由卡尔达诺大使陈哲Anson翻译

我们引入一种新颖的机制,允许在Cardano上以用户定义的代币支付交易费用

在道格拉斯·亚当斯(Douglas Adams)的经典《银河系旅行者指南》中,宝贝鱼是一种生物,它可以让您听到翻译成自己语言的任何语言。尽管银河系中有无数种不同的语言,但这种通用翻译的幻想确保了有意义的交互。

在加密货币领域,智能合约平台可实现无数定制代币的开发。那么,我们是否可以使用您的首选代币与平台进行交互?如果只有一种“通行费”机制,可以将您使用的代币转换为平台发布交易所需的代币。

区块链系统中的常识表明,发布有效交易会给发送方带来费用。可没有这样的约束就没有什么可以阻止任何人通过小额交易使系统过载,从而使系统的容量饱和并使其无法使用。鉴于上述原则,一个常见的推论是,在任何支持用户定义代币的区块链系统中,均应禁止以此类代币支付交易费用。取而代之的是,交易应以平台的原生代币收取费用,所有参与者均认为该费用是有价值的。可以说这样的限制是不希望的。但是,如何避免随之而来的不可避免的脆弱性?

可能的艺术

众所周知,密码学和博弈论使不可能的事情成为可能。著名的例子包括通过公共渠道进行密钥交换,默克尔的谜题以及像维克瑞的拍卖那样诚实的拍卖是理性的事情。因此,在这种情况下也是如此。

首先,让我们回顾一下Cardano中原生资产​​的工作方式:可以根据铸造策略创建代币,并将代币与ada一起在分类账中本地处理。卡尔达诺的分类帐采用扩展的UTXO(EUTXO)模型,并且要发行有效交易,需要消耗一个或多个UTXO。卡尔达诺的UTXO可能不仅携带ada,而且实际上携带的代币组可以包含多个不同的代币,包括可替代的和不可替代的代币。这样,可以编写使用单个UTXO传输多个不同代币的交易。

分类账中的交易费用根据固定为分类账参数的函数以ada表示。卡尔达诺EUTXO模型的强大功能是,可以在发布有效交易之前准确预测其有效费用。这是其他分类帐(例如,以太坊中使用的基于帐户的模型)无法享受的独特功能。实际上,在后一种情况下,交易所需的费用可能会在交易结算期间发生变化,因为其他交易可能会影响两者之间的分类帐状态并影响处理交易所需的费用。

思想实验

让我们考虑以下思想实验,以帮助我们更加接近宝贝鱼收费的目标。想象一下,有可能发行一项声明为ada的负债,该负债等于交易发行人应支付的费用。这样的交易将不会被分类帐接受。但是,可以将其视为要求承担责任的公开报价。为什么有人会回应这样的提议?为了吸引响应,假设Cardano中已经存在代币捆绑概念,那么该交易可以向承担责任的任何人提供一定数量的代币。这表明ada和所提供的代币之间的现货交易是以一定的汇率进行的。现在考虑看到这种交易的区块生产者。区块生产者可以创建匹配的交易,吸收以ada覆盖它的负债,并索取所提供的代币。

通过适当地扩展分类账规则,具有负债的交易及其匹配交易成为分类账的整体所许可的代币组。由于承担了负债,因此两笔交易在整个ada中定价正确,因此就ada费用而言,这不会违反分类帐的簿记规则。结果,负有责任的交易得以解决,我们实现了我们的目标。用户可以提交以其拥有的任何代币定价的交易,并且,如果大宗商品生产者愿意接受它们进行现货交易,则可以将它们作为常规交易存入分类账中!

一个具体的例子

当然,该机制取决于拥有ada并愿意进行匹配交易的流动性提供者的存在。实际上,该机制为此类流动性提供者创造了市场。例如,权益池运营商(SPO)可以发布他们认为可以接受的特定代币的汇率。例如,SPO可以声明他们将接受代币X,其汇率为ada的3:1。因此,如果交易成本为0.16英镑,则该交易可以声明0.16英镑的负债以及提供0.48的tokenX。在Cardano的原生资产模型中,可以将其实现为携带具有以下规范(Ada→-0.16,tokenX→0.48)的令牌束的单个UTXO。请注意表示责任的负号。

现在假设SPO将要产生一个块。它从内存池中追回责任交易,并发出匹配的交易,使UTXO承担责任。匹配的交易将代币X的0.48转移到SPO拥有的新输出。结果块依次包含两个交易。匹配交易除了本身需要的费用外,还提供缺少的0.16英镑。实际上,可以将多个交易分批处理,并在一次匹配交易中支付其费用。

image

在SPO的Stacy的帮助下,Alice向Bob发送了9个类型为X的代币,B承担了Alice的交易责任并接收了类型为X的代币作为交换。 X和Ada之间的隐含汇率为3:1。

新的价值衡量标准

SPO完全选择上述过程。每个人都可以确定自己的政策和汇率,并决定更改他们当场接受的各种代币的汇率。此外,SPO之间无需就特定代币的价值达成协议。实际上,不同的SPO可以为同一代币提供不同的汇率,并且进行负债交易的用户可以提供与网络中发布的汇率的最小,平均或什至最大值相对应的代币数量。这样,在负债交易的结算时间和它们提供的代币的市场价值之间会产生自然的折衷。

这说明了原生资产,EUTXO模型以及以代币组合中的负值形式负债的简单而强大的调整如何能够容纳宝贝鱼费用,从而使用户能够以系统原生支持的任何代币对交易进行定价。它还显示了在这样的系统中成为SPO的独特优势。应该注意的是,SPO不一定是网络中提供负债的唯一实体。实际上,如果他们愿意,SPO可以很容易地与将发行匹配交易的外部流动性提供商合作。此外,第三方提供商也可以在网络上独立运行并发出匹配的交易。尽管如此,大块生产者仍将受益。 SPO总是可以提前进行匹配交易,如果愿意,可以用它们代替自己的交易。在这种情况下,前端交易是一个功能:它使SPO可以以他们偏爱用于其交易处理服务的代币支付。

在使用Mary硬分叉引入原生资产之后的某个时刻,可以在Cardano的基本分类规则中实现代币组合中负数量的机制。除了宝贝鱼费用外,该机制还允许其他各种有趣的应用程序,例如现货交易的原子交换,我们将在以后的博客文章中介绍。这再次证明了卡尔达诺的方法的力量及其支持用户和权益池运营商的多元化创业能力。

我感谢Manuel Chakravarty,Michael Peyton Jones,Nikos Karagiannidis,Chad Nester和Polina Vinogradova,他们对与宝贝鱼费用的概念及其在Cardano分类帐中的都有有益的讨论,建议和评论。我们也有一个涵盖该主题的视频白板版本。

原文链接:Babel fees - denominating transaction costs in native tokens - IOHK Blog