spacemeshos / SMIPS

Spacemesh Improvement Proposals
https://spacemesh.io
Creative Commons Zero v1.0 Universal
7 stars 1 forks source link

Certification for Hare (WIP) #47

Closed sidsankhe closed 1 year ago

sidsankhe commented 3 years ago

Overview and Motivation

We propose adding a new role, that of a Hare Certifier, which publishes the results of the Hare algorithm when it terminates. This is advantageous for the following reasons:

High-level Design

A committee for Certification will be chosen based on the VRF (with an input possibly being the layer number and a special character for Certification). This committee will not be updated per round, but will last for the entire duration of the Hare algorithm on that given layer. The committee will listen to the Hare conversation, recording notify messages on all sets of values that they see. Once this committee accumulates f+1 notify messages on a set, it will deem that the Hare has terminated, will create and sign this output set, and gossip it to the entire network. This is an accurate instance for Hare terminating, because it means that the rest of the network should also see f+1 notify messages on the same set, indicating that all honest parties would terminate.

Proposed Implementation

Augment the Hare code to:

Implementation Plan

Questions

  1. Should nodes in the active set listen for Hare termination messages? If they receive a Hare termination message with a valid signature, should they store it and terminate? Where should these messages be stored?
  2. Should there be a way for the nodes to listen to the output of only the Hare termination messages?
  3. What does a node need to do if it successfully listens to the output of the Hare certifier, i.e. gets a valid termination message. Does it need to do anything other than simply store this message?
  4. What does contextual validity mean for the certification messages? Are all received certification messages contextually valid?

Stakeholders and Reviewers

TBD

lrettig commented 3 years ago

A committee for Certification will be chosen based on the VRF (with an input possibly being the layer number and a special character for Certification)

I propose that we use no "special character" - the VRF input for the certification is just the layer number (round ID).

countvonzero commented 1 year ago

implemented