-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Update introduction * Add contribution guidelines doc * Document design goals and protocol features * Edit introduction for clarity * Refactor and improve local development doc
- Loading branch information
Showing
3 changed files
with
95 additions
and
89 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Contributing Guidelines | ||
Thank you for your interest in contributing to MMA! We welcome all contributions that improve our project. Before getting started, please ensure you've read our project's [Gitbook documentation](https://multi-message-aggregation.gitbook.io/multi-message-aggregation/). Should you have any questions, feel free to submit an issue in the repository or reach out to one of the maintainers directly. | ||
|
||
## Reporting issues | ||
To report a minor bug or issue, please [open an issue] in the repository, providing as much detail as possible to help reproduce the issue. Feel free to create and submit a pull request to rectify minor issues you come across such as documentation errors, typos, or minor bugs. | ||
|
||
## Code contribution | ||
For feature requests or significant changes or enhancements to the protocol, please first [submit an issue](#reporting-issues) to the repository for discussion. This will allow us to discuss your proposed changes and ensure they align with the project's goals before you begin working on a pull request. | ||
|
||
If you want to contribute code or documentation to the project, please follow these guidelines: | ||
|
||
1. Fork the project repository and clone it to your local machine. | ||
1. Create a new branch for your changes. | ||
1. Make your changes and test them thoroughly. | ||
1. Ensure that your changes are well-documented. | ||
1. Create a pull request and explain your changes in detail. | ||
1. Code review | ||
1. All code changes will be reviewed by the project maintainers. The maintainers may ask for additional changes, and once the changes have been approved, they will be merged into the main branch. | ||
|
||
**Testing**: All code changes must be thoroughly tested. Please ensure that your tests cover all new functionality and edge cases. Use the [forge coverage tool](https://book.getfoundry.sh/reference/forge/forge-coverage) to ensure that changes have adequate code coverage. | ||
|
||
**License**: By contributing to the project, you agree that your contributions will be licensed under the project's [LICENSE](https://github.com/MultiMessageAggregation/multibridge/blob/main/LICENSE). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# Local Development | ||
**Pre-requisites:** | ||
- Install the [Foundry](https://github.com/foundry-rs/foundry) toolkit. | ||
- Clone repository: | ||
```sh | ||
$ git clone https://github.com/MultiMessageAggregation/multibridge | ||
``` | ||
**Step 1:** Install required forge submodules | ||
|
||
```sh | ||
$ forge install | ||
``` | ||
|
||
**Step 2:** Build the project | ||
|
||
```sh | ||
$ forge build | ||
``` | ||
|
||
**Step 3:** Run Tests | ||
|
||
To run the tests, you will need a local fork of Ethereum, Polygon, and BSC mainnet states. To accomplish this, you must specify RPC endpoints for each of these networks. You can obtain RPC endpoints to use for Ethereum and Polygon, from Alchemy, Infura, or other infrastructure providers. For BSC, you can choose from a list of public RPC endpoints available [here](https://docs.bscscan.com/misc-tools-and-utilities/public-rpc-nodes). | ||
|
||
To set the RPC endpoints, make a copy of the `.env.sample` file and name it `.env`. The file contains a list of parameter names (e.g. `ETH_FORK_URL`) that correspond to each network. Set the respective values of each of these parameters to the RPC endpoints you wish to use. | ||
|
||
Once you have set these values, you can run both the unit and integration tests using the following command: | ||
|
||
```sh | ||
$ forge test | ||
``` | ||
**note:** We use [pigeon](https://github.com/exp-table/pigeon/tree/docs) to simulate the cross-chain behavior on forked mainnets. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters