Pactus

github.com/pactus-project/pactus — 169b0e3f415dde3cb299e6e22b6edc4584b2f12a

Audit date ·

Audits are prepared by the site owner with a self-hosted (local) AI, checked against the exact commit above, and hand-edited before publishing. This is not financial, legal, or investment advice. Read it as one person's notes on one commit at one date. Do your own research.

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.

Committee-PoS L1 with the full 42M supply allocated at genesis and a 30% foundation reward share with no end height.

Code 10 · Tokenomics 4 · Risk 4 · GOOD

🪙 Pactus (PAC) — Code & Tokenomics Audit

Verdict: GOOD — code 10.0 / tokenomics 4.0 / risk 4.0. The code score reflects the reviewed code and its tests. The two tokenomics deductions are the disclosed full-supply genesis allocation and the continuing 30% foundation share.

Repo: pactus-project/pactus at 169b0e3f415dde3cb299e6e22b6edc4584b2f12a
Audited: 2026-10-23. Scope: consensus reward and subsidy paths, treasury funding, mainnet genesis allocation, foundation distribution, wallet encryption, and repository hygiene at the pinned commit.

🔑 At a glance

CodeTokenomicsRiskVerdict
10.0 / 104.0 / 104.0 / 10GOOD

🔗 Links & sources

WhatLinkStatus
🏠 Homepage✅ HTTP 200, checked 2026-10-21
💻 Source✅ reviewed at 169b0e3
📚 Docs✅ HTTP 200, checked 2026-10-21
🔎 Explorer✅ HTTP 200, checked 2026-10-21; live supply not verified
📄 Whitepaper✅ fetched and parsed 2026-10-21
🔗 PIPs✅ HTTP 200, checked 2026-10-21
📣 Announcement🔍 generic forum index only; specific announcement not verified
💬 Socials🔍 links found in homepage footer; not checked

🧮 Risk score inputs

The rubric starts each score at 10.0. Each deduction is applied once. Risk is the lower of code and tokenomics scores.

FindingEvidenceReachability / statusDeductionDomain
Disclosed genesis allocation equals the published 42M total supply (100% of stated maximum)genesis/mainnet.json:18-39; whitepaper states fixed 42M supply and discloses allocationsLive genesis allocation−3.0Tokenomics
Foundation receives 30% of every block reward with no end height; distribution cycles through 100 configured addressesstate/param/param.go:65,111-134; state/param/foundation_mainnet.json:1-103Live reward rule−3.0Tokenomics
code_score       = 10.0 − 0.0 = 10.0
tokenomics_score = 10.0 − 3.0 − 3.0 = 4.0
risk_score       = min(10.0, 4.0) = 4.0

Instant GOOD overrides: none fired. All five were checked. In particular, the published supply claim is supported by the reviewed issuance and balance-check path; the disclosed genesis allocation is scored under the premine rule, not treated as an undisclosed-supply override.

The earlier float-rounding deduction is removed: the reviewed mainnet reward coefficients are binary fractions and state/param/param_test.go:20-37 checks the expected reward values. The earlier separate “50% treasury concentration” deduction is not stacked on top of the full disclosed genesis allocation deduction. A precise treasury exhaustion block is not scored because fees are returned to the treasury and future fee inflows were not measured.

🔒 Code

The reviewed block execution checks the subsidy amount against the expected block reward and fees (state/execution.go:13-45). It checks the foundation payment and configured recipient (state/execution.go:47-81). The treasury transfer path returns ErrInsufficientFunds when funds do not cover a transfer and fee (execution/executor/batch_transfer.go:57-63). Mainnet reward-boundary values have tests (state/param/param_test.go:20-37).

No code deduction was supported by the findings reviewed for this report. The repository has CI, go.mod and go.sum, and 240 _test.go files. No real unsafe use was found outside generated protobuf files in the reviewed Go source. No outbound telemetry was found in that source review; this is not a runtime network guarantee.

Open code question: state/execution.go:74-81 indexes the first two batch-transfer recipients. The payload’s BasicCheck requires 2–8 recipients (types/tx/payload/batch_transfer.go), but this pass did not trace every block-validation route to confirm where that check is always invoked. No panic finding is claimed.

📊 Tokenomics

TopicFinding
Published supplyWhitepaper states 42M PAC; the mainnet genesis file allocates 42M across its listed accounts. The allocation is disclosed.
Genesis / premine100% of the stated 42M supply is assigned in genesis (genesis/mainnet.json:18-39); rubric deduction −3.0.
IssuanceReviewed subsidy path computes rewards by height and validates the block subsidy. No separate post-genesis mint path was identified in the reviewed path.
Reward scheduleRewardCoefficient steps through 1.0, 0.5, 0.25, then 0.125 (state/param/param.go:111-123). Mainnet expected values are tested.
Foundation shareFoundation reward is 300M base units (30% of the 1B block reward), with no end height (state/param/param.go:65,130-134). It is paid across 100 listed addresses. Deduction −3.0.
TreasuryGenesis treasury balance is 21M PAC. Fees accrue to the treasury. Whether later fee inflows cover future subsidy obligations was not calculated.
DocumentationThe 42M supply and allocation are disclosed in the whitepaper; no docs-versus-code contradiction was established in this review.

The treasury balance alone is below the sum of nominal rewards through the first three 8M-block eras, but that is not enough to establish an exhaustion height because transaction fees replenish it. If the treasury cannot fund a required subsidy, the balance check prevents that transfer; actual future fee sufficiency is unknown.

🕵️ Privacy

The wallet vault stores an encrypted mnemonic and rejects an empty password (wallet/vault/vault.go:95,118-119). The reviewed encrypter uses Argon2id with the configured parameters and AES-256 (wallet/encrypter/encrypter.go:19-64). No outbound telemetry endpoint was found in the reviewed Go source. Runtime traffic and third-party wallet behavior were not tested.

🚩 Red flags

✅ Green flags

🧭 Context

ItemStatus
Repositorypactus-project/pactus, commit 169b0e3f415dde3cb299e6e22b6edc4584b2f12a
Independent auditNot verified in this pass
Contributors, repository age, AI assistanceNot recorded in this pass
Live supply / RPCNot verified; explorer availability alone does not establish supply conformance
Market, liquidity, exchange accessNot checked; excluded from code/tokenomics score
PIP-55Reported active at block 7,675,113 on 2026-07-14 in the prior research notes; not independently rechecked in this pass

❓ What I could not check

🧭 Bottom line

Pactus has a well-tested reward-validation path and strong wallet encryption in the reviewed code. The main risk is tokenomics: all 42M published coins are allocated at genesis, while the foundation receives a 30% reward share indefinitely. The treasury’s long-term funding cannot be established without fee-flow data, so this report does not claim an exact exhaustion block. The rubric score is 4.0, driven by the two tokenomics deductions.

Files we opened

state/execution.go:13-45

state/execution.go:47-81

execution/executor/batch_transfer.go:57-63

state/param/param_test.go:20-37

genesis/mainnet.json:18-39

state/param/param.go:65,111-134

state/param/foundation_mainnet.json:1-103

wallet/vault/vault.go:95,118-119

wallet/encrypter/encrypter.go:19-64

Every file listed here was opened by us during the audit. Nothing here is a guess.

Back to Projects