From 259bda8fa94fc7d7ea20e7eb5719ecc640ea07d2 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Fri, 14 Feb 2025 11:24:43 +0100 Subject: [PATCH] bp: fix non-updated change vout after adding opret --- Cargo.lock | 15 ++++----------- psbt/src/bp.rs | 4 ++-- psbt/src/common.rs | 2 +- src/runtime.rs | 4 ++-- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3c2e6bb..5e91308 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -471,9 +471,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.2.13" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "jobserver", "libc", @@ -1618,15 +1618,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" dependencies = [ "cc", "cfg-if", "getrandom", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -1940,12 +1939,6 @@ dependencies = [ "ultrasonic", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "stable_deref_trait" version = "1.2.0" diff --git a/psbt/src/bp.rs b/psbt/src/bp.rs index 40cf192..0e3489d 100644 --- a/psbt/src/bp.rs +++ b/psbt/src/bp.rs @@ -33,7 +33,7 @@ impl RgbPsbt for Psbt { fn rgb_resolve( &mut self, script: PaymentScript, - mut change_vout: Option, + change_vout: &mut Option, ) -> Result, RgbPsbtPrepareError> { match self.opret_hosts().count() { 0 => { @@ -51,7 +51,7 @@ impl RgbPsbt for Psbt { self.complete_construction(); script - .resolve_seals(self.script_resolver(), change_vout) + .resolve_seals(self.script_resolver(), *change_vout) .map_err(|_| RgbPsbtPrepareError::ChangeRequired) } diff --git a/psbt/src/common.rs b/psbt/src/common.rs index 7f6d934..ea7c3a6 100644 --- a/psbt/src/common.rs +++ b/psbt/src/common.rs @@ -30,7 +30,7 @@ pub trait RgbPsbt { fn rgb_resolve( &mut self, script: PaymentScript, - change_vout: Option, + change_vout: &mut Option, ) -> Result, RgbPsbtPrepareError>; fn rgb_fill_csv(&mut self, bundle: &PrefabBundle) -> Result<(), RgbPsbtCsvError>; diff --git a/src/runtime.rs b/src/runtime.rs index 1269cc4..002d9eb 100644 --- a/src/runtime.rs +++ b/src/runtime.rs @@ -124,10 +124,10 @@ impl, X: Excavate Result<(Psbt, PrefabBundle), TransferError> { - let (mut psbt, meta) = self.0.wallet.compose_psbt(&script, params)?; + let (mut psbt, mut meta) = self.0.wallet.compose_psbt(&script, params)?; // From this moment transaction becomes unmodifiable - let request = psbt.rgb_resolve(script, meta.change_vout)?; + let request = psbt.rgb_resolve(script, &mut meta.change_vout)?; let bundle = self.bundle(request, meta.change_vout)?; psbt.rgb_fill_csv(&bundle)?;