Thanks for your interest in improving Base.
This document will help you get started. Do not let this document intimidate you. It should be considered as a guide to help you navigate the process.
We use vouch to manage contributor trust. This helps us maintain code quality by gating pull requests behind an explicit trust list.
What this means for you:
- Issues are how we stay in sync with the Base community and understand what matters most. Please keep them focused on bugs and feature requests so they remain useful signal — typo fixes and minor refactoring suggestions will be closed without comment.
- Pull requests require you to be vouched and assigned an issue. PRs from unvouched users are auto-closed.
How to get vouched:
- Open an issue describing the bug or feature you'd like to work on.
- A maintainer will review and comment
vouchto add you to the trust list. - Once vouched and assigned an issue, you can open pull requests.
The trust list lives in .github/VOUCHED.td.
There are three ways an individual can contribute:
- By opening an issue: If you believe you have uncovered a bug in Base or have a feature request, creating a new issue in the issue tracker is the way to begin the process.
- By adding context: Provide additional context to existing issues, such as screenshots, logs, and code snippets, to help resolve them.
- By resolving issues: Typically this is done by opening a pull request that fixes the underlying problem in a concrete and reviewable manner. Only do this once you have been vouched on the issue.
To ensure we're all rowing in the same direction and to prevent wasted effort, please note the following guidelines:
- Bug reports: Well-documented bug reports with reproduction steps are always appreciated.
- Feature requests: Feature requests, such as new RPCs or other improvements.
- Typo fixes: Issues and PRs that only fix typos will be closed.
- Minor refactoring: Style cleanups, code reorganization, or other changes without a functional impact will be closed.
If you're considering a contribution, please open an issue first to discuss your proposal. This helps:
- Ensure the change aligns with project goals
- Prevent duplicate work
- Get early feedback on the approach
- Save your time if the change isn't something we can accept
We want to respect your time. Opening a discussion before investing significant effort helps ensure your contribution can be merged.
Important: Only work on issues that are assigned to you. If you're interested in an existing issue, comment on it to request assignment. This helps prevent duplicate work and ensures your contribution can be merged.
If you want to work on something that doesn't have an issue yet, open an issue first and note that you'd like to implement it. Once we agree it's worthwhile, we'll assign the issue to you.
- Check for existing issues or PRs that address the same problem
- If you are assigned an issue but no longer have time to work on it, please let us know so we can unassign it
- Rust
1.93or newer just- Foundry (
forge) for Solidity-based test fixtures - Bun and Node.js
22+if you want to run the spec site locally - Docker if you want to use the local devnet or build container images
- Run
just setupto install other deps
- Fork the repository and create your branch from
main - Make your changes, following the existing code style
- Add or update tests as appropriate
- Ensure all checks pass locally:
just ci
- Open a pull request only if you have been assigned the related issue
- Link to the related issue
- Describe what your changes do and why
- Respond to feedback and requests for changes
- Keep your PR up to date with the
mainbranch - Be patient - reviews may take time
When filing a new bug report in the issue tracker, please include:
- The Base version you are on (and that it is up to date)
- Relevant logs and error messages
- Concrete steps to reproduce the bug
- Any relevant configuration
The more minimal your reproduction case, the easier it is to diagnose and fix.
If you have questions:
- Open a discussion in the repository
- Comment on the relevant issue
- Check existing documentation and issues first