早年一个 .eth 名字为什么要密封出价:ERC-162 的五状态拍卖与契据合约 图 1
早年一个 .eth 名字为什么要密封出价:ERC-162 的五状态拍卖与契据合约 · 图 1

早年一个 .eth 名字为什么要密封出价:ERC-162 的五状态拍卖与契据合约

今天买一个 .eth 名字像是填表单,但在 2017 年,拿到一个名字的方式是一场密封投标。ERC-162 就是那场拍卖的规则书:它创建于 2016 年 10 月 25 日,仓库记录状态为 Final,摘要里写明自己描述的是 2017 年 5 月 4 日部署到以太坊主网的注册合约实现,源码文件当时叫 HashRegistrarSimplified.sol。这份文档现在读起来更像协议考古,但它把“公开链上如何做一场没人能作弊的拍卖”这个问题讲得很完整,机制本身对理解今天的名字服务仍然有用。规范在摘要后特意强调:注册方是系统里唯一能更新登记表的角色,登记表里某个节点的 owner 就是它的注册方——把注册规则单独立一份文档,正是因为它是名字服务体系里最关键的治理件。

五个状态和一个开闸时间表

规范给每个名字定义了五种状态:尚未可用、开放、拍卖中、揭标、已归属。大部分名字在上线初期是拿不到的,什么时候能拿,取决于名字哈希的最高有效字节:0x00 开头的立刻可用,0xFF 开头的要等八周,其余按字节值均匀散布在中间——原文把这八周叫 launchLength。这套设计的用意是避免所有人同一秒冲进合约抢注,把需求摊到时间轴上。

一旦名字进入开放状态,任何人可以调用 startAuction 触发拍卖。从这里起有 72 小时的出价期,接着是 48 小时的揭标期,两段合起来的参数叫 totalAuctionLength,规范表格给的数值是 5 天。出价期结束就关门:揭标期内只许揭开之前的密封报价,不许再投新标。如果整场没人揭出有效出价,名字退回开放状态重来。

早年一个 .eth 名字为什么要密封出价:ERC-162 的五状态拍卖与契据合约 图 2
早年一个 .eth 名字为什么要密封出价:ERC-162 的五状态拍卖与契据合约 · 图 2

密封出价怎么密封

规范明说这是维克斯雷拍卖:密封投标,最高价者赢,但按次高价付款,这样出价人有动机按真实估值报价而不是虚报。链上做不到物理密封,标准用哈希代替信封:投标值先算成 shaBid——把名字哈希、接收方地址、出价金额和一个盐值拼在一起取哈希——投出来的只是这个摘要,真实金额被藏在盐值后面。投标人还可以额外多转一些以太币,让链上转账金额和真实报价脱钩,连“转账了多少”这个侧信道都对不上。

规范表格里还有一条容易被忽略的参数:minPrice 为 0.01 以太币,是持有一个名字至少要锁住的钱。另外 startAuctions 允许一口气为一批哈希开标,原文解释这是让真正在意某个名字的人顺手开几个幌子拍卖,抬高盲目扫标者的成本;只开标没人出价的幌子一周后可以被关掉。

钱不放注册方,放契据

这份规范最特别的一条设计:初始注册方合约本身没有余额,所有进来的以太币都锁在单独的契据合约里。密封投标提交时契据就创建并注资;拍卖结束、名字注册完成后,中标者那份契据继续持有资金,换取名字的归属权,未中标者的资金退还。规范写明,登记满一年之后,名字所有者可以选择放弃所有权、关闭契据拿回资金——持名是有机会成本的,这正是维克斯雷拍卖能收敛出价的前提。

退款不是全额一视同仁,原文给了一张比例表:有效但未中标的出价被揭开,投标者拿回 99.5%,其余烧掉;拍卖期结束后才揭开的出价同样退 99.5%;而在一个已被别人拥有的名字上揭开一个“本来有效”的出价,只退 0.5%,用重罚劝退对已注册名字的骚扰投标;一份过期的密封投标被第三方取消时,取消人拿 0.5%,这是给清理僵尸投标的激励。

读一个名字的状态该调哪些函数

接口层面,state(bytes32) 返回名字当前处于五态中的哪一态;entries 一次返回状态、契据地址、登记日期、契据余额和拍卖最高价;getAllowedTimeisAllowed 回答“这个哈希还要等多久才开放”;投标相关是 shaBidnewBidstartAuctionsAndBidunsealBidcancelBid。注意所有这些函数的键都是名字的哈希而不是名字本身,这和 ERC-137 的 namehash 一脉相承:注册方从头到尾不认识拼写,只认编号。

还有一处设计常被后来的读者忽略:这份规范在理由部分专门讨论了“为什么不在一开始就承诺永久注册方”。答案是对早期机制的诚实——最初的哈希格式限制了名字字符集、也没有做大小写折叠,团队预期这些缺陷需要在运行中修掉,所以整套合约被当作“临时但相对公平”的分配方案来写,把迁移到永久注册方的路径留在文档之外。

这份标准的两个边界

站在今天的视角,两个边界要说清。其一,它是历史实现:仓库状态 Final 只表示文档定稿,不代表这套拍卖仍在服务当下——后来的名字服务确实更换了注册规则与文件格式,具体要以现在的注册方文档为准。其二,任何把“当年拍卖价”说成“名字现在值多少钱”的说法都没有依据:押金只是锁仓凭证,退款表还写着未中标资金退九十九点五、烧零点五的处置规则,和二级市场价格没有换算关系。本文为机制说明,不构成任何投资建议。