The following software development kits (SDKs) are available:
Our release binaries are GPG signed for security. To verify a download:
- Import our public key. Make sure you change the version to the correct version:
curl -s https://github.com/availproject/avail/releases/download/vX.Y.Z/gpg-public-key.asc | gpg --import
- Verify the binary's signature:
gpg --verify DOWNLOADED_BINARY.tar.gz.sig DOWNLOADED_BINARY.tar.gz
- Verify the checksum file:
gpg --verify YOUR_DOWNLOADED_FILE.tar.gz.sha256.sig YOUR_DOWNLOADED_FILE.tar.gz.sha256
- Verify the checksum:
sha256sum -c YOUR_DOWNLOADED_FILE.tar.gz.sha256
A successful verification will display:
"Good signature from 'Your Project Release Key key's email address
'"
You have now verified that the binary is signed by Avail and that its checksum is correct.
To manually run the Avail Node, you'll need to have the following dependencies installed:
After ensuring you have the dependencies installed, you can run the Avail Node using the following command:
mkdir -p output
cargo run --locked --release -- --chain mainnet -d ./output
This command compiles and runs the Avail Node connected to the Mainnet Network.
2025-03-05 11:39:57 Avail Node
2025-03-05 11:39:57 βοΈ version 2.3.0-6c6b8912fd3
2025-03-05 11:39:57 β€οΈ by Avail Project <info@availproject.org>, 2017-2025
2025-03-05 11:39:57 π Chain specification: Avail Development Network
2025-03-05 11:39:57 π· Node name: spotty-ducks-6306
2025-03-05 11:39:57 π€ Role: AUTHORITY
2025-03-05 11:39:57 πΎ Database: ParityDb at /tmp/substratebYqXut/chains/avail_development_network/paritydb/full
2025-03-05 11:39:58 [0] πΈ generated 1 npos voters, 1 from validators and 0 nominators
2025-03-05 11:39:58 [0] πΈ generated 1 npos targets
2025-03-05 11:39:59 π¨ Initializing Genesis block/state (state: 0x9da9β¦1c2f, header-hash: 0x61c9β¦7794)
2025-03-05 11:39:59 π΄ Loading GRANDPA authority set from genesis on what appears to be first startup.
2025-03-05 11:39:59 πΆ Creating empty BABE epoch changes on what appears to be first startup.
2025-03-05 11:39:59 π· Local node identity is: 12D3KooWDCNjiaVbFL4BGYkbkxHwqJjhDNAxvBuxNdCAB4HDuYjA
2025-03-05 11:39:59 Prometheus metrics extended with avail metrics
2025-03-05 11:39:59 π» Operating system: linux
2025-03-05 11:39:59 π» CPU architecture: x86_64
2025-03-05 11:39:59 π» Target environment: gnu
2025-03-05 11:39:59 π» CPU: 13th Gen Intel(R) Core(TM) i7-13700K
2025-03-05 11:39:59 π» CPU cores: 16
2025-03-05 11:39:59 π» Memory: 31865MB
2025-03-05 11:39:59 π» Kernel: 6.12.11-200.fc41.x86_64
2025-03-05 11:39:59 π» Linux distribution: Fedora Linux 41 (Workstation Edition)
2025-03-05 11:39:59 π» Virtual machine: no
2025-03-05 11:39:59 π¦ Highest known block at #0
2025-03-05 11:39:59 γ½οΈ Prometheus exporter started at 127.0.0.1:9615
2025-03-05 11:39:59 Running JSON-RPC server: addr=127.0.0.1:9944, allowed origins=["*"]
2025-03-05 11:39:59 π CPU score: 1.36 GiBs
2025-03-05 11:39:59 π Memory score: 22.37 GiBs
2025-03-05 11:39:59 π Disk score (seq. writes): 6.14 GiBs
2025-03-05 11:39:59 π Disk score (rand. writes): 2.85 GiBs
2025-03-05 11:39:59 πΆ Starting BABE Authorship worker
2025-03-05 11:39:59 πΎ Transaction State RPC is disabled.
2025-03-05 11:40:00 π Starting consensus session on top of parent 0x61c9895168e742c62022ead30858a478820596c5be64c127bd8ea1bc97787794
2025-03-05 11:40:00 π Prepared block for proposing at 1 (2 ms) [hash: 0x9dc9d52f64711be9e75b382877daf7ea6dbd5cb86e0db0819de49c58fafe0470; parent_hash: 0x61c9β¦7794; extrinsics (2): [0x1adcβ¦1873, 0x92cdβ¦f218]
2025-03-05 11:40:00 π Pre-sealed block for proposal at 1. Hash now 0x34eab3565337a7370d4320aac02f7e3a3c14a440585bf029f871845f116a8810, previously 0x9dc9d52f64711be9e75b382877daf7ea6dbd5cb86e0db0819de49c58fafe0470.
2025-03-05 11:40:00 πΆ New epoch 0 launching at block 0x34eaβ¦8810 (block slot 87058560 >= start slot 87058560).
2025-03-05 11:40:00 πΆ Next epoch starts at slot 87059280
2025-03-05 11:40:00 β¨ Imported #1 (0x34eaβ¦8810)
2025-03-05 11:40:04 π€ Idle (0 peers), best: #1 (0x34eaβ¦8810), finalized #0 (0x61c9β¦7794), β¬ 0 β¬ 0
A development chain is typically used for testing and development purposes.
cargo run --locked --release -- --dev
cargo run --locked --release -- --chain turing
cargo run --locked --release -- --chain mainnet
To run the Avail Node using Docker (Podman works as well), follow these steps:
# Build the Docker image for the Avail Node:
docker build -t availnode -f ./dockerfiles/avail-node.Dockerfile .
# Create an output directory. Here the node's data will be stored.
mkdir output
# Run the Avail Node container:
docker run --rm -p 30333:30333 -p 9944:9944 -v ./output:/output availnode
# For SELinux
docker run --rm -p 30333:30333 -p 9944:9944 -v ./output:/output:z availnode
The following instructions describe how to run a development chain using Docker (Podman works as well). A development chain is typically used for testing and development purposes.
# Build the Docker image for the Avail Node:
docker build -t availnode -f ./dockerfiles/avail-node.Dockerfile .
# Create an output directory. Here the node's data will be stored.
mkdir output
# Run the Avail Node container:
docker run --rm -p 30333:30333 -p 9944:9944 -v ./output:/output availnode --dev --rpc-methods=unsafe --unsafe-rpc-external --rpc-cors=all
# For SELinux
docker run --rm -p 30333:30333 -p 9944:9944 -v ./output:/output:z availnode --dev --rpc-methods=unsafe --unsafe-rpc-external --rpc-cors=all
To enable Kate RPC you need to pass --enable-kate-rpc
flag when executing the binary.
--dev
implies --enable-kate-rpc
.
./avail-node --enable-kate-rpc
To enable Transaction State RPC you need to pass --enable-tx-state-rpc
flag when executing the binary.
./avail-node --enable-tx-state-rpc
--enable-kate-rpc
Enable Kate RPC
--kate-max-cells-size <KATE_MAX_CELLS_SIZE>
The maximum number of cells that can be requested in one go.
Max size cannot exceed 10_000
[default: 64]
--enable-tx-state-rpc
Enable Transaction State RPC. This allows querying the transaction state (success or failure) using only a transaction hash
--tx-state-rpc-max-search-results <TX_STATE_RPC_MAX_SEARCH_RESULTS>
The maximum number of results the transaction state RPC will return for a transaction hash. If a transaction hash appears in multiple blocks, the RPC will return only the top `X` transaction states.
In most cases, the transaction hash is unique, so this parameter is usually irrelevant
[default: 10]
--tx-state-rpc-max-stored-block-count <TX_STATE_RPC_MAX_STORED_BLOCK_COUNT>
The maximum number of blocks preserved and stored in the transaction state RPC database.
The default is 31 days' worth of blocks.
[default: 133920]
--tx-state-logging-interval <TX_STATE_LOGGING_INTERVAL>
Logging interval for transaction state, in milliseconds. A lower value results in more frequent log updates.
The default is 300_000 milliseconds (300 seconds).
[default: 300000]
./avail-node --dev
deno run -A ./examples/deno/benchmarks/query_proof.ts && deno run -A ./examples/deno/benchmarks/query_rows.ts && deno run -A ./examples/deno/benchmarks/query_block_length.ts && deno run -A ./examples/deno/benchmarks/query_data_proof.ts
# Option 1: for time measurement
cargo bench --bench header_kate_commitment_cri
# Option 2: for time measurement
cargo bench --bench header_kate_commitment_divan
# Option 1: for instructions, cache and main memory hits
cargo bench --bench header_kate_commitment_iai_callgrind
# Option 2: for instructions, cache and main memory hits
cargo bench --bench header_kate_commitment_iai
For additional documentation check our wiki page. There you can learn how to:
- Run Avail Node together with Avail Light Clients
- Build Avail Node for different Linux flavours
- Find out what node synchronization options are available
- Running Avail Benchmarks