Parano1d

git.parano1d.org/ignotusnemo/parano1d — 5302b3f303f1b26e0a6a3de6f6d15aad7b3161ea

Audit date ·

This is a point-in-time review of code quality and tokenomics at the commit above, not a safety certification. Projects can change after this date. Check for newer releases or a newer audit before relying on these scores.

Proof-native L1 with fixed emissions and supply recalculated from live state.

Code 7.5 · Tokenomics 6 · Risk 6 · CAUTION

🪙 Parano1d (NOID ①) — Code & Tokenomics Audit

Repo: canonical git.parano1d.org/ignotusnemo/parano1d at commit 5302b3f303f1b26e0a6a3de6f6d15aad7b3161ea (shallow clone --depth 50, 2026-10-18)
Date: 2026-10-18 Scope: code review on the money path read line by line (emission, allocation, coinbase validation, slot expansion), key storage, CI, supply chain. Supersedes the 2026-10-16 note at 96bf0a1c, which used the old scale.

⚠️ The commit moved. The 2026-10-16 audit verified three mirrors byte-identical at 96bf0a1c. This pass cloned the canonical repo at 5302b3f3, which is newer. Mirror identity at 5302b3f3 was not re-verified here — that was a finding of the earlier pass, not of this one.

🎯 Verdict: CAUTION (code 7.5 / tokenomics 6.0)

Parano1d is an original Rust L1 whose consensus is built on FRI/GKR/IVC proofs with a Poseidon2b PoW ordering layer. On the money path the code is strict: the coinbase value is recomputed by every validating node from height and state-expansion tier, the daily development payout must name exactly two fixed recipients at exactly the computed amount, and a miner cannot choose its own reward tier because log_slots is forced by the parent header. There is no premine: genesis pays its coinbase to an all-zero address with no known key.

Four things cost points under this scale. The founder share is 10% of every block subsidy for three years (5% fund + 5% lab), which lands in the 5–10% band at −2. Those funds sit in ordinary addresses with no timelock and no multisig, so the separate live-spending-key item also applies at −2: the code enforces who receives each payout, not who can spend what lands there. Genesis is hardcoded bytes rather than derived from published parameters — −1. The wallet stores the master secret unencrypted on disk, protected only by file mode 0600 — a −1 MEDIUM, live path. And unsafe appears in four consensus crates without a SAFETY comment on every block — −1.

The earlier note scored this 6/10 for reasons this scale does not count: one exchange, one pseudonymous maintainer, low hashrate. Those stay in Context. The number moved because the deductions are now arithmetic.

🔑 At a glance

FieldValue
ProjectParano1d (NOID ①)
Chain / consensusOwn L1, proof-native (FRI/GKR/IVC) + PoW-Poseidon2b ordering, ASERT
Code score7.5 / 10
Tokenomics score6.0 / 10
Risk score6.0 / 10 (the lower of the two)
VerdictCAUTION
Supersedesthe 2026-10-16 note at 96bf0a1c (old scale, risk 6/10). Network and liquidity numbers below are carried from that pass as context

🔗 Links & sources

WhatLinkStatus
🏠 Homepage—
💻 Source✅ fetched, HTTP 200
🔎 Explorer—
📄 Whitepaper—
📣 Announcement—
💬 Socials—

🧮 Risk score inputs

