# @eth-optimism/ethereumjs-vm

> An Ethereum VM implementation

Latest version **4.2.0-alpha.3** (published 2021-03-09) · MPL-2.0 license · 0 weekly downloads

## Install

```sh
npm install @eth-optimism/ethereumjs-vm
pnpm add @eth-optimism/ethereumjs-vm
yarn add @eth-optimism/ethereumjs-vm
bun add @eth-optimism/ethereumjs-vm
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.2.0-alpha.3 |
| Published | 2021-03-09 |
| First published | 2020-10-06 |
| Weekly downloads | 0 |
| License | MPL-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 18 |
| Unpacked size | 525.8 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | mjbecze |
| Maintainers | karlfloersch, ben-chain, will_optimism, k-ho, tynes, kelvinfichter |
| Keywords | ethereum, VM |

## Links

- npm: https://www.npmjs.com/package/@eth-optimism/ethereumjs-vm
- Repository: https://github.com/ethereum-optimism/ethereumjs-ovm
- Homepage: https://github.com/ethereumjs/ethereumjs-vm
- Issues: https://github.com/ethereumjs/ethereumjs-vm/issues
- npm.io page: https://npm.io/package/@eth-optimism/ethereumjs-vm

## Dependencies (18)

- [uuid](https://npm.io/package/uuid.md) ^8.3.0
- [async](https://npm.io/package/async.md) ^2.1.2
- [debug](https://npm.io/package/debug.md) ^4.2.0
- [ethers](https://npm.io/package/ethers.md) ^5.0.14
- [rustbn.js](https://npm.io/package/rustbn.js.md) ~0.2.0
- [safe-buffer](https://npm.io/package/safe-buffer.md) ^5.1.1
- [core-js-pure](https://npm.io/package/core-js-pure.md) ^3.0.1
- [ethereumjs-tx](https://npm.io/package/ethereumjs-tx.md) ^2.1.2
- [util.promisify](https://npm.io/package/util.promisify.md) ^1.0.0
- [ethereumjs-util](https://npm.io/package/ethereumjs-util.md) ^6.2.0
- [ethereumjs-block](https://npm.io/package/ethereumjs-block.md) ^2.2.2
- [ethereumjs-common](https://npm.io/package/ethereumjs-common.md) ^1.5.0
- [async-eventemitter](https://npm.io/package/async-eventemitter.md) ^0.2.2
- [ethereumjs-account](https://npm.io/package/ethereumjs-account.md) ^3.0.0
- [merkle-patricia-tree](https://npm.io/package/merkle-patricia-tree.md) ^2.3.2
- [ethereumjs-blockchain](https://npm.io/package/ethereumjs-blockchain.md) ^4.0.3
- [fake-merkle-patricia-tree](https://npm.io/package/fake-merkle-patricia-tree.md) ^1.0.1
- [functional-red-black-tree](https://npm.io/package/functional-red-black-tree.md) ^1.0.1

## Recent versions

- 4.2.0-alpha.3 (latest) — 2021-03-09
- 4.2.0-alpha.2 — 2020-12-14
- 4.2.0-alpha.1 — 2020-11-10
- 4.2.0-alpha.0 — 2020-10-06

## README

# ethereumjs-ovm

Implements Optimism's OVM in Javascript. Forked with <3 from `ethereumjs-vm`!

## Logging

This fork provides some custom logging tools for introspecting the OVM via the `debug` package. Particularly, the environment variable `DEBUG='ethjs-ovm:interpreter` will allow you to log various degrees of internal EVM execution such as calls, stack, and memory.
You must also add `DEBUG_OVM=true` to enable debugging.
The logging namespace includes the start and ending bytes of the address and the call depth (e.g. `js-ovm:intrp:0xdeadde..ad0005:d5`)

Available namespaces are:

- All OVM debug logging (warning, lots of logs): `DEBUG='*'`
- Call logging: `DEBUG='*:calls` (recommended to run first)
- Step logging: `DEBUG='*:calls:steps` (recommended to run filtered by address, e.g. `DEBUG='*:calls,js-ovm:intrp:0xdeadde..ad0005:d2:calls:steps'`)
- Memory logging: `DEBUG=*:calls:memory` (recommended to run filtered by address, see above)

Or mix and match any of the above to get your desired logging level.

# LICENSE

[MPL-2.0](https://www.mozilla.org/MPL/2.0/)

---
_Source: https://npm.io/package/@eth-optimism/ethereumjs-vm · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
