Abstracted-Labs / InvArch-Frames

InvArch Parachain FRAME
https://invarch.github.io/InvArch-Frames/
GNU General Public License v3.0
27 stars 12 forks source link

Offchain Signing Manager Pallet #230

Open arrudagates opened 7 months ago

arrudagates commented 7 months ago

We need a pallet to manage the TSS system and to give an interface for payload signature request by users + signed payload delivery by TSS nodes.

WIP architecture:

type Payload = Vec<u8>;

config {
  MinimumParticipants: u32;
}

storages {
  SignatureRequests: Hash -> Payload;
  CurrentNodes: AccountId32 -> EcdsaPubKey;
}

offchain worker {
  // get offchain storage of signature requests
  // if different from current storage, set to new one
  // get offchain storage of requests already being processed
  // if any new request not in processing storage, begin tss process

  // if any finished request still in onchain requests storage then submit deliver_signed_payload call
}

calls {
  request_signature(payload: Payload); // Submitted by user

  deliver_signed_payload(hash: Hash, signature: Signature); // Submitted by one of the TSS nodes

  set_participants_and_threshold(threshold: u32, participants: Vec<Participant>) // Root-only call
}

There has to be an automated way to signal a new node entering the set and a way to kick out nodes inactive for too long.