Skip to content

Commit

Permalink
Stabilize NEP-488 (Host Functions for BLS12-381 Curve Operations) (#1…
Browse files Browse the repository at this point in the history
…1818)

Stabilize NEP-488: Host Functions for BLS12-381 Curve Operations

* NEP-488: near/NEPs#488
* Implementation: #9317
  • Loading branch information
olga24912 authored Jul 22, 2024
1 parent 06a6e69 commit bb6ff5d
Show file tree
Hide file tree
Showing 74 changed files with 1,476 additions and 609 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* Congestion Control [NEP-0539](https://github.com/near/NEPs/pull/539)
* Stateless Validation [NEP-0509](https://github.com/near/NEPs/pull/509)
* Eth-Implicit Accounts [NEP-0518](https://github.com/near/NEPs/pull/518)
* Host Functions for BLS12-381 Curve Operations [NEP-0488](https://github.com/near/NEPs/pull/488)

### Non-protocol Changes

Expand Down
2 changes: 0 additions & 2 deletions core/parameters/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ insta.workspace = true
nightly = [
"near-primitives-core/nightly",
"nightly_protocol",
"protocol_feature_bls12381",
]
nightly_protocol = [
"near-primitives-core/nightly_protocol",
Expand All @@ -44,4 +43,3 @@ statelessnet_protocol = [
"near-primitives-core/statelessnet_protocol",
]
calimero_zero_storage = []
protocol_feature_bls12381 = []
18 changes: 0 additions & 18 deletions core/parameters/res/runtime_configs/141.yaml

This file was deleted.

20 changes: 19 additions & 1 deletion core/parameters/res/runtime_configs/69.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,22 @@ data_receipt_creation_per_byte: {
wasm_yield_resume_byte: {
old: 17_212_011,
new: 47_683_715
}
}
wasm_bls12381_p1_sum_base: { old: 300_000_000_000_000, new: 16_500_000_000 }
wasm_bls12381_p1_sum_element: { old: 300_000_000_000_000, new: 6_000_000_000 }
wasm_bls12381_p2_sum_base: { old: 300_000_000_000_000, new: 18_600_000_000 }
wasm_bls12381_p2_sum_element: { old: 300_000_000_000_000, new: 15_000_000_000 }
wasm_bls12381_g1_multiexp_base: { old: 300_000_000_000_000, new: 16_500_000_000 }
wasm_bls12381_g1_multiexp_element: { old: 300_000_000_000_000, new: 930_000_000_000 }
wasm_bls12381_g2_multiexp_base: { old: 300_000_000_000_000, new: 18_600_000_000 }
wasm_bls12381_g2_multiexp_element: { old: 300_000_000_000_000, new: 1_995_000_000_000 }
wasm_bls12381_map_fp_to_g1_base: { old: 300_000_000_000_000, new: 1_500_000_000 }
wasm_bls12381_map_fp_to_g1_element: { old: 300_000_000_000_000, new: 252_000_000_000 }
wasm_bls12381_map_fp2_to_g2_base: { old: 300_000_000_000_000, new: 1_500_000_000 }
wasm_bls12381_map_fp2_to_g2_element: { old: 300_000_000_000_000, new: 900_000_000_000 }
wasm_bls12381_pairing_base: { old: 300_000_000_000_000, new: 2_130_000_000_000 }
wasm_bls12381_pairing_element: { old: 300_000_000_000_000, new: 2_130_000_000_000 }
wasm_bls12381_p1_decompress_base: { old: 300_000_000_000_000, new: 15_000_000_000 }
wasm_bls12381_p1_decompress_element: { old: 300_000_000_000_000, new: 81_000_000_000 }
wasm_bls12381_p2_decompress_base: { old: 300_000_000_000_000, new: 15_000_000_000 }
wasm_bls12381_p2_decompress_element: { old: 300_000_000_000_000, new: 165_000_000_000 }
36 changes: 18 additions & 18 deletions core/parameters/res/runtime_configs/parameters.snap
Original file line number Diff line number Diff line change
Expand Up @@ -146,24 +146,24 @@ wasm_yield_create_base 153_411_779_276
wasm_yield_create_byte 15_643_988
wasm_yield_resume_base 1_195_627_285_210
wasm_yield_resume_byte 47_683_715
wasm_bls12381_p1_sum_base 300_000_000_000_000
wasm_bls12381_p1_sum_element 300_000_000_000_000
wasm_bls12381_p2_sum_base 300_000_000_000_000
wasm_bls12381_p2_sum_element 300_000_000_000_000
wasm_bls12381_g1_multiexp_base 300_000_000_000_000
wasm_bls12381_g1_multiexp_element 300_000_000_000_000
wasm_bls12381_g2_multiexp_base 300_000_000_000_000
wasm_bls12381_g2_multiexp_element 300_000_000_000_000
wasm_bls12381_map_fp_to_g1_base 300_000_000_000_000
wasm_bls12381_map_fp_to_g1_element 300_000_000_000_000
wasm_bls12381_map_fp2_to_g2_base 300_000_000_000_000
wasm_bls12381_map_fp2_to_g2_element 300_000_000_000_000
wasm_bls12381_pairing_base 300_000_000_000_000
wasm_bls12381_pairing_element 300_000_000_000_000
wasm_bls12381_p1_decompress_base 300_000_000_000_000
wasm_bls12381_p1_decompress_element 300_000_000_000_000
wasm_bls12381_p2_decompress_base 300_000_000_000_000
wasm_bls12381_p2_decompress_element 300_000_000_000_000
wasm_bls12381_p1_sum_base 16_500_000_000
wasm_bls12381_p1_sum_element 6_000_000_000
wasm_bls12381_p2_sum_base 18_600_000_000
wasm_bls12381_p2_sum_element 15_000_000_000
wasm_bls12381_g1_multiexp_base 16_500_000_000
wasm_bls12381_g1_multiexp_element 930_000_000_000
wasm_bls12381_g2_multiexp_base 18_600_000_000
wasm_bls12381_g2_multiexp_element 1_995_000_000_000
wasm_bls12381_map_fp_to_g1_base 1_500_000_000
wasm_bls12381_map_fp_to_g1_element 252_000_000_000
wasm_bls12381_map_fp2_to_g2_base 1_500_000_000
wasm_bls12381_map_fp2_to_g2_element 900_000_000_000
wasm_bls12381_pairing_base 2_130_000_000_000
wasm_bls12381_pairing_element 2_130_000_000_000
wasm_bls12381_p1_decompress_base 15_000_000_000
wasm_bls12381_p1_decompress_element 81_000_000_000
wasm_bls12381_p2_decompress_base 15_000_000_000
wasm_bls12381_p2_decompress_element 165_000_000_000
max_gas_burnt 300_000_000_000_000
max_gas_burnt_view 300_000_000_000_000
max_stack_height 262_144
Expand Down
1 change: 0 additions & 1 deletion core/parameters/src/config_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ static CONFIG_DIFFS: &[(ProtocolVersion, &str)] = &[
// Introduce ETH-implicit accounts.
(70, include_config!("70.yaml")),
(129, include_config!("129.yaml")),
(141, include_config!("141.yaml")),
];

/// Testnet parameters for versions <= 29, which (incorrectly) differed from mainnet parameters
Expand Down
54 changes: 0 additions & 54 deletions core/parameters/src/cost.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,41 +130,23 @@ impl ExtCostsConfig {
ExtCosts::alt_bn128_pairing_check_element => 5_102_000_000_000,
ExtCosts::alt_bn128_g1_sum_base => 3_000_000_000,
ExtCosts::alt_bn128_g1_sum_element => 5_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_sum_base => SAFETY_MULTIPLIER * 5_500_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_sum_element => SAFETY_MULTIPLIER * 2_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_sum_base => SAFETY_MULTIPLIER * 6_200_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_sum_element => SAFETY_MULTIPLIER * 5_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g1_multiexp_base => SAFETY_MULTIPLIER * 5_500_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g1_multiexp_element => SAFETY_MULTIPLIER * 310_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g2_multiexp_base => SAFETY_MULTIPLIER * 6_200_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g2_multiexp_element => SAFETY_MULTIPLIER * 665_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp_to_g1_base => SAFETY_MULTIPLIER * 500_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp_to_g1_element => SAFETY_MULTIPLIER * 84_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp2_to_g2_base => SAFETY_MULTIPLIER * 500_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp2_to_g2_element => SAFETY_MULTIPLIER * 300_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_pairing_base => SAFETY_MULTIPLIER * 710_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_pairing_element => SAFETY_MULTIPLIER * 710_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_decompress_base => SAFETY_MULTIPLIER * 500_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_decompress_element => SAFETY_MULTIPLIER * 27_000_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_decompress_base => SAFETY_MULTIPLIER * 500_000_000,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_decompress_element => SAFETY_MULTIPLIER * 55_000_000_000,
// TODO(yield/resume): replicate fees here after estimation
ExtCosts::yield_create_base => 300_000_000_000_000,
Expand Down Expand Up @@ -266,41 +248,23 @@ pub enum ExtCosts {
yield_create_byte = 62,
yield_resume_base = 63,
yield_resume_byte = 64,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p1_sum_base = 65,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p1_sum_element = 66,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p2_sum_base = 67,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p2_sum_element = 68,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_g1_multiexp_base = 69,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_g1_multiexp_element = 70,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_g2_multiexp_base = 71,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_g2_multiexp_element = 72,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_map_fp_to_g1_base = 73,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_map_fp_to_g1_element = 74,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_map_fp2_to_g2_base = 75,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_map_fp2_to_g2_element = 76,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_pairing_base = 77,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_pairing_element = 78,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p1_decompress_base = 79,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p1_decompress_element = 80,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p2_decompress_base = 81,
#[cfg(feature = "protocol_feature_bls12381")]
bls12381_p2_decompress_element = 82,
}

Expand Down Expand Up @@ -414,41 +378,23 @@ impl ExtCosts {
ExtCosts::yield_create_byte => Parameter::WasmYieldCreateByte,
ExtCosts::yield_resume_base => Parameter::WasmYieldResumeBase,
ExtCosts::yield_resume_byte => Parameter::WasmYieldResumeBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_sum_base => Parameter::WasmBls12381P1SumBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_sum_element => Parameter::WasmBls12381P1SumElement,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_sum_base => Parameter::WasmBls12381P2SumBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_sum_element => Parameter::WasmBls12381P2SumElement,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g1_multiexp_base => Parameter::WasmBls12381G1MultiexpBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g1_multiexp_element => Parameter::WasmBls12381G1MultiexpElement,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g2_multiexp_base => Parameter::WasmBls12381G2MultiexpBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_g2_multiexp_element => Parameter::WasmBls12381G2MultiexpElement,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp_to_g1_base => Parameter::WasmBls12381MapFpToG1Base,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp_to_g1_element => Parameter::WasmBls12381MapFpToG1Element,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp2_to_g2_base => Parameter::WasmBls12381MapFp2ToG2Base,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_map_fp2_to_g2_element => Parameter::WasmBls12381MapFp2ToG2Element,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_pairing_base => Parameter::WasmBls12381PairingBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_pairing_element => Parameter::WasmBls12381PairingElement,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_decompress_base => Parameter::WasmBls12381P1DecompressBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p1_decompress_element => Parameter::WasmBls12381P1DecompressElement,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_decompress_base => Parameter::WasmBls12381P2DecompressBase,
#[cfg(feature = "protocol_feature_bls12381")]
ExtCosts::bls12381_p2_decompress_element => Parameter::WasmBls12381P2DecompressElement,
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,25 @@ expression: config_view
"yield_create_base": 300000000000000,
"yield_create_byte": 300000000000000,
"yield_resume_base": 300000000000000,
"yield_resume_byte": 300000000000000
"yield_resume_byte": 300000000000000,
"bls12381_p1_sum_base": 300000000000000,
"bls12381_p1_sum_element": 300000000000000,
"bls12381_p2_sum_base": 300000000000000,
"bls12381_p2_sum_element": 300000000000000,
"bls12381_g1_multiexp_base": 300000000000000,
"bls12381_g1_multiexp_element": 300000000000000,
"bls12381_g2_multiexp_base": 300000000000000,
"bls12381_g2_multiexp_element": 300000000000000,
"bls12381_map_fp_to_g1_base": 300000000000000,
"bls12381_map_fp_to_g1_element": 300000000000000,
"bls12381_map_fp2_to_g2_base": 300000000000000,
"bls12381_map_fp2_to_g2_element": 300000000000000,
"bls12381_pairing_base": 300000000000000,
"bls12381_pairing_element": 300000000000000,
"bls12381_p1_decompress_base": 300000000000000,
"bls12381_p1_decompress_element": 300000000000000,
"bls12381_p2_decompress_base": 300000000000000,
"bls12381_p2_decompress_element": 300000000000000
},
"grow_mem_cost": 1,
"regular_op_cost": 3856371,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,25 @@ expression: config_view
"yield_create_base": 153411779276,
"yield_create_byte": 15643988,
"yield_resume_base": 1195627285210,
"yield_resume_byte": 1195627285210
"yield_resume_byte": 1195627285210,
"bls12381_p1_sum_base": 16500000000,
"bls12381_p1_sum_element": 6000000000,
"bls12381_p2_sum_base": 18600000000,
"bls12381_p2_sum_element": 15000000000,
"bls12381_g1_multiexp_base": 16500000000,
"bls12381_g1_multiexp_element": 930000000000,
"bls12381_g2_multiexp_base": 18600000000,
"bls12381_g2_multiexp_element": 1995000000000,
"bls12381_map_fp_to_g1_base": 1500000000,
"bls12381_map_fp_to_g1_element": 252000000000,
"bls12381_map_fp2_to_g2_base": 1500000000,
"bls12381_map_fp2_to_g2_element": 900000000000,
"bls12381_pairing_base": 2130000000000,
"bls12381_pairing_element": 2130000000000,
"bls12381_p1_decompress_base": 15000000000,
"bls12381_p1_decompress_element": 81000000000,
"bls12381_p2_decompress_base": 15000000000,
"bls12381_p2_decompress_element": 165000000000
},
"grow_mem_cost": 1,
"regular_op_cost": 822756,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,25 @@ expression: config_view
"yield_create_base": 300000000000000,
"yield_create_byte": 300000000000000,
"yield_resume_base": 300000000000000,
"yield_resume_byte": 300000000000000
"yield_resume_byte": 300000000000000,
"bls12381_p1_sum_base": 300000000000000,
"bls12381_p1_sum_element": 300000000000000,
"bls12381_p2_sum_base": 300000000000000,
"bls12381_p2_sum_element": 300000000000000,
"bls12381_g1_multiexp_base": 300000000000000,
"bls12381_g1_multiexp_element": 300000000000000,
"bls12381_g2_multiexp_base": 300000000000000,
"bls12381_g2_multiexp_element": 300000000000000,
"bls12381_map_fp_to_g1_base": 300000000000000,
"bls12381_map_fp_to_g1_element": 300000000000000,
"bls12381_map_fp2_to_g2_base": 300000000000000,
"bls12381_map_fp2_to_g2_element": 300000000000000,
"bls12381_pairing_base": 300000000000000,
"bls12381_pairing_element": 300000000000000,
"bls12381_p1_decompress_base": 300000000000000,
"bls12381_p1_decompress_element": 300000000000000,
"bls12381_p2_decompress_base": 300000000000000,
"bls12381_p2_decompress_element": 300000000000000
},
"grow_mem_cost": 1,
"regular_op_cost": 3856371,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,25 @@ expression: config_view
"yield_create_base": 300000000000000,
"yield_create_byte": 300000000000000,
"yield_resume_base": 300000000000000,
"yield_resume_byte": 300000000000000
"yield_resume_byte": 300000000000000,
"bls12381_p1_sum_base": 300000000000000,
"bls12381_p1_sum_element": 300000000000000,
"bls12381_p2_sum_base": 300000000000000,
"bls12381_p2_sum_element": 300000000000000,
"bls12381_g1_multiexp_base": 300000000000000,
"bls12381_g1_multiexp_element": 300000000000000,
"bls12381_g2_multiexp_base": 300000000000000,
"bls12381_g2_multiexp_element": 300000000000000,
"bls12381_map_fp_to_g1_base": 300000000000000,
"bls12381_map_fp_to_g1_element": 300000000000000,
"bls12381_map_fp2_to_g2_base": 300000000000000,
"bls12381_map_fp2_to_g2_element": 300000000000000,
"bls12381_pairing_base": 300000000000000,
"bls12381_pairing_element": 300000000000000,
"bls12381_p1_decompress_base": 300000000000000,
"bls12381_p1_decompress_element": 300000000000000,
"bls12381_p2_decompress_base": 300000000000000,
"bls12381_p2_decompress_element": 300000000000000
},
"grow_mem_cost": 1,
"regular_op_cost": 3856371,
Expand Down
Loading

0 comments on commit bb6ff5d

Please sign in to comment.