// Copyright (c) 2011-2015 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #include #include #include #include "CryptoTypes.h" #include namespace CryptoNote { enum class TransactionRemoveReason : uint8_t { INCLUDED_IN_BLOCK = 0, TIMEOUT = 1 }; struct TransactionOutputToKeyDetails { Crypto::PublicKey txOutKey; }; struct TransactionOutputMultisignatureDetails { std::vector keys; uint32_t requiredSignatures; }; struct TransactionOutputDetails { uint64_t amount; uint32_t globalIndex; boost::variant< TransactionOutputToKeyDetails, TransactionOutputMultisignatureDetails> output; }; struct TransactionOutputReferenceDetails { Crypto::Hash transactionHash; size_t number; }; struct TransactionInputGenerateDetails { uint32_t height; }; struct TransactionInputToKeyDetails { std::vector outputIndexes; Crypto::KeyImage keyImage; uint64_t mixin; TransactionOutputReferenceDetails output; }; struct TransactionInputMultisignatureDetails { uint32_t signatures; TransactionOutputReferenceDetails output; }; struct TransactionInputDetails { uint64_t amount; boost::variant< TransactionInputGenerateDetails, TransactionInputToKeyDetails, TransactionInputMultisignatureDetails> input; }; struct TransactionExtraDetails { std::vector padding; std::vector publicKey; std::vector nonce; std::vector raw; }; struct TransactionDetails { Crypto::Hash hash; uint64_t size; uint64_t fee; uint64_t totalInputsAmount; uint64_t totalOutputsAmount; uint64_t mixin; uint64_t unlockTime; uint64_t timestamp; Crypto::Hash paymentId; bool inBlockchain; Crypto::Hash blockHash; uint32_t blockHeight; TransactionExtraDetails extra; std::vector> signatures; std::vector inputs; std::vector outputs; }; struct BlockDetails { uint8_t majorVersion; uint8_t minorVersion; uint64_t timestamp; Crypto::Hash prevBlockHash; uint32_t nonce; bool isOrphaned; uint32_t height; Crypto::Hash hash; uint64_t difficulty; uint64_t reward; uint64_t baseReward; uint64_t blockSize; uint64_t transactionsCumulativeSize; uint64_t alreadyGeneratedCoins; uint64_t alreadyGeneratedTransactions; uint64_t sizeMedian; double penalty; uint64_t totalFeeAmount; std::vector transactions; }; }