Giter VIP home page Giter VIP logo

evm-opcodes's People

Contributors

3lpsy avatar computerality avatar dan-nolan avatar dguido avatar oboukli avatar pldespaigne avatar q9f avatar samajammin avatar whilei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evm-opcodes's Issues

Add explanation for asterisks on the gas column

It would be beneficial to add explanation on the usage of asterisks on this repo

On the gas column, the gas specification has a [NUMBER]* โ€“ like SSTORE uses 20000** units of gas. I'm guessing that the * is differentiating warm/cold accesses, but it would be helpful to specify exactly what it refers to.

gas of 0x0a lost!!

maybe it's caused by typo

btw, i think the gas of 0x0a should be "depend on byte size of exponent"

RangeError: Maximum BigInt size exceeded

(node:3067) UnhandledPromiseRejectionWarning: RangeError: Maximum BigInt size exceeded
    at eval (eval at <anonymous> (/tmp/test/node_modules/evm/lib/EVM.node.js:1:12359), <anonymous>:1:9)
    at NativeBigInt.pow (/tmp/test/node_modules/evm/lib/EVM.node.js:1:12653)
    at Object.d.default [as EXP] (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10281826)
    at g.parse (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10273112)
    at Object.d.default [as JUMPI] (/tmp/test/node_modules/evm/lib/EVM.node.js:1:6408475)
    at g.parse (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10273112)
    at Object.d.default [as JUMPI] (/tmp/test/node_modules/evm/lib/EVM.node.js:1:6408475)
    at g.parse (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10273112)
    at Object.d.default [as JUMPI] (/tmp/test/node_modules/evm/lib/EVM.node.js:1:6408517)
    at g.parse (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10273112)
    at Object.d.default [as JUMPI] (/tmp/test/node_modules/evm/lib/EVM.node.js:1:6408475)
    at g.parse (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10273112)
    at g.decompile (/tmp/test/node_modules/evm/lib/EVM.node.js:1:10273172)
    at web3.eth.getCode.then.code (/tmp/test/index.js:9:21)
    at process._tickCallback (internal/process/next_tick.js:68:7)

To reproduce:

const { EVM } = require("evm");
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("https://goerli.prylabs.net"));

web3.eth.getCode("0xB880162F8b188E9D7b075081f6E38fc3657ae10e").then(code => {  /* ETH2 deposit contract */
    const evm = new EVM(code);
    console.log(evm.getFunctions());  /* Get functions */
    console.log(evm.getEvents());  /* Get events */
    console.log(evm.decompile());  /* Decompile bytecode */
});

0xb3 is missing, opcodes nearby are offset

It seems that EIP 615 specifies

0xb0 JUMPTO
0xb1 JUMPIF
0xb2 JUMPV
0xb3 JUMPSUB
0xb4 JUMPSUBV
0xb5 BEGINSUB
0xb6 BEGINDATA
0xb7 RETURNSUB
0xb8 PUTLOCAL
0xb9 GETLOCAL

Which doesn't quite gel with your list aroudn 0xb2.

Detail parameters needed

Could the list of EVM opcodes also include the number of parameters needed by each opcode if any? Similar to the Ethereum Yellow paper.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.