Superseded by #40: v2.0.0 integration #39

Merged
ignotusnemo merged 61 commits from v2 into main 2026-09-25 20:31:29 +00:00
Owner

Superseded by PR #40. This initial merge was replaced by the requested squash merge. The release is represented by commit 1d65d95da7f1e6d91e4ad940c845772d2be062ac on main; the original merge is outside its history.

Summary

Mandatory protocol upgrade: v2 activates at mainnet block 210,537. Nodes, GUI wallets, block-producing pool nodes and exchange infrastructure must update before that height. Updated software switches automatically; v1.1 software cannot validate v2 blocks.

This PR promotes the v2 release branch into main. It adds proof-native smart contracts, replaces the active block classes, moves to a 30-second target and introduces a transparent height-based issuance schedule. The existing genesis, live balances and wallet secrets are preserved.

The planning estimate for activation is October 10, 2026, 11:59 PM PDT (October 11, 06:59 UTC). The activation rule is block height.

Protocol impact

1. Proof-native smart contracts

From live value to live rights. A live output can commit to a program, authorities and persistent counters. Contract execution and authorization are checked inside the shared recursive block proof. Nodes can verify the current result after old transaction bodies have been pruned.

  • Add a shared integer core with up to 16 instructions, two persistent u64 counters, two scratch registers, checked arithmetic, conditions and access to inclusion height. Custom applications use the same core and matrices.
  • Add six templates: payment with refund, timelocked vault, allowance wallet, period budget, recurring payment and gradual unlock, plus custom programs. Scheduled policies execute through authorized calls.
  • Bind calls to their exact funded instance, authority, inclusion height, program and successor state. Enforce fee, payout, reserve, recovery and closing rules during admission and proof verification.
  • Add fourteen contract RPC methods, CLI workflows and F7 Contracts in the GUI: Create, My Contracts and Open File. Settings moves to F8.
  • Allow terms to be prepared and shared before activation. GUI actions and node RPC checks permit funding and calls only when the next candidate block uses v2. Saving terms without a deposit creates no network transaction.
  • Merge saved interactions from both parties and imported receipts without replacing local records or names. Preserve reviewed calls across submission failures and discover locally known successor states after calls and reorgs.

Participants retain public terms and receipts for application recovery. A shared contract file carries terms and at most one matching receipt; additional receipts can be imported independently. A missed interaction whose body has already been pruned can be recovered from a participant's retained receipt.

2. Block capacity and consensus

Change the target interval from 20 to 30 seconds. ASERT uses a six-block reference epoch and a 180-second half-life, accounting for both intervals across activation. The historical v1 → v1.1 rules remain unchanged.

V2 class Matrix User pages Live inputs Contract calls Production
Small m23 63 504 63 Default
Large m24 206 504 63 Server opt-in

The limits apply together. A contract call consumes one page and one input; ordinary transactions can consume several pages and inputs. Small holds up to 63 one-page payments or 63 calls. Large holds up to 206 one-page payments, or 63 calls plus 143 one-page payments, within the shared input budget. The primary coinbase has a separate page; an additional mandatory system page consumes one of the listed user pages.

Large production requires --v2-large-blocks on the producing server. The flag permits fee-based selection; every node verifies both classes. Both classes support the same contract programs and call limit.

Retain the 144-block transaction epoch, 18-block finality boundary, 17-block maximum reorg and 42/36-block body/undo retention. Their target-time equivalents follow the new interval. Wallet preflight, mempool admission and block construction enforce the authenticated class budgets, including changes across activation and rollback.

3. Tokenomics

Replace reward reductions tied to State expansion with the exact gross subsidy schedule:

16 → 11.30 → 8 → 5.65 → 4 → 2.83 → 2 → 1.41 → 1 NOID per block.

The first tier starts at H210537. Each subsequent reduction occurs after 1,051,200 blocks, nominally one year at the 30-second target. After eight reductions, the permanent tail is 1 NOID per block. State expansion does not advance or reset this schedule.

