fixed keys for pre+post Carrot mining rewards
This commit is contained in:
@@ -58,8 +58,8 @@ CarrotDestinationV1 carrot_and_legacy_account::cryptonote_address(const payment_
|
||||
switch (resolve_derive_type(derive_type))
|
||||
{
|
||||
case AddressDeriveType::Carrot:
|
||||
make_carrot_integrated_address_v1(get_keys().m_carrot_account_address.m_spend_public_key,
|
||||
get_keys().m_account_address.m_view_public_key,
|
||||
make_carrot_integrated_address_v1(get_keys().m_carrot_main_address.m_spend_public_key,
|
||||
get_keys().m_carrot_main_address.m_view_public_key,
|
||||
payment_id,
|
||||
addr);
|
||||
break;
|
||||
@@ -326,6 +326,13 @@ void carrot_and_legacy_account::set_carrot_keys(const AddressDeriveType default_
|
||||
m_keys.m_carrot_account_address.m_view_public_key
|
||||
);
|
||||
|
||||
// carrot main wallet address
|
||||
m_keys.m_carrot_main_address.m_spend_public_key = m_keys.m_carrot_account_address.m_spend_public_key;
|
||||
k_view_incoming_dev.view_key_scalar_mult_ed25519(
|
||||
crypto::get_G(),
|
||||
m_keys.m_carrot_main_address.m_view_public_key
|
||||
);
|
||||
|
||||
this->default_derive_type = default_derive_type;
|
||||
generate_subaddress_map();
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ DISABLE_VS_WARNINGS(4244 4345)
|
||||
std::string account_base::get_carrot_public_address_str(network_type nettype) const
|
||||
{
|
||||
// Build the cryptonote::account_public_address
|
||||
account_public_address addr{m_keys.m_carrot_account_address.m_spend_public_key, m_keys.m_account_address.m_view_public_key};
|
||||
account_public_address addr{m_keys.m_carrot_main_address.m_spend_public_key, m_keys.m_carrot_main_address.m_view_public_key};
|
||||
// change this code into base 58
|
||||
return get_account_address_as_str(nettype, false, addr, true);
|
||||
}
|
||||
|
||||
@@ -61,9 +61,12 @@ namespace cryptonote
|
||||
crypto::secret_key k_generate_image;
|
||||
crypto::secret_key s_generate_address;
|
||||
|
||||
// carrot public keys (minus K_v, which is shared with legacy K_v)
|
||||
// carrot public account address (K_s, K_v)
|
||||
account_public_address m_carrot_account_address;
|
||||
|
||||
// carrot main address (K^0_s, K^0_v)
|
||||
account_public_address m_carrot_main_address;
|
||||
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(m_account_address)
|
||||
|
||||
@@ -767,7 +767,7 @@ void view_incoming_scan_transaction(
|
||||
const bool is_carrot = carrot::is_carrot_transaction_v1(tx);
|
||||
perform_ecdh_derivations(epee::to_span(main_tx_ephemeral_pubkeys),
|
||||
epee::to_span(additional_tx_ephemeral_pubkeys),
|
||||
account.get_keys().m_view_secret_key,
|
||||
is_carrot ? account.get_keys().k_view_incoming : account.get_keys().m_view_secret_key,
|
||||
account.get_keys().get_device(),
|
||||
is_carrot,
|
||||
main_derivations,
|
||||
@@ -864,9 +864,7 @@ std::optional<crypto::key_image> try_derive_enote_key_image(
|
||||
{
|
||||
const cryptonote::subaddress_index subaddr_index_cn{enote_scan_info.subaddr_index->index.major,
|
||||
enote_scan_info.subaddr_index->index.minor};
|
||||
subaddress_extension = rct::sk2rct(
|
||||
acc.get_keys().get_device().get_subaddress_secret_key(acc.get_keys().m_view_secret_key, subaddr_index_cn)
|
||||
);
|
||||
subaddress_extension = rct::sk2rct(acc.get_keys().get_device().get_subaddress_secret_key(enote_scan_info.is_carrot ? acc.get_keys().k_view_incoming : acc.get_keys().m_view_secret_key, subaddr_index_cn));
|
||||
}
|
||||
else // !subaddr_index_cn.is_zero()
|
||||
{
|
||||
|
||||
@@ -800,12 +800,13 @@ bool get_address_openings_x_y(
|
||||
// 2. perform ECDH derivations
|
||||
std::vector<crypto::key_derivation> main_derivations;
|
||||
std::vector<crypto::key_derivation> additional_derivations;
|
||||
bool is_carrot = carrot::is_carrot_transaction_v1(tx);
|
||||
wallet::perform_ecdh_derivations(
|
||||
main_tx_ephemeral_pubkeys,
|
||||
additional_tx_ephemeral_pubkeys,
|
||||
w.get_account().get_keys().m_view_secret_key,
|
||||
is_carrot ? w.get_account().get_keys().k_view_incoming : w.get_account().get_keys().m_view_secret_key,
|
||||
w.get_account().get_keys().get_device(),
|
||||
carrot::is_carrot_transaction_v1(tx),
|
||||
is_carrot,
|
||||
main_derivations,
|
||||
additional_derivations
|
||||
);
|
||||
@@ -948,8 +949,8 @@ cryptonote::transaction finalize_all_proofs_from_transfer_details(
|
||||
|
||||
//! @TODO: HW device
|
||||
carrot::cryptonote_hierarchy_address_device_ram_borrowed addr_dev(
|
||||
acc_keys.m_account_address.m_spend_public_key,
|
||||
acc_keys.m_view_secret_key);
|
||||
acc_keys.m_carrot_account_address.m_spend_public_key,
|
||||
acc_keys.k_view_incoming);
|
||||
|
||||
// finalize enotes
|
||||
LOG_PRINT_L3("Getting output enote proposals");
|
||||
|
||||
Reference in New Issue
Block a user