#Findingfile:lineReachableDeductionApplies to
1−1.0 MEDIUM — wallet master secret stored plaintext on disk. File mode 0o600 is the whole security model; the code states it as "the OS filesystem is the security boundary during development"noid_node/src/wallet/keystore.rs:4,9live (every wallet)−1.0code
2−1.0 — unsafe in consensus crates without a SAFETY justification on every block: noid_chain 6 occurrences / 4 SAFETY, noid_core 41 / 9, noid_poseidon2b 55 / 12, noid_ivc_core 155 / 57. SIMD paths are gated on runtime AVX2+VPCLMULQDQ detection, so most are justified; the count is not fully justifiednoid_core/src/packed/arith.rs:120,134, noid_core/src/hardware.rs, noid_chain/src/storage/mdbx_store.rs:1553live−1.0code
3−0.5 LOW — pub unsafe fn seal_after_trusted_history_step_proof_unchecked is reachable on the live miner path (noid_miner/src/block_production.rs:467, noid_chain/src/storage/mdbx_context.rs:3044). The doc comment says inbound and reorg acceptance never use this bridge and always verify the proof, so the exposure is the local fast-commit path only. It does check header and tx-hash equality before committingnoid_chain/src/consensus/template.rs:203-215live but local, cannot mint−0.5code
4−2.0 ongoing dev/founder tax 10% of every block subsidy (5% O(1) Network Fund + 5% ParanO(1)d Lab) until height 3,223,778noid_chain/src/consensus/development_allocation.rs:34-49live−2.0tokenomics
4b−2.0 the fund holds a live spending key — ordinary addresses, no timelock, no multisig, no vesting applied to these funds. Validation pins who receives each payout; nothing restricts who spends what lands theredevelopment_allocation.rs:37-49, validation.rs:307-314; no timelock/vesting path on these addresses anywhere in noid_chainlive−2.0tokenomics
5−1.0 genesis is hardcoded bytes, not derived from published parameters. Header fields are hardcoded and the PoW nonce is pre-mined; the state root is hardcoded and verified only by a test against itselfnoid_chain/src/consensus/genesis.rs:30-65live−1.0tokenomics
—Considered and not deducted: no hard cap — permanent 1 NOID/block tail. Issuance is a pure function of height plus the tier table, and every node recomputes it. Deliberate tail emission, so nothing is deductednoid_chain/src/consensus/emission.rs:35-46, development_allocation.rs:19-27live0.0tokenomics
5bConsidered and not deducted: reward and supply math is covered by tests (emission.rs:190,245, development_allocation.rs has 10 test assertions), CI exists, Cargo.lock present with zero git+ sources, third-party derivation is attributed in NOTICE. No hygiene deduction.github/workflows/platform-ci.yml, Cargo.lock, NOTICElive0.0code
—Coinbase cannot be inflated: every validator recomputes max_coinbase_value_from_claimable_fee_sum_with_schedule and rejects a coinbase above it (ConsensusError::InflatedCoinbase)noid_chain/src/consensus/validation.rs:501-507live0 (credit)both
—The development payout is not optional: a block that owes one and omits it is rejected (MissingDevelopmentPayout), and one that includes one when none is due is rejected (UnexpectedDevelopmentPayout). Recipients and amounts are compared to the computed valuesnoid_chain/src/consensus/validation.rs:289-314live0 (credit)tokenomics
—A miner cannot choose its reward tier. log_slots in the header must equal expected_child_log_slots(...), and expansion requires a strict majority over a complete finalized windownoid_chain/src/consensus/header.rs:259-262, slot_expansion.rs:24-47live0 (credit)both
code deductions, one at a time:
  1.0 -> 2.0 -> 2.5
tokenomics deductions, one at a time:
  2.0 -> 4.0 -> 5.0

code_score       = 10 − (1.0 + 1.0 + 0.5)      = 7.5
tokenomics_score = 10 − (2.0 + 2.0 + 1.0)       = 6.0
risk_score       = min(7.5, 6.0)                = 6.0

Instant-AVOID override fired: none. Checked all five against code:

  1. No key, role or admin path can mint supply or change the schedule. The only issuances are the block subsidy and the mandatory daily payout, both recomputed by every node from height (emission.rs:56-70, development_allocation.rs:101-150, enforced at validation.rs:501-507). No admin route accepts an amount.
  2. No code sends a seed, key or wallet contents anywhere. The keystore is plaintext but local (keystore.rs:4-9); nothing transmits it.
  3. No backdoor, killswitch or remote-code path found on the node or wallet paths. The one unsafe bridge, seal_after_trusted_history_step_proof_unchecked, compares the header against its prepared template before committing and is never used for inbound blocks or reorgs (template.rs:198-205).
  4. Not a fork presented as original work. NOTICE names hekate-math with its upstream URL and copyright, and states which parts are derived. That is the opposite of stripping identity.
  5. No supply or privacy claim the code contradicts. The 90%/5%/5% split, the tier table, the three-year end height and the "no premine" statement all match the code exactly — see Docs vs code.

🔒 Code

Commit audited: 5302b3f303f1b26e0a6a3de6f6d15aad7b3161ea (canonical git.parano1d.org/ignotusnemo/parano1d, 74 MB shallow clone at --depth 50)

📊 Tokenomics

ItemValueEvidenceFlag
PremineNone. Genesis pays its coinbase to GENESIS_BURN_ADDRESS = Address([0u8; 32]), an all-zero address with no known private key. Block 0 is hardcoded and cannot credit any named addressnoid_chain/src/consensus/genesis.rs:25-27,44✅
Mint authorityNone outside the subsidy. Issuance is the block subsidy plus the mandatory daily payout, both recomputed from height. No admin path accepts an amountnoid_chain/src/consensus/emission.rs:56-70, development_allocation.rs:101-150, enforced validation.rs:499-507✅
Supply cap enforced in consensusNo cap and none needed — permanent 1 NOID/block tail. Tier table ends at FLOOR_REWARD_MICRONOID = 1_000_000 μNOID and stays there. Recorded as design, not a defectnoid_chain/src/consensus/emission.rs:35-46, params.rs:315✅
Max supply / emission curveTier table [16, 11.30, 8.00, 5.65, 4.00, 2.83, 2.00, 1.41, 1.00] NOID, one tier per V2_REWARD_INTERVAL_BLOCKS = 1_051_200, starting at v2 activation height 210_537. Then 1 NOID per block forevernoid_chain/src/consensus/emission.rs:35-46, params.rs:19✅ exact constants
Dev or founder share10% of every block subsidy — 5% O(1) Network Fund + 5% ParanO(1)d Lab — until height 3,223,778. Constant DEVELOPMENT_ALLOCATION_END_HEIGHT is 4,730,400, but the effective end under the active v2 schedule computes to 3,223,778 (reproduced independently)development_allocation.rs:25-34,85-99❌ −2.0 (5–10% band)
Miner share90% during allocation (subsidy − 2 * share_each), 100% after the end height. Fees are entirely miner-claimable after the state-growth burndevelopment_allocation.rs:148, emission.rs:100-110✅
Treasury spendable?Live key, no timelock, no multisig. The two fund addresses are ordinary addresses. Validation pins who receives each payout; nothing in the code restricts who can spend what lands there. No vesting, no lock, no committee. The chain has timelocked_vault and tranche_vesting contract kinds (noid_node/src/bin/noid_cli/contracts.rs:81,290,315) but they are not applied to these fundsdevelopment_allocation.rs:37-49, validation.rs:307-314❌ −2.0, counted separately from the tax band
Genesis reproduciblePartly. The header is hardcoded bytes, not derived from published parameters. The state root is hardcoded and verified by a test that compares a constant against its own computation. The genesis PoW nonce is pre-mined, so the block cannot be reproduced without the recorded noncegenesis.rs:30-65⚠️ −1.0
Docs vs codeClaim in development_allocation.rs:5-11: "For the first three target-time years after genesis, miners receive 90% of each block subsidy. O(1) Network Fund and ParanO(1)d Lab each receive one mandatory daily payout... A state expansion during that day can therefore make the effective fund share smaller than 5%; the difference is never issued."Code confirms every clause: miner_subsidy = subsidy − 2 * share_each, share_each = subsidy / 20, payout only on an exact interval, no catch-up (development_allocation.rs:101-150). Claim "genesis... Coinbase to burn address" → genesis.rs:25-27✅ exact match