Early mainnet operation showed that live State occupancy does not provide a predictable monetary clock: payments, consolidation and contract updates can reuse slots while activity continues. Height gives issuance a visible horizon. State occupancy continues to price net-new live slots; the growth fee is burned, and consolidation frees slots and avoids that charge.

Recalculate existing height-based allocation timing for 30-second blocks while preserving the percentage split and the original three-year horizon from genesis.

Proof transition, network and storage

  • Bind the first v2 proof to the exact last pre-v2 block through an authenticated fork origin. Synchronization, restarts and reorgs retain or replace this evidence with the selected chain.
  • Freeze and authenticate both new recursive matrices against the mainnet schedule. Build inputs require explicit matrix packs and pinned retirement keys; isolated test schedules have separate bank identities.
  • Ship the transition profile with both legacy and v2 matrices. Support later builds that omit legacy matrix rows and verify the old accumulated obligations through an authenticated retirement certificate and pinned preprocessing keys. The mainnet certificate depends on the actual fork predecessor.
  • Preserve the 1,100,000-byte terminal transport cap. The new class bounds are 1,014,132 bytes for Small and 1,081,396 bytes for Large. Fork-origin evidence uses a separate bounded transport.
  • Reuse matrix-column weights, reduce temporary folding buffers and cache exact previously verified carried matrix claims, including across Small blocks following Large.
  • Store shared recursive proof bytes once across local contract receipts; portable exports remain self-contained. Retain contract terms, reviewed successors and imported evidence across restart and reorganization.
  • Update mining RPC capacity reporting and template timing. Add configurable external-worker RPC timeouts and finite mining runs through --blocks.
  • Extend source-linked soundness accounting to the final v2 banks, historical ancestry and both legacy-retirement arguments.

Documentation and release metadata

Set all workspace packages to 2.0.0 and add mandatory release notes. Update the README and English, Russian and Chinese documentation with the v2 profile, the live-rights concept, contract core, six templates, API, CLI, GUI, receipts and network economics. Keep historical profiles in the archive and mark the activation height at the entry points. Bundle contract instructions with the native packages.

Verification

cargo fmt --all -- --check passes on the PR branch. Recorded qualification includes:

  • Unit and integration checks for contract authorization, integer arithmetic, deadlines, issuance boundaries, class budgets and activation/rollback.
  • Complete matrix construction, witness checks and authentication for both mainnet classes; full payment, contract and mixed blocks with the matching isolated schedule; rejection of malformed terminals and excess inputs.
  • Real-node transitions after both legacy classes, fork-boundary reorgs, successor rollback, stale-call rejection, restart and continued production.
  • Full Small and Large blocks, maximum inputs across State segments, and a continuing sequence of Small blocks after Large.
  • Cold synchronization, certificate recovery and contract production by a build without legacy matrices, followed by offline restart and receipt checks.
  • Two-wallet creation, sharing, interaction, offline recovery after body pruning, additive imports, duplicate imports and receipt tampering checks. The recorded wallet checks include 81 GUI tests, 102 node-wallet tests and two RPC object tests.
  • Local package extraction, checksums, executable versions, embedded proof material, node startup, GUI self-check and contract interface smoke checks.

Commands, source identities, artifact hashes and results are retained in the final-bank qualification report and the two-wallet and package report.

