里里科普|Magic Eden 全内存池保护
2024-10-29 10:00
Runes 中文社区
2024-10-29 10:00
订阅此专栏
收藏此文章

作者:比特里里 | X:@lilyanna_btc

编辑:Sam


一、内存池狙击是什么?


既然要介绍防狙击,先科普下此前内存池狙击的原理。大部分的 Ordinals 和 Runes 交易市场,卖家挂单时用的 PSBT 签名类型都是 SIGHASH_SINGLE | ANYONECANPAY,只能约束一个 output(来确保自己能收到约定好的钱)



简单说就是卖家签名的时候只限定了要卖的东西(input 里自己的 ordinal)和要收到的金额(一个收款地址为卖家的、固定金额的 output),至于是谁付钱,ordinal 打给谁,都没有约束。 


因为在卖家的利益角度讲,卖给谁都一样,只要这个交易里同时完成卖出和收钱的动作就好了。


也正是因为这个机制,一旦购买交易进入内存池,狙击手就可以解析出这个签名,通过给更高的费率,把这个交易的付款人和收货人替换为自己后,让矿工选择打包这笔高费率的交易,抛弃原买家的交易。


毕竟 input 能换,output 里的收货地址也能换,只要有利可图,狙击手们就会出手。


二、ME 的全内存池保护原理


ME 的这个全内存池保护(Total Mempool Protection, TMP)和以前的方案有什么不一样呢? 


抛弃了导致内存池狙击的罪魁祸首,SIGHASH_SINGLE | ANYONECANPAY,新的流程里全部都是 SIGHASH_ALL,不再出现任何 SIGHASH_SINGLE 了。 


一句话概括:这次收货地址定死了,你有本事抢着替原买家付钱,反正收货地址你换不了,即使换成你付钱,货也不会到你手里。


新的购买流程分三步


交易一:买家凑钱,把交易中自己要出的钱凑出来,多出来的钱找零给自己。这个凑的钱包含给卖家的商品价格、给 ME 的手续费,以及后面交易的网络费。


交易二:买家第一步的钱付出去,卖家收到钱,Ordinal(这次交易的货)打到 ME 的中间地址。卖家挂单的时候签的名就用在这里,签名的时候用 SIGHASH_ALL 把 output 限死,谁也替换不了,也无法新增其他 output(除非你让卖家重签一个新的交易,跟它冲突)


交易三:ME 发货,把这次交易涉及的 Ordinal 转到买家地址,交易结束。这一步其实是 ME 和买家的 2/2 双签,Bob 曾经质疑这里有中心化作恶风险,例如 ME 拒不发货。但后来这个疑惑得到了解答——在买家发起交易流程时,ME 就会先给出自己那部分的签名,所以这个风险也就不存在了。



三、什么时候能用上?


ME 表示 TMP 将在近期上线,上线后,可以用 TMP 方式购买的 Ordinal,将在列表中用盾牌的形式标出(目前线上还没有找到这种标识,还要等过两天正式升级)。 


这两天大家看到挂单的时候签名已经和以前不一样了,应该是 ME 在为功能上线做准备。(因为 TMP 的切换,需要先从卖家逐渐改挂单方式开始,以前旧的挂单签名是无法直接切到 TMP 方式交易的) 


实际上,这个方案和 Lifofifo 在 5 月提出的方案有很多相似之处,尤其是 SIGHASH_ALL 的使用。但这个方案通过 Tapscript 实现了更高级的方式,消除了很多中心化风险,更优越。


常见问题


1、为什么要先进行第一步(买家支付费用,拿回找零)?直接去第二步交易找零不行吗?


不可以,因为第二步的卖家挂单签名时用 SIGHASH_ALL 对所有 output 做了约束,因此无法再增加找零的 output。


2、为什么要多一个提取的第三步?第二步直接 Ordinal 打给买家不就好了?


