spacemeshos / pm

Project management. Meta-tasks related to research, dev, and specs for the Spacemesh protocol and infrastructure.
http://spacemesh.io/
Creative Commons Zero v1.0 Universal
2 stars 0 forks source link

POPS-VRF #168

Closed lrettig closed 1 year ago

lrettig commented 1 year ago

Motivation:

Proposed solution:

Add a step to the "smesher initialization" process by which a smesher begins smeshing:

  1. generate a new keypair (arbitrary, smesher is free to choose this)
  2. use this to generate the initial PoST data (which commits to genesis ID) and initial PoET challenge
  3. submit PoET challenge and wait for result
  4. new step: run a short PoW to find a nonce on this PoET output
  5. include this nonce in all future VRF messages f(x) = vrf(nonce, x)

See this thread for more.

Note: because finding the nonce involves PoW, it's theoretically possible that, if the adversary performs enough work, they could find a single nonce that validates multiple genesis IDs. Due to the extra work involved, we don't think this is a problem.

Note: this thread and #146 refer to additional, related work to make this ID generation/nonce scheme robust against a certain class of DoS attack, but that's less important for genesis and is scheduled for a later upgrade.

dshulyak commented 1 year ago

run a short PoW to find a nonce on this PoET output

i guess this will be using post library. maybe @moshababo recalls what we should use

moshababo commented 1 year ago

As a result of this thread, the following feature was implemented: https://github.com/spacemeshos/SMIPS/issues/45. It was already fully integrated, yet remained turned off (see here).

Later, Tal mentioned it's unusable for this specific attack.

moshababo commented 1 year ago

Closing in favor of https://github.com/spacemeshos/pm/issues/172.