I am in the process of updating a DAPP so that it requires a 2/3-multisig address in order to call some functions, but I fail to find information about how to verify that an address is of this type or not, or how to do this in a different way if the aforementioned approach is not the appropiate.

Any ideas/resources on how to do this?

1 Answer 1


The best you can probably do is check the code size to see if it's a contract or an EOA (external owned account) address:

uint size;
assembly {
    size := extcodesize(_address)

This will be zero if it's an EOA and non-zero if it's a contract. There isn't a way to check if a contract is a multi-sig because there's no standard around multi-sig contracts.

  • A workaround to make a EOA address pass by that check is to just create a contract that calls the function that checks this right? Given that there is no standard, would it be a good approach to simply program a contract that somehow implements the same 3/2-multisig functionality within the program itself, until there is a standard around it?
    – ranchalp
    Nov 21, 2017 at 21:44

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .