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.
"""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).
Sources at 72057fe3ec: testnet/release/network/network.json · developers/examples/python/opcode_probe.py
Found a problem? Report a documentation issue · Build testnet-rc1+72057fe3ec