Skip to content

Publish an article

Publishing puts your article on IPFS and records its fingerprint, the CID, on the Algorand blockchain in one signed transaction. It is immediate: no editor decides whether it appears. What you choose in the form (fields, type, co-authors) can never be changed afterwards, so read this page before you sign. For a shorter walkthrough, see your first article, step by step.

A few words used below (all in the glossary): IPFS is a network where a file is found by a fingerprint of its content (its CID) instead of its location; to pin a file is to ask an IPFS service to keep it online; a CAR file is a package of IPFS blocks.

  • A wallet connected to the network you publish on (TestNet today; MainNet will open later). See wallets and your address.
  • Enough ALGO for the cost shown before you sign, plus the 0.1 ALGO every Algorand account keeps. On TestNet, ALGO are free at the TestNet dispenser.
  • Your article: a file index.md and, if needed, an assets/ folder. See write the article.
  • A way to pin it: a Filebase or Pinata key (path A), or your own IPFS node or pinning service (path B).
Path Who computes the CID Who pins Where
A, Upload your browser, with the canonical parameters Filebase or Pinata, with your own key tab “Upload”
B, I have a CID you, with Node or Kubo you (any pinning service or your own node) tab “I have a CID”

Both paths end with the same transaction. A command-line tool is planned for a later milestone.

The type is recorded on the blockchain and cannot change. The Upload tab gives each type its own template.

Type Use it for
article a full research article (the template has Introduction, Methods, Results, Discussion, References)
notes a short communication: an observation, a negative result, a method note or a comment on the literature
amendment a correction or addition to an earlier article; it needs the number of that article (its parent)
dataset data, with every file in assets/ described (format, columns, units)
replication a replication of a published result, with a link to the original study

How an amendment relates to its parent is explained in new versions, amendments and retraction.

  1. Open https://ariadne.press/testnet/publish and connect your wallet.
  2. In 1. Metadata (immutable once published), fill in:
    • Primary field: the field the article belongs to. Votes and flags are weighted by reputation in this field, and the reputation the article earns goes here.
    • Secondary field (optional): “None”, or a different field, which receives half of what the authors claim.
    • Type: one of the five types above.
    • Parent article id: shown only for an amendment; the number of the article it amends.
    • Co-authors (addresses, one per line; at most 25): the other authors’ Algorand addresses, or use Find a co-author by ORCID iD. Read co-authors first: this list can never change.
  3. Fix anything listed in red, then click Continue to content.

In 2. Content choose a tab. On TestNet the page opens on “I have a CID”; click Upload for path A. The edit metadata button takes you back to step 1 and keeps your text.

  1. Write index.md in the editor. It starts from the template of your type, with the header keys the blockchain checks (authors, fields, type, parent) already filled in; you write the title, the abstract and the text. If you change the form later, Fill the header from the form rewrites those keys.
  2. Add your figures and data under assets/ (images, data; referenced as assets/name). clear removes them all.
  3. The first time, under Where your files are pinned, choose a provider, paste its key and click Save in this browser:
    • Filebase: create a bucket on the IPFS network, then Access Keys, IPFS RPC API, choose the bucket and generate a token. Paste that token, not the S3 access key and secret, which ARIADNE never needs.
    • Pinata: API Keys, New key, restricted to uploading files. Paste the JWT. CAR uploads need a paid Pinata plan.
  4. Click Compute CID and pin. Your browser builds the folder with the canonical parameters, uploads it to your provider as a CAR file and compares the CID the provider stored with its own. Any difference stops the flow.

Compute the CID yourself, with exactly the parameters ARIADNE uses, from the folder that holds index.md (and assets/).

Without Kubo, with Node 22 or later and the script in the ARIADNE repository:

Terminal window
cd spec/fixtures
npm ci
node compute-cid.mjs /path/to/my-article

It prints the CID (bafybei...), its 36 bytes in hexadecimal and the list of files.

Or with Kubo 0.43.x (the reference implementation), in a fresh repository with no import profile:

Terminal window
ipfs init
ipfs add -r -Q --cid-version=1 --raw-leaves=true --chunker=size-262144 --hash=sha2-256 --max-file-links=174 --max-directory-links=0 --max-hamt-fanout=256 --pin=true ./my-article

Never use -w / --wrap-with-directory: it adds a second directory level and gives another CID. Both methods must print the same CID; the sample article in spec/fixtures/sample-article gives bafybeidzsrohfscy7xlt4dh53j3kmlxunjl3r2354pvtfn6pysnjpmduna.

Then:

  1. Keep it pinned: leave your Kubo node online (ipfs pin add <cid>), or upload the CAR to any pinning service that keeps the root CID.
  2. Paste the CID in Directory CID (dag-pb, CIDv1, sha2-256) and click Fetch and verify.
  3. The app downloads the folder through a public trustless gateway (https://trustless-gateway.link), checks every block against its hash, computes the folder CID again, requires index.md, and checks the header and the size before it lets you sign.

CIDv1, sha2-256, dag-pb directory, raw leaves, fixed chunks of 262 144 bytes, balanced layout with at most 174 links per file node, HAMT sharding above 256 KiB of links (links-bytes estimation, fanout 256), links-first field order, no mode or mtime, hidden files excluded, and the root is the directory itself.

In 3. Sign on testnet the cost box lists the storage deposit and the network fees, the total on TestNet and the ALGO available in your account. Click Sign and publish and approve in your wallet. The page then says “Published as article #N” with a link to open it; the indexer shows it within a few seconds.

There are no platform fees. You pay a storage deposit of 0.2122 ALGO, plus 0.0293 per declared co-author, held by the protocol for as long as the record exists, and the network fee (currently 0.001 ALGO per transaction; a publication is three). The app shows the exact amount before your wallet opens. Details in costs and deposits.

When What
In the form a wallet is connected; a primary field is chosen; the secondary field differs from it; only an amendment has a parent, and an amendment must have one; every co-author is a valid address, not yours, not repeated, at most 25
On the content index.md at the root; nothing but index.md and assets/; no hidden files; at most 20 MB in total; a readable header with a title; field, secondary_field, type and parent equal to the form; the first author is the publishing wallet
On the blockchain the fields are registered; the type is valid; the parent of an amendment exists; the co-author list is valid; the deposit is paid
After publishing the indexer downloads the folder and compares its header with the blockchain record

An empty abstract, or a list of authors in the header that differs from the declared co-authors, gives a notice but does not block. The header keys are described in the article header.

  • “Your account cannot pay this yet”: add ALGO (free on TestNet) and try again.
  • “Your wallet is on …, ARIADNE is on …”: switch your wallet to the same network as the app.
  • The provider refuses the key: for Filebase use the IPFS RPC API token of an IPFS bucket; for Pinata, a key allowed to upload files, on a plan that accepts CAR uploads.
  • “the provider returned …, not the locally computed …: refusing to continue”: the provider stored something else. Nothing was published; try again or use path B.
  • “the CID could not be fetched and verified through the gateway”: the content is not reachable on the public IPFS network yet (node offline, not pinned) or it was not built with the canonical parameters (for example with -w).
  • “front-matter: field must be …” (or type, parent, authors[0]): the header does not match the form. Use Fill the header from the form, or fix the header by hand.

If the indexer later finds that the header differs from the blockchain record, or cannot read the content, the article stays valid but its page shows a warning.

  • The indexer fetches the folder, validates it, pins a second copy and serves it through the ARIADNE gateway, https://ipfs.ariadne.press, a separate address that serves only content ARIADNE holds. Your pin is still your responsibility: keep it.
  • The article page shows the CID and the command to pin it yourself, ipfs pin add <cid>. Extra pins by you or your institution are always safe. More in storage.
  • Each publication also creates an article token that proves authorship. Claiming it into your wallet is optional (Claim the article token on the article page; 0.1 ALGO stays in your own account while you hold it).
  • Next steps: your co-authors confirm; you can set the article under review and publish new versions, ask for reviews to earn the Peer-reviewed seal, and get a DOI.