rust-bitcoin / rust-bitcoinconsensus

Bitcoin's libbitcoinconsenus.a with Rust binding. Built from Bitcoin sources with cargo.
Apache License 2.0
46 stars 34 forks source link

Update Bitcoin core? #66

Closed panicfarm closed 8 months ago

panicfarm commented 12 months ago

As I understand, the bitcoin core version in the dependencies is currently 0.20? That is pre-taproot. When do you plan to update to a more modern version, such as 0.25, that includes taproot?

tcharding commented 11 months ago

I can push this up my todo list for you. I can't remember what happened before when I tried but I know I got stuck

https://github.com/rust-bitcoin/rust-bitcoinconsensus/pull/42

panicfarm commented 11 months ago

I can push this up my todo list for you. I can't remember what happened before when I tried but I know I got stuck

42

It would be great to get this updated, but I do not understand why the latest bitcoinconsensus lib still doesn't have Taproot (we need taproot). Aren't they compiling it from the same bitcoin core code, that has had taproot since 0.22?

tcharding commented 11 months ago

cc #68

panicfarm commented 11 months ago

Question: It seems that the current libconsensus doesn't have taproot support, they are still working on it. Isn't libconsensus from bitcoin core compiled from the same code as the core itself? Core had taproot since 0.22. Which version are you going to vendor?

cc https://github.com/rust-bitcoin/rust-bitcoinconsensus/pull/68

tcharding commented 11 months ago

I can't talk for how Bitcoin Core dev works, no clue why https://github.com/bitcoin/bitcoin/issues/21133 has a merge date of October 17 this year?

Which version are you going to vendor?

My intention, and I don't speak for the whole project but just what I have in mind, is to upgrade this lib to the newest version of Core and then, on the way, maintain an LTS for the last 4 versions.

apoelstra commented 11 months ago

I don't speak for the whole project

This sounds great to me. Thank you for spearheading this and let me know how I can support.

tcharding commented 11 months ago

If you can just review and smash out the releases then I think we can get there pretty quick (assuming the vendoring script in #70 is correct).

panicfarm commented 11 months ago

I can't talk for how Bitcoin Core dev works, no clue why bitcoin/bitcoin#21133 has a merge date of October 17 this year?

Here's the answer . Looks like it's finally there?

tcharding commented 11 months ago

Thanks man, lets keep pushing then to get this lib up to the current version of Core quick as we can.

Davidson-Souza commented 11 months ago

26 released taproot on libbitcoinconsensus. If we want taproot we need to go straight to 26. Any reason why we need to do previous releases?

My intention, and I don't speak for the whole project but just what I have in mind, is to upgrade this lib to the newest version of Core and then, on the way, maintain an LTS for the last 4 versions.

Strong Concept ACK. Let-me know if you need some help.

Edit: link to 26's release notes with:

A new bitcoinconsensus_SCRIPT_FLAGS_VERIFY_TAPROOT flag is available in libconsensus that will verify scripts with the Taproot spending rules.

panicfarm commented 11 months ago

I would suggest going straight to 0.26 with Taproot . This is the main reason why we, for example , need the crate update. Evidently 0.25 did not include taproot

apoelstra commented 10 months ago

26 released taproot on libbitcoinconsensus. If we want taproot we need to go straight to 26. Any reason why we need to do previous releases?

For completeness, and to practice our new vendoring scheme.

We should be able to bang out every release within a day or two once we get our process working and when it stops being the Christmas/New Year week.

panicfarm commented 9 months ago

Do you guys have any ETA on the release vendoring v26 core with taproot support?

tcharding commented 9 months ago

No ETA but we can push a bit harder. It should be trivial now to get to v25 then the 26 release will take a bit of work to add the two new arguments to verify_script.

Davidson-Souza commented 9 months ago

Perhaps we should also start planning for #29189? Maybe archive this repo once the deprecation lands and move efforts to a libbitcoinkernel binding?

tcharding commented 9 months ago

Sounds reasonable, I personally hadn't gotten any further than thinking about getting this lib to Bitcoin Core v25.

apoelstra commented 9 months ago

We'll archive the repo when it's actually dropped from Core.

I had a half-baked idea to replace bitcoinconsensus with bitcoinkernel here .. but you're probably right that the correct approach is to restart in a new crate.

panicfarm commented 9 months ago

We are very close to open-sourcing a large project. We are using bitcoinconsensus::verify_with_flags() for all inputs. Not having support for Taproot verification is a showstopper for us. We understand the longer-term plans discussed above, but it looks like libbitcoinkernel could take a while on the Bitcoin Core side, and then it will take additional time to wrap it into rust-bitcoin. Is it feasible to update bitcoinconsensus to Bitcoin Core v0.26 for now, so that it includes Taproot support?

apoelstra commented 9 months ago

@panicfarm have you noticed #79 #80 #83 #85 #87?

I appreciate you are time constrained but we are working on this and will be at Core 26 in two more versions.

panicfarm commented 9 months ago

@panicfarm have you noticed #79 #80 #83 #85 #87?

I appreciate you are time constrained but we are working on this and will be at Core 26 in two more versions.

Great, I was just concerned that you might archive it before ever getting to Core 26. Do you know approximately when it will be released?

apoelstra commented 9 months ago

Ah, no worries. No, we plan to go up to Bitcoin 26. In 27, Core migrates to CMake but doesn't bring libbitcoinconsensus along. Probably we'll still be able to build it here in 27. In 28+, even if it "builds", it will do so in a weird form where we're just compiling random files from Core in an unsupported combination, so I don't think we should do that even if it seems to work :).

So we'll archive in 26 or 27.

I'll bet we can do it in the next 72 hours. @tcharding wanna push on this? We have 24 out so it's just two more revs.

panicfarm commented 9 months ago

I'll bet we can do it in the next 72 hours. @tcharding wanna push on this? We have 24 out so it's just two more revs.

Thanks! We don't need it that fast, as long as you don't archive it just yet... If you can release it sometime this month, it would be awesome!

tcharding commented 9 months ago

wanna push on this?

lets go!

tcharding commented 9 months ago

I think this issue has served its purpose, we are working on the Core v26 release at the moment (#93).

tcharding commented 8 months ago

Re-opening because I'm totally stuck doing the v26.0 upgrade and its taking way longer than expected for that reason.

apoelstra commented 8 months ago

Sorry, I've had the tab open for a week but haven't taken the time to dig into this yet.