Requirements
Hardware Requirements
Please note the following are the hardware requirements for each node type after the upgrade:
| Node Type | Memory | CPU | Storage | Network |
|---|---|---|---|---|
| Block Producer | 32 GB RAM | 8 core processor with BMI2, ADX and AVX CPU instruction set are required | 64 GB | 1 Mbps Internet Connection |
| SNARK Coordinator | 32 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
| SNARK Worker | 32 GB RAM | 4 core/8 threads per worker with BMI2. ADX and AVX CPU instruction set are required | 64 GB | 1 Mbps Internet Connection |
| Archive Node | 32 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
| Rosetta API standalone Docker image | 32 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
| Mina Seed Node | 64 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
Software
Supported environments include macOS, Linux (Debian 10, 11 and Ubuntu 20.04 LTS), and any host machine with Docker. Only x86-64 CPU architecture is supported.
Proving-key cache
Block producers and SNARK workers hold several large proving keys. The daemon loads them from memory-mapped files, named with a .mmap suffix, which lets the operating system drop those pages under memory pressure and lets processes on the same host share them. Keys shipped with the package are read from /var/lib/coda; keys the node generates or converts are written to coda_cache_dir under the temporary directory, /tmp/coda_cache_dir unless TMPDIR is set. Mapping only saves memory when that directory is on a disk-backed filesystem: on a tmpfs the pages stay in RAM. To share the pages between containers, mount the same disk-backed volume at that path in each of them. Set MINA_USE_MMAP_CACHE=0 to load the keys into the heap instead.
Clock Synchronization
Your server must run a clock synchronization protocol such as NTP to participate in consensus. Most Linux distributions include NTP by default.
Recommended VM Instances
o1Labs has tested running nodes on several cloud providers. We recommend the following instances for basic node operator needs. Custom requirements and different cost constraints might require a different instance type.
- AWS c5.2xlarge
- GCP c2-standard-8
- Azure Standard_F8s_v2
- Digital Ocean c-8-16gib
Networking
IP: By default, the Mina daemon determines its public IP address automatically via HTTPS (443) and HTTP (80). If you are behind a NAT or firewall, set the --external-ip flag to specify your public IP address.
Port: Nodes must expose a port to communicate with peers. The default is TCP port 8302. You can change it with the --external-port flag.
Firewall and port forwarding: Allow inbound traffic on the following ports through your external IP address:
- TCP port
8302(required for peer communication) - TCP port
3085(optional, for the GraphQL API)
If you are using UFW:
sudo ufw enable
sudo ufw allow 22
sudo ufw allow 8302
sudo ufw allow 3085