Skip to content

blockful-io/external-resolver

Repository files navigation

External Resolver

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.

Components

  • 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.

Usage

To run this application locally, follow these steps:

  1. Clone this repository to your local machine.
  2. Copy the env.example to a .env file on the root directory
  3. Install dependencies by running:
npm install

Database setup

  1. Run local postgres instance (currently no initial data is inserted)
docker-compose up db -d
  1. Deploy the contracts locally:
npm run contracts start:db
  1. Start the gateway
npm run gateway dev:db
  1. Request the domain properties through the client:
npm run client start

Layer 2 setup

  1. Deploy the contracts locally:
npm run contracts start:arb
  1. Start the gateway
npm run gateway dev:arb
  1. Request the domain properties through the client:
npm run client start

Deployment

It's required to have the Railway CLI installed.

  1. Install the Railway CLI through: npm i -g @railway/cli
  2. Login into your Railway account: railway login
  3. Link the repo to the project: railway link
  4. Build project: turbo build --filter=@blockful/gateway...
  5. Test bundle locally: npm run gateway start:db
  6. Deploy the Gateway: railway up

Architecture

High Level

Database

image

Layer 2

image

Conclusion

This project seeks to significantly enhance the scalability and usability of the Ethereum Name Service through the development of a comprehensive reference codebase. By combining existing patterns and best practices, we aim to lower costs for users and drive increased adoption within the industry. We welcome collaboration and feedback from the community as we progress towards our goals.

Contributing

We welcome contributions from the community to improve this frontend application. To contribute, please follow these guidelines:

  1. Fork the repository and create a new branch for your feature or bug fix.

  2. Make your changes and ensure they follow the project's coding conventions.

  3. Test your changes locally to ensure they work as expected.

  4. Create a pull request with a detailed description of your changes.

License

This project is licensed under the MIT License.

Acknowledgements

Special thanks to the Ethereum Name Service (ENS) community for their contributions and support.

About

This project aims to scale the Ethereum Name Service (ENS) by consolidating existing patterns and proofs of concept into a unified and production-ready codebase.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks