diff --git a/README.md b/README.md index 32b3f13b..b3a50864 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,16 @@ -# Alchemy Modular Smart Contract Account (MSCA) +# Modular Account -Contracts for an upgradeable modular smart contract account that is compatible with ERC-4337, along with a set of plugins. +Alchemy's Modular Account is a maximally modular smart contract account. It is compatible with [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337), upgradeable, and is in-line with [ERC-6900](https://eips.ethereum.org/EIPS/eip-6900). + +## Overview + +This repository contains: +* The [Modular Account](https://github.com/alchemyplatform/modular-account/src/account) +* [Factory contracts for the Modular Account](https://github.com/alchemyplatform/modular-account/src/factory) +* 3 Modular Account compatible plugins: + * [MultiOwnerPlugin](https://github.com/alchemyplatform/modular-account/src/plugins/owner) is a plugin supporting 1+ ECDSA owners. + * [TokenReceiverPlugin](https://github.com/alchemyplatform/modular-account/src/plugins/TokenReceiverPlugin.sol) contains ERC721/ERC777/ERC1155 token receivers. + * [SessionKeyPlugin](https://github.com/alchemyplatform/modular-account/src/plugins/session) enables session keys with additonal optional restrictions such as time ranges, token spend limits, and gas spend limits. ## Development @@ -10,54 +20,32 @@ Contracts for an upgradeable modular smart contract account that is compatible w - `validation` and `validationFunction` are used to replace `validator`. - `associated` and `associatedFunction` are used to represents `validationFunction` and `hook` -## Build +### Building and Testing ```bash +# Build options forge build - -# or use the lite profile to reduce compilation time FOUNDRY_PROFILE=lite forge build - -# for faster IR builds (to check contract sizes) FOUNDRY_PROFILE=optimized-build forge build --sizes -``` - -## Syntax check -```bash +# Lint pnpm lint:src && pnpm lint:test -``` - -## Test -```bash +# Test Options forge test -vvv - -# or use the lite profile to reduce compilation time FOUNDRY_PROFILE=lite forge test -vvv ``` -## Generate Inspections +### Deployment +A deployment script can be found in the `scripts/` folder ```bash -bash utils/inspect.sh -``` - -## Static Analysis - -```bash -slither . +forge script script/Deploy.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast ``` -## External Libraries +## Security and Audits -We use Solady's highly optimized [UUPSUpgradeable](https://github.com/Vectorized/solady/blob/a061f38f27cd7ae330a86d42d3f15b4e7237f064/src/utils/UUPSUpgradeable.sol) in our contracts - -## Deployment - -```bash -forge script script/Deploy.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast -``` +We have done 2 audits from Spearbit and Quantstamp and will upload the reports shortly. ## License