chaintope/tapyrus-signer

Write specification of federation management.

Yamaguchi opened this issue · 2 comments

Federation Management is the new feature.
This feature supports the following two use cases.

  • Add a new signer to federation.
  • Remove a signer from federation.

To implement these feature, we have some prerequisites.

  • All signers SHOULD be online during the add/remove operation.

  • These operations MUST be performed with trustlessness.

  • The parameters used in updated signer network such as aggregated public key MAY be computed in offline, but we should write how to compute/share the parameters in the specification.

  • It is desired not to change Block structure defined in tapyrus core v0.3.0.

  • Block has already 'aggPubkey' field. We can set a new aggregated public key to this field, only when the federation will change (i.e. aggPubkey will be set in only previous block we start to apply new federation).

We need the detailed specification of federation management.

I'm planning to write the documents:

  • How to set up new Tapyrus Signer Network.
  • How to configure and start Tapyrus Signer Network.
  • Federation Management of Tapyrus Signer Network.

To update federation without stopping signer network, Signer process need some interface like RPC or gRPC.

This interface takes 3 parameters

  • new aggregated public key
  • block height where new federation is applied
  • new node_secret

When calling this, signer schedules the federation update at block height.