Cost and best practices for running Bitcoin nodes in AWS in 2024!
Running a full Bitcoin node in AWS will cost about $3.70/day. A pruned Bitcoinnode 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 forfull), and network egress fees (from $0.00/day to more than $30/day dependingon configuration).
For additional analysis, see our 2023 edition What Does It Cost To Run aBitcoin Node InAWS?.
Launch Now
Our Full BitcoinNode and PrunedBitcoin Nodeare available for immediate launch in AWS.
These cli-only nodes are updated weekly with a fully synchronized Bitcoinblockchain and are built with full automation and comprehensive testing for usein production environments. Additional fees will apply - see the marketplacepage for details.
Best Practices
A Bitcoin node consists of three core billable components in AWS: An EC2Instance, an EBS Volume, and potential bandwidth fees (which can besignificant).
Use Graviton (ARM) Instance Types
The best balance of cost and performance is found in AWS’s Graviton instancetypes. We recommend using the latest generation compute optimized Gravitonmedium instance type for both full and pruned Bitcoin nodes.
The c7g.medium
provides enough dedicated CPU and Memory that regardless ofwhat is happening on the Bitcoin network, it will be able to keep up and havecapacity to spare for additional workloads and RPC API traffic.
The cost of a c7g.medium willvary 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, butif additional usage of the node is expected, consider moving to c7g.large
,c7g.xlarge
, etc as needed while staying in the c7g
instance family. Eachadditional size is approximately double the cost and double the capacity of theprevious.
Use gp3 EBS Volumes
gp3
is the latest generation of EBS volume offered by AWS which means that itis 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, theon-disk size of the blockchain with indexes and mempool is 632GB. Using a1000GB disk puts our usage at about 66% which affords us a two year runwayuntil the disk size will need to be increased.
The following shell output from a Syntactic Engineering Full BitcoinNode shows thedisk usage of the bitcoin directory, the disk usage of the system, and Bitcoinblockchain information.
$ du -hsx /var/lib/bitcoin632G /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 atblockchain.com.
Beware of the Bandwidth Trap
AWS is notorious for bandwidth charges - they do not charge for inbound trafficbut they do charge a base rate of $0.09/GB for outbound traffic. When newBitcoin nodes perform their Initial Block Download (IBD), they download allhistorical blocks from other full nodes on the network. This usage can cause ahuge amount of outbound bandwidth, depending on how busy the network is.
It is best practice to allow unlimited uploads, and the health of the Bitcoinnetwork depends on nodes providing historical blocks. However, given AWS’sunreasonable bandwidth charges, it may be prudent to limit block uploads andeffectively control the amount of upload (charged) bandwidth that a node uses.
To limit upload bandwidth used by a Bitcoin node, set the configuration optionmaxuploadtarget
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 canexceed $30 per day.
Full Node Example
Let’s look at some numbers and metrics when running a Syntactic EngineeringFull BitcoinNode whichimplements 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 widelydue to upload bandwidth usage. In the following graph, we can see the daily costfor 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 configoption maxuploadtarget=1440M
set. We can see that with upload bandwidthcontrolled, 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 shownbelow, 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 blocksmaxuploadtarget=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.
- ←Previous
- Next→