比特币每秒交易次数,通常用tps(transactions per second)表示,核心算法并不复杂:统计一段时间内已经写入区块链的交易数量,再除以这段时间对应的秒数。最常用的表达式是tps=确认交易总数÷统计时长(秒)。连续统计24小时内的链上交易,若共处理了50万笔,那么tps就是500000÷86400,约为5.79笔。这个数字代表的是平均吞吐量,不等于每一秒都恰好完成同样数量的交易。

用单个区块估算时,也可以采用区块交易数÷区块间隔秒数的方法。假设一个区块包含4200笔交易,按照比特币平均约10分钟、也就是600秒生成一个区块计算,结果约为4200÷600=7 TPS。需要10分钟只是长期平均值,挖矿出块依靠概率竞争,两个区块可能相隔几分钟,也可能相隔更久,因此单个区块得出的结果容易波动。想得到更稳定的比特币TPS,通常要连续统计数百个区块,或者直接使用一天、七天等较长时间窗口。

影响计算结果的关键,还在于区块能装下多少交易。比特币并不是简单采用固定4MB区块这一说法,现行规则以区块重量衡量容量,上限为400万重量单位;隔离见证后,交易的见证数据采用不同权重计算,实际可容纳的交易数量会随交易结构变化。普通转账、多人多签、批量支付、Taproot交易占用的区块空间并不相同,同样大小的区块,交易笔数可能差距明显。也就是说,TPS不仅取决于区块间隔,还取决于每笔交易平均占用多少字节或重量单位。
现实中的交易数量也不完全等同于支付次数。一笔比特币交易可能包含多个输入和多个输出,交易所或支付平台还会把多笔转账合并成一笔批量交易。统计区块浏览器显示的交易数时,看到的是交易记录数量,而不是实际参与转账的用户数、收款地址数或BTC流转金额。未确认交易仍停留在内存池中,通常不纳入链上TPS;只有被矿工打包进区块后,才会进入确认交易统计。手续费升高时,内存池可能快速堆积,但并不代表比特币的基础层TPS同步上升。

实际计算时,可以选定起止区块,记录这段区间内的总交易笔数,再用首尾区块之间的实际时间差进行除法;也可以统计24小时交易总量后除以86400。区块浏览器常见的平均每区块交易数平均区块大小等指标,适合快速观察网络负载,但不同平台可能对区块时间、coinbase交易以及特殊交易采用不同口径。更严谨的比特币吞吐量分析,应同时注明统计周期、是否包含矿工奖励交易、采用平均时间还是目标出块时间。这样算出的TPS才有可比性,也不会把理论上限、瞬时峰值和长期平均值混为一谈。
