bool BlockchainExplorerDataBuilder::getPaymentId(const Transaction& transaction, Crypto::Hash& paymentId) { std::vector<TransactionExtraField> txExtraFields; parseTransactionExtra(transaction.extra, txExtraFields); TransactionExtraNonce extraNonce; if (!findTransactionExtraFieldByType(txExtraFields, extraNonce)) { return false; } return getPaymentIdFromTransactionExtraNonce(extraNonce.nonce, paymentId); }
bool TransactionPrefixImpl::getPaymentId(Hash& hash) const { BinaryArray nonce; if (getExtraNonce(nonce)) { Crypto::Hash paymentId; if (getPaymentIdFromTransactionExtraNonce(nonce, paymentId)) { hash = reinterpret_cast<const Hash&>(paymentId); return true; } } return false; }
bool getPaymentIdFromTxExtra(const std::vector<uint8_t>& extra, Hash& paymentId) { std::vector<TransactionExtraField> tx_extra_fields; if (!parseTransactionExtra(extra, tx_extra_fields)) { return false; } TransactionExtraNonce extra_nonce; if (findTransactionExtraFieldByType(tx_extra_fields, extra_nonce)) { if (!getPaymentIdFromTransactionExtraNonce(extra_nonce.nonce, paymentId)) { return false; } } else { return false; } return true; }