Onchain Storage
Networks
Irys operates two bundler networks for uploading data: a mainnet bundler for production use with real tokens, and a devnet bundler for testing with free faucet tokens. "Mainnet" here refers to the bundler network; the chain it uploads to is the Irys L1, currently in mainnet beta. See Bundlers for the list of bundler endpoints and where each one seeds data.
Mainnet
The mainnet bundler, uploader.irys.xyz, accepts production uploads paid with supported tokens and sends them to the Irys L1. The bundler and the chain are separate things: the bundler is the upload endpoint you connect to with @irys/upload; the Irys L1 is the destination chain, in mainnet beta. Check your selected endpoint before uploading: Irys L1 and legacy Arweave bundlers send data to different networks. Changing an SDK package or endpoint does not move previously stored data between chains.
Connect to the mainnet bundler using Ethereum:
import { Uploader } from "@irys/upload";
import { Ethereum } from "@irys/upload-ethereum";
const getIrysUploader = async () => {
const irysUploader = await Uploader(Ethereum).withWallet(process.env.PRIVATE_KEY);
return irysUploader;
};Devnet
The devnet testing network uses free faucet tokens for uploads, with data retention lasting approximately 60 days before deletion. Devnet connections require additional configuration parameters.
import { Uploader } from "@irys/upload";
import { Ethereum } from "@irys/upload-ethereum";
const getIrysUploader = async () => {
const rpcURL = "";
const irysUploader = await Uploader(Ethereum)
.withWallet(process.env.PRIVATE_KEY)
.withRpc(rpcURL)
.devnet();
return irysUploader;
};withRpc() and devnet() to the configuration. RPC URLs are mandatory for devnet operations. Find current RPC URLs at chainlist.org.Programmable Data status
This guide covers uploads through the mainnet and devnet bundlers. Programmable Data remains in development; see current feature status for native contract access to stored data.