木星链 木星链
Ctrl+D收藏木星链
首页 > BNB > 正文

CTI:隐藏在众目睽睽之下, Solidity 实现密封投标拍卖

作者:

时间:1900/1/1 0:00:00

编者注:这篇文章是我们正在进行的web3拍卖系列的一部分。第一部分是对拍卖设计的概述,以及在无需许可的区块链背景下机制设计的具体技术挑战。第二部分是关于清理市场和避免GAS战争的文章。第三部分分享了对典型拍卖类型的概述、理论如何转化为实践的研究,以及我们对一个新颖的、密封投标的Vickrey拍卖的首次实施。

链上拍卖是web3中最有趣设计空间之一——从NFT销售到抵押品拍卖——产生了新的实现和研究景观。虽然拍卖机制的设计已经存在了几个世纪,并在最近几十年随着网络和电子商务的出现而不断发展,但我们现在才将这些方法应用于智能合约。

我们也开始看到更多区块链原生的拍卖设计,包括我们对Vickrey拍卖的开源Solidity实现,以及来自社区的一些有趣的发展。在我们的第一个设计中,我们在隐私和资本效率之间做了一个权衡。我们使用了超额抵押,以便从获胜的投标人那里强制付款,而不通过抵押品的数量揭示精确的投标价值。通过锁定更多的资本,你可以在潜在的更大的机会成本下获得更多的隐私。但是,如果我们可以在没有过度抵押的情况下拥有投标隐私呢?

这篇文章介绍了一种新的拍卖设计,我们称之为"SneakyAuction",它结合了CREATE2操作码和状态证明来保证投标隐私,而不要求投标人锁定超过要求的抵押物。我们首先分解了它的工作原理,然后在气体成本、用户体验和隐私方面与我们之前的实现进行比较。我们还将该实现添加到GitHub上的AuctionZoo仓库中,这样你就可以分叉它,在它的基础上构建,并在我们深入研究更多的机制时跟随我们;与此同时,更多关于它如何工作以及与我们过去的设计进行比较的信息如下。

ENS推出AI机器人NickGPT以解答与ENS相关的问题:6月5日消息,ENS 宣布推出 AI 机器人NickGPT,目前已部署至 Discord。NickGPT 是基于自定义自然语言模型开发的NickGPT受过ENS文档训练,可以回答用户关于ENS的相关问题。[2023/6/5 21:17:17]

工作原理:使用create2提交投标

要在链上创建一个"最终公开"的密封投标拍卖,需要满足两个要求。首先,出价需要在投标期间保密,然后在投标结束时才公开;承诺-公开方案可以在链上复制这种机制。第二个要求是抵押:出价必须有抵押物支持,以确保赢家有足够的资金来履行他们的承诺。

在我们的超额抵押的Vickrey实现中,潜在的买家通过调用commitBid函数,提供哈希承诺和要托管的抵押物来出价。这种方法满足了要求,但也有一些缺点。尽管出价本身被哈希值所隐藏,但commitBid交易公开并立即表明了用户的意图。"我想在这个拍卖会上出价,这是我出价的抵押品。"如果没有过度抵押,意图和抵押品的可见性会暴露出投标价值。但是,如果我们能够混淆交易的意图,我们也许能够在不依赖过度抵押的情况下实现投标隐私。

在EIP-1014中引入并包含在君士坦丁堡硬分叉中的CREATE2操作码为我们提供了一种方法来做到这一点。CREATE和CREATE2操作码都是用来部署智能合约的,但它们在计算部署地址的方式上有所不同。CREATE部署地址是作为部署者地址和nonce的哈希值计算的;另一方面,CREATE2部署地址是作为合约的字节码和构造器参数、任意盐和部署者地址的哈希值计算的。

报告:过去五年美国每年失去在区块链开发商市场中2%份额:金色财经报道,风险投资公司Electric Capital发布的一份研究报告显示,在过去五年中,美国每年失去其在区块链开发商市场中2%的份额,跌至29%的市场份额。欧洲目前也拥有29%的市场份额,亚洲占13%。数据显示,目前,超过23,343名开源软件工程师负责价值超过1万亿美元的市场。美国的市场份额已经输给了印度和乌克兰等新兴市场。该报告估计,到2030年,可以创造100万个与区块链相关的新开源开发人员工作岗位,美国必须迅速采取行动,以保持在金融市场和相关技术领域的领先地位。[2023/3/30 13:34:11]

CREATE2经常被用于工厂模式,将合约部署到可预测的地址--例如,UniswapV3PoolDeployer合约使用CREATE2将每个池子的合约部署到一个地址,这个地址是代币对和收费层的函数。CREATE2也可用于部署可升级的智能合约,最明显的是在变质合约模式中。

对我们来说更重要的是,CREATE2的部署地址可以作为对输入字节码和参数定义的任何行为的散列承诺。如果构造器参数编码了一个投标,那么CREATE2地址可以作为一个投标承诺。

