3.6 KiB
html, parent, blurb, labels
| html | parent | blurb | labels | |
|---|---|---|---|---|
| contribute-code-flow.html | amendments.html |
|
Contribute Code to the XRP Ledger
The software that powers the XRP Ledger is open-source, so anyone can download, modify, extend, or explore it. If you want to contribute code, it's important to work with the community in defining the specifications of your changes and testing the code before adding it to rippled.
XRP Ledger Standards
Changes to rippled are tracked by an XRP Ledger Standard (XLS), a document that identifies and details the specifications of a change. Before committing to development, you must start a discussion in the XRPL-Standards repo. This provides the community a chance to discuss and provide feedback about your change.
Note: Bug fixes don't require an XLS, but may require an amendment.
Creating an XLS has its own process, but can be summarized as:
- Starting a discussion and gathering feedback.
- Creating an XLS draft in the standards repo.
- Publishing the XLS draft as a Candidate Specification.
For details, see the XLS contributing guide.
Amendment Implementation
After you've created an XLSd, you now need to determine if your change requires an amendment. Changes that affect transaction processing require amendments, specifically changes that:
- Modify ledger rules, resulting in different outcomes.
- Add or remove transactions.
- Affect consensus.
Note: If your change doesn't need an amendment, you can go straight to coding and deployment.
Implementing code as an amendment requires you to add the amendment to these files:
-
Feature.cpp:
Supportedparameter should be set tonountil development is complete.DefaultVoteparameter should be set toyesfor bug fixes; everything else defaults tono. -
Feature.h: Increment the
numFeaturescounter and declare anextern uint256 constvariable.
Coding and Deployment
The general development path breaks down as follows:
-
Create a fork or branch in the
rippledrepository to develop your code.Tip: If you're not sure where to start, Dev Null Productions provides a detailed and thorough
rippledSource Code Guide. -
Run unit and integration tests. Running a server in stand-alone mode is useful for testing your changes in an isolated environment, but you may want to stand up a private network for extensive changes.
-
Create a pull request on
XRPLF:develop.Note for Amendments: Update the
Supportedparamter toyesin Feature.cpp. -
After the pull request is approved by XRP Ledger maintainers, your code is merged into
developand additional testing can be done on Devnet.Note for Amendments:
- The
DefaultVoteparameter is now locked. - If problems are found with the amendment, you must restart the process of making fixes and submitting a new PR. You can change the default vote in the new PR.
- The
-
On a quarterly basis, a release candidate is built from approved PRs on
develop. The package is deployed to Testnet and a few nodes on Mainnet. If no issues are found with the release candidate, the code is merged intomasterand nodes on Mainnet can upgrade to this build. -
New amendments go through the consensus process and validators vote on enabling them or not.
Code Flowchart

See Also
- Concepts: