比特币的每笔Transaction,有时会出现Fee。是谁指定的?指定后对于Transaction会有何影响?
翻了一下“Mastering Bitcoin”这本书,总结如下:
- Minimum Transaction Fee由市场决定 (市场如何决定?待下一篇说明之)
- Current Minimum Transaction Fee = 0.0001 bitcoin per kilobyte
- 建立Transaction的人,可以指定Fee,也可以不指定
- 若指定,至少要给Minimum Transaction Fee
- 可以多给Fee,这样Miner若挖到包含该Transaction的Block,就赚到了
- 有些Miner喜欢挖有Fee的矿,有些不喜欢
- Age和Fee会影响Node要先处理那些Transaction
下图,Block包含了二大块:Block Header、Transaction Space。
Transaction Space又分二区,第1区存放High-Priority Transactions,第2区存放有Fee的Transactions。
每个Miner在挖矿之前,会建立一个Candidate Block(如上图),并且从Transaction Pool里挑选几个Transaction塞进来。
首先会挑选High-Priority Transactions到第1区。如何判定Transaction是High-Priority?
先计算Transaction的Priority:
Priority = Sum (Value of Input * Input Age) / Transaction Size
若Priority > 57,600,000为High Priority,书中举的例子如下:
有一个Transaction,Size为250 bytes,Input总计为1 Bitcoin = 100m satoshis,待了1天,经过144个Block,都没有被处理到,它的Priority目前为57,600,000。所以只要再经过1个block,就有可能被下一个block处理到了。
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
接下来,根据Fee挑选Transactions会被塞到第2区。没有Fee的Transaction,绝不会到第2区。没有Fee的Transaction,要等到Age增加,成为High-Priority Transaction,才有机会被塞到之后的Block的第1区。
-Count