Commit Graph
275 Commits
Author SHA1 Message Date
Alekos Filini 7e90657ee1 [descriptor] Make the syntax of descriptor!() more consistent
The syntax now is pretty much the same as the normal descriptor syntax,
with the only difference that modifiers cannot be grouped together (i.e.
`sdv:older(144)` must be turned into `s:d:v:older(144)`.
2020-12-16 19:00:55 +01:00
Alekos Filini 5f373180ff Merge commit 'refs/pull/223/head' of github.com:bitcoindevkit/bdk 2020-12-16 11:11:38 +01:00
Alekos Filini 931a110e4e Merge commit 'refs/pull/229/head' of github.com:bitcoindevkit/bdk 2020-12-16 10:48:10 +01:00
Steve Myers 148e8c6088 [docs] Add docs to the 'wallet' module 2020-12-15 15:12:32 -08:00
Evgenii P 09730c0898 Take ID into account in SignersContainerKey's PartialEq impl 2020-12-15 22:40:07 +07:00
Alekos Filini 6d9472793c Merge commit 'refs/pull/228/head' of github.com:bitcoindevkit/bdk 2020-12-15 14:33:59 +01:00
Alekos Filini eadf50042c [wallet] Add tests for check_nsequence_rbf and check_nlocktime 2020-12-15 12:01:44 +01:00
Alekos Filini 322122afc8 [wallet] Set the correct nSequence when RBF and OP_CSV are used
This commit also fixes the timelock comparing logic in the policy module, since
the rules are different for absolute (OP_CLTV) and relative (OP_CSV) timelocks.

Fixes #215
2020-12-15 12:01:41 +01:00
Evgenii P 5315c3ef25 rustfmt 2020-12-15 11:36:26 +07:00
Evgenii P c58236fcd7 Fix SignersContainer::find to filter out incorrect IDs 2020-12-15 11:36:26 +07:00
Evgenii P 2658a9b05a Fix SignersContainerKey PartialOrd to respect the ID 2020-12-15 11:36:26 +07:00
Evgenii P c075183a7b Revert replacing BTreeMap to HashMap in SingersContainer 2020-12-15 11:35:34 +07:00
LLFourn 9b31ae9153 Fix doc comment fallout from s/script type/keychain 2020-12-15 08:39:19 +11:00
Alekos Filini 1713d621d4 Rename ScriptType to KeychainKind
This avoids confusion with the "type of script".
2020-12-14 17:14:24 +01:00
Alekos Filini 0ef0b45745 Merge commit 'refs/pull/224/head' of github.com:bitcoindevkit/bdk 2020-12-14 11:18:51 +01:00
Evgenii P 351b656a82 Use unstable sort by key for performance 2020-12-14 16:27:54 +07:00
Evgenii P 95af38a01d rustfmt 2020-12-14 01:03:14 +07:00
Evgenii P 3ceaa33de0 Add unit tests for SignersContainer 2020-12-14 01:03:14 +07:00
Evgenii P 5d190aa87d Remove debug output 2020-12-14 01:02:48 +07:00
Evgenii P 20e0a4d421 Replace BTreeMap with a HashMap 2020-12-13 18:37:27 +07:00
Alekos Filini 9bafdfe2d4 [docs] Various fixes to the docs 2020-12-11 11:16:38 +01:00
Steve Myers 602ae3d63a Add TODOs for missing_docs 2020-12-07 18:25:16 -08:00
Alekos Filini eef59e463d Merge commit 'refs/pull/210/head' of github.com:bitcoindevkit/bdk 2020-12-07 11:21:21 +01:00
LLFourn 8dcb75dfa4 Replace UTXO::is_internal with script_type
This means less conversion and logic mapping from bool to ScriptType and
back again.
2020-12-04 10:46:25 +11:00
Steve Myers 2e7f98a371 Fix docs 2020-12-02 16:57:59 -08:00
Alekos Filini 5d352ecb63 [wallet] Add tests for TxBuilder::add_global_xpubs() 2020-12-01 16:43:40 +01:00
Alekos Filini ebfe5db0c3 [wallet] Add a flag to fill-in PSBT_GLOBAL_XPUB 2020-12-01 16:43:38 +01:00
LLFourn 67957a93b9 [wallet] Add wallet.network() 2020-12-01 13:29:20 +11:00
LLFourn dd35903660 Remove trait bounds on Wallet struct
see: https://github.com/rust-lang/api-guidelines/issues/6
2020-11-24 12:40:58 +11:00
LLFourn acc0ae14ec [wallet] Eagerly finalize inputs
If we know the final witness/scriptsig for an input we should add it
right away to the PSBT. Before, if we couldn't finalize any of them we
finalized none of them.
2020-11-23 16:07:50 +11:00
Justin Moon b1b2f2abd6 [wallet] Don't wrap SignersContainer arguments in Arc 2020-11-19 10:27:33 -06:00
Justin Moon f9d3467397 [wallet] Add witness and redeem scripts to PSBT outputs 2020-11-18 11:40:34 -06:00
Alekos Filini fe7ecd3dd2 Merge commit 'refs/pull/167/head' of github.com:bitcoindevkit/bdk 2020-11-18 10:44:54 +01:00
Alekos Filini a601337e0c Merge commit 'refs/pull/166/head' of github.com:bitcoindevkit/bdk 2020-11-18 10:31:51 +01:00
Alekos Filini 7a42c5e095 Switch to "mainline" rust-miniscript 2020-11-17 23:57:28 +01:00
LLFourn 35579cb216 [wallet] Build output lookup inside complete transaction
To avoid the caller having to do it.
2020-11-17 15:11:47 +11:00
LLFourn fcc408f346 [wallet] Add test that shwpkh populates witness_utxo 2020-11-17 15:11:47 +11:00
LLFourn 004f81b0a8 [wallet] Make coin_select return UTXOs instead of TxIns
- We want to keep the metadata in the UTXO around for things later
- It is easier to turn a UTXO into a TxIn outside
2020-11-17 15:11:47 +11:00
Alekos Filini a30ad49f63 [wallet] Use the branch-and-bound cs by default
Keep the `LargestFirst` coin selection for the tests, to make them more
predictable.
2020-11-16 14:08:04 +01:00
Riccardo Casatta 4f99c77abe [sync] check last derivation in cache to avoid recomputation 2020-11-16 12:06:48 +01:00
Alekos Filini 7c80aec454 [wallet] Take both spending policies into account in create_tx
This allows specifying different "policy paths" for the internal and external
descriptors, and adds additional checks to make sure they are compatibile (i.e.
the timelocks are expressed in the same unit).

It's still suboptimal, since the `n_sequence`s are per-input and not per-transaction,
so it should be possibile to spend different inputs with different, otherwise
incompatible, `CSV` timelocks, but that requires a larger refactor that
can be done in a future patch.

This commit also tries to clarify how the "policy path" should be used by adding
a fairly detailed example to the docs.
2020-11-13 12:55:42 +01:00
Daniela Brozzoni 9f31ad1bc8 [wallet] Replace must_use with required in coin selection 2020-11-13 12:42:07 +01:00
Daniela Brozzoni c43f201e35 [wallet] Add tests for BranchAndBoundCoinSelection::single_random_draw 2020-11-13 12:42:06 +01:00
Daniela Brozzoni 23824321ba [wallet] Add tests for BranchAndBoundCoinSelection::bnb 2020-11-13 12:42:06 +01:00
Daniela Brozzoni be91997d84 [wallet] Add tests for BranchAndBoundCoinSelection::coin_select 2020-11-13 12:42:06 +01:00
Daniela Brozzoni 99060c5627 [wallet] Add Branch and Bound coin selection 2020-11-13 12:42:06 +01:00
Daniela Brozzoni a86706d1a6 [wallet] Use TXIN_DEFAULT_WEIGHT constant in coin selection
Replace all the occurences of `serialize(&txin)`
with TXIN_DEFAULT_WEIGHT.
2020-11-13 12:42:06 +01:00
Alekos Filini 36c5a4dc0c [wallet] Split send_all into set_single_recipient and drain_wallet
Previously `send_all` was particularly confusing, because when used on a
`create_tx` it implied two things:
- spend everything that's in the wallet (if no utxos are specified)
- don't create a change output

But when used on a `bump_fee` it only meant to not add a change output
and instead reduce the only existing output to increase the fee.

This has now been split into two separate options that should hopefully
make it more clear to use, as described in #142.

Additionally, `TxBuilder` now has a "context", that basically allows to
make some flags available only when they are actually meaningful, either
for `create_tx` or `bump_fee`.

Closes #142.
2020-11-05 12:06:43 +01:00
LLFourn 796f9f5a70 Make Signer and AddressValidator Send and Sync 2020-11-03 16:16:32 +11:00
LLFourn 3b3659fc0c Remove redundant Box around signers 2020-11-03 16:06:43 +11:00