关于比特币 Dust Limit
最初让我关注到比特币的 Dust Limit, 是因为比特币铭文。按说比特币铭文是和一个独立的 Sat(聪) 关联在一起的,为啥铭文的大小不是一个 Sat(聪) 而是不同的数量呢?最近再次关注到这个问题,是因为所参与的比特币生态跨链桥项目,用户要将一些铭文从比特币二层提到他的一层比特币 bc1p 地址时竟然提币失败了,因为那些铭文所在 UTXO 的值为 294,为什么?
比特币 Dust 也经常被称为比特币粉尘。当比特币 UTXO 所带的值太小,以至于单独花费这个 UTXO 所要花的矿工费比这个值还要大时,就可以称这个 UTXO 为比特币粉尘。这是个非常笼统的概念,因为矿工费随着网络拥堵情况时高时低,这里没有明确多大的 UTXO 算是粉尘。 花费或产生 Dust UTXO 的交易称为粉尘交易,除了正常找零,这些交易基本都可以认为是徒增节点负担的无价值交易,大量的粉尘交易产生时很多时候就称这个网络受到了粉尘攻击。
比特币网络本身肯定都不希望有太多粉尘。于是就对 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 也不同
首先,小于这个值的 UTXO 是花不出去的,这也是为什么铭文 UTXO 很多都是带有 546 聪甚至更多聪 BTC 的原因 其次,这个值的大小是和地址类型相关联的。怎么理解呢?比如我现在有个 294 聪的铭文在我的 bc1q 地址上,但你的地址是是 bc1p 开头的 P2TR 地址,我是没办法把这个铭文直接转给你的。你要准备一个 bc1q 的地址才好接收那个 294 聪大小的铭文。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!