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.
What you need
Section titled “What you need”- 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.mdand, if needed, anassets/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).
Choose a path
Section titled “Choose a path”| 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.
Article types
Section titled “Article types”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.
Step 1: the metadata
Section titled “Step 1: the metadata”- Open https://ariadne.press/testnet/publish and connect your wallet.
- 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.
- Fix anything listed in red, then click Continue to content.
Step 2: the content
Section titled “Step 2: the 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.
Path A: Upload in the web app
Section titled “Path A: Upload in the web app”- Write
index.mdin 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. - Add your figures and data under assets/ (images, data; referenced as assets/name). clear removes them all.
- 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.
- 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.
Path B: I have a CID
Section titled “Path B: I have a CID”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:
cd spec/fixturesnpm cinode compute-cid.mjs /path/to/my-articleIt 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:
ipfs initipfs 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-articleNever 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:
- 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. - Paste the CID in Directory CID (dag-pb, CIDv1, sha2-256) and click Fetch and verify.
- 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, requiresindex.md, and checks the header and the size before it lets you sign.
The canonical parameters
Section titled “The canonical parameters”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.
Step 3: sign
Section titled “Step 3: sign”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.
What it costs
Section titled “What it costs”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.
What is checked
Section titled “What is checked”| 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.
What can go wrong
Section titled “What can go wrong”- “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.
After publishing
Section titled “After publishing”- 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.