Skip to main content

DAS RPC method reference

This document covers the JSON-RPC methods exposed by Arbitrum Data Availability Servers (DAS) and the newer DAProvider interface, as defined in the Arbitrum Chain SDK node configuration types NodeConfig.generated.ts

Overview​

DAS servers exposed two interfaces for data storage and retrieval:

InterfacePort (typical)Used byPurpose
RPC:9876Batch PosterStore batch data, obtain DACerts
REST:9877Nitro nodesRetrieve batch data by hash

The RPC interface supports two storage modes:

  1. Single-shot store: entire payload sent in one call (legacy, used when enable-chunked-store: false).
  2. Chunked (streaming) store: payload sent in chunks across multiple calls (default, enable by enable-chunked-store: true).

DAS RPC methods (Legacy DAS interface)​

These methods are usd by the RPC aggregator (node.data-availability.rpc-aggregator.das-rpc-client) when communicating with standalone DAS servers.

das_startChunkedStore​

Initiates a chunked data stream for storing a large batch payload on the DAS server.

FieldValue
Default method namedas_startChunkedStore
Config pathnode.data-availability.rpc-aggregator.das-rpc-client.data-stream.rpc-methods.start-stream
Config keystart-stream
DirectionClient (batch poster) -> DAS server

Behavior:

  • Called once at the beginning of a chunked store operation
  • Returns a stream/session identifier used by subsequent das_sendChunk calls
  • The server allocations resources to receive the incoming data stream

When invoked:

  • The batch poster calls this method on each DAS backend in the RPC aggregator's backend list
  • Only used when enable-chunked-store is true (default)

das_sendChunk​

Sends a single chunk of batch data within an active chunked store session.

FieldValue
Default method namedas_sendChunk
Config pathnode.data-availability.rpc-aggregator.das-rpc-client.data-stream.rpc-methods.stream-chunk
Config keystream-chunk
DirectionClient (batch poster) -> DAS server

Behavior:

  • Called one or more times after das_startChunkedStore to transmit the payload in pieces
  • Each chunk must fit within max-store-chunk-body-size (default: 5,242,880 bytes / 5 MB)
  • Chunks are sent sequentially within a stream session

Related config:

'data-stream': {
'max-store-chunk-body-size': 5242880, // 5 MB per chunk
}

das_commitChunkedStore​

Finalizes a chunked store session, signaling that all chunks have been transmitted.

FieldValue
Default method namedas_commitChunkedStore
Config pathnode.data-availability.rpc-aggregator.das-rpc-client.data-stream.rpc-methods.finalize-stream
Config keyfinalize-stream
DirectionClient (batch poster) -> DAS server

