OriginTrail DKG V10 Pre-Mainnet Bug Bounty
Trust the source — including the source code. Break the DKG V10 economic contracts before they go live. Open to anyone.
Theme
Break the full DKG V10 on-chain contract set (@origintrail-official/dkg-evm-module @ 10.0.0-rc.17) deployed as a public pre-mainnet
Total program value
300,000 $TRAC — a 200,000 capturable honeypot pool + a 100,000 severity-reward pool
Honeypot
Live on Base mainnet with real TRAC — one capped vault (~60,000) + cold reserve, redeployed across captures
Window
Phase 1 (Track 1 honeypot): June 10 → June 17, 2026
Issued by
The program in one line
The final V10 release candidate — the exact contract bytecode intended for mainnet — is deployed as a public pre-mainnet, funded with 300,000 TRAC: a 200,000 honeypot pool plus a 100,000 severity-reward pool. Two tracks: capture real TRAC from the honeypot on the value-handling contracts, and severity rewards for bugs in any V10 contract. The honeypot runs as a single isolated, capped live vault — redeployed across captures so no single bug can take more than the cap. Anyone can attack it. What survives ships; what doesn't gets fixed first.
Why
On 29 May 2026, a researcher using Claude Opus 4.8 found a critical, ~4-year-old soundness flaw in Zcash's Orchard pool — one that had passed repeated expert review — in about a day, with a working proof-of-concept. The lesson is plain: frontier AI now finds deep economic bugs faster than traditional review, and that power favors whoever uses it first. On-chain value-handling code launches once and mistakes are irreversible, so the V10 economic contracts are deployed as a pre-mainnet and attacked — by humans and AI — before user funds are committed. Passing this program is the gate to mainnet.
Scope — the full V10 on-chain contract set (@origintrail-official/dkg-evm-module)
@origintrail-official/dkg-evm-module)Exact target: npm package @origintrail-official/dkg-evm-module, version 10.0.0-rc.17 (or the pinned launch RC), in the OriginTrail/dkg monorepo under packages/evm-module. Do not confuse this with the legacy standalone dkg-evm-module (v8.1.0, repo OriginTrail/dkg-evm-module) — the frozen V8.1 module, which has none of these contracts.
Every V10 on-chain contract is in scope, under two reward tracks. Both pay the same severity bands; capture (drain real TRAC, keep it) is an additional bonus available only on the honeypot track.
Track 1 — Honeypot: the value-handling contracts (capture + severity)
TRAC is fixed-supply with minting permanently disabled, so the target is not a counterfeit token — it is forging an unbacked economic position: a conviction NFT that claims rewards or principal without the stake behind it.
Conviction NFTs —
DKGStakingConvictionNFTandDKGPublishingConvictionNFT(+PublishingConviction/PublishingConvictionStorage): the mint path, the wrapper↔position binding, lock tiers, transfer/burn, and the V8→V10 migration mint path.Staking & rewards —
StakingV10,ConvictionStakingStorage(the canonical V10 store and TRAC vault): deposits, withdrawals, delegation, relock/redelegate, and claims. (StakingStorageis V8 legacy, read only by the V8→V10 drain path — in scope for the migration cutover.)Reward accrual —
RandomSampling/RandomSamplingStorage: per-epoch score, score-per-stake settlement, and the delegator/operator reward split that funds claims.Locks — the lock-tier ladder in
ConvictionStakingStorageand any path that mutates, bypasses, or unwraps a position early.Access control — mint authorization resolved through the Hub, the Hub registry itself (
setContractAddress,forwardCall,setAndReinitializeContracts),initialize()guards, theonlyContractsset-membership gate (HubDependent), admin/pause roles, the multisig (ICustodian) + timelock, and the upgrade path (address-swap; no delegatecall proxy). (Shared infra — also guards Track 2.)
Primary invariant under test: a conviction NFT exists if and only if a real, backed position of equal amount and tier exists in storage under the same owner — and minting is reachable only through the staking flow, never with caller-supplied amount/tier/multiplier. Break that binding and it's Critical. A value-draining bug here can capture the live honeypot vault (you keep it, up to the cap) on top of the severity reward.
Track 2 — General audit: every other deployed contract (severity)
Every remaining V10 contract at the pinned RC is in scope for the severity reward — no honeypot (these don't custody the bounty pool, so there is nothing to "capture"), but paid by the same bands as Track 1:
Knowledge Assets —
DKGKnowledgeAssets,KnowledgeAssetsStorage,KnowledgeAssetsLifecycle,KnowledgeCollection, and the rc.17 per-KA memory-model contracts.Context Graphs —
ContextGraphStorage,ContextGraphValueStorage,ContextGraphs,ContextGraphNameRegistry.Identity & profiles —
IdentityStorage,Identity,ProfileStorage,Profile.Network & accounting —
ShardingTable(Storage),Ask(Storage),EpochStorage*,Chronos,DelegatorsInfo,PaymasterManager/Paymaster,WhitelistStorage,ParametersStorage.
Any on-chain bug counts: asset/fund loss, access-control or mint-authorization bypass, incorrect settlement or accounting, permanent state corruption or freeze.
Out of scope: off-chain software / UI (unless it causes on-chain loss), the production network and real user funds, social engineering, pure off-chain DoS, and issues already in the public tracker.
Verified lock-tier schedule
The contracts seed exactly four locked tiers plus a liquid rest state (ConvictionStakingStorage baseline ladder):
0 (rest)
none
1.0×
always (liquid)
1
30 days
1.5×
after expiry
3
90 days
2.0×
after expiry
6
180 days
3.5×
after expiry
12
366 days
6.0×
after expiry
New tiers are append-only and governance-gated (addTier, Hub-owner / multisig). Multiplier is read from the tier table — never caller-supplied.
The honeypots — 200,000 TRAC
Real staked principal across the lock tiers, active Publisher and Staker conviction positions, and seeded reward state — production economics mirrored at scale, deployed on Base mainnet with real TRAC, fully isolated from any live deployment (its own Hub + full stack). If you can take it through a genuine bug, you keep it — up to the live-vault cap, on top of the severity reward. Demonstrating a viable attack path is rewarded even if no funds move. The only TRAC at risk is this pool — by design.
How it's funded — one capped live vault + cold reserve. With real TRAC and no on-chain clawback, the only cap that holds against a malicious researcher is a structural one: the live vault is funded with only its cap, so a drain can never exceed it. The 200,000 is deployed as a single isolated live vault plus a cold reserve that redeploys it after each capture:
Live vault — one isolated stack
~60,000 TRAC
the active target; its balance is the cap on any single capture
Cold reserve
~140,000 TRAC
redeploys a fresh vault after each capture (topped up so re-arms are funded)
Total committed
200,000
total downside, bounded here regardless of caps
One vault, one ceiling. All staker and publisher conviction route into a single ConvictionStakingStorage whose sole outflow is transferStake, so a binding-break drains the whole live vault in one tx — and the vault's ~60,000 balance is the structural ceiling on any single capture. After a valid drain the surface closes until the bug is patch-verified, then a fresh vault redeploys from reserve. The program runs across several sequential captures before the committed pool is exhausted.
What's in the live vault. A representative slice that keeps every bug class reachable at moderate magnitude:
Conviction staking across all four lock tiers (1/3/6/12) spread over a few sharding-active nodes — a tier-12 "whale" position large enough to make a single-account drain worth real effort, plus mid and several small co-delegators that stress many-staker / shared-denominator / cross-node / dust-rounding interactions.
Publisher conviction —
DKGPublishingConvictionNFTaccounts with committed TRAC and harness-published knowledge assets.Seeded reward state — so the "claim more than you're owed" path is live. Rewards are accrual-based (random-sampling proofs that compound into positions), so this is harness-seeded (a published KA + computed proofs over a few short epochs), not a static balance.
Migration / transitional — accounts awaiting V8→V10 migration and positions left mid-unstake / mid-claim.
General audit rewards
A 100,000 TRAC reward pool prices severity for findings in any V10 contract, on top of the 200,000 TRAC honeypot captured on the value-handling contracts (Track 1).
Critical
Minting an unbacked / over-stated conviction NFT; decoupling an NFT from its stake; minting outside the staking flow; Hub-registry takeover; bypassing locks; permanent fund freeze
20,000–40,000 + capture up to the live-vault cap (~60,000)
High
Conditional / partial loss; access-control or mint-authorization bypass without immediate theft; temporary freeze; breaking a contract's functionality (e.g. minting Knowledge Assets) in an impactful way
10,000–15,000
Medium
Bounded impact — reward / accounting drift, incorrect settlement, value leakage without large-scale theft
2,000–5,000
Low
Minor impact under narrow preconditions
up to 1,000 (discretionary)
Informational
No economic-loss path
recognition + credit
Minimum bar. Severity = economic impact × breaking intended system behavior; no-impact findings are credited but unpaid. All reported bugs require a working PoC: on the live honeypot for Track 1 (which additionally stacks the capture bonus), or against the pinned RC / a forked deployment for Track 2. These gate the launch.
Participate
Open to anyone — independent researchers, audit firms, AI-augmented teams. No invitation or allowlist; attack the public pre-mainnet honeypots and submit what you find.
Submit: GitHub Private Vulnerability Reporting — https://github.com/OriginTrail/dkg/security/advisories/new (preferred), or email [email protected].
Triage: acknowledged within 48 hours; severity assessed within 5 business days.
Payout: in TRAC after validation, subject to sanctions screening.
Disclosure: coordinated — no public disclosure before a fix ships (hard requirement for bounty reward); credit on opt-in.
Safe harbor: good-faith research within these rules will not be met with legal action. Full T&C aligned with the project's Apache 2.0 license.
Codebase
Code under audit: packages/evm-module @ 36d9daeb
Commit 36d9daebee47ea0886a13e0d3b587f9ba512dc45 (OriginTrail/dkg main, 2026-06-10) — the frozen RC the honeypot is deployed from.
Pre mainnet deployment Hub contract address on Base Mainnet: 0x26146f51e31a95c075228a34cfc696f09e4c36c3
Token honeypot contract address: 0x27ff0e72552d7df824f0b561442f3a91a8f9e47e
Path to mainnet
DKG V10 reaches mainnet in four phases. Phase 1 — the Frontier-AI Resilience Gate (this bounty) — is the pass/fail checkpoint: what survives ships, what breaks gets fixed first.

0
Final-RC freeze & pre-mainnet deployment
✅ Completed
Exact mainnet bytecode (@origintrail-official/dkg-evm-module 10.0.0-rc.17) live on Base mainnet as an isolated, capped honeypot
1
Frontier-AI Resilience Gate — Track 1 honeypot bounty
June 10 → June 17, 2026 (1 week)
Honeypot survives; all Critical / High findings patch-verified
2
DKG V10 Mainnet Launch
Week of June 17, 2026
Bounty-hardened, feature-complete V10 goes live
3
Continuous general audit — Track 2
Ongoing, post-launch
Severity-priced findings across every V10 contract
Last updated
Was this helpful?