|
|
@ -16,64 +16,6 @@ namespace wallet {
|
|
|
|
* size of the input spend. This should only be set when watch-only outputs are allowed */
|
|
|
|
* size of the input spend. This should only be set when watch-only outputs are allowed */
|
|
|
|
int GetTxSpendSize(const CWallet& wallet, const CWalletTx& wtx, unsigned int out, bool use_max_sig = false);
|
|
|
|
int GetTxSpendSize(const CWallet& wallet, const CWalletTx& wtx, unsigned int out, bool use_max_sig = false);
|
|
|
|
|
|
|
|
|
|
|
|
class COutput
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
/** The outpoint identifying this UTXO */
|
|
|
|
|
|
|
|
COutPoint outpoint;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** The output itself */
|
|
|
|
|
|
|
|
CTxOut txout;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Depth in block chain.
|
|
|
|
|
|
|
|
* If > 0: the tx is on chain and has this many confirmations.
|
|
|
|
|
|
|
|
* If = 0: the tx is waiting confirmation.
|
|
|
|
|
|
|
|
* If < 0: a conflicting tx is on chain and has this many confirmations. */
|
|
|
|
|
|
|
|
int depth;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Pre-computed estimated size of this output as a fully-signed input in a transaction. Can be -1 if it could not be calculated */
|
|
|
|
|
|
|
|
int input_bytes;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Whether we have the private keys to spend this output */
|
|
|
|
|
|
|
|
bool spendable;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Whether we know how to spend this output, ignoring the lack of keys */
|
|
|
|
|
|
|
|
bool solvable;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Whether this output is considered safe to spend. Unconfirmed transactions
|
|
|
|
|
|
|
|
* from outside keys and unconfirmed replacement transactions are considered
|
|
|
|
|
|
|
|
* unsafe and will not be used to fund new spending transactions.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
bool safe;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** The time of the transaction containing this output as determined by CWalletTx::nTimeSmart */
|
|
|
|
|
|
|
|
int64_t time;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Whether the transaction containing this output is sent from the owning wallet */
|
|
|
|
|
|
|
|
bool from_me;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COutput(const COutPoint& outpoint, const CTxOut& txout, int depth, int input_bytes, bool spendable, bool solvable, bool safe, int64_t time, bool from_me)
|
|
|
|
|
|
|
|
: outpoint(outpoint),
|
|
|
|
|
|
|
|
txout(txout),
|
|
|
|
|
|
|
|
depth(depth),
|
|
|
|
|
|
|
|
input_bytes(input_bytes),
|
|
|
|
|
|
|
|
spendable(spendable),
|
|
|
|
|
|
|
|
solvable(solvable),
|
|
|
|
|
|
|
|
safe(safe),
|
|
|
|
|
|
|
|
time(time),
|
|
|
|
|
|
|
|
from_me(from_me)
|
|
|
|
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string ToString() const;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inline CInputCoin GetInputCoin() const
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return CInputCoin(outpoint, txout, input_bytes);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Get the marginal bytes of spending the specified output
|
|
|
|
//Get the marginal bytes of spending the specified output
|
|
|
|
int CalculateMaximumSignedInputSize(const CTxOut& txout, const CWallet* pwallet, bool use_max_sig = false);
|
|
|
|
int CalculateMaximumSignedInputSize(const CTxOut& txout, const CWallet* pwallet, bool use_max_sig = false);
|
|
|
|
int CalculateMaximumSignedInputSize(const CTxOut& txout, const SigningProvider* pwallet, bool use_max_sig = false);
|
|
|
|
int CalculateMaximumSignedInputSize(const CTxOut& txout, const SigningProvider* pwallet, bool use_max_sig = false);
|
|
|
|