What is ERC-7780?
ERC-7780 introduces three new module types: signers, policies and stateless validators. Policy modules can be used to check what a UserOperation or action is trying to achieve and determine if this is allowed. Signer modules can be used to validate signatures on provided hashes. Stateless validators are modules that are used to both validate signatures and compare them to a calldata-provided data blob which could, for example, include owners to check signatures against.
Why ERC-7780?
We do not expect every account to implement all of these module types since they are optional. However, these policies bring features that are currently not possible in a composable way in ERC-7579.
Policy and signer modules allow an account to make direct use of such a permissioning logic rather than relying on external modules to handle this. This has the upside of lower gas cost but the downside of less flexibility for users and developers that use the account.
Stateless validators enable further composability around signature validation logic. In many cases, it does not make sense to re-write signature validation for new validators, but instead to use the existing ones. However, this is usually not possible since the validators rely on a stored configuration indexed by the msg.sender
, which is expected to be an account. Stateless validators solve this problem by not relying on state to compare signature verficiation against, but instead to compare it against a calldata-provided argument.
The standard
This standard introduces three new module types on top of the existing modules introduced by ERC-7579:
- Policy (type id: 5)
- Signer (type id: 6)
- Stateless Validator (type id: 7)