Splits 4337 smart accounts are engineered to provide users with a seamless and secure way to manage a tiered system of multi-chain multi-sigs. This means minimizing user friction to synchronize state (e.g. implementation, signer set) across networks without degrading the underlying security model.
Currently, these smart accounts are compatible with entry point v0.7.
- m-of-n signers: Supports both Passkeys and EOAs.
- ERC1271 Support: Can verify ERC1271 signatures.
- Token Support: Accepts ERC721 and ERC1155(single and batch) tokens.
- Fallback Manager: Allows users to extend their smart accounts to handle future callback-based interactions, such as those involving ERC721 tokens, ensuring future-proofing.
- Module Manager: Provides users the ability to add trusted modules that can interact on behalf of the smart account.
- Contract Deployment: Enables the deployment of new contracts using
create
from within the smart account during a UserOp. - Merkelized User Operations: Supports signing once for multiple user operations across different networks and accounts using Merkle trees.
- Light User Operation: When multiple signatures are required, allows the last signer to set gas according to current market conditions.
Merkelized User Operations utilize Merkle trees to generate a root of all intended user operations. The user signs the Merkle root once, and when submitting a user operation, the signature includes the Merkle proof for verification. There is no strict limit on the number of operations or which parameters should remain constant, allowing operations across multiple networks and smart accounts with a single signature.
When the threshold (the number of unique and valid signatures required for a valid user operation) is greater than 1, the first threshold - 1 signers sign over a reduced set of properties from the user operation. This gives the final signer flexibility to price gas for the user operation inline with current market conditions. In the case of Merkelized User Operations, the initial signatures are verified against a light Merkle root, constructed using these reduced light user operations.
Properties included in light UserOp:
- sender
- nonce
- calldata
Properties excluded:
- initCode - This has been excluded because of
sender
sincesender
is calculated deterministically frominitCode
making it redundant. - accountGasLimits
- preVerificationGas
- gasFees
- paymasterAndData
- signature
pnpm build
pnpm test
pnpm test:coverage
pnpm test:coverage:report
pnpm lint
pnpm format
forge install 0xSplits/splits-contracts-monorepo