⚖️ Two judgement calls, stated openly

The 10% is real money and it is spendable. Two separate lines apply, and I counted both because the scale lists them as separate items: −2 for the tax band (5–10%), and −2 for a treasury holding a live spending key with no timelock or multisig. The fund addresses are ordinary addresses with no lock, no vesting applied to these funds and no committee. Validation pins who receives each payout; nothing in the code restricts who can spend what lands there. That is the honest weakness: a change of maintainer or a stolen key file moves 10% of three years of subsidy with no on-chain guard.

The time-box is a genuine green flag. The end height is enforced in validation, not in a README: development_allocation_with_schedule returns active: false past the end height, and a fork after the period has expired cannot restart it (development_allocation.rs:85-99). The code also refuses to round shares loosely — InexactRewardShare and InexactInterval are real error paths, not comments.

🕵️ Privacy

🚩 Red flags

✅ Green flags

📋 Context (does not affect the score)

SignalValue
Repo / commitcanonical git.parano1d.org/ignotusnemo/parano1d at 5302b3f3; mirrors GitHub proof-native/parano1d and GitLab ignotusnemo/parano1d verified identical at 96bf0a1c in the 2026-10-16 pass, not re-verified at this commit
Contributorseffectively one, ignotusnemo / "Ignotus Nemo", pseudonymous (NOTICE)
Live sincev2 fork at height 210,537; height ~224,200 at the 2026-10-16 audit
Independent auditno. Proof-system soundness (FRI/GKR/IVC) has never been reviewed by outsiders. That is the project's core claim and it is unreviewed
Public RPC or explorer reachableexplorer JSON API answered in the 2026-10-16 pass (noidexplorer.org); not re-checked this session
On-chain supplyunverified, not clean. Block 1 payouts to the two fund addresses were never read on-chain; the earlier pass skipped it by owner request
Network snapshot (2026-10-16, not rescored)~794 GH/s, difficulty bits 43, ASERT against a 30 s mean, 6,661 tx/24h, 2,151 funded addresses, ~1.2% orphans
Market datanot relevant at this stage. One line: SafeTrade is the only venue (NOID ≈ 9% of that exchange's volume); no CoinGecko or CMC listing
Hashrate, power cost, profitabilityout of scope for this scale
Domain agedomain registered 2026-07-26 (RDAP), younger than the claimed chain history. Flag, not proof

⛏️ Network snapshot (context only — does not affect the score)

From noidexplorer.org JSON API, fetched 2026-10-16T00:25Z. Not re-fetched this pass.

MetricValue
Hashrate~794 GH/s (explorer estimate)
Difficultybits 43; ASERT against a 30 s mean
Block time30 s target (V2_BLOCK_TIME, params.rs:14); actual not exposed by the API 🔍
Per block / per day16 NOID gross at tier 0; miner 90% during allocation ≈ 14.4/block; ≈ 46,080 NOID/day gross
Activity6,661 tx/24h, 246,396 total; 2,151 funded addresses; orphans ~1.2%
Pools and share🔍 not reported by the explorer

💧 Exit liquidity (fetched 2026-10-16T00:36Z, unscored)

VenueStatusNote
CoinGecko / CMC❌ not listed
SafeTrade NOID/USDT✅ listed — $0.40, $646k/24h (+351%)⚠️ NOID is ≈ 9% of that exchange's whole $7.5M volume; swings −30.7%/6 h
DEX❌ none (Dexscreener "NOID" hits an unrelated Base token)
Order-book depth🔍 not obtainable — SafeTrade API behind Cloudflare from this hostvolume is the only confirmed number

⚠️ Typosquat cluster: safetrade.com / .io / .exchange / .app all resolve. Only safetrade.com is coinpaprika-confirmed.

⚠️ Concentration is not scored here. One pseudonymous author (NOTICE: "Designed and developed by Ignotus Nemo") holds the chain, the unreviewed proof system and both fund addresses. That is survival risk, not a code finding.

❓ What I could not check

🧭 Bottom line

The money path is disciplined. Every node recomputes the reward from height, the coinbase has an enforced ceiling, the development payout is mandatory and pinned to two fixed recipients, and a miner cannot pick the tier that selects its own reward because log_slots is derived from the parent header. I found no mint authority, no backdoor and no path that sends key material anywhere.

Tokenomics lands at 6.0 on two separate lines of the same problem: the 10% founder tax is −2 under this scale, and the fund holds a live spending key with no timelock or multisig, which is a separate −2. Genesis being hardcoded rather than derived from published params adds −1. The code controls who receives each payout per block; nothing in consensus restricts who can spend what lands there. That is the honest weakness, and it is time-boxed to height 3,223,778, which is why it reads as fair rather than predatory.

To move code from 7.5 to 8.5 or higher: encrypt the key file with a memory-hard KDF rather than relying on file permissions; justify every unsafe block with a SAFETY comment; sign release artifacts; and run the test suite in CI, which the repo itself admits it cannot do on current runners.

To move tokenomics from 6.0 to 8.0: put the fund funds under a timelock or multisig enforced in consensus rather than in a wallet contract, or burn them as Genoryn does. The tax band itself is fair — 10% for three years is a normal grant — so the deduction that matters is that the money is spendable on day one.

⚠️ What this score does not certify: survival. One pseudonymous author carries the chain, the unreviewed proof system and the fund addresses at once. Treat mined NOID as income to convert, not a store of value.


🏥 Project health (context only)

SignalStatus
Author👤 ignotusnemo / "Ignotus Nemo", pseudonymous, single apparent author (NOTICE)
Commits last 30 days at the last check✅ active — pushed 2026-10-15 (GitHub API)
Community💬 Discord live; GitHub 10 stars / 0 forks — tiny
Nodes🔍 count unknown; DNS seeds exist (seed.parano1d.org)
Domain age vs claimed chain history⚠️ domain registered 2026-07-26 (RDAP), younger than the chain history it claims

⚔️ Attack surface (out of scope for the score)

📎 Previous note archived

The 2026-10-16 note at commit 96bf0a1c used the old scale and scored 6/10. Its unique data (the explorer snapshot, the SafeTrade liquidity table, the typosquat cluster and the project-health table) is kept in this note above. A copy of that note is archived at /mnt/obsidian/_trash/Parano1d-2026-10-16-old-scale-note.md. Nothing was deleted.

Two claims from that note are carried forward unchanged and were re-verified here: RPC fails closed off-loopback (noid_rpc/src/server.rs:3713), and no telemetry or phone-home exists on the node or wallet paths.

One claim is corrected. That note said "CI hygiene best-in-class: actions pinned to full SHAs, releases gated on CI + declared SHA-256." CI does not run the test suite (platform-ci.yml:3-5, no cargo test job). Actions are pinned, and the release gate takes its SHA-256 as a workflow input rather than computing it (release.yml:12-17). Good pinning, no test run, no signature.

Citations

noid_chain/src/consensus/emission.rs:36

noid_chain/src/consensus/emission.rs:40-44

noid_chain/src/consensus/emission.rs:45-49

noid_chain/src/consensus/emission.rs:51-60

noid_chain/src/consensus/validation.rs:505-508

noid_chain/src/consensus/validation.rs:577

noid_chain/src/state_delta.rs:288-296

noid_chain/src/consensus/params.rs:323-346

noid_chain/src/state.rs:509-514

noid_chain/src/state.rs:519-538

Every citation on this page points at a file that was opened during the audit. Nothing here is a guess.

Back to Projects