// Copyright (c) 2011-2021 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_QT_SENDCOINSRECIPIENT_H #define BITCOIN_QT_SENDCOINSRECIPIENT_H #include #include #include #include class SendCoinsRecipient { public: explicit SendCoinsRecipient() : amount(0), fSubtractFeeFromAmount(false), nVersion(SendCoinsRecipient::CURRENT_VERSION) { } explicit SendCoinsRecipient(const QString &addr, const QString &_label, const CAmount& _amount, const QString &_message): address(addr), label(_label), amount(_amount), message(_message), fSubtractFeeFromAmount(false), nVersion(SendCoinsRecipient::CURRENT_VERSION) {} // If from an unauthenticated payment request, this is used for storing // the addresses, e.g. address-A
address-B
address-C. // Info: As we don't need to process addresses in here when using // payment requests, we can abuse it for displaying an address list. // Todo: This is a hack, should be replaced with a cleaner solution! QString address; QString label; CAmount amount; // If from a payment request, this is used for storing the memo QString message; // Keep the payment request around as a serialized string to ensure // load/store is lossless. std::string sPaymentRequest; // Empty if no authentication or invalid signature/cert/etc. QString authenticatedMerchant; bool fSubtractFeeFromAmount; // memory only static const int CURRENT_VERSION = 1; int nVersion; SERIALIZE_METHODS(SendCoinsRecipient, obj) { std::string address_str, label_str, message_str, auth_merchant_str; SER_WRITE(obj, address_str = obj.address.toStdString()); SER_WRITE(obj, label_str = obj.label.toStdString()); SER_WRITE(obj, message_str = obj.message.toStdString()); SER_WRITE(obj, auth_merchant_str = obj.authenticatedMerchant.toStdString()); READWRITE(obj.nVersion, address_str, label_str, obj.amount, message_str, obj.sPaymentRequest, auth_merchant_str); SER_READ(obj, obj.address = QString::fromStdString(address_str)); SER_READ(obj, obj.label = QString::fromStdString(label_str)); SER_READ(obj, obj.message = QString::fromStdString(message_str)); SER_READ(obj, obj.authenticatedMerchant = QString::fromStdString(auth_merchant_str)); } }; #endif // BITCOIN_QT_SENDCOINSRECIPIENT_H