From e59c246604a3cb7f4f6d188f88d1318ffcb5b03e Mon Sep 17 00:00:00 2001 From: Manfred Touron <94029+moul@users.noreply.github.com> Date: Wed, 17 Dec 2025 17:20:40 +0100 Subject: [PATCH 1/3] doc(litepaper): intro to gno language --- LITEPAPER.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/LITEPAPER.md b/LITEPAPER.md index 829783a..f33a64b 100644 --- a/LITEPAPER.md +++ b/LITEPAPER.md @@ -9,7 +9,25 @@ TODO: Motivation for Gno, limitations of existing blockchain platforms, and high ## Gno ### The Gno Language -TODO: Describe Gno as a Go-compatible language, supported features, determinism constraints, and why Go is the chosen abstraction. + +Gno is approximately 99% compatible with Go 1.17. Developers write standard Go +code with minimal modifications. The language enforces determinism through +careful restrictions on non-deterministic operations. + +Determinism constraints: + +- `time.Now()` returns block time, not system time +- No goroutines, channels, or concurrency primitives +- No OS, network, or filesystem access +- No reflection or unsafe operations +- TODO: continue this list + +All standard Go types are supported: bool, int, uint, float32, float64, string, +arrays, slices, maps, structs, pointers, and functions. + +TODO: Introduced keywords (address, etc). +TODO: chain/* stdlibs. +TODO: why Go is the chosen abstraction. TODO: Document security implications of language-level constraints. ### The Gno Virtual Machine From ba28de9605e91c210d623247528d9c52ad6ae563 Mon Sep 17 00:00:00 2001 From: Manfred Touron <94029+moul@users.noreply.github.com> Date: Wed, 17 Dec 2025 17:22:37 +0100 Subject: [PATCH 2/3] Document GnoVM execution model and AST usage Added details about the Gno Virtual Machine's execution model and its advantages over traditional VMs. --- LITEPAPER.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/LITEPAPER.md b/LITEPAPER.md index f33a64b..8493ea4 100644 --- a/LITEPAPER.md +++ b/LITEPAPER.md @@ -31,6 +31,21 @@ TODO: why Go is the chosen abstraction. TODO: Document security implications of language-level constraints. ### The Gno Virtual Machine + +Unlike traditional VMs that execute bytecode, GnoVM interprets the Abstract +Syntax Tree (AST) directly. Source code is parsed and stored on-chain as AST +nodes, making the execution model transparent and auditable. + +When code is deployed: + +1. Source is parsed into an AST +2. AST is type-checked and validated +3. AST nodes are stored on-chain (not compiled bytecode) +4. Execution walks the AST directly + +This approach eliminates the compilation step that obscures intent in other +platforms. What you read is what executes. + TODO: Explain how GnoVM executes Gno code, its interpreter model, and how it differs from bytecode-based VMs. TODO: Describe how determinism, isolation, and safety are enforced by the VM. From 5eac93136835e161f2fec464e544e15af1ddb37e Mon Sep 17 00:00:00 2001 From: Manfred Touron <94029+moul@users.noreply.github.com> Date: Wed, 17 Dec 2025 17:25:58 +0100 Subject: [PATCH 3/3] Document global variable persistence in GnoVM Added section on global variable persistence and automatic state tracking in GnoVM. --- LITEPAPER.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/LITEPAPER.md b/LITEPAPER.md index 8493ea4..2b58e3b 100644 --- a/LITEPAPER.md +++ b/LITEPAPER.md @@ -54,6 +54,26 @@ TODO: Describe how transactions are executed, lifecycle of execution, and runtim TODO: Clarify how failures, reverts, and safety boundaries are handled. ### State and Persistence + +Global variables are automatically persistent: + +```go +package counter + +var total int + +func Add(n int) { + total += n +} +``` + +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: Explain how state is represented, how persistent objects are tracked automatically, and how changes are committed. TODO: Describe persistence guarantees and security implications of automatic state tracking.