This project aims to scale the Ethereum Name Service (ENS) by reducing costs for users and increasing its usage. The strategy involves combining existing patterns such as ERC-3668, EIP-5559, ENSIP-10 and ENSIP-16, along with proof of concepts to develop a comprehensive reference codebase for the industry.
The primary objective of this project is to enhance the scalability of ENS while making it more cost-effective for users. By increasing its usability, we aim to foster broader adoption within the community.
- L1 Resolver: A contract that is responsible for redirecting the request to the specified external source, such as L2 protocols and an external database.
- L2 Resolver Contract: L2 contract that is able to resolve ENS domains to its corresponding address, as well as fetch information such as Twitter handle and avatar image.
- Gateway: An API capable of handling reading data from an external source following the flow specified by the EIP-5559.
- Client: A module that is able to read ENS domain properties even when stored in external data sources.
To run this application locally, follow these steps:
- Clone this repository to your local machine.
- Copy the
env.exampleto a.envfile on the root directory - Install dependencies by running:
npm install- Run local postgres instance (currently no initial data is inserted)
docker-compose up db -d- Deploy the contracts locally:
npm run contracts start- Start the gateway
npm run gateway devIt's required to have the Railway CLI installed.
- Install the Railway CLI through:
npm i -g @railway/cli - Login into your Railway account:
railway login - Link the repo to the project:
railway link - Build project:
turbo build --filter=@blockful/gateway... - Test bundle locally:
npm run gateway start:db - Deploy the Gateway:
railway up
We welcome contributions from the community to improve this frontend application. To contribute, please follow these guidelines:
-
Fork the repository and create a new branch for your feature or bug fix.
-
Make your changes and ensure they follow the project's coding conventions.
-
Test your changes locally to ensure they work as expected.
-
Create a pull request with a detailed description of your changes.
This project is licensed under the MIT License.
Special thanks to the Ethereum Name Service (ENS) community for their contributions and support.