Transaction-Fees

如何在bitcoinj中設置費用

  • June 27, 2020

是否有任何可能的方式將費用設置為 bitcoinj 錢包中的特定值?現在我有這樣的東西,我不知道什麼時候設置費用:

   Address address = Address.fromBase58(params, destAddress);
   SendRequest req = SendRequest.to(address, Coin.valueOf(value));

   b_wallet.completeTx(req);
   peers.broadcastTransaction(req.tx);

可以是這樣的,

req.fee = Transaction.REFERENCE_DEFAULT_MIN_TX_FEE;

REFERENCE_DEFAULT_MIN_TX_FEE指在一個區塊中中繼交易所需的最低費用,截至目前設置為 1000 Satoshis。

必須記住,交易費用就像比特幣使用者提出的一種激勵措施,以確保特定交易將被包含在未來(並且很快)生成的塊中。因此,交易中必須包含適當的費用價值。也檢查 FeesPerKB。

您可以使用 Context 類調整每 kb 的費用。這是我的背景:

context = new Context(this.params, 50, Coin.valueOf(500000), true);

Coin.valueOf(500000) 是設置每 kb 的費用。你可以用這個調整費用。您可以擴展 Wallet 類並覆蓋 calculateFee() 方法,您可以直接設置費用。但這是一個有點複雜的方法,你必須小心。

如果您使用預設設置創建上下文,則它將每 kb 的費用設置為 DEFAULT_TX_FEE,其值為 Coin.valueOf(100000) (1 mBTC) 這太低了。我將其設置為 500000 這更好。

您可以查看 Context 建構子。每個參數都有解釋。

* @param params The network parameters that will be associated with this context.
* @param eventHorizon Number of blocks after which the library will delete data and be unable to always process reorgs (see {@link #getEventHorizon()}.
* @param feePerKb The default fee per 1000 bytes of transaction data to pay when completing transactions. For details, see {@link SendRequest#feePerKb}.
* @param ensureMinRequiredFee Whether to ensure the minimum required fee by default when completing transactions. For details, see {@link SendRequest#ensureMinRequiredFee}.

引用自:https://bitcoin.stackexchange.com/questions/48569