bwt icon indicating copy to clipboard operation
bwt copied to clipboard

PSBT creation and funding

Open shesek opened this issue 4 years ago • 3 comments

shesek avatar May 18 '20 01:05 shesek

Pretty straightforward if it just delegated to bitcoind's walletcreatefundedpsbt, but that would mean using all the utxos available in the wallet without being able to restrict them to specific ones. Might be acceptable if the user sets up bwt to use a separate bitcoind wallet. Also see #3.

shesek avatar May 18 '20 02:05 shesek

that would mean using all the utxos available in the wallet without being able to restrict them to specific ones

Bitcoin Core wouldn't be able to do automated coin selection on a subset of outputs in one watch-only wallet, but the first argument to walletcreatefundedpsbt allows caller to specify inputs themselves.

$ bitcoin-cli help walletcreatefundedpsbt
...
Arguments
1. inputs                             (json array, required) A json array of json objects
     [
       {                              (json object)
         "txid": "hex",               (string, required) The transaction id
         "vout": n,                   (numeric, required) The output number
         "sequence": n,               (numeric, required) The sequence number
       },
       ...
     ]
...

But you could support automated coin selection for individual bwt wallets if each pair of internal/external bwt wallets corresponded to one Bitcoin Core watch-only wallet.

justinmoon avatar Jun 01 '20 03:06 justinmoon

the first argument to walletcreatefundedpsbt allows caller to specify inputs themselves.

Yes, I meant that in the context of the fund part. If bwt implemented coin selection on its own, it could use bitcoind to create the PSBT with a given set of inputs.

But you could support automated coin selection for individual bwt wallets if each pair of internal/external bwt wallets corresponded to one Bitcoin Core watch-only wallet.

This is something that I considered. A simpler but not as convenient way to achieve this is separate bwt instances, each configured to use a different bitcoind wallet.

But I'm not sure if bwt should rely on having a potentially large number of bitcoind wallets, its not really well suited if you have, say, hundreds or thousands of them (for example, if you track a separate xpub for every user's deposits). I think that it might be better to implement independent coin selection in bwt, which would also allow finer-grained selection like filtering by specific addresses.

shesek avatar Jun 01 '20 08:06 shesek