// Copyright (c) 2014-2019, The Monero Project // // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, are // permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, this list of // conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright notice, this list // of conditions and the following disclaimer in the documentation and/or other // materials provided with the distribution. // // 3. Neither the name of the copyright holder nor the names of its contributors may be // used to endorse or promote products derived from this software without specific // prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers #pragma once #include "serialization/serialization.h" #include "serialization/binary_archive.h" #include "serialization/variant.h" #include "crypto/crypto.h" #include #include "loki_economy.h" #define TX_EXTRA_PADDING_MAX_COUNT 255 #define TX_EXTRA_NONCE_MAX_COUNT 255 #define TX_EXTRA_TAG_PADDING 0x00 #define TX_EXTRA_TAG_PUBKEY 0x01 #define TX_EXTRA_NONCE 0x02 #define TX_EXTRA_MERGE_MINING_TAG 0x03 #define TX_EXTRA_TAG_ADDITIONAL_PUBKEYS 0x04 #define TX_EXTRA_TAG_SERVICE_NODE_REGISTER 0x70 #define TX_EXTRA_TAG_SERVICE_NODE_DEREG_OLD 0x71 #define TX_EXTRA_TAG_SERVICE_NODE_WINNER 0x72 #define TX_EXTRA_TAG_SERVICE_NODE_CONTRIBUTOR 0x73 #define TX_EXTRA_TAG_SERVICE_NODE_PUBKEY 0x74 #define TX_EXTRA_TAG_TX_SECRET_KEY 0x75 #define TX_EXTRA_TAG_TX_KEY_IMAGE_PROOFS 0x76 #define TX_EXTRA_TAG_TX_KEY_IMAGE_UNLOCK 0x77 #define TX_EXTRA_TAG_SERVICE_NODE_STATE_CHANGE 0x78 #define TX_EXTRA_TAG_BURN 0x79 #define TX_EXTRA_TAG_LOKI_NAME_SYSTEM 0x7A #define TX_EXTRA_MYSTERIOUS_MINERGATE_TAG 0xDE #define TX_EXTRA_NONCE_PAYMENT_ID 0x00 #define TX_EXTRA_NONCE_ENCRYPTED_PAYMENT_ID 0x01 namespace lns { enum struct tx_command_t : uint8_t { buy, update, _count, }; }; namespace service_nodes { enum class new_state : uint16_t { deregister, decommission, recommission, ip_change_penalty, _count, }; }; namespace cryptonote { struct tx_extra_padding { size_t size; // load template