比特幣交易費用詳解

在前幾篇文章提過,礦工除了能賺取生成下一個區塊的獎勵,更重要的是交易費用。

以2018年,Block #516593 為例,挖到這個區塊的礦工可獲得12.5BTC,而#516593包含了1127條交易訊息,也讓礦工額外賺取了0.1個比特幣交易費用。

當中的交易費用只佔總獎勵的0.1/12.6=0.8%,比重不算高。

bitcoin block 516593

Block #516593 Reference: https://blockchain.info/block/00000000000000000027aab948657d00d296fb1decb1f5e31e074494f6b86452

但是2140年之後,當2100萬個比特幣全都被挖出來之後,礦工就只能依靠交易費用維生。所以隨著時間推進,交易費用的重要性越來越高!

對於一般用家而言,交易費用也不容忽視,因為交易費用直接決定了等待confirmation的時間。

比特幣交易 Confirmation Time

Confirmation Time 的意思是,你發起一個交易之後,要等多久才有礦工願意將你的交易放入下一個區塊,並且挖出。在寫入下一個區塊之前,這個交易都不算生效。

在交易所之間傳送加密貨幣時更加要留意這個問題,為了避免壞礦工惡意攻擊區塊鏈,交易所會等上3-4次confirmation才會確認交易完成。

1次confirmation 的意思是礦工將你的交易放到區塊A中,並且挖出。

2次或以上的confirmation 是指有其它礦工基於區塊A挖出下一個,甚至更多的區塊。大概要有6次confirmation才算是99%肯定安全。

如果用家付出的交易費用不夠多,礦工處理這個交易的優先次序可能會被降低。 試想想,同樣的一件工作,用家A比用家B付出更高價錢,作為礦工的你會選擇先處理用家A還是B?

所以,付出不足夠的交易費用,會令你的交易延遲幾個小時,甚至幾天也不出奇。這篇文的重點,就是解釋何謂足夠的交易費用。

比特幣的交易費用

隨便在區塊鏈上挑一個交易作例子:

bitcoin transcation

Reference: https://blockchain.info/tx/c4d90161f98de765b6baa1b079b2780fa586c25fcc7d67699e8d16ca9a161764

這交易例子的input 來自一個wallet,裏面有0.0209809BTC。
output有兩個address,總共是是0.0204433BTC

這是很標準的一個交易,1個input 和2個output。

bitcoin wallet 有個很特別的規舉,每次交易都必須講明wallet 內的每一個bitcoin 將要流向那一個wallet。

沒有指明output address的剩餘bitcoin 一律視為贈與礦工的交易費用。

例如你拿著內有20元的wallet去咖啡店,買價值17元的咖啡:
(你手上的) input wallet: 20元
(咖啡店的) output wallet: 17元

如果你發起的transaction是這樣子,那麼就算咖啡店想找續3元給你也不能。
因為礦工不知道要將找續放到哪一個wallet,唯有自己當成交易費用收下了。

如果你想把找咖啡店找續給你,就必須要標明change wallet(用來找續的錢包):
(你手上的)input wallet: 20元
(咖啡店的)output wallet: 17元
(你手上用來找續的)output wallet: 3元

這樣子礦工就明白,找續回來的3元要放到那裏去
但問題又來了,完全不讓礦工賺一點交易費用,恐怕礦工也不會及時處理你的交易

所以最常見的交易是這樣子:
(你手上的)input wallet: 20元
(咖啡店的)output wallet: 17元
(你手上用來找續的)output wallet: 2元

沒有標明去向的1元會被解讀成稿賞礦工的交易費用。

*一般情況下你的wallet software會自動處理以上問題,通常做法是即時開一個新wallet用來接收找續。

繼續看交易 c4d90161f98de765b6baa1b079b2780fa586c25fcc7d67699e8d16ca9a161764:

input = 0.0209809BTC
output = 0.0204433BTC
Fees = input – output = 0.0005376BTC = 53760 Satoshi

另外這個交易size是249 btyes,所以Fee per byte = 53760 / 249 = 215.904 satoshi per byte。

Fee per byte 是最重要的指標,因為礦工就是看著這個數來決定先後次序。有些交易的size很大(例如3個input 5個output),礦工要花更加多電力來處理大size交易,當然要收取對應的交易費用。

