Skip to content

Add acknacki namespace for Acki Nacki blockchain#182

Open
Futurizt wants to merge 2 commits intoChainAgnostic:mainfrom
Futurizt:acknacki-namespace
Open

Add acknacki namespace for Acki Nacki blockchain#182
Futurizt wants to merge 2 commits intoChainAgnostic:mainfrom
Futurizt:acknacki-namespace

Conversation

@Futurizt
Copy link
Copy Markdown

@Futurizt Futurizt commented Apr 6, 2026

Summary

Adds the acknacki namespace for the Acki Nacki blockchain — a probabilistic proof-of-stake consensus protocol optimized for fast finality with execution parallelization, running AVM (Advanced Virtual Machine) supporting TVM and WASM.

Peer-reviewed publication: ACNS 2024 (Springer)

Networks

CAIP-2 Network
acknacki:0 Mainnet
acknacki:1 Shellnet (testnet)

Files

  • acknacki/README.md — Namespace overview, rationale, governance, Springer reference
  • acknacki/caip2.md — Chain ID specification (global_id from block header)
  • acknacki/caip10.md — Account ID specification (DappID.AccountID, 512-bit composite address)

Key differentiators from existing namespaces

  • AVM: supports both TVM and WASM execution (not TVM-only)
  • DApp ID: unique addressing model — accounts identified by DappID.AccountID (not workchain:address)
  • Gasless internal transactions: contracts within same DApp ID share gas pool via DappConfig
  • Probabilistic PoS consensus: 2-step finality, subquadratic message complexity

References

Acki Nacki is a probabilistic proof-of-stake consensus protocol
optimized for fast finality with execution parallelization.
Runs AVM (Advanced Virtual Machine) supporting TVM and WASM.
Published at ACNS 2024 (Springer): doi:10.1007/978-3-031-61486-6_4

Namespace: acknacki
Reference: global_id from block header

Networks:
  acknacki:0 — Mainnet
  acknacki:1 — Shellnet (testnet)

Includes:
  README.md  — namespace overview with Springer reference
  caip2.md   — chain ID spec (global_id)
  caip10.md  — account ID spec (DappID.AccountID)
Comment thread acknacki/README.md Outdated
throughputs via execution parallelization. It achieves higher Byzantine
fault tolerance than Nakamoto, BFT (including Hotstuff and AptosBFT),
Solana, and other modern consensus protocols. The protocol reaches
consensus in two communication steps and has a total number of messages
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"total number of messages" is a little vague, maybe clarify? total per what?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, ambiguous. Rephrased to "the total number of messages exchanged per consensus round is subquadratic in the number of nodes" — that's what the Springer paper analyzes (per-round communication complexity). Done in 40434a1.

Comment thread acknacki/README.md Outdated
consensus in two communication steps and has a total number of messages
that are subquadratic to the number of nodes.

Acki Nacki runs AVM (Advanced Virtual Machine) supporting both TVM and
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Acki Nacki runs AVM (Advanced Virtual Machine) supporting both TVM and
Acki Nacki runs AVM (Advanced Virtual Machine) supporting both Ton Virtual Machine (TVM) and

To contradistinguish from Tron VM, which uses the same acronym

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accepted, applied verbatim in 40434a1. Good distinction from Tron VM.

Comment thread acknacki/caip2.md

Acki Nacki is a layer-1 blockchain identified by a `global_id` integer stored
in every block header. Each network (mainnet, shellnet) has a unique
`global_id` assigned at genesis.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assigned by whom?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no assigning authority — Acki Nacki is permissionless and decentralized. global_id is fixed at genesis and remains constant for the lifetime of the network. The public mainnet (0) and shellnet (1) values are conventionally reserved; anyone bootstrapping a private network selects their own value at genesis. Clarified in the Semantics section in 40434a1.

Comment thread acknacki/caip2.md
Using `global_id` from the block header follows the same pattern as the `tvm`
namespace (which uses the identical field for Everscale and TON). This provides
a simple, deterministic, on-chain verifiable identifier that requires no
external registry.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens if a new chain is started that "reuses" a chainId already in use? Or if a malicious network starts returning a different chainId over time when queried by the above method? Good to explain this stuff (and link to further reading if "it's complicated") for first-timers, who are the target audience of this document.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a "Verification and Trust Model" subsection in 40434a1 covering both:

(a) protocol-level verification — global_id is embedded in every block header, so a client can cross-check the value against multiple Block Keepers rather than trusting a single GraphQL endpoint. Acki Nacki is permissionless, so no central registry can prevent two unrelated private networks from picking the same global_id; applications needing stronger guarantees should additionally fingerprint the chain (genesis block hash, well-known system contract addresses).

(b) for outside observers requiring cryptographic assurance of the chain history itself, Acki Nacki includes a network-history proof system based on zero-knowledge proofs that lets an external verifier validate the chain witness without trusting any single node. The proof system is currently under test and is planned for activation on mainnet to harden the witness for light clients and cross-chain verifiers.

Comment thread acknacki/caip10.md Outdated
forming a 512-bit composite address called `AccountRouting`.

The DApp ID groups contracts into a logical application. All contracts
within the same DApp ID share a gas pool (DappConfig) and can transact
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
within the same DApp ID share a gas pool (DappConfig) and can transact
within the same DApp ID share ONE (1) gas pool (defined in DappConfig) and can transact

(I'm just guessing here-- if I'm wrong, rephrase to be equally explicit but more accurate!)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct — applied verbatim in 40434a1. Each DApp ID has exactly one DappConfig contract holding the shared SHELL pool that internal calls draw from via gosh.mintshell().

Comment thread acknacki/caip10.md
### Syntax

The CAIP-10 account address is the concatenation of the lowercase
hex-encoded DApp ID and Account ID, separated by a period:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can tell from the examples below that hex-encoded DOESN'T use the 0x prefix common in other blockchains, but you might want to explicitly call that out here for the lazy EVM-familiar skimmer who doesn't check the examples confronted with this ambiguity!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added an explicit line in the Syntax section in 40434a1: "Hex encoding is lowercase and does not include the 0x prefix used in EVM-style addresses; both DApp ID and Account ID are exactly 64 hex characters with no separator."

Comment thread acknacki/caip10.md

## Introduction

Acki Nacki uses a two-part account addressing scheme. Each account is
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a little unclear on what an AccountID means by itself. An "Externally owned account", for example, like a metamask on EVM: does that work by itself? Can a P2P transfer with no smart contracts involved work from a bare accountID to a bare accountID, and if so, who pays the gas?

Regardless of whether all this is inherited from "vanilla" TVM, I would spell it out, because as-is it sounds like the only actors on Acki Nacki are what EVM calls "onchain accounts" (controlled/mediated via a deployed contract).

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch — this is a genuine source of confusion for EVM-familiar readers. Added an "Account Model" subsection to caip10.md in 40434a1 spelling out:

  • Acki Nacki uses an account-based model where every account is itself a smart contract; there are no EVM-style EOAs.
  • A private key is not an actor on its own — it can only sign external messages addressed to an already-deployed contract whose code chooses whether to accept the signature and execute. A "user wallet" is therefore a deployed contract (typically a multisig).
  • P2P value transfers always flow contract-to-contract:
    • Inside a DApp ID — gas is drawn from the shared DappConfig pool via gosh.mintshell() (gasless internal txs).
    • From outside (external message) — the receiving contract pays gas from its own balance. A bare AccountID with no deployed contract is uninitialized; incoming messages either bounce or, when accompanied by a stateInit, deploy the contract at that address.
    • Cross-DApp — native VMSHELL is zeroed at the protocol level; ECC tokens (e.g. SHELL) can cross.
  • A bare AccountID is meaningful only as a destination address — it cannot originate a transaction until a contract has been deployed at it.

Copy link
Copy Markdown
Collaborator

@bumblefudge bumblefudge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything other than this comment is a minor stylistic suggestion, but I'd say it's ready to merge if this one blocking comment is addressed.

- Account Model section in caip10.md: every account is a contract; no
  EOAs; explicit gas-payment rules per scope (intra-DApp gasless,
  external messages, uninitialized accounts).
- caip2.md: Verification and Trust Model section covering BK
  cross-check, fingerprinting recommendation, and the in-test ZKP
  network-history proof system planned for mainnet activation.
- Governance: clarify decentralized model — bitcoin-style updates,
  no DAO/foundation/governance body, GOSH as core protocol developer
  with clickable link.
- Apply suggestion blocks: "Ton Virtual Machine (TVM)" disambiguation,
  "ONE (1) gas pool (defined in DappConfig)" wording.
- Clarify "subquadratic messages per consensus round".
- Spell out hex encoding is lowercase with no `0x` prefix.
@Futurizt
Copy link
Copy Markdown
Author

Thanks for the thorough review! All seven inline comments addressed in 40434a1:

  • Blocking (caip10.md:18): added an "Account Model" subsection making explicit that every account is a contract (no EOAs) and spelling out gas-payment rules per scope.
  • Both suggestion blocks applied verbatim (TVM disambiguation, "ONE (1) gas pool" wording).
  • "subquadratic messages" clarified to "per consensus round".
  • caip2.md Semantics: dropped the "assigned by" framing — Acki Nacki is permissionless, no assigning authority; values are picked at genesis.
  • New caip2.md "Verification and Trust Model" subsection covers BK cross-check, fingerprinting recommendation, and the in-test ZKP network-history proof system planned for mainnet activation.
  • Hex-encoding convention spelled out (lowercase, no 0x prefix).
  • Also revised the README Governance section to accurately reflect the decentralized model (bitcoin-style updates by node owners; no DAO/foundation/governance body; GOSH as core protocol developer).

Ready for another pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants