mirror of
https://github.com/oxen-io/oxen-core.git
synced 2023-12-14 02:22:56 +01:00
Merge branch 'master' into dev
This commit is contained in:
commit
62a5d7abe5
3 changed files with 44 additions and 3 deletions
|
@ -61,6 +61,7 @@ namespace cryptonote
|
|||
{97407, "504af73abbaba85a14ddc16634658bf4dcc241dc288b1eaad09e216836b71023"},
|
||||
{98552, "2058d5c675bd91284f4996435593499c9ab84a5a0f569f57a86cde2e815e57da"},
|
||||
{144650, "a1ab207afc790675070ecd7aac874eb0691eb6349ea37c44f8f58697a5d6cbc4"},
|
||||
{266284, "c42801a37a41e3e9f934a266063483646072a94bfc7269ace178e93c91414b1f"},
|
||||
};
|
||||
|
||||
crypto::hash get_newest_hardcoded_checkpoint(cryptonote::network_type nettype, uint64_t *height)
|
||||
|
|
|
@ -988,6 +988,7 @@ namespace service_nodes
|
|||
break;
|
||||
}
|
||||
|
||||
m_transient_state.rollback_events.push_back(std::unique_ptr<rollback_event>(new rollback_key_image_unlock(block_height, snode_key)));
|
||||
node_info.requested_unlock_height = unlock_height;
|
||||
early_exit = true;
|
||||
}
|
||||
|
@ -1068,6 +1069,20 @@ namespace service_nodes
|
|||
}
|
||||
break;
|
||||
|
||||
case rollback_event::key_image_unlock:
|
||||
{
|
||||
auto *rollback = reinterpret_cast<rollback_key_image_unlock *>(event);
|
||||
auto iter = m_transient_state.service_nodes_infos.find(rollback->m_key);
|
||||
if (iter == m_transient_state.service_nodes_infos.end())
|
||||
{
|
||||
MERROR("Could not find service node pubkey in rollback key image unlock");
|
||||
rollback_applied = false;
|
||||
break;
|
||||
}
|
||||
iter->second.requested_unlock_height = KEY_IMAGE_AWAITING_UNLOCK_HEIGHT;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
MERROR("Unhandled rollback type");
|
||||
|
@ -1387,6 +1402,11 @@ namespace service_nodes
|
|||
{
|
||||
}
|
||||
|
||||
service_node_list::rollback_key_image_unlock::rollback_key_image_unlock(uint64_t block_height, crypto::public_key const &key)
|
||||
: service_node_list::rollback_event(block_height, key_image_unlock), m_key(key)
|
||||
{
|
||||
}
|
||||
|
||||
bool service_node_list::store()
|
||||
{
|
||||
int hf_version = m_blockchain.get_current_hard_fork_version();
|
||||
|
@ -1433,6 +1453,7 @@ namespace service_nodes
|
|||
case rollback_event::new_type: data_to_store.events.push_back(*reinterpret_cast<rollback_new *>(event_ptr.get())); break;
|
||||
case rollback_event::prevent_type: data_to_store.events.push_back(*reinterpret_cast<prevent_rollback *>(event_ptr.get())); break;
|
||||
case rollback_event::key_image_blacklist_type: data_to_store.events.push_back(*reinterpret_cast<rollback_key_image_blacklist *>(event_ptr.get())); break;
|
||||
case rollback_event::key_image_unlock: data_to_store.events.push_back(*reinterpret_cast<rollback_key_image_unlock *>(event_ptr.get())); break;
|
||||
default:
|
||||
MERROR("On storing service node data, unknown rollback event type encountered");
|
||||
return false;
|
||||
|
@ -1555,6 +1576,13 @@ namespace service_nodes
|
|||
*i = from;
|
||||
m_transient_state.rollback_events.push_back(std::unique_ptr<rollback_event>(i));
|
||||
}
|
||||
else if (event.type() == typeid(rollback_key_image_unlock))
|
||||
{
|
||||
const auto& from = boost::get<rollback_key_image_unlock>(event);
|
||||
auto *i = new rollback_key_image_unlock();
|
||||
*i = from;
|
||||
m_transient_state.rollback_events.push_back(std::unique_ptr<rollback_event>(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
MERROR("Unhandled rollback event type in restoring data to service node list.");
|
||||
|
|
|
@ -106,7 +106,6 @@ namespace service_nodes
|
|||
bool is_fully_funded() const { return total_contributed >= staking_requirement; }
|
||||
size_t total_num_locked_contributions() const;
|
||||
|
||||
int dummy; // FIXME(doyle)
|
||||
BEGIN_SERIALIZE_OBJECT()
|
||||
VARINT_FIELD(version)
|
||||
VARINT_FIELD(registration_height)
|
||||
|
@ -124,7 +123,6 @@ namespace service_nodes
|
|||
{
|
||||
VARINT_FIELD(swarm_id)
|
||||
}
|
||||
VARINT_FIELD(dummy)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
|
||||
|
@ -207,6 +205,7 @@ namespace service_nodes
|
|||
new_type,
|
||||
prevent_type,
|
||||
key_image_blacklist_type,
|
||||
key_image_unlock,
|
||||
};
|
||||
|
||||
rollback_event() = default;
|
||||
|
@ -272,7 +271,19 @@ namespace service_nodes
|
|||
FIELD(m_was_adding_to_blacklist)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
typedef boost::variant<rollback_change, rollback_new, prevent_rollback, rollback_key_image_blacklist> rollback_event_variant;
|
||||
|
||||
struct rollback_key_image_unlock : public rollback_event
|
||||
{
|
||||
rollback_key_image_unlock() { type = key_image_unlock; }
|
||||
rollback_key_image_unlock(uint64_t block_height, crypto::public_key const &key);
|
||||
crypto::public_key m_key;
|
||||
|
||||
BEGIN_SERIALIZE()
|
||||
FIELDS(*static_cast<rollback_event *>(this))
|
||||
FIELDS(m_key)
|
||||
END_SERIALIZE()
|
||||
};
|
||||
typedef boost::variant<rollback_change, rollback_new, prevent_rollback, rollback_key_image_blacklist, rollback_key_image_unlock> rollback_event_variant;
|
||||
|
||||
struct quorum_for_serialization
|
||||
{
|
||||
|
@ -381,3 +392,4 @@ VARIANT_TAG(binary_archive, service_nodes::service_node_list::rollback_change, 0
|
|||
VARIANT_TAG(binary_archive, service_nodes::service_node_list::rollback_new, 0xa2);
|
||||
VARIANT_TAG(binary_archive, service_nodes::service_node_list::prevent_rollback, 0xa3);
|
||||
VARIANT_TAG(binary_archive, service_nodes::service_node_list::rollback_key_image_blacklist, 0xa4);
|
||||
VARIANT_TAG(binary_archive, service_nodes::service_node_list::rollback_key_image_unlock, 0xa5);
|
||||
|
|
Loading…
Reference in a new issue