Code Monkey home page Code Monkey logo

Comments (4)

justinmoon avatar justinmoon commented on June 12, 2024 2

bwt seems to use xpubs to represent a range of outputs (conceptually the same thing as a a ranged descriptor), and HD origin fingerprints as public identifiers for these output ranges. When trying to integrate descriptors, the problem is that HD fingerprints only map to a subset of ranged descriptors. Perhaps descriptor checksums could serve this same purpose for wallets anchored to a ranged descriptor instead of an xpub?

You are currently marking every exported address with a {origin}/{index} label. You could switch this to {ranged_descriptor_checksum}/{ranged_descriptor_index}.

You could call importmulti with a (non-ranged) descriptor argument instead of the current address argument. Just replace every * in ranged descriptor with an index. Using a non-ranged descriptor allows you to bypass this issue. In light of #2, it's a potentially superior address import method because origin information contained inside the descriptor can be included in PSBTs generated with walletcreatefundedpsbt (just set bip32derivs to true in walletcreatefundedpsbt call).

I've only spent a few hours looking at bwt so I could be totally wrong, but it seems like this approach would be strictly more capable than the current xpub-based approach.

Note: @afilini has published Rust implementations of descriptor checksums and ranged descriptors which may be useful here.

from bwt.

shesek avatar shesek commented on June 12, 2024 2

Making the xpub/extkey a specialized case of descriptors and replacing the key fingerprint with a descriptor fingerprint is what I had in mind for supporting descriptors. The descriptors would be how things are implemented under the hood, with some conveniences for users that prefer to think in terms of xpub wallets.

(So users could specify an [xyz]pub and have it converted to a descriptor, and possibly also keep a map around for converting extkey_fingerprint -> descriptor_fingerprint to maintain compatibility with the current key-fingerprint-based endpoints, such that /hd/:fingerprint/:index would still work but internally delegate to the matching descriptor.)

You could call importmulti with a (non-ranged) descriptor argument

You're right that using non-ranged descriptor imports with a label would give best of both worlds - bwt will have its label for quick access, and bitcoind will have its descriptor/origin information for PSBT.

I've only spent a few hours looking at bwt so I could be totally wrong, but it seems like this approach would be strictly more capable than the current xpub-based approach.

You're absolutely correct; I just didn't get around to that yet. :-)

Note: @afilini has published Rust implementations of descriptor checksums and ranged descriptors which may be useful here.

That's pretty useful, thanks for the links!

from bwt.

shesek avatar shesek commented on June 12, 2024

Descriptor-based tracking is nearly ready on the 202010-descriptor branch.

This is how the new API looks like: https://gist.github.com/shesek/bf357a55c968635d34adfd171d0c65b1

from bwt.

shesek avatar shesek commented on June 12, 2024

Merged to master! The bulk of the changes are in d305ec9, with a bunch of followup enhancement commits.

from bwt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.