From 29e65bb92825917d1f1e03fbd151b93824e20be7 Mon Sep 17 00:00:00 2001 From: bfdays Date: Fri, 8 Aug 2025 14:46:55 +0700 Subject: [PATCH 1/3] feat(svm): remove original solana builtins and corresponding tests and test structures --- contracts/Cargo.toml | 4 +- .../svm/assets/solana_program_state_usage.so | Bin 246544 -> 223984 bytes contracts/examples/svm/bindings/src/lib.rs | 166 ---------- .../svm/solana-program-state-usage/Cargo.lock | 2 +- .../src/solana_program.rs | 135 +------- crates/svm-shared/src/test_structs.rs | 151 +-------- crates/svm/Cargo.toml | 1 - crates/svm/src/builtins.rs | 105 +----- e2e/Cargo.toml | 5 - e2e/src/svm.rs | 310 +++++++----------- 10 files changed, 122 insertions(+), 757 deletions(-) diff --git a/contracts/Cargo.toml b/contracts/Cargo.toml index 1d49f55c4..a6e575617 100644 --- a/contracts/Cargo.toml +++ b/contracts/Cargo.toml @@ -19,9 +19,7 @@ fluentbase-sdk = { path = "../crates/sdk", default-features = false } precompile = { path = "../revm/crates/precompile", package = "revm-precompile", default-features = false } fluentbase-erc20 = { path = "../crates/erc20", default-features = false } fluentbase-evm = { path = "../crates/evm", default-features = false } -fluentbase-svm = { path = "../crates/svm", default-features = false, features = [ - # "enable-solana-original-builtins", -] } +fluentbase-svm = { path = "../crates/svm", default-features = false } hex-literal = { version = "0.4.1", default-features = false } alloy-sol-types = { version = "1.2.0", default-features = false } serde = { version = "1.0.203", default-features = false, features = ["derive", "rc"] } diff --git a/contracts/examples/svm/assets/solana_program_state_usage.so b/contracts/examples/svm/assets/solana_program_state_usage.so index 8707f0a1eb211fbe29b3e4235ba6941abb801368..ce38f60012197db76e8e3818d0fba7532b71773c 100755 GIT binary patch delta 44723 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 diff --git a/contracts/examples/svm/bindings/src/lib.rs b/contracts/examples/svm/bindings/src/lib.rs index 6839dfbcb..0131f9870 100644 --- a/contracts/examples/svm/bindings/src/lib.rs +++ b/contracts/examples/svm/bindings/src/lib.rs @@ -79,16 +79,6 @@ macro_rules! impl_hash { pub fn sol_keccak256_native(data: &[&[u8]]) -> (ReturnValue, [u8; 32]) { impl_hash!(data, sol_keccak256) } -extern "C" { - fn sol_sha256_original( - values_addr: *const u8, - values_len: u64, - result_addr: *mut u8, - ) -> ReturnValue; -} -pub fn sol_sha256_original_native(data: &[&[u8]]) -> (ReturnValue, [u8; 32]) { - impl_hash!(data, sol_sha256_original) -} extern "C" { fn sol_sha256(values_addr: *const u8, values_len: u64, result_addr: *mut u8) -> ReturnValue; } @@ -127,30 +117,6 @@ pub fn sol_poseidon_native( }; (ret, result) } -extern "C" { - fn sol_secp256k1_recover_original( - hash_addr: *const u8, - recovery_id_val: u64, - signature_addr: *const u8, - result_addr: *mut u8, - ) -> ReturnValue; -} -pub fn secp256k1_recover_original_native( - hash: &[u8; 32], - recovery_id_val: u64, - signature: &[u8; 64], -) -> (ReturnValue, [u8; 64]) { - let mut result = [0u8; 64]; - let ret = unsafe { - sol_secp256k1_recover_original( - hash.as_ptr(), - recovery_id_val, - signature.as_ptr(), - result.as_mut_ptr(), - ) - }; - (ret, result) -} extern "C" { fn sol_secp256k1_recover( hash_addr: *const u8, @@ -175,37 +141,6 @@ pub fn secp256k1_recover_native( }; (ret, result) } -extern "C" { - fn sol_big_mod_exp_original(params_addr: *const u8, return_value_addr: *mut u8) -> ReturnValue; -} -pub fn big_mod_exp_original_native( - params: &[u8; size_of::() * 6], -) -> (ReturnValue, [u8; N]) { - let mut result = [0u8; N]; - let ret = unsafe { sol_big_mod_exp_original(params.as_ptr(), result.as_mut_ptr()) }; - (ret, result) -} -pub fn big_mod_exp_3_original( - base: &[u8], - exponent: &[u8], - modulus: &[u8; N], -) -> (ReturnValue, [u8; N]) { - const PARAM_COMPONENT_SIZE: usize = size_of::(); - let mut params = [0u8; PARAM_COMPONENT_SIZE * 6]; - for (idx, param) in [base, exponent, modulus].iter().enumerate() { - let param_ptr = param.as_ptr() as u64; - let param_len = param.len() as u64; - let idx_ptr_base = idx * PARAM_COMPONENT_SIZE * 2; - let idx_len_base = idx_ptr_base + PARAM_COMPONENT_SIZE; - params[idx_ptr_base..idx_ptr_base + PARAM_COMPONENT_SIZE] - .copy_from_slice(¶m_ptr.to_le_bytes()); - params[idx_len_base..idx_len_base + PARAM_COMPONENT_SIZE] - .copy_from_slice(¶m_len.to_le_bytes()); - } - let mut result = [0u8; N]; - let ret = unsafe { sol_big_mod_exp_original(params.as_ptr(), result.as_mut_ptr()) }; - (ret, result) -} extern "C" { fn sol_big_mod_exp(params_addr: *const u8, return_value_addr: *mut u8) -> ReturnValue; } @@ -237,44 +172,12 @@ pub fn big_mod_exp_3( let ret = unsafe { sol_big_mod_exp(params.as_ptr(), result.as_mut_ptr()) }; (ret, result) } -extern "C" { - fn sol_curve_validate_point_original(curve_id: u64, point_addr: *const u8) -> ReturnValue; -} -pub fn curve_validate_point_original_native(curve_id: u64, point: &[u8; 32]) -> ReturnValue { - unsafe { sol_curve_validate_point_original(curve_id, point.as_ptr()) } -} extern "C" { fn sol_curve_validate_point(curve_id: u64, point_addr: *const u8) -> ReturnValue; } pub fn curve_validate_point_native(curve_id: u64, point: &[u8; 32]) -> ReturnValue { unsafe { sol_curve_validate_point(curve_id, point.as_ptr()) } } -extern "C" { - fn sol_curve_group_op_original( - curve_id: u64, - group_op: u64, - left_input_addr: *const u8, - right_input_addr: *const u8, - result_point_addr: *mut u8, - ) -> ReturnValue; -} -pub fn curve_group_op_original_native( - curve_id: u64, - group_op: u64, - left_input: &[u8; 32], - right_input: &[u8; 32], - result_point: &mut [u8; 32], -) -> ReturnValue { - unsafe { - sol_curve_group_op_original( - curve_id, - group_op, - left_input.as_ptr(), - right_input.as_ptr(), - result_point.as_mut_ptr(), - ) - } -} extern "C" { fn sol_curve_group_op( curve_id: u64, @@ -301,31 +204,6 @@ pub fn curve_group_op_native( ) } } -extern "C" { - fn sol_curve_multiscalar_mul_original( - curve_id: u64, - scalars_addr: *const u8, - points_addr: *const u8, - scalars_points_len: u64, - result_point_addr: *mut u8, - ) -> ReturnValue; -} -pub fn curve_multiscalar_mul_original_native( - curve_id: u64, - scalars: &[[u8; 32]], - points: &[[u8; 32]], - result_point: &mut [u8; 32], -) -> ReturnValue { - unsafe { - sol_curve_multiscalar_mul_original( - curve_id, - scalars.as_ptr() as *const u8, - points.as_ptr() as *const u8, - points.len() as u64, - result_point.as_mut_ptr(), - ) - } -} extern "C" { fn sol_curve_multiscalar_mul( curve_id: u64, @@ -351,28 +229,6 @@ pub fn curve_multiscalar_mul_native( ) } } -extern "C" { - fn sol_alt_bn128_group_op_original( - group_op: u64, - input_addr: *const u8, - input_len: u64, - result_addr: *mut u8, - ) -> ReturnValue; -} -pub fn alt_bn128_group_op_original_native( - group_op: u64, - input: &[u8], - result_point: &mut [u8; 64], -) -> ReturnValue { - unsafe { - sol_alt_bn128_group_op_original( - group_op, - input.as_ptr(), - input.len() as u64, - result_point.as_mut_ptr(), - ) - } -} extern "C" { fn sol_alt_bn128_group_op( group_op: u64, @@ -395,28 +251,6 @@ pub fn alt_bn128_group_op_native( ) } } -extern "C" { - fn sol_alt_bn128_compression_original( - group_op: u64, - input_addr: *const u8, - input_len: u64, - result_addr: *mut u8, - ) -> ReturnValue; -} -pub fn alt_bn128_compression_original_native( - group_op: u64, - input: &[u8], - result_point: &mut [u8; 128], -) -> ReturnValue { - unsafe { - sol_alt_bn128_compression_original( - group_op, - input.as_ptr(), - input.len() as u64, - result_point.as_mut_ptr(), - ) - } -} extern "C" { fn sol_alt_bn128_compression( group_op: u64, diff --git a/contracts/examples/svm/solana-program-state-usage/Cargo.lock b/contracts/examples/svm/solana-program-state-usage/Cargo.lock index b5ef8c971..e73fb72d6 100644 --- a/contracts/examples/svm/solana-program-state-usage/Cargo.lock +++ b/contracts/examples/svm/solana-program-state-usage/Cargo.lock @@ -542,7 +542,7 @@ dependencies = [ [[package]] name = "fluentbase-svm-shared" -version = "0.3.7-dev" +version = "0.4.0-dev" dependencies = [ "bincode", "hex", diff --git a/contracts/examples/svm/solana-program-state-usage/src/solana_program.rs b/contracts/examples/svm/solana-program-state-usage/src/solana_program.rs index b23adc8f7..6e085065a 100644 --- a/contracts/examples/svm/solana-program-state-usage/src/solana_program.rs +++ b/contracts/examples/svm/solana-program-state-usage/src/solana_program.rs @@ -1,28 +1,9 @@ extern crate alloc; use fluentbase_examples_svm_bindings::{ - alt_bn128_compression_native, - alt_bn128_compression_original_native, - alt_bn128_group_op_native, - alt_bn128_group_op_original_native, - big_mod_exp_3, - big_mod_exp_3_original, - curve_group_op_native, - curve_group_op_original_native, - curve_multiscalar_mul_native, - curve_multiscalar_mul_original_native, - curve_validate_point_native, - curve_validate_point_original_native, - get_return_data, - log_data_native, - log_pubkey_native, - secp256k1_recover_native, - secp256k1_recover_original_native, - set_return_data_native, - sol_blake3_native, - sol_keccak256_native, - sol_poseidon_native, - sol_sha256_native, - sol_sha256_original_native, + alt_bn128_compression_native, alt_bn128_group_op_native, big_mod_exp_3, curve_group_op_native, + curve_multiscalar_mul_native, curve_validate_point_native, get_return_data, log_data_native, + log_pubkey_native, secp256k1_recover_native, set_return_data_native, sol_blake3_native, + sol_keccak256_native, sol_poseidon_native, sol_sha256_native, }; use fluentbase_svm_shared::{ bincode_helpers::deserialize, @@ -181,53 +162,12 @@ pub fn process_instruction( msg!("Create account: end"); } - TestCommand::SolBigModExpOriginal(p) => { - let modulus: [u8; 32] = p.modulus.try_into().unwrap(); - let result = big_mod_exp_3_original(&p.base, &p.exponent, &modulus); - assert_eq!(&p.expected_ret, &result.0); - assert_eq!(&p.expected, &result.1); - } TestCommand::SolBigModExp(p) => { let modulus: [u8; 32] = p.modulus.try_into().unwrap(); let result = big_mod_exp_3(&p.base, &p.exponent, &modulus); assert_eq!(&p.expected_ret, &result.0); assert_eq!(&p.expected, &result.1); } - TestCommand::SolSecp256k1RecoverOriginal(p) => { - let message = p.message; - let message_hash = { - let mut hasher = solana_program::keccak::Hasher::default(); - hasher.hash(&message); - hasher.result() - }; - - let signature = - libsecp256k1::Signature::parse_standard_slice(&p.signature_bytes).unwrap(); - - // Flip the S value in the signature to make a different but valid signature. - let mut alt_signature = signature; - alt_signature.s = -alt_signature.s; - let alt_recovery_id = libsecp256k1::RecoveryId::parse(p.recovery_id ^ 1).unwrap(); - - let alt_signature_bytes = alt_signature.serialize(); - let alt_recovery_id = alt_recovery_id.serialize(); - - let recovered_pubkey = secp256k1_recover_original_native( - &message_hash.0, - p.recovery_id as u64, - &p.signature_bytes.try_into().unwrap(), - ); - assert_eq!(&p.expected_ret, &recovered_pubkey.0); - assert_eq!(&recovered_pubkey.1, p.pubkey_bytes.as_slice()); - - let alt_recovered_pubkey = secp256k1_recover_original_native( - &message_hash.0, - alt_recovery_id as u64, - &alt_signature_bytes, - ); - assert_eq!(&p.expected_ret, &alt_recovered_pubkey.0); - assert_eq!(alt_recovered_pubkey.1, p.pubkey_bytes.as_slice()); - } TestCommand::SolSecp256k1Recover(p) => { let message = p.message; let message_hash = { @@ -276,22 +216,6 @@ pub fn process_instruction( assert_eq!(expected_result.as_slice(), &result.1); } } - TestCommand::Sha256Original(p) => { - let data: Vec<&[u8]> = p.data.iter().map(|v| v.as_slice()).collect(); - let expected_result = p.expected_result; - let result = sol_sha256_original_native(&data); - assert_eq!(&p.expected_ret, &result.0); - assert_eq!(expected_result.as_slice(), &result.1); - if p.data.len() > 0 { - let mut data_solid = Vec::new(); - for v in &p.data { - data_solid.extend_from_slice(v); - } - let result = sol_sha256_original_native(&[data_solid.as_slice()]); - assert_eq!(&p.expected_ret, &result.0); - assert_eq!(expected_result.as_slice(), &result.1); - } - } TestCommand::Sha256(p) => { let data: Vec<&[u8]> = p.data.iter().map(|v| v.as_slice()).collect(); let expected_result = p.expected_result; @@ -340,26 +264,10 @@ pub fn process_instruction( get_return_data().expect("return data must exists as it has already been set"); assert_eq!(&return_data_after_set.1, data); } - TestCommand::CurvePointValidationOriginal(p) => { - let result = curve_validate_point_original_native(p.curve_id, &p.point); - assert_eq!(result, p.expected_ret); - } TestCommand::CurvePointValidation(p) => { let result = curve_validate_point_native(p.curve_id, &p.point); assert_eq!(result, p.expected_ret); } - TestCommand::CurveGroupOpOriginal(p) => { - let mut result_point = [0u8; 32]; - let result = curve_group_op_original_native( - p.curve_id, - p.group_op, - &p.left_input, - &p.right_input, - &mut result_point, - ); - assert_eq!(result, p.expected_ret); - assert_eq!(&p.expected_point, &result_point); - } TestCommand::CurveGroupOp(p) => { let mut result_point = [0u8; 32]; let result = curve_group_op_native( @@ -372,17 +280,6 @@ pub fn process_instruction( assert_eq!(result, p.expected_ret); assert_eq!(&p.expected_point, &result_point); } - TestCommand::CurveMultiscalarMultiplicationOriginal(p) => { - let mut result_point = [0u8; 32]; - let result = curve_multiscalar_mul_original_native( - p.curve_id, - &p.scalars, - &p.points, - &mut result_point, - ); - assert_eq!(result, p.expected_ret); - assert_eq!(&p.expected_point, &result_point) - } TestCommand::CurveMultiscalarMultiplication(p) => { let mut result_point = [0u8; 32]; let result = @@ -390,20 +287,6 @@ pub fn process_instruction( assert_eq!(result, p.expected_ret); assert_eq!(&p.expected_point, &result_point) } - TestCommand::SyscallAltBn128Original(p) => { - let mut result_point = [0u8; 64]; // can hold to 64 (32 or 64) - let ret = alt_bn128_group_op_original_native(p.group_op, &p.input, &mut result_point); - assert_eq!(ret, p.expected_ret); - let mut expected_result_point = [0u8; 64]; - expected_result_point[..p.expected_result.as_slice().len()] - .copy_from_slice(p.expected_result.as_slice()); - msg!( - "expected_result_point {:x?} result_point {:x?}", - &expected_result_point, - &result_point - ); - assert_eq!(&expected_result_point, &result_point) - } TestCommand::SyscallAltBn128(p) => { let mut result_point = [0u8; 64]; // can hold to 64 (32 or 64) let ret = alt_bn128_group_op_native(p.group_op, &p.input, &mut result_point); @@ -418,16 +301,6 @@ pub fn process_instruction( ); assert_eq!(&expected_result_point, &result_point) } - TestCommand::AltBn128CompressionOriginal(p) => { - let mut result_point = [0u8; 128]; // can be 32, 64, 128 - let result = - alt_bn128_compression_original_native(p.group_op, &p.input, &mut result_point); - assert_eq!(result, p.expected_ret); - let mut expected_result_point = [0u8; 128]; - expected_result_point[..p.expected_result.as_slice().len()] - .copy_from_slice(p.expected_result.as_slice()); - assert_eq!(&expected_result_point, &result_point) - } TestCommand::AltBn128Compression(p) => { let mut result_point = [0u8; 128]; // can be 32, 64, 128 let result = alt_bn128_compression_native(p.group_op, &p.input, &mut result_point); diff --git a/crates/svm-shared/src/test_structs.rs b/crates/svm-shared/src/test_structs.rs index ae52fc1ec..7afad66a6 100644 --- a/crates/svm-shared/src/test_structs.rs +++ b/crates/svm-shared/src/test_structs.rs @@ -20,14 +20,6 @@ pub struct CreateAccountAndModifySomeData1 { pub byte_n_value: u8, } -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SolBigModExpOriginal { - pub base: Vec, - pub exponent: Vec, - pub modulus: Vec, - pub expected: Vec, - pub expected_ret: u64, -} #[derive(Clone, Debug, Serialize, Deserialize)] pub struct SolBigModExp { pub base: Vec, @@ -36,19 +28,7 @@ pub struct SolBigModExp { pub expected: Vec, pub expected_ret: u64, } -impl From for SolBigModExp { - fn from(value: SolBigModExpOriginal) -> Self { - Self { - base: value.base, - exponent: value.exponent, - modulus: value.modulus, - expected: value.expected, - expected_ret: value.expected_ret, - } - } -} - -impl SolBigModExpOriginal { +impl SolBigModExp { pub fn from_hex( base_hex: &str, exponent_hex: &str, @@ -75,15 +55,6 @@ pub struct SolSecp256k1Recover { pub expected_ret: u64, } -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SolSecp256k1RecoverOriginal { - pub message: Vec, - pub signature_bytes: Vec, - pub recovery_id: u8, - pub pubkey_bytes: Vec, - pub expected_ret: u64, -} - #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Keccak256 { pub data: Vec>, @@ -91,26 +62,11 @@ pub struct Keccak256 { pub expected_ret: u64, } #[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Sha256Original { - pub data: Vec>, - pub expected_result: [u8; 32], - pub expected_ret: u64, -} -#[derive(Clone, Debug, Serialize, Deserialize)] pub struct Sha256 { pub data: Vec>, pub expected_result: [u8; 32], pub expected_ret: u64, } -impl From for Sha256 { - fn from(value: Sha256Original) -> Self { - Self { - data: value.data, - expected_result: value.expected_result, - expected_ret: value.expected_ret, - } - } -} #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Blake3 { pub data: Vec>, @@ -130,35 +86,11 @@ pub struct SetGetReturnData { pub data: Vec, } #[derive(Clone, Debug, Serialize, Deserialize)] -pub struct CurvePointValidationOriginal { - pub curve_id: u64, - pub point: [u8; 32], - pub expected_ret: u64, -} -#[derive(Clone, Debug, Serialize, Deserialize)] pub struct CurvePointValidation { pub curve_id: u64, pub point: [u8; 32], pub expected_ret: u64, } -impl From for CurvePointValidation { - fn from(value: CurvePointValidationOriginal) -> Self { - Self { - curve_id: value.curve_id, - point: value.point, - expected_ret: value.expected_ret, - } - } -} -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct CurveGroupOpOriginal { - pub curve_id: u64, - pub group_op: u64, - pub left_input: [u8; 32], - pub right_input: [u8; 32], - pub expected_point: [u8; 32], - pub expected_ret: u64, -} #[derive(Clone, Debug, Serialize, Deserialize)] pub struct CurveGroupOp { pub curve_id: u64, @@ -168,26 +100,6 @@ pub struct CurveGroupOp { pub expected_point: [u8; 32], pub expected_ret: u64, } -impl From for CurveGroupOp { - fn from(value: CurveGroupOpOriginal) -> Self { - Self { - curve_id: value.curve_id, - group_op: value.group_op, - left_input: value.left_input, - right_input: value.right_input, - expected_point: value.expected_point, - expected_ret: value.expected_ret, - } - } -} -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct CurveMultiscalarMultiplicationOriginal { - pub curve_id: u64, - pub scalars: Vec<[u8; 32]>, - pub points: Vec<[u8; 32]>, - pub expected_point: [u8; 32], - pub expected_ret: u64, -} #[derive(Clone, Debug, Serialize, Deserialize)] pub struct CurveMultiscalarMultiplication { pub curve_id: u64, @@ -196,24 +108,6 @@ pub struct CurveMultiscalarMultiplication { pub expected_point: [u8; 32], pub expected_ret: u64, } -impl From for CurveMultiscalarMultiplication { - fn from(value: CurveMultiscalarMultiplicationOriginal) -> Self { - Self { - curve_id: value.curve_id, - scalars: value.scalars, - points: value.points, - expected_point: value.expected_point, - expected_ret: value.expected_ret, - } - } -} -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SyscallAltBn128Original { - pub group_op: u64, - pub input: Vec, - pub expected_result: Vec, - pub expected_ret: u64, -} #[derive(Clone, Debug, Serialize, Deserialize)] pub struct SyscallAltBn128 { pub group_op: u64, @@ -221,23 +115,6 @@ pub struct SyscallAltBn128 { pub expected_result: Vec, pub expected_ret: u64, } -impl From for SyscallAltBn128 { - fn from(value: SyscallAltBn128Original) -> Self { - Self { - group_op: value.group_op, - input: value.input, - expected_result: value.expected_result, - expected_ret: value.expected_ret, - } - } -} -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct AltBn128CompressionOriginal { - pub group_op: u64, - pub input: Vec, - pub expected_result: Vec, - pub expected_ret: u64, -} #[derive(Clone, Debug, Serialize, Deserialize)] pub struct AltBn128Compression { pub group_op: u64, @@ -245,40 +122,22 @@ pub struct AltBn128Compression { pub expected_result: Vec, pub expected_ret: u64, } -impl From for AltBn128Compression { - fn from(value: AltBn128CompressionOriginal) -> Self { - Self { - group_op: value.group_op, - input: value.input, - expected_result: value.expected_result, - expected_ret: value.expected_ret, - } - } -} #[derive(Clone, Debug, Serialize, Deserialize)] pub enum TestCommand { ModifyAccount1(ModifyAccount1), CreateAccountAndModifySomeData1(CreateAccountAndModifySomeData1), - SolBigModExpOriginal(SolBigModExpOriginal), SolBigModExp(SolBigModExp), SolSecp256k1Recover(SolSecp256k1Recover), - SolSecp256k1RecoverOriginal(SolSecp256k1RecoverOriginal), Keccak256(Keccak256), - Sha256Original(Sha256Original), Sha256(Sha256), Blake3(Blake3), Poseidon(Poseidon), SetGetReturnData(SetGetReturnData), - CurvePointValidationOriginal(CurvePointValidationOriginal), CurvePointValidation(CurvePointValidation), - CurveGroupOpOriginal(CurveGroupOpOriginal), CurveGroupOp(CurveGroupOp), - CurveMultiscalarMultiplicationOriginal(CurveMultiscalarMultiplicationOriginal), CurveMultiscalarMultiplication(CurveMultiscalarMultiplication), - SyscallAltBn128Original(SyscallAltBn128Original), SyscallAltBn128(SyscallAltBn128), - AltBn128CompressionOriginal(AltBn128CompressionOriginal), AltBn128Compression(AltBn128Compression), } @@ -301,23 +160,15 @@ macro_rules! impl_from { impl_from!(ModifyAccount1); impl_from!(CreateAccountAndModifySomeData1); -impl_from!(SolBigModExpOriginal); impl_from!(SolBigModExp); -impl_from!(SolSecp256k1RecoverOriginal); impl_from!(SolSecp256k1Recover); impl_from!(Keccak256); -impl_from!(Sha256Original); impl_from!(Sha256); impl_from!(Blake3); impl_from!(Poseidon); impl_from!(SetGetReturnData); -impl_from!(CurvePointValidationOriginal); impl_from!(CurvePointValidation); -impl_from!(CurveGroupOpOriginal); impl_from!(CurveGroupOp); -impl_from!(CurveMultiscalarMultiplicationOriginal); impl_from!(CurveMultiscalarMultiplication); -impl_from!(SyscallAltBn128Original); impl_from!(SyscallAltBn128); -impl_from!(AltBn128CompressionOriginal); impl_from!(AltBn128Compression); diff --git a/crates/svm/Cargo.toml b/crates/svm/Cargo.toml index 8f84b7df4..3f237ddb3 100644 --- a/crates/svm/Cargo.toml +++ b/crates/svm/Cargo.toml @@ -76,7 +76,6 @@ std = [ "itertools/use_std", "solana_rbpf/std", ] -enable-solana-original-builtins = [] debug-print = [] do-not-validate-elf-on-deploy = [] use-extended-debug-log = [] diff --git a/crates/svm/src/builtins.rs b/crates/svm/src/builtins.rs index e8916fffa..1fada5c9d 100644 --- a/crates/svm/src/builtins.rs +++ b/crates/svm/src/builtins.rs @@ -1,5 +1,3 @@ -#[cfg(feature = "enable-solana-original-builtins")] -use crate::common::Sha256HasherOriginal; use crate::{ alloc::string::ToString, big_mod_exp::{big_mod_exp, BigModExpParams}, @@ -10,14 +8,8 @@ use crate::{ hash::{SECP256K1_PUBLIC_KEY_LENGTH, SECP256K1_SIGNATURE_LENGTH}, loaders::syscalls::cpi::cpi_common, mem_ops::{ - is_nonoverlapping, - memcmp, - memmove, - translate_and_check_program_address_inputs, - translate_slice, - translate_slice_mut, - translate_string_and_do, - translate_type, + is_nonoverlapping, memcmp, memmove, translate_and_check_program_address_inputs, + translate_slice, translate_slice_mut, translate_string_and_do, translate_type, translate_type_mut, }, word_size::{ @@ -33,11 +25,8 @@ use itertools::Itertools; use solana_bn254::{ compression::prelude::convert_endianness, prelude::{ - alt_bn128_multiplication, - alt_bn128_pairing, - ALT_BN128_ADDITION_OUTPUT_LEN, - ALT_BN128_MULTIPLICATION_OUTPUT_LEN, - ALT_BN128_PAIRING_OUTPUT_LEN, + alt_bn128_multiplication, alt_bn128_pairing, ALT_BN128_ADDITION_OUTPUT_LEN, + ALT_BN128_MULTIPLICATION_OUTPUT_LEN, ALT_BN128_PAIRING_OUTPUT_LEN, }, target_arch::alt_bn128_addition, AltBn128Error, @@ -114,108 +103,30 @@ pub fn register_builtins( .register_function_hashed("sol_invoke_signed_rust", SyscallInvokeSignedRust::vm) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_secp256k1_recover_original", - SyscallSecp256k1RecoverOriginal::vm, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_secp256k1_recover_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed("sol_secp256k1_recover", SyscallSecp256k1Recover::vm) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_curve_group_op_original", - SyscallCurveGroupOpsOriginal::vm, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_curve_group_op_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed("sol_curve_group_op", SyscallCurveGroupOps::vm) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_curve_multiscalar_mul_original", - SyscallCurveMultiscalarMultiplicationOriginal::vm, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_curve_multiscalar_mul_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed( "sol_curve_multiscalar_mul", SyscallCurveMultiscalarMultiplication::vm, ) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_curve_validate_point_original", - SyscallCurvePointValidationOriginal::vm, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_curve_validate_point_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed("sol_curve_validate_point", SyscallCurvePointValidation::vm) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_alt_bn128_group_op_original", - SyscallAltBn128Original::vm, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_alt_bn128_group_op_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed("sol_alt_bn128_group_op", SyscallAltBn128::vm) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_alt_bn128_compression_original", - SyscallAltBn128CompressionOriginal::vm, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_alt_bn128_compression_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed("sol_alt_bn128_compression", SyscallAltBn128Compression::vm) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed( - "sol_sha256_original", - SyscallHash::vm::, - ) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_sha256_original", SyscallStub::vm) - .unwrap(); - function_registry .register_function_hashed("sol_sha256", SyscallHash::vm::>) .unwrap(); @@ -229,14 +140,6 @@ pub fn register_builtins( .register_function_hashed("sol_blake3", SyscallHash::vm::>) .unwrap(); - #[cfg(feature = "enable-solana-original-builtins")] - function_registry - .register_function_hashed("sol_big_mod_exp_original", SyscallBigModExpOriginal::vm) - .unwrap(); - #[cfg(not(feature = "enable-solana-original-builtins"))] - function_registry - .register_function_hashed("sol_big_mod_exp_original", SyscallStub::vm) - .unwrap(); function_registry .register_function_hashed("sol_big_mod_exp", SyscallBigModExp::vm) .unwrap(); diff --git a/e2e/Cargo.toml b/e2e/Cargo.toml index f6b21efa0..1d98457fb 100644 --- a/e2e/Cargo.toml +++ b/e2e/Cargo.toml @@ -52,11 +52,6 @@ default = [ "wasmtime", # "debug-print", "enable-svm", - # when enabling enable-solana-* - enable corresponding in 'contracts' crate - # "enable-solana-original-builtins", -] -enable-solana-original-builtins = [ - "fluentbase-svm/enable-solana-original-builtins" ] enable-svm = [ "fluentbase-genesis/enable-svm", diff --git a/e2e/src/svm.rs b/e2e/src/svm.rs index 22d8cb06a..5a8269536 100644 --- a/e2e/src/svm.rs +++ b/e2e/src/svm.rs @@ -34,13 +34,10 @@ mod tests { use fluentbase_svm_shared::{ bincode_helpers::serialize, test_structs::{ - AltBn128Compression, AltBn128CompressionOriginal, Blake3, - CreateAccountAndModifySomeData1, CurveGroupOp, CurveGroupOpOriginal, - CurveMultiscalarMultiplication, CurveMultiscalarMultiplicationOriginal, - CurvePointValidation, CurvePointValidationOriginal, Keccak256, Poseidon, - SetGetReturnData, Sha256, Sha256Original, SolBigModExp, SolBigModExpOriginal, - SolSecp256k1Recover, SolSecp256k1RecoverOriginal, SyscallAltBn128, - SyscallAltBn128Original, TestCommand, EXPECTED_RET_ERR, EXPECTED_RET_OK, + AltBn128Compression, Blake3, CreateAccountAndModifySomeData1, CurveGroupOp, + CurveMultiscalarMultiplication, CurvePointValidation, Keccak256, Poseidon, + SetGetReturnData, Sha256, SolBigModExp, SolSecp256k1Recover, SyscallAltBn128, + TestCommand, EXPECTED_RET_ERR, EXPECTED_RET_OK, }, }; use fluentbase_types::{ @@ -326,96 +323,78 @@ mod tests { // exec let mut test_commands: Vec = default!(); - let test_case_original = SolBigModExpOriginal::from_hex( + let test_case = SolBigModExp::from_hex( "1111111111111111111111111111111111111111111111111111111111111111", "1111111111111111111111111111111111111111111111111111111111111111", "111111111111111111111111111111111111111111111111111111111111110A", "0A7074864588D6847F33A168209E516F60005A0CEC3F33AAF70E8002FE964BCD", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "2222222222222222222222222222222222222222222222222222222222222222", "2222222222222222222222222222222222222222222222222222222222222222", "1111111111111111111111111111111111111111111111111111111111111111", "0000000000000000000000000000000000000000000000000000000000000000", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "3333333333333333333333333333333333333333333333333333333333333333", "3333333333333333333333333333333333333333333333333333333333333333", "2222222222222222222222222222222222222222222222222222222222222222", "1111111111111111111111111111111111111111111111111111111111111111", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "9874231472317432847923174392874918237439287492374932871937289719", "0948403985401232889438579475812347232099080051356165126166266222", "25532321a214321423124212222224222b242222222222222222222222222444", "220ECE1C42624E98AEE7EB86578B2FE5C4855DFFACCB43CCBB708A3AB37F184D", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "3494396663463663636363662632666565656456646566786786676786768766", "2324324333246536456354655645656616169896565698987033121934984955", "0218305479243590485092843590249879879842313131156656565565656566", "012F2865E8B9E79B645FCE3A9E04156483AE1F9833F6BFCF86FCA38FC2D5BEF0", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000005", "0000000000000000000000000000000000000000000000000000000000000002", "0000000000000000000000000000000000000000000000000000000000000007", "0000000000000000000000000000000000000000000000000000000000000004", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000064", "0000000000000000000000000000000000000000000000000000000000000019", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000000", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = SolBigModExpOriginal::from_hex( + test_commands.push(>::from(test_case).into()); + let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000001", "0000000000000000000000000000000000000000000000000000000000000000", 0, ); - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); process_test_commands( &mut ctx, @@ -447,7 +426,7 @@ mod tests { let mut test_commands: Vec = vec![]; - let original_test_case = SolSecp256k1RecoverOriginal { + let test_case = SolSecp256k1Recover { message: b"hello world".to_vec(), signature_bytes: vec![ 0x93, 0x92, 0xC4, 0x6C, 0x42, 0xF6, 0x31, 0x73, 0x81, 0xD4, 0xB2, 0x44, 0xE9, 0x2F, @@ -466,14 +445,12 @@ mod tests { ], expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(original_test_case.clone().into()); let fluent_test_case = SolSecp256k1Recover { - message: original_test_case.message, - signature_bytes: original_test_case.signature_bytes, - recovery_id: original_test_case.recovery_id, - pubkey_bytes: original_test_case.pubkey_bytes, - expected_ret: original_test_case.expected_ret, + message: test_case.message, + signature_bytes: test_case.signature_bytes, + recovery_id: test_case.recovery_id, + pubkey_bytes: test_case.pubkey_bytes, + expected_ret: test_case.expected_ret, }; test_commands.push(fluent_test_case.into()); @@ -543,16 +520,14 @@ mod tests { // exec let mut test_commands: Vec = vec![]; - let original_test_case = Sha256Original { + let test_case = Sha256 { data: vec![vec![1u8, 2, 3], vec![4, 5, 6]], expected_result: hex!( "7192385c3c0605de55bb9476ce1d90748190ecb32a8eed7f5207b30cf6a1fe89" ), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(original_test_case.clone().into()); - test_commands.push(>::from(original_test_case).into()); + test_commands.push(>::from(test_case).into()); process_test_commands( &mut ctx, @@ -979,15 +954,13 @@ mod tests { // exec let mut test_commands: Vec = default!(); - let test_case_original = CurvePointValidationOriginal { + let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, point: ED25519_BASEPOINT_POINT.compress().as_bytes().clone(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = CurvePointValidationOriginal { + test_commands.push(>::from(test_case).into()); + let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, point: [ 120, 140, 152, 233, 41, 227, 203, 27, 87, 115, 25, 251, 219, 5, 84, 148, 117, 38, @@ -995,18 +968,14 @@ mod tests { ], expected_ret: EXPECTED_RET_ERR, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = CurvePointValidationOriginal { + test_commands.push(>::from(test_case).into()); + let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, point: RISTRETTO_BASEPOINT_POINT.compress().as_bytes().clone(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = CurvePointValidationOriginal { + test_commands.push(>::from(test_case).into()); + let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, point: [ 120, 140, 152, 233, 41, 227, 203, 27, 87, 115, 25, 251, 219, 5, 84, 148, 117, 38, @@ -1014,9 +983,7 @@ mod tests { ], expected_ret: EXPECTED_RET_ERR, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); process_test_commands( &mut ctx, @@ -1057,7 +1024,7 @@ mod tests { ]); assert_eq!(add_edwards(&point, &identity).unwrap(), point); assert_eq!(subtract_edwards(&point, &identity).unwrap(), point); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, left_input: point.0, @@ -1065,11 +1032,9 @@ mod tests { expected_point: point.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::SUB, left_input: point.0, @@ -1077,9 +1042,7 @@ mod tests { expected_point: point.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); let scalar: [u8; 32] = [ 254, 198, 23, 138, 67, 243, 184, 110, 236, 115, 236, 205, 205, 215, 79, 114, 45, 250, @@ -1093,7 +1056,7 @@ mod tests { 64, 150, 40, 55, 80, 49, 217, 209, 105, 229, 181, 65, 241, 68, 2, 106, 220, 234, 211, 71, 159, 76, 156, 114, 242, 68, 147, 31, 243, 211, 191, 124, ]; - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::MUL, left_input: scalar, @@ -1101,9 +1064,7 @@ mod tests { expected_point, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // associativity cases let point_a = PodEdwardsPoint([ @@ -1122,7 +1083,7 @@ mod tests { add_edwards(&add_edwards(&point_a, &point_b).unwrap(), &point_c), add_edwards(&point_a, &add_edwards(&point_b, &point_c).unwrap()), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { // a + b curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1131,10 +1092,8 @@ mod tests { expected_point: add_edwards(&point_a, &point_b).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = CurveGroupOpOriginal { + test_commands.push(>::from(test_case).into()); + let test_case = CurveGroupOp { // (a + b) + c curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1145,11 +1104,9 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { // b + c curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1158,11 +1115,9 @@ mod tests { expected_point: add_edwards(&point_b, &point_c).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { // a + (b + c) curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1173,11 +1128,9 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { // (a + b) + c = a + (b + c) curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1188,16 +1141,14 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // commutativity assert_eq!( add_edwards(&point_a, &point_b).unwrap(), add_edwards(&point_b, &point_a).unwrap(), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { // a + b = b + a curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1206,10 +1157,8 @@ mod tests { expected_point: add_edwards(&point_b, &point_a).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); - let test_case_original = CurveGroupOpOriginal { + test_commands.push(>::from(test_case).into()); + let test_case = CurveGroupOp { // b + a = a + b curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::ADD, @@ -1218,15 +1167,13 @@ mod tests { expected_point: add_edwards(&point_a, &point_b).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // subtraction let point = PodEdwardsPoint(ED25519_BASEPOINT_POINT.compress().to_bytes()); let point_negated = PodEdwardsPoint((-ED25519_BASEPOINT_POINT).compress().to_bytes()); assert_eq!(point_negated, subtract_edwards(&identity, &point).unwrap(),); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, group_op: solana_curve25519::curve_syscall_traits::SUB, left_input: identity.0, @@ -1234,9 +1181,7 @@ mod tests { expected_point: point_negated.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // RISTRETTO // identity @@ -1246,7 +1191,7 @@ mod tests { 232, 229, 220, 249, 213, 232, 61, 238, 152, 249, 83, 225, 206, 16, ]); assert_eq!(add_ristretto(&point, &identity).unwrap(), point); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::ADD, left_input: point.0, @@ -1254,11 +1199,9 @@ mod tests { expected_point: add_ristretto(&point, &identity).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); assert_eq!(subtract_ristretto(&point, &identity).unwrap(), point); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::SUB, left_input: point.0, @@ -1266,9 +1209,7 @@ mod tests { expected_point: subtract_ristretto(&point, &identity).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // associativity let point_a = PodRistrettoPoint([ @@ -1287,7 +1228,7 @@ mod tests { add_ristretto(&add_ristretto(&point_a, &point_b).unwrap(), &point_c), add_ristretto(&point_a, &add_ristretto(&point_b, &point_c).unwrap()), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::ADD, left_input: add_ristretto(&point_a, &point_b).unwrap().0, @@ -1297,14 +1238,12 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); assert_eq!( subtract_ristretto(&subtract_ristretto(&point_a, &point_b).unwrap(), &point_c), subtract_ristretto(&point_a, &add_ristretto(&point_b, &point_c).unwrap()), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::SUB, left_input: subtract_ristretto(&point_a, &point_b).unwrap().0, @@ -1317,16 +1256,14 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // commutativity assert_eq!( add_ristretto(&point_a, &point_b).unwrap(), add_ristretto(&point_b, &point_a).unwrap(), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::ADD, left_input: point_a.0, @@ -1334,9 +1271,7 @@ mod tests { expected_point: add_ristretto(&point_b, &point_a).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); // subtraction let point = PodRistrettoPoint(RISTRETTO_BASEPOINT_POINT.compress().to_bytes()); @@ -1345,7 +1280,7 @@ mod tests { point_negated, subtract_ristretto(&identity, &point).unwrap(), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::SUB, left_input: identity.0, @@ -1353,9 +1288,7 @@ mod tests { expected_point: point_negated.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); let scalar_x = PodScalar([ 254, 198, 23, 138, 67, 243, 184, 110, 236, 115, 236, 205, 205, 215, 79, 114, 45, 250, @@ -1375,7 +1308,7 @@ mod tests { add_ristretto(&ax, &bx), multiply_ristretto(&scalar_x, &add_ristretto(&point_a, &point_b).unwrap()), ); - let test_case_original = CurveGroupOpOriginal { + let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, group_op: solana_curve25519::curve_syscall_traits::MUL, left_input: scalar_x.0, @@ -1383,9 +1316,7 @@ mod tests { expected_point: add_ristretto(&ax, &bx).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); process_test_commands( &mut ctx, @@ -1428,17 +1359,14 @@ mod tests { let basic_product = multiply_edwards(&scalar, &point).unwrap(); let msm_product = multiscalar_multiply_edwards(&[scalar], &[point]).unwrap(); assert_eq!(basic_product, msm_product); - let test_case_original = CurveMultiscalarMultiplicationOriginal { + let test_case = CurveMultiscalarMultiplication { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, scalars: vec![scalar.0], points: vec![point.0], expected_point: basic_product.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands - .push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); let scalar_a = PodScalar([ 246, 154, 34, 110, 31, 185, 50, 1, 252, 194, 163, 56, 211, 18, 101, 192, 57, 225, 207, @@ -1462,17 +1390,15 @@ mod tests { let msm_product = multiscalar_multiply_edwards(&[scalar_a, scalar_b], &[point_x, point_y]).unwrap(); assert_eq!(basic_product, msm_product); - let test_case_original = CurveMultiscalarMultiplicationOriginal { + let test_case = CurveMultiscalarMultiplication { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, scalars: vec![scalar_a.0, scalar_b.0], points: vec![point_x.0, point_y.0], expected_point: basic_product.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands - .push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let scalar = PodScalar([ 123, 108, 109, 66, 154, 185, 88, 122, 178, 43, 17, 154, 201, 223, 31, 238, 59, 215, 71, @@ -1485,17 +1411,15 @@ mod tests { let basic_product = multiply_ristretto(&scalar, &point).unwrap(); let msm_product = multiscalar_multiply_ristretto(&[scalar], &[point]).unwrap(); assert_eq!(basic_product, msm_product); - let test_case_original = CurveMultiscalarMultiplicationOriginal { + let test_case = CurveMultiscalarMultiplication { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, scalars: vec![scalar.0], points: vec![point.0], expected_point: basic_product.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands - .push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let scalar_a = PodScalar([ 8, 161, 219, 155, 192, 137, 153, 26, 27, 40, 30, 17, 124, 194, 26, 41, 32, 7, 161, 45, @@ -1519,17 +1443,15 @@ mod tests { let msm_product = multiscalar_multiply_ristretto(&[scalar_a, scalar_b], &[point_x, point_y]).unwrap(); assert_eq!(basic_product, msm_product); - let test_case_original = CurveMultiscalarMultiplicationOriginal { + let test_case = CurveMultiscalarMultiplication { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, scalars: vec![scalar_a.0, scalar_b.0], points: vec![point_x.0, point_y.0], expected_point: basic_product.0, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands - .push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); process_test_commands( &mut ctx, @@ -1649,16 +1571,14 @@ mod tests { assert_eq!(result.unwrap(), expected); - let test_case_original = SyscallAltBn128Original { + let test_case = SyscallAltBn128 { group_op: ALT_BN128_ADD, input: input.clone(), expected_result: expected, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + test_commands.push(>::from(test_case).into()); }); process_test_commands( @@ -1821,15 +1741,14 @@ mod tests { assert_eq!(result.unwrap(), expected); - let test_case_original = SyscallAltBn128Original { + let test_case = SyscallAltBn128 { group_op: ALT_BN128_MUL, input: input.clone(), expected_result: expected, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); }); process_test_commands( @@ -1965,15 +1884,14 @@ mod tests { assert_eq!(result.unwrap(), expected); - let test_case_original = SyscallAltBn128Original { + let test_case = SyscallAltBn128 { group_op: ALT_BN128_PAIRING, input: input.clone(), expected_result: expected, expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); }); process_test_commands( @@ -2043,15 +1961,14 @@ mod tests { ); assert_eq!(decompressed, *g1_be); - let test_case_original = AltBn128CompressionOriginal { + let test_case = AltBn128Compression { group_op: ALT_BN128_G1_COMPRESS, input: decompressed.to_vec(), expected_result: compressed_ref.to_vec(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let syscall_decompressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2065,15 +1982,14 @@ mod tests { convert_endianness_fixed::<32, 64>(&syscall_decompressed.try_into().unwrap(),) ); - let test_case_original = AltBn128CompressionOriginal { + let test_case = AltBn128Compression { group_op: ALT_BN128_G1_DECOMPRESS, input: compressed_ref.to_vec(), expected_result: decompressed.to_vec(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let syscall_compressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2158,15 +2074,14 @@ mod tests { ); assert_eq!(decompressed, *g2_be); - let test_case_original = AltBn128CompressionOriginal { + let test_case = AltBn128Compression { group_op: ALT_BN128_G2_COMPRESS, input: decompressed.to_vec(), expected_result: alt_bn128_g2_compress(&decompressed).unwrap().to_vec(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let syscall_decompressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2180,15 +2095,14 @@ mod tests { convert_endianness_fixed::<64, 128>(&syscall_decompressed.try_into().unwrap(),) ); - let test_case_original = AltBn128CompressionOriginal { + let test_case = AltBn128Compression { group_op: ALT_BN128_G2_DECOMPRESS, input: alt_bn128_g2_compress(&decompressed).unwrap().to_vec(), expected_result: decompressed.to_vec(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let syscall_compressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2257,29 +2171,27 @@ mod tests { let g1_compressed = alt_bn128_g1_compress(&g1).unwrap(); assert_eq!(g1, alt_bn128_g1_decompress(&g1_compressed).unwrap()); - let test_case_original = AltBn128CompressionOriginal { + let test_case = AltBn128Compression { group_op: ALT_BN128_G1_DECOMPRESS, input: g1_compressed.to_vec(), expected_result: g1.to_vec(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); let g2 = input[64..192].to_vec(); let g2_compressed = alt_bn128_g2_compress(&g2).unwrap(); assert_eq!(g2, alt_bn128_g2_decompress(&g2_compressed).unwrap()); - let test_case_original = AltBn128CompressionOriginal { + let test_case = AltBn128Compression { group_op: ALT_BN128_G2_DECOMPRESS, input: g2_compressed.to_vec(), expected_result: g2.to_vec(), expected_ret: EXPECTED_RET_OK, }; - #[cfg(feature = "enable-solana-original-builtins")] - test_commands.push(test_case_original.clone().into()); - test_commands.push(>::from(test_case_original).into()); + + test_commands.push(>::from(test_case).into()); }); process_test_commands( From a2677e3ccca78b0c1374bb23c64420caff0ecab5 Mon Sep 17 00:00:00 2001 From: bfdays Date: Fri, 8 Aug 2025 14:52:22 +0700 Subject: [PATCH 2/3] feat(svm): remove 'from' transformation from svm tests --- e2e/src/svm.rs | 90 +++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/e2e/src/svm.rs b/e2e/src/svm.rs index 5a8269536..768731437 100644 --- a/e2e/src/svm.rs +++ b/e2e/src/svm.rs @@ -330,7 +330,7 @@ mod tests { "0A7074864588D6847F33A168209E516F60005A0CEC3F33AAF70E8002FE964BCD", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "2222222222222222222222222222222222222222222222222222222222222222", "2222222222222222222222222222222222222222222222222222222222222222", @@ -338,7 +338,7 @@ mod tests { "0000000000000000000000000000000000000000000000000000000000000000", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "3333333333333333333333333333333333333333333333333333333333333333", "3333333333333333333333333333333333333333333333333333333333333333", @@ -346,7 +346,7 @@ mod tests { "1111111111111111111111111111111111111111111111111111111111111111", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "9874231472317432847923174392874918237439287492374932871937289719", "0948403985401232889438579475812347232099080051356165126166266222", @@ -354,7 +354,7 @@ mod tests { "220ECE1C42624E98AEE7EB86578B2FE5C4855DFFACCB43CCBB708A3AB37F184D", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "3494396663463663636363662632666565656456646566786786676786768766", "2324324333246536456354655645656616169896565698987033121934984955", @@ -362,7 +362,7 @@ mod tests { "012F2865E8B9E79B645FCE3A9E04156483AE1F9833F6BFCF86FCA38FC2D5BEF0", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000005", "0000000000000000000000000000000000000000000000000000000000000002", @@ -370,7 +370,7 @@ mod tests { "0000000000000000000000000000000000000000000000000000000000000004", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000019", @@ -378,7 +378,7 @@ mod tests { "0000000000000000000000000000000000000000000000000000000000000019", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000019", @@ -386,7 +386,7 @@ mod tests { "0000000000000000000000000000000000000000000000000000000000000000", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = SolBigModExp::from_hex( "0000000000000000000000000000000000000000000000000000000000000019", "0000000000000000000000000000000000000000000000000000000000000019", @@ -394,7 +394,7 @@ mod tests { "0000000000000000000000000000000000000000000000000000000000000000", 0, ); - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); process_test_commands( &mut ctx, @@ -527,7 +527,7 @@ mod tests { ), expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); process_test_commands( &mut ctx, @@ -959,7 +959,7 @@ mod tests { point: ED25519_BASEPOINT_POINT.compress().as_bytes().clone(), expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, point: [ @@ -968,13 +968,13 @@ mod tests { ], expected_ret: EXPECTED_RET_ERR, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, point: RISTRETTO_BASEPOINT_POINT.compress().as_bytes().clone(), expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurvePointValidation { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, point: [ @@ -983,7 +983,7 @@ mod tests { ], expected_ret: EXPECTED_RET_ERR, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); process_test_commands( &mut ctx, @@ -1032,7 +1032,7 @@ mod tests { expected_point: point.0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, @@ -1042,7 +1042,7 @@ mod tests { expected_point: point.0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let scalar: [u8; 32] = [ 254, 198, 23, 138, 67, 243, 184, 110, 236, 115, 236, 205, 205, 215, 79, 114, 45, 250, @@ -1064,7 +1064,7 @@ mod tests { expected_point, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // associativity cases let point_a = PodEdwardsPoint([ @@ -1092,7 +1092,7 @@ mod tests { expected_point: add_edwards(&point_a, &point_b).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurveGroupOp { // (a + b) + c curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, @@ -1104,7 +1104,7 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurveGroupOp { // b + c @@ -1115,7 +1115,7 @@ mod tests { expected_point: add_edwards(&point_b, &point_c).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurveGroupOp { // a + (b + c) @@ -1128,7 +1128,7 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurveGroupOp { // (a + b) + c = a + (b + c) @@ -1141,7 +1141,7 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // commutativity assert_eq!( @@ -1157,7 +1157,7 @@ mod tests { expected_point: add_edwards(&point_b, &point_a).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let test_case = CurveGroupOp { // b + a = a + b curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_EDWARDS, @@ -1167,7 +1167,7 @@ mod tests { expected_point: add_edwards(&point_a, &point_b).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // subtraction let point = PodEdwardsPoint(ED25519_BASEPOINT_POINT.compress().to_bytes()); @@ -1181,7 +1181,7 @@ mod tests { expected_point: point_negated.0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // RISTRETTO // identity @@ -1199,7 +1199,7 @@ mod tests { expected_point: add_ristretto(&point, &identity).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); assert_eq!(subtract_ristretto(&point, &identity).unwrap(), point); let test_case = CurveGroupOp { curve_id: solana_curve25519::curve_syscall_traits::CURVE25519_RISTRETTO, @@ -1209,7 +1209,7 @@ mod tests { expected_point: subtract_ristretto(&point, &identity).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // associativity let point_a = PodRistrettoPoint([ @@ -1238,7 +1238,7 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); assert_eq!( subtract_ristretto(&subtract_ristretto(&point_a, &point_b).unwrap(), &point_c), subtract_ristretto(&point_a, &add_ristretto(&point_b, &point_c).unwrap()), @@ -1256,7 +1256,7 @@ mod tests { .0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // commutativity assert_eq!( @@ -1271,7 +1271,7 @@ mod tests { expected_point: add_ristretto(&point_b, &point_a).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); // subtraction let point = PodRistrettoPoint(RISTRETTO_BASEPOINT_POINT.compress().to_bytes()); @@ -1288,7 +1288,7 @@ mod tests { expected_point: point_negated.0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let scalar_x = PodScalar([ 254, 198, 23, 138, 67, 243, 184, 110, 236, 115, 236, 205, 205, 215, 79, 114, 45, 250, @@ -1316,7 +1316,7 @@ mod tests { expected_point: add_ristretto(&ax, &bx).unwrap().0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); process_test_commands( &mut ctx, @@ -1366,7 +1366,7 @@ mod tests { expected_point: basic_product.0, expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let scalar_a = PodScalar([ 246, 154, 34, 110, 31, 185, 50, 1, 252, 194, 163, 56, 211, 18, 101, 192, 57, 225, 207, @@ -1398,7 +1398,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let scalar = PodScalar([ 123, 108, 109, 66, 154, 185, 88, 122, 178, 43, 17, 154, 201, 223, 31, 238, 59, 215, 71, @@ -1419,7 +1419,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let scalar_a = PodScalar([ 8, 161, 219, 155, 192, 137, 153, 26, 27, 40, 30, 17, 124, 194, 26, 41, 32, 7, 161, 45, @@ -1451,7 +1451,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); process_test_commands( &mut ctx, @@ -1578,7 +1578,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); }); process_test_commands( @@ -1748,7 +1748,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); }); process_test_commands( @@ -1891,7 +1891,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); }); process_test_commands( @@ -1968,7 +1968,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let syscall_decompressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -1989,7 +1989,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let syscall_compressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2081,7 +2081,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let syscall_decompressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2102,7 +2102,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let syscall_compressed = SyscallWeierstrassCompressDecompressAssign::::fn_impl( &convert_endianness_fixed::< @@ -2178,7 +2178,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); let g2 = input[64..192].to_vec(); let g2_compressed = alt_bn128_g2_compress(&g2).unwrap(); @@ -2191,7 +2191,7 @@ mod tests { expected_ret: EXPECTED_RET_OK, }; - test_commands.push(>::from(test_case).into()); + test_commands.push(test_case.into()); }); process_test_commands( From b1f2dd5b9c323fd5bc9819d14255affaab75db53 Mon Sep 17 00:00:00 2001 From: bfdays Date: Fri, 8 Aug 2025 15:31:41 +0700 Subject: [PATCH 3/3] feat(svm): renamings for consistency --- crates/runtime/src/context_wrapper.rs | 59 +++++++---------- crates/runtime/src/instruction.rs | 65 +++++++++---------- ...wards_add.rs => curve25519_edwards_add.rs} | 15 ++--- ...curve25519_edwards_decompress_validate.rs} | 6 +- ...wards_mul.rs => curve25519_edwards_mul.rs} | 13 ++-- ... => curve25519_edwards_multiscalar_mul.rs} | 13 ++-- ...wards_sub.rs => curve25519_edwards_sub.rs} | 15 ++--- ...tto_add.rs => curve25519_ristretto_add.rs} | 15 ++--- ...rve25519_ristretto_decompress_validate.rs} | 6 +- ...tto_mul.rs => curve25519_ristretto_mul.rs} | 13 ++-- ...> curve25519_ristretto_multiscalar_mul.rs} | 13 ++-- ...tto_sub.rs => curve25519_ristretto_sub.rs} | 15 ++--- 12 files changed, 113 insertions(+), 135 deletions(-) rename crates/runtime/src/instruction/{ed25519_edwards_add.rs => curve25519_edwards_add.rs} (72%) rename crates/runtime/src/instruction/{ed25519_edwards_decompress_validate.rs => curve25519_edwards_decompress_validate.rs} (87%) rename crates/runtime/src/instruction/{ed25519_edwards_mul.rs => curve25519_edwards_mul.rs} (77%) rename crates/runtime/src/instruction/{ed25519_edwards_multiscalar_mul.rs => curve25519_edwards_multiscalar_mul.rs} (87%) rename crates/runtime/src/instruction/{ed25519_edwards_sub.rs => curve25519_edwards_sub.rs} (72%) rename crates/runtime/src/instruction/{ed25519_ristretto_add.rs => curve25519_ristretto_add.rs} (72%) rename crates/runtime/src/instruction/{ed25519_ristretto_decompress_validate.rs => curve25519_ristretto_decompress_validate.rs} (85%) rename crates/runtime/src/instruction/{ed25519_ristretto_mul.rs => curve25519_ristretto_mul.rs} (76%) rename crates/runtime/src/instruction/{ed25519_ristretto_multiscalar_mul.rs => curve25519_ristretto_multiscalar_mul.rs} (87%) rename crates/runtime/src/instruction/{ed25519_ristretto_sub.rs => curve25519_ristretto_sub.rs} (72%) diff --git a/crates/runtime/src/context_wrapper.rs b/crates/runtime/src/context_wrapper.rs index 47272b180..7321d8f0c 100644 --- a/crates/runtime/src/context_wrapper.rs +++ b/crates/runtime/src/context_wrapper.rs @@ -3,17 +3,17 @@ use crate::{ blake3::SyscallBlake3, charge_fuel::SyscallChargeFuel, charge_fuel_manually::SyscallChargeFuelManually, + curve25519_edwards_add::SyscallCurve25519EdwardsAdd, + curve25519_edwards_decompress_validate::SyscallCurve25519EdwardsDecompressValidate, + curve25519_edwards_mul::SyscallCurve25519EdwardsMul, + curve25519_edwards_multiscalar_mul::SyscallCurve25519EdwardsMultiscalarMul, + curve25519_edwards_sub::SyscallCurve25519EdwardsSub, + curve25519_ristretto_add::SyscallCurve25519RistrettoAdd, + curve25519_ristretto_decompress_validate::SyscallCurve25519RistrettoDecompressValidate, + curve25519_ristretto_mul::SyscallCurve25519RistrettoMul, + curve25519_ristretto_multiscalar_mul::SyscallCurve25519RistrettoMultiscalarMul, + curve25519_ristretto_sub::SyscallCurve25519RistrettoSub, debug_log::SyscallDebugLog, - ed25519_edwards_add::SyscallED25519EdwardsAdd, - ed25519_edwards_decompress_validate::SyscallED25519EdwardsDecompressValidate, - ed25519_edwards_mul::SyscallED25519EdwardsMul, - ed25519_edwards_multiscalar_mul::SyscallED25519EdwardsMultiscalarMul, - ed25519_edwards_sub::SyscallED25519EdwardsSub, - ed25519_ristretto_add::SyscallED25519RistrettoAdd, - ed25519_ristretto_decompress_validate::SyscallED25519RistrettoDecompressValidate, - ed25519_ristretto_mul::SyscallED25519RistrettoMul, - ed25519_ristretto_multiscalar_mul::SyscallED25519RistrettoMultiscalarMul, - ed25519_ristretto_sub::SyscallED25519RistrettoSub, exec::SyscallExec, exit::SyscallExit, forward_output::SyscallForwardOutput, @@ -35,10 +35,7 @@ use crate::{ state::SyscallState, weierstrass_add::SyscallWeierstrassAddAssign, weierstrass_compress_decompress::{ - ConfigG1Compress, - ConfigG1Decompress, - ConfigG2Compress, - ConfigG2Decompress, + ConfigG1Compress, ConfigG1Decompress, ConfigG2Compress, ConfigG2Decompress, SyscallWeierstrassCompressDecompressAssign, }, weierstrass_double::SyscallWeierstrassDoubleAssign, @@ -50,17 +47,9 @@ use crate::{ RuntimeContext, }; use fluentbase_types::{ - bn254_add_common_impl, - native_api::NativeAPI, - BytecodeOrHash, - Bytes, - ExitCode, - UnwrapExitCode, - B256, - BN254_G1_POINT_COMPRESSED_SIZE, - BN254_G1_POINT_DECOMPRESSED_SIZE, - BN254_G2_POINT_COMPRESSED_SIZE, - BN254_G2_POINT_DECOMPRESSED_SIZE, + bn254_add_common_impl, native_api::NativeAPI, BytecodeOrHash, Bytes, ExitCode, UnwrapExitCode, + B256, BN254_G1_POINT_COMPRESSED_SIZE, BN254_G1_POINT_DECOMPRESSED_SIZE, + BN254_G2_POINT_COMPRESSED_SIZE, BN254_G2_POINT_DECOMPRESSED_SIZE, }; use sp1_curves::weierstrass::bn254::{Bn254, Bn254BaseField}; use std::{cell::RefCell, mem::take, rc::Rc}; @@ -99,23 +88,23 @@ impl NativeAPI for RuntimeContextWrapper { } fn ed25519_edwards_decompress_validate(p: &[u8; 32]) -> bool { - SyscallED25519EdwardsDecompressValidate::fn_impl(p).map_or_else(|_| false, |_| true) + SyscallCurve25519EdwardsDecompressValidate::fn_impl(p).map_or_else(|_| false, |_| true) } fn ed25519_edwards_add(p: &mut [u8; 32], q: &[u8; 32]) -> bool { - SyscallED25519EdwardsAdd::fn_impl(p, q).is_ok() + SyscallCurve25519EdwardsAdd::fn_impl(p, q).is_ok() } fn ed25519_edwards_sub(p: &mut [u8; 32], q: &[u8; 32]) -> bool { - SyscallED25519EdwardsSub::fn_impl(p, q).is_ok() + SyscallCurve25519EdwardsSub::fn_impl(p, q).is_ok() } fn ed25519_edwards_mul(p: &mut [u8; 32], q: &[u8; 32]) -> bool { - SyscallED25519EdwardsMul::fn_impl(p, q).is_ok() + SyscallCurve25519EdwardsMul::fn_impl(p, q).is_ok() } fn ed25519_edwards_multiscalar_mul(pairs: &[([u8; 32], [u8; 32])], out: &mut [u8; 32]) -> bool { - let result = SyscallED25519EdwardsMultiscalarMul::fn_impl(pairs); + let result = SyscallCurve25519EdwardsMultiscalarMul::fn_impl(pairs); match result { Ok(v) => { *out = v.compress().to_bytes(); @@ -126,25 +115,25 @@ impl NativeAPI for RuntimeContextWrapper { } fn ed25519_ristretto_decompress_validate(p: &[u8; 32]) -> bool { - SyscallED25519RistrettoDecompressValidate::fn_impl(p).map_or_else(|_| false, |_| true) + SyscallCurve25519RistrettoDecompressValidate::fn_impl(p).map_or_else(|_| false, |_| true) } fn ed25519_ristretto_add(p: &mut [u8; 32], q: &[u8; 32]) -> bool { - SyscallED25519RistrettoAdd::fn_impl(p, q).is_ok() + SyscallCurve25519RistrettoAdd::fn_impl(p, q).is_ok() } fn ed25519_ristretto_sub(p: &mut [u8; 32], q: &[u8; 32]) -> bool { - SyscallED25519RistrettoSub::fn_impl(p, q).is_ok() + SyscallCurve25519RistrettoSub::fn_impl(p, q).is_ok() } fn ed25519_ristretto_mul(p: &mut [u8; 32], q: &[u8; 32]) -> bool { - SyscallED25519RistrettoMul::fn_impl(p, q).is_ok() + SyscallCurve25519RistrettoMul::fn_impl(p, q).is_ok() } fn ed25519_ristretto_multiscalar_mul( pairs: &[([u8; 32], [u8; 32])], out: &mut [u8; 32], ) -> bool { - let result = SyscallED25519RistrettoMultiscalarMul::fn_impl(pairs); + let result = SyscallCurve25519RistrettoMultiscalarMul::fn_impl(pairs); match result { Ok(v) => { *out = v.compress().to_bytes(); diff --git a/crates/runtime/src/instruction.rs b/crates/runtime/src/instruction.rs index cbe2c1e06..b3702d2ac 100644 --- a/crates/runtime/src/instruction.rs +++ b/crates/runtime/src/instruction.rs @@ -1,17 +1,17 @@ pub mod blake3; pub mod charge_fuel; pub mod charge_fuel_manually; +pub mod curve25519_edwards_add; +pub mod curve25519_edwards_decompress_validate; +pub mod curve25519_edwards_mul; +pub mod curve25519_edwards_multiscalar_mul; +pub mod curve25519_edwards_sub; +pub mod curve25519_ristretto_add; +pub mod curve25519_ristretto_decompress_validate; +pub mod curve25519_ristretto_mul; +pub mod curve25519_ristretto_multiscalar_mul; +pub mod curve25519_ristretto_sub; pub mod debug_log; -pub mod ed25519_edwards_add; -pub mod ed25519_edwards_decompress_validate; -pub mod ed25519_edwards_mul; -pub mod ed25519_edwards_multiscalar_mul; -pub mod ed25519_edwards_sub; -pub mod ed25519_ristretto_add; -pub mod ed25519_ristretto_decompress_validate; -pub mod ed25519_ristretto_mul; -pub mod ed25519_ristretto_multiscalar_mul; -pub mod ed25519_ristretto_sub; pub mod ed_add; pub mod ed_decompress; pub mod exec; @@ -52,17 +52,17 @@ use crate::{ blake3::SyscallBlake3, charge_fuel::SyscallChargeFuel, charge_fuel_manually::SyscallChargeFuelManually, + curve25519_edwards_add::SyscallCurve25519EdwardsAdd, + curve25519_edwards_decompress_validate::SyscallCurve25519EdwardsDecompressValidate, + curve25519_edwards_mul::SyscallCurve25519EdwardsMul, + curve25519_edwards_multiscalar_mul::SyscallCurve25519EdwardsMultiscalarMul, + curve25519_edwards_sub::SyscallCurve25519EdwardsSub, + curve25519_ristretto_add::SyscallCurve25519RistrettoAdd, + curve25519_ristretto_decompress_validate::SyscallCurve25519RistrettoDecompressValidate, + curve25519_ristretto_mul::SyscallCurve25519RistrettoMul, + curve25519_ristretto_multiscalar_mul::SyscallCurve25519RistrettoMultiscalarMul, + curve25519_ristretto_sub::SyscallCurve25519RistrettoSub, debug_log::SyscallDebugLog, - ed25519_edwards_add::SyscallED25519EdwardsAdd, - ed25519_edwards_decompress_validate::SyscallED25519EdwardsDecompressValidate, - ed25519_edwards_mul::SyscallED25519EdwardsMul, - ed25519_edwards_multiscalar_mul::SyscallED25519EdwardsMultiscalarMul, - ed25519_edwards_sub::SyscallED25519EdwardsSub, - ed25519_ristretto_add::SyscallED25519RistrettoAdd, - ed25519_ristretto_decompress_validate::SyscallED25519RistrettoDecompressValidate, - ed25519_ristretto_mul::SyscallED25519RistrettoMul, - ed25519_ristretto_multiscalar_mul::SyscallED25519RistrettoMultiscalarMul, - ed25519_ristretto_sub::SyscallED25519RistrettoSub, ed_add::SyscallEdwardsAddAssign, ed_decompress::SyscallEdwardsDecompress, exec::SyscallExec, @@ -91,10 +91,7 @@ use crate::{ uint256_mul::SyscallUint256Mul, weierstrass_add::SyscallWeierstrassAddAssign, weierstrass_compress_decompress::{ - ConfigG1Compress, - ConfigG1Decompress, - ConfigG2Compress, - ConfigG2Decompress, + ConfigG1Compress, ConfigG1Decompress, ConfigG2Compress, ConfigG2Decompress, SyscallWeierstrassCompressDecompressAssign, }, weierstrass_decompress::SyscallWeierstrassDecompressAssign, @@ -150,16 +147,16 @@ pub fn invoke_runtime_handler( SysFuncIdx::POSEIDON => SyscallPoseidon::fn_handler(caller, params, result), SysFuncIdx::ED25519_ADD => SyscallEdwardsAddAssign::::fn_handler(caller, params, result), SysFuncIdx::ED25519_DECOMPRESS => SyscallEdwardsDecompress::::fn_handler(caller, params, result), - SysFuncIdx::ED25519_EDWARDS_DECOMPRESS_VALIDATE => SyscallED25519EdwardsDecompressValidate::fn_handler(caller, params, result), - SysFuncIdx::ED25519_EDWARDS_ADD => SyscallED25519EdwardsAdd::fn_handler(caller, params, result), - SysFuncIdx::ED25519_EDWARDS_SUB => SyscallED25519EdwardsSub::fn_handler(caller, params, result), - SysFuncIdx::ED25519_EDWARDS_MUL => SyscallED25519EdwardsMul::fn_handler(caller, params, result), - SysFuncIdx::ED25519_EDWARDS_MULTISCALAR_MUL => SyscallED25519EdwardsMultiscalarMul::fn_handler(caller, params, result), - SysFuncIdx::ED25519_RISTRETTO_DECOMPRESS_VALIDATE => SyscallED25519RistrettoDecompressValidate::fn_handler(caller, params, result), - SysFuncIdx::ED25519_RISTRETTO_ADD => SyscallED25519RistrettoAdd::fn_handler(caller, params, result), - SysFuncIdx::ED25519_RISTRETTO_SUB => SyscallED25519RistrettoSub::fn_handler(caller, params, result), - SysFuncIdx::ED25519_RISTRETTO_MUL => SyscallED25519RistrettoMul::fn_handler(caller, params, result), - SysFuncIdx::ED25519_RISTRETTO_MULTISCALAR_MUL => SyscallED25519RistrettoMultiscalarMul::fn_handler(caller, params, result), + SysFuncIdx::ED25519_EDWARDS_DECOMPRESS_VALIDATE => SyscallCurve25519EdwardsDecompressValidate::fn_handler(caller, params, result), + SysFuncIdx::ED25519_EDWARDS_ADD => SyscallCurve25519EdwardsAdd::fn_handler(caller, params, result), + SysFuncIdx::ED25519_EDWARDS_SUB => SyscallCurve25519EdwardsSub::fn_handler(caller, params, result), + SysFuncIdx::ED25519_EDWARDS_MUL => SyscallCurve25519EdwardsMul::fn_handler(caller, params, result), + SysFuncIdx::ED25519_EDWARDS_MULTISCALAR_MUL => SyscallCurve25519EdwardsMultiscalarMul::fn_handler(caller, params, result), + SysFuncIdx::ED25519_RISTRETTO_DECOMPRESS_VALIDATE => SyscallCurve25519RistrettoDecompressValidate::fn_handler(caller, params, result), + SysFuncIdx::ED25519_RISTRETTO_ADD => SyscallCurve25519RistrettoAdd::fn_handler(caller, params, result), + SysFuncIdx::ED25519_RISTRETTO_SUB => SyscallCurve25519RistrettoSub::fn_handler(caller, params, result), + SysFuncIdx::ED25519_RISTRETTO_MUL => SyscallCurve25519RistrettoMul::fn_handler(caller, params, result), + SysFuncIdx::ED25519_RISTRETTO_MULTISCALAR_MUL => SyscallCurve25519RistrettoMultiscalarMul::fn_handler(caller, params, result), SysFuncIdx::SECP256K1_RECOVER => SyscallSecp256k1Recover::fn_handler(caller, params, result), SysFuncIdx::SECP256K1_ADD => SyscallWeierstrassAddAssign::::fn_handler(caller, params, result), SysFuncIdx::SECP256K1_DECOMPRESS => SyscallWeierstrassDecompressAssign::::fn_handler(caller, params, result), diff --git a/crates/runtime/src/instruction/ed25519_edwards_add.rs b/crates/runtime/src/instruction/curve25519_edwards_add.rs similarity index 72% rename from crates/runtime/src/instruction/ed25519_edwards_add.rs rename to crates/runtime/src/instruction/curve25519_edwards_add.rs index e7d81769d..fb028d3e3 100644 --- a/crates/runtime/src/instruction/ed25519_edwards_add.rs +++ b/crates/runtime/src/instruction/curve25519_edwards_add.rs @@ -1,21 +1,20 @@ use crate::{ - instruction::ed25519_edwards_decompress_validate::SyscallED25519EdwardsDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_edwards_decompress_validate::SyscallCurve25519EdwardsDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::EdwardsPoint; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519EdwardsAdd {} +pub(crate) struct SyscallCurve25519EdwardsAdd {} -impl SyscallED25519EdwardsAdd { +impl SyscallCurve25519EdwardsAdd { pub const fn new() -> Self { Self {} } } -impl SyscallED25519EdwardsAdd { +impl SyscallCurve25519EdwardsAdd { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -41,8 +40,8 @@ impl SyscallED25519EdwardsAdd { } pub fn fn_impl(p: &[u8; 32], q: &[u8; 32]) -> Result { - let p = SyscallED25519EdwardsDecompressValidate::fn_impl(p)?; - let q = SyscallED25519EdwardsDecompressValidate::fn_impl(q)?; + let p = SyscallCurve25519EdwardsDecompressValidate::fn_impl(p)?; + let q = SyscallCurve25519EdwardsDecompressValidate::fn_impl(q)?; let result = p + q; diff --git a/crates/runtime/src/instruction/ed25519_edwards_decompress_validate.rs b/crates/runtime/src/instruction/curve25519_edwards_decompress_validate.rs similarity index 87% rename from crates/runtime/src/instruction/ed25519_edwards_decompress_validate.rs rename to crates/runtime/src/instruction/curve25519_edwards_decompress_validate.rs index a8a1188aa..da9b79437 100644 --- a/crates/runtime/src/instruction/ed25519_edwards_decompress_validate.rs +++ b/crates/runtime/src/instruction/curve25519_edwards_decompress_validate.rs @@ -3,15 +3,15 @@ use curve25519_dalek::{edwards::CompressedEdwardsY, EdwardsPoint}; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519EdwardsDecompressValidate {} +pub(crate) struct SyscallCurve25519EdwardsDecompressValidate {} -impl SyscallED25519EdwardsDecompressValidate { +impl SyscallCurve25519EdwardsDecompressValidate { pub const fn new() -> Self { Self {} } } -impl SyscallED25519EdwardsDecompressValidate { +impl SyscallCurve25519EdwardsDecompressValidate { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], diff --git a/crates/runtime/src/instruction/ed25519_edwards_mul.rs b/crates/runtime/src/instruction/curve25519_edwards_mul.rs similarity index 77% rename from crates/runtime/src/instruction/ed25519_edwards_mul.rs rename to crates/runtime/src/instruction/curve25519_edwards_mul.rs index 4fd8371b1..ab42f4dd0 100644 --- a/crates/runtime/src/instruction/ed25519_edwards_mul.rs +++ b/crates/runtime/src/instruction/curve25519_edwards_mul.rs @@ -1,21 +1,20 @@ use crate::{ - instruction::ed25519_edwards_decompress_validate::SyscallED25519EdwardsDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_edwards_decompress_validate::SyscallCurve25519EdwardsDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::EdwardsPoint; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519EdwardsMul {} +pub(crate) struct SyscallCurve25519EdwardsMul {} -impl SyscallED25519EdwardsMul { +impl SyscallCurve25519EdwardsMul { pub const fn new() -> Self { Self {} } } -impl SyscallED25519EdwardsMul { +impl SyscallCurve25519EdwardsMul { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -41,7 +40,7 @@ impl SyscallED25519EdwardsMul { } pub fn fn_impl(p: &[u8; 32], q: &[u8; 32]) -> Result { - let p = SyscallED25519EdwardsDecompressValidate::fn_impl(p)?; + let p = SyscallCurve25519EdwardsDecompressValidate::fn_impl(p)?; let q = curve25519_dalek::scalar::Scalar::from_bytes_mod_order(*q); let result = p * q; diff --git a/crates/runtime/src/instruction/ed25519_edwards_multiscalar_mul.rs b/crates/runtime/src/instruction/curve25519_edwards_multiscalar_mul.rs similarity index 87% rename from crates/runtime/src/instruction/ed25519_edwards_multiscalar_mul.rs rename to crates/runtime/src/instruction/curve25519_edwards_multiscalar_mul.rs index 1e060435e..ca67e24e6 100644 --- a/crates/runtime/src/instruction/ed25519_edwards_multiscalar_mul.rs +++ b/crates/runtime/src/instruction/curve25519_edwards_multiscalar_mul.rs @@ -1,7 +1,6 @@ use crate::{ - instruction::ed25519_edwards_decompress_validate::SyscallED25519EdwardsDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_edwards_decompress_validate::SyscallCurve25519EdwardsDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::{traits::MultiscalarMul, EdwardsPoint, Scalar}; use fluentbase_types::ExitCode; @@ -11,15 +10,15 @@ pub const POINT_LEN: usize = 32; pub const SCALAR_LEN: usize = 32; const PAIR_LEN: usize = POINT_LEN + SCALAR_LEN; -pub(crate) struct SyscallED25519EdwardsMultiscalarMul {} +pub(crate) struct SyscallCurve25519EdwardsMultiscalarMul {} -impl SyscallED25519EdwardsMultiscalarMul { +impl SyscallCurve25519EdwardsMultiscalarMul { pub const fn new() -> Self { Self {} } } -impl SyscallED25519EdwardsMultiscalarMul { +impl SyscallCurve25519EdwardsMultiscalarMul { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -75,7 +74,7 @@ impl SyscallED25519EdwardsMultiscalarMul { ) -> Result { let points: Result, ExitCode> = pairs .iter() - .map(|v| SyscallED25519EdwardsDecompressValidate::fn_impl(&v.0)) + .map(|v| SyscallCurve25519EdwardsDecompressValidate::fn_impl(&v.0)) .collect(); let points = points?; let scalars: Vec = pairs diff --git a/crates/runtime/src/instruction/ed25519_edwards_sub.rs b/crates/runtime/src/instruction/curve25519_edwards_sub.rs similarity index 72% rename from crates/runtime/src/instruction/ed25519_edwards_sub.rs rename to crates/runtime/src/instruction/curve25519_edwards_sub.rs index 31688e938..2e2b2a24a 100644 --- a/crates/runtime/src/instruction/ed25519_edwards_sub.rs +++ b/crates/runtime/src/instruction/curve25519_edwards_sub.rs @@ -1,21 +1,20 @@ use crate::{ - instruction::ed25519_edwards_decompress_validate::SyscallED25519EdwardsDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_edwards_decompress_validate::SyscallCurve25519EdwardsDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::EdwardsPoint; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519EdwardsSub {} +pub(crate) struct SyscallCurve25519EdwardsSub {} -impl SyscallED25519EdwardsSub { +impl SyscallCurve25519EdwardsSub { pub const fn new() -> Self { Self {} } } -impl SyscallED25519EdwardsSub { +impl SyscallCurve25519EdwardsSub { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -41,8 +40,8 @@ impl SyscallED25519EdwardsSub { } pub fn fn_impl(p: &[u8; 32], q: &[u8; 32]) -> Result { - let p = SyscallED25519EdwardsDecompressValidate::fn_impl(p)?; - let q = SyscallED25519EdwardsDecompressValidate::fn_impl(q)?; + let p = SyscallCurve25519EdwardsDecompressValidate::fn_impl(p)?; + let q = SyscallCurve25519EdwardsDecompressValidate::fn_impl(q)?; let result = p - q; diff --git a/crates/runtime/src/instruction/ed25519_ristretto_add.rs b/crates/runtime/src/instruction/curve25519_ristretto_add.rs similarity index 72% rename from crates/runtime/src/instruction/ed25519_ristretto_add.rs rename to crates/runtime/src/instruction/curve25519_ristretto_add.rs index 5cae5a486..fb25fc5a2 100644 --- a/crates/runtime/src/instruction/ed25519_ristretto_add.rs +++ b/crates/runtime/src/instruction/curve25519_ristretto_add.rs @@ -1,21 +1,20 @@ use crate::{ - instruction::ed25519_ristretto_decompress_validate::SyscallED25519RistrettoDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_ristretto_decompress_validate::SyscallCurve25519RistrettoDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::RistrettoPoint; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519RistrettoAdd {} +pub(crate) struct SyscallCurve25519RistrettoAdd {} -impl SyscallED25519RistrettoAdd { +impl SyscallCurve25519RistrettoAdd { pub const fn new() -> Self { Self {} } } -impl SyscallED25519RistrettoAdd { +impl SyscallCurve25519RistrettoAdd { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -41,8 +40,8 @@ impl SyscallED25519RistrettoAdd { } pub fn fn_impl(p: &[u8; 32], q: &[u8; 32]) -> Result { - let p = SyscallED25519RistrettoDecompressValidate::fn_impl(p)?; - let q = SyscallED25519RistrettoDecompressValidate::fn_impl(q)?; + let p = SyscallCurve25519RistrettoDecompressValidate::fn_impl(p)?; + let q = SyscallCurve25519RistrettoDecompressValidate::fn_impl(q)?; let result = p + q; diff --git a/crates/runtime/src/instruction/ed25519_ristretto_decompress_validate.rs b/crates/runtime/src/instruction/curve25519_ristretto_decompress_validate.rs similarity index 85% rename from crates/runtime/src/instruction/ed25519_ristretto_decompress_validate.rs rename to crates/runtime/src/instruction/curve25519_ristretto_decompress_validate.rs index 5fb54765a..3156dbd52 100644 --- a/crates/runtime/src/instruction/ed25519_ristretto_decompress_validate.rs +++ b/crates/runtime/src/instruction/curve25519_ristretto_decompress_validate.rs @@ -3,15 +3,15 @@ use curve25519_dalek::{ristretto::CompressedRistretto, RistrettoPoint}; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519RistrettoDecompressValidate {} +pub(crate) struct SyscallCurve25519RistrettoDecompressValidate {} -impl SyscallED25519RistrettoDecompressValidate { +impl SyscallCurve25519RistrettoDecompressValidate { pub const fn new() -> Self { Self {} } } -impl SyscallED25519RistrettoDecompressValidate { +impl SyscallCurve25519RistrettoDecompressValidate { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], diff --git a/crates/runtime/src/instruction/ed25519_ristretto_mul.rs b/crates/runtime/src/instruction/curve25519_ristretto_mul.rs similarity index 76% rename from crates/runtime/src/instruction/ed25519_ristretto_mul.rs rename to crates/runtime/src/instruction/curve25519_ristretto_mul.rs index 7efbf8aea..002cd993f 100644 --- a/crates/runtime/src/instruction/ed25519_ristretto_mul.rs +++ b/crates/runtime/src/instruction/curve25519_ristretto_mul.rs @@ -1,21 +1,20 @@ use crate::{ - instruction::ed25519_ristretto_decompress_validate::SyscallED25519RistrettoDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_ristretto_decompress_validate::SyscallCurve25519RistrettoDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::RistrettoPoint; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519RistrettoMul {} +pub(crate) struct SyscallCurve25519RistrettoMul {} -impl SyscallED25519RistrettoMul { +impl SyscallCurve25519RistrettoMul { pub const fn new() -> Self { Self {} } } -impl SyscallED25519RistrettoMul { +impl SyscallCurve25519RistrettoMul { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -41,7 +40,7 @@ impl SyscallED25519RistrettoMul { } pub fn fn_impl(p: &[u8; 32], q: &[u8; 32]) -> Result { - let p = SyscallED25519RistrettoDecompressValidate::fn_impl(p)?; + let p = SyscallCurve25519RistrettoDecompressValidate::fn_impl(p)?; let q = curve25519_dalek::scalar::Scalar::from_bytes_mod_order(*q); let result = p * q; diff --git a/crates/runtime/src/instruction/ed25519_ristretto_multiscalar_mul.rs b/crates/runtime/src/instruction/curve25519_ristretto_multiscalar_mul.rs similarity index 87% rename from crates/runtime/src/instruction/ed25519_ristretto_multiscalar_mul.rs rename to crates/runtime/src/instruction/curve25519_ristretto_multiscalar_mul.rs index f478233f5..c66dc6bc8 100644 --- a/crates/runtime/src/instruction/ed25519_ristretto_multiscalar_mul.rs +++ b/crates/runtime/src/instruction/curve25519_ristretto_multiscalar_mul.rs @@ -1,7 +1,6 @@ use crate::{ - instruction::ed25519_ristretto_decompress_validate::SyscallED25519RistrettoDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_ristretto_decompress_validate::SyscallCurve25519RistrettoDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::{traits::MultiscalarMul, RistrettoPoint, Scalar}; use fluentbase_types::ExitCode; @@ -11,15 +10,15 @@ pub const POINT_LEN: usize = 32; pub const SCALAR_LEN: usize = 32; const PAIR_LEN: usize = POINT_LEN + SCALAR_LEN; -pub(crate) struct SyscallED25519RistrettoMultiscalarMul {} +pub(crate) struct SyscallCurve25519RistrettoMultiscalarMul {} -impl SyscallED25519RistrettoMultiscalarMul { +impl SyscallCurve25519RistrettoMultiscalarMul { pub const fn new() -> Self { Self {} } } -impl SyscallED25519RistrettoMultiscalarMul { +impl SyscallCurve25519RistrettoMultiscalarMul { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -75,7 +74,7 @@ impl SyscallED25519RistrettoMultiscalarMul { ) -> Result { let points: Result, ExitCode> = pairs .iter() - .map(|v| SyscallED25519RistrettoDecompressValidate::fn_impl(&v.0)) + .map(|v| SyscallCurve25519RistrettoDecompressValidate::fn_impl(&v.0)) .collect(); let points = points?; let scalars: Vec = pairs diff --git a/crates/runtime/src/instruction/ed25519_ristretto_sub.rs b/crates/runtime/src/instruction/curve25519_ristretto_sub.rs similarity index 72% rename from crates/runtime/src/instruction/ed25519_ristretto_sub.rs rename to crates/runtime/src/instruction/curve25519_ristretto_sub.rs index 5cec83746..3ed435876 100644 --- a/crates/runtime/src/instruction/ed25519_ristretto_sub.rs +++ b/crates/runtime/src/instruction/curve25519_ristretto_sub.rs @@ -1,21 +1,20 @@ use crate::{ - instruction::ed25519_ristretto_decompress_validate::SyscallED25519RistrettoDecompressValidate, - utils::syscall_process_exit_code, - RuntimeContext, + instruction::curve25519_ristretto_decompress_validate::SyscallCurve25519RistrettoDecompressValidate, + utils::syscall_process_exit_code, RuntimeContext, }; use curve25519_dalek::RistrettoPoint; use fluentbase_types::ExitCode; use rwasm::{Store, TrapCode, TypedCaller, Value}; -pub(crate) struct SyscallED25519RistrettoSub {} +pub(crate) struct SyscallCurve25519RistrettoSub {} -impl SyscallED25519RistrettoSub { +impl SyscallCurve25519RistrettoSub { pub const fn new() -> Self { Self {} } } -impl SyscallED25519RistrettoSub { +impl SyscallCurve25519RistrettoSub { pub fn fn_handler( caller: &mut TypedCaller, params: &[Value], @@ -41,8 +40,8 @@ impl SyscallED25519RistrettoSub { } pub fn fn_impl(p: &[u8; 32], q: &[u8; 32]) -> Result { - let p = SyscallED25519RistrettoDecompressValidate::fn_impl(p)?; - let q = SyscallED25519RistrettoDecompressValidate::fn_impl(q)?; + let p = SyscallCurve25519RistrettoDecompressValidate::fn_impl(p)?; + let q = SyscallCurve25519RistrettoDecompressValidate::fn_impl(q)?; let result = p - q;