diff --git a/docs/test_case_descriptions/eip4844.md b/docs/test_case_descriptions/eip4844.md index 067eae1da8..da80969d95 100644 --- a/docs/test_case_descriptions/eip4844.md +++ b/docs/test_case_descriptions/eip4844.md @@ -2,37 +2,37 @@ **Note:** *This is still a WIP but the tests can still be used by any client team. The priority levels (🔴, 🟠, 🟡, 🟢) represent very high, high, medium, low priorities respectively.* -## 📖 Datahash Opcode +## 📖 blobhash Opcode -Test Module - `eip4844/datahash_opcode.py` +Test Module - `eip4844/blobhash_opcode.py` -Verifies that the `DATAHASH` opcode, works as intended for a variety of contexts, retrieves the blob versioned hash correctly for a given index, returns the correct zeroed `bytes32` value for out-of-range indices, and consumes the correct amount of gas. +Verifies that the `BLOBHASH` opcode, works as intended for a variety of contexts, retrieves the blob versioned hash correctly for a given index, returns the correct zeroed `bytes32` value for out-of-range indices, and consumes the correct amount of gas. -**1) 🔴 test_datahash_opcode_contexts():** +**1) 🔴 test_blobhash_opcode_contexts():** -Tests that the `DATAHASH` opcode functions correctly when called in different contexts including: -- `DATAHASH` opcode on the top level of the call stack. -- `DATAHASH` opcode on the max value. -- `DATAHASH` opcode on `CALL`, `DELEGATECALL`, `STATICCALL`, and `CALLCODE`. -- `DATAHASH` opcode on Initcode. -- `DATAHASH` opcode on `CREATE` and `CREATE2`. -- `DATAHASH` opcode on transaction types 0, 1 and 2. +Tests that the `BLOBHASH` opcode functions correctly when called in different contexts including: +- `BLOBHASH` opcode on the top level of the call stack. +- `BLOBHASH` opcode on the max value. +- `BLOBHASH` opcode on `CALL`, `DELEGATECALL`, `STATICCALL`, and `CALLCODE`. +- `BLOBHASH` opcode on Initcode. +- `BLOBHASH` opcode on `CREATE` and `CREATE2`. +- `BLOBHASH` opcode on transaction types 0, 1 and 2. -**2) 🔴 test_datahash_blob_versioned_hash():** +**2) 🔴 test_blobhash_blob_versioned_hash():** -Tests that the `DATAHASH` opcode returns the correct versioned hash for various valid indexes. This test covers various scenarios with random `blob_versioned_hash` values within the valid range `[0, 2**256-1]`. +Tests that the `BLOBHASH` opcode returns the correct versioned hash for various valid indexes. This test covers various scenarios with random `blob_versioned_hash` values within the valid range `[0, 2**256-1]`. -**3) 🔴 test_datahash_invalid_blob_index():** +**3) 🔴 test_blobhash_invalid_blob_index():** -Tests that the `DATAHASH` opcode returns a zeroed `bytes32` value for invalid indexes. This test includes cases where the index is negative (`index < 0`) or exceeds the maximum number of `blob_versioned_hash` values stored (`index >= len(tx.message.blob_versioned_hashes)`). It confirms that the returned value is a zeroed `bytes32` value for these cases. +Tests that the `BLOBHASH` opcode returns a zeroed `bytes32` value for invalid indexes. This test includes cases where the index is negative (`index < 0`) or exceeds the maximum number of `blob_versioned_hash` values stored (`index >= len(tx.message.blob_versioned_hashes)`). It confirms that the returned value is a zeroed `bytes32` value for these cases. -**4) 🟠 test_datahash_gas_cost():** +**4) 🟠 test_blobhash_gas_cost():** -Asserts the gas consumption of the `DATAHASH` opcode is correct by ensuring it matches `HASH_OPCODE_GAS = 3`. It includes both valid and invalid random index sizes from the range `[0, 2**256-1]`, for tx types 2 and 3. +Asserts the gas consumption of the `BLOBHASH` opcode is correct by ensuring it matches `HASH_OPCODE_GAS = 3`. It includes both valid and invalid random index sizes from the range `[0, 2**256-1]`, for tx types 2 and 3. -**5) 🟡 test_datahash_multiple_txs_in_block():** +**5) 🟡 test_blobhash_multiple_txs_in_block():** -Tests that the `DATAHASH` opcode returns the appropriate values when there is more than one blob tx type within a block (for tx types 2 and 3). Scenarios involve tx type 3 followed by tx type 2 running the same code within a block. In this case `DATAHASH` returns 0, but for the opposite scenario `DATAHASH` returns the correct `blob_versioned_hash`. +Tests that the `BLOBHASH` opcode returns the appropriate values when there is more than one blob tx type within a block (for tx types 2 and 3). Scenarios involve tx type 3 followed by tx type 2 running the same code within a block. In this case `BLOBHASH` returns 0, but for the opposite scenario `BLOBHASH` returns the correct `blob_versioned_hash`. ## 💽⛽💸 Excess Data Gas diff --git a/fillers/eips/eip4844/README.md b/fillers/eips/eip4844/README.md index 067eae1da8..da80969d95 100644 --- a/fillers/eips/eip4844/README.md +++ b/fillers/eips/eip4844/README.md @@ -2,37 +2,37 @@ **Note:** *This is still a WIP but the tests can still be used by any client team. The priority levels (🔴, 🟠, 🟡, 🟢) represent very high, high, medium, low priorities respectively.* -## 📖 Datahash Opcode +## 📖 blobhash Opcode -Test Module - `eip4844/datahash_opcode.py` +Test Module - `eip4844/blobhash_opcode.py` -Verifies that the `DATAHASH` opcode, works as intended for a variety of contexts, retrieves the blob versioned hash correctly for a given index, returns the correct zeroed `bytes32` value for out-of-range indices, and consumes the correct amount of gas. +Verifies that the `BLOBHASH` opcode, works as intended for a variety of contexts, retrieves the blob versioned hash correctly for a given index, returns the correct zeroed `bytes32` value for out-of-range indices, and consumes the correct amount of gas. -**1) 🔴 test_datahash_opcode_contexts():** +**1) 🔴 test_blobhash_opcode_contexts():** -Tests that the `DATAHASH` opcode functions correctly when called in different contexts including: -- `DATAHASH` opcode on the top level of the call stack. -- `DATAHASH` opcode on the max value. -- `DATAHASH` opcode on `CALL`, `DELEGATECALL`, `STATICCALL`, and `CALLCODE`. -- `DATAHASH` opcode on Initcode. -- `DATAHASH` opcode on `CREATE` and `CREATE2`. -- `DATAHASH` opcode on transaction types 0, 1 and 2. +Tests that the `BLOBHASH` opcode functions correctly when called in different contexts including: +- `BLOBHASH` opcode on the top level of the call stack. +- `BLOBHASH` opcode on the max value. +- `BLOBHASH` opcode on `CALL`, `DELEGATECALL`, `STATICCALL`, and `CALLCODE`. +- `BLOBHASH` opcode on Initcode. +- `BLOBHASH` opcode on `CREATE` and `CREATE2`. +- `BLOBHASH` opcode on transaction types 0, 1 and 2. -**2) 🔴 test_datahash_blob_versioned_hash():** +**2) 🔴 test_blobhash_blob_versioned_hash():** -Tests that the `DATAHASH` opcode returns the correct versioned hash for various valid indexes. This test covers various scenarios with random `blob_versioned_hash` values within the valid range `[0, 2**256-1]`. +Tests that the `BLOBHASH` opcode returns the correct versioned hash for various valid indexes. This test covers various scenarios with random `blob_versioned_hash` values within the valid range `[0, 2**256-1]`. -**3) 🔴 test_datahash_invalid_blob_index():** +**3) 🔴 test_blobhash_invalid_blob_index():** -Tests that the `DATAHASH` opcode returns a zeroed `bytes32` value for invalid indexes. This test includes cases where the index is negative (`index < 0`) or exceeds the maximum number of `blob_versioned_hash` values stored (`index >= len(tx.message.blob_versioned_hashes)`). It confirms that the returned value is a zeroed `bytes32` value for these cases. +Tests that the `BLOBHASH` opcode returns a zeroed `bytes32` value for invalid indexes. This test includes cases where the index is negative (`index < 0`) or exceeds the maximum number of `blob_versioned_hash` values stored (`index >= len(tx.message.blob_versioned_hashes)`). It confirms that the returned value is a zeroed `bytes32` value for these cases. -**4) 🟠 test_datahash_gas_cost():** +**4) 🟠 test_blobhash_gas_cost():** -Asserts the gas consumption of the `DATAHASH` opcode is correct by ensuring it matches `HASH_OPCODE_GAS = 3`. It includes both valid and invalid random index sizes from the range `[0, 2**256-1]`, for tx types 2 and 3. +Asserts the gas consumption of the `BLOBHASH` opcode is correct by ensuring it matches `HASH_OPCODE_GAS = 3`. It includes both valid and invalid random index sizes from the range `[0, 2**256-1]`, for tx types 2 and 3. -**5) 🟡 test_datahash_multiple_txs_in_block():** +**5) 🟡 test_blobhash_multiple_txs_in_block():** -Tests that the `DATAHASH` opcode returns the appropriate values when there is more than one blob tx type within a block (for tx types 2 and 3). Scenarios involve tx type 3 followed by tx type 2 running the same code within a block. In this case `DATAHASH` returns 0, but for the opposite scenario `DATAHASH` returns the correct `blob_versioned_hash`. +Tests that the `BLOBHASH` opcode returns the appropriate values when there is more than one blob tx type within a block (for tx types 2 and 3). Scenarios involve tx type 3 followed by tx type 2 running the same code within a block. In this case `BLOBHASH` returns 0, but for the opposite scenario `BLOBHASH` returns the correct `blob_versioned_hash`. ## 💽⛽💸 Excess Data Gas diff --git a/fillers/eips/eip4844/datahash_opcode.py b/fillers/eips/eip4844/blobhash_opcode.py similarity index 65% rename from fillers/eips/eip4844/datahash_opcode.py rename to fillers/eips/eip4844/blobhash_opcode.py index a0f2d5faa1..5fc11e2ad8 100644 --- a/fillers/eips/eip4844/datahash_opcode.py +++ b/fillers/eips/eip4844/blobhash_opcode.py @@ -1,5 +1,5 @@ """ -Test EIP-4844: Shard Blob Transactions (DATAHASH Opcode) +Test EIP-4844: Shard Blob Transactions (BLOBHASH Opcode) EIP: https://eips.ethereum.org/EIPS/eip-4844 """ import itertools @@ -17,6 +17,7 @@ TestAddress, Transaction, Yul, + add_kzg_version, compute_create2_address, compute_create_address, test_from, @@ -25,10 +26,11 @@ ) from ethereum_test_tools.vm.opcode import Opcodes as Op -REFERENCE_SPEC_GIT_PATH = "EIPS/eip-4844.md" +REFERENCE_SPEC_GIT_PATH = "EIPS/eip-484k4.md" REFERENCE_SPEC_VERSION = "ac003985b9be74ff48bd897770e6d5f2e4318715" -DATAHASH_GAS_COST = 3 +BLOB_COMMITMENT_VERSION_KZG = 1 +BLOBHASH_GAS_COST = 3 MAX_BLOB_PER_BLOCK = 4 BLOB_HASHES = [ "0x53b8c5b09810b5fc07355d3da42e2c3a3e200c1d9a678491b7e8e256fc50cc4f", @@ -53,51 +55,51 @@ @test_from(fork=Cancun) -def test_datahash_opcode_contexts(_: Fork): +def test_blobhash_opcode_contexts(_: Fork): """ - Test DATAHASH opcode called on different contexts. + Test BLOBHASH opcode called on different contexts. """ - datahash_verbatim = "verbatim_{}i_{}o".format( - Op.DATAHASH.popped_stack_items, Op.DATAHASH.pushed_stack_items + blobhash_verbatim = "verbatim_{}i_{}o".format( + Op.BLOBHASH.popped_stack_items, Op.BLOBHASH.pushed_stack_items ) - datahash_sstore_bytecode = Yul( + blobhash_sstore_bytecode = Yul( f""" {{ let pos := calldataload(0) let end := calldataload(32) for {{}} lt(pos, end) {{ pos := add(pos, 1) }} {{ - let datahash := {datahash_verbatim}(hex"{Op.DATAHASH.hex()}", pos) - sstore(pos, datahash) + let blobhash := {blobhash_verbatim}(hex"{Op.BLOBHASH.hex()}", pos) + sstore(pos, blobhash) }} - let datahash := {datahash_verbatim}(hex"{Op.DATAHASH.hex()}", end) - sstore(end, datahash) + let blobhash := {blobhash_verbatim}(hex"{Op.BLOBHASH.hex()}", end) + sstore(end, blobhash) return(0, 0) }} """ ) - datahash_sstore_bytecode_address = to_address(0x100) + blobhash_sstore_bytecode_address = to_address(0x100) - datahash_return_bytecode = Yul( + blobhash_return_bytecode = Yul( f""" {{ let pos := calldataload(0) - let datahash := {datahash_verbatim}(hex"{Op.DATAHASH.hex()}", pos) - mstore(0, datahash) + let blobhash := {blobhash_verbatim}(hex"{Op.BLOBHASH.hex()}", pos) + mstore(0, blobhash) return(0, 32) }} """ ) - datahash_return_bytecode_address = to_address(0x600) + blobhash_return_bytecode_address = to_address(0x600) - initcode_datahash_sstore_bytecode = Yul( + initcode_blobhash_sstore_bytecode = Yul( f""" {{ for {{ let pos := 0 }} lt(pos, 10) {{ pos := add(pos, 1) }} {{ - let datahash := {datahash_verbatim}(hex"{Op.DATAHASH.hex()}", pos) - sstore(pos, datahash) + let blobhash := {blobhash_verbatim}(hex"{Op.BLOBHASH.hex()}", pos) + sstore(pos, blobhash) }} return(0, 0) }} @@ -133,15 +135,15 @@ def test_datahash_opcode_contexts(_: Fork): for {{ }} lt(pos, end) {{ pos := add(pos, 1) }} {{ mstore(0, pos) - pop(callcode(gas(), {datahash_return_bytecode_address}, 0, 0, 32, 0, 32)) - let datahash := mload(0) - sstore(pos, datahash) + pop(callcode(gas(), {blobhash_return_bytecode_address}, 0, 0, 32, 0, 32)) + let blobhash := mload(0) + sstore(pos, blobhash) }} mstore(0, end) - pop(callcode(gas(), {datahash_return_bytecode_address}, 0, 0, 32, 0, 32)) - let datahash := mload(0) - sstore(end, datahash) + pop(callcode(gas(), {blobhash_return_bytecode_address}, 0, 0, 32, 0, 32)) + let blobhash := mload(0) + sstore(end, blobhash) return(0, 0) }} """ @@ -156,15 +158,15 @@ def test_datahash_opcode_contexts(_: Fork): for {{ }} lt(pos, end) {{ pos := add(pos, 1) }} {{ mstore(0, pos) - pop(staticcall(gas(), {datahash_return_bytecode_address}, 0, 32, 0, 32)) - let datahash := mload(0) - sstore(pos, datahash) + pop(staticcall(gas(), {blobhash_return_bytecode_address}, 0, 32, 0, 32)) + let blobhash := mload(0) + sstore(pos, blobhash) }} mstore(0, end) - pop(staticcall(gas(), {datahash_return_bytecode_address}, 0, 32, 0, 32)) - let datahash := mload(0) - sstore(end, datahash) + pop(staticcall(gas(), {blobhash_return_bytecode_address}, 0, 32, 0, 32)) + let blobhash := mload(0) + sstore(end, blobhash) return(0, 0) }} """ @@ -196,12 +198,13 @@ def test_datahash_opcode_contexts(_: Fork): create2_opcode_created_contract = compute_create2_address( create2_bytecode_address, 0, - initcode_datahash_sstore_bytecode.assemble(), + initcode_blobhash_sstore_bytecode.assemble(), ) - b_hashes: Sequence[bytes] = [ - to_hash_bytes(1 << x) for x in range(MAX_BLOB_PER_BLOCK) - ] + b_hashes: Sequence[bytes] = add_kzg_version( + [(1 << x) for x in range(MAX_BLOB_PER_BLOCK)], + BLOB_COMMITMENT_VERSION_KZG, + ) tags = [ "at_top_level_call_stack", @@ -219,60 +222,60 @@ def test_datahash_opcode_contexts(_: Fork): ] pre_states: List[Dict] = [ - { # DATAHASH on top level of the call stack - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + { # BLOBHASH on top level of the call stack + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, - { # DATAHASH max value - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + { # BLOBHASH max value + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, - { # DATAHASH on CALL + { # BLOBHASH on CALL call_bytecode_address: Account(code=call_bytecode), - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, - { # DATAHASH on DELEGATECALL + { # BLOBHASH on DELEGATECALL delegatecall_bytecode_address: Account(code=delegatecall_bytecode), - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, - { # DATAHASH on STATICCALL + { # BLOBHASH on STATICCALL staticcall_bytecode_address: Account(code=staticcall_bytecode), - datahash_return_bytecode_address: Account( - code=datahash_return_bytecode + blobhash_return_bytecode_address: Account( + code=blobhash_return_bytecode ), }, - { # DATAHASH on CALLCODE + { # BLOBHASH on CALLCODE callcode_bytecode_address: Account(code=callcode_bytecode), - datahash_return_bytecode_address: Account( - code=datahash_return_bytecode + blobhash_return_bytecode_address: Account( + code=blobhash_return_bytecode ), }, - {}, # DATAHASH on INITCODE - { # DATAHASH on CREATE + {}, # BLOBHASH on INITCODE + { # BLOBHASH on CREATE create_bytecode_address: Account(code=create_bytecode), }, - { # DATAHASH on CREATE2 + { # BLOBHASH on CREATE2 create2_bytecode_address: Account(code=create2_bytecode), }, - { # DATAHASH on type 2 tx - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + { # BLOBHASH on type 2 tx + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, - { # DATAHASH on type 1 tx - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + { # BLOBHASH on type 1 tx + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, - { # DATAHASH on type 0 tx - datahash_sstore_bytecode_address: Account( - code=datahash_sstore_bytecode + { # BLOBHASH on type 0 tx + blobhash_sstore_bytecode_address: Account( + code=blobhash_sstore_bytecode ), }, ] @@ -290,132 +293,132 @@ def test_datahash_opcode_contexts(_: Fork): ) txs = [ - tx_type_3.with_fields( # DATAHASH on top level of the call stack - to=datahash_sstore_bytecode_address, + tx_type_3.with_fields( # BLOBHASH on top level of the call stack + to=blobhash_sstore_bytecode_address, blob_versioned_hashes=b_hashes[:1], ), - tx_type_3.with_fields( # DATAHASH on max value + tx_type_3.with_fields( # BLOBHASH on max value data=to_hash_bytes(2**256 - 1) + to_hash_bytes(2**256 - 1), - to=datahash_sstore_bytecode_address, + to=blobhash_sstore_bytecode_address, ), - tx_type_3.with_fields( # DATAHASH on CALL + tx_type_3.with_fields( # BLOBHASH on CALL data=to_hash_bytes(1) + to_hash_bytes(1), to=call_bytecode_address, blob_versioned_hashes=b_hashes[:2], ), - tx_type_3.with_fields( # DATAHASH on DELEGATECALL + tx_type_3.with_fields( # BLOBHASH on DELEGATECALL data=to_hash_bytes(0) + to_hash_bytes(3), to=delegatecall_bytecode_address, ), - tx_type_3.with_fields( # DATAHASH on STATICCALL + tx_type_3.with_fields( # BLOBHASH on STATICCALL data=to_hash_bytes(0) + to_hash_bytes(3), to=staticcall_bytecode_address, ), - tx_type_3.with_fields( # DATAHASH on CALLCODE + tx_type_3.with_fields( # BLOBHASH on CALLCODE data=to_hash_bytes(0) + to_hash_bytes(3), to=callcode_bytecode_address, ), - tx_type_3.with_fields( # DATAHASH on INITCODE - data=initcode_datahash_sstore_bytecode, to=None + tx_type_3.with_fields( # BLOBHASH on INITCODE + data=initcode_blobhash_sstore_bytecode, to=None ), - tx_type_3.with_fields( # DATAHASH on CREATE - data=initcode_datahash_sstore_bytecode, + tx_type_3.with_fields( # BLOBHASH on CREATE + data=initcode_blobhash_sstore_bytecode, to=create_bytecode_address, ), - tx_type_3.with_fields( # DATAHASH on CREATE2 - data=initcode_datahash_sstore_bytecode, + tx_type_3.with_fields( # BLOBHASH on CREATE2 + data=initcode_blobhash_sstore_bytecode, to=create2_bytecode_address, ), - Transaction( # DATAHASH on type 2 tx + Transaction( # BLOBHASH on type 2 tx ty=2, data=to_hash_bytes(0), - to=datahash_sstore_bytecode_address, + to=blobhash_sstore_bytecode_address, gas_limit=3000000, max_fee_per_gas=10, max_priority_fee_per_gas=10, access_list=[], ), - Transaction( # DATAHASH on type 1 tx + Transaction( # BLOBHASH on type 1 tx ty=1, data=to_hash_bytes(0), - to=datahash_sstore_bytecode_address, + to=blobhash_sstore_bytecode_address, gas_limit=3000000, gas_price=10, access_list=[], ), - Transaction( # DATAHASH on type 0 tx + Transaction( # BLOBHASH on type 0 tx ty=0, data=to_hash_bytes(0), - to=datahash_sstore_bytecode_address, + to=blobhash_sstore_bytecode_address, gas_limit=3000000, gas_price=10, ), ] post_states: List[Dict] = [ - { # DATAHASH on top level of the call stack - datahash_sstore_bytecode_address: Account( + { # BLOBHASH on top level of the call stack + blobhash_sstore_bytecode_address: Account( storage={0: b_hashes[0]} ), }, - { # DATAHASH on max value - datahash_sstore_bytecode_address: Account(storage={}), + { # BLOBHASH on max value + blobhash_sstore_bytecode_address: Account(storage={}), }, - { # DATAHASH on CALL - datahash_sstore_bytecode_address: Account( + { # BLOBHASH on CALL + blobhash_sstore_bytecode_address: Account( storage={1: b_hashes[1]} ), }, - { # DATAHASH on DELEGATECALL + { # BLOBHASH on DELEGATECALL delegatecall_bytecode_address: Account( storage={ k: v for (k, v) in zip(range(len(b_hashes)), b_hashes) } ), }, - { # DATAHASH on STATICCALL + { # BLOBHASH on STATICCALL staticcall_bytecode_address: Account( storage={ k: v for (k, v) in zip(range(len(b_hashes)), b_hashes) } ), }, - { # DATAHASH on CALLCODE + { # BLOBHASH on CALLCODE callcode_bytecode_address: Account( storage={ k: v for (k, v) in zip(range(len(b_hashes)), b_hashes) } ), }, - { # DATAHASH on INITCODE + { # BLOBHASH on INITCODE tx_created_contract_address: Account( storage={ k: v for (k, v) in zip(range(len(b_hashes)), b_hashes) } ), }, - { # DATAHASH on CREATE + { # BLOBHASH on CREATE create_opcode_created_contract: Account( storage={ k: v for (k, v) in zip(range(len(b_hashes)), b_hashes) } ), }, - { # DATAHASH on CREATE2 + { # BLOBHASH on CREATE2 create2_opcode_created_contract: Account( storage={ k: v for (k, v) in zip(range(len(b_hashes)), b_hashes) } ), }, - { # DATAHASH on type 2 tx - datahash_sstore_bytecode_address: Account(storage={0: 0}), + { # BLOBHASH on type 2 tx + blobhash_sstore_bytecode_address: Account(storage={0: 0}), }, - { # DATAHASH on type 1 tx - datahash_sstore_bytecode_address: Account(storage={0: 0}), + { # BLOBHASH on type 1 tx + blobhash_sstore_bytecode_address: Account(storage={0: 0}), }, - { # DATAHASH on type 0 tx - datahash_sstore_bytecode_address: Account(storage={0: 0}), + { # BLOBHASH on type 0 tx + blobhash_sstore_bytecode_address: Account(storage={0: 0}), }, ] @@ -431,9 +434,9 @@ def test_datahash_opcode_contexts(_: Fork): @test_from(fork=Cancun) -def test_datahash_gas_cost(_: Fork): +def test_blobhash_gas_cost(_: Fork): """ - Test DATAHASH opcode gas cost using a variety of indexes. + Test BLOBHASH opcode gas cost using a variety of indexes. """ pre = { TestAddress: Account(balance=1000000000000000000000), @@ -446,8 +449,8 @@ def test_datahash_gas_cost(_: Fork): ) post = {} - # Declare datahash indexes: zero, max & random values - datahash_index_measures: List[int] = [ + # Declare blobhash indexes: zero, max & random values + blobhash_index_measures: List[int] = [ 0x00, 0x01, 0x02, @@ -462,11 +465,11 @@ def test_datahash_gas_cost(_: Fork): gas_measures_code = [ CodeGasMeasure( - code=Op.DATAHASH(index), + code=Op.BLOBHASH(index), overhead_cost=3, extra_stack_items=1, ) - for index in datahash_index_measures + for index in blobhash_index_measures ] txs_type_0, txs_type_1, txs_type_2, txs_type_3 = ([] for _ in range(4)) @@ -485,7 +488,7 @@ def test_datahash_gas_cost(_: Fork): to=address, nonce=i, max_priority_fee_per_gas=10, - blob_versioned_hashes=[BLOB_HASHES[i % MAX_BLOB_PER_BLOCK]], + access_list=[], ) ) txs_type_3.append( @@ -494,18 +497,21 @@ def test_datahash_gas_cost(_: Fork): to=address, nonce=i, max_priority_fee_per_gas=10, - blob_versioned_hashes=[BLOB_HASHES[i % MAX_BLOB_PER_BLOCK]], + blob_versioned_hashes=add_kzg_version( + [BLOB_HASHES[i % MAX_BLOB_PER_BLOCK]], + BLOB_COMMITMENT_VERSION_KZG, + ), ) ) - post[address] = Account(storage={0: DATAHASH_GAS_COST}) + post[address] = Account(storage={0: BLOBHASH_GAS_COST}) - # DATAHASH gas cost on tx type 0, 1 & 2 + # BLOBHASH gas cost on tx type 0, 1 & 2 for i, txs in enumerate([txs_type_0, txs_type_1, txs_type_2]): yield StateTest( env=env, pre=pre, post=post, txs=txs, tag=f"tx_type_{i}" ) - # DATAHASH gas cost on tx type 3 + # BLOBHASH gas cost on tx type 3 total_blocks = ( len(txs_type_3) + MAX_BLOB_PER_BLOCK - 1 ) // MAX_BLOB_PER_BLOCK @@ -522,9 +528,9 @@ def test_datahash_gas_cost(_: Fork): @test_from(fork=Cancun) -def test_datahash_blob_versioned_hash(_: Fork): +def test_blobhash_blob_versioned_hash(_: Fork): """ - Tests that the `DATAHASH` opcode returns the correct versioned hash for + Tests that the `BLOBHASH` opcode returns the correct versioned hash for various valid index scenarios. """ TOTAL_BLOCKS = 10 @@ -537,62 +543,65 @@ def test_datahash_blob_versioned_hash(_: Fork): # Create an arbitrary repeated list of blob hashes # with length MAX_BLOB_PER_BLOCK * TOTAL_BLOCKS - b_hashes = list( - itertools.islice( - itertools.cycle(BLOB_HASHES), - MAX_BLOB_PER_BLOCK * TOTAL_BLOCKS, - ) + b_hashes = add_kzg_version( + list( + itertools.islice( + itertools.cycle(BLOB_HASHES), + MAX_BLOB_PER_BLOCK * TOTAL_BLOCKS, + ) + ), + BLOB_COMMITMENT_VERSION_KZG, ) - # `DATAHASH` sstore template helper - def datahash_sstore(index: int): - return Op.SSTORE(index, Op.DATAHASH(index)) + # `BLOBHASH` sstore template helper + def blobhash_sstore(index: int): + return Op.SSTORE(index, Op.BLOBHASH(index)) - # `DATAHASH` on valid indexes - datahash_single_valid_calls = b"".join( - datahash_sstore(i) for i in range(MAX_BLOB_PER_BLOCK) + # `BLOBHASH` on valid indexes + blobhash_single_valid_calls = b"".join( + blobhash_sstore(i) for i in range(MAX_BLOB_PER_BLOCK) ) pre_single_valid_calls = copy(pre) - # `DATAHASH` on valid index repeated: - # DATAHASH(i), DATAHASH(i), ... - datahash_repeated_valid_calls = b"".join( - b"".join([datahash_sstore(i) for _ in range(10)]) + # `BLOBHASH` on valid index repeated: + # BLOBHASH(i), BLOBHASH(i), ... + blobhash_repeated_valid_calls = b"".join( + b"".join([blobhash_sstore(i) for _ in range(10)]) for i in range(MAX_BLOB_PER_BLOCK) ) - pre_datahash_repeated_valid_calls = copy(pre) - - # `DATAHASH` on valid/invalid/valid: - # DATAHASH(i), DATAHASH(MAX_BLOB_PER_BLOCK), DATAHASH(i) - datahash_valid_invalid_calls = b"".join( - datahash_sstore(i) - + datahash_sstore(MAX_BLOB_PER_BLOCK) - + datahash_sstore(i) + pre_blobhash_repeated_valid_calls = copy(pre) + + # `BLOBHASH` on valid/invalid/valid: + # BLOBHASH(i), BLOBHASH(MAX_BLOB_PER_BLOCK), BLOBHASH(i) + blobhash_valid_invalid_calls = b"".join( + blobhash_sstore(i) + + blobhash_sstore(MAX_BLOB_PER_BLOCK) + + blobhash_sstore(i) for i in range(MAX_BLOB_PER_BLOCK) ) - pre_datahash_valid_invalid_calls = copy(pre) + pre_blobhash_valid_invalid_calls = copy(pre) - # `DATAHASH` on different valid indexes repeated: - # DATAHASH(i), DATAHASH(i+1), DATAHASH(i) - datahash_varied_valid_calls = b"".join( - datahash_sstore(i) + datahash_sstore(i + 1) + datahash_sstore(i) + # `BLOBHASH` on different valid indexes repeated: + # BLOBHASH(i), BLOBHASH(i+1), BLOBHASH(i) + blobhash_varied_valid_calls = b"".join( + blobhash_sstore(i) + blobhash_sstore(i + 1) + blobhash_sstore(i) for i in range(MAX_BLOB_PER_BLOCK - 1) ) - pre_datahash_varied_valid_calls = copy(pre) + pre_blobhash_varied_valid_calls = copy(pre) for i in range(TOTAL_BLOCKS): address = to_address(0x100 + i * 0x100) pre_single_valid_calls[address] = Account( - code=datahash_single_valid_calls + code=blobhash_single_valid_calls ) - pre_datahash_repeated_valid_calls[address] = Account( - code=datahash_repeated_valid_calls + pre_blobhash_repeated_valid_calls[address] = Account( + code=blobhash_repeated_valid_calls ) - pre_datahash_valid_invalid_calls[address] = Account( - code=datahash_valid_invalid_calls + pre_blobhash_valid_invalid_calls[address] = Account( + code=blobhash_valid_invalid_calls ) - pre_datahash_varied_valid_calls[address] = Account( - code=datahash_varied_valid_calls + pre_blobhash_varied_valid_calls[address] = Account( + code=blobhash_varied_valid_calls ) blocks.append( Block( @@ -630,21 +639,21 @@ def datahash_sstore(index: int): ) yield BlockchainTest( - pre=pre_datahash_repeated_valid_calls, + pre=pre_blobhash_repeated_valid_calls, post=post, blocks=blocks, tag="repeated_calls", ) yield BlockchainTest( - pre=pre_datahash_valid_invalid_calls, + pre=pre_blobhash_valid_invalid_calls, post=post, blocks=blocks, tag="valid_invalid_calls", ) yield BlockchainTest( - pre=pre_datahash_varied_valid_calls, + pre=pre_blobhash_varied_valid_calls, post=post, blocks=blocks, tag="varied_valid_calls", @@ -652,9 +661,9 @@ def datahash_sstore(index: int): @test_from(fork=Cancun) -def test_datahash_invalid_blob_index(_: Fork): +def test_blobhash_invalid_blob_index(_: Fork): """ - Tests that the `DATAHASH` opcode returns a zeroed bytes32 value + Tests that the `BLOBHASH` opcode returns a zeroed bytes32 value for invalid indexes. """ INVALID_DEPTH_FACTOR = 5 @@ -666,9 +675,9 @@ def test_datahash_invalid_blob_index(_: Fork): blocks = [] post = {} - # `DATAHASH` on invalid indexes: -ve invalid -> valid -> +ve invalid: - datahash_invalid_calls = b"".join( - Op.SSTORE(i, Op.DATAHASH(i)) + # `BLOBHASH` on invalid indexes: -ve invalid -> valid -> +ve invalid: + blobhash_invalid_calls = b"".join( + Op.SSTORE(i, Op.BLOBHASH(i)) for i in range( -INVALID_DEPTH_FACTOR, MAX_BLOB_PER_BLOCK + INVALID_DEPTH_FACTOR ) @@ -676,9 +685,12 @@ def test_datahash_invalid_blob_index(_: Fork): for i in range(TOTAL_BLOCKS): address = to_address(0x100 + i * 0x100) - pre[address] = Account(code=datahash_invalid_calls) + pre[address] = Account(code=blobhash_invalid_calls) blob_per_block = (i % MAX_BLOB_PER_BLOCK) + 1 - blob_hashes = [BLOB_HASHES[blob] for blob in range(blob_per_block)] + blob_hashes = add_kzg_version( + [BLOB_HASHES[blob] for blob in range(blob_per_block)], + BLOB_COMMITMENT_VERSION_KZG, + ) blocks.append( Block( txs=[ @@ -720,21 +732,25 @@ def test_datahash_invalid_blob_index(_: Fork): @test_from(fork=Cancun) -def test_datahash_multiple_txs_in_block(_: Fork): +def test_blobhash_multiple_txs_in_block(_: Fork): """ - Tests that the `DATAHASH` opcode returns the appropriate values + Tests that the `BLOBHASH` opcode returns the appropriate values when there is more than one blob tx type within a block. """ - datahash_valid_call = b"".join( - [Op.SSTORE(i, Op.DATAHASH(i)) for i in range(MAX_BLOB_PER_BLOCK)] + blobhash_valid_call = b"".join( + [Op.SSTORE(i, Op.BLOBHASH(i)) for i in range(MAX_BLOB_PER_BLOCK)] ) pre = { - to_address(address): Account(code=datahash_valid_call) + to_address(address): Account(code=blobhash_valid_call) for address in range(0x100, 0x500, 0x100) } pre[TestAddress] = Account(balance=10000000000000000000000) + b_hashes = add_kzg_version( + BLOB_HASHES[0:MAX_BLOB_PER_BLOCK], BLOB_COMMITMENT_VERSION_KZG + ) + tx = Transaction( data=to_hash_bytes(0), gas_limit=3000000, @@ -742,7 +758,7 @@ def test_datahash_multiple_txs_in_block(_: Fork): max_priority_fee_per_gas=10, max_fee_per_data_gas=10, access_list=[], - blob_versioned_hashes=BLOB_HASHES[0:MAX_BLOB_PER_BLOCK], + blob_versioned_hashes=b_hashes, ) blocks = [ @@ -768,7 +784,7 @@ def test_datahash_multiple_txs_in_block(_: Fork): post = { to_address(address): Account( - storage={i: BLOB_HASHES[i] for i in range(MAX_BLOB_PER_BLOCK)} + storage={i: b_hashes[i] for i in range(MAX_BLOB_PER_BLOCK)} ) if address in (0x200, 0x400) else Account(storage={i: 0 for i in range(MAX_BLOB_PER_BLOCK)}) diff --git a/fillers/eips/eip4844/excess_data_gas.py b/fillers/eips/eip4844/excess_data_gas.py index c7e2138ce1..5133210911 100644 --- a/fillers/eips/eip4844/excess_data_gas.py +++ b/fillers/eips/eip4844/excess_data_gas.py @@ -20,6 +20,7 @@ Header, TestAddress, Transaction, + add_kzg_version, test_from, test_only, to_address, @@ -29,7 +30,8 @@ REFERENCE_SPEC_GIT_PATH = "EIPS/eip-4844.md" REFERENCE_SPEC_VERSION = "ac003985b9be74ff48bd897770e6d5f2e4318715" -DATAHASH_GAS_COST = 3 +BLOB_COMMITMENT_VERSION_KZG = 1 +BLOBHASH_GAS_COST = 3 MIN_DATA_GASPRICE = 1 DATA_GAS_PER_BLOB = 2**17 MAX_DATA_GAS_PER_BLOCK = 2**19 @@ -155,9 +157,10 @@ def generate(self) -> BlockchainTest: max_priority_fee_per_gas=0, max_fee_per_data_gas=data_gasprice, access_list=[], - blob_versioned_hashes=[ - to_hash_bytes(x) for x in range(self.blobs) - ], + blob_versioned_hashes=add_kzg_version( + [to_hash_bytes(x) for x in range(self.blobs)], + BLOB_COMMITMENT_VERSION_KZG, + ), ) else: tx = Transaction( @@ -374,9 +377,10 @@ def generate(self) -> BlockchainTest: excess_data_gas=parent_excess_data_gas ), access_list=[], - blob_versioned_hashes=[ - to_hash_bytes(x) for x in range(self.new_blobs) - ], + blob_versioned_hashes=add_kzg_version( + [to_hash_bytes(x) for x in range(self.new_blobs)], + BLOB_COMMITMENT_VERSION_KZG, + ), ) return BlockchainTest( @@ -603,10 +607,13 @@ def test_fork_transition_excess_data_gas_in_header(_: Fork): excess_data_gas=parent_excess_data_gas ), access_list=[], - blob_versioned_hashes=[ - to_hash_bytes(x) - for x in range(MAX_BLOBS_PER_BLOCK) - ], + blob_versioned_hashes=add_kzg_version( + [ + to_hash_bytes(x) + for x in range(MAX_BLOBS_PER_BLOCK) + ], + BLOB_COMMITMENT_VERSION_KZG, + ), ) ], ) @@ -647,6 +654,7 @@ class InvalidBlobTransactionTestCase: tx_count: int = 1 parent_excess_blobs: Optional[int] = None tx_max_data_gas_cost: Optional[int] = None + total_kzg_versioning: int = MAX_BLOBS_PER_BLOCK account_balance_modifier: int = 0 block_base_fee: int = 7 @@ -681,6 +689,13 @@ def generate(self) -> BlockchainTest: else data_gasprice ) + b_hashes = [to_hash_bytes(x) for x in range(self.blobs_per_tx)] + if self.total_kzg_versioning > 0: + b_hashes[0 : self.total_kzg_versioning] = add_kzg_version( + b_hashes[0 : self.total_kzg_versioning], + BLOB_COMMITMENT_VERSION_KZG, + ) + txs: List[Transaction] = [] for tx_i in range(self.tx_count): tx = Transaction( @@ -693,9 +708,7 @@ def generate(self) -> BlockchainTest: max_priority_fee_per_gas=0, max_fee_per_data_gas=max_fee_per_data_gas, access_list=[], - blob_versioned_hashes=[ - to_hash_bytes(x) for x in range(self.blobs_per_tx) - ], + blob_versioned_hashes=b_hashes, error=self.tx_error if tx_i == (self.tx_count - 1) else None, ) txs.append(tx) @@ -778,6 +791,18 @@ def test_invalid_blob_txs(fork: Fork): tx_error="too_few_blobs", blobs_per_tx=0, ), + InvalidBlobTransactionTestCase( + tag="no_kzg_versioning", + tx_error="all_blob_hashes_unversioned", + blobs_per_tx=MAX_BLOBS_PER_BLOCK, + total_kzg_versioning=0, + ), + InvalidBlobTransactionTestCase( + tag="partial_kzg_versioning", + tx_error="some_blob_hashes_unversioned", + blobs_per_tx=MAX_BLOBS_PER_BLOCK, + total_kzg_versioning=2, + ), ] else: # Pre-Cancun, blocks with type 3 txs must be rejected diff --git a/fillers/eips/eip4844/point_evaluation_vectors/go_kzg_4844_verify_kzg_proof.json b/fillers/eips/eip4844/point_evaluation_vectors/go_kzg_4844_verify_kzg_proof.json index 0c9ade9af0..ef3568db52 100644 --- a/fillers/eips/eip4844/point_evaluation_vectors/go_kzg_4844_verify_kzg_proof.json +++ b/fillers/eips/eip4844/point_evaluation_vectors/go_kzg_4844_verify_kzg_proof.json @@ -3,8 +3,8 @@ { "input": { "commitment": "0x8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": null, @@ -13,8 +13,8 @@ { "input": { "commitment": "0x8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde0", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xfcffffff0300000004900600f46f09b1ea9f78d9df9f1833df0a8a59b3624930", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x304962b3598a0adf33189fdfd9789feab1096ff40006900400000003fffffffc", "proof": "0xa69fc1abb7125e6ae566a95cacd832cca426b8c8ecd7397b19a8f003103bc11a508fc6dceab3a2a16cc83782d295c08f" }, "output": null, @@ -23,7 +23,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, @@ -33,8 +33,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xf2f7883166a20f433c258ec6791c028cef2403a8587ebab81b79444c8cc9cd58", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x58cdc98c4c44791bb8ba7e58a80324ef8c021c79c68e253c430fa2663188f7f2", "proof": "0x88bfb4ce7aa40228147817d8b5ddad533e456b622dea6733e1813b8d1ce9e03ef5fb58d983e29da3187ba840c5a79759" }, "output": true, @@ -43,8 +43,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0xd637ea4eae351bbf198fd21947a3dece3c3e0c682a4653c848e1e563fee4756a", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x6a75e4fe63e5e148c853462a680c3e3ccedea34719d28f19bf1b35ae4eea37d6", "proof": "0x8be986bb46235d7dace424c585d8160a7ffb0be6cf09844d5dc50cd6f14f9d9b4a39cb187d590d5b9fabc41efe31673b" }, "output": true, @@ -54,7 +54,7 @@ "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x64b96cea2bfed911439b00f28d79ad5315531517b8670d89a1b13f1b4dd1d71e", + "y": "0x1ed7d14d1b3fb1a1890d67b81715531553ad798df2009b4311d9fe2bea6cb964", "proof": "0xa4b831fd8adfa8bffcbfa0f486f40cdb65ada7dc7b26e6c745c0369b3a59c338df67edebc3fd7c14ff374be3f1f66735" }, "output": true, @@ -63,8 +63,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0xe1326dd62fb444b30a542261bfeba9958c83353ae656c2d47c8caf0906cf8248", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x4882cf0609af8c7cd4c256e63a35838c95a9ebbf6122540ab344b42fd66d32e1", "proof": "0xa731aa7fbb00bc5c46074279f0123976c2a0c05ef3987bdc16fa64fbab1621dec82c66b4bfb117456068137391617e59" }, "output": true, @@ -73,8 +73,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0xe0b9d480b499f46de5dd188f88ba0fbaa81534a70c4ba16eca026aa0a4e9e15e", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x5ee1e9a4a06a02ca6ea14b0ca73415a8ba0fba888f18dde56df499b480d4b9e0", "proof": "0x940769c68153fe476f97be8841dd16ad8c8f52a8bd2e8a421bb8eccc3a77e705e3702fdf17f1bf27333d94e2d88ee85d" }, "output": true, @@ -84,7 +84,7 @@ "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x01001000ffff0f40195ccebf286868d3e73d21896aa4b65e70e36ab47868e673", + "y": "0x73e66878b46ae3705eb6a46a89213de7d3686828bfce5c19400fffff00100001", "proof": "0x8931692634033cbbfe2db48c027dbb93f123754205bb7c7a56797966f83272b13b4be34f80c15bf8d4ed0b740ffb3c64" }, "output": true, @@ -93,8 +93,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": true, @@ -103,7 +103,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, @@ -113,8 +113,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": true, @@ -123,7 +123,7 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x89d9a593cf16156d32a0998b48fdc0964fc8a63e4b87a6750c6e132089125bfd57105274821bbda7198cfe1b69ee49b4" }, @@ -133,7 +133,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, @@ -143,8 +143,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xe949ca32d9cb9fe65fe9226192aa5596e7c7969cc207ae50a31e4ef3a7a42215", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x1522a4a7f34e1ea350ae07c29c96c7e79655aa926122e95fe69fcbd932ca49e9", "proof": "0xa57dd03e11678afb060af17cc3dc049e02f2814e13ed1dadc94d1105106ffa834907d1176420f637d51edbcd120274fb" }, "output": true, @@ -154,7 +154,7 @@ "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x59c36763cfc02465da143045f9ec45c4355d1e59794f5940ba21cc53d85a6250", + "y": "0x50625ad853cc21ba40594f79591e5d35c445ecf9453014da6524c0cf6367c359", "proof": "0xa86f18630d3803118cb0f7a970e04cf58612a91f5cd4f7f9aead0a5e44996484cad44f6a21a37d9188f84e1cfe5d70ff" }, "output": true, @@ -163,8 +163,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0x21c3f712dffc8ebf19e78344eb2810d565cb481de7e3827d953e44fe138e926d", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x6d928e13fe443e957d82e3e71d48cb65d51028eb4483e719bf8efcdf12f7c321", "proof": "0xb437dcd924834a69a566f90d8b83cb80e7c58a08da289389b3b1ffb528fd8bc9b92e6397c42b40a1e876ba116bdcc7f9" }, "output": true, @@ -173,8 +173,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0x7053f8c4f763afec898c34716bd520b8a5fae3ffbab70aab6fe31236dd459354", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x549345dd3612e36fab0ab7baffe3faa5b820d56b71348c89ecaf63f7c4f85370", "proof": "0x8f391ceb1bd34fe93e995f04fc78f8e715776ce6385936ab91a9ca88f3942cc37bd471c0180ed0ab6fc4f5e2d6f99dac" }, "output": true, @@ -183,7 +183,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, @@ -194,7 +194,7 @@ "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0xf30a82daad28d271dfbab6ecfedc8b26ac3694aa24c2eac6bd81014104711561", + "y": "0x61157104410181bdc6eac224aa9436ac268bdcfeecb6badf71d228adda820af3", "proof": "0x807dce8223a17fd2702eb75a13333f5d3128639df8fc09881a68d464d5765a1a0d2f4628ea573eddb3d6cf4846a0b4ec" }, "output": true, @@ -203,8 +203,8 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0xfcc3cf19d4a0e32a3e36fd34125864bc66be993fd4d1abe2bd9593f6bab6d364", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x64d3b6baf69395bde2abd1d43f99be66bc64581234fd363e2ae3a0d419cfc3fc", "proof": "0x8efb5f81312368c3d0778349fa9a37838d9da05f5019f13e98c451d44adbeaa24385efecc246958bc1e80ade37693425" }, "output": true, @@ -213,7 +213,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, @@ -223,8 +223,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": true, @@ -233,8 +233,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": true, @@ -243,8 +243,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0xa1d585244bdf6b19342435c0eafebce670feb83458df10496a7e7ae63250d224", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x24d25032e67a7e6a4910df5834b8fe70e6bcfeeac0352434196bdf4b2485d5a1", "proof": "0x942307f266e636553e94006d11423f2688945ff3bdf515859eba1005c1a7708d620a94d91a1c0c285f9584e75ec2f82a" }, "output": true, @@ -253,8 +253,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xfcffffff0300000004900600f46f09b1ea9f78d9df9f1833df0a8a59b3624930", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x304962b3598a0adf33189fdfd9789feab1096ff40006900400000003fffffffc", "proof": "0xa69fc1abb7125e6ae566a95cacd832cca426b8c8ecd7397b19a8f003103bc11a508fc6dceab3a2a16cc83782d295c08f" }, "output": true, @@ -263,8 +263,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0xdd92b1f745bb2ae587ae9dfa33e1529d549781bea8b18c63e1f5a2feedd6286c", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x6c28d6edfea2f5e1638cb1a8be8197549d52e133fa9dae87e52abb45f7b192dd", "proof": "0xad37aa0a5c07d64c137a3cc01893418c1ae6e766ca8842a295cad27cbde933aad4f499d96619f957a730d014927eaf72" }, "output": true, @@ -273,8 +273,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0x51fd8210778b5a166980d9ec7e95ea9f51548c9075c7a64e21524b27f57a3e44", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x443e7af5274b52214ea6c775908c54519fea957eecd98069165a8b771082fd51", "proof": "0x807b160e50107d5af2ac0c93eedc658eeb776d2416ecd9579b976795d0719eead66791c9603c703dc50a108d56823a98" }, "output": true, @@ -293,8 +293,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0xb0beca43fd6fc6980bd2c47d3efe14f2566e7e4dfcaf211a6694eb80f9e1f42b", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x2bf4e1f980eb94661a21affc4d7e6e56f214fe3e7dc4d20b98c66ffd43cabeb0", "proof": "0x9956ed657b632d9de65783593320c0b0f4195ca853c9616ba11e244bf2333f6da4755883e9995210b20fbd78f9c205a5" }, "output": true, @@ -303,7 +303,7 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x87177e99700d9be917c648299b919b210d0449761bfd425c6fbf7c9cb48c44525715bf62bad3fe046a066ac3b1c747fc" }, @@ -313,8 +313,8 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x33d21c1603e1519bf9ef031307f2f542f83f390e9cd8cdcffab431b75081d55f", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x5fd58150b731b4facfcdd89c0e393ff842f5f2071303eff99b51e103161cd233", "proof": "0x884c7d4772baef968a6a407ac02cc1a813d67003e8f039c4d66f7757be0e5bd484e561550acf58b8a3199b2690e9809a" }, "output": true, @@ -324,7 +324,7 @@ "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": true, @@ -333,7 +333,7 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xa729910bad9058b4e277f3ddba7396df505a0191c38e5ad08af1d0d30792c887e99bf754b7932b83e1cef4e1ec678339" }, @@ -343,8 +343,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0xc90ec2a32a8fb9c778ab05ad1f724294323b395a2d7bb7d2c0d0c01e6440f860", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x60f840641ec0d0c0d2b77b2d5a393b329442721fad05ab78c7b98f2aa3c20ec9", "proof": "0x86031313e4108b347f185a1247c062be741e37376474c23812ba260a13436065507d429c9ea7a205b6eb069e49a70641" }, "output": true, @@ -353,8 +353,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x14fab39020d084408adfc0d2750029218c246bccf97d02d75885d0d6f1e49a2c", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x2c9ae4f1d6d08558d7027df9cc6b248c21290075d2c0df8a4084d02090b3fa14", "proof": "0xb981665ea5575dbe48f8cea22d4e3effc42cb66f967c7ca174c21f06a4a55740f61d8cde1bc6339c3f036e8d5176516f" }, "output": true, @@ -363,8 +363,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0xfeffffff0100000002480300fab78458f54fbcecef4f8c996f05c5ac59b12418", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x1824b159acc5056f998c4fefecbc4ff55884b7fa0003480200000001fffffffe", "proof": "0x92cccc70d97c2eeb444077721221cbf048a7bcd5742a1c896c868672527c8fb92687db1d8c6970064375957af91b0b89" }, "output": true, @@ -373,8 +373,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": true, @@ -383,7 +383,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, @@ -393,8 +393,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xf2f7883166a20f433c258ec6791c028cef2403a8587ebab81b79444c8cc9cd58", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x58cdc98c4c44791bb8ba7e58a80324ef8c021c79c68e253c430fa2663188f7f2", "proof": "0x82af93a59a4978439a9a05cf6324e0e558c68b114f590589255bffe9ea2c0917a6ff6a7cd2e317f26f18b07802e9379a" }, "output": false, @@ -403,8 +403,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0xd637ea4eae351bbf198fd21947a3dece3c3e0c682a4653c848e1e563fee4756a", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x6a75e4fe63e5e148c853462a680c3e3ccedea34719d28f19bf1b35ae4eea37d6", "proof": "0xabacbdcba60523fdc84ed1a32bb770f610f8b284d875479918c2fe397e04eb52ecc0f1ff0029f9466ffe5b278b8fecc3" }, "output": false, @@ -414,7 +414,7 @@ "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x64b96cea2bfed911439b00f28d79ad5315531517b8670d89a1b13f1b4dd1d71e", + "y": "0x1ed7d14d1b3fb1a1890d67b81715531553ad798df2009b4311d9fe2bea6cb964", "proof": "0xa6b598c7936325f3d21e53c433720c65783d54bfddd83146f63247caba7aa25671641a9cc7b5a1ddcb229760f311cbb8" }, "output": false, @@ -423,8 +423,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0xe1326dd62fb444b30a542261bfeba9958c83353ae656c2d47c8caf0906cf8248", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x4882cf0609af8c7cd4c256e63a35838c95a9ebbf6122540ab344b42fd66d32e1", "proof": "0x95c51f028ec8ace94b2c24fff6662e4c61ad7b315b799aa5f40fcf5b36b2f1b6f9fc23bc66290aeef1de7e6ee4cb52ce" }, "output": false, @@ -433,8 +433,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0xe0b9d480b499f46de5dd188f88ba0fbaa81534a70c4ba16eca026aa0a4e9e15e", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x5ee1e9a4a06a02ca6ea14b0ca73415a8ba0fba888f18dde56df499b480d4b9e0", "proof": "0xaf9bbe2e73d18f879bcc0867b22e8ac255040a0e85e258b6a8243bc12aa526067d1762dddf18fb25a9fced1cbdd9a447" }, "output": false, @@ -444,7 +444,7 @@ "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x01001000ffff0f40195ccebf286868d3e73d21896aa4b65e70e36ab47868e673", + "y": "0x73e66878b46ae3705eb6a46a89213de7d3686828bfce5c19400fffff00100001", "proof": "0x83bdb1c6f172d8e30a58533d4df96d9133b7ee293ae76777d60454cb35ef28f08634a794dc098baa22499347ab9a00db" }, "output": false, @@ -453,8 +453,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, "output": false, @@ -463,7 +463,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, @@ -473,8 +473,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, "output": false, @@ -483,7 +483,7 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x831cc31c152e768eb8c2fd2d0c04003e7abc66b2c3f4cc7fc2b3426b4a698dc2a5e5161dfb841ad17cd09be61b33987b" }, @@ -493,7 +493,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, @@ -503,8 +503,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xe949ca32d9cb9fe65fe9226192aa5596e7c7969cc207ae50a31e4ef3a7a42215", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x1522a4a7f34e1ea350ae07c29c96c7e79655aa926122e95fe69fcbd932ca49e9", "proof": "0x9418eb9a7cf2fa71125962f6662afeac10a7f1bbe26365995b13f6840946da49f79c7dfdd80b5b8a50bf44758cd2a96d" }, "output": false, @@ -514,7 +514,7 @@ "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x59c36763cfc02465da143045f9ec45c4355d1e59794f5940ba21cc53d85a6250", + "y": "0x50625ad853cc21ba40594f79591e5d35c445ecf9453014da6524c0cf6367c359", "proof": "0x87e0d60304667f4f331765a966bd70a196805dd852362d3cc163b8e675d1c504a88a6e3dcc5a766a4f1fbfdb98ea45ec" }, "output": false, @@ -523,8 +523,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0x21c3f712dffc8ebf19e78344eb2810d565cb481de7e3827d953e44fe138e926d", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x6d928e13fe443e957d82e3e71d48cb65d51028eb4483e719bf8efcdf12f7c321", "proof": "0x813889b6303c421a9c60a8163e7f31162e4d43e5594fda9b91fd34f98a9483169b959f24741d09b88e9ec9298f19de5d" }, "output": false, @@ -533,8 +533,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0x7053f8c4f763afec898c34716bd520b8a5fae3ffbab70aab6fe31236dd459354", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x549345dd3612e36fab0ab7baffe3faa5b820d56b71348c89ecaf63f7c4f85370", "proof": "0xa99a3f7861e6350419e20be7018f518a54db5ec93698a2565b53e6303d3f99fad5559ed047ad09031b1b64111ac31b25" }, "output": false, @@ -543,7 +543,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, @@ -554,7 +554,7 @@ "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0xf30a82daad28d271dfbab6ecfedc8b26ac3694aa24c2eac6bd81014104711561", + "y": "0x61157104410181bdc6eac224aa9436ac268bdcfeecb6badf71d228adda820af3", "proof": "0xa2e739f11e3a85482c5a9941ac46608ddfe459b09fb21b81fcb8f0ac3993ac618639bff39aefb5356bee9ccd1a3ebb5c" }, "output": false, @@ -563,8 +563,8 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0xfcc3cf19d4a0e32a3e36fd34125864bc66be993fd4d1abe2bd9593f6bab6d364", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x64d3b6baf69395bde2abd1d43f99be66bc64581234fd363e2ae3a0d419cfc3fc", "proof": "0xa80216e6ca6221a11f1a0417387eaba6571d2cfdfa338d69d173923d8722fa8394bf9ab487d2a155d1def23a512ef5a3" }, "output": false, @@ -573,7 +573,7 @@ { "input": { "commitment": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, @@ -583,8 +583,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, "output": false, @@ -593,8 +593,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, "output": false, @@ -603,8 +603,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0xa1d585244bdf6b19342435c0eafebce670feb83458df10496a7e7ae63250d224", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x24d25032e67a7e6a4910df5834b8fe70e6bcfeeac0352434196bdf4b2485d5a1", "proof": "0x80c0d129b845321df0c5b09d06d5cee182cf743783f33d7927735e91a08a4055b4053be9cb84ba370ea275f4b91da2bf" }, "output": false, @@ -613,8 +613,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0xfcffffff0300000004900600f46f09b1ea9f78d9df9f1833df0a8a59b3624930", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", + "y": "0x304962b3598a0adf33189fdfd9789feab1096ff40006900400000003fffffffc", "proof": "0x81b26a6f4606710d329c8977ba35d907358aa9a4cc288ff6e4be5f251cab25118f206b22d030b6c2aa82444d1accc73c" }, "output": false, @@ -623,8 +623,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x0663d3a511da06e296bf8f377b34d10a5f24f8e0cf8a3efcf404f7a0110a4c56", - "y": "0xdd92b1f745bb2ae587ae9dfa33e1529d549781bea8b18c63e1f5a2feedd6286c", + "z": "0x564c0a11a0f704f4fc3e8acfe0f8245f0ad1347b378fbf96e206da11a5d36306", + "y": "0x6c28d6edfea2f5e1638cb1a8be8197549d52e133fa9dae87e52abb45f7b192dd", "proof": "0x908fa50ed7c7359b6fea6031f8089459bb91ea77cb0af622bdfc7abb7a98d571aba9c322e70b25e2f439fc75887a0af0" }, "output": false, @@ -633,8 +633,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0x51fd8210778b5a166980d9ec7e95ea9f51548c9075c7a64e21524b27f57a3e44", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x443e7af5274b52214ea6c775908c54519fea957eecd98069165a8b771082fd51", "proof": "0xb3352fb4d0b82179ccba8f8cd2969f93e67f9ee926607cb374cff85e22c578ee94cf738d332e1b2cc2feb908690c1b03" }, "output": false, @@ -653,8 +653,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0xb0beca43fd6fc6980bd2c47d3efe14f2566e7e4dfcaf211a6694eb80f9e1f42b", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x2bf4e1f980eb94661a21affc4d7e6e56f214fe3e7dc4d20b98c66ffd43cabeb0", "proof": "0xaa421ef5eb79b0e642339a0edd408faed044978319b307f5230eb4f6b787602e29cd9246b905aa34077c802bc1087be0" }, "output": false, @@ -663,7 +663,7 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xa229f9de17c0f4b53ee9d448c189a5909358e32ec04409265497cf41cbdcd03af5bd50812cafffc09e08e0e7e7b96337" }, @@ -673,8 +673,8 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x33d21c1603e1519bf9ef031307f2f542f83f390e9cd8cdcffab431b75081d55f", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x5fd58150b731b4facfcdd89c0e393ff842f5f2071303eff99b51e103161cd233", "proof": "0xb8d91f1642376ff871e99eda3209fb7968520c5353522f31d1013e8925d05e7ea44f9117ccedfa03ef5f6fc8205080a7" }, "output": false, @@ -684,7 +684,7 @@ "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, "output": false, @@ -693,7 +693,7 @@ { "input": { "commitment": "0xb09ce4964278eff81a976fbc552488cb84fc4a102f004c87179cb912f49904d1e785ecaf5d184522a58e9035875440ef", - "z": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "y": "0x0000000000000000000000000000000000000000000000000000000000000000", "proof": "0xa491b284078832f22a229c6fb9c60670bbbcc13142ad50a9f53e3f2fa32e673416ce59d1dd05921cbb37f91bec352ad6" }, @@ -703,8 +703,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0xc90ec2a32a8fb9c778ab05ad1f724294323b395a2d7bb7d2c0d0c01e6440f860", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x60f840641ec0d0c0d2b77b2d5a393b329442721fad05ab78c7b98f2aa3c20ec9", "proof": "0x9331a4bf48d66edbf77db3778203ad7045ed762bcfb2fe3ded65763983208e78ec1ef255babab4b41875b9505d1fb129" }, "output": false, @@ -713,8 +713,8 @@ { "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", - "z": "0x623ce31cf9759a5c8daf3a357992f9f3dd7f9339d8998bc8e68373e54f00b75e", - "y": "0x14fab39020d084408adfc0d2750029218c246bccf97d02d75885d0d6f1e49a2c", + "z": "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62", + "y": "0x2c9ae4f1d6d08558d7027df9cc6b248c21290075d2c0df8a4084d02090b3fa14", "proof": "0xaf62efd28d2f6a4d044da3db338612b43f453b7746999c7501f5be48c1dce51e481b5cfe5ec93f90264ba0655782ffe9" }, "output": false, @@ -723,8 +723,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0xfeffffff0100000002480300fab78458f54fbcecef4f8c996f05c5ac59b12418", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x1824b159acc5056f998c4fefecbc4ff55884b7fa0003480200000001fffffffe", "proof": "0x94b3fc86ed60de7223ce1ec3a22dcf3c7c3672c1870ffa0888bc29eeb684e9120857089163dea588685ff2fa0798e808" }, "output": false, @@ -733,8 +733,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x0200000000000000000000000000000000000000000000000000000000000000", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x0000000000000000000000000000000000000000000000000000000000000002", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb" }, "output": false, @@ -743,8 +743,8 @@ { "input": { "commitment": "0x991fc16086918023ba2301fb85054f814ef114cfce303650d90a456199c6196146cc1293a88384c6503be26d087f11c9", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0x01000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", "proof": "0x92cccc70d97c2eeb444077721221cbf048a7bcd5742a1c896c868672527c8fb92687db1d8c6970064375957af91b0b89" }, "output": null, @@ -753,8 +753,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x01000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": null, @@ -763,8 +763,8 @@ { "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", - "z": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "z": "0xffffffffffffffffffffffffffffffff00000000000000000000000000000000", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": null, @@ -774,7 +774,7 @@ "input": { "commitment": "0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb", "z": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "y": "0x00000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73", + "y": "0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000", "proof": "0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "output": null, @@ -784,7 +784,7 @@ "input": { "commitment": "0xa6696ac7117d8ecc2224a4368e20d367d2d67995a32a53752096a501e6477e3b76ab6969fcfcc93f1f2a0f0ed74d2ca7", "z": "0x0000000000000000000000000000000000000000000000000000000000000000", - "y": "0x0100000000000000000000000000000000000000000000000000000000000000", + "y": "0x0000000000000000000000000000000000000000000000000000000000000001", "proof": "0x8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" }, "output": null, @@ -793,8 +793,8 @@ { "input": { "commitment": "0x978a0d595c823c05947b1156175e72634a377808384256e9921ebf72181890be2d6b58d4a73a880541d1656875654806", - "z": "0x0100000000000000000000000000000000000000000000000000000000000000", - "y": "0x0100000000000000000000000000000000000000000000000000000000000000", + "z": "0x0000000000000000000000000000000000000000000000000000000000000001", + "y": "0x0000000000000000000000000000000000000000000000000000000000000001", "proof": "0x8123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde0" }, "output": null, diff --git a/fillers/eips/eip4844/point_evaluation_vectors/precompile_endianess.py b/fillers/eips/eip4844/point_evaluation_vectors/precompile_endianess.py new file mode 100644 index 0000000000..1e4faf6053 --- /dev/null +++ b/fillers/eips/eip4844/point_evaluation_vectors/precompile_endianess.py @@ -0,0 +1,47 @@ +# FOR BIG ENDIAN Z/Y: +# `python precompile_endianess big` +# FOR LITTLE ENDIAN Z/Y: +# `python precompile_endianess little` + +import json +import sys + + +def set_endian(hex_string, current_endianess, target_endianess): + bytes_list = [hex_string[i : i + 2] for i in range(2, len(hex_string), 2)] + if current_endianess != target_endianess: + return "0x" + "".join(reversed(bytes_list)) + else: + return hex_string + + +def main(path, filename, target_endianess="little"): + with open(path + filename) as file: + data = json.load(file) + first_item = data[1]["input"]["z"] + exp = "0x5eb7004fe57383e6c88b99d839937fddf3f99279353aaf8d5c9a75f91ce33c62" + if first_item == exp: + current_endianess = "big" + else: + current_endianess = "little" + + for item in data[1:]: + input_data = item["input"] + y = input_data["y"] + z = input_data["z"] + + input_data["y"] = set_endian(y, current_endianess, target_endianess) + input_data["z"] = set_endian(z, current_endianess, target_endianess) + + with open(path + filename, "w") as file: + json.dump(data, file, indent=2) + + +# Command-line argument for endianess +target_endianess = sys.argv[1] + +main( + "fillers/eips/eip4844/point_evaluation_vectors/", + "go_kzg_4844_verify_kzg_proof.json", + target_endianess, +) diff --git a/src/ethereum_test_tools/__init__.py b/src/ethereum_test_tools/__init__.py index cd26811a9e..b4290afae4 100644 --- a/src/ethereum_test_tools/__init__.py +++ b/src/ethereum_test_tools/__init__.py @@ -15,6 +15,7 @@ TestAddress, Transaction, Withdrawal, + add_kzg_version, ceiling_division, compute_create2_address, compute_create_address, @@ -52,6 +53,7 @@ "Transaction", "Withdrawal", "Yul", + "add_kzg_version", "ceiling_division", "compute_create_address", "compute_create2_address", diff --git a/src/ethereum_test_tools/common/__init__.py b/src/ethereum_test_tools/common/__init__.py index e407520507..2becdee6d8 100644 --- a/src/ethereum_test_tools/common/__init__.py +++ b/src/ethereum_test_tools/common/__init__.py @@ -9,6 +9,7 @@ TestPrivateKey, ) from .helpers import ( + add_kzg_version, ceiling_division, compute_create2_address, compute_create_address, @@ -59,6 +60,7 @@ "TestPrivateKey", "Transaction", "Withdrawal", + "add_kzg_version", "alloc_to_accounts", "ceiling_division", "compute_create_address", diff --git a/src/ethereum_test_tools/common/helpers.py b/src/ethereum_test_tools/common/helpers.py index 326d0188e2..a5e527c3ba 100644 --- a/src/ethereum_test_tools/common/helpers.py +++ b/src/ethereum_test_tools/common/helpers.py @@ -132,3 +132,24 @@ def to_hash(input: int | str) -> str: Converts an int or str into proper 32-byte hash hex string. """ return "0x" + to_hash_bytes(input).hex() + + +def add_kzg_version(b_hashes, kzg_version): + """ + Adds the Kzg Version to each blob hash. + """ + kzg_version_hex = bytes([kzg_version]) + kzg_versioned_hashes = [] + + for hash in b_hashes: + if isinstance(hash, int) or isinstance(hash, str): + kzg_versioned_hashes.append( + kzg_version_hex + to_hash_bytes(hash)[1:] + ) + elif isinstance(hash, bytes): + kzg_versioned_hashes.append(kzg_version_hex + hash[1:]) + else: + raise TypeError( + "Blob hash must be either an integer, string or bytes" + ) + return kzg_versioned_hashes diff --git a/src/ethereum_test_tools/vm/opcode.py b/src/ethereum_test_tools/vm/opcode.py index a6626b6e77..456c17cebe 100644 --- a/src/ethereum_test_tools/vm/opcode.py +++ b/src/ethereum_test_tools/vm/opcode.py @@ -243,7 +243,7 @@ class Opcodes(Opcode, Enum): CHAINID = Opcode(0x46, pushed_stack_items=1) SELFBALANCE = Opcode(0x47, pushed_stack_items=1) BASEFEE = Opcode(0x48, pushed_stack_items=1) - DATAHASH = Opcode(0x49, popped_stack_items=1, pushed_stack_items=1) + BLOBHASH = Opcode(0x49, popped_stack_items=1, pushed_stack_items=1) POP = Opcode(0x50, popped_stack_items=1) MLOAD = Opcode(0x51, popped_stack_items=1, pushed_stack_items=1) diff --git a/whitelist.txt b/whitelist.txt index 14f3824a3d..f18e68d87c 100644 --- a/whitelist.txt +++ b/whitelist.txt @@ -137,7 +137,7 @@ prevrandao authcall callf -datahash +blobhash jumpdest jumpi mload