Skip to content
Available on private testnetTestnet: yesMainnet: Not availableSoftware: Core bad4a06ea · protocol pqwerai-v8-testnet/1Updated

EVM compatibility

The PQWERAI EVM is the unmodified Core-Geth EVM. network.json declares the Ethash-family rules through London at genesis plus EIP-3651, EIP-3855, EIP-3860, EIP-5656 and EIP-1153 at block 0. The table below was measured on a live node with the opcode probe at the end of this page.

Opcode / feature Fork Chain 77240
BASEFEE (EIP-3198), EIP-1559 transactions London ✅ supported
PUSH0 (EIP-3855) Shanghai ✅ supported
Warm COINBASE (EIP-3651), initcode limit (EIP-3860) Shanghai ✅ active per network.json
MCOPY (EIP-5656) Cancun ✅ supported
TLOAD / TSTORE (EIP-1153) Cancun ✅ supported
SELFDESTRUCT — executes (pre-Cancun EIP-6780 semantics are not claimed; do not rely on it)
BLOBHASH (EIP-4844) Cancun ❌ invalid opcode: BLOBHASH
BLOBBASEFEE (EIP-7516) Cancun ❌ invalid opcode: BLOBBASEFEE
CLZ (EIP-7939) Osaka ❌ opcode 0x1e not defined
PREVRANDAO / DIFFICULTY (0x44) — returns the PoW difficulty (e.g. 0x200)
Blob transactions (type 3) Cancun ❌ blob rules not activated
EIP-7702 set-code transactions (type 4) Prague ❌ transaction type not supported

Compiler targets

Toolchain Recommended setting Notes
solc 0.8.26 evmVersion: cancun (or london) Fine unless the source calls blobhash() or block.blobbasefee. The Wallet Studio templates use london.
Vyper 0.4.3 --evm-version cancun Tested
Huff Neo (hnc) 1.7.1 -e cancun Default target osaka emits nothing chain-incompatible for simple code, but pin it
Fe 26.5.1 default Experimental; tested on a counter only
Foundry evm_version = "cancun" Tested with Foundry 1.8.5
Hardhat evmVersion: "cancun" Not executed for this release

Correction

Older wallet documentation stated that the chain has no PUSH0/MCOPY. That is obsolete for testnet-rc1: both execute on chain 77240 (measured). Compiling for london remains valid and is what the shipped Studio artifacts use.

Probe a node yourself

Read-only: the code runs through an eth_call state override, nothing is deployed.

python/opcode_probe.py
"""Probe which EVM opcodes a PQWERAI node executes, without deploying anything.

eth_call runs throw-away code injected through a state override, so this is read-only.
Standard library only (Python 3.9+):  python3 opcode_probe.py [RPC_URL]
"""
import json
import sys
import urllib.request

RPC = sys.argv[1] if len(sys.argv) > 1 else "http://127.0.0.1:8545"
PROBE = "0x00000000000000000000000000000000000000aa"
CASES = {
    "PUSH0  (Shanghai)": "0x5f00",
    "MCOPY  (Cancun)": "0x6000600060005e00",
    "TLOAD  (Cancun)": "0x60005c00",
    "TSTORE (Cancun)": "0x600060005d00",
    "BLOBHASH (Cancun, EIP-4844)": "0x60004900",
    "BLOBBASEFEE (Cancun)": "0x4a00",
    "CLZ    (Osaka)": "0x60001e00",
}


def rpc(method, params):
    body = json.dumps({"jsonrpc": "2.0", "id": 1, "method": method, "params": params}).encode()
    req = urllib.request.Request(RPC, body, {"content-type": "application/json"})
    with urllib.request.urlopen(req, timeout=10) as r:
        return json.loads(r.read())


assert int(rpc("eth_chainId", [])["result"], 16) == 77240, "not the PQWERAI testnet"
for name, code in CASES.items():
    r = rpc("eth_call", [{"to": PROBE, "data": "0x"}, "latest", {PROBE: {"code": code}}])
    print(f"{name:30} {'supported' if 'result' in r else 'NOT supported: ' + r['error']['message']}")
PUSH0  (Shanghai)              supported
MCOPY  (Cancun)                supported
TLOAD  (Cancun)                supported
TSTORE (Cancun)                supported
BLOBHASH (Cancun, EIP-4844)    NOT supported: invalid opcode: BLOBHASH
BLOBBASEFEE (Cancun)           NOT supported: invalid opcode: BLOBBASEFEE
CLZ    (Osaka)                 NOT supported: invalid opcode: opcode 0x1e not defined

Limits

  • Contract code size 24,576 bytes (EIP-170); initcode 49,152 bytes (EIP-3860).
  • Genesis block gas limit 15,000,000; miners may target another limit with --miner.gasceil.
  • Precompiles are those of the Ethereum fork rules above (no KZG point evaluation, since there are no blobs).

Found a problem? Report a documentation issue · Build testnet-rc1+72057fe3ec