Transaction-Fees
如何在bitcoinj中設置費用
是否有任何可能的方式將費用設置為 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}.