mirror of
https://github.com/monero-project/monero.git
synced 2024-12-24 04:29:43 +00:00
core_tests: fix for subaddress patch
This commit is contained in:
parent
e373a2037b
commit
88ebfd646a
9 changed files with 17 additions and 16 deletions
|
@ -158,7 +158,7 @@ namespace cryptonote
|
||||||
return destinations[0].addr.m_view_public_key;
|
return destinations[0].addr.m_view_public_key;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool construct_tx_and_get_tx_key(const account_keys& sender_account_keys, const std::unordered_map<crypto::public_key, subaddress_index>& subaddresses, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, const cryptonote::account_public_address& change_addr, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time, crypto::secret_key &tx_key, std::vector<crypto::secret_key> &additional_tx_keys, bool rct)
|
bool construct_tx_and_get_tx_key(const account_keys& sender_account_keys, const std::unordered_map<crypto::public_key, subaddress_index>& subaddresses, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, const boost::optional<cryptonote::account_public_address>& change_addr, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time, crypto::secret_key &tx_key, std::vector<crypto::secret_key> &additional_tx_keys, bool rct)
|
||||||
{
|
{
|
||||||
if (destinations.empty())
|
if (destinations.empty())
|
||||||
{
|
{
|
||||||
|
@ -301,7 +301,7 @@ namespace cryptonote
|
||||||
account_public_address single_dest_subaddress;
|
account_public_address single_dest_subaddress;
|
||||||
for(const tx_destination_entry& dst_entr: destinations)
|
for(const tx_destination_entry& dst_entr: destinations)
|
||||||
{
|
{
|
||||||
if (dst_entr.addr == change_addr)
|
if (change_addr && dst_entr.addr == *change_addr)
|
||||||
continue;
|
continue;
|
||||||
if (unique_dst_addresses.count(dst_entr.addr) == 0)
|
if (unique_dst_addresses.count(dst_entr.addr) == 0)
|
||||||
{
|
{
|
||||||
|
@ -354,7 +354,7 @@ namespace cryptonote
|
||||||
}
|
}
|
||||||
|
|
||||||
bool r;
|
bool r;
|
||||||
if (dst_entr.addr == change_addr)
|
if (change_addr && dst_entr.addr == *change_addr)
|
||||||
{
|
{
|
||||||
// sending change to yourself; derivation = a*R
|
// sending change to yourself; derivation = a*R
|
||||||
r = crypto::generate_key_derivation(txkey.pub, sender_account_keys.m_view_secret_key, derivation);
|
r = crypto::generate_key_derivation(txkey.pub, sender_account_keys.m_view_secret_key, derivation);
|
||||||
|
@ -565,13 +565,13 @@ namespace cryptonote
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool construct_tx(const account_keys& sender_account_keys, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time)
|
bool construct_tx(const account_keys& sender_account_keys, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, const boost::optional<cryptonote::account_public_address>& change_addr, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time)
|
||||||
{
|
{
|
||||||
std::unordered_map<crypto::public_key, cryptonote::subaddress_index> subaddresses;
|
std::unordered_map<crypto::public_key, cryptonote::subaddress_index> subaddresses;
|
||||||
subaddresses[sender_account_keys.m_account_address.m_spend_public_key] = {0,0};
|
subaddresses[sender_account_keys.m_account_address.m_spend_public_key] = {0,0};
|
||||||
crypto::secret_key tx_key;
|
crypto::secret_key tx_key;
|
||||||
std::vector<crypto::secret_key> additional_tx_keys;
|
std::vector<crypto::secret_key> additional_tx_keys;
|
||||||
return construct_tx_and_get_tx_key(sender_account_keys, subaddresses, sources, destinations, destinations.back().addr, extra, tx, unlock_time, tx_key, additional_tx_keys);
|
return construct_tx_and_get_tx_key(sender_account_keys, subaddresses, sources, destinations, change_addr, extra, tx, unlock_time, tx_key, additional_tx_keys);
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool generate_genesis_block(
|
bool generate_genesis_block(
|
||||||
|
|
|
@ -73,8 +73,8 @@ namespace cryptonote
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
crypto::public_key get_destination_view_key_pub(const std::vector<tx_destination_entry> &destinations, const account_keys &sender_keys);
|
crypto::public_key get_destination_view_key_pub(const std::vector<tx_destination_entry> &destinations, const account_keys &sender_keys);
|
||||||
bool construct_tx(const account_keys& sender_account_keys, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time);
|
bool construct_tx(const account_keys& sender_account_keys, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, const boost::optional<cryptonote::account_public_address>& change_addr, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time);
|
||||||
bool construct_tx_and_get_tx_key(const account_keys& sender_account_keys, const std::unordered_map<crypto::public_key, subaddress_index>& subaddresses, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, const cryptonote::account_public_address& change_addr, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time, crypto::secret_key &tx_key, std::vector<crypto::secret_key> &additional_tx_keys, bool rct = false);
|
bool construct_tx_and_get_tx_key(const account_keys& sender_account_keys, const std::unordered_map<crypto::public_key, subaddress_index>& subaddresses, std::vector<tx_source_entry>& sources, const std::vector<tx_destination_entry>& destinations, const boost::optional<cryptonote::account_public_address>& change_addr, std::vector<uint8_t> extra, transaction& tx, uint64_t unlock_time, crypto::secret_key &tx_key, std::vector<crypto::secret_key> &additional_tx_keys, bool rct = false);
|
||||||
|
|
||||||
bool generate_genesis_block(
|
bool generate_genesis_block(
|
||||||
block& bl
|
block& bl
|
||||||
|
|
|
@ -350,7 +350,7 @@ bool gen_block_miner_tx_has_2_in::generate(std::vector<test_event_entry>& events
|
||||||
destinations.push_back(de);
|
destinations.push_back(de);
|
||||||
|
|
||||||
transaction tmp_tx;
|
transaction tmp_tx;
|
||||||
if (!construct_tx(miner_account.get_keys(), sources, destinations, std::vector<uint8_t>(), tmp_tx, 0))
|
if (!construct_tx(miner_account.get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tmp_tx, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
MAKE_MINER_TX_MANUALLY(miner_tx, blk_0);
|
MAKE_MINER_TX_MANUALLY(miner_tx, blk_0);
|
||||||
|
@ -393,7 +393,7 @@ bool gen_block_miner_tx_with_txin_to_key::generate(std::vector<test_event_entry>
|
||||||
destinations.push_back(de);
|
destinations.push_back(de);
|
||||||
|
|
||||||
transaction tmp_tx;
|
transaction tmp_tx;
|
||||||
if (!construct_tx(miner_account.get_keys(), sources, destinations, std::vector<uint8_t>(), tmp_tx, 0))
|
if (!construct_tx(miner_account.get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tmp_tx, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
MAKE_MINER_TX_MANUALLY(miner_tx, blk_1);
|
MAKE_MINER_TX_MANUALLY(miner_tx, blk_1);
|
||||||
|
|
|
@ -563,7 +563,7 @@ bool construct_tx_to_key(const std::vector<test_event_entry>& events, cryptonote
|
||||||
vector<tx_destination_entry> destinations;
|
vector<tx_destination_entry> destinations;
|
||||||
fill_tx_sources_and_destinations(events, blk_head, from, to, amount, fee, nmix, sources, destinations);
|
fill_tx_sources_and_destinations(events, blk_head, from, to, amount, fee, nmix, sources, destinations);
|
||||||
|
|
||||||
return construct_tx(from.get_keys(), sources, destinations, std::vector<uint8_t>(), tx, 0);
|
return construct_tx(from.get_keys(), sources, destinations, from.get_keys().m_account_address, std::vector<uint8_t>(), tx, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction construct_tx_with_fee(std::vector<test_event_entry>& events, const block& blk_head,
|
transaction construct_tx_with_fee(std::vector<test_event_entry>& events, const block& blk_head,
|
||||||
|
|
|
@ -144,7 +144,7 @@ bool gen_double_spend_in_tx<txs_keeped_by_block>::generate(std::vector<test_even
|
||||||
destinations.push_back(de);
|
destinations.push_back(de);
|
||||||
|
|
||||||
cryptonote::transaction tx_1;
|
cryptonote::transaction tx_1;
|
||||||
if (!construct_tx(bob_account.get_keys(), sources, destinations, std::vector<uint8_t>(), tx_1, 0))
|
if (!construct_tx(bob_account.get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tx_1, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SET_EVENT_VISITOR_SETT(events, event_visitor_settings::set_txs_keeped_by_block, txs_keeped_by_block);
|
SET_EVENT_VISITOR_SETT(events, event_visitor_settings::set_txs_keeped_by_block, txs_keeped_by_block);
|
||||||
|
|
|
@ -65,6 +65,7 @@ namespace
|
||||||
se.real_output = 0;
|
se.real_output = 0;
|
||||||
se.rct = false;
|
se.rct = false;
|
||||||
se.real_out_tx_key = get_tx_pub_key_from_extra(tx);
|
se.real_out_tx_key = get_tx_pub_key_from_extra(tx);
|
||||||
|
se.real_out_additional_tx_keys = get_additional_tx_pub_keys_from_extra(tx);
|
||||||
se.real_output_in_tx_index = out_idx;
|
se.real_output_in_tx_index = out_idx;
|
||||||
|
|
||||||
sources.push_back(se);
|
sources.push_back(se);
|
||||||
|
@ -175,7 +176,7 @@ bool gen_uint_overflow_2::generate(std::vector<test_event_entry>& events) const
|
||||||
destinations.push_back(tx_destination_entry(sources.front().amount - MONEY_SUPPLY - MONEY_SUPPLY + 1 - TESTS_DEFAULT_FEE, bob_addr, false));
|
destinations.push_back(tx_destination_entry(sources.front().amount - MONEY_SUPPLY - MONEY_SUPPLY + 1 - TESTS_DEFAULT_FEE, bob_addr, false));
|
||||||
|
|
||||||
cryptonote::transaction tx_1;
|
cryptonote::transaction tx_1;
|
||||||
if (!construct_tx(miner_account.get_keys(), sources, destinations, std::vector<uint8_t>(), tx_1, 0))
|
if (!construct_tx(miner_account.get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tx_1, 0))
|
||||||
return false;
|
return false;
|
||||||
events.push_back(tx_1);
|
events.push_back(tx_1);
|
||||||
|
|
||||||
|
@ -201,7 +202,7 @@ bool gen_uint_overflow_2::generate(std::vector<test_event_entry>& events) const
|
||||||
destinations.push_back(de);
|
destinations.push_back(de);
|
||||||
|
|
||||||
cryptonote::transaction tx_2;
|
cryptonote::transaction tx_2;
|
||||||
if (!construct_tx(bob_account.get_keys(), sources, destinations, std::vector<uint8_t>(), tx_2, 0))
|
if (!construct_tx(bob_account.get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tx_2, 0))
|
||||||
return false;
|
return false;
|
||||||
events.push_back(tx_2);
|
events.push_back(tx_2);
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@ bool test_transaction_generation_and_ring_signature()
|
||||||
destinations.push_back(td);
|
destinations.push_back(td);
|
||||||
|
|
||||||
transaction tx_rc1;
|
transaction tx_rc1;
|
||||||
bool r = construct_tx(miner_acc2.get_keys(), sources, destinations, std::vector<uint8_t>(), tx_rc1, 0);
|
bool r = construct_tx(miner_acc2.get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tx_rc1, 0);
|
||||||
CHECK_AND_ASSERT_MES(r, false, "failed to construct transaction");
|
CHECK_AND_ASSERT_MES(r, false, "failed to construct transaction");
|
||||||
|
|
||||||
crypto::hash pref_hash = get_transaction_prefix_hash(tx_rc1);
|
crypto::hash pref_hash = get_transaction_prefix_hash(tx_rc1);
|
||||||
|
|
|
@ -108,7 +108,7 @@ bool gen_v2_tx_validation_base::generate_with(std::vector<test_event_entry>& eve
|
||||||
destinations.push_back(td);
|
destinations.push_back(td);
|
||||||
|
|
||||||
transaction tx;
|
transaction tx;
|
||||||
bool r = construct_tx(miner_accounts[0].get_keys(), sources, destinations, std::vector<uint8_t>(), tx, 0);
|
bool r = construct_tx(miner_accounts[0].get_keys(), sources, destinations, boost::none, std::vector<uint8_t>(), tx, 0);
|
||||||
CHECK_AND_ASSERT_MES(r, false, "failed to construct transaction");
|
CHECK_AND_ASSERT_MES(r, false, "failed to construct transaction");
|
||||||
if (!valid)
|
if (!valid)
|
||||||
DO_CALLBACK(events, "mark_invalid_tx");
|
DO_CALLBACK(events, "mark_invalid_tx");
|
||||||
|
|
|
@ -54,7 +54,7 @@ public:
|
||||||
std::vector<tx_destination_entry> destinations;
|
std::vector<tx_destination_entry> destinations;
|
||||||
destinations.push_back(tx_destination_entry(1, m_alice.get_keys().m_account_address, false));
|
destinations.push_back(tx_destination_entry(1, m_alice.get_keys().m_account_address, false));
|
||||||
|
|
||||||
return construct_tx(this->m_miners[this->real_source_idx].get_keys(), this->m_sources, destinations, std::vector<uint8_t>(), m_tx, 0);
|
return construct_tx(this->m_miners[this->real_source_idx].get_keys(), this->m_sources, destinations, boost::none, std::vector<uint8_t>(), m_tx, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool test()
|
bool test()
|
||||||
|
|
Loading…
Reference in a new issue