First of all, THANK YOU! The easier it is to run a blockchain node on AWS the simpler it is for the ecosystem to build with it. Here are the major steps to contribute a Node Runner Blueprint:
- Check with our list of Issues if someone is already working on the node type you are after. If yes - join the forces! If no, go to the next step.
- Create a new issue to propose a new node type to let everyone know that you are going ot work on it. Use
Feature request
template for that. - Fork this repository.
- Use one of the existing blueprints as a baseline. Choose the one that has architecture closest to the one you want to create.
- Once you are happy with how your blueprint works, follow our CONTRIBUTION GUIDE to create a pull request for our team to review it.
- Once merged, let your community know that the new Node Runner Blueprint is ready for them to use!
lib/your-chain/doc/
- Documentation specific to the Node Runner Blueprintlib/your-chain/lib/
- Place for CDK stacks and other blueprint assetslib/your-chain/lib/assets/
- Place for everything that needs to be within the provisioned EC2 instance (user-data scripts, docker-compose files, etc.)lib/your-chain/lib/config/
- Your version of the config reader to parse values from.env
filelib/your-chain/lib/constructs/
- All CDK constructs specific to this Node Runner Blueprintlib/your-chain/lib/*-stack.ts
- All CDK stacks for this Node Runner Blueprintlib/your-chain/sample-configs/
- Place for sample configurations to deploy Node Runner Blueprint to your environmentlib/your-chain/test/
- Place for unit tests to verify the Node Runner Blueprint creates all necessary infrastructurelib/your-chain/.env-sample
- A sample configuration filelib/your-chain/app.ts
- Entry point to your AWS CDK applicationlib/your-chain/cdk.json
- Config file for feature flags for your AWS CDK applicationlib/your-chain/jest.config.json
- Configuration file for Jestlib/your-chain/README.md
- All information and usage instructions for your Node Runner Blueprint
lib/constructs/config.interface.ts
- Interface classes to implement your own configuration module. Compatible withha-rpc-nodes-with-alb
andsingle-node
constructs (see below).lib/constructs/constants.ts
- Useful constants to use in configuration files and to set up infrastructure.lib/constructs/ha-rpc-nodes-with-alb.ts
- Provisions up to 4 identical EC2 instances to run nodes managed by an Auto Scaling Group and behind an Application Load Balancer.lib/constructs/single-node.ts
- Creates a single EC2 instance to run a blockchain node.lib/constructs/snapshots-bucket.ts
- Creates an S3 bucket to store a copy of blockchain node state to speed up syncing process.