@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,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.leading16ZeroBytesCheck = exports.msmGasUsed = void 0;
|
|
4
|
+
const util_1 = require("@feelyourprotocol/util");
|
|
5
|
+
const ZERO_BYTES_16 = new Uint8Array(16);
|
|
6
|
+
/**
|
|
7
|
+
* Calculates the gas used for the MSM precompiles based on the number of pairs and
|
|
8
|
+
* calculating in some discount in relation to the number of pairs.
|
|
9
|
+
*
|
|
10
|
+
* @param numPairs - Number of pairings provided to the precompile
|
|
11
|
+
* @param gasUsedPerPair - Base gas cost per pairing
|
|
12
|
+
* @param discountTable - Discount table (pair count -> multiplier)
|
|
13
|
+
* @returns Total gas to charge after applying the discount table
|
|
14
|
+
*/
|
|
15
|
+
const msmGasUsed = (numPairs, gasUsedPerPair, discountTable) => {
|
|
16
|
+
const gasDiscountMax = discountTable[discountTable.length - 1][1];
|
|
17
|
+
let gasDiscountMultiplier;
|
|
18
|
+
if (numPairs <= discountTable.length) {
|
|
19
|
+
if (numPairs === 0) {
|
|
20
|
+
gasDiscountMultiplier = 0; // this implicitly sets gasUsed to 0 as per the EIP.
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
gasDiscountMultiplier = discountTable[numPairs - 1][1];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
gasDiscountMultiplier = gasDiscountMax;
|
|
28
|
+
}
|
|
29
|
+
// (numPairs * multiplication_cost * discount) / multiplier
|
|
30
|
+
return (BigInt(numPairs) * gasUsedPerPair * BigInt(gasDiscountMultiplier)) / BigInt(1000);
|
|
31
|
+
};
|
|
32
|
+
exports.msmGasUsed = msmGasUsed;
|
|
33
|
+
/**
|
|
34
|
+
* BLS-specific zero check to check that the top 16 bytes of a 64 byte field element provided
|
|
35
|
+
* are always zero (see EIP notes on field element encoding).
|
|
36
|
+
*
|
|
37
|
+
* Zero byte ranges are expected to be passed in the following format (and so each referencing
|
|
38
|
+
* 16-byte ranges):
|
|
39
|
+
*
|
|
40
|
+
* ```ts
|
|
41
|
+
* const zeroByteRanges = [
|
|
42
|
+
* [0, 16],
|
|
43
|
+
* [64, 80],
|
|
44
|
+
* [128, 144]
|
|
45
|
+
*
|
|
46
|
+
* ]
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param opts - Precompile input wrapper containing the data to inspect
|
|
50
|
+
* @param zeroByteRanges - Ranges (as [start, end]) within which bytes must be zero
|
|
51
|
+
* @param pName - Human readable precompile name for logging
|
|
52
|
+
* @param pairStart - Optional offset into the data when iterating through pairs
|
|
53
|
+
* @returns `true` if every specified range contains only zero bytes
|
|
54
|
+
*/
|
|
55
|
+
const leading16ZeroBytesCheck = (opts, zeroByteRanges, pName, pairStart = 0) => {
|
|
56
|
+
for (const index in zeroByteRanges) {
|
|
57
|
+
const slicedBuffer = opts.data.subarray(zeroByteRanges[index][0] + pairStart, zeroByteRanges[index][1] + pairStart);
|
|
58
|
+
if (!((0, util_1.equalsBytes)(slicedBuffer, ZERO_BYTES_16) === true)) {
|
|
59
|
+
if (opts._debug !== undefined) {
|
|
60
|
+
opts._debug(`${pName} failed: Point not on curve`);
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
};
|
|
67
|
+
exports.leading16ZeroBytesCheck = leading16ZeroBytesCheck;
|
|
68
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/precompiles/bls12_381/util.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAI9C,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;AAExC;;;;;;;;GAQG;AACI,MAAM,UAAU,GAAG,CACxB,QAAgB,EAChB,cAAsB,EACtB,aAAiC,EACjC,EAAE;IACF,MAAM,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,IAAI,qBAAqB,CAAA;IAEzB,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,qBAAqB,GAAG,CAAC,CAAA,CAAC,oDAAoD;QAChF,CAAC;aAAM,CAAC;YACN,qBAAqB,GAAG,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,qBAAqB,GAAG,cAAc,CAAA;IACxC,CAAC;IACD,2DAA2D;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;AAC3F,CAAC,CAAA;AAnBY,QAAA,UAAU,cAmBtB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,MAAM,uBAAuB,GAAG,CACrC,IAAqB,EACrB,cAA0B,EAC1B,KAAa,EACb,SAAS,GAAG,CAAC,EACb,EAAE;IACF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CACrC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EACpC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CACrC,CAAA;QACD,IAAI,CAAC,CAAC,IAAA,kBAAW,EAAC,YAAY,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAA;YACpD,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAnBY,QAAA,uBAAuB,2BAmBnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/precompiles/bn254/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RustBN254 = exports.NobleBN254 = void 0;
|
|
4
|
+
var noble_ts_1 = require("./noble.js");
|
|
5
|
+
Object.defineProperty(exports, "NobleBN254", { enumerable: true, get: function () { return noble_ts_1.NobleBN254; } });
|
|
6
|
+
var rustbn_ts_1 = require("./rustbn.js");
|
|
7
|
+
Object.defineProperty(exports, "RustBN254", { enumerable: true, get: function () { return rustbn_ts_1.RustBN254; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/precompiles/bn254/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAA9B,sGAAA,UAAU,OAAA;AACnB,yCAAuC;AAA9B,sGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EVMBN254Interface } from '../../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Implementation of the `EVMBN254Interface` using the `ethereum-cryptography (`@noble/curves`)
|
|
4
|
+
* JS library, see https://github.com/ethereum/js-ethereum-cryptography.
|
|
5
|
+
*
|
|
6
|
+
* This is the EVM default implementation.
|
|
7
|
+
*/
|
|
8
|
+
export declare class NobleBN254 implements EVMBN254Interface {
|
|
9
|
+
add(input: Uint8Array): Uint8Array;
|
|
10
|
+
mul(input: Uint8Array): Uint8Array;
|
|
11
|
+
pairing(input: Uint8Array): Uint8Array;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=noble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noble.d.ts","sourceRoot":"","sources":["../../../../src/precompiles/bn254/noble.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AA0FvD;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,iBAAiB;IAClD,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAQlC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAWlC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;CAyBvC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NobleBN254 = void 0;
|
|
4
|
+
const util_1 = require("@feelyourprotocol/util");
|
|
5
|
+
const bn254_js_1 = require("@noble/curves/bn254.js");
|
|
6
|
+
const errors_ts_1 = require("../../errors.js");
|
|
7
|
+
const G1_INFINITY_POINT_BYTES = new Uint8Array(64);
|
|
8
|
+
const G2_INFINITY_POINT_BYTES = new Uint8Array(128);
|
|
9
|
+
const G1_POINT_BYTE_LENGTH = 64;
|
|
10
|
+
const G1_ELEMENT_BYTE_LENGTH = 32;
|
|
11
|
+
const G2_POINT_BYTE_LENGTH = 128;
|
|
12
|
+
const ZERO_BUFFER = new Uint8Array(32);
|
|
13
|
+
const ONE_BUFFER = (0, util_1.concatBytes)(new Uint8Array(31), (0, util_1.hexToBytes)('0x01'));
|
|
14
|
+
/**
|
|
15
|
+
* Converts an Uint8Array to a Noble G1 point.
|
|
16
|
+
* @param input Input Uint8Array. Should be 64 bytes
|
|
17
|
+
* @returns Noble G1 point
|
|
18
|
+
*/
|
|
19
|
+
function toG1Point(input) {
|
|
20
|
+
if ((0, util_1.equalsBytes)(input, G1_INFINITY_POINT_BYTES) === true) {
|
|
21
|
+
return bn254_js_1.bn254.G1.Point.ZERO;
|
|
22
|
+
}
|
|
23
|
+
const x = (0, util_1.bytesToBigInt)(input.subarray(0, G1_ELEMENT_BYTE_LENGTH));
|
|
24
|
+
const y = (0, util_1.bytesToBigInt)(input.subarray(G1_ELEMENT_BYTE_LENGTH, G1_POINT_BYTE_LENGTH));
|
|
25
|
+
const G1 = bn254_js_1.bn254.G1.Point.fromAffine({
|
|
26
|
+
x,
|
|
27
|
+
y,
|
|
28
|
+
});
|
|
29
|
+
G1.assertValidity();
|
|
30
|
+
return G1;
|
|
31
|
+
}
|
|
32
|
+
function fromG1Point(input) {
|
|
33
|
+
const xBytes = (0, util_1.setLengthLeft)((0, util_1.bigIntToBytes)(input.x), G1_ELEMENT_BYTE_LENGTH);
|
|
34
|
+
const yBytes = (0, util_1.setLengthLeft)((0, util_1.bigIntToBytes)(input.y), G1_ELEMENT_BYTE_LENGTH);
|
|
35
|
+
return (0, util_1.concatBytes)(xBytes, yBytes);
|
|
36
|
+
}
|
|
37
|
+
function toFp2Point(fpXCoordinate, fpYCoordinate) {
|
|
38
|
+
if ((0, util_1.bytesToBigInt)(fpXCoordinate) >= bn254_js_1.bn254.fields.Fp2.ORDER) {
|
|
39
|
+
throw new errors_ts_1.EVMError(errors_ts_1.EVMError.errorMessages.BN254_FP_NOT_IN_FIELD);
|
|
40
|
+
}
|
|
41
|
+
if ((0, util_1.bytesToBigInt)(fpYCoordinate) >= bn254_js_1.bn254.fields.Fp2.ORDER) {
|
|
42
|
+
throw new errors_ts_1.EVMError(errors_ts_1.EVMError.errorMessages.BN254_FP_NOT_IN_FIELD);
|
|
43
|
+
}
|
|
44
|
+
const fpBytes = (0, util_1.concatBytes)(fpXCoordinate, fpYCoordinate);
|
|
45
|
+
const FP = bn254_js_1.bn254.fields.Fp2.fromBytes(fpBytes);
|
|
46
|
+
return FP;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Converts an Uint8Array to a Noble G2 point. Raises errors if the point is not on the curve
|
|
50
|
+
* and (if activated) if the point is in the subgroup / order check.
|
|
51
|
+
* @param input Input Uint8Array. Should be 256 bytes
|
|
52
|
+
* @returns Noble G2 point
|
|
53
|
+
*/
|
|
54
|
+
function toG2Point(input) {
|
|
55
|
+
if ((0, util_1.equalsBytes)(input, G2_INFINITY_POINT_BYTES) === true) {
|
|
56
|
+
return bn254_js_1.bn254.G2.Point.ZERO;
|
|
57
|
+
}
|
|
58
|
+
const p_x_2 = input.subarray(0, G1_ELEMENT_BYTE_LENGTH);
|
|
59
|
+
const p_x_1 = input.subarray(G1_ELEMENT_BYTE_LENGTH, G1_ELEMENT_BYTE_LENGTH * 2);
|
|
60
|
+
const start2 = G1_ELEMENT_BYTE_LENGTH * 2;
|
|
61
|
+
const p_y_2 = input.subarray(start2, start2 + G1_ELEMENT_BYTE_LENGTH);
|
|
62
|
+
const p_y_1 = input.subarray(start2 + G1_ELEMENT_BYTE_LENGTH, start2 + G1_ELEMENT_BYTE_LENGTH * 2);
|
|
63
|
+
for (const p of [p_x_1, p_x_2, p_y_1, p_y_2]) {
|
|
64
|
+
const pB = (0, util_1.bytesToBigInt)(p);
|
|
65
|
+
if (bn254_js_1.bn254.fields.Fp.create(pB) !== pB) {
|
|
66
|
+
throw new errors_ts_1.EVMError(errors_ts_1.EVMError.errorMessages.BN254_FP_NOT_IN_FIELD);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const Fp2X = toFp2Point(p_x_1, p_x_2);
|
|
70
|
+
const Fp2Y = toFp2Point(p_y_1, p_y_2);
|
|
71
|
+
const pG2 = bn254_js_1.bn254.G2.Point.fromAffine({
|
|
72
|
+
x: Fp2X,
|
|
73
|
+
y: Fp2Y,
|
|
74
|
+
});
|
|
75
|
+
pG2.assertValidity();
|
|
76
|
+
return pG2;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Implementation of the `EVMBN254Interface` using the `ethereum-cryptography (`@noble/curves`)
|
|
80
|
+
* JS library, see https://github.com/ethereum/js-ethereum-cryptography.
|
|
81
|
+
*
|
|
82
|
+
* This is the EVM default implementation.
|
|
83
|
+
*/
|
|
84
|
+
class NobleBN254 {
|
|
85
|
+
add(input) {
|
|
86
|
+
const p1 = toG1Point(input.slice(0, G1_POINT_BYTE_LENGTH));
|
|
87
|
+
const p2 = toG1Point(input.slice(G1_POINT_BYTE_LENGTH, G1_POINT_BYTE_LENGTH * 2));
|
|
88
|
+
const result = fromG1Point(p1.add(p2).toAffine());
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
mul(input) {
|
|
92
|
+
const p1 = toG1Point(input.slice(0, G1_POINT_BYTE_LENGTH));
|
|
93
|
+
const scalar = bn254_js_1.bn254.fields.Fr.create((0, util_1.bytesToBigInt)(input.slice(G1_POINT_BYTE_LENGTH, 96)));
|
|
94
|
+
if (scalar === util_1.BIGINT_0) {
|
|
95
|
+
return G1_INFINITY_POINT_BYTES;
|
|
96
|
+
}
|
|
97
|
+
const result = fromG1Point(p1.multiply(scalar).toAffine());
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
pairing(input) {
|
|
101
|
+
// Extract the pairs from the input
|
|
102
|
+
const pairLength = 192;
|
|
103
|
+
const pairs = [];
|
|
104
|
+
for (let k = 0; k < input.length / pairLength; k++) {
|
|
105
|
+
const pairStart = pairLength * k;
|
|
106
|
+
const G1 = toG1Point(input.subarray(pairStart, pairStart + G1_POINT_BYTE_LENGTH));
|
|
107
|
+
const g2start = pairStart + G1_POINT_BYTE_LENGTH;
|
|
108
|
+
const G2 = toG2Point(input.subarray(g2start, g2start + G2_POINT_BYTE_LENGTH));
|
|
109
|
+
if (G1 === bn254_js_1.bn254.G1.Point.ZERO || G2 === bn254_js_1.bn254.G2.Point.ZERO) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
pairs.push({ g1: G1, g2: G2 });
|
|
113
|
+
}
|
|
114
|
+
const res = bn254_js_1.bn254.pairingBatch(pairs);
|
|
115
|
+
if (bn254_js_1.bn254.fields.Fp12.eql(res, bn254_js_1.bn254.fields.Fp12.ONE) === true) {
|
|
116
|
+
return ONE_BUFFER;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return ZERO_BUFFER;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.NobleBN254 = NobleBN254;
|
|
124
|
+
//# sourceMappingURL=noble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noble.js","sourceRoot":"","sources":["../../../../src/precompiles/bn254/noble.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EVMBN254Interface } from '../../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Implementation of the `EVMBN254Interface` using a WASM wrapper https://github.com/ethereumjs/rustbn.js
|
|
4
|
+
* around the Parity fork of the Zcash bn pairing cryptography library.
|
|
5
|
+
*
|
|
6
|
+
* This can be optionally used to replace the build-in Noble implementation (`NobleBN254`) with
|
|
7
|
+
* a more performant WASM variant. See EVM `bls` constructor option on how to use.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RustBN254 implements EVMBN254Interface {
|
|
10
|
+
protected readonly _rustbn: any;
|
|
11
|
+
constructor(rustbn: any);
|
|
12
|
+
add(input: Uint8Array): Uint8Array;
|
|
13
|
+
mul(input: Uint8Array): Uint8Array;
|
|
14
|
+
pairing(input: Uint8Array): Uint8Array;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=rustbn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rustbn.d.ts","sourceRoot":"","sources":["../../../../src/precompiles/bn254/rustbn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD;;;;;;GAMG;AACH,qBAAa,SAAU,YAAW,iBAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAA;gBAEnB,MAAM,EAAE,GAAG;IAIvB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAMlC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAKlC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;CAKvC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RustBN254 = void 0;
|
|
4
|
+
const util_1 = require("@feelyourprotocol/util");
|
|
5
|
+
/**
|
|
6
|
+
* Implementation of the `EVMBN254Interface` using a WASM wrapper https://github.com/ethereumjs/rustbn.js
|
|
7
|
+
* around the Parity fork of the Zcash bn pairing cryptography library.
|
|
8
|
+
*
|
|
9
|
+
* This can be optionally used to replace the build-in Noble implementation (`NobleBN254`) with
|
|
10
|
+
* a more performant WASM variant. See EVM `bls` constructor option on how to use.
|
|
11
|
+
*/
|
|
12
|
+
class RustBN254 {
|
|
13
|
+
constructor(rustbn) {
|
|
14
|
+
this._rustbn = rustbn;
|
|
15
|
+
}
|
|
16
|
+
add(input) {
|
|
17
|
+
// Using deprecated bytesToUnprefixedHex for performance: rustbn WASM library expects unprefixed hex strings.
|
|
18
|
+
const inputStr = (0, util_1.bytesToUnprefixedHex)(input);
|
|
19
|
+
return (0, util_1.hexToBytes)(this._rustbn.ec_add(inputStr));
|
|
20
|
+
}
|
|
21
|
+
mul(input) {
|
|
22
|
+
// Using deprecated bytesToUnprefixedHex for performance: rustbn WASM library expects unprefixed hex strings.
|
|
23
|
+
const inputHex = (0, util_1.bytesToUnprefixedHex)(input);
|
|
24
|
+
return (0, util_1.hexToBytes)(this._rustbn.ec_mul(inputHex));
|
|
25
|
+
}
|
|
26
|
+
pairing(input) {
|
|
27
|
+
// Using deprecated bytesToUnprefixedHex for performance: rustbn WASM library expects unprefixed hex strings.
|
|
28
|
+
const inputStr = (0, util_1.bytesToUnprefixedHex)(input);
|
|
29
|
+
return (0, util_1.hexToBytes)(this._rustbn.ec_pairing(inputStr));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.RustBN254 = RustBN254;
|
|
33
|
+
//# sourceMappingURL=rustbn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rustbn.js","sourceRoot":"","sources":["../../../../src/precompiles/bn254/rustbn.ts"],"names":[],"mappings":";;;AAAA,2CAAmE;AAInE;;;;;;GAMG;AACH,MAAa,SAAS;IAGpB,YAAY,MAAW;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,GAAG,CAAC,KAAiB;QACnB,6GAA6G;QAC7G,MAAM,QAAQ,GAAG,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAA;QAC5C,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,GAAG,CAAC,KAAiB;QACnB,6GAA6G;QAC7G,MAAM,QAAQ,GAAG,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAA;QAC5C,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,CAAC,KAAiB;QACvB,6GAA6G;QAC7G,MAAM,QAAQ,GAAG,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAA;QAC5C,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtD,CAAC;CACF;AAvBD,8BAuBC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type Address, type PrefixedHexString } from '@feelyourprotocol/util';
|
|
2
|
+
import { MCLBLS, NobleBLS } from './bls12_381/index.ts';
|
|
3
|
+
import { NobleBN254, RustBN254 } from './bn254/index.ts';
|
|
4
|
+
import type { Common } from '@feelyourprotocol/common';
|
|
5
|
+
import type { PrecompileFunc, PrecompileInput } from './types.ts';
|
|
6
|
+
interface PrecompileEntry {
|
|
7
|
+
address: string;
|
|
8
|
+
check: PrecompileAvailabilityCheckType;
|
|
9
|
+
precompile: PrecompileFunc;
|
|
10
|
+
name: string;
|
|
11
|
+
}
|
|
12
|
+
interface Precompiles {
|
|
13
|
+
[key: string]: PrecompileFunc;
|
|
14
|
+
}
|
|
15
|
+
type PrecompileAvailabilityCheckType = PrecompileAvailabilityCheckTypeHardfork | PrecompileAvailabilityCheckTypeEIP;
|
|
16
|
+
export type PrecompileAvailabilityCheck = (typeof PrecompileAvailabilityCheck)[keyof typeof PrecompileAvailabilityCheck];
|
|
17
|
+
export declare const PrecompileAvailabilityCheck: {
|
|
18
|
+
readonly EIP: "eip";
|
|
19
|
+
readonly Hardfork: "hardfork";
|
|
20
|
+
};
|
|
21
|
+
interface PrecompileAvailabilityCheckTypeHardfork {
|
|
22
|
+
type: typeof PrecompileAvailabilityCheck.Hardfork;
|
|
23
|
+
param: string;
|
|
24
|
+
}
|
|
25
|
+
interface PrecompileAvailabilityCheckTypeEIP {
|
|
26
|
+
type: typeof PrecompileAvailabilityCheck.EIP;
|
|
27
|
+
param: number;
|
|
28
|
+
}
|
|
29
|
+
declare const ripemdPrecompileAddress: string;
|
|
30
|
+
declare const precompileEntries: PrecompileEntry[];
|
|
31
|
+
declare const precompiles: Precompiles;
|
|
32
|
+
/**
|
|
33
|
+
* Specifies a precompile to remove from the EVM.
|
|
34
|
+
* The address can be an `Address` instance or a `0x`-prefixed hex string.
|
|
35
|
+
*/
|
|
36
|
+
type DeletePrecompile = {
|
|
37
|
+
address: Address | PrefixedHexString;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Specifies a precompile to add to (or override in) the EVM.
|
|
41
|
+
* The address can be an `Address` instance or a `0x`-prefixed hex string.
|
|
42
|
+
*/
|
|
43
|
+
type AddPrecompile = {
|
|
44
|
+
address: Address | PrefixedHexString;
|
|
45
|
+
function: PrecompileFunc;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* A custom precompile entry: either an addition/override or a deletion.
|
|
49
|
+
*
|
|
50
|
+
* ```ts
|
|
51
|
+
* // Add a custom precompile at a new address
|
|
52
|
+
* const add: CustomPrecompile = {
|
|
53
|
+
* address: '0x0000000000000000000000000000000000ff0001',
|
|
54
|
+
* function: myPrecompileImpl,
|
|
55
|
+
* }
|
|
56
|
+
* // Delete an existing precompile
|
|
57
|
+
* const del: CustomPrecompile = {
|
|
58
|
+
* address: '0x0000000000000000000000000000000000000002',
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
type CustomPrecompile = AddPrecompile | DeletePrecompile;
|
|
63
|
+
declare function getActivePrecompiles(common: Common, customPrecompiles?: CustomPrecompile[]): Map<string, PrecompileFunc>;
|
|
64
|
+
declare function getPrecompileName(addressUnprefixedStr: string): string;
|
|
65
|
+
export { getActivePrecompiles, getPrecompileName, MCLBLS, NobleBLS, NobleBN254, precompileEntries, precompiles, ripemdPrecompileAddress, RustBN254, };
|
|
66
|
+
export type { AddPrecompile, CustomPrecompile, DeletePrecompile, PrecompileFunc, PrecompileInput };
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/precompiles/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,kBAAkB,CAAA;AAoB7F,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjE,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,+BAA+B,CAAA;IACtC,UAAU,EAAE,cAAc,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,WAAW;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAC9B;AAED,KAAK,+BAA+B,GAChC,uCAAuC,GACvC,kCAAkC,CAAA;AAEtC,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAA;AAEhF,eAAO,MAAM,2BAA2B;;;CAG9B,CAAA;AAEV,UAAU,uCAAuC;IAC/C,IAAI,EAAE,OAAO,2BAA2B,CAAC,QAAQ,CAAA;IACjD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,kCAAkC;IAC1C,IAAI,EAAE,OAAO,2BAA2B,CAAC,GAAG,CAAA;IAC5C,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,uBAAuB,QAAkB,CAAA;AAE/C,QAAA,MAAM,iBAAiB,EAAE,eAAe,EAmKvC,CAAA;AAED,QAAA,MAAM,WAAW,EAAE,WAmBlB,CAAA;AAED;;;GAGG;AACH,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAAA;CACrC,CAAA;AAED;;;GAGG;AACH,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAAA;IACpC,QAAQ,EAAE,cAAc,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,CAAA;AASxD,iBAAS,oBAAoB,CAC3B,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,GACrC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAyB7B;AAED,iBAAS,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,UAUtD;AAED,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,SAAS,GACV,CAAA;AAED,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RustBN254 = exports.ripemdPrecompileAddress = exports.precompiles = exports.precompileEntries = exports.NobleBN254 = exports.NobleBLS = exports.MCLBLS = exports.PrecompileAvailabilityCheck = void 0;
|
|
4
|
+
exports.getActivePrecompiles = getActivePrecompiles;
|
|
5
|
+
exports.getPrecompileName = getPrecompileName;
|
|
6
|
+
const common_1 = require("@feelyourprotocol/common");
|
|
7
|
+
const util_1 = require("@feelyourprotocol/util");
|
|
8
|
+
const _0a_kzg_point_evaluation_ts_1 = require("./0a-kzg-point-evaluation.js");
|
|
9
|
+
const _0b_bls12_g1add_ts_1 = require("./0b-bls12-g1add.js");
|
|
10
|
+
const _0c_bls12_g1msm_ts_1 = require("./0c-bls12-g1msm.js");
|
|
11
|
+
const _0d_bls12_g2add_ts_1 = require("./0d-bls12-g2add.js");
|
|
12
|
+
const _0e_bls12_g2msm_ts_1 = require("./0e-bls12-g2msm.js");
|
|
13
|
+
const _0f_bls12_pairing_ts_1 = require("./0f-bls12-pairing.js");
|
|
14
|
+
const _01_ecrecover_ts_1 = require("./01-ecrecover.js");
|
|
15
|
+
const _02_sha256_ts_1 = require("./02-sha256.js");
|
|
16
|
+
const _03_ripemd160_ts_1 = require("./03-ripemd160.js");
|
|
17
|
+
const _04_identity_ts_1 = require("./04-identity.js");
|
|
18
|
+
const _05_modexp_ts_1 = require("./05-modexp.js");
|
|
19
|
+
const _06_bn254_add_ts_1 = require("./06-bn254-add.js");
|
|
20
|
+
const _07_bn254_mul_ts_1 = require("./07-bn254-mul.js");
|
|
21
|
+
const _08_bn254_pairing_ts_1 = require("./08-bn254-pairing.js");
|
|
22
|
+
const _09_blake2f_ts_1 = require("./09-blake2f.js");
|
|
23
|
+
const _10_bls12_map_fp_to_g1_ts_1 = require("./10-bls12-map-fp-to-g1.js");
|
|
24
|
+
const _11_bls12_map_fp2_to_g2_ts_1 = require("./11-bls12-map-fp2-to-g2.js");
|
|
25
|
+
const _100_p256verify_ts_1 = require("./100-p256verify.js");
|
|
26
|
+
const index_ts_1 = require("./bls12_381/index.js");
|
|
27
|
+
Object.defineProperty(exports, "MCLBLS", { enumerable: true, get: function () { return index_ts_1.MCLBLS; } });
|
|
28
|
+
Object.defineProperty(exports, "NobleBLS", { enumerable: true, get: function () { return index_ts_1.NobleBLS; } });
|
|
29
|
+
const index_ts_2 = require("./bn254/index.js");
|
|
30
|
+
Object.defineProperty(exports, "NobleBN254", { enumerable: true, get: function () { return index_ts_2.NobleBN254; } });
|
|
31
|
+
Object.defineProperty(exports, "RustBN254", { enumerable: true, get: function () { return index_ts_2.RustBN254; } });
|
|
32
|
+
exports.PrecompileAvailabilityCheck = {
|
|
33
|
+
EIP: 'eip',
|
|
34
|
+
Hardfork: 'hardfork',
|
|
35
|
+
};
|
|
36
|
+
const BYTES_19 = '00000000000000000000000000000000000000';
|
|
37
|
+
const ripemdPrecompileAddress = BYTES_19 + '03';
|
|
38
|
+
exports.ripemdPrecompileAddress = ripemdPrecompileAddress;
|
|
39
|
+
const precompileEntries = [
|
|
40
|
+
{
|
|
41
|
+
address: BYTES_19 + '01',
|
|
42
|
+
check: {
|
|
43
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
44
|
+
param: common_1.Hardfork.Chainstart,
|
|
45
|
+
},
|
|
46
|
+
precompile: _01_ecrecover_ts_1.precompile01,
|
|
47
|
+
name: 'ECRECOVER (0x01)',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
address: BYTES_19 + '02',
|
|
51
|
+
check: {
|
|
52
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
53
|
+
param: common_1.Hardfork.Chainstart,
|
|
54
|
+
},
|
|
55
|
+
precompile: _02_sha256_ts_1.precompile02,
|
|
56
|
+
name: 'SHA256 (0x02)',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
address: BYTES_19 + '03',
|
|
60
|
+
check: {
|
|
61
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
62
|
+
param: common_1.Hardfork.Chainstart,
|
|
63
|
+
},
|
|
64
|
+
precompile: _03_ripemd160_ts_1.precompile03,
|
|
65
|
+
name: 'RIPEMD160 (0x03)',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
address: BYTES_19 + '04',
|
|
69
|
+
check: {
|
|
70
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
71
|
+
param: common_1.Hardfork.Chainstart,
|
|
72
|
+
},
|
|
73
|
+
precompile: _04_identity_ts_1.precompile04,
|
|
74
|
+
name: 'IDENTITY (0x04)',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
address: BYTES_19 + '05',
|
|
78
|
+
check: {
|
|
79
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
80
|
+
param: common_1.Hardfork.Byzantium,
|
|
81
|
+
},
|
|
82
|
+
precompile: _05_modexp_ts_1.precompile05,
|
|
83
|
+
name: 'MODEXP (0x05)',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
address: BYTES_19 + '06',
|
|
87
|
+
check: {
|
|
88
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
89
|
+
param: common_1.Hardfork.Byzantium,
|
|
90
|
+
},
|
|
91
|
+
precompile: _06_bn254_add_ts_1.precompile06,
|
|
92
|
+
name: 'BN254_ADD (0x06)',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
address: BYTES_19 + '07',
|
|
96
|
+
check: {
|
|
97
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
98
|
+
param: common_1.Hardfork.Byzantium,
|
|
99
|
+
},
|
|
100
|
+
precompile: _07_bn254_mul_ts_1.precompile07,
|
|
101
|
+
name: 'BN254_MUL (0x07)',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
address: BYTES_19 + '08',
|
|
105
|
+
check: {
|
|
106
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
107
|
+
param: common_1.Hardfork.Byzantium,
|
|
108
|
+
},
|
|
109
|
+
precompile: _08_bn254_pairing_ts_1.precompile08,
|
|
110
|
+
name: 'BN254_PAIRING (0x08)',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
address: BYTES_19 + '09',
|
|
114
|
+
check: {
|
|
115
|
+
type: exports.PrecompileAvailabilityCheck.Hardfork,
|
|
116
|
+
param: common_1.Hardfork.Istanbul,
|
|
117
|
+
},
|
|
118
|
+
precompile: _09_blake2f_ts_1.precompile09,
|
|
119
|
+
name: 'BLAKE2f (0x09)',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
address: BYTES_19 + '0a',
|
|
123
|
+
check: {
|
|
124
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
125
|
+
param: 4844,
|
|
126
|
+
},
|
|
127
|
+
precompile: _0a_kzg_point_evaluation_ts_1.precompile0a,
|
|
128
|
+
name: 'KZG_POINT_EVALUATION (0x0a)',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
address: BYTES_19 + '0b',
|
|
132
|
+
check: {
|
|
133
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
134
|
+
param: 2537,
|
|
135
|
+
},
|
|
136
|
+
precompile: _0b_bls12_g1add_ts_1.precompile0b,
|
|
137
|
+
name: 'BLS12_G1ADD (0x0b)',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
address: BYTES_19 + '0c',
|
|
141
|
+
check: {
|
|
142
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
143
|
+
param: 2537,
|
|
144
|
+
},
|
|
145
|
+
precompile: _0c_bls12_g1msm_ts_1.precompile0c,
|
|
146
|
+
name: 'BLS12_G1MSM (0x0c)',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
address: BYTES_19 + '0d',
|
|
150
|
+
check: {
|
|
151
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
152
|
+
param: 2537,
|
|
153
|
+
},
|
|
154
|
+
precompile: _0d_bls12_g2add_ts_1.precompile0d,
|
|
155
|
+
name: 'BLS12_G2ADD (0x0d)',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
address: BYTES_19 + '0e',
|
|
159
|
+
check: {
|
|
160
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
161
|
+
param: 2537,
|
|
162
|
+
},
|
|
163
|
+
precompile: _0e_bls12_g2msm_ts_1.precompile0e,
|
|
164
|
+
name: 'BLS12_G2MSM (0x0e)',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
address: BYTES_19 + '0f',
|
|
168
|
+
check: {
|
|
169
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
170
|
+
param: 2537,
|
|
171
|
+
},
|
|
172
|
+
precompile: _0f_bls12_pairing_ts_1.precompile0f,
|
|
173
|
+
name: 'BLS12_PAIRING (0x0f)',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
address: BYTES_19 + '10',
|
|
177
|
+
check: {
|
|
178
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
179
|
+
param: 2537,
|
|
180
|
+
},
|
|
181
|
+
precompile: _10_bls12_map_fp_to_g1_ts_1.precompile10,
|
|
182
|
+
name: 'BLS12_MAP_FP_TO_G1 (0x10)',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
address: BYTES_19 + '11',
|
|
186
|
+
check: {
|
|
187
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
188
|
+
param: 2537,
|
|
189
|
+
},
|
|
190
|
+
precompile: _11_bls12_map_fp2_to_g2_ts_1.precompile11,
|
|
191
|
+
name: 'BLS12_MAP_FP_TO_G2 (0x11)',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
address: '0000000000000000000000000000000000000100',
|
|
195
|
+
check: {
|
|
196
|
+
type: exports.PrecompileAvailabilityCheck.EIP,
|
|
197
|
+
param: 7951,
|
|
198
|
+
},
|
|
199
|
+
precompile: _100_p256verify_ts_1.precompile100,
|
|
200
|
+
name: 'P256VERIFY (0x100)',
|
|
201
|
+
},
|
|
202
|
+
];
|
|
203
|
+
exports.precompileEntries = precompileEntries;
|
|
204
|
+
const precompiles = {
|
|
205
|
+
[BYTES_19 + '01']: _01_ecrecover_ts_1.precompile01,
|
|
206
|
+
[BYTES_19 + '02']: _02_sha256_ts_1.precompile02,
|
|
207
|
+
[ripemdPrecompileAddress]: _03_ripemd160_ts_1.precompile03,
|
|
208
|
+
[BYTES_19 + '04']: _04_identity_ts_1.precompile04,
|
|
209
|
+
[BYTES_19 + '05']: _05_modexp_ts_1.precompile05,
|
|
210
|
+
[BYTES_19 + '06']: _06_bn254_add_ts_1.precompile06,
|
|
211
|
+
[BYTES_19 + '07']: _07_bn254_mul_ts_1.precompile07,
|
|
212
|
+
[BYTES_19 + '08']: _08_bn254_pairing_ts_1.precompile08,
|
|
213
|
+
[BYTES_19 + '09']: _09_blake2f_ts_1.precompile09,
|
|
214
|
+
[BYTES_19 + '0a']: _0a_kzg_point_evaluation_ts_1.precompile0a,
|
|
215
|
+
[BYTES_19 + '0b']: _0b_bls12_g1add_ts_1.precompile0b,
|
|
216
|
+
[BYTES_19 + '0c']: _0c_bls12_g1msm_ts_1.precompile0c,
|
|
217
|
+
[BYTES_19 + '0d']: _0d_bls12_g2add_ts_1.precompile0d,
|
|
218
|
+
[BYTES_19 + '0e']: _0e_bls12_g2msm_ts_1.precompile0e,
|
|
219
|
+
[BYTES_19 + '0f']: _0f_bls12_pairing_ts_1.precompile0f,
|
|
220
|
+
[BYTES_19 + '10']: _10_bls12_map_fp_to_g1_ts_1.precompile10,
|
|
221
|
+
[BYTES_19 + '11']: _11_bls12_map_fp2_to_g2_ts_1.precompile11,
|
|
222
|
+
'0000000000000000000000000000000000000100': _100_p256verify_ts_1.precompile100,
|
|
223
|
+
};
|
|
224
|
+
exports.precompiles = precompiles;
|
|
225
|
+
function resolvePrecompileAddress(address) {
|
|
226
|
+
if (typeof address === 'string') {
|
|
227
|
+
return address.slice(2).padStart(40, '0').toLowerCase();
|
|
228
|
+
}
|
|
229
|
+
return (0, util_1.bytesToUnprefixedHex)(address.bytes);
|
|
230
|
+
}
|
|
231
|
+
function getActivePrecompiles(common, customPrecompiles) {
|
|
232
|
+
const precompileMap = new Map();
|
|
233
|
+
if (customPrecompiles) {
|
|
234
|
+
for (const precompile of customPrecompiles) {
|
|
235
|
+
precompileMap.set(resolvePrecompileAddress(precompile.address), 'function' in precompile ? precompile.function : undefined);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
for (const entry of precompileEntries) {
|
|
239
|
+
if (precompileMap.has(entry.address)) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const type = entry.check.type;
|
|
243
|
+
if ((type === exports.PrecompileAvailabilityCheck.Hardfork && common.gteHardfork(entry.check.param)) ||
|
|
244
|
+
(entry.check.type === exports.PrecompileAvailabilityCheck.EIP &&
|
|
245
|
+
common.isActivatedEIP(entry.check.param))) {
|
|
246
|
+
precompileMap.set(entry.address, entry.precompile);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return precompileMap;
|
|
250
|
+
}
|
|
251
|
+
function getPrecompileName(addressUnprefixedStr) {
|
|
252
|
+
if (addressUnprefixedStr.length < 40) {
|
|
253
|
+
addressUnprefixedStr = addressUnprefixedStr.padStart(40, '0');
|
|
254
|
+
}
|
|
255
|
+
for (const entry of precompileEntries) {
|
|
256
|
+
if (entry.address === addressUnprefixedStr) {
|
|
257
|
+
return entry.name;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return '';
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/precompiles/index.ts"],"names":[],"mappings":"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"}
|