关于比特币 Dust Limit

  • Ashton
  • 更新于 2024-09-13 13:58
  • 阅读 500

关于比特币 Dust Limit

最初让我关注到比特币的 Dust Limit, 是因为比特币铭文。按说比特币铭文是和一个独立的 Sat(聪) 关联在一起的,为啥铭文的大小不是一个 Sat(聪) 而是不同的数量呢?最近再次关注到这个问题,是因为所参与的比特币生态跨链桥项目,用户要将一些铭文从比特币二层提到他的一层比特币 bc1p 地址时竟然提币失败了,因为那些铭文所在 UTXO 的值为 294,为什么?

0x01 什么是比特币 Dust

比特币 Dust 也经常被称为比特币粉尘。当比特币 UTXO 所带的值太小,以至于单独花费这个 UTXO 所要花的矿工费比这个值还要大时,就可以称这个 UTXO 为比特币粉尘。这是个非常笼统的概念,因为矿工费随着网络拥堵情况时高时低,这里没有明确多大的 UTXO 算是粉尘。 花费或产生 Dust UTXO 的交易称为粉尘交易,除了正常找零,这些交易基本都可以认为是徒增节点负担的无价值交易,大量的粉尘交易产生时很多时候就称这个网络受到了粉尘攻击。

0x02 什么是比特币 Dust Limit

比特币网络本身肯定都不希望有太多粉尘。于是就对 UTXO 的最小值加了一个限制,这个限制值就是比特币 Dust Limit。当某一笔交易的 input/output 包含小于 Dust Limit 的 UTXO 时,节点回报错并拒绝接收这笔交易。

Dust Limit 设为多少合理呢?

因为比特币的矿工费都是由交易大小确定的,Dust Limit 的值也和交易大小有关,下面是计算 Dust Limit 的一个公式:

dust limit = (input_vsize + output_size) × dustRelayFee/1000

dustRelayFee 是比特币节点可以设置的一个值,默认为 3000,所以上面的那个公式也可以变为

dust limit = (input_vsize + output_size) × 3

这里的 output_size 为一个 output 的大小,input_vsize 为消费这个 output 所需要的 input 的大小

因为不同比特币地址类型所构造的交易的 input 和 output 大小不同,导致不同地址类型的 Dust Limit 也不同

  • P2PKH 地址 ('1' 开头): 546
  • P2SH-P2WPKH 地址 ('3' 开头): 540
  • P2WPKH 地址 ('bc1q' 开头): 294
  • P2TR 地址 ('bc1p' 开头): 330

0x03 比特币 Dust Limit 要注意什么呢

首先,小于这个值的 UTXO 是花不出去的,这也是为什么铭文 UTXO 很多都是带有 546 聪甚至更多聪 BTC 的原因 其次,这个值的大小是和地址类型相关联的。怎么理解呢?比如我现在有个 294 聪的铭文在我的 bc1q 地址上,但你的地址是是 bc1p 开头的 P2TR 地址,我是没办法把这个铭文直接转给你的。你要准备一个 bc1q 的地址才好接收那个 294 聪大小的铭文。

0x04 总结

  1. 要记住不同地址类型的 Dust Limit, 也就是最小 UTXO 大小的限制。
  2. 接收铭文用 bc1q 开头的地址是最保险的,可以接收任意大小的铭文
  3. 铸造铭文的时候 546 聪大小的 UTXO 兼容性最好,任何地址类型都可以支持。
  4. 还补充一点儿,OP_RETURN 指令可以打破这个限制,这个有空再聊。
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Ashton
Ashton
0x53b3...c54F
专注于 EVM 和比特币生态的区块链开发者