An ethereum virtual machine (EVM) bytecode decompiler
npm install evmjavascript
const { EVM } = require("evm");
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("https://api.mycryptoapi.com/eth"));
web3.eth.getCode("0x06012c8cf97BEaD5deAe237070F9587f8E7A266d").then(code => { / CryptoKitties contract /
const evm = new EVM(code);
console.log(evm.getOpcodes()); / Get opcodes /
});
`
#### Browser
`javascript
const { EVM } = window.EVM_Utils;
const web3 = new Web3(window.web3.currentProvider);
web3.eth.getCode("0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", function(err,code) { / DAI contract /
if(err) throw err;
const evm = new EVM(code);
console.log(evm.getOpcodes()); / Get opcodes /
});
`
$3
#### Node.js
`javascript
const { EVM } = require("evm");
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("https://api.mycryptoapi.com/eth"));
web3.eth.getCode("0x06012c8cf97BEaD5deAe237070F9587f8E7A266d").then(code => { / CryptoKitties contract /
const evm = new EVM(code);
console.log(evm.getFunctions()); / Get functions /
console.log(evm.getEvents()); / Get events /
console.log(evm.decompile()); / Decompile bytecode /
});
`
#### Browser
`javascript
const { EVM } = window.EVM;
const web3 = new Web3(window.web3.currentProvider);
web3.eth.getCode("0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", function(err,code) { / DAI contract /
if(err) throw err;
const evm = new EVM(code);
console.log(evm.getFunctions()); / Get functions /
console.log(evm.getEvents()); / Get events /
console.log(evm.decompile()); / Decompile bytecode /
});
`
$3
#### Node.js
`javascript
const { Transaction } = require("evm");
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("https://api.mycryptoapi.com/eth"));
web3.eth.getTransaction("0xd20a8d888a3f29471ea41ea77cc2d95ccd79ade1eaad059e83524e72b9adf962").then(transactionData => {
const transaction = new Transaction();
transaction.setInput(transactionData.input);
console.log(transaction.getFunction()); / Get function /
});
`
#### Browser
`javascript
const { Transaction } = window.EVM;
const web3 = new Web3(window.web3.currentProvider);
web3.eth.getTransaction("0xd20a8d888a3f29471ea41ea77cc2d95ccd79ade1eaad059e83524e72b9adf962", function(err,transactionData) {
if(err) throw err;
const transaction = new Transaction();
transaction.setInput(transactionData.input);
console.log(transaction.getFunction()); / Get function /
});
``