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.
The networks
Section titled “The networks”| 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.
Fields of a network entry
Section titled “Fields of a network entry”| 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.
TestNet
Section titled “TestNet”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:
cd projects/indexer && npm cinode -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.
MainNet
Section titled “MainNet”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
Section titled “LocalNet”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:
docker compose -f localnet/docker-compose.yml -p ariadne up -d --waitcd projects/contracts && algokit project deploy localnetThe 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).
Donations
Section titled “Donations”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.