What Does It Cost To Run a Bitcoin Node In AWS?
Achieving optimal performance and cost efficiency when running workloads in Amazon Web Services (AWS) can be quite challenging due to the daunting array of choices available. In this guide, we provide our opinionated recommendations for efficiently operating Full and Pruned Bitcoin Nodes within AWS.
The recommendations in this article are implemented by Syntactic Engineering in our AWS Marketplace solutions for a Full Bitcoin Node and Pruned Bitcoin Node. These cli-only nodes are updated weekly with a fully synchronized Bitcoin blockchain and are built with full automation and comprehensive testing for use in production environments. Additional fees will apply - see the marketplace page for details.
Basic Cost Structure
Here is the basic, typical cost per month to run a Full or Pruned Bitcoin Node in AWS, broken out by cost component.
|Node Type||Instance Type||Instance Cost||Storage Cost||Bandwidth Cost||Total Cost|
|Full Node on Intel||c6i.large₁||$62.05||$64.00||~$300.00₂||~$426.05|
|Full Node on AMD||c6a.large||$55.85||$64.00||~$300.00||~$419.85|
|Full Node on Graviton||c7g.medium||$26.35||$64.00||~$300.00||~$390.35|
|Pruned Node on Intel||c6i.large||$62.05||$1.60||$2.40₃||$66.05|
|Pruned Node on AMD||c6a.large||$55.85||$1.60||$2.40||$59.85|
|Pruned Node on Graviton||c7g.medium||$26.35||$1.60||$2.40||$30.35|
- There are no “medium” instances in the “c” or “m” instance families.
- Bandwidth fluxuates but this is based on an average of 100GB upload per day.
- Bandwidth cost reduction is due to pruned node and also using bitcoind option
Why not use t3 instances instead of c6?The t3 instances use a CPU credit model and are less expensive and available in smaller sizes than the c6 instances. However, there are situations where bitcoind will run out of CPU credits and result in poor performance for a long period of time. The Graviton instances are similarly priced to t3 instances and have a dedicated CPU.
When thinking about deploying an EC2 instance in AWS to run a Bitcoin Node, there are several cost categories that will be relevant. These are:
- Instance Type
- Disk Usage
- Bandwidth Usage
AWS implements metered billing, meaning that you pay for what you use on a granular basis. Therefore it is important to understand the requirements of the workload and size the solution accurately. Before we can recommend specifics, we need to understand what resources a Bitcoin Node needs to operate.
Bitcoin Core Requirements
Bitcoin Core (bitcoind) is the primary consumer of resources in a Bitcoin Node.
Bitcoin Core’s daemon process bitcoind will consume CPU, memory, disk, and bandwidth in order to participate as a full or pruned node in the Bitcoin network.
CPU and Memory Usage
During an initial sync, or during a reindex, bitcoind will consume a lot of CPU. For this reason, it is not recommended to use credit-based CPU instance types (“t” class instances in AWS).
In terms of CPU specifically, 1 dedicated CPU (or “vCPU” in AWS parlance) is sufficient to run a Bitcoin Node. It may be worth adding a second CPU initially if performing a full blockchain sync or a reindex, but once the blockchain is synchronized one is enough.
bitcoind will use a bit over 1 GB of memory typically. For this reason, we recommend 2 GB of memory for the system.
CPU and memory are similar between a Pruned and a Full node, but the disk usage is dramatically different.
A Pruned Bitcoin Node will use about 7GB disk space for bitcoind itself (with
prune=550, meaning keeping the most recent 550 blocks). We recommend a 20GB
A Full Bitcoin Node with full indexes will use about 560GB as of May, 2023. This represents the full size of the Bitcoin blockchain, and will continue to grow over time at a rate of about 10GB/mo. The cumulative size of the raw blockchain can be seen at blockchain.com.
For this reason, we’re currently recommending an 800GB volume for a Full Bitcoin Node - this gives the node about two years of growth before reaching capacity.
AWS charges for outbound bandwidth to the internet at a rate of $0.09/GB. A Pruned Bitcoin Node will naturally use less bandwidth becuase it will not be uploading historical blocks, but it will still relay transactions and blocks.
A Full Bitcoin Node will consume potentially a significant amount of bandwidth, on the order of 100GB/day. At a rate of $0.09/GB, that comes to approximately $10 per day, but will vary between $5 and $15 per day.
In either case,
maxuploadtarget can be set to help control the amount of
outbound bandwidth used. We recommend setting it to
Pruned Nodes, and leaving it unset (unlimited) for Full Nodes.
It’s important to note that Bitcoin Core can be run on both x86-64 and ARM64 architectures. This will be an important consideration when evaluating EC2 instance types.
How do all of these requirements and data translate into AWS EC2 recommendations?
AWS has a huge variety of EC2 instance types. We are looking for a latest generation, dedicated CPU and 2GB memory. Here are our options, prices as of May 2023:
- Latest generation ARM64 (Graviton) processor c7g.medium: 1 vCPU, 2GB memory for $26.50/mo
- Latest generation x86-64 (Intel) processor c6i.large: 2 vCPU, 4GB memory for $62.05/mo
- Latest generation x86-64 (AMD) processor c6a.large: 2 vCPU, 4GB memory for $55.85/mo
There are a couple interesting things to note here. First, the smallest x86-64 instance is still twice as large as we need, with 2 vCPUs and 4GB memory. This often forces people into the t3 class of instances, but those carry risk of running out of CPU credits and will still not save you as much money as using Graviton.
The second thing to notice is how much less expensive Graviton is, and that they offer single, dedicated vCPU instances with 2GB memory. ARM64 is inherently going to be more power efficient and so we expect the pricing to remain superior to x86-64, making it worth using.
EBS volumes are priced per GB per hour. Be sure to use the latest generation EBS volume which is gp3, and costs $0.08/GB-month.
Bandwidth was covered above, but expect to pay about $10 per day for bandwidth
maxuploadtarget is set.
Consider Ephemeral Bitcoin Nodes
One way to reduce the expense of running Bitcoin Nodes in AWS is to run nodes ephemerally. If your Bitcoin Node needs are sporatic or infrequent, the node could be stopped when not needed and started when needed. The tricky part is that you will still need to initially download the blockchain over the course of multiple days typically, and if the node has been stopped for a while will need time to catch up with the blockchain before serving requests.
If you use Sparrow Wallet, see our guide on Using Bitcoin Core with Sparrow Wallet.
Note that when a node is stopped, you will still be charged for its EBS volume, but you will not be charged for the instance or for bandwidth.
Syntactic Engineering’s AWS Marketplace Full Bitcoin Node and Pruned Bitcoin Node are released weekly with a fully synchronized blockchain, making them ideal for use as ephemeral Bitcoin Nodes. Our cli-only nodes are built for production environments and are always built with full automation and comprehensive testing. Additional fees will apply - see the marketplace page for details.