EVM layer

AUREN runs Ethereum bytecode. Contracts deploy and run on the same validators, fee market and state as everything else, and Ethereum tools connect through standard JSON-RPC.

Code: src/evm/ (interpreter vm.js, journaled state state.js, chain glue host.js, raw-transaction parser ethtx.js, RPC rpc.js, Keccak/RLP/secp256k1). Tests: test/evm.test.js, test/evm-chain.test.js, differential harness scripts/evm-diff.js.

Connecting a wallet or tool

devnettestnetmainnet
RPC URLhttps://devnet.auren.imhttps://testnet.auren.imhttps://mainnet.auren.im
Chain ID770017700277000
CurrencyAUR, 18 decimalsAURAUR

(Check chainlist.org for conflicts before any public launch; these numbers are placeholders.)

const provider = new ethers.JsonRpcProvider('https://devnet.auren.im', { chainId: 77001, name: 'auren-devnet' });
const wallet = new ethers.Wallet(privateKey, provider);
await (await wallet.sendTransaction({ data: initcode })).wait();   // deploy

To get test funds, ask the faucet for the account's AUREN address, which for an Ethereum key is bech32("daur", [4, ...20-byte Ethereum address]) (helper: keyFromHex(addrHex, 4, 'daur') in src/evm/host.js).

Verified live: with unmodified ethers v6 against a running 4-validator devnet: connect, eth_chainId, fee data, deploy a contract (gas 77,708), getCode, eth_call, getStorageAt, send 2.5 AUR, nonces, balances, block with transactions. MetaMask itself has not been tested (no browser wallet automation here); it uses the same RPC methods, so it should work, but treat that as unconfirmed.

From the command line

aurenctl evm deploy --data @contract.hex --from alice --network devnet      # prints the contract address and gas used
aurenctl evm call 0xCONTRACT --data 0x70a08231... --network devnet          # read-only, no key needed
aurenctl evm send 0xCONTRACT --data 0x... --value 1.5 --from alice --network devnet
aurenctl evm code 0xCONTRACT --network devnet

Gas is estimated automatically (--gas N to override; --simulate for a dry run). The block explorer shows gas, return data, logs and created contracts on each transaction page, and accepts Ethereum transaction hashes in search.

What is implemented

How it fits the chain

How it was verified

Known limitations

  1. Not audited. The interpreter is verified against one reference implementation, not against the official Ethereum test suite (ethereum/tests), and not formally.
  2. Precompiles 6-8 missing (above); Cancun opcodes missing.
  3. The fee model approximates Ethereum's: gas costs are Ethereum's, but its price comes from two dimensions, so eth_estimateGas returns gasUsed × 1.2 and wallets' fee estimates are slightly conservative.
  4. An account funded under one address scheme but used from another needs the right AUREN address when receiving from the faucet or a native transfer (use scheme 4 for Ethereum keys); the EVM view finds the existing account automatically.
  5. eth_getLogs scans blocks (max range 2,000) rather than using bloom filters; receipts are kept in memory.
  6. No gas-price oracle beyond the current base fee; no EIP-1559 tip market for pending transactions beyond the simple tip rule.
  7. Sequential-only execution caps throughput of EVM-heavy blocks.

Edit this page on GitHub