ewasm-jsvm

0.0.22 • Public • Published

ewasm-jsvm

ewasm virtual machine for javascript

Specs: https://github.com/ewasm/design/blob/master/eth_interface.md.

! Use it only for testing. Not production ready.

Use

Needs peer dependencies: npm install ethers --save.

npm install ewasm-jsvm --save

Node

For i64 support, use a Node.js version which supports the --experimental-wasm-bigint flag. E.g. v13.10.1

Browser

A limited (Ethereum interface methods with args of type i64 are not supported by browsers), but easier to use version of the ewasm-jsvm can be found at https://observablehq.com/@loredanacirstea/ewasmjsvm.

Development

cd ewasm-jsvm
yarn

Run Tests

npm run test

To test a contract:

For contracts that only need to execute the constructor, check out the c1 contract, abi & test:

const ewmodule = ewasmjsvm.runtimeSim(contracts.c1.bin, c1Abi);
const answ = await ewmodule.main(DEFAULT_TX_INFO);

For contracts where the constructor returns a runtime wasm to be deployed (that only has a fallback/default function), check out c2 contract, abi & test:

const runtime = await ewasmjsvm.deploy(contracts.c2.bin, c2Abi)(DEFAULT_TX_INFO);
const answ = await runtime.main(DEFAULT_TX_INFO);

For contracts with functions, check out the c10 contract, abi & test:

const runtime = await ewasmjsvm.deploy(contracts.c10.bin, c10Abi)(DEFAULT_TX_INFO);
let answ = await runtime.sum(8, 2, DEFAULT_TX_INFO);

Package Sidebar

Install

npm i ewasm-jsvm

Weekly Downloads

7

Version

0.0.22

License

GPL-3.0-or-later

Unpacked Size

727 kB

Total Files

18

Last publish

Collaborators

  • loredanacirstea