]> Untitled Git - bitcoindevkit.org/commitdiff
Publish autogenerated nightly docs
authorgithub-actions <github-actions@github.com>
Wed, 6 Jul 2022 14:48:23 +0000 (14:48 +0000)
committergithub-actions <github-actions@github.com>
Wed, 6 Jul 2022 14:48:23 +0000 (14:48 +0000)
docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/database/memory/index.html
docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.get_funded_wallet.html
docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/fn.wallet_name_from_descriptor.html
docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/index.html
docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk/wallet/struct.Wallet.html
docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/database/memory.rs.html
docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk/wallet/mod.rs.html

index 817a2e84469d33fa5035d20fb8dc91d6d4270303..e2f09d6b49e18535375a521dfc73128be6b2525b 100644 (file)
@@ -6,7 +6,7 @@
                     <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
         </a><h2 class="location"><a href="#">Module memory</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li></ul></div><div id="sidebar-vars" data-name="memory" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../bdk/index.html">
                         <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
-    <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a class="mod" href="#">memory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#12-629" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>In-memory ephemeral database</p>
+    <h1 class="fqn"><span class="in-band">Module <a href="../../index.html">bdk</a>::<wbr><a href="../index.html">database</a>::<wbr><a class="mod" href="#">memory</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/bdk/database/memory.rs.html#12-632" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>In-memory ephemeral database</p>
 <p>This module defines an in-memory database type called <a href="struct.MemoryDatabase.html" title="MemoryDatabase"><code>MemoryDatabase</code></a> that is based on a
 <a href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html" title="BTreeMap"><code>BTreeMap</code></a>.</p>
 </div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
index 3f9d1e97997aeb305aa3fa0a6b1a145eb40fe80e..e4015f11362a49a073d8e341089c5a3bcda35eb1 100644 (file)
@@ -6,6 +6,6 @@
                     <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
         </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="get_funded_wallet" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
                         <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
