
Avail
- 5 installs
- 4 repo stars
- Updated February 25, 2026
- hairyf/blockchain-master
Run and script the Avail data-availability node: chains, Kate RPC data-availability queries, block authoring, and runtime APIs.
About
A reference for the Substrate-based Avail node covering chain selection, Kate RPC for DA queries, and custom block authoring. A developer uses it to run nodes, script DA proofs, or integrate light clients and explorers.
- Node run/chain IDs and Kate RPC methods (queryRows, queryProof, queryDataProof)
- Custom block authoring via basic-authorship and DataAvail/Kate runtime APIs
Avail by the numbers
- 5 all-time installs (skills.sh)
- Ranked #338 of 479 Web3 & Blockchain skills by installs in the Skillselion catalog
- Data as of Jul 13, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hairyf/blockchain-master --skill availAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 5 |
|---|---|
| repo stars | ★ 4 |
| Last updated | February 25, 2026 |
| Repository | hairyf/blockchain-master ↗ |
What it does
Run and script the Avail data-availability node: chains, Kate RPC data-availability queries, block authoring, and runtime APIs.
Files
Skill based on Avail Node (availproject/avail), generated fromsources/avail. Doc path:sources/avail/README.md,sources/avail/client/basic-authorship/README.md,sources/avail/e2e/README.md, and node/rpc/runtime source (cli, command, kate-rpc, apis).
Avail is a data-availability layer. The Avail Node is the official Substrate-based client. It supports multiple chains (dev, turing, mainnet), Kate RPC for DA queries (rows, proofs, block length, per-tx data proof), and optional custom block authoring via the basic-authorship client. Use this skill to run nodes, script Kate RPC, integrate with light clients or explorers, and reason about runtime APIs.
Core References
| Topic | Description | Reference |
|---|---|---|
| Node and chains | Run node, chain IDs (dev, turing, mainnet), Docker, custom chain spec | core-node-and-chains |
| Kate RPC | Enable Kate RPC, methods (queryRows, queryProof, queryMultiProof, blockLength, queryDataProof), limits | core-kate-rpc |
Features
Block authoring and runtime
| Topic | Description | Reference |
|---|---|---|
| Block authoring | ProposerFactory and Proposer for custom block production (basic-authorship) | features-block-authoring |
| Runtime APIs | DataAvailApi, KateApi, ExtensionBuilder for DA and header extension | features-runtime-apis |
Best Practices
| Topic | Description | Reference |
|---|---|---|
| Node security | Binary verification, safe RPC usage, when to use unsafe/Kate flags | best-practices-node-security |
Generation Info
- Source:
sources/avail - Git SHA:
1afb08de9e57101d2e7d6f13e5a7ab99fad09f72 - Generated: 2026-02-24
- Doc path used:
sources/avail/README.md,sources/avail/client/basic-authorship/README.md,sources/avail/e2e/README.md,sources/avail/node/src/cli.rs,sources/avail/node/src/command.rs,sources/avail/rpc/kate-rpc/src/lib.rs,sources/avail/runtime/src/apis.rs. Additional docs: Avail wiki.
Kate RPC
Kate RPC exposes data-availability queries (rows, proofs, block length, per-tx data proof). Use it when building light clients, explorers, or tooling that verify or fetch DA data.
Enabling Kate RPC
- CLI:
--enable-kate-rpc(default: false).--devimplies--enable-kate-rpc. - Cell limit:
--kate-max-cells-size <N>(default 64, max 10_000). Caps how many cells can be requested in onekate_queryProof/kate_queryMultiProofcall. - Metrics:
--enable-kate-rpc-metricsfor Kate RPC metrics (optional).
./avail-node --chain mainnet --enable-kate-rpc
./avail-node --enable-kate-rpc --kate-max-cells-size 256RPC methods
All methods accept an optional block hash at; if omitted, the node uses the best block. Only finalized blocks are queried; requesting a non-finalized block returns an error.
| Method | Purpose |
|---|---|
kate_queryRows | Get grid rows by row indices (max 64 rows). |
kate_queryProof | Get data proofs for a set of cells (bounded by --kate-max-cells-size). |
kate_queryMultiProof | Get multiproof and cell block for a set of cells (same bound). |
kate_blockLength | Get block length at a block. |
kate_queryDataProof | Get data proof for a single transaction by block and transaction index. |
Example (conceptual) for proof queries:
- Cells: list of
{ row, col }; length must be ≤kate-max-cells-size(or you get a clear error suggesting to increase the flag or request fewer cells). - Rows: up to 64 row indices for
kate_queryRows.
If the requested block has empty commitments (e.g. pre-DA block), the RPC returns an error.
Key points
- Queries are only valid for finalized blocks.
- Increase
--kate-max-cells-size(max 10_000) if you need larger batch proof requests. - Empty commitments on the requested block cause
kate_queryRows/kate_queryProof/kate_queryMultiProofto fail.
<!-- Source references:
- https://github.com/availproject/avail (README.md, RPCs and Custom Flags)
- sources/avail/rpc/kate-rpc/src/lib.rs
- sources/avail/node/src/cli.rs
-->
Avail Node and Chains
How to run the Avail Node binary and which chains are supported. Use this when scripting node startup, CI, or deployment.
Chains
Specify chain with --chain <id>. If omitted or empty, the node errors and asks you to specify (e.g. --chain mainnet).
| Chain ID | Use case |
|---|---|
dev | Local development |
dev.tri | Development (tri config) |
devnet0 | Devnet |
turing | Testnet Turing |
mainnet | Mainnet |
<path> | Custom JSON chain spec |
# Development (single authority, no relay)
cargo run --locked --release -- --dev
# Testnet Turing
cargo run --locked --release -- --chain turing
# Mainnet (with data directory)
mkdir -p output
cargo run --locked --release -- --chain mainnet -d ./output
# Custom chain spec from file
./avail-node --chain /path/to/chain-spec.json--dev implies --enable-kate-rpc. For other chains you must pass --enable-kate-rpc explicitly if you need Kate RPC.
Optional: network name
For dev and dev.tri you can override the network name/id:
./avail-node --chain dev --network-name my-dev-chainDocker / Podman
Build and run with a single data volume; expose p2p (30333) and RPC (9944).
docker build -t availnode -f ./dockerfiles/avail-node.Dockerfile .
mkdir output
docker run --rm -p 30333:30333 -p 9944:9944 -v ./output:/output availnode --chain mainnetFor a dev chain with unsafe RPC (e.g. for local tooling):
docker run --rm -p 30333:30333 -p 9944:9944 -v ./output:/output availnode --dev --rpc-methods=unsafe --unsafe-rpc-external --rpc-cors=allOn SELinux use :z on the volume: -v ./output:/output:z.
Key points
- Always set
--chain(or use a custom JSON path); the binary does not default to a chain. - Default RPC:
127.0.0.1:9944. Use--rpc-methods=unsafeand--unsafe-rpc-externalonly for local dev. - SDKs for application layer: avail-js, avail-rust, avail-go (separate repos).
<!-- Source references:
- https://github.com/availproject/avail (README.md)
- sources/avail/node/src/command.rs (load_spec)
- sources/avail/README.md
-->
Runtime APIs (Data Availability)
The Avail runtime exposes runtime APIs used by the node and Kate RPC for block length, Kate proofs/rows, and header extension building. Use this when reasoning about off-chain tooling, RPC behavior, or runtime upgrades.
DataAvailApi
- block_length() — returns
BlockLengthfor the current block (used by Kate RPC and sync).
KateApi
All methods take block context (number, extrinsics, block_len) and operate on the application data grid:
- rows(block_number, extrinsics, block_len, rows) — returns
Vec<GRow>for the given row indices. - proof(block_number, extrinsics, block_len, cells) — returns
Vec<GDataProof>for the given (row, col) cells. - multiproof(block_number, extrinsics, block_len, cells) — returns
Vec<(GMultiProof, GCellBlock)>for the given cells. - data_proof(block_number, extrinsics, tx_idx) — returns
Option<ProofResponse>for a single transaction at indextx_idx.
These are the backend for the Kate RPC methods; the RPC layer enforces finalized blocks and kate-max-cells-size.
ExtensionBuilder
- build_extension(extrinsics, data_root, block_length, block_number) — builds the
HeaderExtension(e.g. V3 with Kate commitment). - build_data_root(block, extrinsics) — computes the data root for the block.
- check_if_extrinsic_is_post_inherent(uxt) — returns whether the extrinsic is a post-inherent (used during block building).
Key points
- Kate APIs require valid extrinsics and block length from the same block; the node supplies these from the finalized block.
- Header extension (V3) carries the Kate commitment; empty commitment causes Kate RPC to error for that block.
<!-- Source references:
- sources/avail/runtime/src/apis.rs (decl_runtime_apis, impl_runtime_apis)
- sources/avail/runtime/src/kate/
-->