Cryptonote tools WIP

This commit is contained in:
SChernykh 2021-06-15 00:28:32 +02:00
parent 0414511de0
commit 7bfb801ce2
12 changed files with 644 additions and 73 deletions

View file

@ -0,0 +1,86 @@
/* XMRig
* Copyright 2014-2021 The Monero Project
* Copyright 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef XMRIG_BLOCKTEMPLATE_H
#define XMRIG_BLOCKTEMPLATE_H
#include "base/tools/Buffer.h"
#include "base/tools/String.h"
namespace xmrig {
struct CBlockTemplate
{
enum {
HASH_SIZE = 32,
KEY_SIZE = 32,
NONCE_SIZE = 4,
};
Buffer raw_blob;
size_t eph_public_key_index;
size_t tx_pubkey_index;
size_t miner_tx_prefix_begin_index;
size_t miner_tx_prefix_end_index;
// Block header
uint8_t major_version;
uint8_t minor_version;
uint64_t timestamp;
uint8_t prev_id[HASH_SIZE];
uint8_t nonce[NONCE_SIZE];
// Miner tx
uint64_t tx_version;
uint64_t unlock_time;
uint64_t num_inputs;
uint8_t input_type;
uint64_t height;
uint64_t num_outputs;
uint64_t amount;
uint8_t output_type;
uint8_t eph_public_key[KEY_SIZE];
uint64_t extra_size;
Buffer extra;
uint8_t vin_rct_type;
// Transaction hashes
uint64_t num_hashes;
Buffer hashes;
uint8_t root_hash[HASH_SIZE];
Buffer hashingBlob;
bool Init(const String& blockTemplate);
private:
void CalculateMinerTxHash(uint8_t* hash);
static void CalculateMerkleTreeHash(const uint8_t* hashes, size_t count, uint8_t* root_hash);
void CalculateHashingBlob();
};
} /* namespace xmrig */
#endif /* XMRIG_BLOCKTEMPLATE_H */