BIP 141 定义 vsize = ceil(weight / 4)。这是加权大小,不总是一个物理字节;Bitcoin Core 的某些策略还考虑签名操作成本。
设 B 为不含 witness 的大小,T 为完整序列化大小。权重 W = 3 × B + T 以 WU 为单位,虚拟大小以 vB 为单位。 [BIP 141 — Segregated Witness] [Bitcoin Developer Reference — Transactions]
基础部分每字节计 4 WU;witness 序列化新增的数据,包括 marker 和 flag,每字节计 1 WU。折扣不意味着跳过验证。 [BIP 141 — Segregated Witness] [BIP 144 — SegWit peer services]
对整笔交易的总数向上取整:401 WU 得到 101 vB。分别将每个输入的估算值取整再相加,结果可能不同。 [BIP 141 — Segregated Witness] [Bitcoin Core — decoderawtransaction RPC]
没有 witness 时 B = T,因此 W = 4 × T,基本 vsize 等于字节数。SegWit 并不是把所有传输字节都除以四。 [BIP 141 — Segregated Witness]
示例数值 B = 100、T = 208 得到 W = 508 WU 和 vsize = 127 vB。完整序列化仍然需要传输全部 208 字节。 [BIP 141 — Segregated Witness] [Bitcoin Core — decoderawtransaction RPC]
手续费是输入金额减去输出金额。127 vB 按 2 sat/vB 计算为 254 sat,并不直接等于转账金额的某个百分比。 [Bitcoin Core — policy fees] [Bitcoin Developer Reference — Transactions]
交易完成前,钱包估算签名、输入和可能的找零输出。只有实际手续费和最终大小才能确定有效费率。 [Bitcoin Core — policy fees] [Bitcoin Core — decoderawtransaction RPC]
Bitcoin Core v29.0 还使用调整后的大小 ceil(max(W, sigop_cost × bytes_per_sigop) / 4)。大量签名操作可能使其增大,但不会改变 BIP 141 的基本公式或共识权重。 [Bitcoin Core — transaction policy]
评估交易包时,可以用总手续费与相关虚拟大小之和进行比较。这不是各交易费率的简单平均,也不保证被接收或确认。 [Bitcoin Core — policy fees] [Bitcoin Core — transaction policy]
CompactSize 是序列化中的变长整数编码。Vbyte 是计量单位,名称相似不代表格式相同,也不表示文件被缩短。 [BIP 144 — SegWit peer services] [Bitcoin Developer Reference — Transactions]
要获得更完整的理解,请将本词条与以下词条结合阅读: 区块权重, 紧凑区块中继, 区块传播, 初始区块下载. 反向关联还来自: 区块权重.