Dynamic committee multi-sig based oracle

Overview
I’ve been playing around with the idea of bridging data between a side chain and the ethereum mainnet.
The setup is 2 parallel chains, ethereum mainnet and some other chain where it’s actors are bonded on the ethereum mainnet.

The challenge is how to approve the un-bonding on the side chain but actually withdraw the bond on mainnet.

Details

  • A contract on the ethereum chain will have an “admin” pubkey which can perform a restricted action like releasing a bonded actor.
  • The admin key is generated via DKG by a random committee with 2/3 threshold.
  • Committee size and selection is similar to eth2 spec (size and RANDAO).
  • Bonded actors on the side chain will randomly get selected to a committee to sign restricted actions.
  • The committee from Epoch E-1 will publish a signed pub admin key which was generated by a future committee at epoch E. That signed pub key will switch the admin key for epoch E.
  • To un-bond an actor, he will request to be un-bonded on the side chain. If the committee at that epoch agrees on the validity of his request it will sign it.
  • The bonded actor will publish to the ethereum chain the signature along with the request.
  • The bond is released if the signature verifies against that epoch’s admin pub key.
  • Using BLS signatures, the verification will require 2 pairing operations.
  • Aggregating signatures as part of a shared secret is easily implementable.
  • Switching the admin key between epochs should only be done on a finalised state on the side chain, in case of a re-org.

Instead of restricting ourselves to a simple use-case, the state root of the side chain can be published via the committee which can expand the restricted operations possible on the mainnet via Merkle proofs.