如何估算Ordinals铸造费用

作者:团长(https://twitter.com/quentangle_

比特币交易中每一个字节都是需要花钱买的,今天给大家介绍一下如何估算铸造Ordinals铭文的费用,让大家知道自己的钱都花在了哪里,也可以协助我们对一些铭文代打的bot的费用高低有个感性认识。不想了解技术细节的小伙伴可以直接跳到结论部分。

由于taproot脚本的花费只能从现有的taproot输出中进行,所以Inscription是用一个两阶段的提交Commit/揭示Reveal过程来进行的。首先,在提交交易中,创建了一个提交给包含Inscription内容的脚本的taproot输出。其次,在揭示交易中,由提交交易创建的输出被花费,揭示链上的铭文内容。也就是说一次Ordinals铸造过程是由两笔普通的比特币P2TR交易构成,如图所示:

其中第一笔称为CommitTx,这是一个不包含铭文数据的普通交易,普通的比特币交易的大小主要是由输入和输出的数量决定的,数量越多,需要存储的地址和验证信息也就越多,交易的大小就越大。比如这个包含275个输入的交易大小是47kB:

而下面这个包含4个输入4个输出的交易是821B:

我们以两个输入和两个输出举例,了解一下交易的字节构成,这个交易大小大概是212vBytes:

第二笔交易是RevealTx,这个交易除了包含一个普通的P2TR的交易之外,还包含Inscription数据,在表格中用insdata标识但是这个交易一般只有一个输入和一个输出,大概是111vBytes。

Inscription数据是放在witness字段中的,这部分的数据在计算时是会打折扣,需要除以4。

举个例子,如果要铸造一个40kB的Inscription,总的交易大小是

212+111+(40*1024/4)=10,563vBytes

如果是铸造brc20这样的纯字符,铭文内容大概60Byte,则总的交易大小是

212+111+(60/4)=338vBytes

将这个数字乘以当时的费率,就是铸造铭文所需要的网络交易费。

除了网络费用,铭文需要依附于一个具体的比特币转账而存在,所以比特币转账的金额也需要算在内,当然这部分的费用最终还是在用户自己钱包里,可以当成普通的比特币花出去(不要这么做)。Ordinals官方的转账金额是10000sats,有的代打bot会提供把这个数字调小的功能,但是这个数字必须要大于比特币网络的dust limit,即一个最小的转账金额,否则节点不会转发该笔交易。这个数字目前是546 sats。

结论和公式

经过上面的详细拆解,我们可以得出一个估算铸造成本的公式。我们以分别包含一个输入、一个输出的commit tx和reveal tx来计算,铸造一个Ordinals铭文需要的费用:

设你的铭文文件大小是X,那么交易的大小就是X/4 + 222,将这个结果乘以当时的网络费用,就是整个铸造的交易成本。

以铸造一个60Byte的Brc20字符串举例,假设当前的网络费率是100 sats/vBytes,总的成本是:

(222+60/4)*100 + 546 = 24,246 sats

说明:

  • 以上是按照包含Commit和Reveal两阶段的铸造过程计算的,如果commit tx已经提前生成好,只需要reveal的话,费用会略低一点。(ord官方钱包并未提供这种方式)

  • 如果Commit tx或Reveal tx中包含的输入输出数量很多,那么费用会有所提高。

  • 一般的代打服务都会收取一定的费用,上面的技术没有包含这部分的服务费。

  • 上面的计算过程仅用于费用估算,请勿用于生产环境中。

  • 如果你有把铸造费用降得更低的办法,欢迎讨论。


原链接:

Subscribe to quentangle
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.