Sui Full Node Configuration
These instructions are for advanced users. If you just need a local development environment, you should instead follow the instructions in Create a Local Sui Network to create a local full node, validators, and faucet.
Sui full nodes validate blockchain activities, including transactions, checkpoints, and epoch changes. Each full node stores and services the queries for the blockchain state and history.
This role enables validators to focus on servicing and processing transactions. When a validator commits a new set of transactions (or a block of transactions), the validator pushes that block to all connected full nodes that then service the queries from clients.
Features
Sui full nodes:
- Track and verify the state of the blockchain, independently and locally.
- Serve read requests from clients.
State synchronization
Sui full nodes sync with validators to receive new transactions on the network.
A transaction requires a few round trips to 2f+1 validators to form a transaction certificate (TxCert).
This synchronization process includes:
- Following 2f+1 validators and listening for newly committed transactions.
- Making sure that 2f+1 validators recognize the transaction and that it reaches finality.
- Executing the transaction locally and updating the local DB.
This synchronization process requires listening to at a minimum 2f+1 validators to ensure that a full node has properly processed all new transactions. Sui will improve the synchronization process with the introduction of checkpoints and the ability to synchronize with other full nodes.
Architecture
A Sui full node is essentially a read-only view of the network state. Unlike validator nodes, full nodes cannot sign transactions, although they can validate the integrity of the chain by re-executing transactions that a quorum of validators previously committed.
Today, a Sui full node has the potential to maintain the full history of the chain. That will change with gRPC and as JSON-RPC gets phased out.
Validator nodes store only the latest transactions on the frontier of the object graph (for example, transactions with >0 unspent output objects).
Full node setup
Follow the instructions here to run your own Sui full node. Sui full nodes run using the sui-node binary.
Hardware requirements
Suggested minimum hardware to run a Sui full node:
- CPUs: 8 physical cores / 16 vCPUs
- RAM: 128 GB
- Storage (SSD): 4 TB NVMe drive
Software requirements
Sui recommends running Sui full nodes on Linux. Sui supports the Ubuntu and Debian distributions. You can run a Sui full node on macOS, but this is only recommended for development and not for production use.
Make sure to update Rust.
Use the following command to install additional Linux dependencies.
$ sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
tzdata \
libprotobuf-dev \
ca-certificates \
build-essential \
libssl-dev \
libclang-dev \
libpq-dev \
pkg-config \
openssl \
protobuf-compiler \
git \
clang \
cmake
Considerations to enable gRPC (beta)
To serve the gRPC API in beta, you must enable it on your full node by indexing gRPC-specific data. During the initial gRPC indexing phase, your full node may not be able to handle other traffic — including the JSON-RPC requests. Plan your rollout carefully (such as using the rolling upgrade mechanism), and communicate any downtime to your customers and partners in advance. The time required to sync gRPC indexes depends on your full node's hardware and software configuration.
Enable gRPC indexing on your full node by adding the following entry to the fullnode.yaml configuration:
rpc:
enable-indexing: true
Running gRPC alongside JSON-RPC increases your full node’s storage usage. While this is expected in the short term, you can reclaim this storage in the future by disabling JSON-RPC after it is phased out. All applications must gradually migrate to gRPC or GraphQL RPC (which will internally rely on gRPC). You can also run gRPC and JSON-RPC on separate nodes to optimize resource usage and provide a performant and resilient RPC experience to applications. Add the following to the fullnode.yaml configuration of your full node to selectively disable JSON-RPC on it:
enable-index-processing: false
You can configure the retention window for the gRPC index on your full node by adding the following to its fullnode.yaml configuration:
authority-store-pruning-config:
num-epochs-to-retain: 14
num-epochs-to-retain-for-checkpoints: 14
Adjust the gRPC data retention period based on your full node’s resource profile and whether you've disabled JSON-RPC or not. In any case, test the longer retention period for performance and scalability before using gRPC in your application or offering it to other developers.
It is strongly recommended that you enable gRPC beta support on your full nodes as early as possible to help developers evaluate and integrate the API before general availability. Refer to Sui's data serving roadmap for guidance on the upcoming transition from JSON-RPC.