215 satoshi per byte在2018年4月來講是超級高的交易費用,礦工會搶著把這個交易寫到自己的區塊中,所以這個交易只等了5分鐘就得到確認。

再來看看另一個交易:

bitcoin transcation2

Reference: https://blockchain.info/tx/d729708be5cfe65621e69c70e4c9c0ba0fd6782995c82863c1b0a9e3d8a49f35

這是2017年12月的交易,就是bitcoin大概升到20000美金的時候。

雖然交易費用高達325.649 satoshi/byte,但竟然等了215分鐘,即是3個半小時才得到confirmation!

付出了更高的交易費用,但confirmation time竟然更加長?

原因是當時有大量等待confirm的交易,大家為了縮短自己的confirmation time,所以願意出更高的transaction fee。你出200 satoshi/byte,我出250,他出300…

2017年12月是Bitcoin交易量最頂峰的時候,大家搶著在交易所之間傳送bitcoin交易,所以bid高了當時的交易費。

最瘋狂的一日是2017年12月22日,全世界的礦工一日之內(約144個區塊)總共獲得了1496個比特幣作為交易費用。

相比起2018年4月初,144個區塊共有約20個比特幣作為交易費用,差太~~遠~~了~~

那麼,用家要怎麼判斷,在發起交易的一刻,要多少交易費用才足夠呢?

交易費用定價參考

可以參考以下網站:
https://bitcoinfees.earn.com/

bitcoin fees earn

"The fastest and cheapest transaction fee is currently 40 satoshis/byte"

以一個交易225 bytes (1 input 2 outputs)來計算,一個交易需要9000 satoshi 的交易費。以小編交稿當日(2018年4月4日)計算,1BTC = 7000USD,9000 satoshis 大約是5元港幣,還可以接受。

*從交易所提取比特幣一般不容許你調較交易費用,因為交易所自己也想確保交易在一定時間內完成。

**如果你打算從wallet轉帳比特幣到其他wallet/交易所,就要留意如何調較。

不同wallet的調較方法都不一樣:

Electrum

Electrum transcation fee

Electrum 讓你調較等待的Block數,每一個Block約10分鐘,如上圖中所示,約想在50分鐘內確認交易,需付5 satoshi/byte

BlockChain.Info wallet

Blockchain.info wallet1

BlockChain.Info wallet有三個選項,定期是最便直的,優先權指確保交易會於60分鐘內確認,首兩個選項都是由wallet自動計算交易費用,定義是指由你輸入Satoshi/byte。

Blockchain.info wallet2

選擇定義後,可以自行輸入sat/b,千萬不輸入太低的數值!

付過低的交易費會怎樣?

有些Wallet 可以讓你調較confirmation time,block數(每一個block大約10分鐘),然後wallet會參考bitcoinfees之類的網站自動計算出最合適的交易費用。

高階用家甚至可以自己調較satoshis/byte,用上這功能切記要小心小心,一旦輸入了過低的transaction fee,很可能永遠都不會有礦工願意確認你的交易。

最壞的情況是,根據Bitcoin Core 0.14的建議,14天後這個交易會自動expired。然而這14天中,你只能看著交易中已動用但未確認的資金,漫無目的地在網絡飄浮…

如果真的遇上這種狀況,可以試試加速確認交易的付費服務 viabtc accelerator 的網站: https://pool.viabtc.com/tools/txaccelerator/

輸入你的交易,幸運的話viabtc會幫你免費加速確認,但只限每小時的首100個submit。 100個之後就要另外付費才可以加速了。

因為viabtc 有自己的礦池(mining pool),作為礦池主人他可以選擇優先處理那一些交易,你願意另外付款,當然他也樂意加速。

但使用這類型的付費服務不等於你的交易可以馬上在下一個區塊確認,因為viabtc無法確保下一個區塊是由他挖出。viabtc最多只能保証,在下一個由viabtc挖出的區塊會包含你的交易。

至於要等多久viabtc才會挖到….則要參考礦池的hash rate distribution,以2018年4月來說,viabtc佔全網絡hash rate 的10%,也就是說下一個區塊只有10%機會是viabtc挖出,所以平圴要等上100分鐘才有一個由viabtc挖出的區塊。

關於礦池的運作,小編將會於另一篇文章講解。

其實小編沒有用過這些交易加速服務,小編亦沒有從viabtc抽取佣金。如果發生甚麼意外,千萬不要找小編晦氣…


延伸閱讀