很多人在Ordicord里问铭文为什么是546聪。这要从Dust粉尘这个概念说起。
1,什么是粉尘 Dust的概念:
在加密货币中,Dust 粉尘往往是指极小金额存在的交易,就像粉尘一样,他们的价值如此微小,以至于他们的手续费可能超过其自身价值。Dust非常的形象,就像现在地上的一分钱。
BitcoinCore源码里,Dust被定义为转账输出的价值小于网络上进行该转账的费用。这个阀值,往往是基于dustRelayFee 粉尘转播费来决定。如果要转账的比特币数量少于转账所需的手续费(基于"dustRelayFee"计算),那么这笔交易就被视为"dust"。
dust = (input_vsize + output_size) × 3 sat/vB
2,铭文大小的计算
P2PKH 交易输入需要148字节,输出大约需要34字节的空间,因此总提大小为182字节:那么一个可支配的交易输出少于182*dustRelayFee/1000(以聪计),那么就可以被定义为dust。以默认费率3000聪/kvB来算, 即 182 X 3 = 546 sats 由数据大小和给定默认费率得出的值
对于(P2WPKH)的交易输出,通常需要31字节的空间,并且至少需要67字节的输入支持才能消费出去:因此,如果一个可支配的交易输出少于98*dustRelayFee/1000(以聪计),那么这个输出就会被定义为dust。 即 98 X 3 = 294 Sats
按照同样公式,计算得出 P2SH的粉尘上限是540Sats P2WSH and P2TR 则是330 Sats。 因此Bitcoin Core在设计的时候,为了防止区块链被大量的低价值交易塞满,从而影响整个网络的效率,就把上述计算的理论值作为一个判断条件。如果低于粉尘值,该交易就不会被bitcoin core以及其节点所接受。
Ordinals协议最早是10000个Sats来铸造铭文,后来通过postage命令则可以指定铭文大小。而代打工具unisats以及idclub等,则默认以546聪作为铭文大小,以节约铭文所使用的utxo,取得最佳性价比。 当下也有很多讨论是否应该解除粉尘限制,以及粉尘攻击 Dust Attack,有需要下回再聊。
3,小结
1,Dust是指极小金额的加密货币;
2,比特币上的Dust阀值dustRelayFee,是在3sat/vB假定条件下人为计算的值,546是这其中最大的值;
3,低于阀值的交易会被bitcoin core和节点拒绝;
4,机制设计目的为了保证网络效率;
5,还有粉尘攻击,你应当也有所了解。