mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 20:32:35 -03:00
4f802e59a0
764bfe4cba
[psbt] add file size limit (Sjors Provoost)1cd8dc2556
[gui] load PSBT (Sjors Provoost)f6895301f7
[gui] save PSBT to file (Sjors Provoost)1d05a9d80b
Move DEFAULT_MAX_RAW_TX_FEE_RATE to node/transaction.h (Sjors Provoost)86e22d23bb
[util] GetFileSize (Sjors Provoost)6ab3aad9a5
[gui] send dialog: split on_sendButton_clicked (Sjors Provoost) Pull request description: This adds: * a dialog after Create Unsigned, which lets you save a PSBT file in binary format, e.g. to an SD card * a "Load PSBT" menu entry lets you pick a PSBT file. We broadcast the transaction if complete ## Save flow <img width="482" alt="Schermafbeelding 2020-01-04 om 20 39 34" src="https://user-images.githubusercontent.com/10217/71765684-ba60d580-2f32-11ea-8dea-0c4398eb6e15.png"> <img width="287" alt="Schermafbeelding 2020-01-04 om 20 40 35" src="https://user-images.githubusercontent.com/10217/71765677-a0bf8e00-2f32-11ea-8172-12dfd34a89f3.png"> <img width="594" alt="Schermafbeelding 2020-01-04 om 20 41 12" src="https://user-images.githubusercontent.com/10217/71765681-aa48f600-2f32-11ea-8e2c-c4f6bf9f5309.png"> <img width="632" alt="Schermafbeelding 2020-01-04 om 20 41 28" src="https://user-images.githubusercontent.com/10217/71765691-d19fc300-2f32-11ea-97ff-70f5dd59987a.png"> By default the file name contains the destination address(es) and amount(s). We only use the binary format for files, in order to avoid compatibility hell. If we do want to add base64 file format support, we should use a different extension for that (`.psbt64`?). ## Load flow Select a file: <img width="649" alt="Schermafbeelding 2020-01-04 om 21 08 57" src="https://user-images.githubusercontent.com/10217/71766089-2ba28780-2f37-11ea-875d-074794b5707d.png"> Offer to send if complete: <img width="308" alt="Schermafbeelding 2020-01-04 om 21 09 06" src="https://user-images.githubusercontent.com/10217/71766088-2a715a80-2f37-11ea-807d-394c8b840c59.png"> Tell user if signatures are missing, offer to copy to clipboard: <img width="308" alt="Schermafbeelding 2020-01-04 om 21 15 57" src="https://user-images.githubusercontent.com/10217/71766115-702e2300-2f37-11ea-9f62-a6ede499c0fa.png"> Incomplete for another reason: <img width="309" alt="Schermafbeelding 2020-01-04 om 21 07 51" src="https://user-images.githubusercontent.com/10217/71766090-2c3b1e00-2f37-11ea-8a22-6188377b67a1.png"> ACKs for top commit: instagibbs: re-ACK764bfe4cba
achow101: ACK764bfe4cba
jb55: Tested ACK764bfe4cba
jonatack: ACK764bfe4c
promag: Code review ACK764bfe4cba
. Tree-SHA512: d284ed6895f3a271fb8ff879aac388ad217ddc13f72074725608e1c3d6d90650f6dc9e9e254479544dd71fc111516b02c8ff92158153208dc40fb2726b37d063
41 lines
1.8 KiB
C++
41 lines
1.8 KiB
C++
// Copyright (c) 2017-2020 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_NODE_TRANSACTION_H
|
|
#define BITCOIN_NODE_TRANSACTION_H
|
|
|
|
#include <attributes.h>
|
|
#include <policy/feerate.h>
|
|
#include <primitives/transaction.h>
|
|
#include <util/error.h>
|
|
|
|
struct NodeContext;
|
|
|
|
/** Maximum fee rate for sendrawtransaction and testmempoolaccept RPC calls.
|
|
* Also used by the GUI when broadcasting a completed PSBT.
|
|
* By default, a transaction with a fee rate higher than this will be rejected
|
|
* by these RPCs and the GUI. This can be overridden with the maxfeerate argument.
|
|
*/
|
|
static const CFeeRate DEFAULT_MAX_RAW_TX_FEE_RATE{COIN / 10};
|
|
|
|
/**
|
|
* Submit a transaction to the mempool and (optionally) relay it to all P2P peers.
|
|
*
|
|
* Mempool submission can be synchronous (will await mempool entry notification
|
|
* over the CValidationInterface) or asynchronous (will submit and not wait for
|
|
* notification), depending on the value of wait_callback. wait_callback MUST
|
|
* NOT be set while cs_main, cs_mempool or cs_wallet are held to avoid
|
|
* deadlock.
|
|
*
|
|
* @param[in] node reference to node context
|
|
* @param[in] tx the transaction to broadcast
|
|
* @param[out] err_string reference to std::string to fill with error string if available
|
|
* @param[in] max_tx_fee reject txs with fees higher than this (if 0, accept any fee)
|
|
* @param[in] relay flag if both mempool insertion and p2p relay are requested
|
|
* @param[in] wait_callback wait until callbacks have been processed to avoid stale result due to a sequentially RPC.
|
|
* return error
|
|
*/
|
|
NODISCARD TransactionError BroadcastTransaction(NodeContext& node, CTransactionRef tx, std::string& err_string, const CAmount& max_tx_fee, bool relay, bool wait_callback);
|
|
|
|
#endif // BITCOIN_NODE_TRANSACTION_H
|