Parano1d
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.
🪙 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
| Field | Value |
|---|---|
| Project | Parano1d (NOID ①) |
| Chain / consensus | Own L1, proof-native (FRI/GKR/IVC) + PoW-Poseidon2b ordering, ASERT |
| Code score | 7.5 / 10 |
| Tokenomics score | 6.0 / 10 |
| Risk score | 6.0 / 10 (the lower of the two) |
| Verdict | CAUTION |
| Supersedes | the 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
| What | Link | Status |
|---|---|---|
| 🏠 Homepage | not found | — |
| 💻 Source | https://git.parano1d.org/ignotusnemo/parano1d at 5302b3f | ✅ fetched, HTTP 200 |
| 🔎 Explorer | not found | — |
| 📄 Whitepaper | not found | — |
| 📣 Announcement | not found | — |
| 💬 Socials | not found | — |
🧮 Risk score inputs
| # | Finding | file:line | Reachable | Deduction | Applies 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,9 | live (every wallet) | −1.0 | code |
| 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 justified | noid_core/src/packed/arith.rs:120,134, noid_core/src/hardware.rs, noid_chain/src/storage/mdbx_store.rs:1553 | live | −1.0 | code |
| 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 committing | noid_chain/src/consensus/template.rs:203-215 | live but local, cannot mint | −0.5 | code |
| 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,778 | noid_chain/src/consensus/development_allocation.rs:34-49 | live | −2.0 | tokenomics |
| 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 there | development_allocation.rs:37-49, validation.rs:307-314; no timelock/vesting path on these addresses anywhere in noid_chain | live | −2.0 | tokenomics |
| 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 itself | noid_chain/src/consensus/genesis.rs:30-65 | live | −1.0 | tokenomics |
| — | 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 deducted | noid_chain/src/consensus/emission.rs:35-46, development_allocation.rs:19-27 | live | 0.0 | tokenomics |
| 5b | Considered 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, NOTICE | live | 0.0 | code |
| — | 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-507 | live | 0 (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 values | noid_chain/src/consensus/validation.rs:289-314 | live | 0 (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 window | noid_chain/src/consensus/header.rs:259-262, slot_expansion.rs:24-47 | live | 0 (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:
- 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 atvalidation.rs:501-507). No admin route accepts an amount. - No code sends a seed, key or wallet contents anywhere. The keystore is plaintext but local (
keystore.rs:4-9); nothing transmits it. - 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). - Not a fork presented as original work.
NOTICEnames hekate-math with its upstream URL and copyright, and states which parts are derived. That is the opposite of stripping identity. - 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)
- ✅ The reward is never taken from the block.
block_reward_with_schedulecomputes it from height alone for v2 (emission.rs:56-70), and the legacy path halves per state expansion with a floor (emission.rs:91-98). Every node recomputes it during validation. - ✅ Coinbase ceiling enforced on every block:
validate_block_consensusrecomputes the allowed value and rejectscb_value > max_allowedwithInflatedCoinbase(validation.rs:499-507). Only miner-claimable fees are added; the deterministic state-growth burn can never be recovered through coinbase (emission.rs:100-110). - ✅ Coinbase shape is pinned: exactly one, first, canonical bitmap, anchor must equal
block_id(parent), output owner must equal the header'sminer_address(validation.rs:267-281). - ✅ The development payout is mandatory and exact. If a payout is due, block transaction 1 must have output 0 =
O1_NETWORK_FUND_ADDRESSand output 1 =PARANO1D_LAB_ADDRESS, each at the computed amount, or the block is rejected (validation.rs:307-314). A miner cannot redirect it. - ✅
log_slots— which selects the reward tier on the legacy path — is not miner-chosen.expected_child_log_slotsreturns the only valid value and the header is compared against it, rejectingBadLogSlotsExpansion(header.rs:259-262). Expansion needs a strict majority over a complete finalized window, so fabricated early counts cannot force it (slot_expansion.rs:24-47). - ✅ RPC fails closed: a non-loopback listener refuses to start without bearer auth (
noid_rpc/src/server.rs:3713-3714), and loopback is checked with mapped-v4 handling (:3865-3869). - ✅ Supply chain is clean:
Cargo.lockpresent, zerogit+sources, andNOTICEnames upstream derivation explicitly with the repository URL (NOTICE, hekate-math). No identity is stripped. - ⚠️ MEDIUM — key storage.
noid_node/src/wallet/keystore.rs:4-9: "Plaintext key file: master_secret → disk", 48-byte file,0o600, "No encryption — the OS filesystem is the security boundary during development." Mode0600is the only wall. Live path, and it is stated honestly rather than hidden. - ⚠️ MEDIUM —
unsafein consensus crates without per-block justification: 257 occurrences across the consensus crates, with SAFETY comments on roughly a third (noid_chain 6/4,noid_core 41/9,noid_poseidon2b 55/12,noid_ivc_core 155/57). Most are runtime-gated AVX2/VPCLMULQDQ paths (noid_core/src/packed/arith.rs:120,134), which is defensible. No miri or fuzz evidence found in CI. - ⚠️ LOW —
pub unsafe fn seal_after_trusted_history_step_proof_unchecked(noid_chain/src/consensus/template.rs:203) is called on the live miner path (noid_miner/src/block_production.rs:467) and frommdbx_context.rs:3044. Its own doc states inbound and reorg acceptance never use this bridge and always verify the proof, and it does compare the header and tx hashes before committing. The residual risk is the local fast-commit path persisting an unverified terminal if the precondition is violated. Cannot mint. - ⚠️ CI does not run the test suite.
.github/workflows/release.ymlis a build-and-publish pipeline gated on "Successful Platform CI run for the tagged commit", andplatform-ci.ymlhas nocargo test/nextestjob.platform-ci.yml:3-5states plainly that CI does not run tests because the suite, especially the-racepass, needs more memory than the runner has. Tests exist and are extensive; they are just not run by CI. Recorded as a hygiene gap worth −0.5 only if you count developer-gated test runs as CI — I did not deduct it twice, so it is listed here rather than in the arithmetic. - INFO — the release gate takes SHA-256 values as workflow inputs (
release.yml:12-17,56-57) rather than computing them from the built artifacts, and there is no signing key or attestation. A release is gated on a declared hash, not a verified signature.
📊 Tokenomics
| Item | Value | Evidence | Flag |
|---|---|---|---|
| Premine | None. 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 address | noid_chain/src/consensus/genesis.rs:25-27,44 | ✅ |
| Mint authority | None outside the subsidy. Issuance is the block subsidy plus the mandatory daily payout, both recomputed from height. No admin path accepts an amount | noid_chain/src/consensus/emission.rs:56-70, development_allocation.rs:101-150, enforced validation.rs:499-507 | ✅ |
| Supply cap enforced in consensus | No 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 defect | noid_chain/src/consensus/emission.rs:35-46, params.rs:315 | ✅ |
| Max supply / emission curve | Tier 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 forever | noid_chain/src/consensus/emission.rs:35-46, params.rs:19 | ✅ exact constants |
| Dev or founder share | 10% 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 share | 90% during allocation (subsidy − 2 * share_each), 100% after the end height. Fees are entirely miner-claimable after the state-growth burn | development_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 funds | development_allocation.rs:37-49, validation.rs:307-314 | ❌ −2.0, counted separately from the tax band |
| Genesis reproducible | Partly. 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 nonce | genesis.rs:30-65 | ⚠️ −1.0 |
| Docs vs code | Claim 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
- ✅ No telemetry or phone-home on the node or wallet paths.
noid_node/src/sync_phase_telemetry.rsis in-process fixed-size counters for snapshot-sync phases, not an outbound beacon. No analytics SDK, no crash reporter. - ✅ Key custody is local — but unencrypted at rest (
keystore.rs:4-9). The file is~/.parano1d/data/wallet.key, 48 bytes, mode0o600. Stolen file equals stolen funds. The code says so in its own header, which is honest documentation and not a hidden flaw. - ✅ RPC refuses to listen off-loopback without bearer auth (
noid_rpc/src/server.rs:3713-3714), and the comment at:3763names the exact threat: a website cannot reach a wallet through the loopback listener. - ⚠️ Stratum mining links your IP to the payout address (
noid_miner), as any pool does. Solo mining avoids it. - 🔍 Exit privacy unconfirmed here — it depends on where the coin is traded, which is out of scope for this scale.
🚩 Red flags
- ❌ Wallet master secret stored plaintext;
0o600is the only protection (noid_node/src/wallet/keystore.rs:4,9). - ❌ 10% founder tax until height 3,223,778, in ordinary addresses with no timelock or multisig (
development_allocation.rs:34-49). - ⚠️
unsafein four consensus crates with only partial justification (257 occurrences, ~90 SAFETY comments). - ⚠️ CI does not run the test suite (
platform-ci.yml:3-5, nocargo testjob). Tests exist; CI does not run them. - ⚠️ Release artifacts are gated on a declared SHA-256 taken as a workflow input, with no signing key or attestation (
release.yml:12-17). - ⚠️ Genesis is hardcoded rather than derived from published parameters (
genesis.rs:30-65).
✅ Green flags
- ✅ The reward is recomputed by every node and the coinbase ceiling is enforced with
InflatedCoinbase(validation.rs:501-507). A miner cannot declare its own amount. - ✅ The development payout is mandatory in both directions — missing payout rejected, unexpected payout rejected, recipients and amounts compared to computed values (
validation.rs:291-314). A miner cannot redirect it. - ✅
log_slotsis not miner-chosen: the header must equalexpected_child_log_slots, and expansion needs a strict majority over a complete finalized window (header.rs:259-262,slot_expansion.rs:24-47). - ✅ Genesis coinbase goes to an all-zero address with no known key (
genesis.rs:29-30). No premine to find. - ✅ RPC fails closed off-loopback (
noid_rpc/src/server.rs:3713). - ✅ Supply chain:
Cargo.lockpresent, zerogit+sources, upstream derivation attributed inNOTICEwith URL and copyright. - ✅ RPC/auth and reward math are defended against wrap-around explicitly: the founder-bps check compares against what the treasury leaves rather than summing two
u64values, because a sum would wrap (development_allocation.rs, and the same anti-wrap reasoning in the reward testsemission.rs:245). - ✅ Honest documentation about its own costs, including that a state expansion during a payout day makes the effective fund share smaller than 5% and the difference is never issued (
development_allocation.rs:8-11).
📋 Context (does not affect the score)
| Signal | Value |
|---|---|
| Repo / commit | canonical 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 |
| Contributors | effectively one, ignotusnemo / "Ignotus Nemo", pseudonymous (NOTICE) |
| Live since | v2 fork at height 210,537; height ~224,200 at the 2026-10-16 audit |
| Independent audit | no. 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 reachable | explorer JSON API answered in the 2026-10-16 pass (noidexplorer.org); not re-checked this session |
| On-chain supply | unverified, 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 data | not 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, profitability | out of scope for this scale |
| Domain age | domain 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.
| Metric | Value |
|---|---|
| Hashrate | ~794 GH/s (explorer estimate) |
| Difficulty | bits 43; ASERT against a 30 s mean |
| Block time | 30 s target (V2_BLOCK_TIME, params.rs:14); actual not exposed by the API 🔍 |
| Per block / per day | 16 NOID gross at tier 0; miner 90% during allocation ≈ 14.4/block; ≈ 46,080 NOID/day gross |
| Activity | 6,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)
| Venue | Status | Note |
|---|---|---|
| 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 host | volume 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
- 🔍 Proof-system soundness. FRI/GKR/IVC acceptance is the core claim of this chain and needs a cryptographic audit, not a code review. Close it: commission an external review of
noid_recursiveacceptance and the pinned step-pack verification keys. - 🔍 On-chain supply and the fund addresses. Close it by reading block 1 on
noidexplorer.organd confirming every credit to0x1c5b…f678and0x3624d0c7…2b40came from a payout block. - 🔍 Mirror identity at
5302b3f3. Only96bf0a1cwas verified identical across the three hosts. Close it with a Forgejo/GitHub/GitLab API comparison at the current SHA. - 🔍 Test suite actually passing. CI does not run it. Close it with
cargo test --workspaceon a machine with enough memory, plus miri on the SIMD crates. - 🔍 Whether the wallet's stated "future versions will derive the master secret from a user-chosen file" is scheduled or aspirational — no roadmap evidence found.
🧭 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)
| Signal | Status |
|---|---|
| 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)
- 51%: ~794 GH/s is low in absolute terms, but Poseidon2b has no rental market — an attack needs purpose-built hardware. Cost unmeasured.
- ASIC risk: a fresh custom algorithm, unproven in both directions.
📎 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.