Running Bitcoin Nodes in AWS in 2024
Running a full Bitcoin node in AWS will cost about $3.70/day. A pruned Bitcoin node will cost about $0.93/day. The cost consists of EC2 instance costs (about $0.93/day), EBS volume costs ($0.06/day for pruned node and $2.58/day for full), and network egress fees (from $0.00/day to more than $30/day depending on configuration).
For additional analysis, see our 2023 edition What Does It Cost To Run a Bitcoin Node In AWS?.
Launch Now
Our Full Bitcoin Node and Pruned Bitcoin Node are available for immediate launch in AWS.
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.
Best Practices
A Bitcoin node consists of three core billable components in AWS: An EC2 Instance, an EBS Volume, and potential bandwidth fees (which can be significant).
Use Graviton (ARM) Instance Types
The best balance of cost and performance is found in AWS’s Graviton instance types. We recommend using the latest generation compute optimized Graviton medium instance type for both full and pruned Bitcoin nodes.
The c7g.medium
provides enough dedicated CPU and Memory that regardless of
what is happening on the Bitcoin network, it will be able to keep up and have
capacity to spare for additional workloads and RPC API traffic.
The cost of a c7g.medium will vary by region and discount agreements, but is typically about $0.87 per day.
A medium
size is sufficient to fully participate in the Bitcoin network, but
if additional usage of the node is expected, consider moving to c7g.large
,
c7g.xlarge
, etc as needed while staying in the c7g
instance family. Each
additional size is approximately double the cost and double the capacity of the
previous.
Use gp3 EBS Volumes
gp3
is the latest generation of EBS volume offered by AWS which means that it
is the most performant and the least expensive general purpose volume type.
Pricing is $0.08/GB/mo.
A pruned node only needs a 20GB disk, which comes out to about $0.06/day.
A full node, however, requires a large disk. As of January 25, 2024, the on-disk size of the blockchain with indexes and mempool is 632GB. Using a 1000GB disk puts our usage at about 66% which affords us a two year runway until the disk size will need to be increased.
The following shell output from a Syntactic Engineering Full Bitcoin Node shows the disk usage of the bitcoin directory, the disk usage of the system, and Bitcoin blockchain information.
$ du -hsx /var/lib/bitcoin
632G /var/lib/bitcoin
$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/root 969G 634G 336G 66% /
$ bitcoin-cli -rpccookiefile=/var/lib/bitcoin/.cookie getblockchaininfo
{
"chain": "main",
"blocks": 827330,
"headers": 827330,
"bestblockhash": "0000000000000000000174a7a9555f9aa1c4a3a3cde9f3975b652bcb8f101e5b",
"difficulty": 70343519904866.8,
"time": 1706199860,
"mediantime": 1706197545,
"verificationprogress": 0.9999998673209406,
"initialblockdownload": false,
"chainwork": "0000000000000000000000000000000000000000671cc90153396e844113c7dc",
"size_on_disk": 617541469986,
"pruned": false,
"warnings": ""
}
The growth rate of the Bitcoin blockchain is about 10GB/month and can be seen at blockchain.com.
Beware of the Bandwidth Trap
AWS is notorious for bandwidth charges - they do not charge for inbound traffic but they do charge a base rate of $0.09/GB for outbound traffic. When new Bitcoin nodes perform their Initial Block Download (IBD), they download all historical blocks from other full nodes on the network. This usage can cause a huge amount of outbound bandwidth, depending on how busy the network is.
It is best practice to allow unlimited uploads, and the health of the Bitcoin network depends on nodes providing historical blocks. However, given AWS’s unreasonable bandwidth charges, it may be prudent to limit block uploads and effectively control the amount of upload (charged) bandwidth that a node uses.
To limit upload bandwidth used by a Bitcoin node, set the configuration option
maxuploadtarget
to the number of blocks (which is roughly the number of MBs)
to serve in a day.
For example, to limit it to 1440 blocks, set the following in bitcoin.conf
.
This will effectively cap your bandwidth costs to about $0.25/day.
maxuploadtarget=1440M # Limit upload bandwidth to 1440MB per day
Without a limit in place, bandwidth costs in AWS can exceed $30 per day.
Full Node Example
Let’s look at some numbers and metrics when running a Syntactic Engineering Full Bitcoin Node which implements all of these best practices.
CPU
This is a typical week of CPU usage for running a full up-to-date Bitcoin node. During an initial full block download, CPU usage will be higher.
Cost With Unlimited Block Uploads
When running a Bitcoin node with unlimited uploads, daily costs will vary widely due to upload bandwidth usage. In the following graph, we can see the daily cost for a full Bitcoin node, broken down by usage type.
Cost With Block Upload Limit
This is the cost of running a full Bitcoin node but with bitcoin.conf config
option maxuploadtarget=1440M
set. We can see that with upload bandwidth
controlled, AWS daily usage costs are stable and consistent.
Pruned Node Example
The daily AWS cost of a pruned Bitcoin node using our best practices is shown below, broken down by usage type. This node is configured with the following non-default settings in bitcoin.conf:
prune=550 # Limit to 550 most recent blocks
maxuploadtarget=1440M # Limit upload bandwidth to 1440MB per day
It is configured with a 20GB gp3
EBS disk and running on a c7g.medium
instance type.