0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-10 15:46:48 -04:00
bitcoin-core/src/rpc
Wladimir J. van der Laan b654723461
Merge #13557: BIP 174 PSBT Serializations and RPCs
020628e3a4 Tests for PSBT (Andrew Chow)
a4b06fb42e Create wallet RPCs for PSBT (Andrew Chow)
c27fe419ef Create utility RPCs for PSBT (Andrew Chow)
8b5ef27937 SignPSBTInput wrapper function (Andrew Chow)
58a8e28918 Refactor transaction creation and transaction funding logic (Andrew Chow)
e9d86a43ad Methods for interacting with PSBT structs (Andrew Chow)
12bcc64f27 Add pubkeys and whether input was witness to SignatureData (Andrew Chow)
41c607f09b Implement PSBT Structures and un/serialization methods per BIP 174 (Andrew Chow)

Pull request description:

  This Pull Request fully implements the [updated](https://github.com/bitcoin/bips/pull/694) BIP 174 specification. It is based upon #13425 which implements the majority of the signing logic.

  BIP 174 specifies a binary transaction format which contains the information necessary for a signer to produce signatures for the transaction and holds the signatures for an input while the input does not have a complete set of signatures.

  This PR contains structs for PSBT, serialization, and deserialzation code. Some changes to `SignatureData` have been made to support detection of UTXO type and storing public keys.

  ***

  Many RPCs have been added to handle PSBTs.

  `walletprocesspsbt` takes a PSBT format transaction, updates the PSBT with any inputs related to this wallet, signs, and finalizes the transaction. There is also an option to not sign and just update.

  `walletcreatefundedpsbt` creates a PSBT from user provided data in the same form as createrawtransaction. It also funds the transaction and takes an options argument in the same form as `fundrawtransaction`. The resulting PSBT is blank with no input or output data filled in. It is analogous to a combination of `createrawtransaction` and `fundrawtransaction`

  `decodepsbt` takes a PSBT and decodes it to JSON. It is analogous to `decoderawtransaction`

  `combinepsbt` takes multiple PSBTs for the same tx and combines them. It is analogous to `combinerawtransaction`

  `finalizepsbt` takes a PSBT and finalizes the inputs. If all inputs are final, it extracts the network serialized transaction and returns that instead of a PSBT unless instructed otherwise.

  `createpsbt` is like `createrawtransaction` but for PSBTs instead of raw transactions.

  `convertpsbt` takes a network serialized transaction and converts it into a psbt. The resulting psbt will lose all signature data and an explicit flag must be set to allow transactions with signature data to be converted.

  ***

  This supersedes #12136

Tree-SHA512: 1ac7a79e5bc669933f0a6fcc93ded55263fdde9e8c144a30266b13ef9f62aacf43edd4cbca1ffbe003090b067e9643c9298c79be69d7c1b10231b32acafb6338
2018-07-18 20:25:44 +02:00
..
blockchain.cpp Merge #12196: Add scantxoutset RPC method 2018-07-17 16:03:16 +02:00
blockchain.h Drop the chain argument to GetDifficulty 2018-05-20 22:19:42 -07:00
client.cpp Merge #13557: BIP 174 PSBT Serializations and RPCs 2018-07-18 20:25:44 +02:00
client.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
mining.cpp Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
mining.h scripted-diff: Replace #include "" with #include <> (ryanofsky) 2017-11-16 08:23:01 +13:00
misc.cpp segwit support for createmultisig RPC 2018-07-10 00:07:58 +10:00
net.cpp scripted-diff: Avoid temporary copies when looping over std::map 2018-06-11 13:12:55 -07:00
protocol.cpp scripted-diff: Use UniValue.pushKV instead of push_back(Pair()) 2018-02-10 10:05:07 -05:00
protocol.h rpc: Move RPC_FORBIDDEN_BY_SAFE_MODE code to reserved section 2018-04-27 09:19:09 +02:00
rawtransaction.cpp Merge #13557: BIP 174 PSBT Serializations and RPCs 2018-07-18 20:25:44 +02:00
rawtransaction.h Refactor transaction creation and transaction funding logic 2018-07-13 14:27:31 -07:00
register.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
server.cpp Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
server.h Merge #12757: Clarify include guard naming convention 2018-04-01 18:30:21 -04:00
util.cpp Merge #12542: Remove redundant includes. Conform to header include guidelines. 2018-03-16 16:59:27 -07:00
util.h Remove redundant includes. Conform to header include guidelines. 2018-02-27 22:30:40 +01:00