{"_id":"@dexon-foundation/ethereumjs-vm","_rev":"5-be6e720e4a70417569e7d37684723edd","name":"@dexon-foundation/ethereumjs-vm","dist-tags":{"latest":"2.4.3"},"versions":{"2.4.0":{"name":"@dexon-foundation/ethereumjs-vm","version":"2.4.0","description":"An Ethereum VM implementation","main":"dist/index.js","scripts":{"coverage":"nyc npm run coverageTests && nyc report --reporter=text-lcov > .nyc_output/lcov.info","coverageTests":"tape ./tests/api/*.js ./tests/tester.js -s","coveralls":"npm run coverage && coveralls <.nyc_output/lcov.info","testVM":"node ./tests/tester -v","testStateByzantium":"npm run build:dist && node ./tests/tester -s --fork='Byzantium' --dist","testStateConstantinople":"npm run build:dist && node ./tests/tester -s --fork='Constantinople' --dist","testBuildIntegrity":"npm run build:dist && node ./tests/tester -s --dist --test='stackOverflow'","testBlockchain":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --excludeDir='GeneralStateTests'","testBlockchainGeneralStateTests":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='GeneralStateTests'","testAPI":"tape ./tests/api/*.js","test":"node ./tests/tester -a","lint":"standard","build:dist":"babel lib/ -d dist/","build:docs":"documentation build ./lib/index.js ./lib/runBlockchain.js ./lib/runBlock.js ./lib/runTx.js ./lib/runCode.js ./lib/runCall.js --format md --shallow > ./docs/index.md","formatTest":"node ./scripts/formatTest"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-vm.git"},"keywords":["ethereum","VM"],"dependencies":{"async":"^2.1.2","async-eventemitter":"^0.2.2","ethereumjs-account":"^2.0.3","ethereumjs-block":"~2.1.0","ethereumjs-common":"^0.6.0","ethereumjs-util":"^6.0.0","fake-merkle-patricia-tree":"^1.0.1","functional-red-black-tree":"^1.0.1","merkle-patricia-tree":"^2.1.2","rustbn.js":"~0.2.0","safe-buffer":"^5.1.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","documentation":"^8.1.2","ethereumjs-blockchain":"~3.3.0","ethereumjs-testing":"git+https://github.com/ethereumjs/ethereumjs-testing.git#v1.2.5","ethereumjs-tx":"1.3.7","level":"^1.4.0","leveldown":"^1.4.6","levelup":"^1.3.2","memdown":"^1.1.0","minimist":"^1.1.1","nyc":"^12.0.2","standard":"^10.0.0","tap-spec":"^5.0.0","tape":"4.6.3"},"author":{"name":"mjbecze","email":"mjbecze@gmail.com"},"contributors":[{"name":"Alex Beregszaszi","email":"alex@rtfs.hu"}],"license":"MPL-2.0","bugs":{"url":"https://github.com/ethereumjs/ethereumjs-vm/issues"},"homepage":"https://github.com/ethereumjs/ethereumjs-vm","nyc":{"exclude":["tests"]},"standard":{"ignore":["dist/**","examples/runcode-browserify.js"]},"gitHead":"f7434905576742bc25e5e1db2a9f69ccfb9b852b","_id":"@dexon-foundation/ethereumjs-vm@2.4.0","_npmVersion":"6.4.0","_nodeVersion":"8.11.3","_npmUser":{"name":"boczeratul","email":"boczeratul@gmail.com"},"dist":{"integrity":"sha512-P7njDdGzJSsibqEzF450yflfhAd0pQ31IQflhHG0agVZhHM6So+PHSYAsOvrfZBnJw7TW4StedUl1miCXdH3lQ==","shasum":"c2eda37b3f71976a466d742c17285b9538f181f3","tarball":"https://registry.npmjs.org/@dexon-foundation/ethereumjs-vm/-/ethereumjs-vm-2.4.0.tgz","fileCount":29,"unpackedSize":167837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9hvkCRA9TVsSAnZWagAA9mYP/jm7P3UGpjwRvtbT37dv\nm5KQfhzQATgV2ExxpGEtW3pn+gAZ3DPn17Tzoou4A6UdVPuIckQtenVr+e+z\ny+qjK4igHznLVuN/M4L+aUtdLQtka9KoV/RLTYXUMVbfc7MNm/6vOqQ7Ysfu\n6syAb9fi4w7JCmI1kiOJJthngKxK3Tu3dSyi9E+J8Il/UBWXmoNQFtqmdOWu\nhUG/sPF4VwuPB8/3vQu72TWFA0/0DhMQ50Q3j00KjQREgt8lismrNyai96u1\nWTBD5w0orMEVSonGalFCkFGyIWOyHuAqns77Brv9dJAgX3mAPiKiMvFQ7tXO\nhG/o5GMymoI8NSnup3nN1pUbTvXKDDtrCWoTwca6wDdb0MBQX6bQGxv+Yx8R\ngQHDTVKUkPDm7OVbZPvRxPWVBwU/vcXEhiPFgVr60D/6LpvvaemmQAyfSeP0\n36BVZMnLPMF7yXDiOFuKGV5Xm6+eZ5NzG3udhI5NMVGKVigdcvh3MjS4QomY\n1h1+GuFKh/+oyRMVWw+rgJLfTfGRna8hjby97l99WwvlNam156ph0h+bpg44\nnZ+DgBB/E1QBUfrkGDvqkrG7hdITNTbv/Ap8WlByo9x1aGJIpx8tYtMm24zR\nZVyS8AtlU+E9VVsYmo6XFjexJxqN0DnpJImeZThWLnNclTE7TLpLTnhg6jNA\n5VB9\r\n=DHlI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0qJXg6Zmz0m5EEhVW1KupdLBKs56WwuUqrf50LUJ/yAIhANNMYXrFPwPWjfiHkLZWbCpr77UDxx4Q154LJIE7wjmO"}]},"maintainers":[{"name":"cobinhood-dev","email":"dev@cobinhood.com"},{"name":"boczeratul","email":"boczeratul@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereumjs-vm_2.4.0_1542855651885_0.8938112847369404"},"_hasShrinkwrap":false},"2.4.1":{"name":"@dexon-foundation/ethereumjs-vm","version":"2.4.1","description":"An Ethereum VM implementation","main":"dist/index.js","scripts":{"coverage":"istanbul cover ./tests/tester.js -- -s","coveralls":"npm run coverage && coveralls <coverage/lcov.info","testVM":"node ./tests/tester -v","testStateByzantium":"npm run build:dist && node ./tests/tester -s --fork='Byzantium' --dist","testStateConstantinople":"npm run build:dist && node ./tests/tester -s --fork='Constantinople' --dist","testBuildIntegrity":"npm run build:dist && node ./tests/tester -s --dist --test='stackOverflow'","testBlockchain":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --excludeDir='GeneralStateTests'","testBlockchainGeneralStateTests":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='GeneralStateTests'","testBlockchainBlockGasLimit":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcBlockGasLimitTest'","testBlockchainValid":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcValidBlockTest'","testBlockchainTotalDifficulty":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcTotalDifficultyTest'","test":"node ./tests/tester -a","lint":"standard","build:dist":"babel lib/ -d dist/"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-vm.git"},"keywords":["ethereum","VM"],"dependencies":{"async":"^2.1.2","async-eventemitter":"^0.2.2","ethereumjs-account":"^2.0.3","ethereumjs-block":"~1.7.0","ethereumjs-common":"~0.4.0","ethereumjs-util":"^5.2.0","fake-merkle-patricia-tree":"^1.0.1","functional-red-black-tree":"^1.0.1","merkle-patricia-tree":"^2.1.2","rustbn.js":"~0.2.0","safe-buffer":"^5.1.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","ethereumjs-blockchain":"~2.1.0","ethereumjs-testing":"git+https://github.com/ethereumjs/ethereumjs-testing.git#v1.1.1","ethereumjs-tx":"1.3.3","istanbul":"^0.4.5","level":"^1.4.0","leveldown":"^1.4.6","levelup":"^1.3.2","memdown":"^1.1.0","minimist":"^1.1.1","standard":"^10.0.0","tape":"4.6.3"},"author":{"name":"mjbecze","email":"mjbecze@gmail.com"},"contributors":[{"name":"Alex Beregszaszi","email":"alex@rtfs.hu"}],"license":"MPL-2.0","bugs":{"url":"https://github.com/dexon-foundation/ethereumjs-vm/issues"},"homepage":"https://github.com/dexon-foundation/ethereumjs-vm","standard":{"ignore":["dist/**","examples/runcode-browserify.js"]},"gitHead":"5cb2cc36390be25d004752f0e973244df1f5c69f","_id":"@dexon-foundation/ethereumjs-vm@2.4.1","_npmVersion":"6.4.0","_nodeVersion":"8.11.3","_npmUser":{"name":"boczeratul","email":"boczeratul@gmail.com"},"dist":{"integrity":"sha512-P/vt6JDHhFwkxHz/JSifzJdzdUgU8GwxUFzHAiLombFq5B6zDKh2gDJpfzOUf1qklBsYomfwI4NUQPEBEz4LWQ==","shasum":"0e3dd1bcb84e528d98ce4f934af9022ac3b4319c","tarball":"https://registry.npmjs.org/@dexon-foundation/ethereumjs-vm/-/ethereumjs-vm-2.4.1.tgz","fileCount":29,"unpackedSize":154300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9iUoCRA9TVsSAnZWagAAih4P/25GPZPTUmMvjRROFz0q\n5vyjNuKd6FMkNkgKMDSkGSFyIN0o5C/JpM6+QEks1ZVl6DUb16nV0OENXo/F\nSu+v1SiDxcoUvglog0eFPXZSzoNYJ/Z3te0hyKDRFQPMtYO0c/beiMY+M67e\nzTXCHQIiZJKap1wHgc87yjM0d9asI93xzA/cbvLGWLOTPw0sV6pWVzsg4+CG\nruxts63K0YhTu5XmVCsSFDb1gnUnMN0UWxJL3ixjUlJxFS9fn0ESD38GuEoz\nGS9MnP/SbSYTrKpWkw/x1i5MuRfZl6wH1lm5gudLEwXFnLEYuUrRd23nciOI\nijdmeEuQHeCpfFdwbbm9CYa6hQcKx5n8TP0T53629P7aR9YqbdKOYMjKgdKl\nQqWrgODV70EXJYSkKVRuguOanYqJoLDQ8iBgm0T4fCNIv/lzWPqet3q9gjhK\n1CrlrozyO/r+UH2V20KUBC3BTKLMhmCFk/Uhr0zQ+cLar02/vPVJgcguh+Zp\nUlFIVD72dhFi9CMU21n9G1FztRn1PxBwag7CIWA9GnK2y0NdUDl3I5k9547Z\neoDdcstJQ44q8UtqvPKhaerJAOJ/xcYvm8b2r0WtKbTsu0gbaokbJ5xwIo9G\ndOBlQzEg5e7WOImELV9WznPRuF6elHzsxconk6tmELrkFW/fY02Ez45m7C3c\nTFdz\r\n=idAk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHRanuCVVnTG3wpOf/OFOgfPTynNx8Xa7guoLFH8oc1AiARhg/O1p7xeCrlo6jSGY0DtdwqpnoCYTvMRAwXENfLBQ=="}]},"maintainers":[{"name":"boczeratul","email":"boczeratul@gmail.com"},{"name":"cobinhood-dev","email":"dev@cobinhood.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereumjs-vm_2.4.1_1542858023844_0.1894993183164988"},"_hasShrinkwrap":false},"2.4.2":{"name":"@dexon-foundation/ethereumjs-vm","version":"2.4.2","description":"An Ethereum VM implementation","main":"dist/index.js","scripts":{"coverage":"istanbul cover ./tests/tester.js -- -s","coveralls":"npm run coverage && coveralls <coverage/lcov.info","testVM":"node ./tests/tester -v","testStateByzantium":"npm run build:dist && node ./tests/tester -s --fork='Byzantium' --dist","testStateConstantinople":"npm run build:dist && node ./tests/tester -s --fork='Constantinople' --dist","testBuildIntegrity":"npm run build:dist && node ./tests/tester -s --dist --test='stackOverflow'","testBlockchain":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --excludeDir='GeneralStateTests'","testBlockchainGeneralStateTests":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='GeneralStateTests'","testBlockchainBlockGasLimit":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcBlockGasLimitTest'","testBlockchainValid":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcValidBlockTest'","testBlockchainTotalDifficulty":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcTotalDifficultyTest'","test":"node ./tests/tester -a","lint":"standard","build:dist":"babel lib/ -d dist/"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-vm.git"},"keywords":["ethereum","VM"],"dependencies":{"async":"^2.1.2","async-eventemitter":"^0.2.2","ethereumjs-account":"^2.0.3","ethereumjs-block":"~1.7.0","ethereumjs-common":"~0.4.0","ethereumjs-util":"^5.2.0","fake-merkle-patricia-tree":"^1.0.1","functional-red-black-tree":"^1.0.1","merkle-patricia-tree":"^2.1.2","rustbn.js":"~0.2.0","safe-buffer":"^5.1.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","ethereumjs-blockchain":"~2.1.0","ethereumjs-testing":"git+https://github.com/ethereumjs/ethereumjs-testing.git#v1.1.1","ethereumjs-tx":"1.3.3","istanbul":"^0.4.5","level":"^1.4.0","leveldown":"^1.4.6","levelup":"^1.3.2","memdown":"^1.1.0","minimist":"^1.1.1","standard":"^10.0.0","tape":"4.6.3"},"author":{"name":"mjbecze","email":"mjbecze@gmail.com"},"contributors":[{"name":"Alex Beregszaszi","email":"alex@rtfs.hu"}],"license":"MPL-2.0","bugs":{"url":"https://github.com/dexon-foundation/ethereumjs-vm/issues"},"homepage":"https://github.com/dexon-foundation/ethereumjs-vm","standard":{"ignore":["dist/**","examples/runcode-browserify.js"]},"gitHead":"3545e39dfadce7473310bd352ab2399298284dc5","_id":"@dexon-foundation/ethereumjs-vm@2.4.2","_npmVersion":"6.4.0","_nodeVersion":"8.11.3","_npmUser":{"name":"boczeratul","email":"boczeratul@gmail.com"},"dist":{"integrity":"sha512-gX2BNdW87XOOo2g8YBnqUTMa7jBb9xIZ/kvBk9U4sg7rPblIEh/Ix8Vqqae2Ft2vIZuwG35/bknQlXcW/+JDCw==","shasum":"a5cee1099a3e6484a13e1fcf0b9c04dab08cdc70","tarball":"https://registry.npmjs.org/@dexon-foundation/ethereumjs-vm/-/ethereumjs-vm-2.4.2.tgz","fileCount":29,"unpackedSize":154300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9iqPCRA9TVsSAnZWagAAI7IP/1IKP0E+KnUtKiYL/I3B\n41qKYL4mlP4Rd/Ky0i4DYa72qf/9MNiaS4TrK4m2k7wVj+4xuG3mSyU2b8aP\ns2p6NBdGbJP8DhidlDD+tOpJTz2qs/bv0YawKCMs1jiF/XKDDmxuC+kpx3FZ\notrqSFyc8Z2ZABufTu2/zt43mhRP/K4X4ruEDNcJSd7mlkHJPwKXkF+5+8nH\nZ8qNKw8i86N9GlyVq2cCxvdGnuh7G+4EKxrYO7GJqip3lksEtaEHDr+Zycf6\nn1Zwu/+rH7GOfYUUbURxG8Xb8+Nap2SzFqfYB2nQMjMMHqEjwm4Yhsffqgvi\n0MzAQShBImooXxwV/uFR6Efgux72hbB72sLr0VYb8YyGFMr/z629nlpttI9g\nvXkdwFWYZE68EbcXtQaELjOSCrWJNo7/6noYmBqTVFNpyec3C9KBHQSVeNQf\nHXZ80Ofq89td3gZrGk864qGjn2gydP3d8RgBN4dJnaXVRQsy3kkKuIJo0+e7\nnKgA22TdJgFmt9LJ9dQ9zqmRontEWKTTWKAAXEd8H8qle8VajJuwrYgO2ZQd\nMmaSPGBHIUb8V0sfPWyAOWaTTMAQAQxLrhqPKgg+MAy7JLwgnroPe8Kw+A8O\n5nUc27mqaluVuDge5iwvlriSSfFaRacSg+rDw/AQfgu9HuTSvnh3ZyYzvNw5\nXXVY\r\n=WGCG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN8uzJVq7bP071nyAyaeKcacfa/+XqxLUSPo44NmbnWQIgLLtTgeXp7H7xXdUC6tB2RcIHXfYv0k+LPKxVcvdbmt0="}]},"maintainers":[{"name":"boczeratul","email":"boczeratul@gmail.com"},{"name":"cobinhood-dev","email":"dev@cobinhood.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereumjs-vm_2.4.2_1542859407085_0.48784582084618067"},"_hasShrinkwrap":false},"2.4.3":{"name":"@dexon-foundation/ethereumjs-vm","version":"2.4.3","description":"An Ethereum VM implementation","main":"dist/index.js","scripts":{"coverage":"istanbul cover ./tests/tester.js -- -s","coveralls":"npm run coverage && coveralls <coverage/lcov.info","testVM":"node ./tests/tester -v","testStateByzantium":"npm run build:dist && node ./tests/tester -s --fork='Byzantium' --dist","testStateConstantinople":"npm run build:dist && node ./tests/tester -s --fork='Constantinople' --dist","testBuildIntegrity":"npm run build:dist && node ./tests/tester -s --dist --test='stackOverflow'","testBlockchain":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --excludeDir='GeneralStateTests'","testBlockchainGeneralStateTests":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='GeneralStateTests'","testBlockchainBlockGasLimit":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcBlockGasLimitTest'","testBlockchainValid":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcValidBlockTest'","testBlockchainTotalDifficulty":"npm run build:dist && node --stack-size=1500 ./tests/tester -b --dist --dir='bcTotalDifficultyTest'","test":"node ./tests/tester -a","lint":"standard","build:dist":"babel lib/ -d dist/"},"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-vm.git"},"keywords":["ethereum","VM"],"dependencies":{"async":"^2.1.2","async-eventemitter":"^0.2.2","ethereumjs-account":"^2.0.3","ethereumjs-block":"~1.7.0","ethereumjs-common":"~0.4.0","ethereumjs-util":"^5.2.0","fake-merkle-patricia-tree":"^1.0.1","functional-red-black-tree":"^1.0.1","merkle-patricia-tree":"^2.1.2","rustbn.js":"~0.2.0","safe-buffer":"^5.1.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.6.1","coveralls":"^3.0.0","ethereumjs-blockchain":"~2.1.0","ethereumjs-testing":"git+https://github.com/ethereumjs/ethereumjs-testing.git#v1.1.1","ethereumjs-tx":"1.3.3","istanbul":"^0.4.5","level":"^1.4.0","leveldown":"^1.4.6","levelup":"^1.3.2","memdown":"^1.1.0","minimist":"^1.1.1","standard":"^10.0.0","tape":"4.6.3"},"author":{"name":"mjbecze","email":"mjbecze@gmail.com"},"contributors":[{"name":"Alex Beregszaszi","email":"alex@rtfs.hu"}],"license":"MPL-2.0","bugs":{"url":"https://github.com/dexon-foundation/ethereumjs-vm/issues"},"homepage":"https://github.com/dexon-foundation/ethereumjs-vm","standard":{"ignore":["dist/**","examples/runcode-browserify.js"]},"gitHead":"e9191b2a0633ae39e03f6f5a4d87494a8694a25f","_id":"@dexon-foundation/ethereumjs-vm@2.4.3","_npmVersion":"6.4.0","_nodeVersion":"8.11.3","_npmUser":{"name":"boczeratul","email":"boczeratul@gmail.com"},"dist":{"integrity":"sha512-1a6PVI/gHX3NXY9Pmjr5d7yM3hK3oIV21vlwxOPMPLO15PGvXbiRHCb0HOb4D21nAH/OAUoEa8HrbAplIKmDuA==","shasum":"3d2df5f83184df7ca2b6da3b731011f21ffd4297","tarball":"https://registry.npmjs.org/@dexon-foundation/ethereumjs-vm/-/ethereumjs-vm-2.4.3.tgz","fileCount":28,"unpackedSize":153350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDi2CCRA9TVsSAnZWagAAT0YP/A9j2GZh/tk5YHMEMBIh\nioGsKjt3+aLSxCd94hpgE5Aa15PlWmLaVVyUZ7Mh/QXCtZOtw7T6bMIFiOhr\nHF7u3uMAUdr1JGYEOAA9neDmuJ0oKXumFw4cLQpCirsQ0HS5HJ7D7KhCZ68w\nmVo63kFgmklZXxU+NCtSftbVkSywZ8neBm5/JJgzvhARuslqYcttAEVgILVS\njVN9T8Jx7wcBJ8Oz33uCZnqsZlCtKMUzir2e2msIlpK0dgUPHEqok+qrFrJ8\nHGJZGAqrFJqbL0APVt59olExmOufOB3rg6ZyxOAqub/iVupYRSW98wvsrVjb\nNsSae4i+5iVgpP0MO4NhDfKWgnKpV1KEvJoWug3ERElhagU/lS3+U2Y3VRTE\n5uWko+dnQ5y7bcKc9DbIYpo9H3JokzS0wS+LjGjXiQ6FmW/rAjD+LGjbPkuS\nwi4YLRHQEmuJ7DvtuH++ibQ2X6U6OQiwmkpOtIWlJviVaqfcjewuTtpCwG6Q\nsib6uw8UL7NhNnLu5/5GYYLS3xSdsuIw2Qx8KKl5G52Sp9ZjWoUkw1TnS7wg\nq6iskLl6BhN4aOfKp7+ouflcye/DJHPtQCURGOVZzsPISCjeWSjh6PqLLWvm\nL8RvmuBPVFVg5tkbLJDrtYpj4ZuBpazYWq2oxsvjXmko8z5qSSKix61XyJAW\nzKQn\r\n=9d/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAw1b828whQ1n/GSvtzwiAO8KZY53plw7AycbbAJ+wHwAiEAmR35Vr8Va/+VkLOMw2uKseSQU6nTV0AB2MCEIEFmwdg="}]},"maintainers":[{"name":"boczeratul","email":"boczeratul@gmail.com"},{"name":"cobinhood-dev","email":"dev@cobinhood.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereumjs-vm_2.4.3_1544433025734_0.9740279324538703"},"_hasShrinkwrap":false}},"time":{"created":"2018-11-22T03:00:51.706Z","2.4.0":"2018-11-22T03:00:52.036Z","modified":"2022-04-05T04:12:33.206Z","2.4.1":"2018-11-22T03:40:23.981Z","2.4.2":"2018-11-22T04:03:27.213Z","2.4.3":"2018-12-10T09:10:26.029Z"},"maintainers":[{"email":"chaoweichiu@gmail.com","name":"chaoweichiu"},{"email":"dev@cobinhood.com","name":"cobinhood-dev"},{"email":"boczeratul@gmail.com","name":"boczeratul"}],"description":"An Ethereum VM implementation","homepage":"https://github.com/dexon-foundation/ethereumjs-vm","keywords":["ethereum","VM"],"repository":{"type":"git","url":"git+https://github.com/ethereumjs/ethereumjs-vm.git"},"contributors":[{"name":"Alex Beregszaszi","email":"alex@rtfs.hu"}],"author":{"name":"mjbecze","email":"mjbecze@gmail.com"},"bugs":{"url":"https://github.com/dexon-foundation/ethereumjs-vm/issues"},"license":"MPL-2.0","readme":"# SYNOPSIS\n\n[![NPM Package](https://img.shields.io/npm/v/ethereumjs-vm.svg?style=flat-square)](https://www.npmjs.org/package/ethereumjs-vm)\n[![Build Status](https://img.shields.io/travis/ethereumjs/ethereumjs-vm.svg?branch=master&style=flat-square)](https://travis-ci.org/ethereumjs/ethereumjs-vm)\n[![Coverage Status](https://img.shields.io/coveralls/ethereumjs/ethereumjs-vm.svg?style=flat-square)](https://coveralls.io/r/ethereumjs/ethereumjs-vm)\n[![Gitter](https://img.shields.io/gitter/room/ethereum/ethereumjs-lib.svg?style=flat-square)](https://gitter.im/ethereum/ethereumjs-lib) or #ethereumjs on freenode\n\n[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nImplements Ethereum's VM in Javascript.\n\n#### Fork Support\n\nWith the ``2.4.x`` release series we now start to gradually add ``Constantinople`` features with the\nbitwise shifting instructions from [EIP 145](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md)\nmaking the start being introduced in the ``v2.4.0`` release.\n\nSince both the scope of the ``Constantinople`` hardfork as well as the state of at least some of the EIPs\nto be included are not yet finalized, this is only meant for ``EXPERIMENTAL`` purposes, e.g. for developer\ntools to give users early access and make themself familiar with dedicated features.\n\nOnce scope and EIPs from ``Constantinople`` are final we will target a ``v2.5.0`` release which will officially\nintroduce ``Constantinople`` support with all the changes bundled together.\n\nNote that from this release on we also introduce new ``chain`` (default: ``mainnet``) and ``hardfork`` \n(default: ``byzantium``) parameters, which make use of our new [ethereumjs-common](https://github.com/ethereumjs/ethereumjs-common) library and in the future will allow\nfor parallel hardfork support from ``Byzantium`` onwards.\n\nSince ``hardfork`` default might be changed or dropped in future releases, you might want to explicitly\nset this to ``byzantium`` on your next update to avoid future unexpected behavior.\n\nIf you are still looking for a [Spurious Dragon](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-607.md) compatible version of this library install the latest of the ``2.2.x`` series (see [Changelog](./CHANGELOG.md)).\n\n# INSTALL\n`npm install ethereumjs-vm`\n\n# USAGE\n```javascript\nvar VM = require('ethereumjs-vm')\n\n//create a new VM instance\nvar vm = new VM()\nvar code = '7f4e616d65526567000000000000000000000000000000000000000000000000003055307f4e616d6552656700000000000000000000000000000000000000000000000000557f436f6e666967000000000000000000000000000000000000000000000000000073661005d2720d855f1d9976f88bb10c1a3398c77f5573661005d2720d855f1d9976f88bb10c1a3398c77f7f436f6e6669670000000000000000000000000000000000000000000000000000553360455560df806100c56000396000f3007f726567697374657200000000000000000000000000000000000000000000000060003514156053576020355415603257005b335415603e5760003354555b6020353360006000a233602035556020353355005b60007f756e72656769737465720000000000000000000000000000000000000000000060003514156082575033545b1560995733335460006000a2600033545560003355005b60007f6b696c6c00000000000000000000000000000000000000000000000000000000600035141560cb575060455433145b1560d25733ff5b6000355460005260206000f3'\n\nvm.runCode({\n  code: Buffer.from(code, 'hex'), // code needs to be a Buffer\n  gasLimit: Buffer.from('ffffffff', 'hex')\n}, function(err, results){\n  console.log('returned: ' + results.return.toString('hex'));\n})\n```\nAlso more examples can be found here\n- [examples](./examples)\n- [old blog post](https://wanderer.github.io/ethereum/nodejs/code/2014/08/12/running-contracts-with-vm/)\n\n# BROWSER\n\nTo build for standalone use in the browser, install `browserify` and check [run-transactions-simple example](https://github.com/ethereumjs/ethereumjs-vm/tree/master/examples/run-transactions-simple). This will give you a global variable `EthVM` to use. The generated file will be at `./examples/run-transactions-simple/build.js`.\n\n# API\n  - [`new VM([opts])`](#new-vmstatetrie-blockchain)\n  - [`VM` methods](#vm-methods)\n    - [`vm.runBlockchain([blockchain], [cb])`](#vmrunblockchainblockchain-cb)\n    - [`vm.runBlock(opts, cb)`](#vmrunblockopts-cb)\n    - [`vm.runTx(opts, cb)`](#vmruntxopts-cb)\n    - [`vm.runCode(opts, cb)`](#vmruncodeopts-cb)\n    - [`vm.generateCanonicalGenesis(cb)`](#vmgeneratecanonicalgenesiscb)\n    - [`vm.generateGenesis(cb)`](#vmgenerategenesiscb)\n  - [`VM` Events](#events)\n    - [`step`](#step)\n    - [`newContract`](#newcontract)\n    - [`beforeBlock`](#beforeblock)\n    - [`afterBlock`](#afterblock)\n    - [`beforeTx`](#beforetx)\n    - [`afterTx`](#aftertx)\n\n### `new VM([opts])`\nCreates a new VM object\n- `opts`\n  - `stateManager` - A state manager instance (**EXPERIMENTAL** - unstable API)\n  - `state` - A merkle-patricia-tree instance for the state tree (ignored if `stateManager` is passed)\n  - `blockchain` - A blockchain object for storing/retrieving blocks (ignored if `stateManager` is passed)\n  - `chain` - The chain the VM operates on [default: 'mainnet']\n  - `hardfork` - Hardfork rules to be used [default: 'byzantium', supported: 'byzantium' (will throw on unsupported)]\n  - `activatePrecompiles` - Create entries in the state tree for the precompiled contracts\n  - `allowUnlimitedContractSize` - Allows unlimited contract sizes while debugging. By setting this to `true`, the check for contract size limit of 2KB (see [EIP-170](https://git.io/vxZkK)) is bypassed. (default: `false`; **ONLY** set to `true` during debugging).\n\n### `VM` methods\n\n\n#### `vm.runBlockchain(blockchain, cb)`\nProcess blocks and adds them to the blockchain.\n- `blockchain` - A [blockchain](https://github.com/ethereum/ethereumjs-blockchain) that to process\n- `cb` - The callback. It is given an err parameter if it fails\n\n--------------------------------------------------------\n\n#### `vm.runBlock(opts, cb)`\nProcesses the `block` running all of the transactions it contains and updating the miner's account.\n- `opts.block` - The [`Block`](https://github.com/ethereumjs/ethereumjs-block) to process\n- `opts.generate` - a `Boolean`; whether to generate the stateRoot. If false  `runBlock` will check the stateRoot of the block against the Trie\n- `cb` - The callback. It is given two arguments, an `error` string containing an error that may have happened or `null`, and a `results` object with the following properties:\n  - `receipts` - the receipts from the transactions in the block\n  - `results` - an Array for results from the transactions in the block\n--------------------------------------------------------\n\n\n#### `vm.runTx(opts, cb)`\nProcess a transaction.\n- `opts.tx` - A [`Transaction`](https://github.com/ethereum/ethereumjs-tx) to run.\n- `opts.block` - The block to which the `tx` belongs. If omitted a blank block will be used.\n- `cb` - The callback. It is given two arguments, an `error` string containing an error that may have happened or `null`, and a `results` object with the following properties:\n  - `amountSpent` - the amount of ether used by this transaction as a `bignum`\n  - `gasUsed` - the amount of gas as a `bignum` used by the transaction\n  - `gasRefund` - the amount of gas as a `bignum` that was refunded during the transaction (i.e. `gasUsed = totalGasConsumed - gasRefund`)\n  - `vm` - contains the results from running the code, if any, as described in [`vm.runCode(params, cb)`](#vmruncodeopts-cb)\n\n--------------------------------------------------------\n\n#### `vm.runCode(opts, cb)`\nRuns EVM code\n- `opts.code` - The EVM code to run given as a `Buffer`\n- `opts.data` - The input data given as a `Buffer`\n- `opts.value` - The value in ether that is being sent to `opt.address`. Defaults to `0`\n- `opts.block` - The [`Block`](https://github.com/ethereumjs/ethereumjs-block) the `tx` belongs to. If omitted a blank block will be used.\n- `opts.gasLimit` - The gas limit for the code given as a `Buffer`\n- `opts.account` - The [`Account`](https://github.com/ethereumjs/ethereumjs-account) that the executing code belongs to. If omitted an empty account will be used\n- `opts.address` - The address of the account that is executing this code. The address should be a `Buffer` of bytes. Defaults to `0`\n- `opts.origin` - The address where the call originated from. The address should be a `Buffer` of 20bits. Defaults to `0`\n- `opts.caller` - The address that ran this code. The address should be a `Buffer` of 20bits. Defaults to `0`\n- `cb` - The callback. It is given two arguments, an `error` string containing an error that may have happened or `null` and a `results` object with the following properties\n  - `gas` - the amount of gas left as a `bignum`\n  - `gasUsed` - the amount of gas as a `bignum` the code used to run.\n  - `gasRefund` - a `bignum` containing the amount of gas to refund from deleting storage values\n  - `selfdestruct` - an `Object` with keys for accounts that have selfdestructed and values for balance transfer recipient accounts.\n  - `logs` - an `Array` of logs that the contract emitted.\n  - `exception` - `0` if the contract encountered an exception, `1` otherwise.\n  - `exceptionError` - a `String` describing the exception if there was one.\n  - `return` - a `Buffer` containing the value that was returned by the contract\n\n\n--------------------------------------------------------\n\n#### `vm.stateManager.generateCanonicalGenesis(cb)`\nGenerates the Canonical genesis state.\n\n--------------------------------------------------------\n\n#### `vm.stateManager.generateGenesis(genesisData, cb)`\nGenerate the genesis state.\n- `genesisData` - an `Object` whose keys are addresses and values are `string`s representing initial allocation of ether.\n- `cb` - The callback\n\n```javascript\nvar genesisData = {\n  \"51ba59315b3a95761d0863b05ccc7a7f54703d99\": \"1606938044258990275541962092341162602522202993782792835301376\",\n  \"e4157b34ea9615cfbde6b4fda419828124b70c78\": \"1606938044258990275541962092341162602522202993782792835301376\"\n}\n\nvm.generateGenesis(genesisData, function(){\n  console.log('generation done');\n})\n```\n\n### `events`\nAll events are instances of [async-eventemmiter](https://www.npmjs.com/package/async-eventemitter). If an event handler has an arity of 2 the VM will pause until the callback is called, otherwise the VM will treat the event handler as a synchronous function.\n\n#### `step`\nThe `step` event is given an `Object` and callback. The `Object` has the following properties.\n- `pc` - a `Number` representing the program counter\n- `opcode` - the next opcode to be ran\n- `gasLeft` - a `bignum` standing for the amount of gasLeft\n- `stack` - an `Array` of `Buffers` containing the stack.\n- `storageTrie` - the storage [trie](https://github.com/wanderer/merkle-patricia-tree) for the account\n- `account` - the [`Account`](https://github.com/ethereum/ethereumjs-account) which owns the code running.\n- `address` - the address of the `account`\n- `depth` - the current number of calls deep the contract is\n- `memory` - the memory of the VM as a `buffer`\n- `cache` - The account cache. Contains all the accounts loaded from the trie. It is an instance of [functional red black tree](https://www.npmjs.com/package/functional-red-black-tree)\n\n#### `newContract`\nThe `newContract` event is given an `Object` and callback. The `Object` has the following properties.\n- `address`: The created address for the new contract (type `Buffer | Uint8Array`)\n- `code`: The deployment bytecode for reference (type `Buffer | Uint8Array`)\n\n#### `beforeBlock`\nEmits the block that is about to be processed.\n\n#### `afterBlock`\nEmits the results of the processing a block.\n\n#### `beforeTx`\nEmits the Transaction that is about to be processed.\n\n#### `afterTx`\nEmits the result of the transaction.\n\n\n# Internal Structure\nThe VM processes state changes at many levels.\n\n* runBlockchain\n  * for every block, runBlock\n* runBlock\n  * for every tx, runTx\n  * pay miner and uncles\n* runTx\n  * check sender balance\n  * check sender nonce\n  * runCall\n  * transfer gas charges\n* runCall\n  * checkpoint state\n  * transfer value\n  * load code\n  * runCode\n  * materialize created contracts\n  * revert or commit checkpoint\n* runCode\n  * iterate over code\n  * run op codes\n  * track gas usage\n* OpFns\n  * run individual op code\n  * modify stack\n  * modify memory\n  * calculate fee\n\nThe opFns for `CREATE`, `CALL`, and `CALLCODE` call back up to `runCall`.\n\n\n# TESTING\n\n### Running Tests\n\nTests can be found in the ``tests`` directory, with ``FORK_CONFIG`` set in ``tests/tester.js``. There are test runners for [State tests](http://www.ethdocs.org/en/latest/contracts-and-transactions/ethereum-tests/state_tests/index.html) and [Blockchain tests](http://www.ethdocs.org/en/latest/contracts-and-transactions/ethereum-tests/blockchain_tests/index.html). VM tests are disabled since Frontier gas costs are not supported any more. Tests are then executed by the [ethereumjs-testing](https://github.com/ethereumjs/ethereumjs-testing) utility library using the official client-independent [Ethereum tests](https://github.com/ethereum/tests).\n\nFor a wider picture about how to use tests to implement EIPs you can have a look at this [reddit post](https://www.reddit.com/r/ethereum/comments/6kc5g3/ethereumjs_team_is_seeking_contributors/)\nor the associated YouTube video introduction to [core development with Ethereumjs-vm](https://www.youtube.com/watch?v=L0BVDl6HZzk&feature=youtu.be).\n\n#### Running different Test Types\n\nRunning all the tests:\n\n`npm test`\n\nRunning the State tests:\n\n`node ./tests/tester -s`\n\nRunning the Blockchain tests:\n\n`node ./tests/tester -b`\n\nState tests and Blockchain tests can also be run against the ``dist`` folder (default: ``lib``):\n  \n`node ./tests/tester -b --dist`\n\nState tests run significantly faster than Blockchain tests, so it is often a good choice to start fixing State tests.\n\n#### Running Specific Tests\n\nRunning all the blockchain tests in a file:\n\n`node ./tests/tester -b --file='randomStatetest303'`\n\nRunning tests from a specific directory:\n\n`node ./tests/tester -b --dir='bcBlockGasLimitTest'`\n\nRunning a specific state test case:\n\n`node ./tests/tester -s --test='stackOverflow'`\n\nOnly run test cases with selected ``data``, ``gas`` and/or ``value`` values (see \n[attribute description](http://ethereum-tests.readthedocs.io/en/latest/test_types/state_tests.html) in \ntest docs), provided by the index of the array element in the test ``transaction`` section:\n\n`node tests/tester -s --test='CreateCollisionToEmpty' --data=0 --gas=1 --value=0`\n\nRun a state test from a specified source file not under the ``tests`` directory:\n`node ./tests/tester -s --customStateTest='{path_to_file}'`\n\n#### Skipping Tests\n\nThere are three types of skip lists (``BROKEN``, ``PERMANENT`` and ``SLOW``) which\ncan be found in ``tests/tester.js``. By default tests from all skip lists are omitted.\n\nYou can change this behaviour with:\n\n`node tests/tester -s --skip=BROKEN,PERMANENT`\n\nto skip only the ``BROKEN`` and ``PERMANENT`` tests and include the ``SLOW`` tests.\nThere are also the keywords ``NONE`` or ``ALL`` for convenience.\n\nIt is also possible to only run the tests from the skip lists:\n\n`node tests/tester -s --runSkipped=SLOW`\n\n### Debugging\n\n#### Local Debugging\n\nFor state tests you can use the ``--jsontrace`` flag to output opcode trace information.\n\nBlockchain tests support `--debug` to verify the postState:\n\n`node ./tests/tester -b  --debug --test='ZeroValue_SELFDESTRUCT_ToOneStorageKey_OOGRevert_d0g0v0_EIP158'`\n\nAll/most State tests are replicated as Blockchain tests in a ``GeneralStateTests`` [sub directory](https://github.com/ethereum/tests/tree/develop/BlockchainTests/GeneralStateTests) in the Ethereum tests repo, so for debugging single test cases the Blockchain test version of the State test can be used.\n\n#### Debugging Tools\n\nFor comparing ``EVM`` traces [here](https://gist.github.com/cdetrio/41172f374ae32047a6c9e97fa9d09ad0) are some instructions for setting up ``pyethereum`` to generate corresponding traces for state tests.\n\nCompare TAP output from blockchain/state tests and produces concise diff of the differences between them (example):\n\n```\ncurl https://gist.githubusercontent.com/jwasinger/6cef66711b5e0787667ceb3db6bea0dc/raw/0740f03b4ce90d0955d5aba1e0c30ce698c7145a/gistfile1.txt > output-wip-byzantium.txt\ncurl https://gist.githubusercontent.com/jwasinger/e7004e82426ff0a7137a88d273f11819/raw/66fbd58722747ebe4f7006cee59bbe22461df8eb/gistfile1.txt > output-master.txt\npython utils/diffTestOutput.py output-wip-byzantium.txt output-master.txt\n```\n\nAn extremely rich and powerful toolbox is the [evmlab](https://github.com/holiman/evmlab) from ``holiman``, both for debugging and creating new test cases or example data.\n\n\n# LICENSE\n[MPL-2.0](https://www.mozilla.org/MPL/2.0/)\n","readmeFilename":"README.md"}