-
Notifications
You must be signed in to change notification settings - Fork 21
EIP-7951: Precompile for secp256r1 Curve Support #817
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 10 commits
b049d33
683c690
b0e8be1
812739b
fd53f84
ff3faed
c53a2f2
d3ea5f9
60235fe
e2a76f9
73cf33d
46f6500
7740e5f
da87f2e
63cfb67
177afca
3335fca
961b7da
84cb1ab
b1ecca9
cd73010
2f23e74
40959eb
c483d9e
78ad636
00e31bc
2fd0833
2a547ac
29694c1
7a5f259
8923512
4ad1faf
ee70747
15aa249
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -244,6 +244,7 @@ | |
| GAS_CONST_BLS_MAP_FP2_TO_G2 23800 | ||
| GAS_CONST_BLS_PAIRING_CHECK 37700 | ||
| GAS_CONST_BLS_PAIRING_CHECK_PAIR 32600 | ||
| GAS_CONST_P256_VERIFY 6900 | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EVM MISC ;; | ||
|
|
@@ -326,6 +327,7 @@ | |
| PRECOMPILE_CALL_DATA_UNIT_SIZE___BLS_PAIRING_CHECK 384 | ||
| PRECOMPILE_CALL_DATA_SIZE___FP_TO_G1 64 | ||
| PRECOMPILE_CALL_DATA_SIZE___FP2_TO_G2 128 | ||
| PRECOMPILE_CALL_DATA_SIZE___P256_VERIFY 160 | ||
|
|
||
| PRC_ECPAIRING_SIZE (* 6 WORD_SIZE) | ||
| PRECOMPILE_CALL_DATA_SIZE___BLAKE2F 213 | ||
|
|
@@ -340,6 +342,7 @@ | |
| PRECOMPILE_RETURN_DATA_SIZE___BLS_PAIRING_CHECK 32 | ||
| PRECOMPILE_RETURN_DATA_SIZE___BLS_MAP_FP_TO_G1 128 | ||
| PRECOMPILE_RETURN_DATA_SIZE___BLS_MAP_FP2_TO_G2 256 | ||
| PRECOMPILE_RETURN_DATA_SIZE___P256_VERIFY 32 | ||
|
|
||
| PRC_BLS_G1_MSM_MAX_DISCOUNT 519 | ||
| PRC_BLS_G2_MSM_MAX_DISCOUNT 524 | ||
|
|
@@ -403,6 +406,8 @@ | |
| PHASE_ECMUL_RESULT 0x070B | ||
| PHASE_ECPAIRING_DATA 0x080A | ||
| PHASE_ECPAIRING_RESULT 0x080B | ||
| PHASE_P256_VERIFY_DATA 0x100A | ||
| PHASE_P256_VERIFY_RESULT 0x100B | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Bug: Phase IDs collide for precompile operationsPhase constant collision: PHASE_P256_VERIFY_DATA is set to 0x100A, which is identical to the existing PHASE_BLS_MAP_FP_TO_G1_DATA constant (also 0x100A). These phase identifiers must be unique to correctly distinguish between different precompile operations. This collision will cause the system to confuse P256_VERIFY operations with BLS_MAP_FP_TO_G1 operations. |
||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLS DATA MODULE ;; | ||
|
|
@@ -521,6 +526,7 @@ | |
| OOB_INST_BLS_PAIRING_CHECK 0xFF0F | ||
| OOB_INST_BLS_MAP_FP_TO_G1 0xFF10 | ||
| OOB_INST_BLS_MAP_FP2_TO_G2 0xFF11 | ||
| OOB_INST_P256_VERIFY 0xF100 | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; | ||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RLP* MODULE ;; | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| (module ecdata) | ||
|
|
||
| (defcolumns | ||
| (STAMP :i32) | ||
| (ID :i32) | ||
| (INDEX :i16) | ||
| (LIMB :i128) | ||
| (TOTAL_SIZE :i16) | ||
| (PHASE :i16) | ||
| (INDEX_MAX :i16) | ||
| (SUCCESS_BIT :binary@prove) | ||
|
|
||
| (IS_ECRECOVER_DATA :binary@prove) | ||
| (IS_ECRECOVER_RESULT :binary@prove) | ||
| (IS_ECADD_DATA :binary@prove) | ||
| (IS_ECADD_RESULT :binary@prove) | ||
| (IS_ECMUL_DATA :binary@prove) | ||
| (IS_ECMUL_RESULT :binary@prove) | ||
| (IS_ECPAIRING_DATA :binary@prove) | ||
| (IS_ECPAIRING_RESULT :binary@prove) | ||
| (IS_P256_VERIFY_DATA :binary@prove) | ||
| (IS_P256_VERIFY_RESULT :binary@prove) | ||
|
|
||
| (TOTAL_PAIRINGS :i16) | ||
| (ACC_PAIRINGS :i16) | ||
| (INTERNAL_CHECKS_PASSED :binary@prove) | ||
| (HURDLE :binary@prove) | ||
| (BYTE_DELTA :byte@prove) | ||
| (CT :i3) | ||
| (CT_MAX :i3) | ||
| (IS_SMALL_POINT :binary@prove) | ||
| (IS_LARGE_POINT :binary@prove) | ||
| (NOT_ON_G2 :binary@prove) | ||
| (NOT_ON_G2_ACC :binary@prove) | ||
| (NOT_ON_G2_ACC_MAX :binary@prove) | ||
| (IS_INFINITY :binary@prove) | ||
| (OVERALL_TRIVIAL_PAIRING :binary@prove) | ||
| (G2_MEMBERSHIP_TEST_REQUIRED :binary@prove) | ||
| (ACCEPTABLE_PAIR_OF_POINTS_FOR_PAIRING_CIRCUIT :binary@prove) | ||
|
|
||
| (CIRCUIT_SELECTOR_ECRECOVER :binary@prove) | ||
| (CIRCUIT_SELECTOR_ECADD :binary@prove) | ||
| (CIRCUIT_SELECTOR_ECMUL :binary@prove) | ||
| (CIRCUIT_SELECTOR_ECPAIRING :binary@prove) | ||
| (CIRCUIT_SELECTOR_P256_VERIFY :binary@prove) | ||
| (CIRCUIT_SELECTOR_G2_MEMBERSHIP :binary@prove) | ||
|
|
||
| (WCP_FLAG :binary@prove) | ||
| (WCP_ARG1_HI :i128) | ||
| (WCP_ARG1_LO :i128) | ||
| (WCP_ARG2_HI :i128) | ||
| (WCP_ARG2_LO :i128) | ||
| (WCP_RES :binary) | ||
| (WCP_INST :byte :display :opcode) | ||
|
|
||
| (EXT_FLAG :binary@prove) | ||
| (EXT_ARG1_HI :i128) | ||
| (EXT_ARG1_LO :i128) | ||
| (EXT_ARG2_HI :i128) | ||
| (EXT_ARG2_LO :i128) | ||
| (EXT_ARG3_HI :i128) | ||
| (EXT_ARG3_LO :i128) | ||
| (EXT_RES_LO :i128) | ||
| (EXT_RES_HI :i128) | ||
| (EXT_INST :byte :display :opcode)) | ||
|
|
||
| ;; aliases | ||
| (defalias | ||
| ICP INTERNAL_CHECKS_PASSED | ||
| TRIVIAL_PAIRING OVERALL_TRIVIAL_PAIRING | ||
| G2MTR G2_MEMBERSHIP_TEST_REQUIRED | ||
| ACCPC ACCEPTABLE_PAIR_OF_POINTS_FOR_PAIRING_CIRCUIT | ||
| CS_ECRECOVER CIRCUIT_SELECTOR_ECRECOVER | ||
| CS_ECADD CIRCUIT_SELECTOR_ECADD | ||
| CS_ECMUL CIRCUIT_SELECTOR_ECMUL | ||
| CS_ECPAIRING CIRCUIT_SELECTOR_ECPAIRING | ||
| CS_P256_VERIFY CIRCUIT_SELECTOR_P256_VERIFY | ||
| CS_G2_MEMBERSHIP CIRCUIT_SELECTOR_G2_MEMBERSHIP) | ||
|
|
||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| (module ecdata) | ||
|
|
||
| (defconst | ||
| P_BN_HI 0x30644e72e131a029b85045b68181585d | ||
| P_BN_LO 0x97816a916871ca8d3c208c16d87cfd47 | ||
| SECP256K1N_HI 0xffffffffffffffffffffffffffffffff | ||
| SECP256K1N_LO 0xfffffffffffffffffffffffefffffc2f | ||
| P_R1_HI 0xffffffff000000010000000000000000 | ||
| P_R1_LO 0x00000000ffffffffffffffffffffffff | ||
| SECP256R1N_HI 0xffffffff00000000ffffffffffffffff | ||
| SECP256R1N_LO 0xbce6faada7179e84f3b9cac2fc632551 | ||
| A_COEFF_R1_HI 0xffffffff000000010000000000000000 | ||
| A_COEFF_R1_LO 0x00000000fffffffffffffffffffffffc | ||
| B_COEFF_R1_HI 0x5ac635d8aa3a93e7b3ebbd55769886bc | ||
| B_COEFF_R1_LO 0x651d06b0cc53b0f63bce3c3e27d2604b | ||
| MULMOD 0x09 | ||
| ADDMOD 0x08 | ||
| ECRECOVER 0x01 | ||
| ECADD 0x06 | ||
| ECMUL 0x07 | ||
| ECPAIRING 0x08 | ||
| P256_VERIFY 0x100 | ||
| INDEX_MAX_ECRECOVER_DATA 7 | ||
| INDEX_MAX_ECADD_DATA 7 | ||
| INDEX_MAX_ECMUL_DATA 5 | ||
| INDEX_MAX_ECPAIRING_DATA_MIN 11 | ||
| INDEX_MAX_ECRECOVER_RESULT 1 | ||
| INDEX_MAX_ECADD_RESULT 3 | ||
| INDEX_MAX_ECMUL_RESULT 3 | ||
| INDEX_MAX_ECPAIRING_RESULT 1 | ||
| INDEX_MAX_P256_VERIFY_DATA 10 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Bug: Data Index Error Impacts VerificationThe |
||
| INDEX_MAX_P256_VERIFY_RESULT 1 | ||
| TOTAL_SIZE_ECRECOVER_DATA 128 | ||
| TOTAL_SIZE_ECADD_DATA 128 | ||
| TOTAL_SIZE_ECMUL_DATA 96 | ||
| TOTAL_SIZE_ECPAIRING_DATA_MIN 192 | ||
| TOTAL_SIZE_ECRECOVER_RESULT 32 | ||
| TOTAL_SIZE_ECADD_RESULT 64 | ||
| TOTAL_SIZE_ECMUL_RESULT 64 | ||
| TOTAL_SIZE_ECPAIRING_RESULT 32 | ||
| TOTAL_SIZE_P256_VERIFY_DATA 160 | ||
| TOTAL_SIZE_P256_VERIFY_RESULT 32 | ||
| CT_MAX_SMALL_POINT 3 | ||
| CT_MAX_LARGE_POINT 7) | ||
cursor[bot] marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.