One-time multi-signatures to improve security

sbagency
Apr 13, 2022

--

One-time signature (private key is used only once) is very secure and can be implemented at any blockchain protocol.

High level time diagram

One-time multi-sig protocol steps

  1. offline: next=gen_SK/A() // generate new secret key(SK) and address (A)
  2. online: CA=deploy(next.A) // deploy smart contract, address (CA)
  3. offline: sign(hash,prev.SK) // sign (CA,next.A,to,val,nonce,chainid)
  4. online: transfer(to,val,next.A,sig) // check sig, to.transfer(val)
constructor

Constructor args: next (addresses), th (threshold), ln (length).

update next addresses

Function _updateNext: check and store addresses in mapping _used.

validate accounts

Function _validateAccounts: check that sig is produced by stored addresses: _used[a]==_nonce

transfer

Function transfer: check signatures, update next addresses and transfer eth.

How to prepare signatures // offline

Simple one-time multi-signatures protocol (offline/online) to protect private keys (offline).

github repo

--

--

sbagency
sbagency

Written by sbagency

Tech/biz consulting, analytics, research for founders, startups, corps and govs.

No responses yet