<li>A <a href="../database/trait.Database.html"><code>Database</code></a> where it tracks transactions and utxos related to the descriptors.</li>
<li><a href="signer/index.html"><code>signer</code></a>s that can contribute signatures to addresses instantiated from the descriptors.</li>
</ol>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#172-1713" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_offline" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#178-185" title="goto source code">source</a></div><a href="#method.new_offline" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_offline" class="fnname">new_offline</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E, <br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>, <br> network: Network, <br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>Just use Wallet::new – all wallets are offline now!</p>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#172-1711" title="goto source code">source</a></div><a href="#impl" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new_offline" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#178-185" title="goto source code">source</a></div><a href="#method.new_offline" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new_offline" class="fnname">new_offline</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E, <br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>, <br> network: Network, <br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div><div class="item-info"><div class="stab deprecated"><span class="emoji">👎</span> Deprecated: <p>Just use Wallet::new – all wallets are offline now!</p>
</div></div></summary><div class="docblock"><p>Create a new “offline” wallet</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.new" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#190-237" title="goto source code">source</a></div><a href="#method.new" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a><E: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>>(<br> descriptor: E, <br> change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><E>, <br> network: Network, <br> database: D<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Create a wallet.</p>
<p>The only way this can fail is if the descriptors passed in do not match the checksums in <code>database</code>.</p>
};
<span class="comment">// sign and broadcast ...</span></code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build_fee_bump" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#904-1008" title="goto source code">source</a></div><a href="#method.build_fee_bump" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.build_fee_bump" class="fnname">build_fee_bump</a>(<br> &self, <br> txid: Txid<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'_, D, <a class="type" href="coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="tx_builder/struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Bump the fee of a transaction previously created with this wallet.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.build_fee_bump" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#902-1006" title="goto source code">source</a></div><a href="#method.build_fee_bump" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.build_fee_bump" class="fnname">build_fee_bump</a>(<br> &self, <br> txid: Txid<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a><'_, D, <a class="type" href="coin_selection/type.DefaultCoinSelectionAlgorithm.html" title="type bdk::wallet::coin_selection::DefaultCoinSelectionAlgorithm">DefaultCoinSelectionAlgorithm</a>, <a class="struct" href="tx_builder/struct.BumpFee.html" title="struct bdk::wallet::tx_builder::BumpFee">BumpFee</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Bump the fee of a transaction previously created with this wallet.</p>
<p>Returns an error if the transaction is already confirmed or doesn’t explicitly signal
<em>replace by fee</em> (RBF). If the transaction can be fee bumped then it returns a <a href="tx_builder/struct.TxBuilder.html" title="TxBuilder"><code>TxBuilder</code></a>
pre-populated with the inputs and outputs of the original transaction.</p>
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>())<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">fee_bumped_tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
<span class="comment">// broadcast fee_bumped_tx to replace original</span></code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1036-1081" title="goto source code">source</a></div><a href="#method.sign" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sign" class="fnname">sign</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Sign a transaction with all the wallet’s signers, in the order specified by every signer’s
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sign" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1034-1079" title="goto source code">source</a></div><a href="#method.sign" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sign" class="fnname">sign</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Sign a transaction with all the wallet’s signers, in the order specified by every signer’s
<a href="signer/struct.SignerOrdering.html" title="SignerOrdering"><code>SignerOrdering</code></a></p>
<p>The <a href="signer/struct.SignOptions.html" title="SignOptions"><code>SignOptions</code></a> can be used to tweak the behavior of the software signers, and the way
the transaction is finalized at the end. Note that it can’t be guaranteed that <em>every</em>
};
<span class="kw">let</span> <span class="ident">finalized</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">sign</span>(<span class="kw-2">&mut</span> <span class="ident">psbt</span>, <span class="ident">SignOptions::default</span>())<span class="question-mark">?</span>;
<span class="macro">assert!</span>(<span class="ident">finalized</span>, <span class="string">"we should have signed all the inputs"</span>);</code></pre></div>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.policies" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1084-1098" title="goto source code">source</a></div><a href="#method.policies" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.policies" class="fnname">policies</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../descriptor/policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the spending policies for the wallet’s descriptor</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.public_descriptor" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1104-1113" title="goto source code">source</a></div><a href="#method.public_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.public_descriptor" class="fnname">public_descriptor</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.policies" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1082-1096" title="goto source code">source</a></div><a href="#method.policies" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.policies" class="fnname">policies</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../descriptor/policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the spending policies for the wallet’s descriptor</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.public_descriptor" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1102-1111" title="goto source code">source</a></div><a href="#method.public_descriptor" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.public_descriptor" class="fnname">public_descriptor</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has
the same structure but with every secret key removed</p>
<p>This can be used to build a watch-only version of a wallet</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.finalize_psbt" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1118-1203" title="goto source code">source</a></div><a href="#method.finalize_psbt" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.finalize_psbt" class="fnname">finalize_psbt</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Try to finalize a PSBT</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.finalize_psbt" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1116-1201" title="goto source code">source</a></div><a href="#method.finalize_psbt" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.finalize_psbt" class="fnname">finalize_psbt</a>(<br> &self, <br> psbt: &mut PartiallySignedTransaction, <br> sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Try to finalize a PSBT</p>
<p>The <a href="signer/struct.SignOptions.html" title="SignOptions"><code>SignOptions</code></a> can be used to tweak the behavior of the finalizer.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.secp_ctx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1206-1208" title="goto source code">source</a></div><a href="#method.secp_ctx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.secp_ctx" class="fnname">secp_ctx</a>(&self) -> &Secp256k1<All></h4></div></summary><div class="docblock"><p>Return the secp256k1 context used for all signing operations</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_descriptor_for_keychain" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1211-1214" title="goto source code">source</a></div><a href="#method.get_descriptor_for_keychain" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_descriptor_for_keychain" class="fnname">get_descriptor_for_keychain</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> &<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h4></div></summary><div class="docblock"><p>Returns the descriptor used to create addresses for a particular <code>keychain</code>.</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_psbt_input" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1565-1619" title="goto source code">source</a></div><a href="#method.get_psbt_input" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_psbt_input" class="fnname">get_psbt_input</a>(<br> &self, <br> utxo: <a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>, <br> sighash_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><PsbtSighashType>, <br> only_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Input, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>get the corresponding PSBT Input for a LocalUtxo</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.database" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1661-1663" title="goto source code">source</a></div><a href="#method.database" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.database" class="fnname">database</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = D> + '_</h4></div></summary><div class="docblock"><p>Return an immutable reference to the internal database</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sync" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1667-1700" title="goto source code">source</a></div><a href="#method.sync" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sync" class="fnname">sync</a><B: <a class="trait" href="../blockchain/trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> + <a class="trait" href="../blockchain/trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a>>(<br> &self, <br> blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B, <br> sync_opts: <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Sync the internal database with the blockchain</p>
-</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor_checksum" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1705-1712" title="goto source code">source</a></div><a href="#method.descriptor_checksum" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.descriptor_checksum" class="fnname">descriptor_checksum</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Return the checksum of the public descriptor associated to <code>keychain</code></p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.secp_ctx" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1204-1206" title="goto source code">source</a></div><a href="#method.secp_ctx" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.secp_ctx" class="fnname">secp_ctx</a>(&self) -> &Secp256k1<All></h4></div></summary><div class="docblock"><p>Return the secp256k1 context used for all signing operations</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_descriptor_for_keychain" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1209-1212" title="goto source code">source</a></div><a href="#method.get_descriptor_for_keychain" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_descriptor_for_keychain" class="fnname">get_descriptor_for_keychain</a>(<br> &self, <br> keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -> &<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a></h4></div></summary><div class="docblock"><p>Returns the descriptor used to create addresses for a particular <code>keychain</code>.</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.get_psbt_input" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1563-1617" title="goto source code">source</a></div><a href="#method.get_psbt_input" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.get_psbt_input" class="fnname">get_psbt_input</a>(<br> &self, <br> utxo: <a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>, <br> sighash_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><PsbtSighashType>, <br> only_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><Input, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>get the corresponding PSBT Input for a LocalUtxo</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.database" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1659-1661" title="goto source code">source</a></div><a href="#method.database" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.database" class="fnname">database</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = D> + '_</h4></div></summary><div class="docblock"><p>Return an immutable reference to the internal database</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.sync" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1665-1698" title="goto source code">source</a></div><a href="#method.sync" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.sync" class="fnname">sync</a><B: <a class="trait" href="../blockchain/trait.WalletSync.html" title="trait bdk::blockchain::WalletSync">WalletSync</a> + <a class="trait" href="../blockchain/trait.GetHeight.html" title="trait bdk::blockchain::GetHeight">GetHeight</a>>(<br> &self, <br> blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</a>B, <br> sync_opts: <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>></h4></div></summary><div class="docblock"><p>Sync the internal database with the blockchain</p>
+</div></details><details class="rustdoc-toggle method-toggle" open><summary><div id="method.descriptor_checksum" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1703-1710" title="goto source code">source</a></div><a href="#method.descriptor_checksum" class="anchor"></a><h4 class="code-header">pub fn <a href="#method.descriptor_checksum" class="fnname">descriptor_checksum</a>(&self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></div></summary><div class="docblock"><p>Return the checksum of the public descriptor associated to <code>keychain</code></p>
<p>Internally calls <a href="struct.Wallet.html#method.get_descriptor_for_keychain" title="Self::get_descriptor_for_keychain"><code>Self::get_descriptor_for_keychain</code></a> to fetch the right descriptor</p>
</div></details></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Debug" class="impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#89" title="goto source code">source</a></div><a href="#impl-Debug" class="anchor"></a><h3 class="code-header in-band">impl<D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.fmt" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#89" title="goto source code">source</a></div><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></div></summary><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-RefUnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div><div id="impl-Send" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Send" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>, </span></h3></div><div id="impl-Sync" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Sync" class="anchor"></a><h3 class="code-header in-band">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div><div id="impl-Unpin" class="impl has-srclink"><div class="rightside"></div><a href="#impl-Unpin" class="anchor"></a><h3 class="code-header in-band">impl<D> <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D> <span class="where fmt-newline">where<br> D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>, </span></h3></div><div id="impl-UnwindSafe" class="impl has-srclink"><div class="rightside"></div><a href="#impl-UnwindSafe" class="anchor"></a><h3 class="code-header in-band">impl<D> !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a><D></h3></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl-Any" class="impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132-136" title="goto source code">source</a></div><a href="#impl-Any" class="anchor"></a><h3 class="code-header in-band">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br> T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, </span></h3></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><div class="rightside"><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#133" title="goto source code">source</a></div><a href="#method.type_id" class="anchor"></a><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
<span id="4776">4776</span>
<span id="4777">4777</span>
<span id="4778">4778</span>
+<span id="4779">4779</span>
+<span id="4780">4780</span>
+<span id="4781">4781</span>
+<span id="4782">4782</span>
+<span id="4783">4783</span>
+<span id="4784">4784</span>
+<span id="4785">4785</span>
+<span id="4786">4786</span>
+<span id="4787">4787</span>
+<span id="4788">4788</span>
+<span id="4789">4789</span>
+<span id="4790">4790</span>
+<span id="4791">4791</span>
+<span id="4792">4792</span>
+<span id="4793">4793</span>
+<span id="4794">4794</span>
+<span id="4795">4795</span>
+<span id="4796">4796</span>
+<span id="4797">4797</span>
+<span id="4798">4798</span>
+<span id="4799">4799</span>
+<span id="4800">4800</span>
+<span id="4801">4801</span>
+<span id="4802">4802</span>
+<span id="4803">4803</span>
+<span id="4804">4804</span>
+<span id="4805">4805</span>
+<span id="4806">4806</span>
+<span id="4807">4807</span>
+<span id="4808">4808</span>
+<span id="4809">4809</span>
+<span id="4810">4810</span>
+<span id="4811">4811</span>
+<span id="4812">4812</span>
+<span id="4813">4813</span>
+<span id="4814">4814</span>
+<span id="4815">4815</span>
+<span id="4816">4816</span>
+<span id="4817">4817</span>
+<span id="4818">4818</span>
+<span id="4819">4819</span>
+<span id="4820">4820</span>
+<span id="4821">4821</span>
+<span id="4822">4822</span>
+<span id="4823">4823</span>
+<span id="4824">4824</span>
+<span id="4825">4825</span>
+<span id="4826">4826</span>
+<span id="4827">4827</span>
+<span id="4828">4828</span>
+<span id="4829">4829</span>
+<span id="4830">4830</span>
+<span id="4831">4831</span>
+<span id="4832">4832</span>
+<span id="4833">4833</span>
+<span id="4834">4834</span>
+<span id="4835">4835</span>
+<span id="4836">4836</span>
+<span id="4837">4837</span>
+<span id="4838">4838</span>
+<span id="4839">4839</span>
+<span id="4840">4840</span>
+<span id="4841">4841</span>
+<span id="4842">4842</span>
+<span id="4843">4843</span>
+<span id="4844">4844</span>
+<span id="4845">4845</span>
+<span id="4846">4846</span>
+<span id="4847">4847</span>
+<span id="4848">4848</span>
+<span id="4849">4849</span>
+<span id="4850">4850</span>
+<span id="4851">4851</span>
+<span id="4852">4852</span>
+<span id="4853">4853</span>
+<span id="4854">4854</span>
+<span id="4855">4855</span>
+<span id="4856">4856</span>
+<span id="4857">4857</span>
+<span id="4858">4858</span>
+<span id="4859">4859</span>
+<span id="4860">4860</span>
+<span id="4861">4861</span>
+<span id="4862">4862</span>
+<span id="4863">4863</span>
+<span id="4864">4864</span>
+<span id="4865">4865</span>
+<span id="4866">4866</span>
+<span id="4867">4867</span>
+<span id="4868">4868</span>
</pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
<span class="comment">// Written in 2020 by Alekos Filini <alekos.filini@gmail.com></span>
<span class="comment">//</span>
<span class="doccomment">/// # Ok::<(), bdk::Error>(())</span>
<span class="doccomment">/// ```</span>
<span class="comment">// TODO: support for merging multiple transactions while bumping the fees</span>
- <span class="comment">// TODO: option to force addition of an extra output? seems bad for privacy to update the</span>
- <span class="comment">// change</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">build_fee_bump</span>(
<span class="kw-2">&</span><span class="self">self</span>,
<span class="ident">txid</span>: <span class="ident">Txid</span>,
.<span class="ident">drain_to</span>(<span class="ident">drain_addr</span>.<span class="ident">script_pubkey</span>())
.<span class="ident">drain_wallet</span>();
<span class="kw">let</span> (<span class="ident">psbt</span>, <span class="ident">details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
- <span class="macro">dbg!</span>(<span class="kw-2">&</span><span class="ident">psbt</span>);
<span class="kw">let</span> <span class="ident">outputs</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">unsigned_tx</span>.<span class="ident">output</span>;
<span class="macro">assert_eq!</span>(<span class="ident">outputs</span>.<span class="ident">len</span>(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(<span class="ident">details</span>.<span class="ident">fee</span>.<span class="ident">unwrap_or</span>(<span class="number">0</span>), <span class="number">250</span>);
}
+ <span class="attribute">#[<span class="ident">test</span>]</span>
+ <span class="attribute">#[<span class="ident">should_panic</span>(<span class="ident">expected</span> <span class="op">=</span> <span class="string">"InsufficientFunds"</span>)]</span>
+ <span class="kw">fn</span> <span class="ident">test_bump_fee_unconfirmed_inputs_only</span>() {
+ <span class="comment">// We try to bump the fee, but:</span>
+ <span class="comment">// - We can't reduce the change, as we have no change</span>
+ <span class="comment">// - All our UTXOs are unconfirmed</span>
+ <span class="comment">// So, we fail with "InsufficientFunds", as per RBF rule 2:</span>
+ <span class="comment">// The replacement transaction may only include an unconfirmed input</span>
+ <span class="comment">// if that input was included in one of the original transactions.</span>
+ <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
+ <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
+ <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
+ <span class="ident">builder</span>
+ .<span class="ident">drain_wallet</span>()
+ .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
+ .<span class="ident">enable_rbf</span>();
+ <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="comment">// Now we receive one transaction with 0 confirmations. We won't be able to use that for</span>
+ <span class="comment">// fee bumping, as it's still unconfirmed!</span>
+ <span class="macro">crate::populate_test_db!</span>(
+ <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
+ <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">0</span>)),
+ <span class="prelude-val">Some</span>(<span class="number">100</span>),
+ );
+ <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
+ <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
+ <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
+ <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="number">108</span>]); <span class="comment">// fake signature</span>
+ <span class="ident">wallet</span>
+ .<span class="ident">database</span>
+ .<span class="ident">borrow_mut</span>()
+ .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
+ .<span class="ident">unwrap</span>();
+ }
+ <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
+ <span class="ident">wallet</span>
+ .<span class="ident">database</span>
+ .<span class="ident">borrow_mut</span>()
+ .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
+ .<span class="ident">unwrap</span>();
+
+ <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
+ <span class="ident">builder</span>.<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">25.0</span>));
+ <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ }
+
+ <span class="attribute">#[<span class="ident">test</span>]</span>
+ <span class="kw">fn</span> <span class="ident">test_bump_fee_unconfirmed_input</span>() {
+ <span class="comment">// We create a tx draining the wallet and spending one confirmed</span>
+ <span class="comment">// and one unconfirmed UTXO. We check that we can fee bump normally</span>
+ <span class="comment">// (BIP125 rule 2 only apply to newly added unconfirmed input, you can</span>
+ <span class="comment">// always fee bump with an unconfirmed input if it was included in the</span>
+ <span class="comment">// original transaction)</span>
+ <span class="kw">let</span> (<span class="ident">wallet</span>, <span class="ident">descriptors</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="ident">get_test_wpkh</span>());
+ <span class="kw">let</span> <span class="ident">addr</span> <span class="op">=</span> <span class="ident">Address::from_str</span>(<span class="string">"2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX"</span>).<span class="ident">unwrap</span>();
+ <span class="comment">// We receive a tx with 0 confirmations, which will be used as an input</span>
+ <span class="comment">// in the drain tx.</span>
+ <span class="macro">crate::populate_test_db!</span>(
+ <span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
+ <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">0</span>)),
+ <span class="prelude-val">Some</span>(<span class="number">100</span>),
+ );
+ <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_tx</span>();
+ <span class="ident">builder</span>
+ .<span class="ident">drain_wallet</span>()
+ .<span class="ident">drain_to</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
+ .<span class="ident">enable_rbf</span>();
+ <span class="kw">let</span> (<span class="ident">psbt</span>, <span class="kw-2">mut</span> <span class="ident">original_details</span>) <span class="op">=</span> <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tx</span> <span class="op">=</span> <span class="ident">psbt</span>.<span class="ident">extract_tx</span>();
+ <span class="kw">let</span> <span class="ident">txid</span> <span class="op">=</span> <span class="ident">tx</span>.<span class="ident">txid</span>();
+ <span class="kw">for</span> <span class="ident">txin</span> <span class="kw">in</span> <span class="kw-2">&mut</span> <span class="ident">tx</span>.<span class="ident">input</span> {
+ <span class="ident">txin</span>.<span class="ident">witness</span>.<span class="ident">push</span>([<span class="number">0x00</span>; <span class="number">108</span>]); <span class="comment">// fake signature</span>
+ <span class="ident">wallet</span>
+ .<span class="ident">database</span>
+ .<span class="ident">borrow_mut</span>()
+ .<span class="ident">del_utxo</span>(<span class="kw-2">&</span><span class="ident">txin</span>.<span class="ident">previous_output</span>)
+ .<span class="ident">unwrap</span>();
+ }
+ <span class="ident">original_details</span>.<span class="ident">transaction</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">tx</span>);
+ <span class="ident">wallet</span>
+ .<span class="ident">database</span>
+ .<span class="ident">borrow_mut</span>()
+ .<span class="ident">set_tx</span>(<span class="kw-2">&</span><span class="ident">original_details</span>)
+ .<span class="ident">unwrap</span>();
+
+ <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">builder</span> <span class="op">=</span> <span class="ident">wallet</span>.<span class="ident">build_fee_bump</span>(<span class="ident">txid</span>).<span class="ident">unwrap</span>();
+ <span class="ident">builder</span>
+ .<span class="ident">fee_rate</span>(<span class="ident">FeeRate::from_sat_per_vb</span>(<span class="number">15.0</span>))
+ .<span class="ident">allow_shrinking</span>(<span class="ident">addr</span>.<span class="ident">script_pubkey</span>())
+ .<span class="ident">unwrap</span>();
+ <span class="ident">builder</span>.<span class="ident">finish</span>().<span class="ident">unwrap</span>();
+ }
+
<span class="attribute">#[<span class="ident">test</span>]</span>
<span class="kw">fn</span> <span class="ident">test_sign_single_xprv</span>() {
<span class="kw">let</span> (<span class="ident">wallet</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">get_funded_wallet</span>(<span class="string">"wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)"</span>);
<span class="macro">crate::populate_test_db!</span>(
<span class="ident">wallet</span>.<span class="ident">database</span>.<span class="ident">borrow_mut</span>(),
- <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">0</span>)),
+ <span class="macro">testutils!</span> (@<span class="ident">tx</span> ( (@<span class="ident">external</span> <span class="ident">descriptors</span>, <span class="number">0</span>) => <span class="number">25_000</span> ) (@<span class="ident">confirmations</span> <span class="number">1</span>)),
<span class="prelude-val">Some</span>(<span class="ident">confirmation_time</span>),
(@<span class="ident">coinbase</span> <span class="bool-val">true</span>)
);