**Superseded by [PR #40](https://git.parano1d.org/ignotusnemo/parano1d/pulls/40).** This initial merge was replaced by the requested squash merge. The release is represented by commit `1d65d95da7f1e6d91e4ad940c845772d2be062ac` on `main`; the original merge is outside its history. ## Summary **Mandatory protocol upgrade: v2 activates at mainnet block 210,537.** Nodes, GUI wallets, block-producing pool nodes and exchange infrastructure must update before that height. Updated software switches automatically; v1.1 software cannot validate v2 blocks. This PR promotes the v2 release branch into main. It adds proof-native smart contracts, replaces the active block classes, moves to a 30-second target and introduces a transparent height-based issuance schedule. The existing genesis, live balances and wallet secrets are preserved. The planning estimate for activation is October 10, 2026, 11:59 PM PDT (October 11, 06:59 UTC). The activation rule is block height. ## Protocol impact ### 1. Proof-native smart contracts **From live value to live rights.** A live output can commit to a program, authorities and persistent counters. Contract execution and authorization are checked inside the shared recursive block proof. Nodes can verify the current result after old transaction bodies have been pruned. - Add a shared integer core with up to 16 instructions, two persistent `u64` counters, two scratch registers, checked arithmetic, conditions and access to inclusion height. Custom applications use the same core and matrices. - Add six templates: payment with refund, timelocked vault, allowance wallet, period budget, recurring payment and gradual unlock, plus custom programs. Scheduled policies execute through authorized calls. - Bind calls to their exact funded instance, authority, inclusion height, program and successor state. Enforce fee, payout, reserve, recovery and closing rules during admission and proof verification. - Add fourteen contract RPC methods, CLI workflows and **F7 Contracts** in the GUI: **Create**, **My Contracts** and **Open File**. Settings moves to **F8**. - Allow terms to be prepared and shared before activation. GUI actions and node RPC checks permit funding and calls only when the next candidate block uses v2. Saving terms without a deposit creates no network transaction. - Merge saved interactions from both parties and imported receipts without replacing local records or names. Preserve reviewed calls across submission failures and discover locally known successor states after calls and reorgs. Participants retain public terms and receipts for application recovery. A shared contract file carries terms and at most one matching receipt; additional receipts can be imported independently. A missed interaction whose body has already been pruned can be recovered from a participant's retained receipt. ### 2. Block capacity and consensus Change the target interval from **20 to 30 seconds**. ASERT uses a six-block reference epoch and a 180-second half-life, accounting for both intervals across activation. The historical v1 → v1.1 rules remain unchanged. | V2 class | Matrix | User pages | Live inputs | Contract calls | Production | | --- | --- | ---: | ---: | ---: | --- | | Small | m23 | 63 | 504 | 63 | Default | | Large | m24 | 206 | 504 | 63 | Server opt-in | The limits apply together. A contract call consumes one page and one input; ordinary transactions can consume several pages and inputs. Small holds up to 63 one-page payments or 63 calls. Large holds up to 206 one-page payments, or 63 calls plus 143 one-page payments, within the shared input budget. The primary coinbase has a separate page; an additional mandatory system page consumes one of the listed user pages. Large production requires `--v2-large-blocks` on the producing server. The flag permits fee-based selection; every node verifies both classes. Both classes support the same contract programs and call limit. Retain the 144-block transaction epoch, 18-block finality boundary, 17-block maximum reorg and 42/36-block body/undo retention. Their target-time equivalents follow the new interval. Wallet preflight, mempool admission and block construction enforce the authenticated class budgets, including changes across activation and rollback. ### 3. Tokenomics Replace reward reductions tied to State expansion with the exact gross subsidy schedule: **16 → 11.30 → 8 → 5.65 → 4 → 2.83 → 2 → 1.41 → 1 NOID per block.** The first tier starts at H210537. Each subsequent reduction occurs after **1,051,200 blocks**, nominally one year at the 30-second target. After eight reductions, the permanent tail is 1 NOID per block. State expansion does not advance or reset this schedule. Early mainnet operation showed that live State occupancy does not provide a predictable monetary clock: payments, consolidation and contract updates can reuse slots while activity continues. Height gives issuance a visible horizon. State occupancy continues to price net-new live slots; the growth fee is burned, and consolidation frees slots and avoids that charge. Recalculate existing height-based allocation timing for 30-second blocks while preserving the percentage split and the original three-year horizon from genesis. ### Proof transition, network and storage - Bind the first v2 proof to the exact last pre-v2 block through an authenticated fork origin. Synchronization, restarts and reorgs retain or replace this evidence with the selected chain. - Freeze and authenticate both new recursive matrices against the mainnet schedule. Build inputs require explicit matrix packs and pinned retirement keys; isolated test schedules have separate bank identities. - Ship the transition profile with both legacy and v2 matrices. Support later builds that omit legacy matrix rows and verify the old accumulated obligations through an authenticated retirement certificate and pinned preprocessing keys. The mainnet certificate depends on the actual fork predecessor. - Preserve the **1,100,000-byte terminal transport cap**. The new class bounds are 1,014,132 bytes for Small and 1,081,396 bytes for Large. Fork-origin evidence uses a separate bounded transport. - Reuse matrix-column weights, reduce temporary folding buffers and cache exact previously verified carried matrix claims, including across Small blocks following Large. - Store shared recursive proof bytes once across local contract receipts; portable exports remain self-contained. Retain contract terms, reviewed successors and imported evidence across restart and reorganization. - Update mining RPC capacity reporting and template timing. Add configurable external-worker RPC timeouts and finite mining runs through `--blocks`. - Extend source-linked soundness accounting to the final v2 banks, historical ancestry and both legacy-retirement arguments. ### Documentation and release metadata Set all workspace packages to **2.0.0** and add mandatory release notes. Update the README and English, Russian and Chinese documentation with the v2 profile, the live-rights concept, contract core, six templates, API, CLI, GUI, receipts and network economics. Keep historical profiles in the archive and mark the activation height at the entry points. Bundle contract instructions with the native packages. ## Verification `cargo fmt --all -- --check` passes on the PR branch. Recorded qualification includes: - Unit and integration checks for contract authorization, integer arithmetic, deadlines, issuance boundaries, class budgets and activation/rollback. - Complete matrix construction, witness checks and authentication for both mainnet classes; full payment, contract and mixed blocks with the matching isolated schedule; rejection of malformed terminals and excess inputs. - Real-node transitions after both legacy classes, fork-boundary reorgs, successor rollback, stale-call rejection, restart and continued production. - Full Small and Large blocks, maximum inputs across State segments, and a continuing sequence of Small blocks after Large. - Cold synchronization, certificate recovery and contract production by a build without legacy matrices, followed by offline restart and receipt checks. - Two-wallet creation, sharing, interaction, offline recovery after body pruning, additive imports, duplicate imports and receipt tampering checks. The recorded wallet checks include 81 GUI tests, 102 node-wallet tests and two RPC object tests. - Local package extraction, checksums, executable versions, embedded proof material, node startup, GUI self-check and contract interface smoke checks. Commands, source identities, artifact hashes and results are retained in the [final-bank qualification report](https://git.parano1d.org/ignotusnemo/parano1d/src/branch/v2/research/v2_feasibility/results/2026-09-25-common-input-budget/REPORT.md) and the [two-wallet and package report](https://git.parano1d.org/ignotusnemo/parano1d/src/branch/v2/research/v2_feasibility/results/2026-09-25-contract-wallet/REPORT.md).
Add a fixed sixteen-slot object-contract envelope to HistoryStep while preserving the existing Tx8x2 body, authorization capacity and Meta-A domain. Include B25 and B255 research fixtures, adversarial cases and explicit full/direct measurement modes.

This is a research prototype. It does not freeze an ABI, matrix pack, activation rule or soundness claim.
Document the measured routes to proof-native contracts, the selected bounded object model and the exact B25 and B255 feasibility results. Include the standalone experiment harness, raw measurements, adversarial cases and reproduction instructions.

The study is authored by Ignotus Nemo and remains explicitly separate from a production ABI, frozen terminal or updated soundness certificate.
Bind authorization overflow to exact capacity. Add complete recursive proof and constrained receiver measurements after both legacy classes.
Bind configurable call limits into proof bank recipes.
ignotusnemo changed title from v2.0.0: proof-native contracts, block capacity and scheduled issuance to Superseded by #40: v2.0.0 integration 2026-09-25 20:38:16 +00:00
Sign in to join this conversation.
No description provided.