oxen-io / oxen-core

Oxen core repository, containing oxend and oxen cli wallets
https://oxen.io
Other
317 stars 120 forks source link

Add SS and Lokinet versions to broadcast uptime proofs #1366

Closed jagerman closed 3 years ago

jagerman commented 3 years ago

We don't currently include the storage server and lokinet versions in uptime proofs. We should, because that allows things like mandating non-fork SS version upgrades, and allowing us to warn (e.g. via LokiSNBot and lokiblocks) on problematic versions.

(Has to wait for loki 9 HF before being included because it changes the uptime proof version/format).

darcys22 commented 3 years ago

Was the definition for the uptime proofs the struct in cryptonote_protocol/cryptonote_protocol_defs.h or cryptonote_protocol/cryptonote_protocol_defs.h?

In addition is the SS and lokinet version something that we can simply make a RPC request to the other clients to get?

jagerman commented 3 years ago

Was the definition for the uptime proofs the struct in cryptonote_protocol/cryptonote_protocol_defs.h or cryptonote_protocol/cryptonote_protocol_defs.h?

The .h defines the structure, the .cpp serializes it. Then service_node_list.cpp has generate_uptime_proof() that actually sets the value and adds a signature on top of them (so that they can't be forged). Further down, handle_uptime_proof checks that hash and, assuming the signature checks out, records the proof info.

In addition is the SS and lokinet version something that we can simply make a RPC request to the other clients to get?

The RPC interface is generally only exposed on public RPC nodes, but not publicly on most service nodes. So we can expose the info on all service nodes by adding it to the get_service_nodes RPC call, but actually transmitting that over the network would need to be part of the proof.