币安期权将上线于9月29日到期的BTCUSDT和ETHUSDT季度期权:3月21日消息,据官方公告,币安期权将于3月23日16:00上线于9月29日到期的BTCUSDT和ETHUSDT季度期权,该期权为欧式期权合约,此后新的BTCUSDT和ETHUSDT季度期权合约将于每个季度的最后一个星期四上市。[2023/3/21 13:17:07]

计算Solidity中金库的地址

此外,合同本身可以作为一个保险库——投标人可以在合同部署之前向CREATE2的金库地址发送ETH,以抵押和承诺他们的投标,只需一次简单的转账由于竞标者没有金库地址的私钥,抵押物被锁定,直到竞标被公开,这时SneakyAuction合约部署并解锁金库。

EVM区块头的组成部分。来源:

https://ethereum.stackexchange.com/a/6414

在我们的实现中,拍卖的第一个出价会存储上一个区块的区块链。该交易有效地将拍卖从投标阶段过渡到揭示阶段--所有随后揭示的投标必须提供Merkle证明,证明他们的金库在该区块之前已经有足够的抵押。请注意,第一次揭示出价交易最好是通过私人交易池提交;否则,观察mempool的竞标者可以提前进行交易并在最后一刻出价。

伊朗比特币倡导者Ziya Sadr被伊朗安全部队逮捕:金色财经报道,据多个消息来源称,伊朗的比特币倡导者Ziya Sadr上个月被伊朗安全部队逮捕。自称是Sadr朋友的Nima Yazdanmehr表示,逮捕发生在9月19日的德黑兰街头,Sadr还没有被释放。Sadr是一个受欢迎的比特币教育者和Youtuber,也是该技术的倡导者。他将比特币内容翻译成波斯语,并推广以隐私为中心的比特币个人交易方法。据Yazdanmehr报道,Sadr目前被关押在Fashafouyeh监狱,并与他的家人和密友保持联系。

目前还不知道伊朗政府逮捕Sadr是否与他的比特币主张有关。多个消息来源表示,Sadr在被捕时没有参加伊朗近期的抗议活动。(CoinDesk)[2022/10/10 12:51:33]

LibBalanceProof

为了最大限度地降低投标人的成本,我们编写了一个GAS优化库来验证链上的余额证明,该库建立在Aragon团队编写的合同,以及HamdiAllam的链上RLP解码的合同。我们的库使用了一些低级技巧和优化,这些技巧和优化依赖于状态trie的特殊结构,所以它不能用于通用的Merkle-Patriciatrie证明。作为回报,它允许SneakyAuction合约在不到3万个气体中验证金库的过去余额。

我们还为eth_getProofRPC方法写了一个轻量级的JavaScript包装器。给定一个地址和区块号码,它返回余额证明和RLP序列化的区块头,可以用来显示投标。

Polygon 部署自定义区块链扩展解决方案“Avail”:6月29日消息,Polygon 已经部署了自定义区块链扩展解决方案“Avail” ,供开发人员在 Polygon 主链和其他区块链上启动独特的区块链应用程序。新产品将允许开发人员“脱链”访问区块链数据,这意味着他们不需要不断检查来自网络的数据以查找部署在 Polygon 上的应用程序。Avail可以部署在任何与以太坊虚拟机 (EVM) 兼容的区块链上,基于 Avail 构建的应用程序将使开发人员能够更新、分叉和更改其区块链处理执行的方式,这对于可能需要修补错误、试验执行或只是减少对外部链依赖的 DeFi 和游戏开发人员来说至关重要。

此前4月份,Polygon曾宣布将于第二季度推出可拓展性区块链网络Avail测试网。[2022/6/29 1:40:05]

它是如何比较的

让我们把我们新的SneakyAuction方法与我们上次发布的OverCollateralizedAuction设计进行比较,沿着技术设计者或用户关心的几个关键维度:GAS成本、用户体验和隐私。

GAS成本

SneakyAuction的revealBid、endAuction和withdrawCollateral功能需要部署SneakyVault,所以它们比OverCollateralizedAuction的对应功能更昂贵。revealBid尤其昂贵,因为它还需要验证一个余额证明,这需要花费大约25000个气体。

用户体验

虽然这两个实现遵循类似的整体流程,但在用户体验上还是有一些区别。SneakyAuction有一些小的缺点:

向未部署的金库发送ETH的体验,虽然可以由前端抽象出来,但对于在区块探索器上检查其投标交易的用户来说,可能会混淆。在OverCollateralizedAuction中,如果所有的出价都被公开,那么就有可能提前结束拍卖。这在SneakyAuction中是不可能的,因为合同没有办法知道已经有多少出价已经被认可。竞标者可以通过再次调用commitBid来更新他们的出价,并在OverCollateralizedAuction中补足他们的抵押品。在SneakyAuction中,一旦投标的金库被抵押,投标人就不能进行更新。隐私

