Skip to content

Commit 5d42295

Browse files
authored
Merge branch 'main' into main
Signed-off-by: Jonathan Eid <[email protected]>
2 parents f0eb2ee + e3a89b1 commit 5d42295

File tree

14 files changed

+1233
-1156
lines changed

14 files changed

+1233
-1156
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ Consult the [CONTRIBUTING](https://github.com/aws-samples/aws-blockchain-node-ru
99

1010
<!-- What inspired you to submit this pull request? -->
1111

12+
### License
13+
14+
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
15+
1216
### More
1317

1418
- [ ] Yes, I have tested the PR using my local account setup (Provide any test evidence report under Additional Notes)

docs/pre-merge-tools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ npm run install-pre-commit-mac
4242
npm run run-pre-commit
4343
```
4444

45-
4. Optionally, run [shellcheck](https://github.com/koalaman/shellcheck) to check for common problems in your shell scripts.
45+
4. Optionally, run [shellcheck](https://github.com/koalaman/shellcheck) to check for common problems in your shell scripts.

docs/setup-cloud9.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Most steps in this repository will need to be performed from a Linux command pro
44

55
## Create a Cloud9 environment
66

7-
Navigate to the AWS Cloud9 service in your Management Console, then select Create environment. Choose any name you want. For environment type, select **New EC2 instance**. For instance type, select **Additional instance type** and choose **t3.medium**. For platform, select **Amazon Linux 2**. Leave all other settings at their default, then select **Create**.
7+
Navigate to the AWS Cloud9 service in your Management Console, then select Create environment. Choose any name you want. For environment type, select **New EC2 instance**. For instance type, select **Additional instance type** and choose **t3.medium**. For platform, select **Amazon Linux 2023**. Leave all other settings at their default, then select **Create**.
88

99
## Create IAM Role for Cloud9 instance with AWS CLI
1010

lib/ethereum/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Sample AWS Blockchain Node Runner app for Ethereum Nodes
22

3+
| Contributed by |
4+
|:--------------------:|
5+
| [@aldredb](https://github.com/aldredb), [@frbrkoala](https://github.com/frbrkoala), [@wgr2017](https://github.com/wgr2017) |
6+
37
## Architecture Overview
48

59
This blueprint has two options for running nodes. You can set up a single JSON RPC node or multiple nodes in highly-available setup. The details are below.

lib/scroll/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Sample AWS Blockchain Node Runner app for Scroll Nodes
22

3+
| Contributed by |
4+
|:--------------------:|
5+
| [@alickmail](https://github.com/alickmail) |
6+
37
[Scroll](https://docs.scroll.io/en/getting-started/overview/) is a "Layer 2" scaling solution for Ethereum leveraging zero knowledge proofs. This blueprint helps to deploy Scroll nodes (L2Geth) on AWS as RPC nodes and use [Amazon Managed Blockchain Access Ethereum](https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/ethereum-concepts.html) node for "Layer 1". It is meant to be used for development, testing or Proof of Concept purposes.
48

59
## Overview of Deployment Architectures for Single Node setups

lib/solana/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Sample AWS Blockchain Node Runner app for Solana Nodes
22

3+
| Contributed by |
4+
|:--------------------:|
5+
| [@frbrkoala](https://github.com/frbrkoala) |
6+
37
Solana nodes on AWS can be deployed in 3 different configurations: Consensus, base RPC and extended RPC with secondary indexes. In addition, you can choose to deploy those configurations as a single node or a highly available (HA) nodes setup. Learn more about configurations on [Solana on AWS documentation page](https://solana.com/developers/guides/rpc/configure-solana-rpc-on-aws) and below are the details on single node and HA deployment setups.
48

59
## Overview of Deployment Architectures for Single and HA setups

lib/stacks/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Sample AWS Blockchain Node Runner app for Stacks Nodes
22

3+
| Contributed by |
4+
|:--------------------:|
5+
| [@AshtonStephens](https://github.com/AshtonStephens) |
6+
37
Stacks nodes on AWS can currently be deployed in only the "follower" configuration, but is scoped to handle three different configurations: "follower", "miner", and "signer". You can choose to deploy nodes as a single node or a highly available (HA) node.
48

59
## Overview of Deployment Architectures for Single and HA setups

lib/theta/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ npm install
117117
npx cdk deploy edge-common --parameters edgeNodePassword=$EDGE_NODE_PASSWORD
118118
```
119119
120-
121120
122121
### Single RPC Edge Node
123122
@@ -156,7 +155,8 @@ Alternatively, you can manually check. Run the following query from within a Ses
156155
}
157156
```
158157
159-
3. Once the startup is done, you should be able to access the RPC API of that node from within the same VPC. The RPC port is not exposed to the Internet.
158+
159+
3. Once the startup is done, you should be able to access the RPC API of that node from within the same VPC. The RPC port is not exposed to the Internet.
160160
161161
162162

lib/wax/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Sample CDK app for WAX Nodes
2+
3+
| Contributed by |
4+
|:--------------------:|
5+
| [worldwide-asset-exchange](https://github.com/worldwide-asset-exchange/)|
6+
7+
WAX is a blockchain-based system designed for gaming industry. It provides high transaction throughput and near-instant block finality. The WAX team has created a AWS Cloud Development Kit (CDK) application to deploy WAX nodes on AWS for development, testing, or Proof of Concept purposes. See the application along with deployment instructions at [WAX-AWS-CDK](https://github.com/worldwide-asset-exchange/wax-aws-cdk). You can see the deployment architecture blow and for a deep dive look at [Run a WAX Blockchain node using AWS CDK](https://aws.amazon.com/blogs/database/run-a-wax-blockchain-node-using-aws-cdk/)
8+
9+
## Overview of Deployment Architecture
10+
11+
![Single Nodes Deployment](./doc/assets/Architecture-SingleNode.drawio.png)
12+
13+
The [AWS CDK stack](https://github.com/worldwide-asset-exchange/wax-aws-cdk) has the following features:
14+
15+
1. Only peer-to-peer connections are allowed with the Internet to synchronize with other WAX nodes
16+
2. Multiple processes run on a single Amazon Elastic Compute Cloud (Amazon EC2) instance:
17+
- A [Docker container](https://www.docker.com/resources/what-container/) with the WAX node in one of two possible configurations (API or Ship node)
18+
- A [Telegraf agent](https://www.influxdata.com/time-series-platform/telegraf/) to collect CPU, disk, I/O, and networking metrics for internal monitoring tools
19+
- [Victoria Metrics](https://victoriametrics.com/), a time series database for storing the metrics from Telegraf and WAX nodes
20+
- A [Grafana dashboard](https://grafana.com/) to display key system and blockchain metrics from CPU and disc usage to synced blocks and sync difference
21+
3. By default, all API ports, including the one for the Grafana web user interface, are available only to IP addresses from within the same VPC.
22+
4. The logs of the WAX node are published to Amazon CloudWatch.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<mxfile host="Electron" modified="2024-02-21T23:23:52.377Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.0.2 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="GqVFxIDaXcXJxeY3Cf-5" version="23.0.2" type="device">
2+
<diagram name="Single node" id="x4TNpdqoHl5asDUS4WaB">
3+
<mxGraphModel dx="1120" dy="854" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
4+
<root>
5+
<mxCell id="0" />
6+
<mxCell id="1" parent="0" />
7+
<mxCell id="OX_zlI_0chY2JoXTOn6b-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="OX_zlI_0chY2JoXTOn6b-1" target="OX_zlI_0chY2JoXTOn6b-6" edge="1">
8+
<mxGeometry relative="1" as="geometry" />
9+
</mxCell>
10+
<mxCell id="OX_zlI_0chY2JoXTOn6b-1" value="WAX&lt;br&gt;Blockchain&lt;br&gt;Network" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" parent="1" vertex="1">
11+
<mxGeometry x="160" y="420" width="120" height="80" as="geometry" />
12+
</mxCell>
13+
<mxCell id="OX_zlI_0chY2JoXTOn6b-2" value="AWS Account" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;" parent="1" vertex="1">
14+
<mxGeometry x="330" y="310" width="940" height="420" as="geometry" />
15+
</mxCell>
16+
<mxCell id="OX_zlI_0chY2JoXTOn6b-7" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
17+
<mxGeometry x="200" y="70" width="380" height="270" as="geometry" />
18+
</mxCell>
19+
<mxCell id="OX_zlI_0chY2JoXTOn6b-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="OX_zlI_0chY2JoXTOn6b-2" source="OX_zlI_0chY2JoXTOn6b-6" edge="1">
20+
<mxGeometry relative="1" as="geometry">
21+
<mxPoint x="260" y="150" as="targetPoint" />
22+
</mxGeometry>
23+
</mxCell>
24+
<mxCell id="OX_zlI_0chY2JoXTOn6b-6" value="Internet Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.internet_gateway;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
25+
<mxGeometry x="90" y="111" width="78" height="78" as="geometry" />
26+
</mxCell>
27+
<mxCell id="OX_zlI_0chY2JoXTOn6b-11" value="Self-built and run DApps" style="rounded=0;whiteSpace=wrap;html=1;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
28+
<mxGeometry x="640" y="160" width="120" height="60" as="geometry" />
29+
</mxCell>
30+
<mxCell id="OX_zlI_0chY2JoXTOn6b-21" value="&lt;font style=&quot;font-size: 14px;&quot; color=&quot;#ffffff&quot;&gt;1&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#FF8800;fillColor=#FF8800;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
31+
<mxGeometry x="114" y="76" width="30" height="30" as="geometry" />
32+
</mxCell>
33+
<mxCell id="IH9-5eQ_SOQHSwX34WHm-17" value="Default VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;strokeColor=#248814;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
34+
<mxGeometry x="50" y="35" width="750" height="365" as="geometry" />
35+
</mxCell>
36+
<mxCell id="OX_zlI_0chY2JoXTOn6b-16" value="Amazon CloudWatch&lt;br&gt;WAX Logs" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudwatch_2;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
37+
<mxGeometry x="830" y="189" width="78" height="78" as="geometry" />
38+
</mxCell>
39+
<mxCell id="u0Xdru4RK1r6j2e7EFXk-1" value="EC2 instance contents for WAX node" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_ec2_instance_contents;strokeColor=#D86613;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#D86613;dashed=0;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
40+
<mxGeometry x="260" y="120" width="300" height="200" as="geometry" />
41+
</mxCell>
42+
<mxCell id="OX_zlI_0chY2JoXTOn6b-22" value="&lt;font style=&quot;font-size: 14px;&quot; color=&quot;#ffffff&quot;&gt;2&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#FF8800;fillColor=#FF8800;" parent="u0Xdru4RK1r6j2e7EFXk-1" vertex="1">
43+
<mxGeometry x="-20" y="85" width="30" height="30" as="geometry" />
44+
</mxCell>
45+
<mxCell id="TfUQWKEs04p7YS6zo7lr-1" value="Telegraf Agent" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.container_1;" vertex="1" parent="u0Xdru4RK1r6j2e7EFXk-1">
46+
<mxGeometry x="56" y="54.5" width="48" height="31" as="geometry" />
47+
</mxCell>
48+
<mxCell id="TfUQWKEs04p7YS6zo7lr-2" value="Victoria Metrics" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.container_1;" vertex="1" parent="u0Xdru4RK1r6j2e7EFXk-1">
49+
<mxGeometry x="56" y="134.5" width="48" height="31" as="geometry" />
50+
</mxCell>
51+
<mxCell id="TfUQWKEs04p7YS6zo7lr-3" value="Grafana Dashboard" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.container_1;" vertex="1" parent="u0Xdru4RK1r6j2e7EFXk-1">
52+
<mxGeometry x="190" y="134.5" width="48" height="31" as="geometry" />
53+
</mxCell>
54+
<mxCell id="TfUQWKEs04p7YS6zo7lr-4" value="WAX node &lt;br&gt;Docker Container" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ED7100;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.container_1;" vertex="1" parent="u0Xdru4RK1r6j2e7EFXk-1">
55+
<mxGeometry x="190" y="54.5" width="48" height="31" as="geometry" />
56+
</mxCell>
57+
<mxCell id="u0Xdru4RK1r6j2e7EFXk-6" value="Administration and Development tools" style="rounded=0;whiteSpace=wrap;html=1;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
58+
<mxGeometry x="640" y="240" width="120" height="60" as="geometry" />
59+
</mxCell>
60+
<mxCell id="u0Xdru4RK1r6j2e7EFXk-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="OX_zlI_0chY2JoXTOn6b-2" source="TfUQWKEs04p7YS6zo7lr-4" target="OX_zlI_0chY2JoXTOn6b-11" edge="1">
61+
<mxGeometry relative="1" as="geometry">
62+
<mxPoint x="540" y="190" as="sourcePoint" />
63+
</mxGeometry>
64+
</mxCell>
65+
<mxCell id="u0Xdru4RK1r6j2e7EFXk-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="OX_zlI_0chY2JoXTOn6b-2" source="TfUQWKEs04p7YS6zo7lr-3" target="u0Xdru4RK1r6j2e7EFXk-6" edge="1">
66+
<mxGeometry relative="1" as="geometry">
67+
<mxPoint x="540" y="270" as="sourcePoint" />
68+
</mxGeometry>
69+
</mxCell>
70+
<mxCell id="u0Xdru4RK1r6j2e7EFXk-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="OX_zlI_0chY2JoXTOn6b-2" source="u0Xdru4RK1r6j2e7EFXk-1" target="OX_zlI_0chY2JoXTOn6b-16" edge="1">
71+
<mxGeometry relative="1" as="geometry">
72+
<Array as="points">
73+
<mxPoint x="410" y="380" />
74+
<mxPoint x="780" y="380" />
75+
<mxPoint x="780" y="228" />
76+
</Array>
77+
</mxGeometry>
78+
</mxCell>
79+
<mxCell id="OX_zlI_0chY2JoXTOn6b-25" value="&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;3&lt;/span&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#FF8800;fillColor=#FF8800;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
80+
<mxGeometry x="590" y="150" width="30" height="30" as="geometry" />
81+
</mxCell>
82+
<mxCell id="OX_zlI_0chY2JoXTOn6b-24" value="&lt;font style=&quot;font-size: 14px;&quot; color=&quot;#ffffff&quot;&gt;4&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#FF8800;fillColor=#FF8800;" parent="OX_zlI_0chY2JoXTOn6b-2" vertex="1">
83+
<mxGeometry x="600" y="340" width="30" height="30" as="geometry" />
84+
</mxCell>
85+
</root>
86+
</mxGraphModel>
87+
</diagram>
88+
</mxfile>

0 commit comments

Comments
 (0)