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"},
|
{97407, "504af73abbaba85a14ddc16634658bf4dcc241dc288b1eaad09e216836b71023"},
|
||||||
{98552, "2058d5c675bd91284f4996435593499c9ab84a5a0f569f57a86cde2e815e57da"},
|
{98552, "2058d5c675bd91284f4996435593499c9ab84a5a0f569f57a86cde2e815e57da"},
|
||||||
{144650, "a1ab207afc790675070ecd7aac874eb0691eb6349ea37c44f8f58697a5d6cbc4"},
|
{144650, "a1ab207afc790675070ecd7aac874eb0691eb6349ea37c44f8f58697a5d6cbc4"},
|
||||||
|
{266284, "c42801a37a41e3e9f934a266063483646072a94bfc7269ace178e93c91414b1f"},
|
||||||
};
|
};
|
||||||
|
|
||||||
crypto::hash get_newest_hardcoded_checkpoint(cryptonote::network_type nettype, uint64_t *height)
|
crypto::hash get_newest_hardcoded_checkpoint(cryptonote::network_type nettype, uint64_t *height)
|
||||||
|
|
|
@ -988,6 +988,7 @@ namespace service_nodes
|
||||||
break;
|
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;
|
node_info.requested_unlock_height = unlock_height;
|
||||||
early_exit = true;
|
early_exit = true;
|
||||||
}
|
}
|
||||||
|
@ -1068,6 +1069,20 @@ namespace service_nodes
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
{
|
{
|
||||||
MERROR("Unhandled rollback type");
|
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()
|
bool service_node_list::store()
|
||||||
{
|
{
|
||||||
int hf_version = m_blockchain.get_current_hard_fork_version();
|
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::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::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_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:
|
default:
|
||||||
MERROR("On storing service node data, unknown rollback event type encountered");
|
MERROR("On storing service node data, unknown rollback event type encountered");
|
||||||
return false;
|
return false;
|
||||||
|
@ -1555,6 +1576,13 @@ namespace service_nodes
|
||||||
*i = from;
|
*i = from;
|
||||||
m_transient_state.rollback_events.push_back(std::unique_ptr<rollback_event>(i));
|
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
|
else
|
||||||
{
|
{
|
||||||
MERROR("Unhandled rollback event type in restoring data to service node list.");
|
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; }
|
bool is_fully_funded() const { return total_contributed >= staking_requirement; }
|
||||||
size_t total_num_locked_contributions() const;
|
size_t total_num_locked_contributions() const;
|
||||||
|
|
||||||
int dummy; // FIXME(doyle)
|
|
||||||
BEGIN_SERIALIZE_OBJECT()
|
BEGIN_SERIALIZE_OBJECT()
|
||||||
VARINT_FIELD(version)
|
VARINT_FIELD(version)
|
||||||
VARINT_FIELD(registration_height)
|
VARINT_FIELD(registration_height)
|
||||||
|
@ -124,7 +123,6 @@ namespace service_nodes
|
||||||
{
|
{
|
||||||
VARINT_FIELD(swarm_id)
|
VARINT_FIELD(swarm_id)
|
||||||
}
|
}
|
||||||
VARINT_FIELD(dummy)
|
|
||||||
END_SERIALIZE()
|
END_SERIALIZE()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -207,6 +205,7 @@ namespace service_nodes
|
||||||
new_type,
|
new_type,
|
||||||
prevent_type,
|
prevent_type,
|
||||||
key_image_blacklist_type,
|
key_image_blacklist_type,
|
||||||
|
key_image_unlock,
|
||||||
};
|
};
|
||||||
|
|
||||||
rollback_event() = default;
|
rollback_event() = default;
|
||||||
|
@ -272,7 +271,19 @@ namespace service_nodes
|
||||||
FIELD(m_was_adding_to_blacklist)
|
FIELD(m_was_adding_to_blacklist)
|
||||||
END_SERIALIZE()
|
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
|
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::rollback_new, 0xa2);
|
||||||
VARIANT_TAG(binary_archive, service_nodes::service_node_list::prevent_rollback, 0xa3);
|
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_blacklist, 0xa4);
|
||||||
|
VARIANT_TAG(binary_archive, service_nodes::service_node_list::rollback_key_image_unlock, 0xa5);
|
||||||
|
|
Loading…
Reference in a new issue