1. 程式人生 > >比特幣交易手續費(Transaction Fees)怎麼計算?

比特幣交易手續費(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的規則而不是累加。