OverCollateralizedAuction的投标隐私依赖于投标人选择锁定额外的抵押品。另一方面,SneakyAuction的隐私来自与拍卖本身完全无关的链上活动。在拍卖的投标期间发生的ETH转移。

为简单起见,我们假设每个投标都是用一个ETH转账来抵押的。我们观察到:

抵押交易应该是第一次有人与链上的金库地址进行互动。我们不希望有任何其他交易在投标期的剩余时间内接触到金库地址。任何交易都不能从金库地址发起。在投标期间,ETH转移到其他"未触及"的地址似乎是投标——换句话说,它们是隐藏投标交易的"噪音"。为了帮助量化SneakyAuction的隐私,我们可以看一下这个噪音分布的形状。

这个直方图显示了今年以来每天ETH转移到未触及的地址的分布,说明了24小时投标期的噪音分布。我们可以看到,大多数交易都落在ETH范围内,这意味着预期出价值在该范围内的拍卖将具有最强的隐私。另一方面,对于预期出价大于10ETH的拍卖,典型的噪音可能无法提供足够的隐私--在这个范围内很少有超过100次的转账,所以吸引很多出价的拍卖会在分布中产生一个明显的峰值。

为了从另一个角度看这个数据,这些散点图描述了2022年10月15日的转账情况,与两个假设拍卖的出价相叠加:

200次出价,正常分布在1ETH左右

200次出价,正常分布在100ETH左右

从直观上看,观察者更容易识别来自第二次拍卖的出价。在实践中,你可以使用一个聚类算法,如期望最大化算法来预测哪些交易是投标。

然而,还有一些其他因素可以使SneakyAuction在实践中更加私密。

更长的投标期。隐私与投标期的长度成正比--投标期越长,隐藏投标的转移就越多。同时进行的拍卖。私密性会随着同时进行的拍卖数量的增加而增加--如果两个拍卖同时处于投标阶段,一个拍卖的出价就会成为另一个拍卖的噪音。SneakyAuction也可以从过度抵押中获益--因为SneakyVault将任何多余的ETH返还给竞标者,竞标者可以选择过度抵押以进一步保护隐私。因此,从某种意义上说,SneakyAuction提供了严格意义上比我们之前的实现更强的隐私。

SneakyAuction的隐私机制的一个简单推论是,它隐藏了投标期间的投标数量。这比OverCollateralizedAuction有优势,OverCollateralizedAuction只隐藏了出价值--在特定的拍卖中已经做出的出价承诺的数量是完全公开的。

虽然我们对密封出价拍卖的第一个实现将现实世界的特征转化为链上的设计决策,但我们的第二个设计依赖于一种新颖而实用的机制,将区块链的公共性质用于其优势:密封出价"隐藏"在不相关的区块链活动中。

虽然这种新方法是实现投标隐私而不过度抵押的便捷方式,但它不一定适合所有的拍卖。对于期望出价较小的拍卖,隐私性会得到改善。

责任编辑:MK

标签:CTIUCTAUCTIONActifitEOS Auctionauct币最新消息Argentine Football Association Fan Token

BNB热门资讯
THE:Curve 稳定币设计白皮书(中英文参照版)

Curve稳定币设计白皮书的中英文参照版本,加入一些辅助理解的中文注释,也修正了一些原版的拼写错误,供大家参考学习.

1900/1/1 0:00:00
ELD:审视 DeFi 新叙事 #RealYield

自8月份以来,推特上的KOL对RealYield的讨论越来越激烈。这一讨论的起源和爆火与GMX在熊市里出色的表现相吻合.

1900/1/1 0:00:00
AND:长推:我们需要从FTX暴雷事件中反思什么?

上周发生的FTX暴雷事件让我进行了自我反省。过去四年,我一直在跟踪和分析加密行业的资本配置。现在,我比以往任何时候都更意识到监管之锤即将到来,也是时候说出我所看到的所有问题了.

1900/1/1 0:00:00
ALA:Arthur Hayes:SBF,白种男孩

我在上一篇内容中提到,你必须至少给SBF一些掌声,因为他是“一代人中的交易天才”。好吧,我也被耍了.

1900/1/1 0:00:00
ROL:Scroll:站在等效与性能的中点,zkEVM竞赛低调的挑战者

鉴于EVM在开发人员中的普及,人们一直希望将zkRollup技术的可扩展性与EVM的开发者体验相结合.

1900/1/1 0:00:00
SHB:以太坊 PoS 时代的区块生产现状:区块构建市场注定要形成垄断吗?

第一部分:关于中继多样性和中立性的思考以太坊网络是软件和基础设施的体现,以及人们对开发、维护和运行它的承诺。这样做需要付出人力、能源和美元成本,目前由从中受益的社区提供支持:用户、公司和协议.

1900/1/1 0:00:00