@feelyourprotocol/evm 8141.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +373 -0
- package/README.md +690 -0
- package/dist/cjs/binaryTreeAccessWitness.d.ts +61 -0
- package/dist/cjs/binaryTreeAccessWitness.d.ts.map +1 -0
- package/dist/cjs/binaryTreeAccessWitness.js +314 -0
- package/dist/cjs/binaryTreeAccessWitness.js.map +1 -0
- package/dist/cjs/chunkCache.d.ts +13 -0
- package/dist/cjs/chunkCache.d.ts.map +1 -0
- package/dist/cjs/chunkCache.js +30 -0
- package/dist/cjs/chunkCache.js.map +1 -0
- package/dist/cjs/constructors.d.ts +11 -0
- package/dist/cjs/constructors.d.ts.map +1 -0
- package/dist/cjs/constructors.js +30 -0
- package/dist/cjs/constructors.js.map +1 -0
- package/dist/cjs/eip7708.d.ts +24 -0
- package/dist/cjs/eip7708.d.ts.map +1 -0
- package/dist/cjs/eip7708.js +37 -0
- package/dist/cjs/eip7708.js.map +1 -0
- package/dist/cjs/eof/constants.d.ts +22 -0
- package/dist/cjs/eof/constants.d.ts.map +1 -0
- package/dist/cjs/eof/constants.js +31 -0
- package/dist/cjs/eof/constants.js.map +1 -0
- package/dist/cjs/eof/container.d.ts +87 -0
- package/dist/cjs/eof/container.d.ts.map +1 -0
- package/dist/cjs/eof/container.js +380 -0
- package/dist/cjs/eof/container.js.map +1 -0
- package/dist/cjs/eof/errors.d.ts +66 -0
- package/dist/cjs/eof/errors.d.ts.map +1 -0
- package/dist/cjs/eof/errors.js +200 -0
- package/dist/cjs/eof/errors.js.map +1 -0
- package/dist/cjs/eof/setup.d.ts +9 -0
- package/dist/cjs/eof/setup.d.ts.map +1 -0
- package/dist/cjs/eof/setup.js +26 -0
- package/dist/cjs/eof/setup.js.map +1 -0
- package/dist/cjs/eof/stackDelta.d.ts +10 -0
- package/dist/cjs/eof/stackDelta.d.ts.map +1 -0
- package/dist/cjs/eof/stackDelta.js +164 -0
- package/dist/cjs/eof/stackDelta.js.map +1 -0
- package/dist/cjs/eof/util.d.ts +8 -0
- package/dist/cjs/eof/util.d.ts.map +1 -0
- package/dist/cjs/eof/util.js +18 -0
- package/dist/cjs/eof/util.js.map +1 -0
- package/dist/cjs/eof/verify.d.ts +38 -0
- package/dist/cjs/eof/verify.d.ts.map +1 -0
- package/dist/cjs/eof/verify.js +436 -0
- package/dist/cjs/eof/verify.js.map +1 -0
- package/dist/cjs/errors.d.ts +40 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +43 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/evm.d.ts +181 -0
- package/dist/cjs/evm.d.ts.map +1 -0
- package/dist/cjs/evm.js +1142 -0
- package/dist/cjs/evm.js.map +1 -0
- package/dist/cjs/frameContext.d.ts +50 -0
- package/dist/cjs/frameContext.d.ts.map +1 -0
- package/dist/cjs/frameContext.js +17 -0
- package/dist/cjs/frameContext.js.map +1 -0
- package/dist/cjs/index.d.ts +18 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +43 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interpreter.d.ts +361 -0
- package/dist/cjs/interpreter.d.ts.map +1 -0
- package/dist/cjs/interpreter.js +1057 -0
- package/dist/cjs/interpreter.js.map +1 -0
- package/dist/cjs/journal.d.ts +69 -0
- package/dist/cjs/journal.d.ts.map +1 -0
- package/dist/cjs/journal.js +247 -0
- package/dist/cjs/journal.js.map +1 -0
- package/dist/cjs/logger.d.ts +38 -0
- package/dist/cjs/logger.d.ts.map +1 -0
- package/dist/cjs/logger.js +126 -0
- package/dist/cjs/logger.js.map +1 -0
- package/dist/cjs/memory.d.ts +29 -0
- package/dist/cjs/memory.d.ts.map +1 -0
- package/dist/cjs/memory.js +75 -0
- package/dist/cjs/memory.js.map +1 -0
- package/dist/cjs/message.d.ts +70 -0
- package/dist/cjs/message.d.ts.map +1 -0
- package/dist/cjs/message.js +51 -0
- package/dist/cjs/message.js.map +1 -0
- package/dist/cjs/opcodes/EIP1283.d.ts +13 -0
- package/dist/cjs/opcodes/EIP1283.d.ts.map +1 -0
- package/dist/cjs/opcodes/EIP1283.js +58 -0
- package/dist/cjs/opcodes/EIP1283.js.map +1 -0
- package/dist/cjs/opcodes/EIP2200.d.ts +13 -0
- package/dist/cjs/opcodes/EIP2200.d.ts.map +1 -0
- package/dist/cjs/opcodes/EIP2200.js +64 -0
- package/dist/cjs/opcodes/EIP2200.js.map +1 -0
- package/dist/cjs/opcodes/EIP2929.d.ts +68 -0
- package/dist/cjs/opcodes/EIP2929.d.ts.map +1 -0
- package/dist/cjs/opcodes/EIP2929.js +146 -0
- package/dist/cjs/opcodes/EIP2929.js.map +1 -0
- package/dist/cjs/opcodes/codes.d.ts +45 -0
- package/dist/cjs/opcodes/codes.d.ts.map +1 -0
- package/dist/cjs/opcodes/codes.js +453 -0
- package/dist/cjs/opcodes/codes.js.map +1 -0
- package/dist/cjs/opcodes/functions.d.ts +11 -0
- package/dist/cjs/opcodes/functions.d.ts.map +1 -0
- package/dist/cjs/opcodes/functions.js +1778 -0
- package/dist/cjs/opcodes/functions.js.map +1 -0
- package/dist/cjs/opcodes/gas.d.ts +15 -0
- package/dist/cjs/opcodes/gas.d.ts.map +1 -0
- package/dist/cjs/opcodes/gas.js +1016 -0
- package/dist/cjs/opcodes/gas.js.map +1 -0
- package/dist/cjs/opcodes/index.d.ts +4 -0
- package/dist/cjs/opcodes/index.d.ts.map +1 -0
- package/dist/cjs/opcodes/index.js +20 -0
- package/dist/cjs/opcodes/index.js.map +1 -0
- package/dist/cjs/opcodes/util.d.ts +86 -0
- package/dist/cjs/opcodes/util.d.ts.map +1 -0
- package/dist/cjs/opcodes/util.js +281 -0
- package/dist/cjs/opcodes/util.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/params.d.ts +3 -0
- package/dist/cjs/params.d.ts.map +1 -0
- package/dist/cjs/params.js +424 -0
- package/dist/cjs/params.js.map +1 -0
- package/dist/cjs/precompiles/01-ecrecover.d.ts +4 -0
- package/dist/cjs/precompiles/01-ecrecover.d.ts.map +1 -0
- package/dist/cjs/precompiles/01-ecrecover.js +58 -0
- package/dist/cjs/precompiles/01-ecrecover.js.map +1 -0
- package/dist/cjs/precompiles/02-sha256.d.ts +4 -0
- package/dist/cjs/precompiles/02-sha256.d.ts.map +1 -0
- package/dist/cjs/precompiles/02-sha256.js +27 -0
- package/dist/cjs/precompiles/02-sha256.js.map +1 -0
- package/dist/cjs/precompiles/03-ripemd160.d.ts +4 -0
- package/dist/cjs/precompiles/03-ripemd160.d.ts.map +1 -0
- package/dist/cjs/precompiles/03-ripemd160.js +26 -0
- package/dist/cjs/precompiles/03-ripemd160.js.map +1 -0
- package/dist/cjs/precompiles/04-identity.d.ts +4 -0
- package/dist/cjs/precompiles/04-identity.d.ts.map +1 -0
- package/dist/cjs/precompiles/04-identity.js +24 -0
- package/dist/cjs/precompiles/04-identity.js.map +1 -0
- package/dist/cjs/precompiles/05-modexp.d.ts +5 -0
- package/dist/cjs/precompiles/05-modexp.d.ts.map +1 -0
- package/dist/cjs/precompiles/05-modexp.js +185 -0
- package/dist/cjs/precompiles/05-modexp.js.map +1 -0
- package/dist/cjs/precompiles/06-bn254-add.d.ts +4 -0
- package/dist/cjs/precompiles/06-bn254-add.d.ts.map +1 -0
- package/dist/cjs/precompiles/06-bn254-add.js +42 -0
- package/dist/cjs/precompiles/06-bn254-add.js.map +1 -0
- package/dist/cjs/precompiles/07-bn254-mul.d.ts +4 -0
- package/dist/cjs/precompiles/07-bn254-mul.d.ts.map +1 -0
- package/dist/cjs/precompiles/07-bn254-mul.js +43 -0
- package/dist/cjs/precompiles/07-bn254-mul.js.map +1 -0
- package/dist/cjs/precompiles/08-bn254-pairing.d.ts +4 -0
- package/dist/cjs/precompiles/08-bn254-pairing.d.ts.map +1 -0
- package/dist/cjs/precompiles/08-bn254-pairing.js +45 -0
- package/dist/cjs/precompiles/08-bn254-pairing.js.map +1 -0
- package/dist/cjs/precompiles/09-blake2f.d.ts +5 -0
- package/dist/cjs/precompiles/09-blake2f.d.ts.map +1 -0
- package/dist/cjs/precompiles/09-blake2f.js +201 -0
- package/dist/cjs/precompiles/09-blake2f.js.map +1 -0
- package/dist/cjs/precompiles/0a-kzg-point-evaluation.d.ts +5 -0
- package/dist/cjs/precompiles/0a-kzg-point-evaluation.d.ts.map +1 -0
- package/dist/cjs/precompiles/0a-kzg-point-evaluation.js +68 -0
- package/dist/cjs/precompiles/0a-kzg-point-evaluation.js.map +1 -0
- package/dist/cjs/precompiles/0b-bls12-g1add.d.ts +4 -0
- package/dist/cjs/precompiles/0b-bls12-g1add.d.ts.map +1 -0
- package/dist/cjs/precompiles/0b-bls12-g1add.js +49 -0
- package/dist/cjs/precompiles/0b-bls12-g1add.js.map +1 -0
- package/dist/cjs/precompiles/0c-bls12-g1msm.d.ts +4 -0
- package/dist/cjs/precompiles/0c-bls12-g1msm.d.ts.map +1 -0
- package/dist/cjs/precompiles/0c-bls12-g1msm.js +62 -0
- package/dist/cjs/precompiles/0c-bls12-g1msm.js.map +1 -0
- package/dist/cjs/precompiles/0d-bls12-g2add.d.ts +4 -0
- package/dist/cjs/precompiles/0d-bls12-g2add.d.ts.map +1 -0
- package/dist/cjs/precompiles/0d-bls12-g2add.js +51 -0
- package/dist/cjs/precompiles/0d-bls12-g2add.js.map +1 -0
- package/dist/cjs/precompiles/0e-bls12-g2msm.d.ts +4 -0
- package/dist/cjs/precompiles/0e-bls12-g2msm.d.ts.map +1 -0
- package/dist/cjs/precompiles/0e-bls12-g2msm.js +60 -0
- package/dist/cjs/precompiles/0e-bls12-g2msm.js.map +1 -0
- package/dist/cjs/precompiles/0f-bls12-pairing.d.ts +4 -0
- package/dist/cjs/precompiles/0f-bls12-pairing.d.ts.map +1 -0
- package/dist/cjs/precompiles/0f-bls12-pairing.js +66 -0
- package/dist/cjs/precompiles/0f-bls12-pairing.js.map +1 -0
- package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.d.ts +4 -0
- package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.d.ts.map +1 -0
- package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.js +44 -0
- package/dist/cjs/precompiles/10-bls12-map-fp-to-g1.js.map +1 -0
- package/dist/cjs/precompiles/100-p256verify.d.ts +4 -0
- package/dist/cjs/precompiles/100-p256verify.d.ts.map +1 -0
- package/dist/cjs/precompiles/100-p256verify.js +131 -0
- package/dist/cjs/precompiles/100-p256verify.js.map +1 -0
- package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.d.ts +4 -0
- package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.d.ts.map +1 -0
- package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.js +47 -0
- package/dist/cjs/precompiles/11-bls12-map-fp2-to-g2.js.map +1 -0
- package/dist/cjs/precompiles/bls12_381/constants.d.ts +10 -0
- package/dist/cjs/precompiles/bls12_381/constants.d.ts.map +1 -0
- package/dist/cjs/precompiles/bls12_381/constants.js +274 -0
- package/dist/cjs/precompiles/bls12_381/constants.js.map +1 -0
- package/dist/cjs/precompiles/bls12_381/index.d.ts +5 -0
- package/dist/cjs/precompiles/bls12_381/index.d.ts.map +1 -0
- package/dist/cjs/precompiles/bls12_381/index.js +24 -0
- package/dist/cjs/precompiles/bls12_381/index.js.map +1 -0
- package/dist/cjs/precompiles/bls12_381/mcl.d.ts +45 -0
- package/dist/cjs/precompiles/bls12_381/mcl.d.ts.map +1 -0
- package/dist/cjs/precompiles/bls12_381/mcl.js +264 -0
- package/dist/cjs/precompiles/bls12_381/mcl.js.map +1 -0
- package/dist/cjs/precompiles/bls12_381/noble.d.ts +39 -0
- package/dist/cjs/precompiles/bls12_381/noble.d.ts.map +1 -0
- package/dist/cjs/precompiles/bls12_381/noble.js +228 -0
- package/dist/cjs/precompiles/bls12_381/noble.js.map +1 -0
- package/dist/cjs/precompiles/bls12_381/util.d.ts +35 -0
- package/dist/cjs/precompiles/bls12_381/util.d.ts.map +1 -0
- package/dist/cjs/precompiles/bls12_381/util.js +68 -0
- package/dist/cjs/precompiles/bls12_381/util.js.map +1 -0
- package/dist/cjs/precompiles/bn254/index.d.ts +3 -0
- package/dist/cjs/precompiles/bn254/index.d.ts.map +1 -0
- package/dist/cjs/precompiles/bn254/index.js +8 -0
- package/dist/cjs/precompiles/bn254/index.js.map +1 -0
- package/dist/cjs/precompiles/bn254/noble.d.ts +13 -0
- package/dist/cjs/precompiles/bn254/noble.d.ts.map +1 -0
- package/dist/cjs/precompiles/bn254/noble.js +124 -0
- package/dist/cjs/precompiles/bn254/noble.js.map +1 -0
- package/dist/cjs/precompiles/bn254/rustbn.d.ts +16 -0
- package/dist/cjs/precompiles/bn254/rustbn.d.ts.map +1 -0
- package/dist/cjs/precompiles/bn254/rustbn.js +33 -0
- package/dist/cjs/precompiles/bn254/rustbn.js.map +1 -0
- package/dist/cjs/precompiles/index.d.ts +67 -0
- package/dist/cjs/precompiles/index.d.ts.map +1 -0
- package/dist/cjs/precompiles/index.js +262 -0
- package/dist/cjs/precompiles/index.js.map +1 -0
- package/dist/cjs/precompiles/types.d.ts +13 -0
- package/dist/cjs/precompiles/types.d.ts.map +1 -0
- package/dist/cjs/precompiles/types.js +3 -0
- package/dist/cjs/precompiles/types.js.map +1 -0
- package/dist/cjs/precompiles/util.d.ts +30 -0
- package/dist/cjs/precompiles/util.d.ts.map +1 -0
- package/dist/cjs/precompiles/util.js +63 -0
- package/dist/cjs/precompiles/util.js.map +1 -0
- package/dist/cjs/stack.d.ts +55 -0
- package/dist/cjs/stack.d.ts.map +1 -0
- package/dist/cjs/stack.js +143 -0
- package/dist/cjs/stack.js.map +1 -0
- package/dist/cjs/stemCache.d.ts +20 -0
- package/dist/cjs/stemCache.d.ts.map +1 -0
- package/dist/cjs/stemCache.js +37 -0
- package/dist/cjs/stemCache.js.map +1 -0
- package/dist/cjs/transientStorage.d.ts +54 -0
- package/dist/cjs/transientStorage.d.ts.map +1 -0
- package/dist/cjs/transientStorage.js +113 -0
- package/dist/cjs/transientStorage.js.map +1 -0
- package/dist/cjs/types.d.ts +465 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +28 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/binaryTreeAccessWitness.d.ts +61 -0
- package/dist/esm/binaryTreeAccessWitness.d.ts.map +1 -0
- package/dist/esm/binaryTreeAccessWitness.js +308 -0
- package/dist/esm/binaryTreeAccessWitness.js.map +1 -0
- package/dist/esm/chunkCache.d.ts +13 -0
- package/dist/esm/chunkCache.d.ts.map +1 -0
- package/dist/esm/chunkCache.js +26 -0
- package/dist/esm/chunkCache.js.map +1 -0
- package/dist/esm/constructors.d.ts +11 -0
- package/dist/esm/constructors.d.ts.map +1 -0
- package/dist/esm/constructors.js +27 -0
- package/dist/esm/constructors.js.map +1 -0
- package/dist/esm/eip7708.d.ts +24 -0
- package/dist/esm/eip7708.d.ts.map +1 -0
- package/dist/esm/eip7708.js +32 -0
- package/dist/esm/eip7708.js.map +1 -0
- package/dist/esm/eof/constants.d.ts +22 -0
- package/dist/esm/eof/constants.d.ts.map +1 -0
- package/dist/esm/eof/constants.js +28 -0
- package/dist/esm/eof/constants.js.map +1 -0
- package/dist/esm/eof/container.d.ts +87 -0
- package/dist/esm/eof/container.d.ts.map +1 -0
- package/dist/esm/eof/container.js +375 -0
- package/dist/esm/eof/container.js.map +1 -0
- package/dist/esm/eof/errors.d.ts +66 -0
- package/dist/esm/eof/errors.d.ts.map +1 -0
- package/dist/esm/eof/errors.js +195 -0
- package/dist/esm/eof/errors.js.map +1 -0
- package/dist/esm/eof/setup.d.ts +9 -0
- package/dist/esm/eof/setup.d.ts.map +1 -0
- package/dist/esm/eof/setup.js +23 -0
- package/dist/esm/eof/setup.js.map +1 -0
- package/dist/esm/eof/stackDelta.d.ts +10 -0
- package/dist/esm/eof/stackDelta.d.ts.map +1 -0
- package/dist/esm/eof/stackDelta.js +161 -0
- package/dist/esm/eof/stackDelta.js.map +1 -0
- package/dist/esm/eof/util.d.ts +8 -0
- package/dist/esm/eof/util.d.ts.map +1 -0
- package/dist/esm/eof/util.js +14 -0
- package/dist/esm/eof/util.js.map +1 -0
- package/dist/esm/eof/verify.d.ts +38 -0
- package/dist/esm/eof/verify.d.ts.map +1 -0
- package/dist/esm/eof/verify.js +432 -0
- package/dist/esm/eof/verify.js.map +1 -0
- package/dist/esm/errors.d.ts +40 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +39 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/evm.d.ts +181 -0
- package/dist/esm/evm.d.ts.map +1 -0
- package/dist/esm/evm.js +1131 -0
- package/dist/esm/evm.js.map +1 -0
- package/dist/esm/frameContext.d.ts +50 -0
- package/dist/esm/frameContext.d.ts.map +1 -0
- package/dist/esm/frameContext.js +14 -0
- package/dist/esm/frameContext.js.map +1 -0
- package/dist/esm/index.d.ts +18 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interpreter.d.ts +361 -0
- package/dist/esm/interpreter.d.ts.map +1 -0
- package/dist/esm/interpreter.js +1054 -0
- package/dist/esm/interpreter.js.map +1 -0
- package/dist/esm/journal.d.ts +69 -0
- package/dist/esm/journal.d.ts.map +1 -0
- package/dist/esm/journal.js +243 -0
- package/dist/esm/journal.js.map +1 -0
- package/dist/esm/logger.d.ts +38 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +121 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/memory.d.ts +29 -0
- package/dist/esm/memory.d.ts.map +1 -0
- package/dist/esm/memory.js +71 -0
- package/dist/esm/memory.js.map +1 -0
- package/dist/esm/message.d.ts +70 -0
- package/dist/esm/message.d.ts.map +1 -0
- package/dist/esm/message.js +47 -0
- package/dist/esm/message.js.map +1 -0
- package/dist/esm/opcodes/EIP1283.d.ts +13 -0
- package/dist/esm/opcodes/EIP1283.d.ts.map +1 -0
- package/dist/esm/opcodes/EIP1283.js +55 -0
- package/dist/esm/opcodes/EIP1283.js.map +1 -0
- package/dist/esm/opcodes/EIP2200.d.ts +13 -0
- package/dist/esm/opcodes/EIP2200.d.ts.map +1 -0
- package/dist/esm/opcodes/EIP2200.js +61 -0
- package/dist/esm/opcodes/EIP2200.js.map +1 -0
- package/dist/esm/opcodes/EIP2929.d.ts +68 -0
- package/dist/esm/opcodes/EIP2929.d.ts.map +1 -0
- package/dist/esm/opcodes/EIP2929.js +138 -0
- package/dist/esm/opcodes/EIP2929.js.map +1 -0
- package/dist/esm/opcodes/codes.d.ts +45 -0
- package/dist/esm/opcodes/codes.d.ts.map +1 -0
- package/dist/esm/opcodes/codes.js +448 -0
- package/dist/esm/opcodes/codes.js.map +1 -0
- package/dist/esm/opcodes/functions.d.ts +11 -0
- package/dist/esm/opcodes/functions.d.ts.map +1 -0
- package/dist/esm/opcodes/functions.js +1775 -0
- package/dist/esm/opcodes/functions.js.map +1 -0
- package/dist/esm/opcodes/gas.d.ts +15 -0
- package/dist/esm/opcodes/gas.d.ts.map +1 -0
- package/dist/esm/opcodes/gas.js +1013 -0
- package/dist/esm/opcodes/gas.js.map +1 -0
- package/dist/esm/opcodes/index.d.ts +4 -0
- package/dist/esm/opcodes/index.d.ts.map +1 -0
- package/dist/esm/opcodes/index.js +4 -0
- package/dist/esm/opcodes/index.js.map +1 -0
- package/dist/esm/opcodes/util.d.ts +86 -0
- package/dist/esm/opcodes/util.d.ts.map +1 -0
- package/dist/esm/opcodes/util.js +257 -0
- package/dist/esm/opcodes/util.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/params.d.ts +3 -0
- package/dist/esm/params.d.ts.map +1 -0
- package/dist/esm/params.js +421 -0
- package/dist/esm/params.js.map +1 -0
- package/dist/esm/precompiles/01-ecrecover.d.ts +4 -0
- package/dist/esm/precompiles/01-ecrecover.d.ts.map +1 -0
- package/dist/esm/precompiles/01-ecrecover.js +55 -0
- package/dist/esm/precompiles/01-ecrecover.js.map +1 -0
- package/dist/esm/precompiles/02-sha256.d.ts +4 -0
- package/dist/esm/precompiles/02-sha256.d.ts.map +1 -0
- package/dist/esm/precompiles/02-sha256.js +24 -0
- package/dist/esm/precompiles/02-sha256.js.map +1 -0
- package/dist/esm/precompiles/03-ripemd160.d.ts +4 -0
- package/dist/esm/precompiles/03-ripemd160.d.ts.map +1 -0
- package/dist/esm/precompiles/03-ripemd160.js +23 -0
- package/dist/esm/precompiles/03-ripemd160.js.map +1 -0
- package/dist/esm/precompiles/04-identity.d.ts +4 -0
- package/dist/esm/precompiles/04-identity.d.ts.map +1 -0
- package/dist/esm/precompiles/04-identity.js +21 -0
- package/dist/esm/precompiles/04-identity.js.map +1 -0
- package/dist/esm/precompiles/05-modexp.d.ts +5 -0
- package/dist/esm/precompiles/05-modexp.d.ts.map +1 -0
- package/dist/esm/precompiles/05-modexp.js +181 -0
- package/dist/esm/precompiles/05-modexp.js.map +1 -0
- package/dist/esm/precompiles/06-bn254-add.d.ts +4 -0
- package/dist/esm/precompiles/06-bn254-add.d.ts.map +1 -0
- package/dist/esm/precompiles/06-bn254-add.js +39 -0
- package/dist/esm/precompiles/06-bn254-add.js.map +1 -0
- package/dist/esm/precompiles/07-bn254-mul.d.ts +4 -0
- package/dist/esm/precompiles/07-bn254-mul.d.ts.map +1 -0
- package/dist/esm/precompiles/07-bn254-mul.js +40 -0
- package/dist/esm/precompiles/07-bn254-mul.js.map +1 -0
- package/dist/esm/precompiles/08-bn254-pairing.d.ts +4 -0
- package/dist/esm/precompiles/08-bn254-pairing.d.ts.map +1 -0
- package/dist/esm/precompiles/08-bn254-pairing.js +42 -0
- package/dist/esm/precompiles/08-bn254-pairing.js.map +1 -0
- package/dist/esm/precompiles/09-blake2f.d.ts +5 -0
- package/dist/esm/precompiles/09-blake2f.d.ts.map +1 -0
- package/dist/esm/precompiles/09-blake2f.js +197 -0
- package/dist/esm/precompiles/09-blake2f.js.map +1 -0
- package/dist/esm/precompiles/0a-kzg-point-evaluation.d.ts +5 -0
- package/dist/esm/precompiles/0a-kzg-point-evaluation.d.ts.map +1 -0
- package/dist/esm/precompiles/0a-kzg-point-evaluation.js +64 -0
- package/dist/esm/precompiles/0a-kzg-point-evaluation.js.map +1 -0
- package/dist/esm/precompiles/0b-bls12-g1add.d.ts +4 -0
- package/dist/esm/precompiles/0b-bls12-g1add.d.ts.map +1 -0
- package/dist/esm/precompiles/0b-bls12-g1add.js +46 -0
- package/dist/esm/precompiles/0b-bls12-g1add.js.map +1 -0
- package/dist/esm/precompiles/0c-bls12-g1msm.d.ts +4 -0
- package/dist/esm/precompiles/0c-bls12-g1msm.d.ts.map +1 -0
- package/dist/esm/precompiles/0c-bls12-g1msm.js +59 -0
- package/dist/esm/precompiles/0c-bls12-g1msm.js.map +1 -0
- package/dist/esm/precompiles/0d-bls12-g2add.d.ts +4 -0
- package/dist/esm/precompiles/0d-bls12-g2add.d.ts.map +1 -0
- package/dist/esm/precompiles/0d-bls12-g2add.js +48 -0
- package/dist/esm/precompiles/0d-bls12-g2add.js.map +1 -0
- package/dist/esm/precompiles/0e-bls12-g2msm.d.ts +4 -0
- package/dist/esm/precompiles/0e-bls12-g2msm.d.ts.map +1 -0
- package/dist/esm/precompiles/0e-bls12-g2msm.js +57 -0
- package/dist/esm/precompiles/0e-bls12-g2msm.js.map +1 -0
- package/dist/esm/precompiles/0f-bls12-pairing.d.ts +4 -0
- package/dist/esm/precompiles/0f-bls12-pairing.d.ts.map +1 -0
- package/dist/esm/precompiles/0f-bls12-pairing.js +63 -0
- package/dist/esm/precompiles/0f-bls12-pairing.js.map +1 -0
- package/dist/esm/precompiles/10-bls12-map-fp-to-g1.d.ts +4 -0
- package/dist/esm/precompiles/10-bls12-map-fp-to-g1.d.ts.map +1 -0
- package/dist/esm/precompiles/10-bls12-map-fp-to-g1.js +41 -0
- package/dist/esm/precompiles/10-bls12-map-fp-to-g1.js.map +1 -0
- package/dist/esm/precompiles/100-p256verify.d.ts +4 -0
- package/dist/esm/precompiles/100-p256verify.d.ts.map +1 -0
- package/dist/esm/precompiles/100-p256verify.js +128 -0
- package/dist/esm/precompiles/100-p256verify.js.map +1 -0
- package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.d.ts +4 -0
- package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.d.ts.map +1 -0
- package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.js +44 -0
- package/dist/esm/precompiles/11-bls12-map-fp2-to-g2.js.map +1 -0
- package/dist/esm/precompiles/bls12_381/constants.d.ts +10 -0
- package/dist/esm/precompiles/bls12_381/constants.d.ts.map +1 -0
- package/dist/esm/precompiles/bls12_381/constants.js +271 -0
- package/dist/esm/precompiles/bls12_381/constants.js.map +1 -0
- package/dist/esm/precompiles/bls12_381/index.d.ts +5 -0
- package/dist/esm/precompiles/bls12_381/index.d.ts.map +1 -0
- package/dist/esm/precompiles/bls12_381/index.js +5 -0
- package/dist/esm/precompiles/bls12_381/index.js.map +1 -0
- package/dist/esm/precompiles/bls12_381/mcl.d.ts +45 -0
- package/dist/esm/precompiles/bls12_381/mcl.d.ts.map +1 -0
- package/dist/esm/precompiles/bls12_381/mcl.js +254 -0
- package/dist/esm/precompiles/bls12_381/mcl.js.map +1 -0
- package/dist/esm/precompiles/bls12_381/noble.d.ts +39 -0
- package/dist/esm/precompiles/bls12_381/noble.d.ts.map +1 -0
- package/dist/esm/precompiles/bls12_381/noble.js +218 -0
- package/dist/esm/precompiles/bls12_381/noble.js.map +1 -0
- package/dist/esm/precompiles/bls12_381/util.d.ts +35 -0
- package/dist/esm/precompiles/bls12_381/util.d.ts.map +1 -0
- package/dist/esm/precompiles/bls12_381/util.js +63 -0
- package/dist/esm/precompiles/bls12_381/util.js.map +1 -0
- package/dist/esm/precompiles/bn254/index.d.ts +3 -0
- package/dist/esm/precompiles/bn254/index.d.ts.map +1 -0
- package/dist/esm/precompiles/bn254/index.js +3 -0
- package/dist/esm/precompiles/bn254/index.js.map +1 -0
- package/dist/esm/precompiles/bn254/noble.d.ts +13 -0
- package/dist/esm/precompiles/bn254/noble.d.ts.map +1 -0
- package/dist/esm/precompiles/bn254/noble.js +120 -0
- package/dist/esm/precompiles/bn254/noble.js.map +1 -0
- package/dist/esm/precompiles/bn254/rustbn.d.ts +16 -0
- package/dist/esm/precompiles/bn254/rustbn.d.ts.map +1 -0
- package/dist/esm/precompiles/bn254/rustbn.js +29 -0
- package/dist/esm/precompiles/bn254/rustbn.js.map +1 -0
- package/dist/esm/precompiles/index.d.ts +67 -0
- package/dist/esm/precompiles/index.d.ts.map +1 -0
- package/dist/esm/precompiles/index.js +251 -0
- package/dist/esm/precompiles/index.js.map +1 -0
- package/dist/esm/precompiles/types.d.ts +13 -0
- package/dist/esm/precompiles/types.d.ts.map +1 -0
- package/dist/esm/precompiles/types.js +2 -0
- package/dist/esm/precompiles/types.js.map +1 -0
- package/dist/esm/precompiles/util.d.ts +30 -0
- package/dist/esm/precompiles/util.d.ts.map +1 -0
- package/dist/esm/precompiles/util.js +57 -0
- package/dist/esm/precompiles/util.js.map +1 -0
- package/dist/esm/stack.d.ts +55 -0
- package/dist/esm/stack.d.ts.map +1 -0
- package/dist/esm/stack.js +139 -0
- package/dist/esm/stack.js.map +1 -0
- package/dist/esm/stemCache.d.ts +20 -0
- package/dist/esm/stemCache.d.ts.map +1 -0
- package/dist/esm/stemCache.js +33 -0
- package/dist/esm/stemCache.js.map +1 -0
- package/dist/esm/transientStorage.d.ts +54 -0
- package/dist/esm/transientStorage.d.ts.map +1 -0
- package/dist/esm/transientStorage.js +109 -0
- package/dist/esm/transientStorage.js.map +1 -0
- package/dist/esm/types.d.ts +465 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +23 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
- package/package.json +98 -0
- package/src/binaryTreeAccessWitness.ts +447 -0
- package/src/chunkCache.ts +36 -0
- package/src/constructors.ts +35 -0
- package/src/eip7708.ts +47 -0
- package/src/eof/constants.ts +36 -0
- package/src/eof/container.ts +495 -0
- package/src/eof/errors.ts +214 -0
- package/src/eof/setup.ts +27 -0
- package/src/eof/stackDelta.ts +169 -0
- package/src/eof/util.ts +16 -0
- package/src/eof/verify.ts +531 -0
- package/src/errors.ts +45 -0
- package/src/evm.ts +1415 -0
- package/src/frameContext.ts +56 -0
- package/src/index.ts +75 -0
- package/src/interpreter.ts +1437 -0
- package/src/journal.ts +317 -0
- package/src/logger.ts +180 -0
- package/src/memory.ts +82 -0
- package/src/message.ts +114 -0
- package/src/opcodes/EIP1283.ts +77 -0
- package/src/opcodes/EIP2200.ts +87 -0
- package/src/opcodes/EIP2929.ts +173 -0
- package/src/opcodes/codes.ts +528 -0
- package/src/opcodes/functions.ts +1937 -0
- package/src/opcodes/gas.ts +1329 -0
- package/src/opcodes/index.ts +3 -0
- package/src/opcodes/util.ts +313 -0
- package/src/params.ts +423 -0
- package/src/precompiles/01-ecrecover.ts +77 -0
- package/src/precompiles/02-sha256.ts +32 -0
- package/src/precompiles/03-ripemd160.ts +32 -0
- package/src/precompiles/04-identity.ts +29 -0
- package/src/precompiles/05-modexp.ts +215 -0
- package/src/precompiles/06-bn254-add.ts +49 -0
- package/src/precompiles/07-bn254-mul.ts +50 -0
- package/src/precompiles/08-bn254-pairing.ts +54 -0
- package/src/precompiles/09-blake2f.ts +243 -0
- package/src/precompiles/0a-kzg-point-evaluation.ts +94 -0
- package/src/precompiles/0b-bls12-g1add.ts +63 -0
- package/src/precompiles/0c-bls12-g1msm.ts +87 -0
- package/src/precompiles/0d-bls12-g2add.ts +66 -0
- package/src/precompiles/0e-bls12-g2msm.ts +84 -0
- package/src/precompiles/0f-bls12-pairing.ts +86 -0
- package/src/precompiles/10-bls12-map-fp-to-g1.ts +58 -0
- package/src/precompiles/100-p256verify.ts +152 -0
- package/src/precompiles/11-bls12-map-fp2-to-g2.ts +61 -0
- package/src/precompiles/bls12_381/constants.ts +278 -0
- package/src/precompiles/bls12_381/index.ts +4 -0
- package/src/precompiles/bls12_381/mcl.ts +376 -0
- package/src/precompiles/bls12_381/noble.ts +307 -0
- package/src/precompiles/bls12_381/util.ts +78 -0
- package/src/precompiles/bn254/index.ts +2 -0
- package/src/precompiles/bn254/noble.ts +156 -0
- package/src/precompiles/bn254/rustbn.ts +35 -0
- package/src/precompiles/index.ts +344 -0
- package/src/precompiles/types.ts +15 -0
- package/src/precompiles/util.ts +70 -0
- package/src/stack.ts +166 -0
- package/src/stemCache.ts +45 -0
- package/src/transientStorage.ts +131 -0
- package/src/types.ts +538 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EOFErrorMessage = void 0;
|
|
4
|
+
exports.validationErrorMsg = validationErrorMsg;
|
|
5
|
+
exports.validationError = validationError;
|
|
6
|
+
const util_1 = require("@feelyourprotocol/util");
|
|
7
|
+
exports.EOFErrorMessage = {
|
|
8
|
+
OUT_OF_BOUNDS: 'Trying to read out of bounds',
|
|
9
|
+
VERIFY_UINT: 'Uint does not match expected value ',
|
|
10
|
+
VERIFY_BYTES: 'Bytes do not match expected value',
|
|
11
|
+
FORMAT: 'err: invalid format',
|
|
12
|
+
MAGIC: 'err: invalid magic',
|
|
13
|
+
VERSION: 'err: invalid eof version',
|
|
14
|
+
KIND_TYPE: 'err: expected kind types',
|
|
15
|
+
KIND_CODE: 'err: expected kind code',
|
|
16
|
+
KIND_DATA: 'err: expected kind data',
|
|
17
|
+
TERMINATOR: 'err: expected terminator',
|
|
18
|
+
TYPE_SIZE: 'missing type size',
|
|
19
|
+
INVALID_TYPE_SIZE: 'err: type section size invalid',
|
|
20
|
+
CODE_SIZE: 'missing code size',
|
|
21
|
+
CODE_SECTION_SIZE: 'code section should be at least one byte',
|
|
22
|
+
INVALID_CODE_SIZE: 'code size does not match type size',
|
|
23
|
+
DATA_SIZE: 'missing data size',
|
|
24
|
+
CONTAINER_SIZE: 'missing container size',
|
|
25
|
+
CONTAINER_SECTION_SIZE: 'container section should at least contain one section and at most 255 sections',
|
|
26
|
+
TYPE_SECTIONS: 'err: mismatch of code sections count and type signatures',
|
|
27
|
+
INPUTS: 'expected inputs',
|
|
28
|
+
OUTPUTS: 'expected outputs',
|
|
29
|
+
MAX_INPUTS: 'inputs exceeds 127, the maximum, got: ',
|
|
30
|
+
MAX_OUTPUTS: 'outputs exceeds 127, the maximum, got: ',
|
|
31
|
+
CODE0_INPUTS: 'first code section should have 0 inputs',
|
|
32
|
+
CODE0_OUTPUTS: 'first code section should have 0x80 (terminating section) outputs',
|
|
33
|
+
MAX_STACK_HEIGHT: 'expected maxStackHeight',
|
|
34
|
+
MAX_STACK_HEIGHT_LIMIT: 'stack height limit of 1024 exceeded: ',
|
|
35
|
+
MIN_CODE_SECTIONS: 'should have at least 1 code section',
|
|
36
|
+
CODE_SECTION: 'expected a code section',
|
|
37
|
+
DATA_SECTION: 'Expected data section',
|
|
38
|
+
CONTAINER_SECTION: 'expected a container section',
|
|
39
|
+
CONTAINER_SECTION_MIN: 'container section should be at least 1 byte',
|
|
40
|
+
INVALID_EOF_CREATE_TARGET: 'EOFCREATE targets an undefined container',
|
|
41
|
+
INVALID_RETURN_CONTRACT_TARGET: 'RETURNCONTRACT targets an undefined container',
|
|
42
|
+
CONTAINER_DOUBLE_TYPE: 'Container is targeted by both EOFCREATE and RETURNCONTRACT',
|
|
43
|
+
UNREACHABLE_CONTAINER_SECTIONS: 'Unreachable containers (by both EOFCREATE and RETURNCONTRACT)',
|
|
44
|
+
CONTAINER_TYPE_ERROR: 'Container contains opcodes which this mode (deployment mode / init code / runtime mode) cannot have',
|
|
45
|
+
DANGLING_BYTES: 'got dangling bytes in body',
|
|
46
|
+
INVALID_OPCODE: 'invalid opcode',
|
|
47
|
+
INVALID_TERMINATOR: 'invalid terminating opcode',
|
|
48
|
+
OPCODE_INTERMEDIATES_OOB: 'invalid opcode: intermediates out-of-bounds',
|
|
49
|
+
INVALID_RJUMP: 'invalid rjump* target',
|
|
50
|
+
INVALID_CALL_TARGET: 'invalid callf/jumpf target',
|
|
51
|
+
INVALID_CALLF_RETURNING: 'invalid callf: calls to non-returning function',
|
|
52
|
+
INVALID_STACK_HEIGHT: 'invalid stack height',
|
|
53
|
+
INVALID_JUMPF: 'invalid jumpf target (output count)',
|
|
54
|
+
INVALID_RETURNING_SECTION: 'invalid returning code section: section is not returning',
|
|
55
|
+
RETURNING_NO_RETURN: 'invalid section: section should return but has no RETF/JUMP to return',
|
|
56
|
+
RJUMPV_TABLE_SIZE0: 'invalid RJUMPV: table size 0',
|
|
57
|
+
UNREACHABLE_CODE_SECTIONS: 'unreachable code sections',
|
|
58
|
+
UNREACHABLE_CODE: 'unreachable code (by forward jumps)',
|
|
59
|
+
DATALOADN_OOB: 'DATALOADN reading out of bounds',
|
|
60
|
+
MAX_STACK_HEIGHT_VIOLATION: 'Max stack height does not match the reported max stack height',
|
|
61
|
+
STACK_UNDERFLOW: 'Stack underflow',
|
|
62
|
+
STACK_OVERFLOW: 'Stack overflow',
|
|
63
|
+
UNSTABLE_STACK: 'Unstable stack (can reach stack under/overflow by jumps)',
|
|
64
|
+
RETF_NO_RETURN: 'Trying to return to undefined function',
|
|
65
|
+
RETURN_STACK_OVERFLOW: 'Return stack overflow',
|
|
66
|
+
INVALID_EXTCALL_TARGET: 'invalid extcall target: address > 20 bytes',
|
|
67
|
+
INVALID_RETURN_CONTRACT_DATA_SIZE: 'invalid RETURNCONTRACT: data size lower than expected',
|
|
68
|
+
};
|
|
69
|
+
function validationErrorMsg(type, ...args) {
|
|
70
|
+
switch (type) {
|
|
71
|
+
case exports.EOFErrorMessage.OUT_OF_BOUNDS: {
|
|
72
|
+
return exports.EOFErrorMessage.OUT_OF_BOUNDS + ` at pos: ${args[0]}: ${args[1]}`;
|
|
73
|
+
}
|
|
74
|
+
case exports.EOFErrorMessage.VERIFY_BYTES: {
|
|
75
|
+
return exports.EOFErrorMessage.VERIFY_BYTES + ` at pos: ${args[0]}: ${args[1]}`;
|
|
76
|
+
}
|
|
77
|
+
case exports.EOFErrorMessage.VERIFY_UINT: {
|
|
78
|
+
return exports.EOFErrorMessage.VERIFY_UINT + `at pos: ${args[0]}: ${args[1]}`;
|
|
79
|
+
}
|
|
80
|
+
case exports.EOFErrorMessage.TYPE_SIZE: {
|
|
81
|
+
return exports.EOFErrorMessage.TYPE_SIZE + args[0];
|
|
82
|
+
}
|
|
83
|
+
case exports.EOFErrorMessage.INVALID_TYPE_SIZE: {
|
|
84
|
+
return exports.EOFErrorMessage.INVALID_TYPE_SIZE + args[0];
|
|
85
|
+
}
|
|
86
|
+
case exports.EOFErrorMessage.INVALID_CODE_SIZE: {
|
|
87
|
+
return exports.EOFErrorMessage.INVALID_CODE_SIZE + args[0];
|
|
88
|
+
}
|
|
89
|
+
case exports.EOFErrorMessage.INPUTS: {
|
|
90
|
+
return `${exports.EOFErrorMessage.INPUTS} - typeSection ${args[0]}`;
|
|
91
|
+
}
|
|
92
|
+
case exports.EOFErrorMessage.OUTPUTS: {
|
|
93
|
+
return `${exports.EOFErrorMessage.OUTPUTS} - typeSection ${args[0]}`;
|
|
94
|
+
}
|
|
95
|
+
case exports.EOFErrorMessage.CODE0_INPUTS: {
|
|
96
|
+
return `first code section should have 0 inputs`;
|
|
97
|
+
}
|
|
98
|
+
case exports.EOFErrorMessage.CODE0_OUTPUTS: {
|
|
99
|
+
return `first code section should have 0 outputs`;
|
|
100
|
+
}
|
|
101
|
+
case exports.EOFErrorMessage.MAX_INPUTS: {
|
|
102
|
+
return exports.EOFErrorMessage.MAX_INPUTS + `${args[1]} - code section ${args[0]}`;
|
|
103
|
+
}
|
|
104
|
+
case exports.EOFErrorMessage.MAX_OUTPUTS: {
|
|
105
|
+
return exports.EOFErrorMessage.MAX_OUTPUTS + `${args[1]} - code section ${args[0]}`;
|
|
106
|
+
}
|
|
107
|
+
case exports.EOFErrorMessage.CODE_SECTION: {
|
|
108
|
+
return `expected code: codeSection ${args[0]}: `;
|
|
109
|
+
}
|
|
110
|
+
case exports.EOFErrorMessage.DATA_SECTION: {
|
|
111
|
+
return exports.EOFErrorMessage.DATA_SECTION;
|
|
112
|
+
}
|
|
113
|
+
case exports.EOFErrorMessage.MAX_STACK_HEIGHT: {
|
|
114
|
+
return `${exports.EOFErrorMessage.MAX_STACK_HEIGHT} - typeSection ${args[0]}: `;
|
|
115
|
+
}
|
|
116
|
+
case exports.EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT: {
|
|
117
|
+
return `${exports.EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT}, got: ${args[1]} - typeSection ${args[0]}`;
|
|
118
|
+
}
|
|
119
|
+
case exports.EOFErrorMessage.DANGLING_BYTES: {
|
|
120
|
+
return exports.EOFErrorMessage.DANGLING_BYTES;
|
|
121
|
+
}
|
|
122
|
+
default: {
|
|
123
|
+
return type;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function validationError(type, ...args) {
|
|
128
|
+
switch (type) {
|
|
129
|
+
case exports.EOFErrorMessage.OUT_OF_BOUNDS: {
|
|
130
|
+
const pos = args[0];
|
|
131
|
+
if (pos === 0 || pos === 2 || pos === 3 || pos === 6) {
|
|
132
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(args[1]);
|
|
133
|
+
}
|
|
134
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.OUT_OF_BOUNDS + ` `);
|
|
135
|
+
}
|
|
136
|
+
case exports.EOFErrorMessage.VERIFY_BYTES: {
|
|
137
|
+
const pos = args[0];
|
|
138
|
+
if (pos === 0 || pos === 2 || pos === 3 || pos === 6) {
|
|
139
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(args[1]);
|
|
140
|
+
}
|
|
141
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.VERIFY_BYTES + ` at pos: ${args[0]}: ${args[1]}`);
|
|
142
|
+
}
|
|
143
|
+
case exports.EOFErrorMessage.VERIFY_UINT: {
|
|
144
|
+
const pos = args[0];
|
|
145
|
+
if (pos === 0 || pos === 2 || pos === 3 || pos === 6 || pos === 18) {
|
|
146
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(args[1]);
|
|
147
|
+
}
|
|
148
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.VERIFY_UINT + `at pos: ${args[0]}: ${args[1]}`);
|
|
149
|
+
}
|
|
150
|
+
case exports.EOFErrorMessage.TYPE_SIZE: {
|
|
151
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.TYPE_SIZE + args[0]);
|
|
152
|
+
}
|
|
153
|
+
case exports.EOFErrorMessage.TYPE_SECTIONS: {
|
|
154
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`${exports.EOFErrorMessage.TYPE_SECTIONS} (types ${args[0]} code ${args[1]})`);
|
|
155
|
+
}
|
|
156
|
+
case exports.EOFErrorMessage.INVALID_TYPE_SIZE: {
|
|
157
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.INVALID_TYPE_SIZE);
|
|
158
|
+
}
|
|
159
|
+
case exports.EOFErrorMessage.INVALID_CODE_SIZE: {
|
|
160
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.INVALID_CODE_SIZE + args[0]);
|
|
161
|
+
}
|
|
162
|
+
case exports.EOFErrorMessage.INPUTS: {
|
|
163
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`${exports.EOFErrorMessage.INPUTS} - typeSection ${args[0]}`);
|
|
164
|
+
}
|
|
165
|
+
case exports.EOFErrorMessage.OUTPUTS: {
|
|
166
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`${exports.EOFErrorMessage.OUTPUTS} - typeSection ${args[0]}`);
|
|
167
|
+
}
|
|
168
|
+
case exports.EOFErrorMessage.CODE0_INPUTS: {
|
|
169
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`first code section should have 0 inputs`);
|
|
170
|
+
}
|
|
171
|
+
case exports.EOFErrorMessage.CODE0_OUTPUTS: {
|
|
172
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`first code section should have 0 outputs`);
|
|
173
|
+
}
|
|
174
|
+
case exports.EOFErrorMessage.MAX_INPUTS: {
|
|
175
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.MAX_INPUTS + `${args[1]} - code section ${args[0]}`);
|
|
176
|
+
}
|
|
177
|
+
case exports.EOFErrorMessage.MAX_OUTPUTS: {
|
|
178
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.MAX_OUTPUTS + `${args[1]} - code section ${args[0]}`);
|
|
179
|
+
}
|
|
180
|
+
case exports.EOFErrorMessage.CODE_SECTION: {
|
|
181
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`expected code: codeSection ${args[0]}: `);
|
|
182
|
+
}
|
|
183
|
+
case exports.EOFErrorMessage.DATA_SECTION: {
|
|
184
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.DATA_SECTION);
|
|
185
|
+
}
|
|
186
|
+
case exports.EOFErrorMessage.MAX_STACK_HEIGHT: {
|
|
187
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`${exports.EOFErrorMessage.MAX_STACK_HEIGHT} - typeSection ${args[0]}: `);
|
|
188
|
+
}
|
|
189
|
+
case exports.EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT: {
|
|
190
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(`${exports.EOFErrorMessage.MAX_STACK_HEIGHT_LIMIT}, got: ${args[1]} - typeSection ${args[0]}`);
|
|
191
|
+
}
|
|
192
|
+
case exports.EOFErrorMessage.DANGLING_BYTES: {
|
|
193
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(exports.EOFErrorMessage.DANGLING_BYTES);
|
|
194
|
+
}
|
|
195
|
+
default: {
|
|
196
|
+
throw (0, util_1.EthereumJSErrorWithoutCode)(type);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/eof/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EOFContainerMode } from './container.ts';
|
|
2
|
+
import type { RunState } from '../interpreter.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Setup EOF by preparing the `RunState` to run EVM in EOF mode
|
|
5
|
+
* @param runState Current run state
|
|
6
|
+
* @param eofMode EOF mode to run in (only changes in case of EOFCREATE)
|
|
7
|
+
*/
|
|
8
|
+
export declare function setupEOF(runState: RunState, eofMode?: EOFContainerMode): void;
|
|
9
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/eof/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,gBAA2C,QAiBhG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupEOF = setupEOF;
|
|
4
|
+
const container_ts_1 = require("./container.js");
|
|
5
|
+
/**
|
|
6
|
+
* Setup EOF by preparing the `RunState` to run EVM in EOF mode
|
|
7
|
+
* @param runState Current run state
|
|
8
|
+
* @param eofMode EOF mode to run in (only changes in case of EOFCREATE)
|
|
9
|
+
*/
|
|
10
|
+
function setupEOF(runState, eofMode = container_ts_1.EOFContainerMode.Default) {
|
|
11
|
+
runState.env.eof = {
|
|
12
|
+
container: new container_ts_1.EOFContainer(runState.code, eofMode),
|
|
13
|
+
eofRunState: {
|
|
14
|
+
returnStack: [], // Return stack for RETF/CALLF/JUMPF
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
// In case that txCallData is set, set the `callData` of `env` to this calldata
|
|
18
|
+
// This ensures that CALLDATA can be read when deploying EOF contracts using txs
|
|
19
|
+
if (runState.env.eof.container.body.txCallData !== undefined) {
|
|
20
|
+
runState.env.callData = runState.env.eof.container.body.txCallData;
|
|
21
|
+
}
|
|
22
|
+
// Set program counter to the first code section
|
|
23
|
+
const pc = runState.env.eof.container.header.getCodePosition(0);
|
|
24
|
+
runState.programCounter = pc;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/eof/setup.ts"],"names":[],"mappings":";;AASA,4BAiBC;AA1BD,iDAA+D;AAI/D;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,QAAkB,EAAE,UAA4B,+BAAgB,CAAC,OAAO;IAC/F,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG;QACjB,SAAS,EAAE,IAAI,2BAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACnD,WAAW,EAAE;YACX,WAAW,EAAE,EAAE,EAAE,oCAAoC;SACtD;KACF,CAAA;IAED,+EAA+E;IAC/E,gFAAgF;IAChF,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7D,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAA;IACpE,CAAC;IAED,gDAAgD;IAChD,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,cAAc,GAAG,EAAE,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackDelta.d.ts","sourceRoot":"","sources":["../../../src/eof/stackDelta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,EAAE;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB,CAAA;CA+JF,CAAA"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Generated using a script, which can be found in ./evm/scripts/stackDeltaGenerator.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.stackDelta = void 0;
|
|
5
|
+
exports.stackDelta = {
|
|
6
|
+
0x00: { inputs: 0, outputs: 0, name: 'STOP', intermediates: 0, terminating: true },
|
|
7
|
+
0x01: { inputs: 2, outputs: 1, name: 'ADD', intermediates: 0 },
|
|
8
|
+
0x02: { inputs: 2, outputs: 1, name: 'MUL', intermediates: 0 },
|
|
9
|
+
0x03: { inputs: 2, outputs: 1, name: 'SUB', intermediates: 0 },
|
|
10
|
+
0x04: { inputs: 2, outputs: 1, name: 'DIV', intermediates: 0 },
|
|
11
|
+
0x05: { inputs: 2, outputs: 1, name: 'SDIV', intermediates: 0 },
|
|
12
|
+
0x06: { inputs: 2, outputs: 1, name: 'MOD', intermediates: 0 },
|
|
13
|
+
0x07: { inputs: 2, outputs: 1, name: 'SMOD', intermediates: 0 },
|
|
14
|
+
0x08: { inputs: 3, outputs: 1, name: 'ADDMOD', intermediates: 0 },
|
|
15
|
+
0x09: { inputs: 3, outputs: 1, name: 'MULMOD', intermediates: 0 },
|
|
16
|
+
0x0a: { inputs: 2, outputs: 1, name: 'EXP', intermediates: 0 },
|
|
17
|
+
0x0b: { inputs: 2, outputs: 1, name: 'SIGNEXTEND', intermediates: 0 },
|
|
18
|
+
0x10: { inputs: 2, outputs: 1, name: 'LT', intermediates: 0 },
|
|
19
|
+
0x11: { inputs: 2, outputs: 1, name: 'GT', intermediates: 0 },
|
|
20
|
+
0x12: { inputs: 2, outputs: 1, name: 'SLT', intermediates: 0 },
|
|
21
|
+
0x13: { inputs: 2, outputs: 1, name: 'SGT', intermediates: 0 },
|
|
22
|
+
0x14: { inputs: 2, outputs: 1, name: 'EQ', intermediates: 0 },
|
|
23
|
+
0x15: { inputs: 1, outputs: 1, name: 'ISZERO', intermediates: 0 },
|
|
24
|
+
0x16: { inputs: 2, outputs: 1, name: 'AND', intermediates: 0 },
|
|
25
|
+
0x17: { inputs: 2, outputs: 1, name: 'OR', intermediates: 0 },
|
|
26
|
+
0x18: { inputs: 2, outputs: 1, name: 'XOR', intermediates: 0 },
|
|
27
|
+
0x19: { inputs: 1, outputs: 1, name: 'NOT', intermediates: 0 },
|
|
28
|
+
0x1a: { inputs: 2, outputs: 1, name: 'BYTE', intermediates: 0 },
|
|
29
|
+
0x1b: { inputs: 2, outputs: 1, name: 'SHL', intermediates: 0 },
|
|
30
|
+
0x1c: { inputs: 2, outputs: 1, name: 'SHR', intermediates: 0 },
|
|
31
|
+
0x1d: { inputs: 2, outputs: 1, name: 'SAR', intermediates: 0 },
|
|
32
|
+
0x20: { inputs: 2, outputs: 1, name: 'SHA3', intermediates: 0 },
|
|
33
|
+
0x30: { inputs: 0, outputs: 1, name: 'ADDRESS', intermediates: 0 },
|
|
34
|
+
0x31: { inputs: 1, outputs: 1, name: 'BALANCE', intermediates: 0 },
|
|
35
|
+
0x32: { inputs: 0, outputs: 1, name: 'ORIGIN', intermediates: 0 },
|
|
36
|
+
0x33: { inputs: 0, outputs: 1, name: 'CALLER', intermediates: 0 },
|
|
37
|
+
0x34: { inputs: 0, outputs: 1, name: 'CALLVALUE', intermediates: 0 },
|
|
38
|
+
0x35: { inputs: 1, outputs: 1, name: 'CALLDATALOAD', intermediates: 0 },
|
|
39
|
+
0x36: { inputs: 0, outputs: 1, name: 'CALLDATASIZE', intermediates: 0 },
|
|
40
|
+
0x37: { inputs: 3, outputs: 0, name: 'CALLDATACOPY', intermediates: 0 },
|
|
41
|
+
0x3a: { inputs: 0, outputs: 1, name: 'GASPRICE', intermediates: 0 },
|
|
42
|
+
0x3d: { inputs: 0, outputs: 1, name: 'RETURNDATASIZE', intermediates: 0 },
|
|
43
|
+
0x3e: { inputs: 3, outputs: 0, name: 'RETURNDATACOPY', intermediates: 0 },
|
|
44
|
+
0x40: { inputs: 1, outputs: 1, name: 'BLOCKHASH', intermediates: 0 },
|
|
45
|
+
0x41: { inputs: 0, outputs: 1, name: 'COINBASE', intermediates: 0 },
|
|
46
|
+
0x42: { inputs: 0, outputs: 1, name: 'TIMESTAMP', intermediates: 0 },
|
|
47
|
+
0x43: { inputs: 0, outputs: 1, name: 'NUMBER', intermediates: 0 },
|
|
48
|
+
0x44: { inputs: 0, outputs: 1, name: 'PREVRANDAO', intermediates: 0 },
|
|
49
|
+
0x45: { inputs: 0, outputs: 1, name: 'GASLIMIT', intermediates: 0 },
|
|
50
|
+
0x4b: { inputs: 0, outputs: 1, name: 'SLOTNUM', intermediates: 0 },
|
|
51
|
+
0x46: { inputs: 0, outputs: 1, name: 'CHAINID', intermediates: 0 },
|
|
52
|
+
0x47: { inputs: 0, outputs: 1, name: 'SELFBALANCE', intermediates: 0 },
|
|
53
|
+
0x48: { inputs: 0, outputs: 1, name: 'BASEFEE', intermediates: 0 },
|
|
54
|
+
0x49: { inputs: 1, outputs: 1, name: 'BLOBAHASH', intermediates: 0 },
|
|
55
|
+
0x4a: { inputs: 0, outputs: 1, name: 'BLOBBASEFEE', intermediates: 0 },
|
|
56
|
+
0x50: { inputs: 1, outputs: 0, name: 'POP', intermediates: 0 },
|
|
57
|
+
0x51: { inputs: 1, outputs: 1, name: 'MLOAD', intermediates: 0 },
|
|
58
|
+
0x52: { inputs: 2, outputs: 0, name: 'MSTORE', intermediates: 0 },
|
|
59
|
+
0x53: { inputs: 2, outputs: 0, name: 'MSTORE8', intermediates: 0 },
|
|
60
|
+
0x54: { inputs: 1, outputs: 1, name: 'SLOAD', intermediates: 0 },
|
|
61
|
+
0x55: { inputs: 2, outputs: 0, name: 'SSTORE', intermediates: 0 },
|
|
62
|
+
0x59: { inputs: 0, outputs: 1, name: 'MSIZE', intermediates: 0 },
|
|
63
|
+
0x5b: { inputs: 0, outputs: 0, name: 'NOOP', intermediates: 0 },
|
|
64
|
+
0x5c: { inputs: 1, outputs: 1, name: 'TLOAD', intermediates: 0 },
|
|
65
|
+
0x5d: { inputs: 2, outputs: 0, name: 'TSTORE', intermediates: 0 },
|
|
66
|
+
0x5e: { inputs: 3, outputs: 0, name: 'MCOPY', intermediates: 0 },
|
|
67
|
+
0x5f: { inputs: 0, outputs: 1, name: 'PUSH0', intermediates: 0 },
|
|
68
|
+
0x60: { inputs: 0, outputs: 1, name: 'PUSH1', intermediates: 1 },
|
|
69
|
+
0x61: { inputs: 0, outputs: 1, name: 'PUSH2', intermediates: 2 },
|
|
70
|
+
0x62: { inputs: 0, outputs: 1, name: 'PUSH3', intermediates: 3 },
|
|
71
|
+
0x63: { inputs: 0, outputs: 1, name: 'PUSH4', intermediates: 4 },
|
|
72
|
+
0x64: { inputs: 0, outputs: 1, name: 'PUSH5', intermediates: 5 },
|
|
73
|
+
0x65: { inputs: 0, outputs: 1, name: 'PUSH6', intermediates: 6 },
|
|
74
|
+
0x66: { inputs: 0, outputs: 1, name: 'PUSH7', intermediates: 7 },
|
|
75
|
+
0x67: { inputs: 0, outputs: 1, name: 'PUSH8', intermediates: 8 },
|
|
76
|
+
0x68: { inputs: 0, outputs: 1, name: 'PUSH9', intermediates: 9 },
|
|
77
|
+
0x69: { inputs: 0, outputs: 1, name: 'PUSH10', intermediates: 10 },
|
|
78
|
+
0x6a: { inputs: 0, outputs: 1, name: 'PUSH11', intermediates: 11 },
|
|
79
|
+
0x6b: { inputs: 0, outputs: 1, name: 'PUSH12', intermediates: 12 },
|
|
80
|
+
0x6c: { inputs: 0, outputs: 1, name: 'PUSH13', intermediates: 13 },
|
|
81
|
+
0x6d: { inputs: 0, outputs: 1, name: 'PUSH14', intermediates: 14 },
|
|
82
|
+
0x6e: { inputs: 0, outputs: 1, name: 'PUSH15', intermediates: 15 },
|
|
83
|
+
0x6f: { inputs: 0, outputs: 1, name: 'PUSH16', intermediates: 16 },
|
|
84
|
+
0x70: { inputs: 0, outputs: 1, name: 'PUSH17', intermediates: 17 },
|
|
85
|
+
0x71: { inputs: 0, outputs: 1, name: 'PUSH18', intermediates: 18 },
|
|
86
|
+
0x72: { inputs: 0, outputs: 1, name: 'PUSH19', intermediates: 19 },
|
|
87
|
+
0x73: { inputs: 0, outputs: 1, name: 'PUSH20', intermediates: 20 },
|
|
88
|
+
0x74: { inputs: 0, outputs: 1, name: 'PUSH21', intermediates: 21 },
|
|
89
|
+
0x75: { inputs: 0, outputs: 1, name: 'PUSH22', intermediates: 22 },
|
|
90
|
+
0x76: { inputs: 0, outputs: 1, name: 'PUSH23', intermediates: 23 },
|
|
91
|
+
0x77: { inputs: 0, outputs: 1, name: 'PUSH24', intermediates: 24 },
|
|
92
|
+
0x78: { inputs: 0, outputs: 1, name: 'PUSH25', intermediates: 25 },
|
|
93
|
+
0x79: { inputs: 0, outputs: 1, name: 'PUSH26', intermediates: 26 },
|
|
94
|
+
0x7a: { inputs: 0, outputs: 1, name: 'PUSH27', intermediates: 27 },
|
|
95
|
+
0x7b: { inputs: 0, outputs: 1, name: 'PUSH28', intermediates: 28 },
|
|
96
|
+
0x7c: { inputs: 0, outputs: 1, name: 'PUSH29', intermediates: 29 },
|
|
97
|
+
0x7d: { inputs: 0, outputs: 1, name: 'PUSH30', intermediates: 30 },
|
|
98
|
+
0x7e: { inputs: 0, outputs: 1, name: 'PUSH31', intermediates: 31 },
|
|
99
|
+
0x7f: { inputs: 0, outputs: 1, name: 'PUSH32', intermediates: 32 },
|
|
100
|
+
0x80: { inputs: 1, outputs: 2, name: 'DUP1', intermediates: 0 },
|
|
101
|
+
0x81: { inputs: 2, outputs: 3, name: 'DUP2', intermediates: 0 },
|
|
102
|
+
0x82: { inputs: 3, outputs: 4, name: 'DUP3', intermediates: 0 },
|
|
103
|
+
0x83: { inputs: 4, outputs: 5, name: 'DUP4', intermediates: 0 },
|
|
104
|
+
0x84: { inputs: 5, outputs: 6, name: 'DUP5', intermediates: 0 },
|
|
105
|
+
0x85: { inputs: 6, outputs: 7, name: 'DUP6', intermediates: 0 },
|
|
106
|
+
0x86: { inputs: 7, outputs: 8, name: 'DUP7', intermediates: 0 },
|
|
107
|
+
0x87: { inputs: 8, outputs: 9, name: 'DUP8', intermediates: 0 },
|
|
108
|
+
0x88: { inputs: 9, outputs: 10, name: 'DUP9', intermediates: 0 },
|
|
109
|
+
0x89: { inputs: 10, outputs: 11, name: 'DUP10', intermediates: 0 },
|
|
110
|
+
0x8a: { inputs: 11, outputs: 12, name: 'DUP11', intermediates: 0 },
|
|
111
|
+
0x8b: { inputs: 12, outputs: 13, name: 'DUP12', intermediates: 0 },
|
|
112
|
+
0x8c: { inputs: 13, outputs: 14, name: 'DUP13', intermediates: 0 },
|
|
113
|
+
0x8d: { inputs: 14, outputs: 15, name: 'DUP14', intermediates: 0 },
|
|
114
|
+
0x8e: { inputs: 15, outputs: 16, name: 'DUP15', intermediates: 0 },
|
|
115
|
+
0x8f: { inputs: 16, outputs: 17, name: 'DUP16', intermediates: 0 },
|
|
116
|
+
0x90: { inputs: 2, outputs: 2, name: 'SWAP1', intermediates: 0 },
|
|
117
|
+
0x91: { inputs: 3, outputs: 3, name: 'SWAP2', intermediates: 0 },
|
|
118
|
+
0x92: { inputs: 4, outputs: 4, name: 'SWAP3', intermediates: 0 },
|
|
119
|
+
0x93: { inputs: 5, outputs: 5, name: 'SWAP4', intermediates: 0 },
|
|
120
|
+
0x94: { inputs: 6, outputs: 6, name: 'SWAP5', intermediates: 0 },
|
|
121
|
+
0x95: { inputs: 7, outputs: 7, name: 'SWAP6', intermediates: 0 },
|
|
122
|
+
0x96: { inputs: 8, outputs: 8, name: 'SWAP7', intermediates: 0 },
|
|
123
|
+
0x97: { inputs: 9, outputs: 9, name: 'SWAP8', intermediates: 0 },
|
|
124
|
+
0x98: { inputs: 10, outputs: 10, name: 'SWAP9', intermediates: 0 },
|
|
125
|
+
0x99: { inputs: 11, outputs: 11, name: 'SWAP10', intermediates: 0 },
|
|
126
|
+
0x9a: { inputs: 12, outputs: 12, name: 'SWAP11', intermediates: 0 },
|
|
127
|
+
0x9b: { inputs: 13, outputs: 13, name: 'SWAP12', intermediates: 0 },
|
|
128
|
+
0x9c: { inputs: 14, outputs: 14, name: 'SWAP13', intermediates: 0 },
|
|
129
|
+
0x9d: { inputs: 15, outputs: 15, name: 'SWAP14', intermediates: 0 },
|
|
130
|
+
0x9e: { inputs: 16, outputs: 16, name: 'SWAP15', intermediates: 0 },
|
|
131
|
+
0x9f: { inputs: 17, outputs: 17, name: 'SWAP16', intermediates: 0 },
|
|
132
|
+
0xa0: { inputs: 2, outputs: 0, name: 'LOG0', intermediates: 0 },
|
|
133
|
+
0xa1: { inputs: 3, outputs: 0, name: 'LOG1', intermediates: 0 },
|
|
134
|
+
0xa2: { inputs: 4, outputs: 0, name: 'LOG2', intermediates: 0 },
|
|
135
|
+
0xa3: { inputs: 5, outputs: 0, name: 'LOG3', intermediates: 0 },
|
|
136
|
+
0xa4: { inputs: 6, outputs: 0, name: 'LOG4', intermediates: 0 },
|
|
137
|
+
0xd0: { inputs: 1, outputs: 1, name: 'DATALOAD', intermediates: 0 },
|
|
138
|
+
0xd1: { inputs: 0, outputs: 1, name: 'DATALOADN', intermediates: 2 },
|
|
139
|
+
0xd2: { inputs: 0, outputs: 1, name: 'DATASIZE', intermediates: 0 },
|
|
140
|
+
0xd3: { inputs: 3, outputs: 0, name: 'DATACOPY', intermediates: 0 },
|
|
141
|
+
0xe0: { inputs: 0, outputs: 0, name: 'RJUMP', intermediates: 2 },
|
|
142
|
+
0xe1: { inputs: 1, outputs: 0, name: 'RJUMPI', intermediates: 2 },
|
|
143
|
+
// NOTE: for RJUMPV the intermediate byte is set to 0, this has to do with the validation algorithm specifics
|
|
144
|
+
// This has to do with the dynamic intermediate size of RJUMPV, which depends upon the table size byte right after RJUMPV
|
|
145
|
+
0xe2: { inputs: 1, outputs: 0, name: 'RJUMPV', intermediates: 0 },
|
|
146
|
+
// CALLF special case for stack validation algorithm: the inputs and outputs MUST stay 0
|
|
147
|
+
// (this is currently the case also in EVM)
|
|
148
|
+
0xe3: { inputs: 0, outputs: 0, name: 'CALLF', intermediates: 2 },
|
|
149
|
+
0xe4: { inputs: 0, outputs: 0, name: 'RETF', intermediates: 0, terminating: true },
|
|
150
|
+
0xe5: { inputs: 0, outputs: 0, name: 'JUMPF', intermediates: 2, terminating: true },
|
|
151
|
+
0xe6: { inputs: 0, outputs: 1, name: 'DUPN', intermediates: 1 },
|
|
152
|
+
0xe7: { inputs: 0, outputs: 0, name: 'SWAPN', intermediates: 1 },
|
|
153
|
+
0xe8: { inputs: 0, outputs: 0, name: 'EXCHANGE', intermediates: 1 },
|
|
154
|
+
0xec: { inputs: 4, outputs: 1, name: 'EOFCREATE', intermediates: 1 },
|
|
155
|
+
0xee: { inputs: 2, outputs: 0, name: 'RETURNCONTRACT', intermediates: 1, terminating: true },
|
|
156
|
+
0xf3: { inputs: 2, outputs: 0, name: 'RETURN', intermediates: 0, terminating: true },
|
|
157
|
+
0xf7: { inputs: 1, outputs: 1, name: 'RETURNDATALOAD', intermediates: 0 },
|
|
158
|
+
0xf8: { inputs: 4, outputs: 1, name: 'EXTCALL', intermediates: 0 },
|
|
159
|
+
0xf9: { inputs: 3, outputs: 1, name: 'EXTDELEGATECALL', intermediates: 0 },
|
|
160
|
+
0xfb: { inputs: 3, outputs: 1, name: 'EXTSTATICCALL', intermediates: 0 },
|
|
161
|
+
0xfd: { inputs: 2, outputs: 0, name: 'REVERT', intermediates: 0, terminating: true },
|
|
162
|
+
0xfe: { inputs: 0, outputs: 0, name: 'INVALID', intermediates: 0, terminating: true },
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=stackDelta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackDelta.js","sourceRoot":"","sources":["../../../src/eof/stackDelta.ts"],"names":[],"mappings":"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AAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAE;IACjE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAC/D,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAClE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;IAChE,IAAI,EAAE,EAAE,M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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const EOFBYTES: Uint8Array<ArrayBuffer>;
|
|
2
|
+
export declare const EOFHASH: Uint8Array<ArrayBufferLike>;
|
|
3
|
+
/**
|
|
4
|
+
* Returns `true` if `code` is an EOF contract, otherwise `false`
|
|
5
|
+
* @param code Code to test
|
|
6
|
+
*/
|
|
7
|
+
export declare function isEOF(code: Uint8Array): boolean;
|
|
8
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/eof/util.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,yBAAkC,CAAA;AACvD,eAAO,MAAM,OAAO,6BAAuB,CAAA;AAE3C;;;GAGG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAG/C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EOFHASH = exports.EOFBYTES = void 0;
|
|
4
|
+
exports.isEOF = isEOF;
|
|
5
|
+
const util_1 = require("@feelyourprotocol/util");
|
|
6
|
+
const sha3_js_1 = require("@noble/hashes/sha3.js");
|
|
7
|
+
const constants_ts_1 = require("./constants.js");
|
|
8
|
+
exports.EOFBYTES = new Uint8Array([constants_ts_1.FORMAT, constants_ts_1.MAGIC]);
|
|
9
|
+
exports.EOFHASH = (0, sha3_js_1.keccak_256)(exports.EOFBYTES);
|
|
10
|
+
/**
|
|
11
|
+
* Returns `true` if `code` is an EOF contract, otherwise `false`
|
|
12
|
+
* @param code Code to test
|
|
13
|
+
*/
|
|
14
|
+
function isEOF(code) {
|
|
15
|
+
const check = code.subarray(0, exports.EOFBYTES.length);
|
|
16
|
+
return (0, util_1.equalsBytes)(exports.EOFBYTES, check);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/eof/util.ts"],"names":[],"mappings":";;;AAYA,sBAGC;AAfD,2CAA8C;AAC9C,mDAAkD;AAElD,iDAA8C;AAEjC,QAAA,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,qBAAM,EAAE,oBAAK,CAAC,CAAC,CAAA;AAC1C,QAAA,OAAO,GAAG,IAAA,oBAAU,EAAC,gBAAQ,CAAC,CAAA;AAE3C;;;GAGG;AACH,SAAgB,KAAK,CAAC,IAAgB;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,gBAAQ,CAAC,MAAM,CAAC,CAAA;IAC/C,OAAO,IAAA,kBAAW,EAAC,gBAAQ,EAAE,KAAK,CAAC,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EVM } from '../evm.ts';
|
|
2
|
+
import type { EOFContainer } from './container.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Note for reviewers regarding these flags: these only reside inside `verify.ts` (this file)
|
|
5
|
+
* and `container.ts`. For `container.ts`, the only behavior which ever changes is in the `DeploymentCode` mode
|
|
6
|
+
* This `DeploymentCode` mode means that the subcontainer is flagged in such way that this container is launched
|
|
7
|
+
* in a "deployment" mode. This means, that the data section of the body is actually allowed to contain
|
|
8
|
+
* less data than is written in the header. However, once the target container (by the container in deployment)
|
|
9
|
+
* mode is returned by RETURNCONTRACT it should have at least the header amount of data.
|
|
10
|
+
* See also "data section lifecycle"
|
|
11
|
+
* Note: the subcontainers of a container can be marked "InitCode" or "DeploymentCode".
|
|
12
|
+
* InitCode cannot contain the instructions RETURN / STOP
|
|
13
|
+
* InitCode is the only container type which can contain RETURNCONTRACT
|
|
14
|
+
* A container can also be marked DeploymentCode, this is a subcontainer targeted by RETURNCONTRACT
|
|
15
|
+
* A container cannot be marked both InitCode and DeploymentCode
|
|
16
|
+
* This flag is thus to distinguish between subcontainers, and also thus also allows for data section sizes
|
|
17
|
+
* lower than the size in the header in case of `InitCode`
|
|
18
|
+
*/
|
|
19
|
+
export type ContainerSectionType = (typeof ContainerSectionType)[keyof typeof ContainerSectionType];
|
|
20
|
+
export declare const ContainerSectionType: {
|
|
21
|
+
readonly InitCode: "initCode";
|
|
22
|
+
readonly DeploymentCode: "deploymentCode";
|
|
23
|
+
readonly RuntimeCode: "runtimeCode";
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* This method validates an EOF container deeply. It will validate the opcodes, validate the stack, and performs
|
|
27
|
+
* various checks such as checking for forbidden opcodes in certain modes, jumps to invalid places, etc.
|
|
28
|
+
* For more information, see "Code validation" of https://github.com/ipsilon/eof/blob/main/spec/eof.md
|
|
29
|
+
* This is a compilation of all the extra validation rules introduced by the various EIPs
|
|
30
|
+
* In particular, the stack validation EIP https://eips.ethereum.org/EIPS/eip-5450 is a big part here
|
|
31
|
+
* @param container EOFContainer to verify
|
|
32
|
+
* @param evm The EVM to run in (pulls opcodes from here)
|
|
33
|
+
* @param mode The validation mode to run in
|
|
34
|
+
* @returns Returns a Map which marks what ContainerSectionType each container is
|
|
35
|
+
* NOTE: this should likely not be a map, since a container section can only be of a single type, not multiple
|
|
36
|
+
*/
|
|
37
|
+
export declare function verifyCode(container: EOFContainer, evm: EVM, mode?: ContainerSectionType): Map<number, ContainerSectionType>;
|
|
38
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/eof/verify.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAA;AAEnG,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAA;AAEV;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,YAAY,EACvB,GAAG,EAAE,GAAG,EACR,IAAI,GAAE,oBAAuD,qCAG9D"}
|