Behavior:

  • Called once after all chunks have been sent via das_sendChunk
  • The DAS server assembles the chunks, stores the complete payload, and returns a signed DACert component (the server's BLS Signature over the data hash)
  • On success, the server commits the data to its configured storage backend

DAProvider RPC Methods (newer interface)​

These methods are used by the DA provider client (node.da-provider)—the newer generalized data availability interface that can work with DAS or other DA backends.

daprovider_startChunkedStore​

Initiates a chunked data stream on the DA provider server.

FieldValue
Default method namedaprovider_startChunkedStore
Config pathnode.da-provider.data-stream.rpc-methods.start-stream
Config keystart-stream

Functionally equivalent to das_startChunkedStore but routed through the DAProvider abstraction.

daprovider_sendChunk​

Sends a chunk of data to the DA provider server.

FieldValue
Default method namedaprovider_sendChunk
Config pathnode.da-provider.data-stream.rpc-methods.stream-chunk
Config keystream-chunk

Functionally equivalent to das_sendChunk. Max chunk body size is goverend by node.da-provider.data-stream.max-store-chunk-body-size (default: 5,242,880 bytes / 5 MB).

daprovider_commitChunkedStore​

Finalizes a chunked store session on the DA provider server.

FieldValue
Default method namedaprovider_commitChunkedStore
Config pathnode.da-provider.data-stream.rpc-methods.finalize-stream
Config keyfinalize-stream

Functionally equivalent to das_commitChunkedStore.

daprovider_store​

Single-shot store method—sends the entire payload in one RPC call. Used when data streaming is disabled. (use-data-streaming: false).

FieldValue
Default method namedaprovider_store
Config pathnode.da-provider.store-rpc-method
Config keystore-rpc-method

Behavior:

  • Sends the complete batch data in a single request
  • Simpler than a chunked store but limted by HTTP body size constraints
  • Enabled by default. Set use-data-streaming: true to switch to the chunked protocol.

REST retrieval interface​

DAS nodes also expose a REST interface for reading stored data. This is not a JSON-RPC interface—it used HTTP GET requests.

GetByHash​

Retrieves batch data by its hash from REST DAS endpoints.

FieldValue
ProtocolHTTP REST (GET)
Port (typical):9877
Used byNitro nodes (via rest-aggregator)

Configuration:

'rest-aggregator': {
'enable': true,
'urls': ['http://das-server:9877'],
'strategy': 'simple-explore-exploit', // endpoint selection strategy
'wait-before-try-next': '2s', // timeout before trying next endpoint
'max-per-endpoint-stats': 20, // latency/success stats window
'simple-explore-exploit-strategy': {
'exploit-iterations': 1000, // calls using best-performing endpoint
'explore-iterations': 20, // calls trying random endpoints
},
}

Endpoint selection strategy: The simple-explore-exploit strategy alternates between:

  • Exploit mode (default 1000 iterations): Selects endpoints based on best latency and success rate.
  • Explore mode (default 20 iterations): Randomly selects endpoints to discover better options.

Configuration quick reference​

DAS RPC client (Legacy—das-rpc-client)​

Full config path: node.data-availability.rpc-aggregator.das-rpc-client

'das-rpc-client': {
'enable-chunked-store': true, // default: true
'server-url': 'http://...', // DAS server URL
'data-stream': {
'max-store-chunk-body-size': 5242880, // 5 MB
'rpc-methods': {
'start-stream': 'das_startChunkedStore', // customizable
'stream-chunk': 'das_sendChunk', // customizable
'finalize-stream': 'das_commitChunkedStore', // customizable
},
},
}

DAProvider client (newer—da-provider)​

Full config path: node.da-provider

'da-provider': {
'enable': true,
'store-rpc-method': 'daprovider_store', // single-shot store
'use-data-streaming': true, // use chunked protocol
'with-writer': true, // server supports writes
'data-stream': {
'max-store-chunk-body-size': 5242880, // 5 MB
'rpc-methods': {
'start-stream': 'daprovider_startChunkedStore',
'stream-chunk': 'daprovider_sendChunk',
'finalize-stream': 'daprovider_commitChunkedStore',
},
},
'rpc': {
'url': 'http://...',
'retries': 3,
'retry-delay': '...',
'timeout': '...',
'connection-wait': '...',
'jwtsecret': '...', // JWT auth (optional)
'arg-log-limit': 2048,
'websocket-message-size-limit': 268435456,
},
}

RPC aggregator backend entry​

Full config path: node.data-availability.rpc-aggregator.backends (JSON string)

// Type: NodeConfigDataAvailabilityRpcAggregatorBackendsJson
// Source: src/types/NodeConfig.ts:23-29
[
{
url: 'http://das-member-0:9876', // DAS RPC endpoint
pubkey: '<base64 BLS public key>', // member's BLS key
},
// Additional members go here. Each backend's signer bit is auto-derived from
// its index in this array (index i -> mask 1 << i) and must line up with
// the member's position in the onchain keyset.
];

Method Summary Table​

MethodInterfaceDefault NamePurposeConfig Key
Start chunked storeDASdas_startChunkedStoreBegin streaming sessionstart-stream
Send chunkDASdas_sendChunkTransmit data chunkstream-chunk
Commit chunked storeDASdas_commitChunkedStoreFinalize and storefinalize-stream
Start chunked storeDAProviderdaprovider_startChunkedStoreBegin streaming sessionstart-stream
Send chunkDAProviderdaprovider_sendChunkTransmit data chunkstream-chunk
Commit chunked storeDAProviderdaprovider_commitChunkedStoreFinalize and storefinalize-stream
Single-shot storeDAProviderdaprovider_storeStore entire payload at oncestore-rpc-method
Get by hashRESTN/A (HTTP GET)Retrieve data by hashN/A
Config KeyDefaultDescription
data-availability.enablefalseEnable AnyTrust DA mode
data-availability.request-timeout5sStore request timeout
data-availability.panic-on-errorfalseCrash on DAS errors (not recommended)
data-availability.sequencer-inbox-address—SequencerInbox contract address
data-availability.parent-chain-node-url—Parent chain RPC URL
batch-poster.das-retention-period360hHow long DAS retains stored batches
rpc-aggregator.assumed-honest—H value for quorum (K=N+1-H)
das-rpc-client.enable-chunked-storetrueUse streaming protocol
rest-aggregator.strategysimple-explore-exploitEndpoint selection strategy
rest-aggregator.wait-before-try-next2sTimeout before next endpoint
sync-to-storage.retention-period360hSynced data retention period