There’s a number of RPC calls currently that don’t need to know anything about the blockchain or the users wallet, and also don’t need p2p network access:
createmultisigsignmessagewithprivkeyverifymessagevalidateaddresscombinepsbtconverttopsbtdecodepsbtdecodescriptfinalizepsbt
Arguably also:
decoderawtransaction(butcreaterawtransactionneeds the node)
There’s also a few being proposed:
We could call the new thing bitcoin-util. The deprecation notice for bitcoin-cli method would simply be Use "bitcoin-util method" instead.
A bigger issue is that some application may depend on calling bitcoind via RPC, perhaps on a different machine. A few things we could do:
- take a very long time to deprecate
- add a parameter to
bitcoindthat adds all utility functions via RPC, like e.g.bitcoin-cli util-deriveaddress - let
bitcoin-utilrun its own RPC server on a different port
However (2 & 3): maintaining RPC wrappers around utility functions is some overhead, and extra complexity.
Ideally bitcoin-util comes with a library that’s easy to include in ruby gems, npm modules, etc.
One additional benefit of a separate utility is that you can switch between testnet and mainnet without restarting the node.