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


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

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

Untitled

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

Untitled

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

Untitled

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

Part Field Size(byte) vByte section count
Overhead Version 4 4
Input count 1 1
Output count 1 1
Locktime 4 4
flag 1 1 11
Input1 OutPoint 36 36
sequence 4 4
witness count 1 0.25
witness 65 16.25 56.5
Input2 OutPoint 36 36
sequence 4 4
witness count 1 0.25
witness 65 16.25 56.5
Output1 value 8 8
pkscript length 1 1
pkscript 34 34 43
Output2 value 8 8
pkscript length 1 1
pkscript 34 34 43

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

Part Field Size(byte) vByte
Overhead Version 4 4
Input count 1 1
Output count 1 1
Locktime 4 4
flag 1 1
Input1 OutPoint 36 36
sequence 4 4
witness count 1 0.25
witness 65+insdata (65+insdata)/4
Output1 value 8 8
pkscript length 1 1
pkscript 34 34

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

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

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

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

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

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

Powered by Fruition