撰文:Michael Zhu
编译:老雅痞
拍卖在加密货币中无处不在。从 Maker 抵押品拍卖到 Flashbots 的密封投标区块空间拍卖和 OpenSea 上的 NFT 拍卖,拍卖适用于需要价格发现、流动性或稀缺资源分配的各种情况,无论是链上还是链下。
然而,与关于拍卖的大量(且不断增长的)学术研究并列,很明显,我们只是触及了这些机制可能在链上提供的功能的皮毛——例如,优化隐私、效率、买家盈余和其他关键设计目标。鉴于 2020 年 Curve 和 Sushiswap 之后自动做市商 (AMM) 设计的「大爆发」——以及第三代区块链的同时爆发——链上拍卖似乎已经成熟,可以出现类似的进化高潮。
尽管拍卖形式曾经被松散地采用(并受制于)区块链的技术限制,但我们现在开始看到更多特别适合区块链的新颖设计。遵循市场的传统,这篇文章是主要是想弥合拍卖理论与实践之间的差距:理论原则如何为决策实施提供信息?反过来,链上实现又如何为理论研究提供新的方向?尽管理论可以引导我们走向某种拍卖设计,但从理论角度分析实施细节本身可能会很有趣。
我们首先沿着三个轴比较四种典型的拍卖类型:信息披露、竞价策略和链上实施考虑。然后,我们将特别关注密封投标格式,深入研究使它们在链上相对未被探索的实施细节,并介绍我们的 Vickrey 拍卖的开源 Solidity 实施——我们希望其他人可以将其用作参考和为进一步实验奠定基础。
简要介绍一下拍卖形式
我们之前已经在与 a16z 加密研究合作伙伴(和哈佛商学院教授)Scott Kominers 和 a16z 加密研究负责人(和教授在哥伦比亚大学)Tim Roughgarden 讨论过。利用他们为加密协议提供建议的专业知识,他们在理论和实践中概述了拍卖类型和激励设计——包括市场清算价格和 Gas War 的细微差别。
但是为下面的实现设置一些背景材料:拍卖理论在历史上一直围绕着四种典型的拍卖类型,由 William Vickrey 于 1961 年首次分类,并在此处以单一商品拍卖的背景进行描述。
链下可用拍卖设计的快照。资料来源:维基百科
英式拍卖(升价):在英式或升价拍卖中,拍卖师以保留(最低)价格开标,投标人逐渐提高出价,直到只剩下一个愿意支付当前价格的投标人,此时点最后一个投标人获胜。这是流行文化和媒体中最常见的拍卖形式,通常是在出售古董、艺术品或未切割宝石的背景下。
荷兰式拍卖(降价):在荷兰式或降价拍卖中,开盘价按照规定的时间表递减。在荷兰式拍卖中,第一个出价的是获胜者,拍卖会立即结束。从历史上看,荷兰式拍卖的多单位版本经常用于出售大量保质期有限的商品,例如切花、鱼或烟草。最近,美国财政部引入了荷兰式证券拍卖(1974 年),2004 年谷歌首次公开募股时候,就是通过荷兰式拍卖出售了其股票。
密封投标第一价:每个投标人向拍卖师提交密封投标(例如在密封信封中)。提交所有出价后,拍卖师会私下阅读它们并宣布获胜者(出价最高的人)。然后获胜者支付他们出价的金额。当房产引起多个买家的兴趣时, 密封投标的第一价格拍卖通常用于房地产。
封标二价 ( 「维克里 Vickrey 拍卖」):维克里的同名拍卖与封标一价拍卖相同,只是这种拍卖类型中的获胜者支付第二高出价的价值。尽管具有有趣的理论特性,但 Vickrey 拍卖很少出现在链上(部分原因是难以实施密封投标)。
这四种拍卖类型具有不同的属性和动态,当转换为智能合约实现时会更加复杂(稍后我们将详细介绍)。
通过信息披露比较拍卖类型
比较每种拍卖类型的一种更自然的方法是通过投标可见性(公开投标与密封投标)。即使在所有其他条件相同的情况下,不断变化的出价可见度也会对拍卖的动态和结果产生深远影响。
英式和荷兰式拍卖是公开叫价拍卖,这意味着价格在上升或下降时以口头方式宣布,并且出价(包括其金额)对所有潜在买家都是公开的。然而,密封投标拍卖可能会采用几种不同的隐私方式:
- 最终公开:所有投标在拍卖结束后公开
- 公开价格:只公开中标价,不公开其他标价
- 完全保密:没有公开披露投标或中标价格
这些关于投标可见性的假设意味着拍卖在信息披露方面也有所不同。不同的拍卖形式在过程的不同阶段揭示了关于投标人估值(上限或下限)的不同数量的信息。在英式拍卖中,出价有效地确定了该投标人估值的下限。另一方面,在荷兰式拍卖中,当前价格可以解释为所有投标人估值的上限。密封投标拍卖只有在拍卖结束后才会披露信息。
值得注意的是,荷兰式拍卖可以兼具公开拍卖和密封拍卖的品质。单项荷兰式拍卖具有与公开价格密封投标拍卖类似的隐私属性(因为第一个投标获胜,所有其他较低的投标都被保密)。但正如我们稍后将看到的,当荷兰式拍卖在链上运行时,这些属性会发生显着变化。
共同价值和私人价值
检查公开投标和密封投标拍卖中私人和共同价值商品的销售情况 可以为比较这些格式提供另一个视角。在出售共同价值商品的拍卖中,该物品具有一些在所有投标人之间共享的内在价值,但投标人可能拥有关于该价值的不同或不完整的信息。在诺贝尔奖获得者行为经济学家 Richard Thaler 的共同价值的典型例子,一罐硬币正在拍卖;没有一个投标人知道罐子里物品的确切价值,但每个人都有自己的估计。在出售私人价值商品的拍卖中,每个投标人对拍卖的物品都有单独的价值,独立于他们的同行。以 Web3 为例,纯粹为了个人享受(无意 转售或期望未来效用)购买的 NFT 是一种私人价值商品,而来自清算 Maker 保险库的抵押品是一种共同价值商品。
同时,另一篇研究木材拍卖数据的论文的作者发现,与公开投标相比,密封投标拍卖「吸引了更多的小型投标人,将分配给这些投标人,并且还可以「产生更高的收入」。值得注意的是,作者发现这些结果可以通过私人价值模型来解释(私人价值根据木材拍卖的特性而变化,例如「投标人成本和合同安排的差异」),完全忽略了他们模型中的共同价值。这表明,在投标人动机、背景或拍品用途不同的情况下,卖方可能会从选择密封投标拍卖。
英式拍卖在共同价值占主导地位且价格发现是目标的情况下很有用——如前所述,投标人在投标进入时了解其他人如何评估该项目,就可以相应地调整自己的策略。在一项关于在线劳动力市场反向拍卖的研究中,作者发现,虽然密封投标拍卖吸引了更多投标,但公开投标拍卖的结果,导致这些买家获得更好的价格(或更多的买家盈余)。分析表明,这些差异「很大程度上取决于拍卖 IT 服务的共同价值(相对于私人价值)部分的相对重要性。」 换句话说,公开投标格式允许投标人动态地重新校准他们对服务价值的理解,这在拍卖开始时通常不清楚。(竞争)
在实践中,拍卖通常表现出共同价值和私人价值特征的结合。这些商品的特性之间的相互作用,以及拍卖形式如何(以及何时)显示信息对投标策略具有复杂的下游影响。这就引出了一个问题:我们能否将「简单」出价策略的概念正式化(我不需要过多考虑客户可能会如何出价);是否存在此类策略最佳的拍卖?
按出价策略比较拍卖类型
迄今为止,在四种典型的拍卖类型中,明显缺少对 Vickrey 拍卖的分析。细心的读者可能会对 Vickrey 拍卖的付款规则感到惊讶:获胜者支付第二 高的出价,而不是他们自己的出价。这似乎违反直觉。对比来说,英式拍卖以没有其他投标人愿意满足的最低出价结束;获胜者没有理由进一步出价,即使他们自己的估值要高得多。事实上,英式拍卖和 Vickrey 拍卖与荷兰拍卖和密封投标第一价格拍卖相比,具有很好的理论优势:主导策略激励相容性 (DSIC)。
粗略地说,这意味着每个投标人的效用最大化策略只是按照他们实际认为拍卖物品的价值来出价(在共同价值拍卖中,这只是物品的预期价值,以投标人的信息为条件)。为了更深入地了解,这些讲义可作为出色的入门读物。
在第一价拍卖中,没有这种优势竞价策略。投标人需要降低他们的出价以低于他们的估值,才能获得正效用。确切地说,他们需要考虑的是,在出价高于其他参与者的情况下,可以省下多少钱,这就是贝叶斯博弈。荷兰式拍卖在战略上是相似的。为了获得正效用,投标人必须等到价格低于其估值,但在该阈值之后等待多长时间是另一个贝叶斯博弈。也许更令人惊讶的是,所有四种拍卖类型的预期收入都是相同的(在某些假设下;参见定理 1)。
尽管 Vickrey 拍卖在理论上具有优势,但在实践中却并不常见。为什么会出现这种情况?在 The Lovely but Lonely Vickrey Auction 中,经济学家 Lawrence Ausubel 和 Paul Milgrom 提供了几种解释。作者指出,尽管在战略上是等效的,但英国拍卖在直觉上比 Vickrey 拍卖更容易让投标人推理。这种直觉在明显的策略证明机制中被形式化,这表明英国拍卖不仅是 DSIC,而且如实出价是「明显占优势」。
为了提供一个真实的例子,谷歌去年宣布,一个广告商竞标内容广告空间的项目 AdSense——将从第二价格拍卖转向第一价格拍卖,理由是简单并与其他数字广告保持一致生态系统。除了这些可用性考虑之外,像 AdSense 这样的平台在进行次价拍卖时,也采取了信任的立场:通过高估次高的出价,不诚实的拍卖师可能会从获胜者那里获得更多的报酬。
尽管这些担忧影响了采用,但 Vickrey 拍卖可以在扩展到新环境时找到新的用例。特别是公共区块链提供了一个可信的中立平台,可以帮助规避诸如不诚实的拍卖师等问题。这一点,再加上潜在链上应用的多样性,表明智能合约可以为 Vickrey 拍卖机制提供一个独特有效的测试平台。
通过实施考虑比较拍卖类型
相对于链下同行,将拍卖带到链上有时会带来新的挑战。在以下部分中,我们将探讨链上拍卖的当前格局以及每种拍卖类型的实施注意事项。
链上英式拍卖
今天,大多数链上拍卖都属于公开投标类别(即英式拍卖或荷兰拍卖)。这其中包括价格上涨的 OpenSea 拍卖、Maker 抵押品拍卖和 Zora Auction House 智能合约。
在 OpenSea 的底层,投标是对投标值进行编码的链下消息,由投标人签名。当潜在买家出价时,OpenSea UI 会向卖家和潜在投标人显示出价。然而,在 Maker 抵押品和 Zora 拍卖中,投标人提交交易以表明他们的投标;然后,投标交易在拍卖合同中托管投标人的抵押品。由于是一个未混淆的链上交易,投标本质上是公开的——任何人都可以通过查看拍卖合约的传入交易(无论是在公共内存池中,还是在它们被包含在链中时)来查看他们的投标人提供了什么)。
总体而言,当转化为智能合约时,英式拍卖动态仍然相对完整。一个显着的区别是,链上投标会产生 Gas 成本,该成本被计入实际的投标价值。由于汽油价格在拍卖的竞标期间波动,否则可能会获得最高报价的竞标者可能会因昂贵的 Gas 费而暂时被淘汰。
链上荷兰式拍卖
从促进 NFT 销售到重新平衡 TokenSet(以及各种衍生变体,如 Gradual Duction Auctions 和 Variable Rate GDA),链上荷兰式拍卖已经获得了巨大的牵引力。这种受欢迎程度是有充分理由的——简单的荷兰式拍卖作为智能合约相对容易实施,并且只需要两次链上交易(一次用于创建拍卖,一次用于第一次也是唯一一次出价)。最重要的是,它不会锁定投标人的资金,这与其他具有链上投标的拍卖不同。
链下荷兰式拍卖的动态取决于有效的即时竞价。荷兰式拍卖在出价一经宣布即告结束,不得再进行其他出价。然而,在链上进行时,在广播出价和将其包含在链中之间存在时间间隔,这可能会产生一些意想不到的后果。如果第一个出价被广播到公共内存池(而不是像 Flashbots 这样的私人交易池),它可能会引发一场 Gas War,其他潜在买家会广播出越来越高的 Gas 价格的出价。因此,当交易订单的链下升价拍卖超过荷兰式拍卖本身时,Gas 调整后的价格可能会突然上涨。
价格下降机制的时间依赖性也带来了其他缺点。假设一个连续的价格衰减函数,投标人必须在需要时准确地在线以特定价格投标,或者设置一个机器人(例如使用 Gelato Network)来投标。偶然(或恶意)与第一个投标的广播同时发生的网络拥塞可能会降低最终结算价格,从而损害卖方的收入。更糟糕的是,DoS 攻击可能会使合法的获胜者失去拍卖。
链上密封投标拍卖,由新的开源实施证明
利用链下投标(例如 OpenSea)的平台可以轻松实施密封投标拍卖,但他们需要信任拍卖师(a)不透露任何投标,(b)不审查任何投标,以及(c)正确确定拍卖的结果。理想情况下,智能合约将不信任地促进拍卖,同时保留一定程度的投标隐私。
为了演示,我们在 github.com/a16z/auction-zoo 上开源了一个超抵押密封投标拍卖的 Solidity 实现, 作为以 ETH 计价的单项 (ERC721) Vickrey 拍卖。我们在实施时考虑了密封投标拍卖智能合约的三个要求:
- 隐私:投标值应保持私密,这意味着观察者无法在投标进行时推断值。我们允许一些信息泄露(例如,揭示出价位于某个大区间内),但应该有合理程度的模糊。
- 审查阻力:这通常可以通过在链上发布投标来实现。
- 投标承诺:潜在买家不应退出投标。中标者应被锁定以支付结算价格,同样,卖方应被锁定以将物品出售给出价最高的人(可能受底价限制)。
首先,根据前两个要求,我们需要解决在链上发布私人投标的问题。承诺披露方案适用于「最终公开」的投标(当投标值在拍卖结束后公布时)。潜在买家可以在指定的投标期内向拍卖合同提供其投标的哈希承诺,而不是公开投标。稍后,在投标期结束后,每个潜在买家都会透露他们承诺的投标。当出价公布时,智能合约可以确定获胜者。在我们的实现中,哈希承诺被计算 keccak256(abi.encode(nonce, bidValue)) 并传递给函数。为了 Gas 效率,我们只存储这个散列的前 20 个字节。投标期结束后,用户调用和合同 commitBidrevealBid 检查提供的 nonce 并 bidValue 匹配存储的承诺。
当转向第三个要求时,我们发现了更多的复杂性。为确保获胜者付款,智能合约必须锁定投标。我们可以要求投标人发送 ETH 来担保他们的投标——注意该 commitBid 功能是支付的,并记录用户锁定了多少 ETH——但附加到这些交易的 ETH 是公开的,不可能被混淆;在「锁定」出价中,我们失去了隐私。
幸运的是,有一种简单的方法可以支持我们的想法:允许(并鼓励)投标人对其投标进行超额抵押,即锁定比投标价值本身所需的更多的 ETH。由于投标可能被超额抵押,观察者只能了解投标价值的上限。请注意,我们的功能允许用户在 commitBid 他们的交易中锁定任意数量的 ETH;拍卖结束时,任何超出部分都会退还给获胜者(如果抵押不足,则出价将被忽略)。
不幸的是,这种快速解决方案有一个缺点:过度抵押在隐私和资本效率之间产生了直接的权衡。锁定大量资金的机会成本可能超过边际,资金受限的投标人处于劣势。
也就是说,当我们继续探索不同的方法时,超额抵押是一个有用的基准。这种实现的演进在用户可能在大量拍卖中出价并且可以为每个拍卖重复使用抵押品的设置中可能特别有用。在这种情况下,抵押品自然会比任何特定拍卖中的出价大得多。
我们能找到更好的链上解决方案吗?尽管在某些情况下超额抵押可能是合适的,但资本效率和投标隐私之间的权衡可能会给投标人带来一个艰难的决定:锁定更多资金以获得更强的隐私,或者牺牲一些隐私来释放资金以供其他地方使用。但随着链上拍卖继续激增并建立在以前的工作之上,我们预计拍卖设计师将根据他们愿意做出的权衡来选择更多的格式和实现。
在本系列的下一部分中,我们将进一步深入并考虑以下问题:我们能否在不过度抵押的情况下保证强大的隐私?该存储库将继续作为我们在整个系列中讨论的想法的实用参考,并为进一步探索提供基础。我们希望您能跟随、分叉并尝试更多的实现,因为它们已被添加。
致谢:感谢 Joe Bonneau、Scott Kominers、Sonal Choksi 和 Tim Roughgarden 对本文提供的宝贵反馈;和 Noah Citron、Sam Ragsdale 和 Matt Gleason 审查代码。