Cloud Rails is the minimal set-up of network, server and checkpoint blockchain data required to spin-up a fully functioning node. Cloud Rails provides a common hosting framework for developers across all blockchain platforms and projects.
Cloud Rails - AWS is the Amazon Web Services version and includes scripts in python, node, go and java creating a Virtual Private Cloud (VPC) with all networking and credentials, an EC2 instance (server) running the ubuntu operating system, a loader (and creator) for an image file (AMI) contained in two volumes (disks).
One volume, typically 8Gb, is reserved for the operating system, blockchain software and project's Software Development Kits (SDK). The data storage volume (8Gb - 2T) (local server variable $CHAIN_DATA) includes a synched image of the blockchain at a point in time that is periodically updated; see table below.
There are repos for each coin with specific settings (AMI ID, instance type and volume size) and configuration options. For example bitcoin
Cloud Rails is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
The steps below outline creating an AWS account, creating some users, generating access keys and the importance of selecting a region. Amazon has extensive tutorials on using their cloud services including using their UI to launch a server. Below are the minimum required steps to use Cloud Rails - AWS. Note that AWS accounts require a valid credit card.
-
Select region to use. We use us-east-2 to store the AMIs
-
Step thru the Network notebook once filling in the appropriate local directory to store the generated keypair .pem file.
-
Step thru the AMI notebook selecting the ID (e.g. ethereum.org) and node (e.g. Go Mainnet) for the desired blockchain from the table below. This will launch an EC2 instance and start syncing the blockchain from the previous block height.
-
ssh into the launched instance using the generated keypair in step 5 and the IP address.
We currently support four scripting languages; Python, Node, Go and Java. Read contributing to add more support.
Each directory contains the set-up instructions for that langauge, packages, configurations and jupyter notebooks to:
- Set up the network and credentials (once)
- Create a node from source
- Launch a pre-existing image with a checkpoint node
- (optionally) Create an image at the current block height
This repo will have the common structure to generate a node; chain specific scripts are found in the corresponding coin repo; e.g. launch a bitcoin mainnet image.
The table below details the latest coin specific resources for each node type and is updated periodically as resource requirements change (increase).
ID | Node | Date | Block | AMI ID | Name | Type | DATAVOLUME_SIZE (GB) |
---|---|---|---|---|---|---|---|
bitcoin.org | Mainnet | 2019-12-28 21:24:00 | 610208 | ami-0106f83c9203e626f | Bitcoin | t2.2xlarge | 350 |
ethereum.org | Go Mainnet | 2019-12-30 00:11:00 | 9183290 | ami-0004031a4ee8254c0 | Ethereum | t2.2xlarge | 250 |
ethereum.org | Parity Mainnet | 2020-01-01 13:42:00 | 9196049 | ami-05c08969541b3500b | Ethereum | t2.medium | 200 |
algorand.com | Mainnet | 2019-12-31 18:24:00 | 4002414 | ami-021305cee8b57d1bb | Algorand | t2.medium | 100 |
algorand.com | Testnet | 2019-12-32 00:00:00 | 0 | Algorand | t2.medium | 50 |
All public images can be searched using the "Public Images" dropdown and filtering on the "Name Tag" with "SRP", see below.