History
Changelog
Two different histories matter here: the version history of this documentation, and the heights at which the protocol itself changed behaviour on chain. Both are below.
Documentation versions
1.0.0, 1 September 2026
Complete rebuild. The previous site was marketing copy with no protocol detail; this version documents the wire format and the indexer semantics against alkanes-rs 2.2.1-rc.4.
- New encoding page with the full five-layer byte layout and worked examples verified by round-tripping through a decoder.
- New specification with numbered normative rules, each traced to the implementing source file.
- New guide covering transfer, call, and deploy, with a support matrix limited to capability declared in this organisation's own code.
- New reference covering metashrew indexing, confirmation, reorg, mempool, fees, limits, and security.
- New test vectors, ten valid and nine invalid, including the four round-trip cases from the alkanes-rs protostone tests and one captured mainnet payload.
- New client-side protostone encoder and decoder.
- Client-side search, dark and light themes, and a 404 page.
Corrections made in this version
- Protostone virtual output index. The audit specification document in alkanes-rs states
that the first protostone occupies virtual output
Nfor a transaction withNoutputs. The code assignsN + 1 + i. This documentation follows the code. - Alkanes amounts are not fixed at eight decimals. Amounts are raw
u128base units on the wire, and both the Core protocol registry and the ecosystem capability snapshot record alkanes decimals as asset-defined. No fixed scale is documented here. - Protoburns are not active. Tags 83 and 95 parse, but the call that processes them is
compiled only under
cfg(test), with a source comment deferring activation. Earlier prose that described protoburn bridging as live behaviour is not accurate for the released indexer.
Before 1.0.0
The repository published a single promotional page describing Alkanes in general terms. It contained no wire format, no specification, no test vectors, and no tooling. Its accurate claims, that Alkanes brings WebAssembly contracts to Bitcoin through protorunes and that only a confirmed transaction changes on-chain state, are preserved in this version.
Protocol heights this documentation describes
Alkanes has no version number on chain. Behaviour changes at fixed heights instead, so an implementation must know which side of each height it is on.
| Height | Change |
|---|---|
| 880,000 | Alkanes genesis. Below this height the indexer processes the Runes layer only and performs no alkanes setup or execution. |
| 899,087 | Fuel change. Block fuel rises from 100,000,000 to 1,000,000,000, the per-transaction floor rises, and the per-byte storage cost rises from 8 to 40. |
| 908,888 | Genesis alkane upgrade. |
| 917,888 | Genesis alkane EOA upgrade. |
| 943,500 | Fuel enforcement becomes strict, and the edict spread behaviour is corrected so that OP_RETURN outputs are skipped before per-output amounts are computed rather than after. |
| 950,000 | V220 fork height. |
| 957,000 and 960,000 | fr-BTC contract fork heights. |
On regtest every one of these heights is 0, which is why a contract that
behaves correctly in the test harness still needs its mainnet activation height checked.
Implementation versions
| Component | Version |
|---|---|
| alkanes-rs workspace | 2.2.1-rc.4 |
@alkanes/ts-sdk | 0.1.6 |
| This documentation | 1.0.0 |