Is it possible to create a multi-signature contract that would not require a transaction for every signature (since this is quite expensive for a higher number of transactions)?

Is it possible to collect signatures offline and broadcast all of them in one on-chain transaction?


2 Answers 2


Yes. You can achieve this by using signatures of the member keys instead of transactions.

To achieve this, each members of the multisig can sign a message attesting that they approve of the transaction. They can then give their signatures to a single entity who broadcasts the transaction that includes all the signatures as data. On-chain, the smart contract will take each signature and recover each of the signers original addresses and compare that to a mapping of addresses stored in a mapping.

Gnosis Safe does it here.


There's Simple Multisig, by Christian Lundkvist, that requires sending all signatures in a single transaction.

It has a execute function that validates the signatures and executes the operation requested:

function execute(
    uint8[] sigV, 
    bytes32[] sigR, 
    bytes32[] sigS, 
    address destination, 
    uint value, 
    bytes data, 
    address executor, 
    uint gasLimit) public

There's an article by the author for the previous version: Exploring Simpler Ethereum Multisig Contracts.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.