ewasm-jsvm v0.0.22
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 --saveNode
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
yarnRun Tests
npm run testTo test a contract:
- add the source in
./tests/contractsfor Yul or./tests/solfor Solidity - in
./tests/jsvm.test.js:- add the abi, like https://github.com/loredanacirstea/ewasm-jsvm/blob/54c3599cd8ab67ffad1e2172e67083977cd25e66/tests/jsvm.test.js#L86-L90
- write a new test
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);4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago