Skip to content

Networks and addresses

ARIADNE runs as one independent deployment per Algorand network. Each deployment has its own application (the smart contract), its own articles, its own reputation and its own indexer. Nothing on the blockchain refers to a network: the genesis hash of each transaction does that. The same IPFS content can be published on several networks, and each publication is a separate article there.

One file describes every network: spec/networks.json, the manifest. The deployment script writes it, and the indexer, the web app and the hosting stack read it. Enabling a network or changing an address is a change to this file, not to the code.

For what TestNet means for readers and authors, see TestNet and MainNet. Terms such as genesis hash, round and application are explained in the Glossary.

Network Status Application id Web app Indexer API
TestNet live 772983107 https://ariadne.press/testnet https://api.ariadne.press/testnet
MainNet not open yet none yet
LocalNet development only, on your own machine written by the local deployment http://localhost:3001 http://localhost:3000

MainNet will open later, after the audited deployment exists. Until then its entry has appId 0 and enabled false, so no interface offers it; opening it is a change to the manifest.

Field Type Meaning Read by
genesisId text the Algorand network’s genesis id, for example testnet-v1.0 web app, indexer
genesisHash text (base64) the genesis hash. The indexer refuses to start if the Algorand node reports another one, and the web app enables signing only when the wallet’s network matches web app, indexer
appId number the ARIADNE application on this network; 0 means not deployed web app, indexer
governance text the governance address recorded at deployment web app (status page)
algod URL an Algorand node (algod) for reading the chain and sending transactions web app, indexer
algodToken text the node’s API token, where one is needed (LocalNet only) web app, indexer
algoIndexer URL an Algorand indexer, used by the ARIADNE indexer to catch up quickly indexer, web app (status page)
startRound number the round the application was created in; a new ARIADNE indexer database starts there indexer
indexerApi URL the ARIADNE indexer API of this network web app
ipfsGateway URL the IPFS gateway that serves article files to readers, and the indexer’s last-resort content source web app, indexer
fetchGateway URL a public trustless gateway the web app uses to check a CID pasted in “I have a CID” (default https://trustless-gateway.link) web app
explorer URL a block explorer, for links to transactions and accounts web app
enabled true or false whether interfaces offer this network web app
devOnly true or false a development network, left out of production builds web app
appUrl URL the public origin of the web app; ORCID records and Zenodo records must link back to profile and article pages under it indexer, web app
nfdApi URL the NFD API of this network, for .algo names in place of addresses; empty for none web app
orcidApi URL the ORCID public API, for checking declared ORCID iDs; empty: not checked indexer, web app
zenodoApi URL this network’s Zenodo (the sandbox on TestNet); empty hides “Get a DOI with Zenodo” indexer, web app
zenodoCommunity text the Zenodo community drafts are proposed to web app
dataciteApi URL the DataCite API, for DOIs that are not Zenodo’s; empty: such DOIs stay “declared” indexer, web app

The deployment script (projects/contracts, algokit project deploy <network>) writes genesisId, genesisHash, appId, governance and startRound. The other fields are edited by hand.

The values of the testnet entry:

Field Value
genesisId testnet-v1.0
genesisHash SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=
appId 772983107
startRound 67852714
governance ZAL425O4GBTJWID26DSTEWFU5JZGUJIJQ52GO6WVLMZEVXZTNQN63JBGJI (a Falcon-1024 post-quantum account)
algod https://testnet-api.algonode.cloud
algoIndexer https://testnet-idx.algonode.cloud
indexerApi https://api.ariadne.press/testnet
ipfsGateway https://ipfs.ariadne.press
fetchGateway https://trustless-gateway.link
explorer https://lora.algokit.io/testnet
enabled true
appUrl https://ariadne.press
nfdApi https://api.testnet.nf.domains
orcidApi https://pub.orcid.org/v3.0
zenodoApi https://sandbox.zenodo.org
zenodoCommunity ariadne-algo
dataciteApi empty (DOIs other than Zenodo’s are shown as declared)

The application account of 772983107, which holds the storage deposits, is ODWWQZYCSAZZJM6E2UPREO2VPJWA7DYYQ7S6EBEQMQWLFXB224X4T353SA. It is derived from the application id, so you can check it yourself:

Terminal window
cd projects/indexer && npm ci
node -e 'console.log(String(require("algosdk").getApplicationAddress(772983107)))'

TestNet ALGO have no value and are free at https://bank.testnet.algorand.network. The Algorand node and indexer named in the manifest are AlgoNode’s public services; any other TestNet node or indexer gives the same data.

The mainnet entry already names MainNet’s genesis, the public services it will use (algod, algoIndexer, fetchGateway, nfdApi, appUrl, orcidApi, zenodoApi set to https://zenodo.org, dataciteApi), and the ariadne-algo Zenodo community. Its appId is 0, governance, indexerApi and ipfsGateway are empty, and enabled is false. MainNet will have its own governance account, never shared with TestNet. In the web app’s addresses, MainNet pages will have no prefix (/a/123) while TestNet pages start with /testnet.

LocalNet is a private Algorand network on your own computer, for development and tests. Its entry is marked devOnly, so production builds of the web app leave it out.

Field Value
algod http://localhost:4001, with the standard LocalNet token in algodToken
indexerApi http://localhost:3000
appUrl http://localhost:3001
ipfsGateway, orcidApi, zenodoApi, dataciteApi, nfdApi empty
genesisId, genesisHash, appId written by algokit project deploy localnet on your machine

The repository pins its own LocalNet (algod 5.0.2, with native post-quantum accounts) in localnet/docker-compose.yml:

Terminal window
docker compose -f localnet/docker-compose.yml -p ariadne up -d --wait
cd projects/contracts && algokit project deploy localnet

The deployment creates the application, funds it, registers the 42 fields with a local Falcon-1024 governance key, and rewrites the localnet entry. That entry is specific to your machine: restore it with git checkout -- spec/networks.json before committing. The genesis hash changes every time LocalNet is recreated with down -v.

With no IPFS gateway, the web app serves a local content folder for LocalNet, and the indexer reads content from the folder given in ARIADNE_CONTENT_DIR (see Run an indexer).

ARIADNE has no fees and runs on donations. spec/donations.json publishes the donation account, on MainNet:

Name ariadne.algo (NFD)
Address BJLW77K3PXDYX7IJTZYPPNLXOMNI7CVKKGTQ5MVEBR2JZIJXQBQRWI6UC4
Currencies ALGO and USDC

The donation page of the app shows the same account with a QR code. Storage deposits are not donations: they are locked in the application account by the protocol.