-    <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">get_funded_wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1747-1785" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn get_funded_wallet(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a>&lt;<a class="enum" href="../database/any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a>&gt;, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, Txid<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Return a fake wallet that appears to be funded for testing.</p>
+    <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">get_funded_wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1745-1783" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn get_funded_wallet(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a>&lt;<a class="enum" href="../database/any/enum.AnyDatabase.html" title="enum bdk::database::any::AnyDatabase">AnyDatabase</a>&gt;, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>, Txid<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Return a fake wallet that appears to be funded for testing.</p>
 </div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
 </body></html>
\ No newline at end of file
index 6580a58edceae9459176269d760c2c7ba4803c8c..5b69b7a33bbd8dab0f38cfcf278d607e4eb4f2ba 100644 (file)
@@ -6,7 +6,7 @@
                     <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
         </a><div class="sidebar-elems"><h2 class="location">In <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a></h2><div id="sidebar-vars" data-name="wallet_name_from_descriptor" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
                         <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
-    <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">wallet_name_from_descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1718-1744" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn wallet_name_from_descriptor&lt;T&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: T, <br>&nbsp;&nbsp;&nbsp;&nbsp;change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;T&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;network: Network, <br>&nbsp;&nbsp;&nbsp;&nbsp;secp: &amp;Secp256k1&lt;All&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>,&nbsp;</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deterministically generate a unique name given the descriptors defining the wallet</p>
+    <h1 class="fqn"><span class="in-band">Function <a href="../index.html">bdk</a>::<wbr><a href="index.html">wallet</a>::<wbr><a class="fn" href="#">wallet_name_from_descriptor</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#1716-1742" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn wallet_name_from_descriptor&lt;T&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: T, <br>&nbsp;&nbsp;&nbsp;&nbsp;change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;T&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;network: Network, <br>&nbsp;&nbsp;&nbsp;&nbsp;secp: &amp;Secp256k1&lt;All&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>,&nbsp;</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deterministically generate a unique name given the descriptors defining the wallet</p>
 <p>Compatible with <a href="fn.wallet_name_from_descriptor.html" title="wallet_name_from_descriptor"><code>wallet_name_from_descriptor</code></a></p>
 </div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="bdk" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.60.0-nightly (51126be1b 2022-01-24)" ></div>
 </body></html>
\ No newline at end of file
index 4e95a97936f3277a1960cf3a7f3f97db7c731851..d2cb3340fd220091bd6eb95e287392e129b0fb4e 100644 (file)
@@ -6,7 +6,7 @@
                     <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></div>
         </a><h2 class="location"><a href="#">Module wallet</a></h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></div><div id="sidebar-vars" data-name="wallet" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../bdk/index.html">
                         <img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
-    <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#12-4778" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wallet</p>
+    <h1 class="fqn"><span class="in-band">Module <a href="../index.html">bdk</a>::<wbr><a class="mod" href="#">wallet</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/bdk/wallet/mod.rs.html#12-4868" title="goto source code">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Wallet</p>
 <p>This module defines the <a href="struct.Wallet.html" title="Wallet"><code>Wallet</code></a> structure.</p>
 </div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
 <div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="address_validator/index.html" title="bdk::wallet::address_validator mod">address_validator</a></div><div class="item-right docblock-short"><p>Address validation callbacks</p>
index 3be7f893bb582e46e121faba5573792f2729604c..19452c801e02bd667c8c79a64fbea5f731a489ea 100644 (file)
@@ -14,7 +14,7 @@ Its main components are:</p>
 <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&lt;D&gt; <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a>&lt;D&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>,&nbsp;</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>&lt;E:&nbsp;<a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: E, <br>&nbsp;&nbsp;&nbsp;&nbsp;change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;E&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;network: Network, <br>&nbsp;&nbsp;&nbsp;&nbsp;database: D<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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&lt;D&gt; <a class="struct" href="struct.Wallet.html" title="struct bdk::wallet::Wallet">Wallet</a>&lt;D&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;D: <a class="trait" href="../database/trait.BatchDatabase.html" title="trait bdk::database::BatchDatabase">BatchDatabase</a>,&nbsp;</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>&lt;E:&nbsp;<a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: E, <br>&nbsp;&nbsp;&nbsp;&nbsp;change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;E&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;network: Network, <br>&nbsp;&nbsp;&nbsp;&nbsp;database: D<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>&lt;E:&nbsp;<a class="trait" href="../descriptor/trait.IntoWalletDescriptor.html" title="trait bdk::descriptor::IntoWalletDescriptor">IntoWalletDescriptor</a>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;descriptor: E, <br>&nbsp;&nbsp;&nbsp;&nbsp;change_descriptor: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;E&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;network: Network, <br>&nbsp;&nbsp;&nbsp;&nbsp;database: D<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>
@@ -77,7 +77,7 @@ wallet’s database.</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;txid: Txid<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a>&lt;'_, 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>&gt;, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;txid: Txid<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="tx_builder/struct.TxBuilder.html" title="struct bdk::wallet::tx_builder::TxBuilder">TxBuilder</a>&lt;'_, 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>&gt;, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>
@@ -102,7 +102,7 @@ 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">&amp;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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;psbt: &amp;mut PartiallySignedTransaction, <br>&nbsp;&nbsp;&nbsp;&nbsp;sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<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>&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;psbt: &amp;mut PartiallySignedTransaction, <br>&nbsp;&nbsp;&nbsp;&nbsp;sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<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>&gt;</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>
@@ -116,18 +116,18 @@ in this library will.</p>
 };
 <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">&amp;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">&quot;we should have signed all the inputs&quot;</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>(&amp;self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../descriptor/policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>&gt;, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>&gt;, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>(&amp;self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../descriptor/policy/struct.Policy.html" title="struct bdk::descriptor::policy::Policy">Policy</a>&gt;, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../descriptor/type.ExtendedDescriptor.html" title="type bdk::descriptor::ExtendedDescriptor">ExtendedDescriptor</a>&gt;, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;psbt: &amp;mut PartiallySignedTransaction, <br>&nbsp;&nbsp;&nbsp;&nbsp;sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<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>&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;psbt: &amp;mut PartiallySignedTransaction, <br>&nbsp;&nbsp;&nbsp;&nbsp;sign_options: <a class="struct" href="signer/struct.SignOptions.html" title="struct bdk::wallet::signer::SignOptions">SignOptions</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<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>&gt;</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>(&amp;self) -&gt; &amp;Secp256k1&lt;All&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -&gt; &amp;<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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;utxo: <a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;sighash_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;PsbtSighashType&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;only_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Input, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>(&amp;self) -&gt; 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>&lt;Target = D&gt; + '_</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>&lt;B:&nbsp;<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>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>B, <br>&nbsp;&nbsp;&nbsp;&nbsp;sync_opts: <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<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>&gt;</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>(&amp;self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -&gt; <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>(&amp;self) -&gt; &amp;Secp256k1&lt;All&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a><br>) -&gt; &amp;<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>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;utxo: <a class="struct" href="../struct.LocalUtxo.html" title="struct bdk::LocalUtxo">LocalUtxo</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;sighash_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;PsbtSighashType&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;only_witness_utxo: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Input, <a class="enum" href="../enum.Error.html" title="enum bdk::Error">Error</a>&gt;</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>(&amp;self) -&gt; 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>&lt;Target = D&gt; + '_</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>&lt;B:&nbsp;<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>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;blockchain: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>B, <br>&nbsp;&nbsp;&nbsp;&nbsp;sync_opts: <a class="struct" href="struct.SyncOptions.html" title="struct bdk::wallet::SyncOptions">SyncOptions</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<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>&gt;</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>(&amp;self, keychain: <a class="enum" href="../enum.KeychainKind.html" title="enum bdk::KeychainKind">KeychainKind</a>) -&gt; <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&lt;D:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>&gt; <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>&lt;D&gt;</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>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <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&lt;D&gt; !<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>&lt;D&gt;</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&lt;D&gt; <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>&lt;D&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,&nbsp;</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&lt;D&gt; !<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>&lt;D&gt;</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&lt;D&gt; <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>&lt;D&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;D: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,&nbsp;</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&lt;D&gt; !<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>&lt;D&gt;</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&lt;T&gt; <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>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</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>(&amp;self) -&gt; <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>
index 6eff42dbe7a60a225b7e84be51ed1a7e9b2fce50..9cd7b5383e8f27da59c68126012fd7cb9b29525d 100644 (file)
 <span id="627">627</span>
 <span id="628">628</span>
 <span id="629">629</span>
+<span id="630">630</span>
+<span id="631">631</span>
+<span id="632">632</span>
 </pre><pre class="rust"><code><span class="comment">// Bitcoin Dev Kit</span>
 <span class="comment">// Written in 2020 by Alekos Filini &lt;alekos.filini@gmail.com&gt;</span>
 <span class="comment">//</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">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="ident">tx_meta</span>.<span class="ident">min_confirmations</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">conf</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::BlockTime</span> {
-            <span class="ident">height</span>: <span class="ident">current_height</span>.<span class="ident">unwrap</span>().<span class="ident">checked_sub</span>(<span class="ident">conf</span> <span class="kw">as</span> <span class="ident">u32</span>).<span class="ident">unwrap</span>(),
-            <span class="ident">timestamp</span>: <span class="number">0</span>,
-        });
+        <span class="kw">let</span> <span class="ident">confirmation_time</span> <span class="op">=</span> <span class="ident">tx_meta</span>
+            .<span class="ident">min_confirmations</span>
+            .<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">v</span><span class="op">|</span> <span class="kw">if</span> <span class="ident">v</span> <span class="op">==</span> <span class="number">0</span> { <span class="prelude-val">None</span> } <span class="kw">else</span> { <span class="prelude-val">Some</span>(<span class="ident">v</span>) })
+            .<span class="ident">map</span>(<span class="op">|</span><span class="ident">conf</span><span class="op">|</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::BlockTime</span> {
+                <span class="ident">height</span>: <span class="ident">current_height</span>.<span class="ident">unwrap</span>().<span class="ident">checked_sub</span>(<span class="ident">conf</span> <span class="kw">as</span> <span class="ident">u32</span>).<span class="ident">unwrap</span>() <span class="op">+</span> <span class="number">1</span>,
+                <span class="ident">timestamp</span>: <span class="number">0</span>,
+            });
 
         <span class="kw">let</span> <span class="ident">tx_details</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">crate::TransactionDetails</span> {
             <span class="ident">transaction</span>: <span class="prelude-val">Some</span>(<span class="ident">tx</span>.<span class="ident">clone</span>()),
index 00e7b44e7328b0569ec1f933bb8f90f7aa4aa4e1..2d6ce6cc6599470af63557778ec810fafca9b92f 100644 (file)
 <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 &lt;alekos.filini@gmail.com&gt;</span>
 <span class="comment">//</span>
     <span class="doccomment">/// # Ok::&lt;(), bdk::Error&gt;(())</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">&amp;</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">&amp;</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">&quot;InsufficientFunds&quot;</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&#39;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 &quot;InsufficientFunds&quot;, 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">&quot;2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX&quot;</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&#39;t be able to use that for</span>
+        <span class="comment">// fee bumping, as it&#39;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>) =&gt; <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">&amp;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">&amp;</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">&amp;</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">&quot;2N1Ffz3WaNzbeLFBb51xyFMHYSEUXcbiSoX&quot;</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>) =&gt; <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">&amp;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">&amp;</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">&amp;</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">&quot;wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)&quot;</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>) =&gt; <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>) =&gt; <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>)
         );