卖家签名的时候还不知道买家是谁呢,但是需要提前先把收货地址确定了(因为要用 SIGHASH_ALL,而不是 SIGHASH_SINGLE),所以引入一个 ME 的中间地址来构造签名。在成交时再通过第三步打给买家。


3、采用这种方式以后,就不会被别人狙击了吗?


严谨来说,是不会被人「通过在内存池解析签名后用 RBF 来狙击」。理论上,如果 ME 在这个过程中,因为缓存或者其他原因,让两个买家先后签了同一个卖单,那么这两个买家依然是可能互相竞争的。但实践上,ME 没有做这件事的动机,这对它来说没有好处,相信 ME 会从各种机制上杜绝这种情况的发生。


4、TMP 上线以后,买家 / 卖家能取消订单吗?


在交易上链前,买家和卖家应该还是能通过自己构造冲突交易来 RBF 掉这笔订单的,所以这个取消订单的问题依然无法避免。(别问怎么取消订单,这个不教哈,请大家遵守交易秩序)


5、会不会出现交易已经上链,但是卡在第三步提取流程的情况?那不就卡在中间地址里了?


别看分三笔交易,实际上这三笔交易应该是一起推进内存池的,且构成 cpfp 共享费率,一起上链的,会在同区块内完成所有操作,不存在卡中间的情况。


6、这个过程中,如何保证买家地址在第一个交易和第三个交易中的一致?


ME 有提到构建交易的过程中用到了 Tapscript 来对用户白名单进行编码,这里的细节不做展开(一是在实际操作中大家也没什么感知,讲起来也比较枯燥,二是太复杂了,ME 放出来的信息也还不是太多,三是我实在学不动了……) 


声明:

以上均为根据公开资料的个人理解,仅作科普用途,如果有不严谨的地方欢迎技术大佬们指正。功能正式上线后会再给大家补一个操作指南,到时候应该会更好理解一些。


参考:

https://x.com/rexzh0u/status/1848736537019601157

https://x.com/BobBodily/status/1848784860397351368

https://x.com/lifofifo/status/1787927430172115421



免责声明:本文仅供参考,不得被用作法律、税务、投资、理财或任何其他建议,不代表 RunesCC 立场。


关注「Runes 中文社区」


Runes 中文社区,旨在为大家提供 Runes 协议赛道相关资讯、研报和工具,构建交流和共建的平台

▣ 请进 Telegram 群:https://t.me/RunesCC

| 往期精选


MiX: Memecoin Supercycle 叙事下的 Runes 符文

《木偶 PUPS 的崛起之路》

《为什么 Runes 符文中将会诞生非常成功的 Memecoin》

《Memecoin 超级周期下的 Runes 符文》

《BILLION•DOLLAR•CAT 社区建设精彩回顾》

《$DOG 如何成为 Memecoin 超级周期的最佳投资标的》

《符文在 Memecoin 超级周期中的增长契机》

《Peter:Runes 符文的结构性变化正在发生》

《Memecoins 超级周期:一场颠覆传统加密叙事的革命》

《直面天命!符文路在何方?》

《深挖 RSIC 生态的故事元素及神秘信息》

《打符文小技巧之钱包管理》

符文铸造者:打新、投资、尝鲜,你是哪一类?

《符文还有救吗?》

《2 号符文 $DECENTRALIZED 发布猜谜游戏》

《金狗博士:史诗铭文旁观者侧记》

《学习笔记|一文看懂内存池 Mempool》

《史诗符文 $EPIC 前世今生(内含 Blob 介绍)》

《2 号符文 Decentralized 首场中文 AMA 回顾》

《比特币生态应用到大爆发,什么时候会到来?》

《Casey 做客中文社区:Runes 项目要更加专注于乐趣,打造一个最好的「赌场」。》
《Casey 香港演讲:星际赌场,有何不可?》
《科普「Runes 预挖矿」到底是什么?》
《为什么说 Runes 符文赛道即将爆发》
《Runes 本质上是「资产标准」的协议

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Runes 中文社区
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开