Remove unactivated ristretto syscall (#16727)
This commit is contained in:
		@@ -1,6 +1,5 @@
 | 
			
		||||
use crate::{alloc, BpfError};
 | 
			
		||||
use alloc::Alloc;
 | 
			
		||||
use curve25519_dalek::{ristretto::RistrettoPoint, scalar::Scalar};
 | 
			
		||||
use solana_rbpf::{
 | 
			
		||||
    aligned_memory::AlignedMemory,
 | 
			
		||||
    ebpf::MM_HEAP_START,
 | 
			
		||||
@@ -21,8 +20,7 @@ use solana_sdk::{
 | 
			
		||||
    epoch_schedule::EpochSchedule,
 | 
			
		||||
    feature_set::{
 | 
			
		||||
        cpi_data_cost, cpi_share_ro_and_exec_accounts, demote_sysvar_write_locks,
 | 
			
		||||
        enforce_aligned_host_addrs, ristretto_mul_syscall_enabled,
 | 
			
		||||
        set_upgrade_authority_via_cpi_enabled, sysvar_via_syscall,
 | 
			
		||||
        enforce_aligned_host_addrs, set_upgrade_authority_via_cpi_enabled, sysvar_via_syscall,
 | 
			
		||||
    },
 | 
			
		||||
    hash::{Hasher, HASH_BYTES},
 | 
			
		||||
    ic_msg,
 | 
			
		||||
@@ -128,11 +126,6 @@ pub fn register_syscalls(
 | 
			
		||||
 | 
			
		||||
    syscall_registry.register_syscall_by_name(b"sol_sha256", SyscallSha256::call)?;
 | 
			
		||||
 | 
			
		||||
    if invoke_context.is_feature_active(&ristretto_mul_syscall_enabled::id()) {
 | 
			
		||||
        syscall_registry
 | 
			
		||||
            .register_syscall_by_name(b"sol_ristretto_mul", SyscallRistrettoMul::call)?;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if invoke_context.is_feature_active(&sysvar_via_syscall::id()) {
 | 
			
		||||
        syscall_registry
 | 
			
		||||
            .register_syscall_by_name(b"sol_get_clock_sysvar", SyscallGetClockSysvar::call)?;
 | 
			
		||||
@@ -258,17 +251,6 @@ pub fn bind_syscall_context_objects<'a>(
 | 
			
		||||
        None,
 | 
			
		||||
    )?;
 | 
			
		||||
 | 
			
		||||
    bind_feature_gated_syscall_context_object!(
 | 
			
		||||
        vm,
 | 
			
		||||
        invoke_context.is_feature_active(&ristretto_mul_syscall_enabled::id()),
 | 
			
		||||
        Box::new(SyscallRistrettoMul {
 | 
			
		||||
            cost: 0,
 | 
			
		||||
            compute_meter: invoke_context.get_compute_meter(),
 | 
			
		||||
            loader_id,
 | 
			
		||||
            enforce_aligned_host_addrs,
 | 
			
		||||
        }),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    let is_sysvar_via_syscall_active = invoke_context.is_feature_active(&sysvar_via_syscall::id());
 | 
			
		||||
 | 
			
		||||
    let invoke_context = Rc::new(RefCell::new(invoke_context));
 | 
			
		||||
@@ -951,59 +933,6 @@ impl<'a> SyscallObject<BpfError> for SyscallSha256<'a> {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Ristretto point multiply
 | 
			
		||||
pub struct SyscallRistrettoMul<'a> {
 | 
			
		||||
    cost: u64,
 | 
			
		||||
    compute_meter: Rc<RefCell<dyn ComputeMeter>>,
 | 
			
		||||
    loader_id: &'a Pubkey,
 | 
			
		||||
    enforce_aligned_host_addrs: bool,
 | 
			
		||||
}
 | 
			
		||||
impl<'a> SyscallObject<BpfError> for SyscallRistrettoMul<'a> {
 | 
			
		||||
    fn call(
 | 
			
		||||
        &mut self,
 | 
			
		||||
        point_addr: u64,
 | 
			
		||||
        scalar_addr: u64,
 | 
			
		||||
        result_addr: u64,
 | 
			
		||||
        _arg4: u64,
 | 
			
		||||
        _arg5: u64,
 | 
			
		||||
        memory_mapping: &MemoryMapping,
 | 
			
		||||
        result: &mut Result<u64, EbpfError<BpfError>>,
 | 
			
		||||
    ) {
 | 
			
		||||
        question_mark!(self.compute_meter.consume(self.cost), result);
 | 
			
		||||
 | 
			
		||||
        let point = question_mark!(
 | 
			
		||||
            translate_type::<RistrettoPoint>(
 | 
			
		||||
                memory_mapping,
 | 
			
		||||
                point_addr,
 | 
			
		||||
                self.loader_id,
 | 
			
		||||
                self.enforce_aligned_host_addrs,
 | 
			
		||||
            ),
 | 
			
		||||
            result
 | 
			
		||||
        );
 | 
			
		||||
        let scalar = question_mark!(
 | 
			
		||||
            translate_type::<Scalar>(
 | 
			
		||||
                memory_mapping,
 | 
			
		||||
                scalar_addr,
 | 
			
		||||
                self.loader_id,
 | 
			
		||||
                self.enforce_aligned_host_addrs,
 | 
			
		||||
            ),
 | 
			
		||||
            result
 | 
			
		||||
        );
 | 
			
		||||
        let output = question_mark!(
 | 
			
		||||
            translate_type_mut::<RistrettoPoint>(
 | 
			
		||||
                memory_mapping,
 | 
			
		||||
                result_addr,
 | 
			
		||||
                self.loader_id,
 | 
			
		||||
                self.enforce_aligned_host_addrs,
 | 
			
		||||
            ),
 | 
			
		||||
            result
 | 
			
		||||
        );
 | 
			
		||||
        *output = point * scalar;
 | 
			
		||||
 | 
			
		||||
        *result = Ok(0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn get_sysvar<T: std::fmt::Debug + Sysvar + SysvarId>(
 | 
			
		||||
    id: &Pubkey,
 | 
			
		||||
    var_addr: u64,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user