Null Knowledge Assets (NKAs)
Null Knowledge Assets (NKAs) are the foundational primitive of NullGraph. Each NKA is a permanent, on-chain record of a negative scientific result stored as a Solana Program Derived Address (PDA).95% of null results never get published. NKAs solve publication bias by making negative results permanent, discoverable, and economically valuable.
What is an NKA?
An NKA is a structured data account containing:- Hypothesis — the original hypothesis tested
- Methodology — experimental methodology summary
- Expected vs. Actual Outcome — what was expected and what actually happened
- Statistical Data — p-value and sample size
- Data Hash — SHA-256 fingerprint of the underlying dataset
- Specimen ID — unique sequential identifier (e.g.,
NKA-0042) - Researcher — wallet address of the submitter
- Status — verification state (Pending, Verified, Disputed)
Account Structure
Each NKA is stored in aNullResult account on Solana:
All NKA accounts are program-owned PDAs derived from:
Specimen Identifiers
Each NKA receives a unique sequential identifier from the globalProtocolState counter:
- First submission:
NKA-0001 - Second submission:
NKA-0002 - And so on…
Data Hashing & Integrity
NKAs use SHA-256 cryptographic hashing to link on-chain metadata to off-chain datasets without storing the raw data on-chain.How it works
- Researcher uploads data file through the frontend (CSV, Excel, JSON, etc.)
- Client-side hashing via Web Crypto API computes SHA-256 digest
- Hash stored on-chain in the
data_hashfield (32 bytes) - File stays off-chain (IPFS, Arweave, or researcher’s own storage)
Verification Flow
Original Submission
Researcher uploads
experiment.csv → SHA-256: a3c8f...91b2Later Verification
Anyone can download the file and verify:
sha256(experiment.csv) == a3c8f...91b2The data hash provides a tamper-proof link between the on-chain record and the underlying dataset. If even one byte changes, the hash will not match.
Metadata Structure
All text fields use fixed-size byte arrays with zero-padding:Encoding Example
Decoding Example
Statistical Fields
P-Value (Fixed-Point)
Stored as a 4-byte unsigned integer using fixed-point representation:Sample Size
Stored as a 4-byte unsigned integer (supports up to 4,294,967,295 samples):Status Field
NKAs have three possible states:The status field is designed for future decentralized verification networks. Currently all NKAs start in Pending state.
Submission Flow
1
Complete Guided Form
Four-step form collects hypothesis, methodology, outcomes, and data file
2
Client-Side Hashing
Browser computes SHA-256 hash of data file (never uploads raw data)
3
Transaction Build
Frontend encodes all fields into fixed-size byte arrays
4
Wallet Signature
User signs transaction in Phantom wallet
5
On-Chain Execution
Program creates PDA, increments counter, emits
NullResultSubmitted event6
Instant Discovery
NKA appears on Dashboard with specimen ID (e.g., NKA-0042)
Code Example: Submit NKA
Event Emission
Every NKA submission emits an on-chain event:Storage Cost
Each NKA account requires rent-exempt storage:Browse & Query
Fetch all NKAs from the program:Security Model
Ownership & Permissions
- Only the researcher’s wallet can create NKAs under their identity
- PDA seeds include
researcher.key()to prevent impersonation - All accounts are program-owned PDAs (cannot be modified after creation)
- Immutability ensures permanent record integrity
Next Steps
Bounty Marketplace
Learn how to monetize your NKAs through bounties
Protocol Fees
Understand the 2.5% fee model and treasury distribution