ERC4973
ERC4973 copied to clipboard
Question: payload to approve signatures from Gnosis Safe
I've been working with Gnosis Safe team to get EIP-712 working well. They're now pushing a fix that would resolve issue and fully support 712. I'm trying to test this with Otterspace app, i.e., approving a badge using Safe.
What would the payload/params to call say give()
using safe?
Would the signature be 0x
and signer be the address of the Safe contract?
Wondering if I understood this integration flow correctly..
Oh, that sounds super cool @rahulrumalla! Thanks for pushing :)
OK so here is how I believe that would work:
- Safe implements EIP-1271: https://eips.ethereum.org/EIPS/eip-1271 from what I know
- So if e.g. a Safe was the issuer of an ABT where basically
safeAddress==from
, then EIP-4973'sgive
calls through to the Safe's implementation of EIP-1271function isValidSignature
. Specifically, it's- https://github.com/rugpullindex/ERC4973/blob/1c8d612d78739c2f7bd8cae95be808bcbf3a1cae/src/ERC4973.sol#L112
- https://github.com/OpenZeppelin/openzeppelin-contracts/blob/cb3f2ab900e39c5ab6e0de6663edf06f573b834f/contracts/utils/cryptography/SignatureChecker.sol#L36
- So technically, the signature, hash and signer's address are reaching there. But then I don't know what the Safe sees as valid. I guess the answer lies in the code around this location: https://github.com/safe-global/safe-contracts/blob/da66b45ec87d2fb6da7dfd837b29eacdb9a604c5/contracts/GnosisSafe.sol#L285
- e.g. the Safe could implement it where any of the Safe member's signatures is a valid signature representing the entire multisig wallet. Or it could implement any other behavior.
- Maybe u can point someone in their team to this issue and they can comment
Ok. Forwarded this thread for input. What you said makes sense to me and I got this working end to end in our test build with their test build. Fix is going into production on Monday apparently.
@rahulrumalla any update on this? Can we close?
@rahulrumalla any update, can this be closed?