diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6fdbb9 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# Tokenbound Account Contracts + +This repository contains an opinionated [ERC-6551](https://eips.ethereum.org/EIPS/eip-6551) account implementation. The smart contracts are written in Solidity using the [Foundry](https://book.getfoundry.sh/) development framework. + +**This project is under active development and may undergo changes until ERC-6551 is finalized.** For the most recently deployed version of these contracts, see the [v0.2.0](https://github.com/tokenbound/contracts/releases/tag/v0.2.0) release. We recommend this version for any production usage. + +## Contracts + +The `src/` directory contains the main contracts for the project: + +- `Account.sol`: This contract is the main ERC-6551 account implementation. It includes functionalities for executing a low-level call against an account if the caller is authorized to make calls, setting the implementation address for a given function call, granting a given caller execution permissions, locking the account until a certain timestamp, and more. + +- `AccountGuardian.sol`: This contract manages upgrade and cross-chain execution settings for accounts. It includes functionalities for setting trusted implementations and executors. + +- `AccountProxy.sol`: This contract is an ERC-1967 proxy which enables account upgradability. It includes functionalities for initializing and getting the implementation of the contract. + +## Using as a Dependency + +If you want to use `tokenbound/contracts` as a dependency in another project, you can add it using `forge install`: + +```sh +forge install tokenbound=tokenbound/contracts +``` + +This will add `tokenbound/contracts` as a git submodule in your project. For more information on managing dependencies, refer to the [Foundry dependencies guide](https://github.com/foundry-rs/book/blob/master/src/projects/dependencies.md). + +## Development Setup + +You will need to have Foundry installed on your system. Please refer to the [Foundry installation guide](https://github.com/foundry-rs/book/blob/master/src/getting-started/installation.md) for detailed instructions. + +To use this repository, first clone it: + +```sh +git clone https://github.com/tokenbound/contracts.git +cd contracts +``` + +Then, install the dependencies: + +```sh +forge install +``` + +This will install the submodule dependencies that are in the project. + +## Running Tests + +To run the tests, use the `forge test` command: + +```sh +forge test +``` + +For more information on writing and running tests, refer to the [Foundry testing guide](https://github.com/foundry-rs/book/blob/master/src/forge/writing-tests.md). + +## Contributing + +Contributions are welcome and appreciated! Please make sure to run the tests before submitting a pull request.