Skip to content

Commit b78cbfa

Browse files
committed
rpc_api: fund_raw_transaction: Use option change_position.
1 parent 6f1709e commit b78cbfa

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/client/rpc_api.rs

+11-4
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ impl RpcApi for Client {
374374
fn fund_raw_transaction<R: bitcoincore_rpc::RawTx>(
375375
&self,
376376
tx: R,
377-
_options: Option<&json::FundRawTransactionOptions>,
377+
options: Option<&json::FundRawTransactionOptions>,
378378
_is_witness: Option<bool>,
379379
) -> bitcoincore_rpc::Result<json::FundRawTransactionResult> {
380380
let mut transaction: Transaction = encode::deserialize_hex(&tx.raw_hex())?;
@@ -421,15 +421,22 @@ impl RpcApi for Client {
421421
..Default::default()
422422
};
423423

424-
transaction.input.insert(0, txin);
424+
let insert_idx = match options {
425+
Some(option) => option
426+
.change_position
427+
.unwrap_or((transaction.input.len()) as u32),
428+
None => (transaction.input.len()) as u32,
429+
};
430+
431+
transaction.input.insert(insert_idx as usize, txin);
425432
tracing::debug!("New transaction: {transaction:?}");
426433

427434
let hex = serialize(&transaction);
428435

429436
Ok(json::FundRawTransactionResult {
430437
hex,
431438
fee: Amount::from_sat(0),
432-
change_position: 0,
439+
change_position: insert_idx as i32,
433440
})
434441
}
435442

@@ -822,7 +829,7 @@ mod tests {
822829
let tx = deserialize::<Transaction>(&res.hex).unwrap();
823830

824831
assert_ne!(og_tx, tx);
825-
assert_eq!(res.change_position, 0);
832+
assert_ne!(res.change_position, -1);
826833

827834
let res = rpc.fund_raw_transaction(&tx, None, None).unwrap();
828835
let new_tx = String::consensus_decode(&mut res.hex.as_slice()).unwrap();

0 commit comments

Comments
 (0)