2014年7月12日 星期六

比特幣交易手續費(Transaction Fees)詳解

人們經常說你可以免費將比特幣發送到地球的任意角落,通常情況下的確可以免費轉賬,但是在某些情況下你必須支付手續費(Transaction Fees)才能完成轉賬, 在0.8.3版Bitcoin錢包中默認是0.0001比特幣的轉賬手續費。

這個手續費是獎勵給礦工的,以激勵礦工繼續挖礦為比特幣提供足夠的算力從而確保比特幣網絡的安全。目前礦工的主要收入是通過創造新的塊(Block)來獲得25BTC的獎勵,但是這個獎勵每4年減半,隨著時間的推移比特幣交易手續費獎勵將逐漸取代創造新塊的獎勵。
什麼情況下需要支付手續費?比特幣手續費收取多少?手續費怎麼算?

比特幣系統有一系列的網絡規則,其中包含手續費規則,這一系列規則也就是“客戶端要做什麼”。當你使用Bitcoin客戶端(錢包,Bitcoin-Qt)發送比特幣的時候,整個過程大致分為以下

步驟:
1. 籌備你要發送的比特幣
客戶端負責收集你錢包(Bitcoin-Qt)裡的比特幣餘額為支付做準備,因為你收到的每一筆比特幣都存在你的錢包裡面直到你花掉它們。
假如你收到3BTC與2BTC兩次付款,它們在錢包的記錄是相互獨立的,即一個3BTC和一個2BTC,而不是合併為5BTC(錢包只記錄交易明細,並不將餘額合併,但是你在錢包的界面上可以看到總的餘額),隨著時間的推移你的錢包裡會積累許多這樣數量不等的比特幣,所以當你發送比特幣的時候錢包必須決定用哪些比特幣最適合用來本次發送。
在一次交易中你得到的比特幣稱為“輸入(inputs)”,支出的比特幣稱為“輸出(outputs)”,在你的錢包裡存在多個輸入和輸出。

2. 阻止大量微額(dust )支付沖擊網絡
如果你的輸出(outputs)小於0.01BTC(包括你錢包內部的資金變動)的話,你必須要支付0.0001的手續費,即使是你自己轉給你自己。錢包在準備你的支付金額的時候有一個既定的規則,就是在眾多輸入(inputs)中籌備支付金額的時候盡量避免產生小於0.01BTC的金額變動(比如你要支付5.005BTC,錢包盡可能的選擇3+2.005或者1+1+3.005,而不是5+0.005)。

3. 數額越大、幣齡(age )越高優先級越高
如果你發送金額太小或者是你的比特幣剛開采出來不久,那麼你的轉賬就不再免費之列。每一個交易都會分配一個優先級,這個優先級通過幣的新舊程度、交易的字節數和交易的數量。具體來說,對於每一個輸入(inputs)來講,客戶端會先將比特幣的數量乘以這些幣在塊中存在的時間(幣齡,age),然後將所有的乘積加起來除以此次交易的大小(以字節為單位),計算公式:priority = sum(input_value_in__units * input_age)/size_in_bytes,計算結果如果小於0.576,那麼該交​​易就必須支付手續費。如果你確實大量的小額輸入,又想免費轉出,這時候你可以加一個數額大的、幣齡大的比特幣金額,就會將平均優先級提高,從而可以免費轉出比特幣。

4. 每千字節的收費
在轉賬的最後客戶端會檢測本次轉賬的大小(以字節為單位),大小一般取決於輸入和輸出的數額大小,計算公式如下:148 * 輸入數額+ 34 * 輸出數額+ 10,如果該次轉賬的大小超過10000字節但是優先級符合免費的標準,那麼仍然可以享受免費轉賬,否則需要支付手續費。沒1000字節的費用默認是0.0001BTC,但是你也可以在客戶端裡進行追加,依次打開選項卡“設置>選項>主要”進行手續費的調整。如果你在設置的手續費小於0.0001BTC按0.0001算。當本條規則適用時將會取代步驟2的規則而不是累加。

沒有留言:

張貼留言