carrot_impl: store extra_nonce to coinbase txs
This commit is contained in:
@@ -350,7 +350,8 @@ bool try_load_carrot_from_transaction_v1(const cryptonote::transaction &tx,
|
|||||||
}
|
}
|
||||||
//-------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------
|
||||||
cryptonote::transaction store_carrot_to_coinbase_transaction_v1(
|
cryptonote::transaction store_carrot_to_coinbase_transaction_v1(
|
||||||
const std::vector<CarrotCoinbaseEnoteV1> &enotes)
|
const std::vector<CarrotCoinbaseEnoteV1> &enotes,
|
||||||
|
const cryptonote::blobdata &extra_nonce)
|
||||||
{
|
{
|
||||||
const size_t nouts = enotes.size();
|
const size_t nouts = enotes.size();
|
||||||
const std::uint64_t block_index = enotes.at(0).block_index;
|
const std::uint64_t block_index = enotes.at(0).block_index;
|
||||||
@@ -383,8 +384,13 @@ cryptonote::transaction store_carrot_to_coinbase_transaction_v1(
|
|||||||
//ephemeral pubkeys: D_e
|
//ephemeral pubkeys: D_e
|
||||||
store_carrot_ephemeral_pubkeys_to_extra(enotes, tx.extra);
|
store_carrot_ephemeral_pubkeys_to_extra(enotes, tx.extra);
|
||||||
|
|
||||||
//we don't need to sort tx_extra since we only added one field
|
//add extra_nonce to tx_extra
|
||||||
//if you add more tx_extra fields here in the future, then please sort <3
|
CHECK_AND_ASSERT_THROW_MES(cryptonote::add_extra_nonce_to_tx_extra(tx.extra, extra_nonce),
|
||||||
|
"store_carrot_to_coinbase_transaction_v1: failed to add extra nonce to tx_extra");
|
||||||
|
|
||||||
|
// sort tx_extra
|
||||||
|
CHECK_AND_ASSERT_THROW_MES(cryptonote::sort_tx_extra(tx.extra, tx.extra),
|
||||||
|
"store_carrot_to_coinbase_transaction_v1: failed to sort tx_extra");
|
||||||
|
|
||||||
return tx;
|
return tx;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
//local headers
|
//local headers
|
||||||
#include "carrot_core/carrot_enote_types.h"
|
#include "carrot_core/carrot_enote_types.h"
|
||||||
|
#include "cryptonote_basic/blobdatatype.h"
|
||||||
#include "cryptonote_basic/cryptonote_basic.h"
|
#include "cryptonote_basic/cryptonote_basic.h"
|
||||||
#include "cryptonote_basic/tx_extra.h"
|
#include "cryptonote_basic/tx_extra.h"
|
||||||
|
|
||||||
@@ -127,11 +128,12 @@ bool try_load_carrot_from_transaction_v1(const cryptonote::transaction &tx,
|
|||||||
/**
|
/**
|
||||||
* brief: store_carrot_to_coinbase_transaction_v1 - store coinbase Carrot info to a cryptonote::transaction
|
* brief: store_carrot_to_coinbase_transaction_v1 - store coinbase Carrot info to a cryptonote::transaction
|
||||||
* param: enotes -
|
* param: enotes -
|
||||||
* param: block_index -
|
* param: extra_nonce -
|
||||||
* return: a full coinbase transaction containing given Carrot information
|
* return: a full coinbase transaction containing given Carrot information
|
||||||
*/
|
*/
|
||||||
cryptonote::transaction store_carrot_to_coinbase_transaction_v1(
|
cryptonote::transaction store_carrot_to_coinbase_transaction_v1(
|
||||||
const std::vector<CarrotCoinbaseEnoteV1> &enotes);
|
const std::vector<CarrotCoinbaseEnoteV1> &enotes,
|
||||||
|
const cryptonote::blobdata &extra_nonce);
|
||||||
/**
|
/**
|
||||||
* brief: try_load_carrot_coinbase_enote_from_transaction_v1 - load one coinbase Carrot enote from a cryptonote::transaction
|
* brief: try_load_carrot_coinbase_enote_from_transaction_v1 - load one coinbase Carrot enote from a cryptonote::transaction
|
||||||
* param: tx -
|
* param: tx -
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ bool construct_miner_tx_fake_reward_1out(const size_t height,
|
|||||||
height,
|
height,
|
||||||
coinbase_enotes);
|
coinbase_enotes);
|
||||||
|
|
||||||
tx = carrot::store_carrot_to_coinbase_transaction_v1(coinbase_enotes);
|
tx = carrot::store_carrot_to_coinbase_transaction_v1(coinbase_enotes, "");
|
||||||
}
|
}
|
||||||
else // !is_carrot
|
else // !is_carrot
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user