AVM status and limitations
The exact status of every AVM layer, the threat model, and the evidence that would be required to change any of it.
Experimental or beta Verified 2026-09-26
Behavior exists in beta or unreleased code. Do not build production dependencies on it.
- Page ID
-
protocol/avm/status-and-limitations - Normative authority
- Atomicals reference implementation
- Networks
- testnet
- Documentation version
- 2026.08
- Activation boundary
- Bitcoin Testnet4 height 27000
- Audience
- everyone, developer, operator
- Owner
- bitcoin-universe-docs
- Sources
-
- Atomicals Virtual Machine interpreter
at
c185e6216a3e - Universe ARC-20 index and Marketplace v1 authority
at
670030e50071private repository AVM RPCs and readiness report - Bitcoin Inscribe
at
unversionedprivate repository AVM Studio and the /avm/ API
- Atomicals Virtual Machine interpreter
at
- Known limitations
-
- AVM contract transactions are being validated on Bitcoin Testnet4 only. Nothing here is a mainnet claim.
- Mainnet AVM writes are not enabled in production.
- Signet cannot carry AVM with the pinned indexer, because its Signet network inherits the testnet3 activation heights.
- The indexer readiness report attests the interpreter, the indexer revision, and a canary state hash. It is not a published conformance statement.
このコンテンツはまだ日本語訳がありません。
Status, layer by layer
Section titled “Status, layer by layer”| Layer | Status | Evidence |
|---|---|---|
| Whitepaper concepts | Proposed | A design document exists |
| Beta interpreter | Experimental | Source at a pinned revision with its own test annotations |
| Opcode set | Experimental | Generated from the pinned source. See opcodes |
| Universe indexer | Experimental | Six AVM RPCs, listed below |
| Universe integration | Experimental | Inscribe AVM Studio and the /avm/* API |
| Universe attestation | Readiness report | No conformance statement |
| Supported networks | Testnet4 only | From height 27000. No Signet. No mainnet writes |
Indexer
Section titled “Indexer”RPCs, each prefixed blockchain.atomicals.avm.:
capabilitiesstatusget_stateget_state_historyget_state_hashget_execution
The readiness report shows activation, the exact tip, schema 2, the attested native interpreter, the attested indexer revision, and a canary state hash.
An inherited guard in create_or_delete_atomical dropped every PROTOCOL (def) and CONTRACT
(new) create, so no AVM protocol or contract was indexed. The fix admits both after activation.
It is in review and not yet released.
Threat model for anyone considering it
Section titled “Threat model for anyone considering it”Untrusted contract code. A contract script is attacker supplied. Re-enabled opcodes such as concatenation, multiplication, and shifts, combined with arbitrarily large numbers, make unbounded memory and time growth reachable unless the host bounds them.
Unbounded numbers. Arbitrary precision arithmetic means a small script can request very large allocations.
Unbounded state. State storage opcodes let a contract write data. Without a host-enforced limit, storage grows without bound.
Determinism. Every independent evaluator must reach the same result. Any dependence on host memory layout, iteration order, or locale breaks verification.
State substitution. A caller supplies state. Without a state hash bound to a revision, a dishonest caller can supply state that never resulted from honest execution.
Withdrawal correctness. Opcodes mark outputs for withdrawal. A host that applies those marks without independent validation is trusting the contract it just ran.
Resource controls a host would need
Section titled “Resource controls a host would need”- A hard limit on execution steps.
- A hard limit on memory, including numeric magnitude.
- A hard limit on state size per contract and per call.
- A hard limit on the number of token table entries.
- A wall clock timeout independent of the step limit.
- Rejection rather than truncation when any limit is hit.
- Deterministic behavior at every limit, so all evaluators agree on the failure.
What would have to exist before a network is supported
Section titled “What would have to exist before a network is supported”- A pinned interpreter revision deployed on a named network.
- Activation conditions, if any.
- Deterministic conformance vectors executed against that exact revision in CI.
- A published statement of what those vectors prove and what they do not.
- A Universe service revision that exposes it, or an explicit statement that none does.
- A resource limit policy, published.
Testnet4 has items 1, 2, and 5 and is still in validation. Mainnet has none in production. A network is supported only when all six exist.