Created
August 11, 2020 15:26
-
-
Save hrkrshnn/24818ae3ed9f1c6f04239f1765900501 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ---------- The following code was auto-generated. PLEASE DO NOT EDIT. ---------- | |
pragma solidity >= 0.6.99; | |
contract DexConstraintPoly { | |
// The Memory map during the execution of this contract is as follows: | |
// [0x0, 0x20) - periodic_column/hash_pool_points/x. | |
// [0x20, 0x40) - periodic_column/hash_pool_points/y. | |
// [0x40, 0x60) - periodic_column/vaults_merkle_hash_points/x. | |
// [0x60, 0x80) - periodic_column/vaults_merkle_hash_points/y. | |
// [0x80, 0xa0) - periodic_column/boundary_base. | |
// [0xa0, 0xc0) - periodic_column/is_modification. | |
// [0xc0, 0xe0) - periodic_column/is_settlement. | |
// [0xe0, 0x100) - periodic_column/boundary_key. | |
// [0x100, 0x120) - periodic_column/boundary_token. | |
// [0x120, 0x140) - periodic_column/boundary_amount0. | |
// [0x140, 0x160) - periodic_column/boundary_amount1. | |
// [0x160, 0x180) - periodic_column/boundary_vault_id. | |
// [0x180, 0x1a0) - periodic_column/settlement_merkle_hash_points/x. | |
// [0x1a0, 0x1c0) - periodic_column/settlement_merkle_hash_points/y. | |
// [0x1c0, 0x1e0) - periodic_column/ecdsa_points/x. | |
// [0x1e0, 0x200) - periodic_column/ecdsa_points/y. | |
// [0x200, 0x220) - trace_length. | |
// [0x220, 0x240) - shift_point.x. | |
// [0x240, 0x260) - shift_point.y. | |
// [0x260, 0x280) - vaults_path_length. | |
// [0x280, 0x2a0) - n_modifications. | |
// [0x2a0, 0x2c0) - n_settlements. | |
// [0x2c0, 0x2e0) - amount_shift. | |
// [0x2e0, 0x300) - global_expiration_timestamp_elm. | |
// [0x300, 0x320) - sig_config.alpha. | |
// [0x320, 0x340) - sig_config.beta. | |
// [0x340, 0x360) - vault_shift. | |
// [0x360, 0x380) - nonce_shift. | |
// [0x380, 0x3a0) - expiration_timestamp_shift. | |
// [0x3a0, 0x3c0) - initial_vaults_root. | |
// [0x3c0, 0x3e0) - initial_settlement_root. | |
// [0x3e0, 0x400) - final_vaults_root. | |
// [0x400, 0x420) - n_transactions. | |
// [0x420, 0x440) - final_settlement_root. | |
// [0x440, 0x460) - trace_generator. | |
// [0x460, 0x480) - oods_point. | |
// [0x480, 0x3180) - coefficients. | |
// [0x3180, 0x49a0) - oods_values. | |
// ----------------------- end of input data - ------------------------- | |
// [0x49a0, 0x49c0) - composition_degree_bound. | |
// [0x49c0, 0x49e0) - intermediate_value/hash_pool/hash/ec_subset_sum/bit. | |
// [0x49e0, 0x4a00) - intermediate_value/hash_pool/hash/ec_subset_sum/bit_neg. | |
// [0x4a00, 0x4a20) - intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0. | |
// [0x4a20, 0x4a40) - intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit. | |
// [0x4a40, 0x4a60) - intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg. | |
// [0x4a60, 0x4a80) - intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_1. | |
// [0x4a80, 0x4aa0) - intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit. | |
// [0x4aa0, 0x4ac0) - intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg. | |
// [0x4ac0, 0x4ae0) - intermediate_value/vaults_state_transition/merkle_update/prev_authentication/sibling_0. | |
// [0x4ae0, 0x4b00) - intermediate_value/vaults_state_transition/merkle_update/new_authentication/sibling_0. | |
// [0x4b00, 0x4b20) - intermediate_value/vaults_state_transition/merkle_update/prev_authentication/leaf_0. | |
// [0x4b20, 0x4b40) - intermediate_value/vaults_state_transition/merkle_update/new_authentication/leaf_0. | |
// [0x4b40, 0x4b60) - intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0. | |
// [0x4b60, 0x4b80) - intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit. | |
// [0x4b80, 0x4ba0) - intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg. | |
// [0x4ba0, 0x4bc0) - intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_1. | |
// [0x4bc0, 0x4be0) - intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit. | |
// [0x4be0, 0x4c00) - intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg. | |
// [0x4c00, 0x4c20) - intermediate_value/settlement_state_transition/merkle_update/prev_authentication/sibling_0. | |
// [0x4c20, 0x4c40) - intermediate_value/settlement_state_transition/merkle_update/new_authentication/sibling_0. | |
// [0x4c40, 0x4c60) - intermediate_value/settlement_state_transition/merkle_update/prev_authentication/leaf_0. | |
// [0x4c60, 0x4c80) - intermediate_value/settlement_state_transition/merkle_update/new_authentication/leaf_0. | |
// [0x4c80, 0x4ca0) - intermediate_value/amounts_range_check/bit_0. | |
// [0x4ca0, 0x4cc0) - intermediate_value/expiration_timestamp_range_check/bit_0. | |
// [0x4cc0, 0x4ce0) - intermediate_value/nonce_range_check/bit_0. | |
// [0x4ce0, 0x4d00) - intermediate_value/sig_verify/doubling_key/x_squared. | |
// [0x4d00, 0x4d20) - intermediate_value/sig_verify/exponentiate_generator/bit. | |
// [0x4d20, 0x4d40) - intermediate_value/sig_verify/exponentiate_generator/bit_neg. | |
// [0x4d40, 0x4d60) - intermediate_value/sig_verify/exponentiate_key/bit. | |
// [0x4d60, 0x4d80) - intermediate_value/sig_verify/exponentiate_key/bit_neg. | |
// [0x4d80, 0x4da0) - intermediate_value/party_a_packed_msg/partial. | |
// [0x4da0, 0x4dc0) - intermediate_value/party_b_packed_msg/partial. | |
// [0x4dc0, 0x4de0) - intermediate_value/party_b_packed_msg_transfer/partial. | |
// [0x4de0, 0x50e0) - expmods. | |
// [0x50e0, 0x5460) - denominator_invs. | |
// [0x5460, 0x57e0) - denominators. | |
// [0x57e0, 0x59a0) - numerators. | |
// [0x59a0, 0x5d60) - adjustments. | |
// [0x5d60, 0x5e20) - expmod_context. | |
fallback() external { | |
uint256 res; | |
assembly { | |
let PRIME := 0x800000000000011000000000000000000000000000000000000000000000001 | |
// Copy input from calldata to memory. | |
calldatacopy(0x0, 0x0, /*Input data size*/ 0x49a0) | |
let point := /*oods_point*/ mload(0x460) | |
// Initialize composition_degree_bound to 2 * trace_length. | |
mstore(0x49a0, mul(2, /*trace_length*/ mload(0x200))) | |
function expmod(base, exponent, modulus) -> _res { | |
let p := /*expmod_context*/ 0x5d60 | |
mstore(p, 0x20) // Length of Base. | |
mstore(add(p, 0x20), 0x20) // Length of Exponent. | |
mstore(add(p, 0x40), 0x20) // Length of Modulus. | |
mstore(add(p, 0x60), base) // Base. | |
mstore(add(p, 0x80), exponent) // Exponent. | |
mstore(add(p, 0xa0), modulus) // Modulus. | |
// Call modexp precompile. | |
if iszero(staticcall(not(0), 0x05, p, 0xc0, p, 0x20)) { | |
revert(0, 0) | |
} | |
_res := mload(p) | |
} | |
function degreeAdjustment(compositionPolynomialDegreeBound, constraintDegree, numeratorDegree, | |
denominatorDegree) -> _res { | |
_res := sub(sub(compositionPolynomialDegreeBound, 1), | |
sub(add(constraintDegree, numeratorDegree), denominatorDegree)) | |
} | |
{ | |
// Prepare expmods for denominators and numerators. | |
// expmods[0] = point^(trace_length / 4). | |
mstore(0x4de0, expmod(point, div(/*trace_length*/ mload(0x200), 4), PRIME)) | |
// expmods[1] = point^(trace_length / 1024). | |
mstore(0x4e00, expmod(point, div(/*trace_length*/ mload(0x200), 1024), PRIME)) | |
// expmods[2] = point^(trace_length / 2048). | |
mstore(0x4e20, expmod(point, div(/*trace_length*/ mload(0x200), 2048), PRIME)) | |
// expmods[3] = point^(trace_length / 4096). | |
mstore(0x4e40, expmod(point, div(/*trace_length*/ mload(0x200), 4096), PRIME)) | |
// expmods[4] = point^(trace_length / 512). | |
mstore(0x4e60, expmod(point, div(/*trace_length*/ mload(0x200), 512), PRIME)) | |
// expmods[5] = point^(trace_length / 16384). | |
mstore(0x4e80, expmod(point, div(/*trace_length*/ mload(0x200), 16384), PRIME)) | |
// expmods[6] = point^trace_length. | |
mstore(0x4ea0, expmod(point, /*trace_length*/ mload(0x200), PRIME)) | |
// expmods[7] = point^(trace_length / 256). | |
mstore(0x4ec0, expmod(point, div(/*trace_length*/ mload(0x200), 256), PRIME)) | |
// expmods[8] = point^(trace_length / 65536). | |
mstore(0x4ee0, expmod(point, div(/*trace_length*/ mload(0x200), 65536), PRIME)) | |
// expmods[9] = point^(trace_length / 32768). | |
mstore(0x4f00, expmod(point, div(/*trace_length*/ mload(0x200), 32768), PRIME)) | |
// expmods[10] = point^(trace_length / 64). | |
mstore(0x4f20, expmod(point, div(/*trace_length*/ mload(0x200), 64), PRIME)) | |
// expmods[11] = point^(trace_length / 128). | |
mstore(0x4f40, expmod(point, div(/*trace_length*/ mload(0x200), 128), PRIME)) | |
// expmods[12] = point^(trace_length / 8192). | |
mstore(0x4f60, expmod(point, div(/*trace_length*/ mload(0x200), 8192), PRIME)) | |
// expmods[13] = trace_generator^(255 * trace_length / 256). | |
mstore(0x4f80, expmod(/*trace_generator*/ mload(0x440), div(mul(255, /*trace_length*/ mload(0x200)), 256), PRIME)) | |
// expmods[14] = trace_generator^(63 * trace_length / 64). | |
mstore(0x4fa0, expmod(/*trace_generator*/ mload(0x440), div(mul(63, /*trace_length*/ mload(0x200)), 64), PRIME)) | |
// expmods[15] = trace_generator^(trace_length / 2). | |
mstore(0x4fc0, expmod(/*trace_generator*/ mload(0x440), div(/*trace_length*/ mload(0x200), 2), PRIME)) | |
// expmods[16] = trace_generator^(31 * trace_length / 32). | |
mstore(0x4fe0, expmod(/*trace_generator*/ mload(0x440), div(mul(31, /*trace_length*/ mload(0x200)), 32), PRIME)) | |
// expmods[17] = trace_generator^(vaults_path_length * trace_length / 32). | |
mstore(0x5000, expmod(/*trace_generator*/ mload(0x440), div(mul(/*vaults_path_length*/ mload(0x260), /*trace_length*/ mload(0x200)), 32), PRIME)) | |
// expmods[18] = trace_generator^(15 * trace_length / 16). | |
mstore(0x5020, expmod(/*trace_generator*/ mload(0x440), div(mul(15, /*trace_length*/ mload(0x200)), 16), PRIME)) | |
// expmods[19] = trace_generator^(11 * trace_length / 16). | |
mstore(0x5040, expmod(/*trace_generator*/ mload(0x440), div(mul(11, /*trace_length*/ mload(0x200)), 16), PRIME)) | |
// expmods[20] = trace_generator^(251 * trace_length / 256). | |
mstore(0x5060, expmod(/*trace_generator*/ mload(0x440), div(mul(251, /*trace_length*/ mload(0x200)), 256), PRIME)) | |
// expmods[21] = trace_generator^(65536 * (n_transactions - 1)). | |
mstore(0x5080, expmod(/*trace_generator*/ mload(0x440), mul(65536, sub(/*n_transactions*/ mload(0x400), 1)), PRIME)) | |
// expmods[22] = trace_generator^(65536 * (trace_length / 65536 - 1) + 49152). | |
mstore(0x50a0, expmod(/*trace_generator*/ mload(0x440), add(mul(65536, sub(div(/*trace_length*/ mload(0x200), 65536), 1)), 49152), PRIME)) | |
// expmods[23] = trace_generator^(65536 * (trace_length / 65536 - 1)). | |
mstore(0x50c0, expmod(/*trace_generator*/ mload(0x440), mul(65536, sub(div(/*trace_length*/ mload(0x200), 65536), 1)), PRIME)) | |
} | |
{ | |
// Prepare denominators for batch inverse. | |
// Denominator for constraints: 'hash_pool/hash/ec_subset_sum/booleanity_test', 'hash_pool/hash/ec_subset_sum/add_points/slope', 'hash_pool/hash/ec_subset_sum/add_points/x', 'hash_pool/hash/ec_subset_sum/add_points/y', 'hash_pool/hash/ec_subset_sum/copy_point/x', 'hash_pool/hash/ec_subset_sum/copy_point/y'. | |
// denominators[0] = point^(trace_length / 4) - 1. | |
mstore(0x5460, | |
addmod(/*point^(trace_length / 4)*/ mload(0x4de0), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'hash_pool/hash/ec_subset_sum/bit_extraction_end'. | |
// denominators[1] = point^(trace_length / 1024) - trace_generator^(63 * trace_length / 64). | |
mstore(0x5480, | |
addmod( | |
/*point^(trace_length / 1024)*/ mload(0x4e00), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME)) | |
// Denominator for constraints: 'hash_pool/hash/ec_subset_sum/zeros_tail'. | |
// denominators[2] = point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
mstore(0x54a0, | |
addmod( | |
/*point^(trace_length / 1024)*/ mload(0x4e00), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Denominator for constraints: 'hash_pool/hash/copy_point/x', 'hash_pool/hash/copy_point/y', 'nonce_range_check/bit'. | |
// denominators[3] = point^(trace_length / 1024) - 1. | |
mstore(0x54c0, | |
addmod(/*point^(trace_length / 1024)*/ mload(0x4e00), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'hash_pool/hash/init/x', 'hash_pool/hash/init/y'. | |
// denominators[4] = point^(trace_length / 2048) - 1. | |
mstore(0x54e0, | |
addmod(/*point^(trace_length / 2048)*/ mload(0x4e20), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'hash_pool/output_to_input'. | |
// denominators[5] = point^(trace_length / 4096) - 1. | |
mstore(0x5500, | |
addmod(/*point^(trace_length / 4096)*/ mload(0x4e40), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_update/side_bit_extraction/bit', 'vaults_state_transition/merkle_update/prev_authentication/hashes/init/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/init/y', 'vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_left', 'vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_right', 'vaults_state_transition/merkle_update/new_authentication/hashes/init/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/init/y', 'vaults_state_transition/merkle_update/new_authentication/copy_prev_to_left', 'vaults_state_transition/merkle_update/new_authentication/copy_prev_to_right', 'vaults_state_transition/merkle_update/same_siblings', 'settlement_state_transition/merkle_update/side_bit_extraction/bit', 'settlement_state_transition/merkle_update/prev_authentication/hashes/init/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/init/y', 'settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_left', 'settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_right', 'settlement_state_transition/merkle_update/new_authentication/hashes/init/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/init/y', 'settlement_state_transition/merkle_update/new_authentication/copy_prev_to_left', 'settlement_state_transition/merkle_update/new_authentication/copy_prev_to_right', 'settlement_state_transition/merkle_update/same_siblings', 'expiration_timestamp_range_check/bit'. | |
// denominators[6] = point^(trace_length / 512) - 1. | |
mstore(0x5520, | |
addmod(/*point^(trace_length / 512)*/ mload(0x4e60), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_update/side_bit_extraction/zero'. | |
// denominators[7] = point^(trace_length / 16384) - trace_generator^(vaults_path_length * trace_length / 32). | |
mstore(0x5540, | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(vaults_path_length * trace_length / 32)*/ mload(0x5000)), | |
PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y'. | |
// denominators[8] = point^trace_length - 1. | |
mstore(0x5560, | |
addmod(/*point^trace_length*/ mload(0x4ea0), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_extraction_end', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_extraction_end', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_extraction_end', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_extraction_end'. | |
// denominators[9] = point^(trace_length / 256) - trace_generator^(63 * trace_length / 64). | |
mstore(0x5580, | |
addmod( | |
/*point^(trace_length / 256)*/ mload(0x4ec0), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/zeros_tail', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/zeros_tail', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/zeros_tail', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/zeros_tail'. | |
// denominators[10] = point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
mstore(0x55a0, | |
addmod( | |
/*point^(trace_length / 256)*/ mload(0x4ec0), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/y'. | |
// denominators[11] = point^(trace_length / 256) - 1. | |
mstore(0x55c0, | |
addmod(/*point^(trace_length / 256)*/ mload(0x4ec0), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'vaults_state_transition/merkle_set_prev_leaf', 'vaults_state_transition/merkle_set_new_leaf', 'amounts_range_check_inputs', 'sig_verify/init_key/x', 'sig_verify/init_key/y', 'sig_verify/r_and_w_nonzero', 'handle_empty_vault/consistency_key_stage0', 'handle_empty_vault/consistency_token_stage0', 'handle_empty_vault/consistency_key_stage1', 'handle_empty_vault/consistency_token_stage1', 'copy_merkle_roots'. | |
// denominators[12] = point^(trace_length / 16384) - 1. | |
mstore(0x55e0, | |
addmod(/*point^(trace_length / 16384)*/ mload(0x4e80), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'modification_boundary_key', 'modification_boundary_token', 'modification_boundary_amount0', 'modification_boundary_amount1', 'modification_boundary_vault_id', 'settlement_state_transition/set_prev_root', 'settlement_state_transition/root_consistency', 'settlement_state_transition/set_new_root', 'settlement_state_transition/dont_change_if_modification', 'total_token_a_not_changed', 'total_token_b_not_changed', 'party_a_fulfilled_amount', 'party_b_fulfilled_amount', 'amount_a_range_check_input', 'amount_b_range_check_input', 'ratio_party_a', 'ratio_party_b', 'capacity_party_a', 'capacity_party_b', 'is_transfer/bit', 'is_transfer/modification', 'transfer/party_a_sold', 'transfer/party_b_buy', 'transfer/party_a_sell', 'transfer/party_b_exact_transferred', 'party_a_sig_input_packed', 'party_b_sig_input_packed', 'signatures/party_b_hash_sec_msg', 'signatures/copy_token_b', 'copy_signature_input_party_a', 'copy_signature_input_party_b', 'message_hash_determines_order_id_party_a', 'message_hash_determines_order_id_party_b', 'party_a_public_key_copy', 'handle_empty_vault/consistency_key_change0', 'handle_empty_vault/consistency_token_change0', 'handle_empty_vault/consistency_key_change3', 'handle_empty_vault/consistency_token_change3', 'handle_empty_vault/consistency_key_change1', 'handle_empty_vault/consistency_token_change1', 'handle_empty_vault/consistency_key_change2', 'handle_empty_vault/consistency_token_change2', 'copy_settlement_merkle_roots', 'copy_merkle_roots_modification'. | |
// denominators[13] = point^(trace_length / 65536) - 1. | |
mstore(0x5600, | |
addmod(/*point^(trace_length / 65536)*/ mload(0x4ee0), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'settlement_state_transition/merkle_update/side_bit_extraction/zero'. | |
// denominators[14] = point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64). | |
mstore(0x5620, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME)) | |
// Denominator for constraints: 'settlement_state_transition/merkle_set_prev_leaf', 'settlement_state_transition/merkle_set_new_leaf', 'expiration_timestamp_range_check_input', 'sig_verify/init_gen/x', 'sig_verify/init_gen/y', 'sig_verify/add_results/slope', 'sig_verify/add_results/x', 'sig_verify/add_results/y', 'sig_verify/add_results/x_diff_inv', 'sig_verify/extract_r/slope', 'sig_verify/extract_r/x', 'sig_verify/extract_r/x_diff_inv', 'sig_verify/z_nonzero', 'sig_verify/q_on_curve/x_squared', 'sig_verify/q_on_curve/on_curve'. | |
// denominators[15] = point^(trace_length / 32768) - 1. | |
mstore(0x5640, | |
addmod(/*point^(trace_length / 32768)*/ mload(0x4f00), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'amounts_range_check/bit', 'sig_verify/doubling_key/slope', 'sig_verify/doubling_key/x', 'sig_verify/doubling_key/y', 'sig_verify/exponentiate_key/booleanity_test', 'sig_verify/exponentiate_key/add_points/slope', 'sig_verify/exponentiate_key/add_points/x', 'sig_verify/exponentiate_key/add_points/y', 'sig_verify/exponentiate_key/add_points/x_diff_inv', 'sig_verify/exponentiate_key/copy_point/x', 'sig_verify/exponentiate_key/copy_point/y'. | |
// denominators[16] = point^(trace_length / 64) - 1. | |
mstore(0x5660, | |
addmod(/*point^(trace_length / 64)*/ mload(0x4f20), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'amounts_range_check/zero'. | |
// denominators[17] = point^(trace_length / 4096) - trace_generator^(63 * trace_length / 64). | |
mstore(0x5680, | |
addmod( | |
/*point^(trace_length / 4096)*/ mload(0x4e40), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME)) | |
// Denominator for constraints: 'expiration_timestamp_range_check/zero'. | |
// denominators[18] = point^(trace_length / 16384) - trace_generator^(11 * trace_length / 16). | |
mstore(0x56a0, | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(11 * trace_length / 16)*/ mload(0x5040)), | |
PRIME)) | |
// Denominator for constraints: 'nonce_range_check/zero'. | |
// denominators[19] = point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32). | |
mstore(0x56c0, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(31 * trace_length / 32)*/ mload(0x4fe0)), | |
PRIME)) | |
// Denominator for constraints: 'sig_verify/exponentiate_generator/booleanity_test', 'sig_verify/exponentiate_generator/add_points/slope', 'sig_verify/exponentiate_generator/add_points/x', 'sig_verify/exponentiate_generator/add_points/y', 'sig_verify/exponentiate_generator/add_points/x_diff_inv', 'sig_verify/exponentiate_generator/copy_point/x', 'sig_verify/exponentiate_generator/copy_point/y'. | |
// denominators[20] = point^(trace_length / 128) - 1. | |
mstore(0x56e0, | |
addmod(/*point^(trace_length / 128)*/ mload(0x4f40), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'sig_verify/exponentiate_generator/bit_extraction_end'. | |
// denominators[21] = point^(trace_length / 32768) - trace_generator^(251 * trace_length / 256). | |
mstore(0x5700, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(251 * trace_length / 256)*/ mload(0x5060)), | |
PRIME)) | |
// Denominator for constraints: 'sig_verify/exponentiate_generator/zeros_tail'. | |
// denominators[22] = point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
mstore(0x5720, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Denominator for constraints: 'sig_verify/exponentiate_key/bit_extraction_end'. | |
// denominators[23] = point^(trace_length / 16384) - trace_generator^(251 * trace_length / 256). | |
mstore(0x5740, | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(251 * trace_length / 256)*/ mload(0x5060)), | |
PRIME)) | |
// Denominator for constraints: 'sig_verify/exponentiate_key/zeros_tail'. | |
// denominators[24] = point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
mstore(0x5760, | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Denominator for constraints: 'handle_empty_vault/vault_empty/empty_vault_booleanity', 'handle_empty_vault/vault_empty/amount_zero_when_empty', 'handle_empty_vault/vault_empty/amount_inv_zero_when_empty', 'handle_empty_vault/vault_empty/empty_when_amount_zero'. | |
// denominators[25] = point^(trace_length / 8192) - 1. | |
mstore(0x5780, | |
addmod(/*point^(trace_length / 8192)*/ mload(0x4f60), sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'initial_vaults_root', 'initial_settlement_root'. | |
// denominators[26] = point - 1. | |
mstore(0x57a0, | |
addmod(point, sub(PRIME, 1), PRIME)) | |
// Denominator for constraints: 'final_vaults_root', 'final_settlement_root'. | |
// denominators[27] = point - trace_generator^(65536 * (n_transactions - 1)). | |
mstore(0x57c0, | |
addmod( | |
point, | |
sub(PRIME, /*trace_generator^(65536 * (n_transactions - 1))*/ mload(0x5080)), | |
PRIME)) | |
} | |
{ | |
// Compute the inverses of the denominators into denominatorInvs using batch inverse. | |
// Start by computing the cumulative product. | |
// Let (d_0, d_1, d_2, ..., d_{n-1}) be the values in denominators. After this loop | |
// denominatorInvs will be (1, d_0, d_0 * d_1, ...) and prod will contain the value of | |
// d_0 * ... * d_{n-1}. | |
// Compute the offset between the partialProducts array and the input values array. | |
let productsToValuesOffset := 0x380 | |
let prod := 1 | |
let partialProductEndPtr := 0x5460 | |
for { let partialProductPtr := 0x50e0 } | |
lt(partialProductPtr, partialProductEndPtr) | |
{ partialProductPtr := add(partialProductPtr, 0x20) } { | |
mstore(partialProductPtr, prod) | |
// prod *= d_{i}. | |
prod := mulmod(prod, | |
mload(add(partialProductPtr, productsToValuesOffset)), | |
PRIME) | |
} | |
let firstPartialProductPtr := 0x50e0 | |
// Compute the inverse of the product. | |
let prodInv := expmod(prod, sub(PRIME, 2), PRIME) | |
if eq(prodInv, 0) { | |
// Solidity generates reverts with reason that look as follows: | |
// 1. 4 bytes with the constant 0x08c379a0 (== Keccak256(b'Error(string)')[:4]). | |
// 2. 32 bytes offset bytes (always 0x20 as far as i can tell). | |
// 3. 32 bytes with the length of the revert reason. | |
// 4. Revert reason string. | |
mstore(0, 0x08c379a000000000000000000000000000000000000000000000000000000000) | |
mstore(0x4, 0x20) | |
mstore(0x24, 0x1e) | |
mstore(0x44, "Batch inverse product is zero.") | |
revert(0, 0x62) | |
} | |
// Compute the inverses. | |
// Loop over denominator_invs in reverse order. | |
// currentPartialProductPtr is initialized to one past the end. | |
let currentPartialProductPtr := 0x5460 | |
for { } gt(currentPartialProductPtr, firstPartialProductPtr) { } { | |
currentPartialProductPtr := sub(currentPartialProductPtr, 0x20) | |
// Store 1/d_{i} = (d_0 * ... * d_{i-1}) * 1/(d_0 * ... * d_{i}). | |
mstore(currentPartialProductPtr, | |
mulmod(mload(currentPartialProductPtr), prodInv, PRIME)) | |
// Update prodInv to be 1/(d_0 * ... * d_{i-1}) by multiplying by d_i. | |
prodInv := mulmod(prodInv, | |
mload(add(currentPartialProductPtr, productsToValuesOffset)), | |
PRIME) | |
} | |
} | |
{ | |
// Compute numerators and adjustment polynomials. | |
// Numerator for constraints 'hash_pool/hash/ec_subset_sum/booleanity_test', 'hash_pool/hash/ec_subset_sum/add_points/slope', 'hash_pool/hash/ec_subset_sum/add_points/x', 'hash_pool/hash/ec_subset_sum/add_points/y', 'hash_pool/hash/ec_subset_sum/copy_point/x', 'hash_pool/hash/ec_subset_sum/copy_point/y'. | |
// numerators[0] = point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
mstore(0x57e0, | |
addmod( | |
/*point^(trace_length / 1024)*/ mload(0x4e00), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Numerator for constraints 'hash_pool/hash/copy_point/x', 'hash_pool/hash/copy_point/y'. | |
// numerators[1] = point^(trace_length / 2048) - trace_generator^(trace_length / 2). | |
mstore(0x5800, | |
addmod( | |
/*point^(trace_length / 2048)*/ mload(0x4e20), | |
sub(PRIME, /*trace_generator^(trace_length / 2)*/ mload(0x4fc0)), | |
PRIME)) | |
// Numerator for constraints 'vaults_state_transition/merkle_update/side_bit_extraction/bit', 'vaults_state_transition/merkle_update/same_siblings', 'expiration_timestamp_range_check/bit'. | |
// numerators[2] = point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32). | |
mstore(0x5820, | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(31 * trace_length / 32)*/ mload(0x4fe0)), | |
PRIME)) | |
// Numerator for constraints 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y'. | |
// numerators[3] = point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
mstore(0x5840, | |
addmod( | |
/*point^(trace_length / 256)*/ mload(0x4ec0), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Numerator for constraints 'vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/y'. | |
// numerators[4] = point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
mstore(0x5860, | |
addmod( | |
/*point^(trace_length / 512)*/ mload(0x4e60), | |
sub(PRIME, /*trace_generator^(trace_length / 2)*/ mload(0x4fc0)), | |
PRIME)) | |
// Numerator for constraints 'vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_left', 'vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_right', 'vaults_state_transition/merkle_update/new_authentication/copy_prev_to_left', 'vaults_state_transition/merkle_update/new_authentication/copy_prev_to_right'. | |
// numerators[5] = (point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32)) * (point^(trace_length / 16384) - trace_generator^(15 * trace_length / 16)). | |
mstore(0x5880, | |
mulmod( | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(31 * trace_length / 32)*/ mload(0x4fe0)), | |
PRIME), | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(15 * trace_length / 16)*/ mload(0x5020)), | |
PRIME), | |
PRIME)) | |
// Numerator for constraints 'settlement_state_transition/merkle_update/side_bit_extraction/bit', 'settlement_state_transition/merkle_update/same_siblings'. | |
// numerators[6] = point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64). | |
mstore(0x58a0, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME)) | |
// Numerator for constraints 'settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_left', 'settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_right', 'settlement_state_transition/merkle_update/new_authentication/copy_prev_to_left', 'settlement_state_transition/merkle_update/new_authentication/copy_prev_to_right'. | |
// numerators[7] = (point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64)) * (point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32)). | |
mstore(0x58c0, | |
mulmod( | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME), | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(31 * trace_length / 32)*/ mload(0x4fe0)), | |
PRIME), | |
PRIME)) | |
// Numerator for constraints 'amounts_range_check/bit'. | |
// numerators[8] = point^(trace_length / 4096) - trace_generator^(63 * trace_length / 64). | |
mstore(0x58e0, | |
addmod( | |
/*point^(trace_length / 4096)*/ mload(0x4e40), | |
sub(PRIME, /*trace_generator^(63 * trace_length / 64)*/ mload(0x4fa0)), | |
PRIME)) | |
// Numerator for constraints 'nonce_range_check/bit'. | |
// numerators[9] = point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32). | |
mstore(0x5900, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(31 * trace_length / 32)*/ mload(0x4fe0)), | |
PRIME)) | |
// Numerator for constraints 'sig_verify/doubling_key/slope', 'sig_verify/doubling_key/x', 'sig_verify/doubling_key/y', 'sig_verify/exponentiate_key/booleanity_test', 'sig_verify/exponentiate_key/add_points/slope', 'sig_verify/exponentiate_key/add_points/x', 'sig_verify/exponentiate_key/add_points/y', 'sig_verify/exponentiate_key/add_points/x_diff_inv', 'sig_verify/exponentiate_key/copy_point/x', 'sig_verify/exponentiate_key/copy_point/y'. | |
// numerators[10] = point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
mstore(0x5920, | |
addmod( | |
/*point^(trace_length / 16384)*/ mload(0x4e80), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Numerator for constraints 'sig_verify/exponentiate_generator/booleanity_test', 'sig_verify/exponentiate_generator/add_points/slope', 'sig_verify/exponentiate_generator/add_points/x', 'sig_verify/exponentiate_generator/add_points/y', 'sig_verify/exponentiate_generator/add_points/x_diff_inv', 'sig_verify/exponentiate_generator/copy_point/x', 'sig_verify/exponentiate_generator/copy_point/y'. | |
// numerators[11] = point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
mstore(0x5940, | |
addmod( | |
/*point^(trace_length / 32768)*/ mload(0x4f00), | |
sub(PRIME, /*trace_generator^(255 * trace_length / 256)*/ mload(0x4f80)), | |
PRIME)) | |
// Numerator for constraints 'copy_merkle_roots'. | |
// numerators[12] = point - trace_generator^(65536 * (trace_length / 65536 - 1) + 49152). | |
mstore(0x5960, | |
addmod( | |
point, | |
sub( | |
PRIME, | |
/*trace_generator^(65536 * (trace_length / 65536 - 1) + 49152)*/ mload(0x50a0)), | |
PRIME)) | |
// Numerator for constraints 'copy_settlement_merkle_roots'. | |
// numerators[13] = point - trace_generator^(65536 * (trace_length / 65536 - 1)). | |
mstore(0x5980, | |
addmod( | |
point, | |
sub(PRIME, /*trace_generator^(65536 * (trace_length / 65536 - 1))*/ mload(0x50c0)), | |
PRIME)) | |
// Adjustment polynomial for constraints 'hash_pool/hash/ec_subset_sum/booleanity_test', 'hash_pool/hash/ec_subset_sum/add_points/slope', 'hash_pool/hash/ec_subset_sum/add_points/x', 'hash_pool/hash/ec_subset_sum/add_points/y', 'hash_pool/hash/ec_subset_sum/copy_point/x', 'hash_pool/hash/ec_subset_sum/copy_point/y'. | |
// adjustments[0] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 1024, trace_length / 4). | |
mstore(0x59a0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 1024), div(/*trace_length*/ mload(0x200), 4)), PRIME)) | |
// Adjustment polynomial for constraints 'hash_pool/hash/ec_subset_sum/bit_extraction_end', 'hash_pool/hash/ec_subset_sum/zeros_tail'. | |
// adjustments[1] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 1024). | |
mstore(0x59c0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 1024)), PRIME)) | |
// Adjustment polynomial for constraints 'hash_pool/hash/copy_point/x', 'hash_pool/hash/copy_point/y'. | |
// adjustments[2] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, trace_length / 2048, trace_length / 1024). | |
mstore(0x59e0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), div(/*trace_length*/ mload(0x200), 2048), div(/*trace_length*/ mload(0x200), 1024)), PRIME)) | |
// Adjustment polynomial for constraints 'hash_pool/hash/init/x', 'hash_pool/hash/init/y'. | |
// adjustments[3] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 2048). | |
mstore(0x5a00, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 2048)), PRIME)) | |
// Adjustment polynomial for constraints 'hash_pool/output_to_input', 'amounts_range_check/zero'. | |
// adjustments[4] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 4096). | |
mstore(0x5a20, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 4096)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/side_bit_extraction/bit', 'vaults_state_transition/merkle_update/same_siblings', 'expiration_timestamp_range_check/bit'. | |
// adjustments[5] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 16384, trace_length / 512). | |
mstore(0x5a40, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 16384), div(/*trace_length*/ mload(0x200), 512)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/side_bit_extraction/zero', 'amounts_range_check_inputs', 'expiration_timestamp_range_check/zero', 'sig_verify/exponentiate_key/bit_extraction_end', 'sig_verify/exponentiate_key/zeros_tail', 'sig_verify/init_key/x', 'sig_verify/init_key/y'. | |
// adjustments[6] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 16384). | |
mstore(0x5a60, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 16384)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y'. | |
// adjustments[7] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 256, trace_length). | |
mstore(0x5a80, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 256), /*trace_length*/ mload(0x200)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_extraction_end', 'vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/zeros_tail', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_extraction_end', 'vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/zeros_tail', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_extraction_end', 'settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/zeros_tail', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_extraction_end', 'settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/zeros_tail'. | |
// adjustments[8] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 256). | |
mstore(0x5aa0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 256)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/y'. | |
// adjustments[9] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, trace_length / 512, trace_length / 256). | |
mstore(0x5ac0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), div(/*trace_length*/ mload(0x200), 512), div(/*trace_length*/ mload(0x200), 256)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/prev_authentication/hashes/init/x', 'vaults_state_transition/merkle_update/prev_authentication/hashes/init/y', 'vaults_state_transition/merkle_update/new_authentication/hashes/init/x', 'vaults_state_transition/merkle_update/new_authentication/hashes/init/y', 'settlement_state_transition/merkle_update/prev_authentication/hashes/init/x', 'settlement_state_transition/merkle_update/prev_authentication/hashes/init/y', 'settlement_state_transition/merkle_update/new_authentication/hashes/init/x', 'settlement_state_transition/merkle_update/new_authentication/hashes/init/y'. | |
// adjustments[10] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 512). | |
mstore(0x5ae0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 512)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_left', 'vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_right', 'vaults_state_transition/merkle_update/new_authentication/copy_prev_to_left', 'vaults_state_transition/merkle_update/new_authentication/copy_prev_to_right'. | |
// adjustments[11] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 16384 + trace_length / 16384, trace_length / 512). | |
mstore(0x5b00, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), add( | |
div(/*trace_length*/ mload(0x200), 16384), | |
div(/*trace_length*/ mload(0x200), 16384)), div(/*trace_length*/ mload(0x200), 512)), PRIME)) | |
// Adjustment polynomial for constraints 'vaults_state_transition/merkle_set_prev_leaf', 'vaults_state_transition/merkle_set_new_leaf', 'sig_verify/r_and_w_nonzero', 'handle_empty_vault/consistency_key_stage0', 'handle_empty_vault/consistency_token_stage0', 'handle_empty_vault/consistency_key_stage1', 'handle_empty_vault/consistency_token_stage1'. | |
// adjustments[12] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), 0, trace_length / 16384). | |
mstore(0x5b20, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), 0, div(/*trace_length*/ mload(0x200), 16384)), PRIME)) | |
// Adjustment polynomial for constraints 'modification_boundary_key', 'modification_boundary_token', 'modification_boundary_amount0', 'modification_boundary_amount1', 'modification_boundary_vault_id'. | |
// adjustments[13] = point^degreeAdjustment(composition_degree_bound, trace_length + trace_length / 65536 - 2, 0, trace_length / 65536). | |
mstore(0x5b40, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(add(/*trace_length*/ mload(0x200), div(/*trace_length*/ mload(0x200), 65536)), 2), 0, div(/*trace_length*/ mload(0x200), 65536)), PRIME)) | |
// Adjustment polynomial for constraints 'settlement_state_transition/merkle_update/side_bit_extraction/bit', 'settlement_state_transition/merkle_update/same_siblings'. | |
// adjustments[14] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 32768, trace_length / 512). | |
mstore(0x5b60, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 32768), div(/*trace_length*/ mload(0x200), 512)), PRIME)) | |
// Adjustment polynomial for constraints 'settlement_state_transition/merkle_update/side_bit_extraction/zero', 'expiration_timestamp_range_check_input', 'nonce_range_check/zero', 'sig_verify/exponentiate_generator/bit_extraction_end', 'sig_verify/exponentiate_generator/zeros_tail', 'sig_verify/init_gen/x', 'sig_verify/init_gen/y'. | |
// adjustments[15] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 32768). | |
mstore(0x5b80, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 32768)), PRIME)) | |
// Adjustment polynomial for constraints 'settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_left', 'settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_right', 'settlement_state_transition/merkle_update/new_authentication/copy_prev_to_left', 'settlement_state_transition/merkle_update/new_authentication/copy_prev_to_right'. | |
// adjustments[16] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 32768 + trace_length / 32768, trace_length / 512). | |
mstore(0x5ba0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), add( | |
div(/*trace_length*/ mload(0x200), 32768), | |
div(/*trace_length*/ mload(0x200), 32768)), div(/*trace_length*/ mload(0x200), 512)), PRIME)) | |
// Adjustment polynomial for constraints 'settlement_state_transition/merkle_set_prev_leaf', 'settlement_state_transition/merkle_set_new_leaf', 'sig_verify/add_results/slope', 'sig_verify/add_results/x', 'sig_verify/add_results/y', 'sig_verify/add_results/x_diff_inv', 'sig_verify/extract_r/slope', 'sig_verify/extract_r/x', 'sig_verify/extract_r/x_diff_inv', 'sig_verify/z_nonzero', 'sig_verify/q_on_curve/x_squared', 'sig_verify/q_on_curve/on_curve'. | |
// adjustments[17] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), 0, trace_length / 32768). | |
mstore(0x5bc0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), 0, div(/*trace_length*/ mload(0x200), 32768)), PRIME)) | |
// Adjustment polynomial for constraints 'settlement_state_transition/set_prev_root', 'settlement_state_transition/root_consistency', 'settlement_state_transition/set_new_root', 'total_token_a_not_changed', 'total_token_b_not_changed', 'party_a_fulfilled_amount', 'party_b_fulfilled_amount', 'amount_a_range_check_input', 'amount_b_range_check_input', 'party_a_sig_input_packed', 'copy_signature_input_party_b', 'message_hash_determines_order_id_party_b', 'handle_empty_vault/consistency_key_change0', 'handle_empty_vault/consistency_token_change0', 'handle_empty_vault/consistency_key_change3', 'handle_empty_vault/consistency_token_change3', 'handle_empty_vault/consistency_key_change1', 'handle_empty_vault/consistency_token_change1', 'handle_empty_vault/consistency_key_change2', 'handle_empty_vault/consistency_token_change2'. | |
// adjustments[18] = point^degreeAdjustment(composition_degree_bound, trace_length + n_modifications - 1, 0, trace_length / 65536). | |
mstore(0x5be0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(add(/*trace_length*/ mload(0x200), /*n_modifications*/ mload(0x280)), 1), 0, div(/*trace_length*/ mload(0x200), 65536)), PRIME)) | |
// Adjustment polynomial for constraints 'settlement_state_transition/dont_change_if_modification', 'is_transfer/modification', 'copy_merkle_roots_modification'. | |
// adjustments[19] = point^degreeAdjustment(composition_degree_bound, trace_length + n_settlements - 1, 0, trace_length / 65536). | |
mstore(0x5c00, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(add(/*trace_length*/ mload(0x200), /*n_settlements*/ mload(0x2a0)), 1), 0, div(/*trace_length*/ mload(0x200), 65536)), PRIME)) | |
// Adjustment polynomial for constraints 'amounts_range_check/bit'. | |
// adjustments[20] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 4096, trace_length / 64). | |
mstore(0x5c20, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 4096), div(/*trace_length*/ mload(0x200), 64)), PRIME)) | |
// Adjustment polynomial for constraints 'ratio_party_a', 'ratio_party_b', 'is_transfer/bit', 'transfer/party_a_sold', 'transfer/party_b_buy', 'transfer/party_a_sell', 'transfer/party_b_exact_transferred', 'party_b_sig_input_packed', 'signatures/party_b_hash_sec_msg', 'copy_signature_input_party_a', 'message_hash_determines_order_id_party_a', 'party_a_public_key_copy'. | |
// adjustments[21] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), 0, trace_length / 65536). | |
mstore(0x5c40, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), 0, div(/*trace_length*/ mload(0x200), 65536)), PRIME)) | |
// Adjustment polynomial for constraints 'capacity_party_a', 'capacity_party_b', 'signatures/copy_token_b'. | |
// adjustments[22] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, trace_length / 65536). | |
mstore(0x5c60, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, div(/*trace_length*/ mload(0x200), 65536)), PRIME)) | |
// Adjustment polynomial for constraints 'nonce_range_check/bit'. | |
// adjustments[23] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 32768, trace_length / 1024). | |
mstore(0x5c80, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 32768), div(/*trace_length*/ mload(0x200), 1024)), PRIME)) | |
// Adjustment polynomial for constraints 'sig_verify/doubling_key/slope', 'sig_verify/doubling_key/x', 'sig_verify/doubling_key/y', 'sig_verify/exponentiate_key/booleanity_test', 'sig_verify/exponentiate_key/add_points/slope', 'sig_verify/exponentiate_key/add_points/x', 'sig_verify/exponentiate_key/add_points/y', 'sig_verify/exponentiate_key/add_points/x_diff_inv', 'sig_verify/exponentiate_key/copy_point/x', 'sig_verify/exponentiate_key/copy_point/y'. | |
// adjustments[24] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 16384, trace_length / 64). | |
mstore(0x5ca0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 16384), div(/*trace_length*/ mload(0x200), 64)), PRIME)) | |
// Adjustment polynomial for constraints 'sig_verify/exponentiate_generator/booleanity_test', 'sig_verify/exponentiate_generator/add_points/slope', 'sig_verify/exponentiate_generator/add_points/x', 'sig_verify/exponentiate_generator/add_points/y', 'sig_verify/exponentiate_generator/add_points/x_diff_inv', 'sig_verify/exponentiate_generator/copy_point/x', 'sig_verify/exponentiate_generator/copy_point/y'. | |
// adjustments[25] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), trace_length / 32768, trace_length / 128). | |
mstore(0x5cc0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), div(/*trace_length*/ mload(0x200), 32768), div(/*trace_length*/ mload(0x200), 128)), PRIME)) | |
// Adjustment polynomial for constraints 'handle_empty_vault/vault_empty/empty_vault_booleanity', 'handle_empty_vault/vault_empty/amount_zero_when_empty', 'handle_empty_vault/vault_empty/amount_inv_zero_when_empty', 'handle_empty_vault/vault_empty/empty_when_amount_zero'. | |
// adjustments[26] = point^degreeAdjustment(composition_degree_bound, 2 * (trace_length - 1), 0, trace_length / 8192). | |
mstore(0x5ce0, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), mul(2, sub(/*trace_length*/ mload(0x200), 1)), 0, div(/*trace_length*/ mload(0x200), 8192)), PRIME)) | |
// Adjustment polynomial for constraints 'initial_vaults_root', 'initial_settlement_root', 'final_vaults_root', 'final_settlement_root'. | |
// adjustments[27] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 0, 1). | |
mstore(0x5d00, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 0, 1), PRIME)) | |
// Adjustment polynomial for constraints 'copy_merkle_roots'. | |
// adjustments[28] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 1, trace_length / 16384). | |
mstore(0x5d20, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 1, div(/*trace_length*/ mload(0x200), 16384)), PRIME)) | |
// Adjustment polynomial for constraints 'copy_settlement_merkle_roots'. | |
// adjustments[29] = point^degreeAdjustment(composition_degree_bound, trace_length - 1, 1, trace_length / 65536). | |
mstore(0x5d40, | |
expmod(point, degreeAdjustment(/*composition_degree_bound*/ mload(0x49a0), sub(/*trace_length*/ mload(0x200), 1), 1, div(/*trace_length*/ mload(0x200), 65536)), PRIME)) | |
} | |
{ | |
// Compute the result of the composition polynomial. | |
{ | |
// hash_pool/hash/ec_subset_sum/bit = column16_row3 - (column16_row7 + column16_row7). | |
let val := addmod( | |
/*column16_row3*/ mload(0x3dc0), | |
sub( | |
PRIME, | |
addmod(/*column16_row7*/ mload(0x3e20), /*column16_row7*/ mload(0x3e20), PRIME)), | |
PRIME) | |
mstore(0x49c0, val) | |
} | |
{ | |
// hash_pool/hash/ec_subset_sum/bit_neg = 1 - hash_pool__hash__ec_subset_sum__bit. | |
let val := addmod( | |
1, | |
sub(PRIME, /*intermediate_value/hash_pool/hash/ec_subset_sum/bit*/ mload(0x49c0)), | |
PRIME) | |
mstore(0x49e0, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/side_bit_extraction/bit_0 = column14_row255 - (column14_row767 + column14_row767). | |
let val := addmod( | |
/*column14_row255*/ mload(0x3b80), | |
sub( | |
PRIME, | |
addmod(/*column14_row767*/ mload(0x3bc0), /*column14_row767*/ mload(0x3bc0), PRIME)), | |
PRIME) | |
mstore(0x4a00, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit = column3_row0 - (column3_row1 + column3_row1). | |
let val := addmod( | |
/*column3_row0*/ mload(0x3300), | |
sub( | |
PRIME, | |
addmod(/*column3_row1*/ mload(0x3320), /*column3_row1*/ mload(0x3320), PRIME)), | |
PRIME) | |
mstore(0x4a20, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg = 1 - vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit. | |
let val := addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a20)), | |
PRIME) | |
mstore(0x4a40, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/side_bit_extraction/bit_1 = column14_row767 - (column14_row1279 + column14_row1279). | |
let val := addmod( | |
/*column14_row767*/ mload(0x3bc0), | |
sub( | |
PRIME, | |
addmod(/*column14_row1279*/ mload(0x3c00), /*column14_row1279*/ mload(0x3c00), PRIME)), | |
PRIME) | |
mstore(0x4a60, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit = column7_row0 - (column7_row1 + column7_row1). | |
let val := addmod( | |
/*column7_row0*/ mload(0x3520), | |
sub( | |
PRIME, | |
addmod(/*column7_row1*/ mload(0x3540), /*column7_row1*/ mload(0x3540), PRIME)), | |
PRIME) | |
mstore(0x4a80, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg = 1 - vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit. | |
let val := addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a80)), | |
PRIME) | |
mstore(0x4aa0, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/prev_authentication/sibling_0 = vaults_state_transition__merkle_update__side_bit_extraction__bit_0 * column3_row0 + (1 - vaults_state_transition__merkle_update__side_bit_extraction__bit_0) * column3_row256. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00), | |
/*column3_row0*/ mload(0x3300), | |
PRIME), | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00)), | |
PRIME), | |
/*column3_row256*/ mload(0x3340), | |
PRIME), | |
PRIME) | |
mstore(0x4ac0, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/new_authentication/sibling_0 = vaults_state_transition__merkle_update__side_bit_extraction__bit_0 * column7_row0 + (1 - vaults_state_transition__merkle_update__side_bit_extraction__bit_0) * column7_row256. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00), | |
/*column7_row0*/ mload(0x3520), | |
PRIME), | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00)), | |
PRIME), | |
/*column7_row256*/ mload(0x3560), | |
PRIME), | |
PRIME) | |
mstore(0x4ae0, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/prev_authentication/leaf_0 = (1 - vaults_state_transition__merkle_update__side_bit_extraction__bit_0) * column3_row0 + vaults_state_transition__merkle_update__side_bit_extraction__bit_0 * column3_row256. | |
let val := addmod( | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00)), | |
PRIME), | |
/*column3_row0*/ mload(0x3300), | |
PRIME), | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00), | |
/*column3_row256*/ mload(0x3340), | |
PRIME), | |
PRIME) | |
mstore(0x4b00, val) | |
} | |
{ | |
// vaults_state_transition/merkle_update/new_authentication/leaf_0 = (1 - vaults_state_transition__merkle_update__side_bit_extraction__bit_0) * column7_row0 + vaults_state_transition__merkle_update__side_bit_extraction__bit_0 * column7_row256. | |
let val := addmod( | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00)), | |
PRIME), | |
/*column7_row0*/ mload(0x3520), | |
PRIME), | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00), | |
/*column7_row256*/ mload(0x3560), | |
PRIME), | |
PRIME) | |
mstore(0x4b20, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/side_bit_extraction/bit_0 = column14_row511 - (column14_row1023 + column14_row1023). | |
let val := addmod( | |
/*column14_row511*/ mload(0x3ba0), | |
sub( | |
PRIME, | |
addmod(/*column14_row1023*/ mload(0x3be0), /*column14_row1023*/ mload(0x3be0), PRIME)), | |
PRIME) | |
mstore(0x4b40, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit = column11_row0 - (column11_row1 + column11_row1). | |
let val := addmod( | |
/*column11_row0*/ mload(0x3960), | |
sub( | |
PRIME, | |
addmod(/*column11_row1*/ mload(0x3980), /*column11_row1*/ mload(0x3980), PRIME)), | |
PRIME) | |
mstore(0x4b60, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg = 1 - settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit. | |
let val := addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4b60)), | |
PRIME) | |
mstore(0x4b80, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/side_bit_extraction/bit_1 = column14_row1023 - (column14_row1535 + column14_row1535). | |
let val := addmod( | |
/*column14_row1023*/ mload(0x3be0), | |
sub( | |
PRIME, | |
addmod(/*column14_row1535*/ mload(0x3c20), /*column14_row1535*/ mload(0x3c20), PRIME)), | |
PRIME) | |
mstore(0x4ba0, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit = column15_row0 - (column15_row1 + column15_row1). | |
let val := addmod( | |
/*column15_row0*/ mload(0x3cc0), | |
sub( | |
PRIME, | |
addmod(/*column15_row1*/ mload(0x3ce0), /*column15_row1*/ mload(0x3ce0), PRIME)), | |
PRIME) | |
mstore(0x4bc0, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg = 1 - settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit. | |
let val := addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4bc0)), | |
PRIME) | |
mstore(0x4be0, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/prev_authentication/sibling_0 = settlement_state_transition__merkle_update__side_bit_extraction__bit_0 * column11_row0 + (1 - settlement_state_transition__merkle_update__side_bit_extraction__bit_0) * column11_row256. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40), | |
/*column11_row0*/ mload(0x3960), | |
PRIME), | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40)), | |
PRIME), | |
/*column11_row256*/ mload(0x39a0), | |
PRIME), | |
PRIME) | |
mstore(0x4c00, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/new_authentication/sibling_0 = settlement_state_transition__merkle_update__side_bit_extraction__bit_0 * column15_row0 + (1 - settlement_state_transition__merkle_update__side_bit_extraction__bit_0) * column15_row256. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40), | |
/*column15_row0*/ mload(0x3cc0), | |
PRIME), | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40)), | |
PRIME), | |
/*column15_row256*/ mload(0x3d00), | |
PRIME), | |
PRIME) | |
mstore(0x4c20, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/prev_authentication/leaf_0 = (1 - settlement_state_transition__merkle_update__side_bit_extraction__bit_0) * column11_row0 + settlement_state_transition__merkle_update__side_bit_extraction__bit_0 * column11_row256. | |
let val := addmod( | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40)), | |
PRIME), | |
/*column11_row0*/ mload(0x3960), | |
PRIME), | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40), | |
/*column11_row256*/ mload(0x39a0), | |
PRIME), | |
PRIME) | |
mstore(0x4c40, val) | |
} | |
{ | |
// settlement_state_transition/merkle_update/new_authentication/leaf_0 = (1 - settlement_state_transition__merkle_update__side_bit_extraction__bit_0) * column15_row0 + settlement_state_transition__merkle_update__side_bit_extraction__bit_0 * column15_row256. | |
let val := addmod( | |
mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40)), | |
PRIME), | |
/*column15_row0*/ mload(0x3cc0), | |
PRIME), | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40), | |
/*column15_row256*/ mload(0x3d00), | |
PRIME), | |
PRIME) | |
mstore(0x4c60, val) | |
} | |
{ | |
// amounts_range_check/bit_0 = column17_row0 - (column17_row64 + column17_row64). | |
let val := addmod( | |
/*column17_row0*/ mload(0x4200), | |
sub( | |
PRIME, | |
addmod(/*column17_row64*/ mload(0x4380), /*column17_row64*/ mload(0x4380), PRIME)), | |
PRIME) | |
mstore(0x4c80, val) | |
} | |
{ | |
// expiration_timestamp_range_check/bit_0 = column10_row255 - (column10_row767 + column10_row767). | |
let val := addmod( | |
/*column10_row255*/ mload(0x3740), | |
sub( | |
PRIME, | |
addmod(/*column10_row767*/ mload(0x3780), /*column10_row767*/ mload(0x3780), PRIME)), | |
PRIME) | |
mstore(0x4ca0, val) | |
} | |
{ | |
// nonce_range_check/bit_0 = column16_row1021 - (column16_row2045 + column16_row2045). | |
let val := addmod( | |
/*column16_row1021*/ mload(0x3e60), | |
sub( | |
PRIME, | |
addmod(/*column16_row2045*/ mload(0x3f20), /*column16_row2045*/ mload(0x3f20), PRIME)), | |
PRIME) | |
mstore(0x4cc0, val) | |
} | |
{ | |
// sig_verify/doubling_key/x_squared = column17_row32 * column17_row32. | |
let val := mulmod(/*column17_row32*/ mload(0x42c0), /*column17_row32*/ mload(0x42c0), PRIME) | |
mstore(0x4ce0, val) | |
} | |
{ | |
// sig_verify/exponentiate_generator/bit = column17_row84 - (column17_row212 + column17_row212). | |
let val := addmod( | |
/*column17_row84*/ mload(0x43e0), | |
sub( | |
PRIME, | |
addmod(/*column17_row212*/ mload(0x44a0), /*column17_row212*/ mload(0x44a0), PRIME)), | |
PRIME) | |
mstore(0x4d00, val) | |
} | |
{ | |
// sig_verify/exponentiate_generator/bit_neg = 1 - sig_verify__exponentiate_generator__bit. | |
let val := addmod( | |
1, | |
sub(PRIME, /*intermediate_value/sig_verify/exponentiate_generator/bit*/ mload(0x4d00)), | |
PRIME) | |
mstore(0x4d20, val) | |
} | |
{ | |
// sig_verify/exponentiate_key/bit = column17_row56 - (column17_row120 + column17_row120). | |
let val := addmod( | |
/*column17_row56*/ mload(0x4360), | |
sub( | |
PRIME, | |
addmod(/*column17_row120*/ mload(0x4460), /*column17_row120*/ mload(0x4460), PRIME)), | |
PRIME) | |
mstore(0x4d40, val) | |
} | |
{ | |
// sig_verify/exponentiate_key/bit_neg = 1 - sig_verify__exponentiate_key__bit. | |
let val := addmod( | |
1, | |
sub(PRIME, /*intermediate_value/sig_verify/exponentiate_key/bit*/ mload(0x4d40)), | |
PRIME) | |
mstore(0x4d60, val) | |
} | |
{ | |
// party_a_packed_msg/partial = ((column14_row255 * vault_shift + column14_row49407) * amount_shift + column17_row4096) * amount_shift + column17_row36864. | |
let val := addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
addmod( | |
mulmod(/*column14_row255*/ mload(0x3b80), /*vault_shift*/ mload(0x340), PRIME), | |
/*column14_row49407*/ mload(0x3ca0), | |
PRIME), | |
/*amount_shift*/ mload(0x2c0), | |
PRIME), | |
/*column17_row4096*/ mload(0x44e0), | |
PRIME), | |
/*amount_shift*/ mload(0x2c0), | |
PRIME), | |
/*column17_row36864*/ mload(0x4800), | |
PRIME) | |
mstore(0x4d80, val) | |
} | |
{ | |
// party_b_packed_msg/partial = ((column14_row33023 * vault_shift + column14_row16639) * amount_shift + column17_row53248) * amount_shift + column17_row20480. | |
let val := addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
addmod( | |
mulmod(/*column14_row33023*/ mload(0x3c60), /*vault_shift*/ mload(0x340), PRIME), | |
/*column14_row16639*/ mload(0x3c40), | |
PRIME), | |
/*amount_shift*/ mload(0x2c0), | |
PRIME), | |
/*column17_row53248*/ mload(0x48c0), | |
PRIME), | |
/*amount_shift*/ mload(0x2c0), | |
PRIME), | |
/*column17_row20480*/ mload(0x4620), | |
PRIME) | |
mstore(0x4da0, val) | |
} | |
{ | |
// party_b_packed_msg_transfer/partial = (((vault_shift + column14_row33023) * vault_shift + column14_row49407) * amount_shift + column17_row53248) * amount_shift + column17_row20480. | |
let val := addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
addmod(/*vault_shift*/ mload(0x340), /*column14_row33023*/ mload(0x3c60), PRIME), | |
/*vault_shift*/ mload(0x340), | |
PRIME), | |
/*column14_row49407*/ mload(0x3ca0), | |
PRIME), | |
/*amount_shift*/ mload(0x2c0), | |
PRIME), | |
/*column17_row53248*/ mload(0x48c0), | |
PRIME), | |
/*amount_shift*/ mload(0x2c0), | |
PRIME), | |
/*column17_row20480*/ mload(0x4620), | |
PRIME) | |
mstore(0x4dc0, val) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/booleanity_test: hash_pool__hash__ec_subset_sum__bit * (hash_pool__hash__ec_subset_sum__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit*/ mload(0x49c0), | |
addmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit*/ mload(0x49c0), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[0]. | |
val := mulmod(val, mload(0x57e0), PRIME) | |
// Denominator: point^(trace_length / 4) - 1. | |
// val *= denominator_invs[0]. | |
val := mulmod(val, mload(0x50e0), PRIME) | |
// res += val * (coefficients[0] + coefficients[1] * adjustments[0]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[0]*/ mload(0x480), | |
mulmod(/*coefficients[1]*/ mload(0x4a0), | |
/*adjustments[0]*/mload(0x59a0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/bit_extraction_end: column16_row3. | |
let val := /*column16_row3*/ mload(0x3dc0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 1024) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[1]. | |
val := mulmod(val, mload(0x5100), PRIME) | |
// res += val * (coefficients[2] + coefficients[3] * adjustments[1]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[2]*/ mload(0x4c0), | |
mulmod(/*coefficients[3]*/ mload(0x4e0), | |
/*adjustments[1]*/mload(0x59c0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/zeros_tail: column16_row3. | |
let val := /*column16_row3*/ mload(0x3dc0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[2]. | |
val := mulmod(val, mload(0x5120), PRIME) | |
// res += val * (coefficients[4] + coefficients[5] * adjustments[1]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[4]*/ mload(0x500), | |
mulmod(/*coefficients[5]*/ mload(0x520), | |
/*adjustments[1]*/mload(0x59c0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/add_points/slope: hash_pool__hash__ec_subset_sum__bit * (column16_row2 - hash_pool_points__y) - column16_row1 * (column16_row0 - hash_pool_points__x). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit*/ mload(0x49c0), | |
addmod( | |
/*column16_row2*/ mload(0x3da0), | |
sub(PRIME, /*periodic_column/hash_pool_points/y*/ mload(0x20)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column16_row1*/ mload(0x3d80), | |
addmod( | |
/*column16_row0*/ mload(0x3d60), | |
sub(PRIME, /*periodic_column/hash_pool_points/x*/ mload(0x0)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[0]. | |
val := mulmod(val, mload(0x57e0), PRIME) | |
// Denominator: point^(trace_length / 4) - 1. | |
// val *= denominator_invs[0]. | |
val := mulmod(val, mload(0x50e0), PRIME) | |
// res += val * (coefficients[6] + coefficients[7] * adjustments[0]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[6]*/ mload(0x540), | |
mulmod(/*coefficients[7]*/ mload(0x560), | |
/*adjustments[0]*/mload(0x59a0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/add_points/x: column16_row1 * column16_row1 - hash_pool__hash__ec_subset_sum__bit * (column16_row0 + hash_pool_points__x + column16_row4). | |
let val := addmod( | |
mulmod(/*column16_row1*/ mload(0x3d80), /*column16_row1*/ mload(0x3d80), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit*/ mload(0x49c0), | |
addmod( | |
addmod( | |
/*column16_row0*/ mload(0x3d60), | |
/*periodic_column/hash_pool_points/x*/ mload(0x0), | |
PRIME), | |
/*column16_row4*/ mload(0x3de0), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[0]. | |
val := mulmod(val, mload(0x57e0), PRIME) | |
// Denominator: point^(trace_length / 4) - 1. | |
// val *= denominator_invs[0]. | |
val := mulmod(val, mload(0x50e0), PRIME) | |
// res += val * (coefficients[8] + coefficients[9] * adjustments[0]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[8]*/ mload(0x580), | |
mulmod(/*coefficients[9]*/ mload(0x5a0), | |
/*adjustments[0]*/mload(0x59a0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/add_points/y: hash_pool__hash__ec_subset_sum__bit * (column16_row2 + column16_row6) - column16_row1 * (column16_row0 - column16_row4). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit*/ mload(0x49c0), | |
addmod(/*column16_row2*/ mload(0x3da0), /*column16_row6*/ mload(0x3e00), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column16_row1*/ mload(0x3d80), | |
addmod(/*column16_row0*/ mload(0x3d60), sub(PRIME, /*column16_row4*/ mload(0x3de0)), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[0]. | |
val := mulmod(val, mload(0x57e0), PRIME) | |
// Denominator: point^(trace_length / 4) - 1. | |
// val *= denominator_invs[0]. | |
val := mulmod(val, mload(0x50e0), PRIME) | |
// res += val * (coefficients[10] + coefficients[11] * adjustments[0]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[10]*/ mload(0x5c0), | |
mulmod(/*coefficients[11]*/ mload(0x5e0), | |
/*adjustments[0]*/mload(0x59a0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/copy_point/x: hash_pool__hash__ec_subset_sum__bit_neg * (column16_row4 - column16_row0). | |
let val := mulmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit_neg*/ mload(0x49e0), | |
addmod(/*column16_row4*/ mload(0x3de0), sub(PRIME, /*column16_row0*/ mload(0x3d60)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[0]. | |
val := mulmod(val, mload(0x57e0), PRIME) | |
// Denominator: point^(trace_length / 4) - 1. | |
// val *= denominator_invs[0]. | |
val := mulmod(val, mload(0x50e0), PRIME) | |
// res += val * (coefficients[12] + coefficients[13] * adjustments[0]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[12]*/ mload(0x600), | |
mulmod(/*coefficients[13]*/ mload(0x620), | |
/*adjustments[0]*/mload(0x59a0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/ec_subset_sum/copy_point/y: hash_pool__hash__ec_subset_sum__bit_neg * (column16_row6 - column16_row2). | |
let val := mulmod( | |
/*intermediate_value/hash_pool/hash/ec_subset_sum/bit_neg*/ mload(0x49e0), | |
addmod(/*column16_row6*/ mload(0x3e00), sub(PRIME, /*column16_row2*/ mload(0x3da0)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 1024) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[0]. | |
val := mulmod(val, mload(0x57e0), PRIME) | |
// Denominator: point^(trace_length / 4) - 1. | |
// val *= denominator_invs[0]. | |
val := mulmod(val, mload(0x50e0), PRIME) | |
// res += val * (coefficients[14] + coefficients[15] * adjustments[0]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[14]*/ mload(0x640), | |
mulmod(/*coefficients[15]*/ mload(0x660), | |
/*adjustments[0]*/mload(0x59a0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/copy_point/x: column16_row1024 - column16_row1020. | |
let val := addmod( | |
/*column16_row1024*/ mload(0x3ea0), | |
sub(PRIME, /*column16_row1020*/ mload(0x3e40)), | |
PRIME) | |
// Numerator: point^(trace_length / 2048) - trace_generator^(trace_length / 2). | |
// val *= numerators[1]. | |
val := mulmod(val, mload(0x5800), PRIME) | |
// Denominator: point^(trace_length / 1024) - 1. | |
// val *= denominator_invs[3]. | |
val := mulmod(val, mload(0x5140), PRIME) | |
// res += val * (coefficients[16] + coefficients[17] * adjustments[2]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[16]*/ mload(0x680), | |
mulmod(/*coefficients[17]*/ mload(0x6a0), | |
/*adjustments[2]*/mload(0x59e0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/copy_point/y: column16_row1026 - column16_row1022. | |
let val := addmod( | |
/*column16_row1026*/ mload(0x3ec0), | |
sub(PRIME, /*column16_row1022*/ mload(0x3e80)), | |
PRIME) | |
// Numerator: point^(trace_length / 2048) - trace_generator^(trace_length / 2). | |
// val *= numerators[1]. | |
val := mulmod(val, mload(0x5800), PRIME) | |
// Denominator: point^(trace_length / 1024) - 1. | |
// val *= denominator_invs[3]. | |
val := mulmod(val, mload(0x5140), PRIME) | |
// res += val * (coefficients[18] + coefficients[19] * adjustments[2]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[18]*/ mload(0x6c0), | |
mulmod(/*coefficients[19]*/ mload(0x6e0), | |
/*adjustments[2]*/mload(0x59e0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/init/x: column16_row0 - shift_point.x. | |
let val := addmod(/*column16_row0*/ mload(0x3d60), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 2048) - 1. | |
// val *= denominator_invs[4]. | |
val := mulmod(val, mload(0x5160), PRIME) | |
// res += val * (coefficients[20] + coefficients[21] * adjustments[3]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[20]*/ mload(0x700), | |
mulmod(/*coefficients[21]*/ mload(0x720), | |
/*adjustments[3]*/mload(0x5a00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/hash/init/y: column16_row2 - shift_point.y. | |
let val := addmod(/*column16_row2*/ mload(0x3da0), sub(PRIME, /*shift_point.y*/ mload(0x240)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 2048) - 1. | |
// val *= denominator_invs[4]. | |
val := mulmod(val, mload(0x5160), PRIME) | |
// res += val * (coefficients[22] + coefficients[23] * adjustments[3]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[22]*/ mload(0x740), | |
mulmod(/*coefficients[23]*/ mload(0x760), | |
/*adjustments[3]*/mload(0x5a00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for hash_pool/output_to_input: column16_row2044 - column16_row2051. | |
let val := addmod( | |
/*column16_row2044*/ mload(0x3f00), | |
sub(PRIME, /*column16_row2051*/ mload(0x3f40)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 4096) - 1. | |
// val *= denominator_invs[5]. | |
val := mulmod(val, mload(0x5180), PRIME) | |
// res += val * (coefficients[24] + coefficients[25] * adjustments[4]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[24]*/ mload(0x780), | |
mulmod(/*coefficients[25]*/ mload(0x7a0), | |
/*adjustments[4]*/mload(0x5a20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/side_bit_extraction/bit: vaults_state_transition__merkle_update__side_bit_extraction__bit_0 * vaults_state_transition__merkle_update__side_bit_extraction__bit_0 - vaults_state_transition__merkle_update__side_bit_extraction__bit_0. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00), | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00), | |
PRIME), | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4a00)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32). | |
// val *= numerators[2]. | |
val := mulmod(val, mload(0x5820), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[26] + coefficients[27] * adjustments[5]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[26]*/ mload(0x7c0), | |
mulmod(/*coefficients[27]*/ mload(0x7e0), | |
/*adjustments[5]*/mload(0x5a40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/side_bit_extraction/zero: column14_row255. | |
let val := /*column14_row255*/ mload(0x3b80) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - trace_generator^(vaults_path_length * trace_length / 32). | |
// val *= denominator_invs[7]. | |
val := mulmod(val, mload(0x51c0), PRIME) | |
// res += val * (coefficients[28] + coefficients[29] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[28]*/ mload(0x800), | |
mulmod(/*coefficients[29]*/ mload(0x820), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test: vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a20), | |
addmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a20), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[30] + coefficients[31] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[30]*/ mload(0x840), | |
mulmod(/*coefficients[31]*/ mload(0x860), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_extraction_end: column3_row0. | |
let val := /*column3_row0*/ mload(0x3300) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[9]. | |
val := mulmod(val, mload(0x5200), PRIME) | |
// res += val * (coefficients[32] + coefficients[33] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[32]*/ mload(0x880), | |
mulmod(/*coefficients[33]*/ mload(0x8a0), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/zeros_tail: column3_row0. | |
let val := /*column3_row0*/ mload(0x3300) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[10]. | |
val := mulmod(val, mload(0x5220), PRIME) | |
// res += val * (coefficients[34] + coefficients[35] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[34]*/ mload(0x8c0), | |
mulmod(/*coefficients[35]*/ mload(0x8e0), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope: vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (column1_row0 - vaults_merkle_hash_points__y) - column2_row0 * (column0_row0 - vaults_merkle_hash_points__x). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a20), | |
addmod( | |
/*column1_row0*/ mload(0x3260), | |
sub(PRIME, /*periodic_column/vaults_merkle_hash_points/y*/ mload(0x60)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column2_row0*/ mload(0x32e0), | |
addmod( | |
/*column0_row0*/ mload(0x3180), | |
sub(PRIME, /*periodic_column/vaults_merkle_hash_points/x*/ mload(0x40)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[36] + coefficients[37] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[36]*/ mload(0x900), | |
mulmod(/*coefficients[37]*/ mload(0x920), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x: column2_row0 * column2_row0 - vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (column0_row0 + vaults_merkle_hash_points__x + column0_row1). | |
let val := addmod( | |
mulmod(/*column2_row0*/ mload(0x32e0), /*column2_row0*/ mload(0x32e0), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a20), | |
addmod( | |
addmod( | |
/*column0_row0*/ mload(0x3180), | |
/*periodic_column/vaults_merkle_hash_points/x*/ mload(0x40), | |
PRIME), | |
/*column0_row1*/ mload(0x31a0), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[38] + coefficients[39] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[38]*/ mload(0x940), | |
mulmod(/*coefficients[39]*/ mload(0x960), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y: vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (column1_row0 + column1_row1) - column2_row0 * (column0_row0 - column0_row1). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a20), | |
addmod(/*column1_row0*/ mload(0x3260), /*column1_row1*/ mload(0x3280), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column2_row0*/ mload(0x32e0), | |
addmod(/*column0_row0*/ mload(0x3180), sub(PRIME, /*column0_row1*/ mload(0x31a0)), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[40] + coefficients[41] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[40]*/ mload(0x980), | |
mulmod(/*coefficients[41]*/ mload(0x9a0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x: vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit_neg * (column0_row1 - column0_row0). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4a40), | |
addmod(/*column0_row1*/ mload(0x31a0), sub(PRIME, /*column0_row0*/ mload(0x3180)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[42] + coefficients[43] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[42]*/ mload(0x9c0), | |
mulmod(/*coefficients[43]*/ mload(0x9e0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y: vaults_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit_neg * (column1_row1 - column1_row0). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4a40), | |
addmod(/*column1_row1*/ mload(0x3280), sub(PRIME, /*column1_row0*/ mload(0x3260)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[44] + coefficients[45] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[44]*/ mload(0xa00), | |
mulmod(/*coefficients[45]*/ mload(0xa20), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/x: column0_row256 - column0_row255. | |
let val := addmod( | |
/*column0_row256*/ mload(0x31e0), | |
sub(PRIME, /*column0_row255*/ mload(0x31c0)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[46] + coefficients[47] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[46]*/ mload(0xa40), | |
mulmod(/*coefficients[47]*/ mload(0xa60), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/copy_point/y: column1_row256 - column1_row255. | |
let val := addmod( | |
/*column1_row256*/ mload(0x32c0), | |
sub(PRIME, /*column1_row255*/ mload(0x32a0)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[48] + coefficients[49] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[48]*/ mload(0xa80), | |
mulmod(/*coefficients[49]*/ mload(0xaa0), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/init/x: column0_row0 - shift_point.x. | |
let val := addmod(/*column0_row0*/ mload(0x3180), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[50] + coefficients[51] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[50]*/ mload(0xac0), | |
mulmod(/*coefficients[51]*/ mload(0xae0), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/hashes/init/y: column1_row0 - shift_point.y. | |
let val := addmod(/*column1_row0*/ mload(0x3260), sub(PRIME, /*shift_point.y*/ mload(0x240)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[52] + coefficients[53] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[52]*/ mload(0xb00), | |
mulmod(/*coefficients[53]*/ mload(0xb20), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_left: (1 - vaults_state_transition__merkle_update__side_bit_extraction__bit_1) * (column0_row511 - column3_row512). | |
let val := mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4a60)), | |
PRIME), | |
addmod( | |
/*column0_row511*/ mload(0x3200), | |
sub(PRIME, /*column3_row512*/ mload(0x3360)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32)) * (point^(trace_length / 16384) - trace_generator^(15 * trace_length / 16)). | |
// val *= numerators[5]. | |
val := mulmod(val, mload(0x5880), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[54] + coefficients[55] * adjustments[11]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[54]*/ mload(0xb40), | |
mulmod(/*coefficients[55]*/ mload(0xb60), | |
/*adjustments[11]*/mload(0x5b00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/prev_authentication/copy_prev_to_right: vaults_state_transition__merkle_update__side_bit_extraction__bit_1 * (column0_row511 - column3_row768). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4a60), | |
addmod( | |
/*column0_row511*/ mload(0x3200), | |
sub(PRIME, /*column3_row768*/ mload(0x3380)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32)) * (point^(trace_length / 16384) - trace_generator^(15 * trace_length / 16)). | |
// val *= numerators[5]. | |
val := mulmod(val, mload(0x5880), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[56] + coefficients[57] * adjustments[11]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[56]*/ mload(0xb80), | |
mulmod(/*coefficients[57]*/ mload(0xba0), | |
/*adjustments[11]*/mload(0x5b00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test: vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a80), | |
addmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a80), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[58] + coefficients[59] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[58]*/ mload(0xbc0), | |
mulmod(/*coefficients[59]*/ mload(0xbe0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_extraction_end: column7_row0. | |
let val := /*column7_row0*/ mload(0x3520) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[9]. | |
val := mulmod(val, mload(0x5200), PRIME) | |
// res += val * (coefficients[60] + coefficients[61] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[60]*/ mload(0xc00), | |
mulmod(/*coefficients[61]*/ mload(0xc20), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/zeros_tail: column7_row0. | |
let val := /*column7_row0*/ mload(0x3520) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[10]. | |
val := mulmod(val, mload(0x5220), PRIME) | |
// res += val * (coefficients[62] + coefficients[63] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[62]*/ mload(0xc40), | |
mulmod(/*coefficients[63]*/ mload(0xc60), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope: vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (column5_row0 - vaults_merkle_hash_points__y) - column6_row0 * (column4_row0 - vaults_merkle_hash_points__x). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a80), | |
addmod( | |
/*column5_row0*/ mload(0x3480), | |
sub(PRIME, /*periodic_column/vaults_merkle_hash_points/y*/ mload(0x60)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column6_row0*/ mload(0x3500), | |
addmod( | |
/*column4_row0*/ mload(0x33a0), | |
sub(PRIME, /*periodic_column/vaults_merkle_hash_points/x*/ mload(0x40)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[64] + coefficients[65] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[64]*/ mload(0xc80), | |
mulmod(/*coefficients[65]*/ mload(0xca0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x: column6_row0 * column6_row0 - vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (column4_row0 + vaults_merkle_hash_points__x + column4_row1). | |
let val := addmod( | |
mulmod(/*column6_row0*/ mload(0x3500), /*column6_row0*/ mload(0x3500), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a80), | |
addmod( | |
addmod( | |
/*column4_row0*/ mload(0x33a0), | |
/*periodic_column/vaults_merkle_hash_points/x*/ mload(0x40), | |
PRIME), | |
/*column4_row1*/ mload(0x33c0), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[66] + coefficients[67] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[66]*/ mload(0xcc0), | |
mulmod(/*coefficients[67]*/ mload(0xce0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y: vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (column5_row0 + column5_row1) - column6_row0 * (column4_row0 - column4_row1). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4a80), | |
addmod(/*column5_row0*/ mload(0x3480), /*column5_row1*/ mload(0x34a0), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column6_row0*/ mload(0x3500), | |
addmod(/*column4_row0*/ mload(0x33a0), sub(PRIME, /*column4_row1*/ mload(0x33c0)), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[68] + coefficients[69] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[68]*/ mload(0xd00), | |
mulmod(/*coefficients[69]*/ mload(0xd20), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x: vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit_neg * (column4_row1 - column4_row0). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4aa0), | |
addmod(/*column4_row1*/ mload(0x33c0), sub(PRIME, /*column4_row0*/ mload(0x33a0)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[70] + coefficients[71] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[70]*/ mload(0xd40), | |
mulmod(/*coefficients[71]*/ mload(0xd60), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y: vaults_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit_neg * (column5_row1 - column5_row0). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4aa0), | |
addmod(/*column5_row1*/ mload(0x34a0), sub(PRIME, /*column5_row0*/ mload(0x3480)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[72] + coefficients[73] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[72]*/ mload(0xd80), | |
mulmod(/*coefficients[73]*/ mload(0xda0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/x: column4_row256 - column4_row255. | |
let val := addmod( | |
/*column4_row256*/ mload(0x3400), | |
sub(PRIME, /*column4_row255*/ mload(0x33e0)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[74] + coefficients[75] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[74]*/ mload(0xdc0), | |
mulmod(/*coefficients[75]*/ mload(0xde0), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/copy_point/y: column5_row256 - column5_row255. | |
let val := addmod( | |
/*column5_row256*/ mload(0x34e0), | |
sub(PRIME, /*column5_row255*/ mload(0x34c0)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[76] + coefficients[77] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[76]*/ mload(0xe00), | |
mulmod(/*coefficients[77]*/ mload(0xe20), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/init/x: column4_row0 - shift_point.x. | |
let val := addmod(/*column4_row0*/ mload(0x33a0), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[78] + coefficients[79] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[78]*/ mload(0xe40), | |
mulmod(/*coefficients[79]*/ mload(0xe60), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/hashes/init/y: column5_row0 - shift_point.y. | |
let val := addmod(/*column5_row0*/ mload(0x3480), sub(PRIME, /*shift_point.y*/ mload(0x240)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[80] + coefficients[81] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[80]*/ mload(0xe80), | |
mulmod(/*coefficients[81]*/ mload(0xea0), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/copy_prev_to_left: (1 - vaults_state_transition__merkle_update__side_bit_extraction__bit_1) * (column4_row511 - column7_row512). | |
let val := mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4a60)), | |
PRIME), | |
addmod( | |
/*column4_row511*/ mload(0x3420), | |
sub(PRIME, /*column7_row512*/ mload(0x3580)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32)) * (point^(trace_length / 16384) - trace_generator^(15 * trace_length / 16)). | |
// val *= numerators[5]. | |
val := mulmod(val, mload(0x5880), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[82] + coefficients[83] * adjustments[11]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[82]*/ mload(0xec0), | |
mulmod(/*coefficients[83]*/ mload(0xee0), | |
/*adjustments[11]*/mload(0x5b00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/new_authentication/copy_prev_to_right: vaults_state_transition__merkle_update__side_bit_extraction__bit_1 * (column4_row511 - column7_row768). | |
let val := mulmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4a60), | |
addmod( | |
/*column4_row511*/ mload(0x3420), | |
sub(PRIME, /*column7_row768*/ mload(0x35a0)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32)) * (point^(trace_length / 16384) - trace_generator^(15 * trace_length / 16)). | |
// val *= numerators[5]. | |
val := mulmod(val, mload(0x5880), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[84] + coefficients[85] * adjustments[11]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[84]*/ mload(0xf00), | |
mulmod(/*coefficients[85]*/ mload(0xf20), | |
/*adjustments[11]*/mload(0x5b00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_update/same_siblings: vaults_state_transition__merkle_update__prev_authentication__sibling_0 - vaults_state_transition__merkle_update__new_authentication__sibling_0. | |
let val := addmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/sibling_0*/ mload(0x4ac0), | |
sub( | |
PRIME, | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/sibling_0*/ mload(0x4ae0)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32). | |
// val *= numerators[2]. | |
val := mulmod(val, mload(0x5820), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[86] + coefficients[87] * adjustments[5]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[86]*/ mload(0xf40), | |
mulmod(/*coefficients[87]*/ mload(0xf60), | |
/*adjustments[5]*/mload(0x5a40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_set_prev_leaf: vaults_state_transition__merkle_update__prev_authentication__leaf_0 - column16_row4092. | |
let val := addmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/prev_authentication/leaf_0*/ mload(0x4b00), | |
sub(PRIME, /*column16_row4092*/ mload(0x3f80)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[88] + coefficients[89] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[88]*/ mload(0xf80), | |
mulmod(/*coefficients[89]*/ mload(0xfa0), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for vaults_state_transition/merkle_set_new_leaf: vaults_state_transition__merkle_update__new_authentication__leaf_0 - column16_row12284. | |
let val := addmod( | |
/*intermediate_value/vaults_state_transition/merkle_update/new_authentication/leaf_0*/ mload(0x4b20), | |
sub(PRIME, /*column16_row12284*/ mload(0x4080)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[90] + coefficients[91] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[90]*/ mload(0xfc0), | |
mulmod(/*coefficients[91]*/ mload(0xfe0), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for modification_boundary_key: is_modification * (column17_row16324 * boundary_base - boundary_key). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
mulmod( | |
/*column17_row16324*/ mload(0x4540), | |
/*periodic_column/boundary_base*/ mload(0x80), | |
PRIME), | |
sub(PRIME, /*periodic_column/boundary_key*/ mload(0xe0)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[92] + coefficients[93] * adjustments[13]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[92]*/ mload(0x1000), | |
mulmod(/*coefficients[93]*/ mload(0x1020), | |
/*adjustments[13]*/mload(0x5b40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for modification_boundary_token: is_modification * (column17_row16344 * boundary_base - boundary_token). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
mulmod( | |
/*column17_row16344*/ mload(0x4580), | |
/*periodic_column/boundary_base*/ mload(0x80), | |
PRIME), | |
sub(PRIME, /*periodic_column/boundary_token*/ mload(0x100)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[94] + coefficients[95] * adjustments[13]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[94]*/ mload(0x1040), | |
mulmod(/*coefficients[95]*/ mload(0x1060), | |
/*adjustments[13]*/mload(0x5b40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for modification_boundary_amount0: is_modification * (column16_row3075 * boundary_base - boundary_amount0). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
mulmod( | |
/*column16_row3075*/ mload(0x3f60), | |
/*periodic_column/boundary_base*/ mload(0x80), | |
PRIME), | |
sub(PRIME, /*periodic_column/boundary_amount0*/ mload(0x120)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[96] + coefficients[97] * adjustments[13]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[96]*/ mload(0x1080), | |
mulmod(/*coefficients[97]*/ mload(0x10a0), | |
/*adjustments[13]*/mload(0x5b40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for modification_boundary_amount1: is_modification * (column16_row11267 * boundary_base - boundary_amount1). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
mulmod( | |
/*column16_row11267*/ mload(0x4060), | |
/*periodic_column/boundary_base*/ mload(0x80), | |
PRIME), | |
sub(PRIME, /*periodic_column/boundary_amount1*/ mload(0x140)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[98] + coefficients[99] * adjustments[13]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[98]*/ mload(0x10c0), | |
mulmod(/*coefficients[99]*/ mload(0x10e0), | |
/*adjustments[13]*/mload(0x5b40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for modification_boundary_vault_id: is_modification * (column14_row255 * boundary_base - boundary_vault_id). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
mulmod( | |
/*column14_row255*/ mload(0x3b80), | |
/*periodic_column/boundary_base*/ mload(0x80), | |
PRIME), | |
sub(PRIME, /*periodic_column/boundary_vault_id*/ mload(0x160)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[100] + coefficients[101] * adjustments[13]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[100]*/ mload(0x1100), | |
mulmod(/*coefficients[101]*/ mload(0x1120), | |
/*adjustments[13]*/mload(0x5b40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/side_bit_extraction/bit: settlement_state_transition__merkle_update__side_bit_extraction__bit_0 * settlement_state_transition__merkle_update__side_bit_extraction__bit_0 - settlement_state_transition__merkle_update__side_bit_extraction__bit_0. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40), | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40), | |
PRIME), | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_0*/ mload(0x4b40)), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64). | |
// val *= numerators[6]. | |
val := mulmod(val, mload(0x58a0), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[102] + coefficients[103] * adjustments[14]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[102]*/ mload(0x1140), | |
mulmod(/*coefficients[103]*/ mload(0x1160), | |
/*adjustments[14]*/mload(0x5b60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/side_bit_extraction/zero: column14_row511. | |
let val := /*column14_row511*/ mload(0x3ba0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[14]. | |
val := mulmod(val, mload(0x52a0), PRIME) | |
// res += val * (coefficients[104] + coefficients[105] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[104]*/ mload(0x1180), | |
mulmod(/*coefficients[105]*/ mload(0x11a0), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/booleanity_test: settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4b60), | |
addmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4b60), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[106] + coefficients[107] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[106]*/ mload(0x11c0), | |
mulmod(/*coefficients[107]*/ mload(0x11e0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_extraction_end: column11_row0. | |
let val := /*column11_row0*/ mload(0x3960) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[9]. | |
val := mulmod(val, mload(0x5200), PRIME) | |
// res += val * (coefficients[108] + coefficients[109] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[108]*/ mload(0x1200), | |
mulmod(/*coefficients[109]*/ mload(0x1220), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/zeros_tail: column11_row0. | |
let val := /*column11_row0*/ mload(0x3960) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[10]. | |
val := mulmod(val, mload(0x5220), PRIME) | |
// res += val * (coefficients[110] + coefficients[111] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[110]*/ mload(0x1240), | |
mulmod(/*coefficients[111]*/ mload(0x1260), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/slope: settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (column9_row0 - settlement_merkle_hash_points__y) - column10_row0 * (column8_row0 - settlement_merkle_hash_points__x). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4b60), | |
addmod( | |
/*column9_row0*/ mload(0x36a0), | |
sub(PRIME, /*periodic_column/settlement_merkle_hash_points/y*/ mload(0x1a0)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column10_row0*/ mload(0x3720), | |
addmod( | |
/*column8_row0*/ mload(0x35c0), | |
sub(PRIME, /*periodic_column/settlement_merkle_hash_points/x*/ mload(0x180)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[112] + coefficients[113] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[112]*/ mload(0x1280), | |
mulmod(/*coefficients[113]*/ mload(0x12a0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/x: column10_row0 * column10_row0 - settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (column8_row0 + settlement_merkle_hash_points__x + column8_row1). | |
let val := addmod( | |
mulmod(/*column10_row0*/ mload(0x3720), /*column10_row0*/ mload(0x3720), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4b60), | |
addmod( | |
addmod( | |
/*column8_row0*/ mload(0x35c0), | |
/*periodic_column/settlement_merkle_hash_points/x*/ mload(0x180), | |
PRIME), | |
/*column8_row1*/ mload(0x35e0), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[114] + coefficients[115] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[114]*/ mload(0x12c0), | |
mulmod(/*coefficients[115]*/ mload(0x12e0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/add_points/y: settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit * (column9_row0 + column9_row1) - column10_row0 * (column8_row0 - column8_row1). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit*/ mload(0x4b60), | |
addmod(/*column9_row0*/ mload(0x36a0), /*column9_row1*/ mload(0x36c0), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column10_row0*/ mload(0x3720), | |
addmod(/*column8_row0*/ mload(0x35c0), sub(PRIME, /*column8_row1*/ mload(0x35e0)), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[116] + coefficients[117] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[116]*/ mload(0x1300), | |
mulmod(/*coefficients[117]*/ mload(0x1320), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/x: settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit_neg * (column8_row1 - column8_row0). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4b80), | |
addmod(/*column8_row1*/ mload(0x35e0), sub(PRIME, /*column8_row0*/ mload(0x35c0)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[118] + coefficients[119] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[118]*/ mload(0x1340), | |
mulmod(/*coefficients[119]*/ mload(0x1360), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/copy_point/y: settlement_state_transition__merkle_update__prev_authentication__hashes__ec_subset_sum__bit_neg * (column9_row1 - column9_row0). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4b80), | |
addmod(/*column9_row1*/ mload(0x36c0), sub(PRIME, /*column9_row0*/ mload(0x36a0)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[120] + coefficients[121] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[120]*/ mload(0x1380), | |
mulmod(/*coefficients[121]*/ mload(0x13a0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/x: column8_row256 - column8_row255. | |
let val := addmod( | |
/*column8_row256*/ mload(0x3620), | |
sub(PRIME, /*column8_row255*/ mload(0x3600)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[122] + coefficients[123] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[122]*/ mload(0x13c0), | |
mulmod(/*coefficients[123]*/ mload(0x13e0), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/copy_point/y: column9_row256 - column9_row255. | |
let val := addmod( | |
/*column9_row256*/ mload(0x3700), | |
sub(PRIME, /*column9_row255*/ mload(0x36e0)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[124] + coefficients[125] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[124]*/ mload(0x1400), | |
mulmod(/*coefficients[125]*/ mload(0x1420), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/init/x: column8_row0 - shift_point.x. | |
let val := addmod(/*column8_row0*/ mload(0x35c0), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[126] + coefficients[127] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[126]*/ mload(0x1440), | |
mulmod(/*coefficients[127]*/ mload(0x1460), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/hashes/init/y: column9_row0 - shift_point.y. | |
let val := addmod(/*column9_row0*/ mload(0x36a0), sub(PRIME, /*shift_point.y*/ mload(0x240)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[128] + coefficients[129] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[128]*/ mload(0x1480), | |
mulmod(/*coefficients[129]*/ mload(0x14a0), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_left: (1 - settlement_state_transition__merkle_update__side_bit_extraction__bit_1) * (column8_row511 - column11_row512). | |
let val := mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4ba0)), | |
PRIME), | |
addmod( | |
/*column8_row511*/ mload(0x3640), | |
sub(PRIME, /*column11_row512*/ mload(0x39c0)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64)) * (point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32)). | |
// val *= numerators[7]. | |
val := mulmod(val, mload(0x58c0), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[130] + coefficients[131] * adjustments[16]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[130]*/ mload(0x14c0), | |
mulmod(/*coefficients[131]*/ mload(0x14e0), | |
/*adjustments[16]*/mload(0x5ba0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/prev_authentication/copy_prev_to_right: settlement_state_transition__merkle_update__side_bit_extraction__bit_1 * (column8_row511 - column11_row768). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4ba0), | |
addmod( | |
/*column8_row511*/ mload(0x3640), | |
sub(PRIME, /*column11_row768*/ mload(0x39e0)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64)) * (point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32)). | |
// val *= numerators[7]. | |
val := mulmod(val, mload(0x58c0), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[132] + coefficients[133] * adjustments[16]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[132]*/ mload(0x1500), | |
mulmod(/*coefficients[133]*/ mload(0x1520), | |
/*adjustments[16]*/mload(0x5ba0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/booleanity_test: settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4bc0), | |
addmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4bc0), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[134] + coefficients[135] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[134]*/ mload(0x1540), | |
mulmod(/*coefficients[135]*/ mload(0x1560), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_extraction_end: column15_row0. | |
let val := /*column15_row0*/ mload(0x3cc0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[9]. | |
val := mulmod(val, mload(0x5200), PRIME) | |
// res += val * (coefficients[136] + coefficients[137] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[136]*/ mload(0x1580), | |
mulmod(/*coefficients[137]*/ mload(0x15a0), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/zeros_tail: column15_row0. | |
let val := /*column15_row0*/ mload(0x3cc0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[10]. | |
val := mulmod(val, mload(0x5220), PRIME) | |
// res += val * (coefficients[138] + coefficients[139] * adjustments[8]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[138]*/ mload(0x15c0), | |
mulmod(/*coefficients[139]*/ mload(0x15e0), | |
/*adjustments[8]*/mload(0x5aa0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/slope: settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (column13_row0 - settlement_merkle_hash_points__y) - column14_row0 * (column12_row0 - settlement_merkle_hash_points__x). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4bc0), | |
addmod( | |
/*column13_row0*/ mload(0x3ae0), | |
sub(PRIME, /*periodic_column/settlement_merkle_hash_points/y*/ mload(0x1a0)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column14_row0*/ mload(0x3b60), | |
addmod( | |
/*column12_row0*/ mload(0x3a00), | |
sub(PRIME, /*periodic_column/settlement_merkle_hash_points/x*/ mload(0x180)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[140] + coefficients[141] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[140]*/ mload(0x1600), | |
mulmod(/*coefficients[141]*/ mload(0x1620), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/x: column14_row0 * column14_row0 - settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (column12_row0 + settlement_merkle_hash_points__x + column12_row1). | |
let val := addmod( | |
mulmod(/*column14_row0*/ mload(0x3b60), /*column14_row0*/ mload(0x3b60), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4bc0), | |
addmod( | |
addmod( | |
/*column12_row0*/ mload(0x3a00), | |
/*periodic_column/settlement_merkle_hash_points/x*/ mload(0x180), | |
PRIME), | |
/*column12_row1*/ mload(0x3a20), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[142] + coefficients[143] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[142]*/ mload(0x1640), | |
mulmod(/*coefficients[143]*/ mload(0x1660), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/add_points/y: settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit * (column13_row0 + column13_row1) - column14_row0 * (column12_row0 - column12_row1). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit*/ mload(0x4bc0), | |
addmod(/*column13_row0*/ mload(0x3ae0), /*column13_row1*/ mload(0x3b00), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column14_row0*/ mload(0x3b60), | |
addmod(/*column12_row0*/ mload(0x3a00), sub(PRIME, /*column12_row1*/ mload(0x3a20)), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[144] + coefficients[145] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[144]*/ mload(0x1680), | |
mulmod(/*coefficients[145]*/ mload(0x16a0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/x: settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit_neg * (column12_row1 - column12_row0). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4be0), | |
addmod(/*column12_row1*/ mload(0x3a20), sub(PRIME, /*column12_row0*/ mload(0x3a00)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[146] + coefficients[147] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[146]*/ mload(0x16c0), | |
mulmod(/*coefficients[147]*/ mload(0x16e0), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/copy_point/y: settlement_state_transition__merkle_update__new_authentication__hashes__ec_subset_sum__bit_neg * (column13_row1 - column13_row0). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/hashes/ec_subset_sum/bit_neg*/ mload(0x4be0), | |
addmod(/*column13_row1*/ mload(0x3b00), sub(PRIME, /*column13_row0*/ mload(0x3ae0)), PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 256) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[3]. | |
val := mulmod(val, mload(0x5840), PRIME) | |
// Denominator: point^trace_length - 1. | |
// val *= denominator_invs[8]. | |
val := mulmod(val, mload(0x51e0), PRIME) | |
// res += val * (coefficients[148] + coefficients[149] * adjustments[7]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[148]*/ mload(0x1700), | |
mulmod(/*coefficients[149]*/ mload(0x1720), | |
/*adjustments[7]*/mload(0x5a80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/x: column12_row256 - column12_row255. | |
let val := addmod( | |
/*column12_row256*/ mload(0x3a60), | |
sub(PRIME, /*column12_row255*/ mload(0x3a40)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[150] + coefficients[151] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[150]*/ mload(0x1740), | |
mulmod(/*coefficients[151]*/ mload(0x1760), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/copy_point/y: column13_row256 - column13_row255. | |
let val := addmod( | |
/*column13_row256*/ mload(0x3b40), | |
sub(PRIME, /*column13_row255*/ mload(0x3b20)), | |
PRIME) | |
// Numerator: point^(trace_length / 512) - trace_generator^(trace_length / 2). | |
// val *= numerators[4]. | |
val := mulmod(val, mload(0x5860), PRIME) | |
// Denominator: point^(trace_length / 256) - 1. | |
// val *= denominator_invs[11]. | |
val := mulmod(val, mload(0x5240), PRIME) | |
// res += val * (coefficients[152] + coefficients[153] * adjustments[9]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[152]*/ mload(0x1780), | |
mulmod(/*coefficients[153]*/ mload(0x17a0), | |
/*adjustments[9]*/mload(0x5ac0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/init/x: column12_row0 - shift_point.x. | |
let val := addmod(/*column12_row0*/ mload(0x3a00), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[154] + coefficients[155] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[154]*/ mload(0x17c0), | |
mulmod(/*coefficients[155]*/ mload(0x17e0), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/hashes/init/y: column13_row0 - shift_point.y. | |
let val := addmod(/*column13_row0*/ mload(0x3ae0), sub(PRIME, /*shift_point.y*/ mload(0x240)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[156] + coefficients[157] * adjustments[10]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[156]*/ mload(0x1800), | |
mulmod(/*coefficients[157]*/ mload(0x1820), | |
/*adjustments[10]*/mload(0x5ae0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/copy_prev_to_left: (1 - settlement_state_transition__merkle_update__side_bit_extraction__bit_1) * (column12_row511 - column15_row512). | |
let val := mulmod( | |
addmod( | |
1, | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4ba0)), | |
PRIME), | |
addmod( | |
/*column12_row511*/ mload(0x3a80), | |
sub(PRIME, /*column15_row512*/ mload(0x3d20)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64)) * (point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32)). | |
// val *= numerators[7]. | |
val := mulmod(val, mload(0x58c0), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[158] + coefficients[159] * adjustments[16]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[158]*/ mload(0x1840), | |
mulmod(/*coefficients[159]*/ mload(0x1860), | |
/*adjustments[16]*/mload(0x5ba0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/new_authentication/copy_prev_to_right: settlement_state_transition__merkle_update__side_bit_extraction__bit_1 * (column12_row511 - column15_row768). | |
let val := mulmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/side_bit_extraction/bit_1*/ mload(0x4ba0), | |
addmod( | |
/*column12_row511*/ mload(0x3a80), | |
sub(PRIME, /*column15_row768*/ mload(0x3d40)), | |
PRIME), | |
PRIME) | |
// Numerator: (point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64)) * (point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32)). | |
// val *= numerators[7]. | |
val := mulmod(val, mload(0x58c0), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[160] + coefficients[161] * adjustments[16]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[160]*/ mload(0x1880), | |
mulmod(/*coefficients[161]*/ mload(0x18a0), | |
/*adjustments[16]*/mload(0x5ba0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_update/same_siblings: settlement_state_transition__merkle_update__prev_authentication__sibling_0 - settlement_state_transition__merkle_update__new_authentication__sibling_0. | |
let val := addmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/sibling_0*/ mload(0x4c00), | |
sub( | |
PRIME, | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/sibling_0*/ mload(0x4c20)), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(63 * trace_length / 64). | |
// val *= numerators[6]. | |
val := mulmod(val, mload(0x58a0), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[162] + coefficients[163] * adjustments[14]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[162]*/ mload(0x18c0), | |
mulmod(/*coefficients[163]*/ mload(0x18e0), | |
/*adjustments[14]*/mload(0x5b60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_set_prev_leaf: settlement_state_transition__merkle_update__prev_authentication__leaf_0 - column17_row16368. | |
let val := addmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/prev_authentication/leaf_0*/ mload(0x4c40), | |
sub(PRIME, /*column17_row16368*/ mload(0x45c0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[164] + coefficients[165] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[164]*/ mload(0x1900), | |
mulmod(/*coefficients[165]*/ mload(0x1920), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/merkle_set_new_leaf: settlement_state_transition__merkle_update__new_authentication__leaf_0 - column17_row32752. | |
let val := addmod( | |
/*intermediate_value/settlement_state_transition/merkle_update/new_authentication/leaf_0*/ mload(0x4c60), | |
sub(PRIME, /*column17_row32752*/ mload(0x47a0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[166] + coefficients[167] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[166]*/ mload(0x1940), | |
mulmod(/*coefficients[167]*/ mload(0x1960), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/set_prev_root: is_settlement * (column8_row32255 - column10_row14847). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column8_row32255*/ mload(0x3660), | |
sub(PRIME, /*column10_row14847*/ mload(0x3840)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[168] + coefficients[169] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[168]*/ mload(0x1980), | |
mulmod(/*coefficients[169]*/ mload(0x19a0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/root_consistency: is_settlement * (column8_row65023 - column12_row32255). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column8_row65023*/ mload(0x3680), | |
sub(PRIME, /*column12_row32255*/ mload(0x3aa0)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[170] + coefficients[171] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[170]*/ mload(0x19c0), | |
mulmod(/*coefficients[171]*/ mload(0x19e0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/set_new_root: is_settlement * (column12_row65023 - column10_row47615). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column12_row65023*/ mload(0x3ac0), | |
sub(PRIME, /*column10_row47615*/ mload(0x3900)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[172] + coefficients[173] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[172]*/ mload(0x1a00), | |
mulmod(/*coefficients[173]*/ mload(0x1a20), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for settlement_state_transition/dont_change_if_modification: is_modification * (column10_row14847 - column10_row47615). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
/*column10_row14847*/ mload(0x3840), | |
sub(PRIME, /*column10_row47615*/ mload(0x3900)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[174] + coefficients[175] * adjustments[19]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[174]*/ mload(0x1a40), | |
mulmod(/*coefficients[175]*/ mload(0x1a60), | |
/*adjustments[19]*/mload(0x5c00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for amounts_range_check/bit: amounts_range_check__bit_0 * amounts_range_check__bit_0 - amounts_range_check__bit_0. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/amounts_range_check/bit_0*/ mload(0x4c80), | |
/*intermediate_value/amounts_range_check/bit_0*/ mload(0x4c80), | |
PRIME), | |
sub(PRIME, /*intermediate_value/amounts_range_check/bit_0*/ mload(0x4c80)), | |
PRIME) | |
// Numerator: point^(trace_length / 4096) - trace_generator^(63 * trace_length / 64). | |
// val *= numerators[8]. | |
val := mulmod(val, mload(0x58e0), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[176] + coefficients[177] * adjustments[20]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[176]*/ mload(0x1a80), | |
mulmod(/*coefficients[177]*/ mload(0x1aa0), | |
/*adjustments[20]*/mload(0x5c20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for amounts_range_check/zero: column17_row0. | |
let val := /*column17_row0*/ mload(0x4200) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 4096) - trace_generator^(63 * trace_length / 64). | |
// val *= denominator_invs[17]. | |
val := mulmod(val, mload(0x5300), PRIME) | |
// res += val * (coefficients[178] + coefficients[179] * adjustments[4]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[178]*/ mload(0x1ac0), | |
mulmod(/*coefficients[179]*/ mload(0x1ae0), | |
/*adjustments[4]*/mload(0x5a20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for total_token_a_not_changed: is_settlement * (column16_row3075 + column16_row19459 - (column16_row11267 + column16_row27651)). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
addmod(/*column16_row3075*/ mload(0x3f60), /*column16_row19459*/ mload(0x40a0), PRIME), | |
sub( | |
PRIME, | |
addmod(/*column16_row11267*/ mload(0x4060), /*column16_row27651*/ mload(0x40c0), PRIME)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[180] + coefficients[181] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[180]*/ mload(0x1b00), | |
mulmod(/*coefficients[181]*/ mload(0x1b20), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for total_token_b_not_changed: is_settlement * (column16_row35843 + column16_row52227 - (column16_row44035 + column16_row60419)). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
addmod(/*column16_row35843*/ mload(0x4100), /*column16_row52227*/ mload(0x41c0), PRIME), | |
sub( | |
PRIME, | |
addmod(/*column16_row44035*/ mload(0x41a0), /*column16_row60419*/ mload(0x41e0), PRIME)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[182] + coefficients[183] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[182]*/ mload(0x1b40), | |
mulmod(/*coefficients[183]*/ mload(0x1b60), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for party_a_fulfilled_amount: is_settlement * (column17_row32752 - (column17_row16368 + column17_row8192)). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column17_row32752*/ mload(0x47a0), | |
sub( | |
PRIME, | |
addmod(/*column17_row16368*/ mload(0x45c0), /*column17_row8192*/ mload(0x4500), PRIME)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[184] + coefficients[185] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[184]*/ mload(0x1b80), | |
mulmod(/*coefficients[185]*/ mload(0x1ba0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for party_b_fulfilled_amount: is_settlement * (column17_row65520 - (column17_row49136 + column17_row40960)). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column17_row65520*/ mload(0x4980), | |
sub( | |
PRIME, | |
addmod(/*column17_row49136*/ mload(0x48a0), /*column17_row40960*/ mload(0x4820), PRIME)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[186] + coefficients[187] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[186]*/ mload(0x1bc0), | |
mulmod(/*coefficients[187]*/ mload(0x1be0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for amount_a_range_check_input: (column17_row8192 + column16_row11267 - column16_row3075) * is_settlement. | |
let val := mulmod( | |
addmod( | |
addmod(/*column17_row8192*/ mload(0x4500), /*column16_row11267*/ mload(0x4060), PRIME), | |
sub(PRIME, /*column16_row3075*/ mload(0x3f60)), | |
PRIME), | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[188] + coefficients[189] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[188]*/ mload(0x1c00), | |
mulmod(/*coefficients[189]*/ mload(0x1c20), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for amount_b_range_check_input: (column17_row40960 + column16_row44035 - column16_row35843) * is_settlement. | |
let val := mulmod( | |
addmod( | |
addmod(/*column17_row40960*/ mload(0x4820), /*column16_row44035*/ mload(0x41a0), PRIME), | |
sub(PRIME, /*column16_row35843*/ mload(0x4100)), | |
PRIME), | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[190] + coefficients[191] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[190]*/ mload(0x1c40), | |
mulmod(/*coefficients[191]*/ mload(0x1c60), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for amounts_range_check_inputs: column17_row0 - column16_row11267. | |
let val := addmod( | |
/*column17_row0*/ mload(0x4200), | |
sub(PRIME, /*column16_row11267*/ mload(0x4060)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[192] + coefficients[193] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[192]*/ mload(0x1c80), | |
mulmod(/*coefficients[193]*/ mload(0x1ca0), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for ratio_party_a: column17_row40960 * column17_row4096 - (column17_row8192 * column17_row36864 + column17_row12288 + column17_row28672 * amount_shift). | |
let val := addmod( | |
mulmod(/*column17_row40960*/ mload(0x4820), /*column17_row4096*/ mload(0x44e0), PRIME), | |
sub( | |
PRIME, | |
addmod( | |
addmod( | |
mulmod(/*column17_row8192*/ mload(0x4500), /*column17_row36864*/ mload(0x4800), PRIME), | |
/*column17_row12288*/ mload(0x4520), | |
PRIME), | |
mulmod(/*column17_row28672*/ mload(0x4680), /*amount_shift*/ mload(0x2c0), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[194] + coefficients[195] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[194]*/ mload(0x1cc0), | |
mulmod(/*coefficients[195]*/ mload(0x1ce0), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for ratio_party_b: column17_row8192 * column17_row53248 - (column17_row40960 * column17_row20480 + column17_row45056 + column17_row61440 * amount_shift). | |
let val := addmod( | |
mulmod(/*column17_row8192*/ mload(0x4500), /*column17_row53248*/ mload(0x48c0), PRIME), | |
sub( | |
PRIME, | |
addmod( | |
addmod( | |
mulmod(/*column17_row40960*/ mload(0x4820), /*column17_row20480*/ mload(0x4620), PRIME), | |
/*column17_row45056*/ mload(0x4840), | |
PRIME), | |
mulmod(/*column17_row61440*/ mload(0x4920), /*amount_shift*/ mload(0x2c0), PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[196] + coefficients[197] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[196]*/ mload(0x1d00), | |
mulmod(/*coefficients[197]*/ mload(0x1d20), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for capacity_party_a: column17_row24576 + column17_row32752 - column17_row4096. | |
let val := addmod( | |
addmod(/*column17_row24576*/ mload(0x4660), /*column17_row32752*/ mload(0x47a0), PRIME), | |
sub(PRIME, /*column17_row4096*/ mload(0x44e0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[198] + coefficients[199] * adjustments[22]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[198]*/ mload(0x1d40), | |
mulmod(/*coefficients[199]*/ mload(0x1d60), | |
/*adjustments[22]*/mload(0x5c60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for capacity_party_b: column17_row57344 + column17_row65520 - column17_row53248. | |
let val := addmod( | |
addmod(/*column17_row57344*/ mload(0x4900), /*column17_row65520*/ mload(0x4980), PRIME), | |
sub(PRIME, /*column17_row53248*/ mload(0x48c0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[200] + coefficients[201] * adjustments[22]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[200]*/ mload(0x1d80), | |
mulmod(/*coefficients[201]*/ mload(0x1da0), | |
/*adjustments[22]*/mload(0x5c60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for expiration_timestamp_range_check/bit: expiration_timestamp_range_check__bit_0 * expiration_timestamp_range_check__bit_0 - expiration_timestamp_range_check__bit_0. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/expiration_timestamp_range_check/bit_0*/ mload(0x4ca0), | |
/*intermediate_value/expiration_timestamp_range_check/bit_0*/ mload(0x4ca0), | |
PRIME), | |
sub( | |
PRIME, | |
/*intermediate_value/expiration_timestamp_range_check/bit_0*/ mload(0x4ca0)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(31 * trace_length / 32). | |
// val *= numerators[2]. | |
val := mulmod(val, mload(0x5820), PRIME) | |
// Denominator: point^(trace_length / 512) - 1. | |
// val *= denominator_invs[6]. | |
val := mulmod(val, mload(0x51a0), PRIME) | |
// res += val * (coefficients[202] + coefficients[203] * adjustments[5]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[202]*/ mload(0x1dc0), | |
mulmod(/*coefficients[203]*/ mload(0x1de0), | |
/*adjustments[5]*/mload(0x5a40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for expiration_timestamp_range_check/zero: column10_row255. | |
let val := /*column10_row255*/ mload(0x3740) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - trace_generator^(11 * trace_length / 16). | |
// val *= denominator_invs[18]. | |
val := mulmod(val, mload(0x5320), PRIME) | |
// res += val * (coefficients[204] + coefficients[205] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[204]*/ mload(0x1e00), | |
mulmod(/*coefficients[205]*/ mload(0x1e20), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for expiration_timestamp_range_check_input: column10_row16639 + global_expiration_timestamp_elm - column10_row255. | |
let val := addmod( | |
addmod( | |
/*column10_row16639*/ mload(0x3860), | |
/*global_expiration_timestamp_elm*/ mload(0x2e0), | |
PRIME), | |
sub(PRIME, /*column10_row255*/ mload(0x3740)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[206] + coefficients[207] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[206]*/ mload(0x1e40), | |
mulmod(/*coefficients[207]*/ mload(0x1e60), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for nonce_range_check/bit: nonce_range_check__bit_0 * nonce_range_check__bit_0 - nonce_range_check__bit_0. | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/nonce_range_check/bit_0*/ mload(0x4cc0), | |
/*intermediate_value/nonce_range_check/bit_0*/ mload(0x4cc0), | |
PRIME), | |
sub(PRIME, /*intermediate_value/nonce_range_check/bit_0*/ mload(0x4cc0)), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32). | |
// val *= numerators[9]. | |
val := mulmod(val, mload(0x5900), PRIME) | |
// Denominator: point^(trace_length / 1024) - 1. | |
// val *= denominator_invs[3]. | |
val := mulmod(val, mload(0x5140), PRIME) | |
// res += val * (coefficients[208] + coefficients[209] * adjustments[23]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[208]*/ mload(0x1e80), | |
mulmod(/*coefficients[209]*/ mload(0x1ea0), | |
/*adjustments[23]*/mload(0x5c80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for nonce_range_check/zero: column16_row1021. | |
let val := /*column16_row1021*/ mload(0x3e60) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - trace_generator^(31 * trace_length / 32). | |
// val *= denominator_invs[19]. | |
val := mulmod(val, mload(0x5340), PRIME) | |
// res += val * (coefficients[210] + coefficients[211] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[210]*/ mload(0x1ec0), | |
mulmod(/*coefficients[211]*/ mload(0x1ee0), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for is_transfer/bit: column10_row31231 * column10_row31231 - column10_row31231. | |
let val := addmod( | |
mulmod(/*column10_row31231*/ mload(0x38c0), /*column10_row31231*/ mload(0x38c0), PRIME), | |
sub(PRIME, /*column10_row31231*/ mload(0x38c0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[212] + coefficients[213] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[212]*/ mload(0x1f00), | |
mulmod(/*coefficients[213]*/ mload(0x1f20), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for is_transfer/modification: is_modification * (1 - column10_row31231). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod(1, sub(PRIME, /*column10_row31231*/ mload(0x38c0)), PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[214] + coefficients[215] * adjustments[19]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[214]*/ mload(0x1f40), | |
mulmod(/*coefficients[215]*/ mload(0x1f60), | |
/*adjustments[19]*/mload(0x5c00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for transfer/party_a_sold: column17_row8192 * column10_row31231. | |
let val := mulmod(/*column17_row8192*/ mload(0x4500), /*column10_row31231*/ mload(0x38c0), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[216] + coefficients[217] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[216]*/ mload(0x1f80), | |
mulmod(/*coefficients[217]*/ mload(0x1fa0), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for transfer/party_b_buy: column17_row20480 * column10_row31231. | |
let val := mulmod(/*column17_row20480*/ mload(0x4620), /*column10_row31231*/ mload(0x38c0), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[218] + coefficients[219] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[218]*/ mload(0x1fc0), | |
mulmod(/*coefficients[219]*/ mload(0x1fe0), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for transfer/party_a_sell: (column17_row4096 + 1 - amount_shift) * column10_row31231. | |
let val := mulmod( | |
addmod( | |
addmod(/*column17_row4096*/ mload(0x44e0), 1, PRIME), | |
sub(PRIME, /*amount_shift*/ mload(0x2c0)), | |
PRIME), | |
/*column10_row31231*/ mload(0x38c0), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[220] + coefficients[221] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[220]*/ mload(0x2000), | |
mulmod(/*coefficients[221]*/ mload(0x2020), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for transfer/party_b_exact_transferred: column10_row31231 * (column17_row40960 - column17_row53248). | |
let val := mulmod( | |
/*column10_row31231*/ mload(0x38c0), | |
addmod( | |
/*column17_row40960*/ mload(0x4820), | |
sub(PRIME, /*column17_row53248*/ mload(0x48c0)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[222] + coefficients[223] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[222]*/ mload(0x2040), | |
mulmod(/*coefficients[223]*/ mload(0x2060), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/doubling_key/slope: sig_verify__doubling_key__x_squared + sig_verify__doubling_key__x_squared + sig_verify__doubling_key__x_squared + sig_config.alpha - (column17_row16 + column17_row16) * column17_row48. | |
let val := addmod( | |
addmod( | |
addmod( | |
addmod( | |
/*intermediate_value/sig_verify/doubling_key/x_squared*/ mload(0x4ce0), | |
/*intermediate_value/sig_verify/doubling_key/x_squared*/ mload(0x4ce0), | |
PRIME), | |
/*intermediate_value/sig_verify/doubling_key/x_squared*/ mload(0x4ce0), | |
PRIME), | |
/*sig_config.alpha*/ mload(0x300), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
addmod(/*column17_row16*/ mload(0x4260), /*column17_row16*/ mload(0x4260), PRIME), | |
/*column17_row48*/ mload(0x4320), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[224] + coefficients[225] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[224]*/ mload(0x2080), | |
mulmod(/*coefficients[225]*/ mload(0x20a0), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/doubling_key/x: column17_row48 * column17_row48 - (column17_row32 + column17_row32 + column17_row96). | |
let val := addmod( | |
mulmod(/*column17_row48*/ mload(0x4320), /*column17_row48*/ mload(0x4320), PRIME), | |
sub( | |
PRIME, | |
addmod( | |
addmod(/*column17_row32*/ mload(0x42c0), /*column17_row32*/ mload(0x42c0), PRIME), | |
/*column17_row96*/ mload(0x4400), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[226] + coefficients[227] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[226]*/ mload(0x20c0), | |
mulmod(/*coefficients[227]*/ mload(0x20e0), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/doubling_key/y: column17_row16 + column17_row80 - column17_row48 * (column17_row32 - column17_row96). | |
let val := addmod( | |
addmod(/*column17_row16*/ mload(0x4260), /*column17_row80*/ mload(0x43c0), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column17_row48*/ mload(0x4320), | |
addmod( | |
/*column17_row32*/ mload(0x42c0), | |
sub(PRIME, /*column17_row96*/ mload(0x4400)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[228] + coefficients[229] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[228]*/ mload(0x2100), | |
mulmod(/*coefficients[229]*/ mload(0x2120), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/booleanity_test: sig_verify__exponentiate_generator__bit * (sig_verify__exponentiate_generator__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit*/ mload(0x4d00), | |
addmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit*/ mload(0x4d00), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[230] + coefficients[231] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[230]*/ mload(0x2140), | |
mulmod(/*coefficients[231]*/ mload(0x2160), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/bit_extraction_end: column17_row84. | |
let val := /*column17_row84*/ mload(0x43e0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - trace_generator^(251 * trace_length / 256). | |
// val *= denominator_invs[21]. | |
val := mulmod(val, mload(0x5380), PRIME) | |
// res += val * (coefficients[232] + coefficients[233] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[232]*/ mload(0x2180), | |
mulmod(/*coefficients[233]*/ mload(0x21a0), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/zeros_tail: column17_row84. | |
let val := /*column17_row84*/ mload(0x43e0) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[22]. | |
val := mulmod(val, mload(0x53a0), PRIME) | |
// res += val * (coefficients[234] + coefficients[235] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[234]*/ mload(0x21c0), | |
mulmod(/*coefficients[235]*/ mload(0x21e0), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/add_points/slope: sig_verify__exponentiate_generator__bit * (column17_row100 - ecdsa_points__y) - column17_row20 * (column17_row36 - ecdsa_points__x). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit*/ mload(0x4d00), | |
addmod( | |
/*column17_row100*/ mload(0x4420), | |
sub(PRIME, /*periodic_column/ecdsa_points/y*/ mload(0x1e0)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column17_row20*/ mload(0x4280), | |
addmod( | |
/*column17_row36*/ mload(0x42e0), | |
sub(PRIME, /*periodic_column/ecdsa_points/x*/ mload(0x1c0)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[236] + coefficients[237] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[236]*/ mload(0x2200), | |
mulmod(/*coefficients[237]*/ mload(0x2220), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/add_points/x: column17_row20 * column17_row20 - sig_verify__exponentiate_generator__bit * (column17_row36 + ecdsa_points__x + column17_row164). | |
let val := addmod( | |
mulmod(/*column17_row20*/ mload(0x4280), /*column17_row20*/ mload(0x4280), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit*/ mload(0x4d00), | |
addmod( | |
addmod( | |
/*column17_row36*/ mload(0x42e0), | |
/*periodic_column/ecdsa_points/x*/ mload(0x1c0), | |
PRIME), | |
/*column17_row164*/ mload(0x4480), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[238] + coefficients[239] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[238]*/ mload(0x2240), | |
mulmod(/*coefficients[239]*/ mload(0x2260), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/add_points/y: sig_verify__exponentiate_generator__bit * (column17_row100 + column17_row228) - column17_row20 * (column17_row36 - column17_row164). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit*/ mload(0x4d00), | |
addmod(/*column17_row100*/ mload(0x4420), /*column17_row228*/ mload(0x44c0), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column17_row20*/ mload(0x4280), | |
addmod( | |
/*column17_row36*/ mload(0x42e0), | |
sub(PRIME, /*column17_row164*/ mload(0x4480)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[240] + coefficients[241] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[240]*/ mload(0x2280), | |
mulmod(/*coefficients[241]*/ mload(0x22a0), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/add_points/x_diff_inv: column17_row52 * (column17_row36 - ecdsa_points__x) - 1. | |
let val := addmod( | |
mulmod( | |
/*column17_row52*/ mload(0x4340), | |
addmod( | |
/*column17_row36*/ mload(0x42e0), | |
sub(PRIME, /*periodic_column/ecdsa_points/x*/ mload(0x1c0)), | |
PRIME), | |
PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[242] + coefficients[243] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[242]*/ mload(0x22c0), | |
mulmod(/*coefficients[243]*/ mload(0x22e0), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/copy_point/x: sig_verify__exponentiate_generator__bit_neg * (column17_row164 - column17_row36). | |
let val := mulmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit_neg*/ mload(0x4d20), | |
addmod( | |
/*column17_row164*/ mload(0x4480), | |
sub(PRIME, /*column17_row36*/ mload(0x42e0)), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[244] + coefficients[245] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[244]*/ mload(0x2300), | |
mulmod(/*coefficients[245]*/ mload(0x2320), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_generator/copy_point/y: sig_verify__exponentiate_generator__bit_neg * (column17_row228 - column17_row100). | |
let val := mulmod( | |
/*intermediate_value/sig_verify/exponentiate_generator/bit_neg*/ mload(0x4d20), | |
addmod( | |
/*column17_row228*/ mload(0x44c0), | |
sub(PRIME, /*column17_row100*/ mload(0x4420)), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 32768) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[11]. | |
val := mulmod(val, mload(0x5940), PRIME) | |
// Denominator: point^(trace_length / 128) - 1. | |
// val *= denominator_invs[20]. | |
val := mulmod(val, mload(0x5360), PRIME) | |
// res += val * (coefficients[246] + coefficients[247] * adjustments[25]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[246]*/ mload(0x2340), | |
mulmod(/*coefficients[247]*/ mload(0x2360), | |
/*adjustments[25]*/mload(0x5cc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/booleanity_test: sig_verify__exponentiate_key__bit * (sig_verify__exponentiate_key__bit - 1). | |
let val := mulmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit*/ mload(0x4d40), | |
addmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit*/ mload(0x4d40), | |
sub(PRIME, 1), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[248] + coefficients[249] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[248]*/ mload(0x2380), | |
mulmod(/*coefficients[249]*/ mload(0x23a0), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/bit_extraction_end: column17_row56. | |
let val := /*column17_row56*/ mload(0x4360) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - trace_generator^(251 * trace_length / 256). | |
// val *= denominator_invs[23]. | |
val := mulmod(val, mload(0x53c0), PRIME) | |
// res += val * (coefficients[250] + coefficients[251] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[250]*/ mload(0x23c0), | |
mulmod(/*coefficients[251]*/ mload(0x23e0), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/zeros_tail: column17_row56. | |
let val := /*column17_row56*/ mload(0x4360) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= denominator_invs[24]. | |
val := mulmod(val, mload(0x53e0), PRIME) | |
// res += val * (coefficients[252] + coefficients[253] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[252]*/ mload(0x2400), | |
mulmod(/*coefficients[253]*/ mload(0x2420), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/add_points/slope: sig_verify__exponentiate_key__bit * (column17_row40 - column17_row16) - column17_row24 * (column17_row8 - column17_row32). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit*/ mload(0x4d40), | |
addmod( | |
/*column17_row40*/ mload(0x4300), | |
sub(PRIME, /*column17_row16*/ mload(0x4260)), | |
PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column17_row24*/ mload(0x42a0), | |
addmod( | |
/*column17_row8*/ mload(0x4240), | |
sub(PRIME, /*column17_row32*/ mload(0x42c0)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[254] + coefficients[255] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[254]*/ mload(0x2440), | |
mulmod(/*coefficients[255]*/ mload(0x2460), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/add_points/x: column17_row24 * column17_row24 - sig_verify__exponentiate_key__bit * (column17_row8 + column17_row32 + column17_row72). | |
let val := addmod( | |
mulmod(/*column17_row24*/ mload(0x42a0), /*column17_row24*/ mload(0x42a0), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit*/ mload(0x4d40), | |
addmod( | |
addmod(/*column17_row8*/ mload(0x4240), /*column17_row32*/ mload(0x42c0), PRIME), | |
/*column17_row72*/ mload(0x43a0), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[256] + coefficients[257] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[256]*/ mload(0x2480), | |
mulmod(/*coefficients[257]*/ mload(0x24a0), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/add_points/y: sig_verify__exponentiate_key__bit * (column17_row40 + column17_row104) - column17_row24 * (column17_row8 - column17_row72). | |
let val := addmod( | |
mulmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit*/ mload(0x4d40), | |
addmod(/*column17_row40*/ mload(0x4300), /*column17_row104*/ mload(0x4440), PRIME), | |
PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column17_row24*/ mload(0x42a0), | |
addmod( | |
/*column17_row8*/ mload(0x4240), | |
sub(PRIME, /*column17_row72*/ mload(0x43a0)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[258] + coefficients[259] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[258]*/ mload(0x24c0), | |
mulmod(/*coefficients[259]*/ mload(0x24e0), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/add_points/x_diff_inv: column17_row4 * (column17_row8 - column17_row32) - 1. | |
let val := addmod( | |
mulmod( | |
/*column17_row4*/ mload(0x4220), | |
addmod( | |
/*column17_row8*/ mload(0x4240), | |
sub(PRIME, /*column17_row32*/ mload(0x42c0)), | |
PRIME), | |
PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[260] + coefficients[261] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[260]*/ mload(0x2500), | |
mulmod(/*coefficients[261]*/ mload(0x2520), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/copy_point/x: sig_verify__exponentiate_key__bit_neg * (column17_row72 - column17_row8). | |
let val := mulmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit_neg*/ mload(0x4d60), | |
addmod( | |
/*column17_row72*/ mload(0x43a0), | |
sub(PRIME, /*column17_row8*/ mload(0x4240)), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[262] + coefficients[263] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[262]*/ mload(0x2540), | |
mulmod(/*coefficients[263]*/ mload(0x2560), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/exponentiate_key/copy_point/y: sig_verify__exponentiate_key__bit_neg * (column17_row104 - column17_row40). | |
let val := mulmod( | |
/*intermediate_value/sig_verify/exponentiate_key/bit_neg*/ mload(0x4d60), | |
addmod( | |
/*column17_row104*/ mload(0x4440), | |
sub(PRIME, /*column17_row40*/ mload(0x4300)), | |
PRIME), | |
PRIME) | |
// Numerator: point^(trace_length / 16384) - trace_generator^(255 * trace_length / 256). | |
// val *= numerators[10]. | |
val := mulmod(val, mload(0x5920), PRIME) | |
// Denominator: point^(trace_length / 64) - 1. | |
// val *= denominator_invs[16]. | |
val := mulmod(val, mload(0x52e0), PRIME) | |
// res += val * (coefficients[264] + coefficients[265] * adjustments[24]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[264]*/ mload(0x2580), | |
mulmod(/*coefficients[265]*/ mload(0x25a0), | |
/*adjustments[24]*/mload(0x5ca0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/init_gen/x: column17_row36 - sig_config.shift_point.x. | |
let val := addmod(/*column17_row36*/ mload(0x42e0), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[266] + coefficients[267] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[266]*/ mload(0x25c0), | |
mulmod(/*coefficients[267]*/ mload(0x25e0), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/init_gen/y: column17_row100 + sig_config.shift_point.y. | |
let val := addmod(/*column17_row100*/ mload(0x4420), /*shift_point.y*/ mload(0x240), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[268] + coefficients[269] * adjustments[15]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[268]*/ mload(0x2600), | |
mulmod(/*coefficients[269]*/ mload(0x2620), | |
/*adjustments[15]*/mload(0x5b80), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/init_key/x: column17_row8 - sig_config.shift_point.x. | |
let val := addmod(/*column17_row8*/ mload(0x4240), sub(PRIME, /*shift_point.x*/ mload(0x220)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[270] + coefficients[271] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[270]*/ mload(0x2640), | |
mulmod(/*coefficients[271]*/ mload(0x2660), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/init_key/y: column17_row40 - sig_config.shift_point.y. | |
let val := addmod(/*column17_row40*/ mload(0x4300), sub(PRIME, /*shift_point.y*/ mload(0x240)), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[272] + coefficients[273] * adjustments[6]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[272]*/ mload(0x2680), | |
mulmod(/*coefficients[273]*/ mload(0x26a0), | |
/*adjustments[6]*/mload(0x5a60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/add_results/slope: column17_row32740 - (column17_row16360 + column17_row32692 * (column17_row32676 - column17_row16328)). | |
let val := addmod( | |
/*column17_row32740*/ mload(0x4760), | |
sub( | |
PRIME, | |
addmod( | |
/*column17_row16360*/ mload(0x45a0), | |
mulmod( | |
/*column17_row32692*/ mload(0x46e0), | |
addmod( | |
/*column17_row32676*/ mload(0x46c0), | |
sub(PRIME, /*column17_row16328*/ mload(0x4560)), | |
PRIME), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[274] + coefficients[275] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[274]*/ mload(0x26c0), | |
mulmod(/*coefficients[275]*/ mload(0x26e0), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/add_results/x: column17_row32692 * column17_row32692 - (column17_row32676 + column17_row16328 + column17_row16416). | |
let val := addmod( | |
mulmod(/*column17_row32692*/ mload(0x46e0), /*column17_row32692*/ mload(0x46e0), PRIME), | |
sub( | |
PRIME, | |
addmod( | |
addmod(/*column17_row32676*/ mload(0x46c0), /*column17_row16328*/ mload(0x4560), PRIME), | |
/*column17_row16416*/ mload(0x4600), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[276] + coefficients[277] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[276]*/ mload(0x2700), | |
mulmod(/*coefficients[277]*/ mload(0x2720), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/add_results/y: column17_row32740 + column17_row16400 - column17_row32692 * (column17_row32676 - column17_row16416). | |
let val := addmod( | |
addmod(/*column17_row32740*/ mload(0x4760), /*column17_row16400*/ mload(0x45e0), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column17_row32692*/ mload(0x46e0), | |
addmod( | |
/*column17_row32676*/ mload(0x46c0), | |
sub(PRIME, /*column17_row16416*/ mload(0x4600)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[278] + coefficients[279] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[278]*/ mload(0x2740), | |
mulmod(/*coefficients[279]*/ mload(0x2760), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/add_results/x_diff_inv: column17_row32660 * (column17_row32676 - column17_row16328) - 1. | |
let val := addmod( | |
mulmod( | |
/*column17_row32660*/ mload(0x46a0), | |
addmod( | |
/*column17_row32676*/ mload(0x46c0), | |
sub(PRIME, /*column17_row16328*/ mload(0x4560)), | |
PRIME), | |
PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[280] + coefficients[281] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[280]*/ mload(0x2780), | |
mulmod(/*coefficients[281]*/ mload(0x27a0), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/extract_r/slope: column17_row32744 + sig_config.shift_point.y - column10_row10751 * (column17_row32712 - sig_config.shift_point.x). | |
let val := addmod( | |
addmod(/*column17_row32744*/ mload(0x4780), /*shift_point.y*/ mload(0x240), PRIME), | |
sub( | |
PRIME, | |
mulmod( | |
/*column10_row10751*/ mload(0x3820), | |
addmod( | |
/*column17_row32712*/ mload(0x4720), | |
sub(PRIME, /*shift_point.x*/ mload(0x220)), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[282] + coefficients[283] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[282]*/ mload(0x27c0), | |
mulmod(/*coefficients[283]*/ mload(0x27e0), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/extract_r/x: column10_row10751 * column10_row10751 - (column17_row32712 + sig_config.shift_point.x + column17_row56). | |
let val := addmod( | |
mulmod(/*column10_row10751*/ mload(0x3820), /*column10_row10751*/ mload(0x3820), PRIME), | |
sub( | |
PRIME, | |
addmod( | |
addmod(/*column17_row32712*/ mload(0x4720), /*shift_point.x*/ mload(0x220), PRIME), | |
/*column17_row56*/ mload(0x4360), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[284] + coefficients[285] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[284]*/ mload(0x2800), | |
mulmod(/*coefficients[285]*/ mload(0x2820), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/extract_r/x_diff_inv: column10_row27135 * (column17_row32712 - sig_config.shift_point.x) - 1. | |
let val := addmod( | |
mulmod( | |
/*column10_row27135*/ mload(0x38a0), | |
addmod( | |
/*column17_row32712*/ mload(0x4720), | |
sub(PRIME, /*shift_point.x*/ mload(0x220)), | |
PRIME), | |
PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[286] + coefficients[287] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[286]*/ mload(0x2840), | |
mulmod(/*coefficients[287]*/ mload(0x2860), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/z_nonzero: column17_row84 * column10_row6655 - 1. | |
let val := addmod( | |
mulmod(/*column17_row84*/ mload(0x43e0), /*column10_row6655*/ mload(0x37e0), PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[288] + coefficients[289] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[288]*/ mload(0x2880), | |
mulmod(/*coefficients[289]*/ mload(0x28a0), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/r_and_w_nonzero: column17_row56 * column10_row2559 - 1. | |
let val := addmod( | |
mulmod(/*column17_row56*/ mload(0x4360), /*column10_row2559*/ mload(0x37a0), PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[290] + coefficients[291] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[290]*/ mload(0x28c0), | |
mulmod(/*coefficients[291]*/ mload(0x28e0), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/q_on_curve/x_squared: column10_row23039 - column17_row32 * column17_row32. | |
let val := addmod( | |
/*column10_row23039*/ mload(0x3880), | |
sub( | |
PRIME, | |
mulmod(/*column17_row32*/ mload(0x42c0), /*column17_row32*/ mload(0x42c0), PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[292] + coefficients[293] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[292]*/ mload(0x2900), | |
mulmod(/*coefficients[293]*/ mload(0x2920), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for sig_verify/q_on_curve/on_curve: column17_row16 * column17_row16 - (column17_row32 * column10_row23039 + sig_config.alpha * column17_row32 + sig_config.beta). | |
let val := addmod( | |
mulmod(/*column17_row16*/ mload(0x4260), /*column17_row16*/ mload(0x4260), PRIME), | |
sub( | |
PRIME, | |
addmod( | |
addmod( | |
mulmod(/*column17_row32*/ mload(0x42c0), /*column10_row23039*/ mload(0x3880), PRIME), | |
mulmod(/*sig_config.alpha*/ mload(0x300), /*column17_row32*/ mload(0x42c0), PRIME), | |
PRIME), | |
/*sig_config.beta*/ mload(0x320), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 32768) - 1. | |
// val *= denominator_invs[15]. | |
val := mulmod(val, mload(0x52c0), PRIME) | |
// res += val * (coefficients[294] + coefficients[295] * adjustments[17]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[294]*/ mload(0x2940), | |
mulmod(/*coefficients[295]*/ mload(0x2960), | |
/*adjustments[17]*/mload(0x5bc0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for party_a_sig_input_packed: is_settlement * (column16_row7171 - ((party_a_packed_msg__partial * nonce_shift + column16_row1021) * expiration_timestamp_shift + column10_row255)). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column16_row7171*/ mload(0x3fe0), | |
sub( | |
PRIME, | |
addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
/*intermediate_value/party_a_packed_msg/partial*/ mload(0x4d80), | |
/*nonce_shift*/ mload(0x360), | |
PRIME), | |
/*column16_row1021*/ mload(0x3e60), | |
PRIME), | |
/*expiration_timestamp_shift*/ mload(0x380), | |
PRIME), | |
/*column10_row255*/ mload(0x3740), | |
PRIME)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[296] + coefficients[297] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[296]*/ mload(0x2980), | |
mulmod(/*coefficients[297]*/ mload(0x29a0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for party_b_sig_input_packed: column16_row39939 - ((1 - column10_row31231) * ((party_b_packed_msg__partial * nonce_shift + column16_row33789) * expiration_timestamp_shift + column10_row33023) + column10_row31231 * ((party_b_packed_msg_transfer__partial * nonce_shift + column16_row33789) * expiration_timestamp_shift + column10_row33023)). | |
let val := addmod( | |
/*column16_row39939*/ mload(0x4160), | |
sub( | |
PRIME, | |
addmod( | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row31231*/ mload(0x38c0)), PRIME), | |
addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
/*intermediate_value/party_b_packed_msg/partial*/ mload(0x4da0), | |
/*nonce_shift*/ mload(0x360), | |
PRIME), | |
/*column16_row33789*/ mload(0x40e0), | |
PRIME), | |
/*expiration_timestamp_shift*/ mload(0x380), | |
PRIME), | |
/*column10_row33023*/ mload(0x38e0), | |
PRIME), | |
PRIME), | |
mulmod( | |
/*column10_row31231*/ mload(0x38c0), | |
addmod( | |
mulmod( | |
addmod( | |
mulmod( | |
/*intermediate_value/party_b_packed_msg_transfer/partial*/ mload(0x4dc0), | |
/*nonce_shift*/ mload(0x360), | |
PRIME), | |
/*column16_row33789*/ mload(0x40e0), | |
PRIME), | |
/*expiration_timestamp_shift*/ mload(0x380), | |
PRIME), | |
/*column10_row33023*/ mload(0x38e0), | |
PRIME), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[298] + coefficients[299] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[298]*/ mload(0x29c0), | |
mulmod(/*coefficients[299]*/ mload(0x29e0), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for signatures/party_b_hash_sec_msg: column16_row37891 - (column10_row31231 * column10_row63999 + (1 - column10_row31231) * column16_row4099). | |
let val := addmod( | |
/*column16_row37891*/ mload(0x4140), | |
sub( | |
PRIME, | |
addmod( | |
mulmod(/*column10_row31231*/ mload(0x38c0), /*column10_row63999*/ mload(0x3920), PRIME), | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row31231*/ mload(0x38c0)), PRIME), | |
/*column16_row4099*/ mload(0x3fa0), | |
PRIME), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[300] + coefficients[301] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[300]*/ mload(0x2a00), | |
mulmod(/*coefficients[301]*/ mload(0x2a20), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for signatures/copy_token_b: column16_row5123 - column16_row36867. | |
let val := addmod( | |
/*column16_row5123*/ mload(0x3fc0), | |
sub(PRIME, /*column16_row36867*/ mload(0x4120)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[302] + coefficients[303] * adjustments[22]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[302]*/ mload(0x2a40), | |
mulmod(/*coefficients[303]*/ mload(0x2a60), | |
/*adjustments[22]*/mload(0x5c60), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for copy_signature_input_party_a: (1 - column10_row31231) * (column16_row8188 - column17_row84). | |
let val := mulmod( | |
addmod(1, sub(PRIME, /*column10_row31231*/ mload(0x38c0)), PRIME), | |
addmod( | |
/*column16_row8188*/ mload(0x4000), | |
sub(PRIME, /*column17_row84*/ mload(0x43e0)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[304] + coefficients[305] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[304]*/ mload(0x2a80), | |
mulmod(/*coefficients[305]*/ mload(0x2aa0), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for copy_signature_input_party_b: is_settlement * (column16_row40956 - column17_row32852). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column16_row40956*/ mload(0x4180), | |
sub(PRIME, /*column17_row32852*/ mload(0x47e0)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[306] + coefficients[307] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[306]*/ mload(0x2ac0), | |
mulmod(/*coefficients[307]*/ mload(0x2ae0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for message_hash_determines_order_id_party_a: column14_row511 - (1 - column10_row31231) * column17_row24148. | |
let val := addmod( | |
/*column14_row511*/ mload(0x3ba0), | |
sub( | |
PRIME, | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row31231*/ mload(0x38c0)), PRIME), | |
/*column17_row24148*/ mload(0x4640), | |
PRIME)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[308] + coefficients[309] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[308]*/ mload(0x2b00), | |
mulmod(/*coefficients[309]*/ mload(0x2b20), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for message_hash_determines_order_id_party_b: is_settlement * (column14_row33279 - column17_row56916). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column14_row33279*/ mload(0x3c80), | |
sub(PRIME, /*column17_row56916*/ mload(0x48e0)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[310] + coefficients[311] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[310]*/ mload(0x2b40), | |
mulmod(/*coefficients[311]*/ mload(0x2b60), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for party_a_public_key_copy: (1 - column10_row31231) * (column17_row32 - column10_row63999). | |
let val := mulmod( | |
addmod(1, sub(PRIME, /*column10_row31231*/ mload(0x38c0)), PRIME), | |
addmod( | |
/*column17_row32*/ mload(0x42c0), | |
sub(PRIME, /*column10_row63999*/ mload(0x3920)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[312] + coefficients[313] * adjustments[21]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[312]*/ mload(0x2b80), | |
mulmod(/*coefficients[313]*/ mload(0x2ba0), | |
/*adjustments[21]*/mload(0x5c40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_key_change0: is_settlement * (column10_row63999 - column17_row16324). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column10_row63999*/ mload(0x3920), | |
sub(PRIME, /*column17_row16324*/ mload(0x4540)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[314] + coefficients[315] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[314]*/ mload(0x2bc0), | |
mulmod(/*coefficients[315]*/ mload(0x2be0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_token_change0: is_settlement * (column16_row4099 - column17_row16344). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column16_row4099*/ mload(0x3fa0), | |
sub(PRIME, /*column17_row16344*/ mload(0x4580)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[316] + coefficients[317] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[316]*/ mload(0x2c00), | |
mulmod(/*coefficients[317]*/ mload(0x2c20), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_key_change3: is_settlement * (column10_row63999 - column17_row65476). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column10_row63999*/ mload(0x3920), | |
sub(PRIME, /*column17_row65476*/ mload(0x4940)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[318] + coefficients[319] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[318]*/ mload(0x2c40), | |
mulmod(/*coefficients[319]*/ mload(0x2c60), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_token_change3: is_settlement * (column16_row5123 - column17_row65496). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column16_row5123*/ mload(0x3fc0), | |
sub(PRIME, /*column17_row65496*/ mload(0x4960)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[320] + coefficients[321] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[320]*/ mload(0x2c80), | |
mulmod(/*coefficients[321]*/ mload(0x2ca0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_key_change1: is_settlement * (column17_row32800 - column17_row32708). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column17_row32800*/ mload(0x47c0), | |
sub(PRIME, /*column17_row32708*/ mload(0x4700)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[322] + coefficients[323] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[322]*/ mload(0x2cc0), | |
mulmod(/*coefficients[323]*/ mload(0x2ce0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_token_change1: is_settlement * (column16_row4099 - column17_row32728). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column16_row4099*/ mload(0x3fa0), | |
sub(PRIME, /*column17_row32728*/ mload(0x4740)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[324] + coefficients[325] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[324]*/ mload(0x2d00), | |
mulmod(/*coefficients[325]*/ mload(0x2d20), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_key_change2: is_settlement * (column17_row32800 - column17_row49092). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column17_row32800*/ mload(0x47c0), | |
sub(PRIME, /*column17_row49092*/ mload(0x4860)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[326] + coefficients[327] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[326]*/ mload(0x2d40), | |
mulmod(/*coefficients[327]*/ mload(0x2d60), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_token_change2: is_settlement * (column16_row5123 - column17_row49112). | |
let val := mulmod( | |
/*periodic_column/is_settlement*/ mload(0xc0), | |
addmod( | |
/*column16_row5123*/ mload(0x3fc0), | |
sub(PRIME, /*column17_row49112*/ mload(0x4880)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[328] + coefficients[329] * adjustments[18]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[328]*/ mload(0x2d80), | |
mulmod(/*coefficients[329]*/ mload(0x2da0), | |
/*adjustments[18]*/mload(0x5be0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/vault_empty/empty_vault_booleanity: column10_row511 * (1 - column10_row511). | |
let val := mulmod( | |
/*column10_row511*/ mload(0x3760), | |
addmod(1, sub(PRIME, /*column10_row511*/ mload(0x3760)), PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 8192) - 1. | |
// val *= denominator_invs[25]. | |
val := mulmod(val, mload(0x5400), PRIME) | |
// res += val * (coefficients[330] + coefficients[331] * adjustments[26]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[330]*/ mload(0x2dc0), | |
mulmod(/*coefficients[331]*/ mload(0x2de0), | |
/*adjustments[26]*/mload(0x5ce0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/vault_empty/amount_zero_when_empty: column10_row511 * column16_row3075. | |
let val := mulmod(/*column10_row511*/ mload(0x3760), /*column16_row3075*/ mload(0x3f60), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 8192) - 1. | |
// val *= denominator_invs[25]. | |
val := mulmod(val, mload(0x5400), PRIME) | |
// res += val * (coefficients[332] + coefficients[333] * adjustments[26]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[332]*/ mload(0x2e00), | |
mulmod(/*coefficients[333]*/ mload(0x2e20), | |
/*adjustments[26]*/mload(0x5ce0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/vault_empty/amount_inv_zero_when_empty: column10_row511 * column10_row4607. | |
let val := mulmod(/*column10_row511*/ mload(0x3760), /*column10_row4607*/ mload(0x37c0), PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 8192) - 1. | |
// val *= denominator_invs[25]. | |
val := mulmod(val, mload(0x5400), PRIME) | |
// res += val * (coefficients[334] + coefficients[335] * adjustments[26]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[334]*/ mload(0x2e40), | |
mulmod(/*coefficients[335]*/ mload(0x2e60), | |
/*adjustments[26]*/mload(0x5ce0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/vault_empty/empty_when_amount_zero: column16_row3075 * column10_row4607 + column10_row511 - 1. | |
let val := addmod( | |
addmod( | |
mulmod(/*column16_row3075*/ mload(0x3f60), /*column10_row4607*/ mload(0x37c0), PRIME), | |
/*column10_row511*/ mload(0x3760), | |
PRIME), | |
sub(PRIME, 1), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 8192) - 1. | |
// val *= denominator_invs[25]. | |
val := mulmod(val, mload(0x5400), PRIME) | |
// res += val * (coefficients[336] + coefficients[337] * adjustments[26]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[336]*/ mload(0x2e80), | |
mulmod(/*coefficients[337]*/ mload(0x2ea0), | |
/*adjustments[26]*/mload(0x5ce0), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_key_stage0: (1 - column10_row511) * column17_row16324 - column16_row3. | |
let val := addmod( | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row511*/ mload(0x3760)), PRIME), | |
/*column17_row16324*/ mload(0x4540), | |
PRIME), | |
sub(PRIME, /*column16_row3*/ mload(0x3dc0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[338] + coefficients[339] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[338]*/ mload(0x2ec0), | |
mulmod(/*coefficients[339]*/ mload(0x2ee0), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_token_stage0: (1 - column10_row511) * column17_row16344 - column16_row1027. | |
let val := addmod( | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row511*/ mload(0x3760)), PRIME), | |
/*column17_row16344*/ mload(0x4580), | |
PRIME), | |
sub(PRIME, /*column16_row1027*/ mload(0x3ee0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[340] + coefficients[341] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[340]*/ mload(0x2f00), | |
mulmod(/*coefficients[341]*/ mload(0x2f20), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_key_stage1: (1 - column10_row8703) * column17_row16324 - column16_row8195. | |
let val := addmod( | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row8703*/ mload(0x3800)), PRIME), | |
/*column17_row16324*/ mload(0x4540), | |
PRIME), | |
sub(PRIME, /*column16_row8195*/ mload(0x4020)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[342] + coefficients[343] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[342]*/ mload(0x2f40), | |
mulmod(/*coefficients[343]*/ mload(0x2f60), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for handle_empty_vault/consistency_token_stage1: (1 - column10_row8703) * column17_row16344 - column16_row9219. | |
let val := addmod( | |
mulmod( | |
addmod(1, sub(PRIME, /*column10_row8703*/ mload(0x3800)), PRIME), | |
/*column17_row16344*/ mload(0x4580), | |
PRIME), | |
sub(PRIME, /*column16_row9219*/ mload(0x4040)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[344] + coefficients[345] * adjustments[12]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[344]*/ mload(0x2f80), | |
mulmod(/*coefficients[345]*/ mload(0x2fa0), | |
/*adjustments[12]*/mload(0x5b20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for initial_vaults_root: column0_row_expr0 - initial_vaults_root. | |
let val := addmod( | |
/*column0_row_expr0*/ mload(0x3220), | |
sub(PRIME, /*initial_vaults_root*/ mload(0x3a0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point - 1. | |
// val *= denominator_invs[26]. | |
val := mulmod(val, mload(0x5420), PRIME) | |
// res += val * (coefficients[346] + coefficients[347] * adjustments[27]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[346]*/ mload(0x2fc0), | |
mulmod(/*coefficients[347]*/ mload(0x2fe0), | |
/*adjustments[27]*/mload(0x5d00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for initial_settlement_root: column10_row14847 - initial_settlement_root. | |
let val := addmod( | |
/*column10_row14847*/ mload(0x3840), | |
sub(PRIME, /*initial_settlement_root*/ mload(0x3c0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point - 1. | |
// val *= denominator_invs[26]. | |
val := mulmod(val, mload(0x5420), PRIME) | |
// res += val * (coefficients[348] + coefficients[349] * adjustments[27]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[348]*/ mload(0x3000), | |
mulmod(/*coefficients[349]*/ mload(0x3020), | |
/*adjustments[27]*/mload(0x5d00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for final_vaults_root: column4_row_expr1 - final_vaults_root. | |
let val := addmod( | |
/*column4_row_expr1*/ mload(0x3440), | |
sub(PRIME, /*final_vaults_root*/ mload(0x3e0)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point - trace_generator^(65536 * (n_transactions - 1)). | |
// val *= denominator_invs[27]. | |
val := mulmod(val, mload(0x5440), PRIME) | |
// res += val * (coefficients[350] + coefficients[351] * adjustments[27]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[350]*/ mload(0x3040), | |
mulmod(/*coefficients[351]*/ mload(0x3060), | |
/*adjustments[27]*/mload(0x5d00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for final_settlement_root: column10_row47615 - final_settlement_root. | |
let val := addmod( | |
/*column10_row47615*/ mload(0x3900), | |
sub(PRIME, /*final_settlement_root*/ mload(0x420)), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point - trace_generator^(65536 * (n_transactions - 1)). | |
// val *= denominator_invs[27]. | |
val := mulmod(val, mload(0x5440), PRIME) | |
// res += val * (coefficients[352] + coefficients[353] * adjustments[27]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[352]*/ mload(0x3080), | |
mulmod(/*coefficients[353]*/ mload(0x30a0), | |
/*adjustments[27]*/mload(0x5d00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for copy_merkle_roots: column4_row_expr0 - column0_row_expr2. | |
let val := addmod( | |
/*column4_row_expr0*/ mload(0x3460), | |
sub(PRIME, /*column0_row_expr2*/ mload(0x3240)), | |
PRIME) | |
// Numerator: point - trace_generator^(65536 * (trace_length / 65536 - 1) + 49152). | |
// val *= numerators[12]. | |
val := mulmod(val, mload(0x5960), PRIME) | |
// Denominator: point^(trace_length / 16384) - 1. | |
// val *= denominator_invs[12]. | |
val := mulmod(val, mload(0x5260), PRIME) | |
// res += val * (coefficients[354] + coefficients[355] * adjustments[28]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[354]*/ mload(0x30c0), | |
mulmod(/*coefficients[355]*/ mload(0x30e0), | |
/*adjustments[28]*/mload(0x5d20), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for copy_settlement_merkle_roots: column10_row47615 - column10_row80383. | |
let val := addmod( | |
/*column10_row47615*/ mload(0x3900), | |
sub(PRIME, /*column10_row80383*/ mload(0x3940)), | |
PRIME) | |
// Numerator: point - trace_generator^(65536 * (trace_length / 65536 - 1)). | |
// val *= numerators[13]. | |
val := mulmod(val, mload(0x5980), PRIME) | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[356] + coefficients[357] * adjustments[29]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[356]*/ mload(0x3100), | |
mulmod(/*coefficients[357]*/ mload(0x3120), | |
/*adjustments[29]*/mload(0x5d40), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
{ | |
// Constraint expression for copy_merkle_roots_modification: is_modification * (column4_row_expr0 - column4_row_expr1). | |
let val := mulmod( | |
/*periodic_column/is_modification*/ mload(0xa0), | |
addmod( | |
/*column4_row_expr0*/ mload(0x3460), | |
sub(PRIME, /*column4_row_expr1*/ mload(0x3440)), | |
PRIME), | |
PRIME) | |
// Numerator: 1. | |
// val *= 1. | |
// val := mulmod(val, 1, PRIME). | |
// Denominator: point^(trace_length / 65536) - 1. | |
// val *= denominator_invs[13]. | |
val := mulmod(val, mload(0x5280), PRIME) | |
// res += val * (coefficients[358] + coefficients[359] * adjustments[19]). | |
res := addmod(res, | |
mulmod(val, | |
add(/*coefficients[358]*/ mload(0x3140), | |
mulmod(/*coefficients[359]*/ mload(0x3160), | |
/*adjustments[19]*/mload(0x5c00), | |
PRIME)), | |
PRIME), | |
PRIME) | |
} | |
mstore(0, res) | |
return(0, 0x20) | |
} | |
} | |
} | |
} | |
// ---------- End of auto-generated code. ---------- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment