Skip to content

m1.1.2: portable release artifacts for the Camellia hardfork

Latest

Choose a tag to compare

@MetadiumRelease MetadiumRelease released this 13 Aug 05:27
2f50ace

Use this release instead of m1.1.1. The m1.1.1 artifacts were built against glibc 2.39 and require GLIBC_2.38, so they do not start on Ubuntu 20.04 or 22.04:

gmet: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found

The source is unchanged. m1.1.2 is the same code built so that it runs on every distribution in the deployment fleet.

Activation block 117,764,000 (authoritative)
Expected time around 2026-08-27 12:15 KST (approximate — height-based activation drifts with block time)
Version 1.1.2-stable
Minimum OS Ubuntu 20.04 or newer (glibc 2.31+)

All mainnet node operators must upgrade before the activation block. Nodes running older binaries will follow a diverging chain.

What changed since m1.1.1

Build only. params/config.go is untouched, so fork blocks and consensus rules are identical.

  • Release artifacts are built on Ubuntu 20.04 (focal), the oldest distribution in the fleet, instead of on whatever the release host happened to run. A binary built there runs on that release and every newer one; the reverse does not hold.
  • libstdc++ is linked statically, so the RocksDB artifact carries no GLIBCXX/CXXABI requirement at all. Development builds keep the shared library and are unaffected.
  • make release-check now refuses artifacts that reference a glibc newer than the fleet's oldest distribution, or that link libstdc++ dynamically. It runs automatically as part of make gmet-linux, so this class of defect fails the build rather than reaching a release.
  • VersionPatch 1 → 2, and the documentation that told operators to use the m1.1.1 asset now names m1.1.2.

Measured on the published artifacts:

artifact max GLIBC GLIBCXX / CXXABI
rocksdb GLIBC_2.30 none
leveldb GLIBC_2.17 none

What Camellia activates

Unchanged from m1.1.1 — Ethereum's Shanghai and Cancun EIPs in a single upgrade, running on Metadium testnet since block 86,449,000 (2026-05-20) with no incidents:

EIP Feature
EIP-3855 PUSH0 opcode
EIP-3860 Limit and meter initcode
EIP-1153 Transient storage (TSTORE/TLOAD)
EIP-4844 Blob transactions
EIP-5656 MCOPY
EIP-6780 SELFDESTRUCT only in same transaction
EIP-4788 Beacon block root in the EVM

Everything listed under "Also in this release" in the m1.1.1 notes is in this build as well — shutdown reliability, systemd units, 32-bit portability, the restored 256KB txpool ceiling, and the metclient.SendValue signature change.

Upgrade

The operator documentation for this release is the README at the release tag:
Upgrading from 0.10.x
is the full ten-item checklist the warnings below are drawn from, and
Node Configuration Reference
documents every .rc knob with its default, with a worked example for an
exchange or API full node. Both are pinned to the m1.1.2 tag, so they
describe this build rather than whatever master holds later.

⚠️ Rolling back is only possible to 0.10.2. Starting a node on m1.1.x updates its database files. A node upgraded from 0.10.2 can be returned to 0.10.2 — verified on a live mainnet node. A node upgraded from 0.10.1 or older cannot go back: those builds link an older RocksDB that cannot read the newer file format, and the node exits with Corruption: Unknown Footer version. Reverting then requires restoring chain data and resyncing, so back up or budget resync time before upgrading from anything older than 0.10.2.

⚠️ static-nodes.json is ignored on 1.1.x. Nodes that pin peers through geth/static-nodes.json must move them to P2P.StaticNodes in config.toml; the file is read, reported as deprecated, and otherwise skipped. Nodes using discovery are unaffected.

⚠️ Testnet operators still on 0.10.x: skip 1.1.0. The 1.1.0 testnet build carries a chain-config regression (petersburgBlock dropped) that rewinds a 0.10.x node's chain to block 5,622,999 (~80M-block resync) on first start. Testnet nodes must also be started with --metadium-testnet (or TESTNET=1 in the node's .rc) for compiled-in config updates, including the Camellia fork block, to apply.

⚠️ Full sync only. The only --syncmode that starts on Metadium networks is fulllight is gone from the tree, and snap/fast are deliberately rejected. For fast new-node bring-up, bootstrap from the published chain snapshot. The personal RPC namespace is disabled by default; nodes whose tooling uses personal_* must start with --rpc.enabledeprecatedpersonal.

⚠️ RPC/WS bind default changed (unchanged from m1.1.1). Nodes that serve JSON-RPC/WS to external clients must set HTTP_ADDR=0.0.0.0 and WS_ADDR=0.0.0.0 in their per-node .rc before restarting — the default bind is now loopback. An in-place upgrade without these knobs silently stops external serving.

# per node (engine-matched tarball!):
cd /opt/meta
bin/gmet.sh stop     # graceful; never kill -9
tar xzvf metadium-1.1.2-linux-<leveldb|rocksdb>.tar.gz
bin/gmet version              # run this BEFORE starting: it fails immediately
                              # if the binary cannot run on this host
                              # expect 1.1.2-stable; verify the Git Commit line
                              # matches this release
bin/gmet.sh start
grep -m1 Camellia logs/log    # fork config prints at chain init -- expect
                              # the Camellia activation height

The chain data archives at packages.metadium.com are produced by a node running m1.1.x and require m1.1.2 or newer. Operators still on 0.10.x should use metadium-mainnet-chaindata-rocksdb-20260809130001.tar.gz.

Deploying before the activation block is safe: the fork activates automatically at the block height.

Assets

  • metadium-1.1.2-linux-leveldb.tar.gz — md5 9d4b711f38b27f50ee37dcad2054bc01
  • metadium-1.1.2-linux-rocksdb.tar.gz — md5 e043c5e16bb26ec6d0810b59ae8b7165

Built from commit 2f50ace367d02b6b309cbd1b469decd2a8c23103.
Self-builders: the release build is make gmet-linux, described under
Release artifacts.