Providers

Arweave gateway

Wallet and block REST plus the GraphQL index of a gateway. arweave.net by default. Winstons. No gas. History that stays on one gateway.
IDarweave13 / 19keyless
Provider

Arweave gateway

  • arweave
Chains
1
Auth
none
Operations
4 of 10
served 4 / 10

Operations

  • balancegetBalanceserved
  • historygetTxHistoryserved
  • tx detailgetTxDetailserved
  • utxosgetUtxosabsent
  • pubkeygetPubkeyabsent
  • contractgetContractInfoabsent
  • tokensgetTokenBalancesabsent
  • transfersgetTokenTransfersabsent
  • gasgetGasDataabsent
  • blockgetBlockInfoserved

Access

Createcreate("arweave")
Import@agntn/explorers/providers/arweave
Hostarweave.net
Statusproviders on the docs worker

Address it

ts
import { Arweave } from "@agntn/explorers/providers/arweave";

const arweave = new Arweave({ baseUrl: "https://ar-io.dev" }); // create("arweave") reads arweave.net
await arweave.getBalance("FPjbN_btYKzcf8QASjs30v5C0FPv7XpwKXENBW8dqVw", "arweave");

baseUrl is the gateway root for both APIs and defaults to https://arweave.net. Every request stays on that gateway; there's no fallback to another node.

What it reads

/wallet/:address/balance and /block/height/:n over REST, transaction history and details through the gateway's GraphQL index.

Gotchas

  • History merges owner and recipient queries, drops the duplicate rows a transfer to yourself produces, honours sort, inclusive startBlock and endBlock, limit from 1 to 100 and page from 1, and caps each read at page * limit <= 1000. Use block bounds for older history. Index coverage depends on the gateway, particularly for bundled data items.
  • tags narrows history on the gateway's side, as { name, values } per tag. Any value matches, and every tag must. Only text posts? [{ name: "Content-Type", values: ["text/plain"] }]. An empty name or value list throws, since the gateway answers it with no rows, which looks exactly like an empty history. [] means no filter.
  • Winstons, twelve decimals. A data item's fee is left out because its parent bundle pays the network fee; bundle membership, data metadata and tags stay in raw.
  • An empty recipient stays "", a data upload, not contract creation. A missing block means pending, with block number 0 and no timestamp.
  • Balance answers carry no height or hash, so both snapshot fields are null. There's no gas: block gas fields hold "0", and /price/{bytes} quotes a storage cost, not a price per gas unit, so getGasData stays unsupported.
  • Addresses and transaction ids share a shape. The CLI needs -m detail for a transaction id, and the explorer's address page offers the transaction reading as a link.
  • SmartWeave and AO execution status isn't inferred from inclusion in a block. Being in a block means the bytes are there, nothing more.

Where it lives

src/providers/arweave.ts.