What Does It Cost To Run a Bitcoin Node In AWS?

The economics of running a Bitcoin Node in AWS explained!

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.

See our 2024 update at Running Bitcoin Nodes in AWS in 2024!

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
  1. There are no “medium” instances in the “c” or “m” instance families.
  2. Bandwidth fluxuates but this is based on an average of 100GB upload per day.
  3. Bandwidth cost reduction is due to pruned node and also using bitcoind option maxuploadtarget=1440M.

Cost Considerations

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.

Disk Usage

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 EBS volume.

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.

Bandwidth Usage

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 maxuploadtarget=1440M for Pruned Nodes, and leaving it unset (unlimited) for Full Nodes.

Architecture

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.

AWS Recommendations

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 unless 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.