Aurora Engine
Aurora Engine implements an Ethereum Virtual Machine (EVM) on the NEAR Protocol. See doc.aurora.dev for additional documentation.
Deployments
Network | Contract ID | Chain ID | Version |
---|---|---|---|
Mainnet | aurora |
1313161554 | 2.2.0 |
Testnet | aurora |
1313161555 | 2.3.0 |
Local | aurora.test.near |
1313161556 | 2.3.0 |
Prerequisites
Prerequisites for Building
- Rust nightly (2021-03-25) with the WebAssembly toolchain
- GNU Make (3.81+)
rustup install nightly-2021-03-25
rustup target add wasm32-unknown-unknown --toolchain nightly-2021-03-25
Prerequisites for Development
- Node.js (v14+)
Development
Branches
-
master
is the current stable branch. It must be ready, anytime, to deployed on chain at a moment's notice. -
develop
is our bleeding-edge development branch. In general, kindly target all pull requests to this branch.
Building the EVM binary
make release # produces mainnet-release.wasm (300+ KiB)
make -B mainnet # produces Mainnet build
make -B testnet # produces Testnet build
make debug # produces mainnet-debug.wasm (1+ MiB), which includes symbols
make -B mainnet-debug # produces Mainnet debug build
make -B testnet-debug # produces Testnet debug build
Running unit & integration tests
make check
Deployment
Downloading the latest EVM release
wget https://github.com/aurora-is-near/aurora-engine/releases/download/latest/mainnet-release.wasm
Installing the Aurora CLI tool
npm install -g aurora-is-near/aurora-cli
Deploying the EVM with the CLI
export NEAR_ENV=local
near delete aurora.test.near test.near # if needed
near create-account aurora.test.near --master-account=test.near --initial-balance 1000000
aurora install --chain 1313161556 --owner test.near mainnet-release.wasm
Deploying the EVM without the CLI
export NEAR_ENV=local
near delete aurora.test.near test.near # if needed
near create-account aurora.test.near --master-account=test.near --initial-balance 1000000
near deploy --account-id=aurora.test.near --wasm-file=mainnet-release.wasm
aurora initialize --chain 1313161556 --owner test.near
Usage
Examining deployed EVM metadata
aurora get-version
aurora get-owner
aurora get-bridge-prover
aurora get-chain-id
Deploying EVM contract bytecode
aurora deploy-code @contract.bytecode
aurora deploy-code 0x600060005560648060106000396000f360e060020a6000350480638ada066e146028578063d09de08a1460365780632baeceb714604d57005b5060005460005260206000f3005b5060016000540160005560005460005260206000f3005b5060016000540360005560005460005260206000f300
Examining EVM contract state
$ aurora encode-address test.near
0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B
aurora get-nonce 0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B
aurora get-balance 0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B
aurora get-code 0xFc481F4037887e10708552c0D7563Ec6858640d6
aurora get-storage-at 0xFc481F4037887e10708552c0D7563Ec6858640d6 0
Calling an EVM contract read-only
$ aurora encode-address test.near
0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B
aurora view --sender 0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B 0xFc481F4037887e10708552c0D7563Ec6858640d6 0x8ada066e # getCounter()
aurora view --sender 0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B 0xFc481F4037887e10708552c0D7563Ec6858640d6 0xd09de08a # increment()
aurora view --sender 0xCBdA96B3F2B8eb962f97AE50C3852CA976740e2B 0xFc481F4037887e10708552c0D7563Ec6858640d6 0x2baeceb7 # decrement()
Calling an EVM contract mutatively
aurora call 0xFc481F4037887e10708552c0D7563Ec6858640d6 0xd09de08a # increment()
aurora call 0xFc481F4037887e10708552c0D7563Ec6858640d6 0x2baeceb7 # decrement()
Debugging
Inspecting EVM storage state
near state aurora.test.near
aurora dump-storage
License
aurora-engine has multiple licenses:
- all crates except
engine-test
has CCO-1.0 license engine-test
has GPL-v3 license