-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update BDK version to 0.12.0 #41
Conversation
Updating the BDK version creates some breaking change. One of such change probably requires modification of BDK to expose a new function to fetch scriptpubkey from a txid. Used ureq version of esplora to remove async related complexities.
Cargo.toml
Outdated
@@ -12,7 +12,7 @@ readme = "README.md" | |||
license = "MIT" | |||
|
|||
[dependencies] | |||
bdk = { version = "^0.7", default-features = false, features = ["all-keys"]} | |||
bdk = { version = "0.10.0", default-features = false, features = ["all-keys"]} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't able to connect to the blockstream esplora server via https (and http redirects to https) because bdk
disables ureq
default features. @tcharding was disabling the tls
feature intentional?
@rajarshimaitra If having the ureq
tls
feature disabled by default is intentional I think it makes sense to add a ureq-tls = [ "ureq/tls" ]
feature to bdk
so we can enable it from the bdk-cli
project (or for others who need it).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good Idea. Better to enable tls
in ureq
if we use it. IMO connecting https will be quite a generic requirement. Will open a PR if we all agree the same.
We don't need another feature flag for this, just add tls
in ureq
's feature list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True, maybe best of have tls
feature enabled by default in bdk
, but first I'd like to get @tcharding's input since he originally added the ureq
dependency and may have an argument for leaving tls
off by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have no problem with enabling TLS by default. As for why I disabled it, I can't remember exactly why, I probably just disabled default features during a debugging session and never turned TLS back on. Thanks for checking in with me and thanks for giving it the thought to realize we should enable it by default!
Cargo.toml
Outdated
@@ -32,7 +32,7 @@ default = ["cli", "repl"] | |||
cli = ["bdk/key-value-db", "clap", "dirs-next", "env_logger"] | |||
repl = ["regex", "rustyline"] | |||
electrum = ["bdk/electrum"] | |||
esplora = ["bdk/esplora"] | |||
esplora = ["bdk/use-esplora-ureq"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm trying to use this to test bitcoindevkit/bdk#429: to get bdk-cli to work in the browser we need a way to enable bdk/use-esplora-reqwest
. I would suggest maybe adding another feature esplora-reqwest
that we can use from wasm32
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or maybe even better: async-esplora
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this PR may be blocked until @tcharding and @LLFourn work out things out with bitcoindevkit/bdk#433.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. I am not really sure how big the httpclient fix would be. If it takes much longer, can we consider merging bitcoindevkit/bdk#430 in the mean time? #36 is also pending on this one.
And I think that will fix @afilini 's issue too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the meantime I made this branch just to test the playground: https://github.com/afilini/bdk-cli/tree/update-with-reqwest
Added esplora-reqwest into bdk-cli. @notmandatory we have to use @afilini please check if this meets your requirement, or something more to be done? To use request compile with |
88621be
to
dbf3a1f
Compare
When |
@notmandatory just FYI, the rest of the open PRs builds on top of this. So this needs to go first before they can be merged.. :) |
I just made the |
BDK v0.10.0 adds a stop_gap parameter to electrum config.
Esplora ureq version requires having new cli args.
Adds esplora-reqwest capability from bdk. Allows to use async https connections with esplora from bdk-cli.
Recent update in BDK esplora backend allows it to connect with SOCKS5 proxy. This change adds proxy option to esplora configuration. Updates Proxy_Opts feature guard to enable it for esplora feature.
dbf3a1f
to
f9a9606
Compare
Rebased with bdk v0.12. FYI, I am not updating #42 and #36 right now. For simplicity of merging this needs to be merged first. Then the rest two can be rebased on top of updated master. I think that will simplify the review process as all these PRs are interdependent. This one is the biggest change among all other as it handles all the update from bdk v0.10 to v0.12. So keeping this one separate from review of the rest. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
re-ACK f9a9606
I manually tested and works fine as long as correct esplora server URL is used. Either README needs to be updated, defaults need to be changed for testnet
or maybe something else. Will merge this now so other PRs can proceed and we can fix the esplora server URL issue in a subsequent PR.
Description
This PR updates the upstream BDK version to latest release (
v0.10.0
).Notes to the reviewers
The latest release of BDK includes some breaking changes, some of which are handled here. A previously available function in BDK,
maintain_single_recipient()
is changed intoallow_shrinking()
which requires a scriptpubkey to be specified. So far I couldn't find any public API in BDK using which a scriptpubkey (or the transaction) can be retrieved from the wallet given a TxID. Marked the code with aTODO
. It probably needs some additional API in BDK. Made an issue (bitcoindevkit/bdk#427) to track this.BDK
esplora
blockchain module has been divided into two typesusing-ureq
andusing-reqwest
.reqwest
is an async feature in BDK, which producesFuture
related errors inbdk-cli
(#36 (comment)). Trying to solve that error creates more complexity (async related weridness). Thus decided to scrapreqwest
and go with blockingureq
version, which I think is adequate for the usecases ofbdk-cli
.Updated electrum cli args.
Checklists
All Submissions:
cargo fmt
andcargo clippy
before committingNew Features:
CHANGELOG.md
Bugfixes: