-
Notifications
You must be signed in to change notification settings - Fork 0
(WIP) chore: initial whitepaper structure #55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
de74ea5
wip: initial structure
dongwon8247 c3b515d
fix
dongwon8247 6e89133
chore: 80cols
moul 5157094
wip
moul 0b8a70c
wip: markdown todos
moul eae6517
chore: fix footnote links
moul c9ca125
Update WHITEPAPER.md
dongwon8247 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,266 @@ | ||
| # Gno: A Deterministic Multi-Realm Computing Platform | ||
|
|
||
| TODO: Add authors | ||
|
|
||
| Draft v0.1, December 2025 | ||
|
|
||
| The current spec is on [github.com/gnolang/gno](https://github.com/gnolang/gno) | ||
|
|
||
| ## Abstract | ||
|
|
||
| > At first, there was Bitcoin, out of entropy soup of the greater All. | ||
| > Then, there was Ethereum, which was created in the likeness of Bitcoin, | ||
| > but made Turing complete. | ||
| > Among these were Tendermint and Cosmos to engineer robust PoS and IBC. | ||
| > Then came Gno upon Cosmos and there spring forth Gnoland, | ||
| > simulated by the Gnomes of the Greater Resistance. | ||
|
|
||
| We stand at an inflection point in the evolution of decentralized systems. The | ||
| infrastructure that governs our digital lives, social networks, financial | ||
| systems, public discourse, and collective knowledge, remains captured by | ||
| centralized authorities that decide what we see, what we say, and what we own. | ||
| Blockchains promised liberation, yet their programming models remain opaque, | ||
| their governance plutocratic, and their developer experience hostile. | ||
|
|
||
| Gno.land is the missing piece: a platform for timeless code that stores truth | ||
| in plain sight. | ||
|
|
||
| Gno, the deterministic, Go-compatible programming environment powering the | ||
| Gno.land platform, provides a model where smart contracts exist as | ||
| human-readable source code: permanently on-chain, directly auditable, and | ||
| inherently forkable. Gno.land then builds on this foundation by introducing | ||
| governance driven not by token accumulation but by demonstrable contribution. | ||
| Together, they form the basis of the Logoverse: a persistent, composable, | ||
| censorship-resistant substrate for decentralized knowledge and coordination. | ||
|
|
||
| ### Technical Summary | ||
|
|
||
| Problem: Current smart contract platforms exhibit: (1) bytecode opacity | ||
| preventing practical auditability, (2) manual state serialization causing | ||
| developer friction and storage-related vulnerabilities, (3) stake-weighted | ||
| governance conflating capital ownership with technical competence, and | ||
| (4) domain-specific languages fragmenting the developer ecosystem. | ||
|
|
||
| Solution: We introduce Gno, a deterministic Go-compatible language executed | ||
| by GnoVM, an AST-based interpreter providing automatic object persistence, | ||
| capability-based realm isolation, and source-level transparency. Governance | ||
| authority derives from Proof of Contribution (PoC), a Sybil-resistant | ||
| reputation mechanism assigning voting power based on verified contributions | ||
| rather than token holdings. | ||
|
|
||
| Result: Gno.land achieves: (1) source-level transparency with direct | ||
| auditability, (2) automatic state persistence eliminating serialization | ||
| overhead, (3) contribution-weighted governance resistant to plutocratic | ||
| capture, and (4) immediate developer accessibility for Go's established | ||
| developer base. | ||
|
|
||
| # 1. Introduction | ||
|
|
||
| ## 1.1 Background | ||
|
|
||
| Bitcoin demonstrated decentralized value transfer without intermediaries[^1]. | ||
| Ethereum extended this to general computation through smart contracts[^2]. | ||
| Tendermint and Cosmos established practical Byzantine fault-tolerant consensus | ||
| and inter-blockchain communication[^3][^4]. | ||
|
|
||
| Despite these advances, structural limitations persist: | ||
|
|
||
| - Opacity: Deployed contracts exist as bytecode, requiring specialized tools | ||
| to interpret | ||
| - Complexity: Developers must learn domain-specific languages and manage state | ||
| serialization manually | ||
| - Plutocracy: Governance power correlates with token holdings rather than | ||
| expertise | ||
| - Fragmentation: Each ecosystem demands distinct languages, tooling, and | ||
| mental models | ||
|
|
||
| ## 1.2 Contributions | ||
|
|
||
| This whitepaper presents: | ||
|
|
||
| 1. Gno Language (S4): Deterministic Go variant (~99% compatible) with | ||
| source-level on-chain storage | ||
| 2. GnoVM (S5): AST-based interpreter with automatic persistent object memory | ||
| 3. Realm Model (S6): Capability-based isolation with explicit cross-realm | ||
| semantics | ||
| 4. Proof of Contribution (S9): Reputation-based consensus mechanism separating | ||
| voting power from token ownership | ||
| 5. Tendermint2 (S10): Minimal consensus engine where implementation serves as | ||
| specification | ||
|
|
||
| # 2. System Model | ||
|
|
||
| TODO: | ||
|
|
||
| - Formal Foundations | ||
| - 4 Core Definitions: Realm tuple, Persistent Object Memory graph, | ||
| Deterministic Execution, Cross-Realm Call semantics | ||
|
|
||
| # 3. Comparison with Existing Platforms | ||
|
|
||
| TODO: | ||
|
|
||
| - Why Gno Wins | ||
| - Bytecode problem + VM Comparison Table (EVM/WASM/MoveVM vs GnoVM) | ||
| - Solidity vs Gno code examples, e.g., State management | ||
| - Add more | ||
|
|
||
| ## 3.1 Source Transparency | ||
|
|
||
| Gno stores source code directly: | ||
|
|
||
| ```go | ||
| package token | ||
|
|
||
| var balances = map[address]int64 | ||
|
|
||
| func Transfer(cur realm, to address, amount int64) { | ||
| caller := runtime.PreviousRealm().Address() | ||
| balances[caller] -= amount | ||
| balances[to] += amount | ||
| } | ||
|
|
||
| Auditing requires only the ability to read Go. | ||
|
|
||
| ## 3.2 Virtual Machine Comparison | ||
|
|
||
| | Feature | EVM | WASM | MoveVM | GnoVM | | ||
| |---------------|------------|------------|------------|----------------| | ||
| | On-chain | Bytecode | Bytecode | Bytecode | Source (AST) | | ||
| | Auditability | Decompiler | Decompiler | Decompiler | Direct | | ||
| | State model | Manual | Manual | Linear | Auto-persistent| | ||
| | Safety model | Manual | Sandbox | Resources | Realm isolation| | ||
| | Determinism | Partial | Partial | Strong | Strong | | ||
| | Language | Solidity | Rust | Move | Go | | ||
|
|
||
| # 4. Gno Language | ||
|
|
||
| TODO: | ||
|
|
||
| - Language Specification | ||
| - ~99% Go compatible + Deterministic constraints + std package | ||
| - Render convention | ||
| - Interrealm specification | ||
|
|
||
| # 5. GnoVM Architecture | ||
|
|
||
| TODO: | ||
|
|
||
| - VM Architecture | ||
| - AST-based interpreter (not bytecode) | ||
| - Persistent Object Memory (automatic state) | ||
| - Execution lifecycle | ||
|
|
||
| # 6. Realm Execution Model | ||
|
|
||
| TODO: | ||
|
|
||
| - Execution Semantics | ||
| - OS Analogy Table (Process=Realm, Kernel=GnoVM) | ||
| - Package hierarchy (/p/, /r/, /e/) | ||
| - Isolation Theorem | ||
|
|
||
| # 7. State Commitment | ||
|
|
||
| In most smart contract platforms, developers manually serialize and deserialize | ||
| state using explicit storage slots or key-value mappings. Gno eliminates this | ||
| friction: global variables are automatically persistent. | ||
|
|
||
| ```go | ||
| package counter | ||
|
|
||
| var total int | ||
|
|
||
| func Add(n int) { | ||
| total += n | ||
| } | ||
|
|
||
| func Get() int { | ||
| return total | ||
| } | ||
| ``` | ||
|
|
||
| When `Add(5)` is called, `total` changes from 0 to 5. GnoVM detects this change | ||
| and commits it to the Merkle tree automatically. No `storage.set()`, no manual | ||
| encoding, no boilerplate. | ||
|
|
||
| This works for any Go type: structs, slices, maps, pointers. The entire object | ||
| graph rooted at package-level variables is tracked and persisted. | ||
|
|
||
| TODO: | ||
|
|
||
| - Merkle Tree structure details | ||
| - Amino encoding (deterministic serialization) | ||
| - Gas costs for state changes | ||
|
|
||
| # 8. Economics | ||
|
|
||
| TODO: | ||
|
|
||
| - Token & Incentive Design | ||
| - GNOT Token + Gas model | ||
| - Storage Deposit (lock/unlock) | ||
| - Fee distribution: Validators + Contributors | ||
| - ref: https://gist.github.com/jaekwon/4d1c81ee3b82a0fc29f67d50e7f8664c | ||
|
|
||
| # 9. Proof of Contribution | ||
|
|
||
| TODO: | ||
|
|
||
| - Governance Innovation | ||
| - PoS limitations (capital != competence) | ||
| - Contribution based + Tier structure + DAOs | ||
| - Maybe separate section for GovDAO? | ||
| - ref: https://gist.github.com/jaekwon/918ad325c4c8f7fb5d6e022e33cb7eb3 | ||
|
|
||
| # 10. Tendermint2 | ||
|
|
||
| TODO: | ||
|
|
||
| - Consensus Layer | ||
| - Implementation = Specification + ~15K LOC | ||
| - BFT rounds (Propose -> Prevote -> Precommit) | ||
| - PoC integration | ||
| - Differences from the original Tendermint? | ||
|
|
||
| # 11. Safety and Liveness | ||
|
|
||
| TODO: | ||
|
|
||
| - Security Proofs | ||
| - Assumptions: network eventually delivers, <1/3 malicious, crypto works | ||
| - Theorems: all nodes compute same result, contracts can't hack each other, | ||
| no forks, chain never halts, no censorship | ||
|
|
||
| # 12. The Logoverse | ||
|
|
||
| TODO: | ||
|
|
||
| - Long-term Vision | ||
| - Permanence + Composability + Transparency | ||
| - Core applications (boards, users, govdao, gnodev, etc.) | ||
| - ref: https://gno.land/r/gnoland/blog:p/gnoland-the-first-logoverse | ||
|
|
||
| # 13. Conclusion | ||
|
|
||
| TODO: | ||
|
|
||
| - Summary & Recap | ||
| - Go-compatible + AST transparency + auto-persistence | ||
| - PoC governance + minimal consensus | ||
|
|
||
| # Appendix | ||
|
|
||
| TODO: Add | ||
|
|
||
| # References | ||
|
|
||
| TODO: Add more | ||
|
|
||
| [^1]: S. Nakamoto, "Bitcoin: A peer-to-peer electronic cash system," 2008. | ||
| [^2]: V. Buterin, "Ethereum: A next-generation smart contract and decentralized | ||
| application platform," 2014. | ||
| [^3]: J. Kwon, "Tendermint: Consensus without mining," 2014. | ||
| [^4]: J. Kwon, E. Buchman, "Cosmos: A network of distributed ledgers," 2016. | ||
|
|
||
| ## Changelog | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why partial?