From fd641ad2b11088ed68b378652d0086ce9838eea0 Mon Sep 17 00:00:00 2001 From: Sviatoslav Date: Thu, 27 Apr 2023 21:17:19 +0500 Subject: [PATCH] Remove unused comments, imports. Cleanup --- Cargo.lock | 16 - Cargo.toml | 1 - cli/src/program.rs | 18 +- core/src/cluster_info_vote_listener.rs | 1 - ledger/src/builtins.rs | 4 +- program-runtime/src/invoke_context.rs | 43 +-- program-runtime/src/log_collector.rs | 1 - programs/bpf_loader/src/lib.rs | 20 +- programs/bpf_loader/src/syscalls.rs | 5 - programs/wasm_loader/benches/serialization.rs | 132 ------- programs/wasm_loader/src/lib.rs | 330 +++--------------- programs/wasm_loader/src/syscalls.rs | 4 - programs/wasm_loader/src/upgradeable.rs | 2 +- rbpf-cli/Cargo.toml | 1 - rbpf-cli/src/main.rs | 2 - runtime/src/accounts.rs | 12 +- runtime/src/bank.rs | 9 - runtime/src/snapshot_minimizer.rs | 5 +- sdk/program/src/instruction.rs | 1 - sdk/src/transaction_context.rs | 2 +- transaction-status/src/parse_wasm_loader.rs | 2 - 21 files changed, 71 insertions(+), 540 deletions(-) delete mode 100644 programs/wasm_loader/benches/serialization.rs diff --git a/Cargo.lock b/Cargo.lock index c838c638..f55639db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1578,22 +1578,6 @@ dependencies = [ "domichain-sdk", ] -[[package]] -name = "domichain-cargo-build-sbf" -version = "1.11.1" -dependencies = [ - "bzip2", - "cargo_metadata", - "clap 3.1.8", - "domichain-download-utils", - "domichain-logger", - "domichain-sdk", - "log", - "regex", - "serial_test", - "tar", -] - [[package]] name = "domichain-cargo-test-bpf" version = "1.11.1" diff --git a/Cargo.toml b/Cargo.toml index 7fafaa75..9b0ece67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,7 +72,6 @@ members = [ "sdk", "sdk/cargo-build-bpf", "sdk/cargo-test-bpf", - "sdk/cargo-build-sbf", "sdk/gen-headers", "send-transaction-service", "sortition", diff --git a/cli/src/program.rs b/cli/src/program.rs index 17973a83..967fd476 100644 --- a/cli/src/program.rs +++ b/cli/src/program.rs @@ -813,7 +813,6 @@ fn get_default_program_keypair(program_location: &Option) -> Keypair { } /// Deploy using upgradeable loader -// process_program_deploy #[allow(clippy::too_many_arguments)] fn process_program_deploy( rpc_client: Arc, @@ -859,7 +858,6 @@ fn process_program_deploy( .get_account_with_commitment(&program_pubkey, config.commitment)? .value { - dbg!(&account.owner, wasm_loader_upgradeable::id(), &program_pubkey); if account.owner != wasm_loader_upgradeable::id() { return Err(format!( "Account {} is not an upgradeable program or already in use", @@ -922,8 +920,7 @@ fn process_program_deploy( }; let (program_data, program_len) = if let Some(program_location) = program_location { - // read_and_verify_elf - // TODO(dev): Allow both ELF & WASM + // TODO(Dev): Allow both ELF & WASM // let program_data = read_and_verify_elf(program_location)?; let program_data = read_and_verify_wasm(program_location)?; let program_len = program_data.len(); @@ -934,7 +931,6 @@ fn process_program_deploy( .get_account_with_commitment(&buffer_pubkey, config.commitment)? .value { - dbg!(&account.owner); if !wasm_loader_upgradeable::check_id(&account.owner) { return Err(format!( "Buffer account {buffer_pubkey} is not owned by the BPF Upgradeable Loader", @@ -1913,7 +1909,6 @@ fn do_process_program_write_and_deploy( )?; } - // send_deploy_messages send_deploy_messages( rpc_client, config, @@ -2075,7 +2070,6 @@ fn do_process_program_upgrade( Ok(config.output_format.formatted_string(&program_id)) } -// read_and_verify_elf fn read_and_verify_elf(program_location: &str) -> Result, Box> { let mut file = File::open(program_location) .map_err(|err| format!("Unable to open program file: {}", err))?; @@ -2094,13 +2088,13 @@ fn read_and_verify_elf(program_location: &str) -> Result, Box::from_executable( executable, ) - .map_err(|err| format!("ELF error: {}", err)).unwrap(); + .map_err(|err| format!("ELF error: {}", err))?; Ok(program_data) } @@ -2111,10 +2105,11 @@ fn read_and_verify_wasm(program_location: &str) -> Result, Box Vec { } pub(crate) fn get(bpf_jit: bool) -> Builtins { - dbg!(Builtins { + Builtins { genesis_builtins: genesis_builtins(bpf_jit), feature_transitions: builtin_feature_transitions(), - }) + } } diff --git a/program-runtime/src/invoke_context.rs b/program-runtime/src/invoke_context.rs index 1b000ba7..9d7bd9a2 100644 --- a/program-runtime/src/invoke_context.rs +++ b/program-runtime/src/invoke_context.rs @@ -14,8 +14,7 @@ use { domichain_measure::measure::Measure, domichain_sdk::{ account::{AccountSharedData, ReadableAccount}, - // bpf_loader_upgradeable::{self, UpgradeableLoaderState}, - wasm_loader_upgradeable::{self, UpgradeableLoaderState}, + wasm_loader_upgradeable, feature_set::{ cap_accounts_data_len, record_instruction_in_transaction_context_push, tx_wide_compute_cap, FeatureSet, @@ -137,7 +136,6 @@ impl TransactionExecutor { } /// Compute meter -#[derive(Debug)] pub struct ComputeMeter { remaining: u64, } @@ -168,7 +166,7 @@ impl ComputeMeter { } /// Based loosely on the unstable std::alloc::Alloc trait -pub trait Alloc: Debug { +pub trait Alloc { fn alloc(&mut self, layout: Layout) -> Result; fn dealloc(&mut self, addr: u64, layout: Layout); } @@ -187,7 +185,6 @@ impl fmt::Display for AllocErr { note = "Please use InstructionContext instead of StackFrame" )] #[allow(deprecated)] -#[derive(Debug)] pub struct StackFrame<'a> { pub number_of_program_accounts: usize, pub keyed_accounts: Vec>, @@ -215,7 +212,6 @@ impl<'a> StackFrame<'a> { } } -#[derive(Debug)] struct SyscallContext { check_aligned: bool, check_size: bool, @@ -223,7 +219,6 @@ struct SyscallContext { allocator: Rc>, } -#[derive(Debug)] pub struct InvokeContext<'a> { pub transaction_context: &'a mut TransactionContext, #[allow(deprecated)] @@ -487,8 +482,7 @@ impl<'a> InvokeContext<'a> { for account_index in program_indices.iter() { self.transaction_context .get_account_at_index(*account_index) - .inspect_err(|x| { dbg!(x); }) - ? + .inspect_err(|x| { dbg!(x); })? .try_borrow_mut() .map_err(|_| InstructionError::AccountBorrowOutstanding)?; } @@ -809,7 +803,7 @@ impl<'a> InvokeContext<'a> { } let mut program_indices = vec![]; if borrowed_program_account.get_owner() == &wasm_loader_upgradeable::id() { - if let UpgradeableLoaderState::Program { + if let wasm_loader_upgradeable::UpgradeableLoaderState::Program { programdata_address, } = borrowed_program_account.get_state()? { @@ -837,7 +831,6 @@ impl<'a> InvokeContext<'a> { } program_indices.push(borrowed_program_account.get_index_in_transaction()); - // program_indices Ok((instruction_accounts, program_indices)) } @@ -861,12 +854,6 @@ impl<'a> InvokeContext<'a> { .unwrap_or_else(|| Ok(native_loader::id())) .inspect_err(|x| { dbg!(x); })?; - // if format!("{program_id}") != "Vote111111111111111111111111111111111111111" { - // dbg!(&program_id); - // dbg!(&program_indices); - // dbg!(&self.transaction_context); - // } - let nesting_level = self .transaction_context .get_instruction_context_stack_height(); @@ -910,7 +897,6 @@ impl<'a> InvokeContext<'a> { .set_return_data(program_id, Vec::new()) .inspect_err(|x| { dbg!(x); })?; let pre_remaining_units = self.compute_meter.borrow().get_remaining(); - // process_executable_chain let execution_result = self .process_executable_chain() .inspect_err(|x| { dbg!(x); }); @@ -958,7 +944,6 @@ impl<'a> InvokeContext<'a> { } /// Calls the instruction's program entrypoint method - // process_executable_chain fn process_executable_chain(&mut self) -> Result<(), InstructionError> { let instruction_context = self.transaction_context .get_current_instruction_context() @@ -977,16 +962,6 @@ impl<'a> InvokeContext<'a> { } }; - // if format!("{builtin_id}") != "Vote111111111111111111111111111111111111111" { - // dbg!(builtin_id); - // dbg!(&instruction_context); - // dbg!(&self.transaction_context); - // dbg!( - // &instruction_context - // .try_borrow_program_account(self.transaction_context, 0) - // ); - // } - for entry in self.builtin_programs { if entry.program_id == builtin_id { let program_id = @@ -996,14 +971,6 @@ impl<'a> InvokeContext<'a> { let logger = self.get_log_collector(); stable_log::program_invoke(&logger, &program_id, self.get_stack_height()); - // if format!("{}", &entry.program_id) != "Vote111111111111111111111111111111111111111" { - // // dbg!(&instruction_context); - // // dbg!(&self.transaction_context); - // dbg!(&self.builtin_programs); - // dbg!(&entry, &first_instruction_account); - // // dbg!(std::thread::current().id()); - // // dbg!(std::time::SystemTime::now()); - // } return (entry.process_instruction)(first_instruction_account, self) .inspect_err(|x| { dbg!(x, &entry, &first_instruction_account); }) .map(|()| { @@ -1215,7 +1182,6 @@ pub fn with_mock_invoke_context R>( }]; let preparation = prepare_mock_invoke_context(transaction_accounts, instruction_accounts, &program_indices); - dbg!(&preparation.transaction_accounts); let mut transaction_context = TransactionContext::new( preparation.transaction_accounts, ComputeBudget::default().max_invoke_depth.saturating_add(1), @@ -1246,7 +1212,6 @@ pub fn mock_process_instruction( preparation .transaction_accounts .push((*loader_id, processor_account)); - dbg!(&preparation.transaction_accounts); let mut transaction_context = TransactionContext::new( preparation.transaction_accounts, ComputeBudget::default().max_invoke_depth.saturating_add(1), diff --git a/program-runtime/src/log_collector.rs b/program-runtime/src/log_collector.rs index 7e74a568..62f39363 100644 --- a/program-runtime/src/log_collector.rs +++ b/program-runtime/src/log_collector.rs @@ -3,7 +3,6 @@ use std::{cell::RefCell, rc::Rc}; const LOG_MESSAGES_BYTES_LIMIT: usize = 10 * 1000; -#[derive(Debug)] pub struct LogCollector { messages: Vec, bytes_written: usize, diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index 000d9f5a..ce30455e 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -18,7 +18,7 @@ use { serialization::{deserialize_parameters, serialize_parameters}, syscalls::SyscallError, }, - log::{log_enabled, trace, error, Level::Trace}, + log::{log_enabled, trace, Level::Trace}, domichain_measure::measure::Measure, domichain_program_runtime::{ ic_logger_msg, ic_msg, @@ -138,8 +138,6 @@ fn try_borrow_account<'a>( } } -// create_executor -// ERROR: InvalidAccountData pub fn create_executor( programdata_account_index: usize, programdata_offset: usize, @@ -149,7 +147,6 @@ pub fn create_executor( disable_deploy_of_alloc_free_syscall: bool, ) -> Result, InstructionError> { let mut register_syscalls_time = Measure::start("register_syscalls_time"); - // register_syscalls let register_syscall_result = syscalls::register_syscalls(invoke_context, disable_deploy_of_alloc_free_syscall); register_syscalls_time.stop(); @@ -161,8 +158,6 @@ pub fn create_executor( ic_msg!(invoke_context, "Failed to register syscalls: {}", e); InstructionError::ProgramEnvironmentSetupFailure })?; - // HERE - error!("DEV {}:{}: got syscall_registry={syscall_registry:?}", file!(), line!()); let compute_budget = invoke_context.get_compute_budget(); let config = Config { max_call_depth: compute_budget.max_call_depth, @@ -315,16 +310,11 @@ pub fn create_vm<'a, 'b>( let mut heap = AlignedMemory::new_with_size(compute_budget.heap_size.unwrap_or(HEAP_LENGTH), HOST_ALIGN); let parameter_region = MemoryRegion::new_writable(parameter_bytes, MM_INPUT_START); - - // Create VM, provide Heap and Parameters let mut vm = EbpfVm::new(program, heap.as_slice_mut(), vec![parameter_region])?; - - // Bind SysCalls syscalls::bind_syscall_context_objects(&mut vm, invoke_context, heap, orig_account_lengths)?; Ok(vm) } -// process_instruction pub fn process_instruction( first_instruction_account: usize, invoke_context: &mut InvokeContext, @@ -424,7 +414,6 @@ fn process_instruction_common( } ) { ic_logger_msg!(log_collector, "Program has been closed"); - // InvalidAccountData return Err(InstructionError::InvalidAccountData).inspect_err(|x| { dbg!(x); }); } UpgradeableLoaderState::size_of_programdata_metadata() @@ -471,7 +460,6 @@ fn process_instruction_common( .feature_set .is_active(&disable_deprecated_loader::id()); if bpf_loader_upgradeable::check_id(program_id) { - // process_loader_upgradeable_instruction process_loader_upgradeable_instruction( first_instruction_account, invoke_context, @@ -491,7 +479,6 @@ fn process_instruction_common( } } -// process_loader_upgradeable_instruction fn process_loader_upgradeable_instruction( first_instruction_account: usize, invoke_context: &mut InvokeContext, @@ -503,7 +490,7 @@ fn process_loader_upgradeable_instruction( let instruction_data = instruction_context.get_instruction_data(); let program_id = instruction_context.get_last_program_key(transaction_context).inspect_err(|x| { dbg!(x); })?; - match dbg!(limited_deserialize(dbg!(instruction_data)))? { + match limited_deserialize(instruction_data)? { UpgradeableLoaderInstruction::InitializeBuffer => { instruction_context.check_number_of_instruction_accounts(2)?; let mut buffer = @@ -680,7 +667,6 @@ fn process_loader_upgradeable_instruction( // Load and verify the program bits - // ERROR: InvalidAccountData let executor = create_executor( first_instruction_account.saturating_add(3), buffer_data_offset, @@ -1233,7 +1219,6 @@ impl Executor for BpfExecutor { let mut create_vm_time = Measure::start("create_vm"); let mut execute_time; let execution_result = { - // create_vm let mut vm = match create_vm( &self.verified_executable, parameter_bytes.as_slice_mut(), @@ -1242,7 +1227,6 @@ impl Executor for BpfExecutor { ) { Ok(info) => info, Err(e) => { - // THIS: Failed to create BPF VM ic_logger_msg!(log_collector, "Failed to create BPF VM: {}", e); return Err(InstructionError::ProgramEnvironmentSetupFailure); } diff --git a/programs/bpf_loader/src/syscalls.rs b/programs/bpf_loader/src/syscalls.rs index e8f20ff7..1033492c 100644 --- a/programs/bpf_loader/src/syscalls.rs +++ b/programs/bpf_loader/src/syscalls.rs @@ -1,4 +1,3 @@ -use log::error; #[allow(deprecated)] use { crate::{allocator_bump::BpfAllocator, BpfError}, @@ -126,7 +125,6 @@ macro_rules! register_feature_gated_syscall { }; } -// register_syscalls pub fn register_syscalls( invoke_context: &mut InvokeContext, disable_deploy_of_alloc_free_syscall: bool, @@ -362,9 +360,6 @@ pub fn register_syscalls( SyscallGetStackHeight::call, )?; - // HERE - error!("DEV {}:{}: got syscall_registry={syscall_registry:?}", file!(), line!()); - Ok(syscall_registry) } diff --git a/programs/wasm_loader/benches/serialization.rs b/programs/wasm_loader/benches/serialization.rs deleted file mode 100644 index 063c4953..00000000 --- a/programs/wasm_loader/benches/serialization.rs +++ /dev/null @@ -1,132 +0,0 @@ -#![feature(test)] - -extern crate test; - -use { - domichain_bpf_loader_program::serialization::{ - serialize_parameters_aligned, serialize_parameters_unaligned, - }, - domichain_sdk::{ - account::{Account, AccountSharedData}, - bpf_loader, - transaction_context::{InstructionAccount, TransactionContext}, - }, - test::Bencher, -}; - -fn create_inputs() -> TransactionContext { - let program_id = domichain_sdk::pubkey::new_rand(); - let transaction_accounts = vec![ - ( - program_id, - AccountSharedData::from(Account { - lamports: 0, - data: vec![], - owner: bpf_loader::id(), - executable: true, - rent_epoch: 0, - }), - ), - ( - domichain_sdk::pubkey::new_rand(), - AccountSharedData::from(Account { - lamports: 1, - data: vec![1u8; 100000], - owner: bpf_loader::id(), - executable: false, - rent_epoch: 100, - }), - ), - ( - domichain_sdk::pubkey::new_rand(), - AccountSharedData::from(Account { - lamports: 2, - data: vec![11u8; 100000], - owner: bpf_loader::id(), - executable: true, - rent_epoch: 200, - }), - ), - ( - domichain_sdk::pubkey::new_rand(), - AccountSharedData::from(Account { - lamports: 3, - data: vec![], - owner: bpf_loader::id(), - executable: false, - rent_epoch: 3100, - }), - ), - ( - domichain_sdk::pubkey::new_rand(), - AccountSharedData::from(Account { - lamports: 4, - data: vec![1u8; 100000], - owner: bpf_loader::id(), - executable: false, - rent_epoch: 100, - }), - ), - ( - domichain_sdk::pubkey::new_rand(), - AccountSharedData::from(Account { - lamports: 5, - data: vec![11u8; 10000], - owner: bpf_loader::id(), - executable: true, - rent_epoch: 200, - }), - ), - ( - domichain_sdk::pubkey::new_rand(), - AccountSharedData::from(Account { - lamports: 6, - data: vec![], - owner: bpf_loader::id(), - executable: false, - rent_epoch: 3100, - }), - ), - ]; - let instruction_accounts = [1, 1, 2, 3, 4, 4, 5, 6] - .into_iter() - .enumerate() - .map( - |(instruction_account_index, index_in_transaction)| InstructionAccount { - index_in_caller: instruction_account_index, - index_in_transaction, - index_in_callee: instruction_account_index, - is_signer: false, - is_writable: instruction_account_index >= 4, - }, - ) - .collect::>(); - let mut transaction_context = TransactionContext::new(transaction_accounts, 1, 1); - let instruction_data = vec![1u8, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; - transaction_context - .push(&[0], &instruction_accounts, &instruction_data, true) - .unwrap(); - transaction_context -} - -#[bench] -fn bench_serialize_unaligned(bencher: &mut Bencher) { - let transaction_context = create_inputs(); - let instruction_context = transaction_context - .get_current_instruction_context() - .unwrap(); - bencher.iter(|| { - let _ = serialize_parameters_unaligned(&transaction_context, instruction_context).unwrap(); - }); -} - -#[bench] -fn bench_serialize_aligned(bencher: &mut Bencher) { - let transaction_context = create_inputs(); - let instruction_context = transaction_context - .get_current_instruction_context() - .unwrap(); - bencher.iter(|| { - let _ = serialize_parameters_aligned(&transaction_context, instruction_context).unwrap(); - }); -} diff --git a/programs/wasm_loader/src/lib.rs b/programs/wasm_loader/src/lib.rs index 4ddb91b1..07a0964b 100644 --- a/programs/wasm_loader/src/lib.rs +++ b/programs/wasm_loader/src/lib.rs @@ -15,8 +15,6 @@ extern crate domichain_metrics; use log::{log_enabled, Level::Trace}; use solana_rbpf::memory_region::MemoryMapping; -// use solana_rbpf::syscalls::BpfTracePrintf; -// use solana_rbpf::user_error::UserError; use solana_rbpf::vm::SyscallRegistry; use wasmi::core::Trap; use wasmi::{Caller, Extern, Func}; @@ -24,13 +22,44 @@ use wasmi_wasi::WasiCtx; use { crate::{ serialization::{deserialize_parameters, serialize_parameters}, - syscalls::SyscallError, - }, - log::{ - // log_enabled, trace, - error, - // Level::Trace + syscalls::{ + SyscallError, + SyscallAbort, + SyscallPanic, + SyscallLog, + SyscallLogU64, + SyscallLogBpfComputeUnits, + SyscallLogPubkey, + SyscallCreateProgramAddress, + SyscallTryFindProgramAddress, + SyscallSha256, + SyscallKeccak256, + SyscallSecp256k1Recover, + SyscallBlake3, + SyscallZkTokenElgamalOp, + SyscallZkTokenElgamalOpWithLoHi, + SyscallZkTokenElgamalOpWithScalar, + SyscallCurvePointValidation, + SyscallCurveGroupOps, + SyscallGetClockSysvar, + SyscallGetEpochScheduleSysvar, + SyscallGetFeesSysvar, + SyscallGetRentSysvar, + SyscallMemcpy, + SyscallMemmove, + SyscallMemcmp, + SyscallMemset, + SyscallInvokeSignedC, + SyscallInvokeSignedRust, + SyscallAllocFree, + SyscallSetReturnData, + SyscallGetReturnData, + SyscallLogData, + SyscallGetProcessedSiblingInstruction, + SyscallGetStackHeight, + }, }, + log::error, domichain_measure::measure::Measure, domichain_program_runtime::{ ic_logger_msg, ic_msg, @@ -42,24 +71,24 @@ use { domichain_sdk::{ wasm_loader, wasm_loader_deprecated, wasm_loader_upgradeable::{self, UpgradeableLoaderState}, - entrypoint::{ - HEAP_LENGTH, - // SUCCESS, - }, + entrypoint::HEAP_LENGTH, feature_set::{ - // cap_accounts_data_len, disable_bpf_deprecated_load_instructions, - // disable_bpf_unresolved_symbols_at_runtime, disable_deploy_of_alloc_free_syscall, disable_deprecated_loader, - // error_on_syscall_bpf_function_hash_collisions, reduce_required_deploy_balance, - // reject_callx_r10, requestable_heap_size, + blake3_syscall_enabled, + check_slice_translation_size, + disable_bpf_deprecated_load_instructions, + disable_bpf_unresolved_symbols_at_runtime, + disable_fees_sysvar, + error_on_syscall_bpf_function_hash_collisions, + reject_callx_r10, + zk_token_sdk_enabled, }, instruction::{AccountMeta, InstructionError}, loader_instruction::LoaderInstruction, loader_upgradeable_instruction::UpgradeableLoaderInstruction, - // program_error::MAX_ACCOUNTS_DATA_SIZE_EXCEEDED, program_utils::limited_deserialize, pubkey::Pubkey, saturating_add_assign, @@ -69,55 +98,14 @@ use { solana_rbpf::{ aligned_memory::AlignedMemory, ebpf::{HOST_ALIGN, MM_PROGRAM_START, MM_HEAP_START, MM_INPUT_START}, - // elf::Executable, error::{EbpfError, UserDefinedError}, memory_region::MemoryRegion, - // static_analysis::Analysis, verifier::{RequisiteVerifier, VerifierError}, - vm::{ - // Config, - SyscallObject, - EbpfVm, InstructionMeter, VerifiedExecutable}, + vm::{SyscallObject, EbpfVm, InstructionMeter, VerifiedExecutable}, }, std::{cell::RefCell, fmt::Debug, rc::Rc, sync::Arc}, thiserror::Error, }; -use domichain_sdk::feature_set::{blake3_syscall_enabled, check_slice_translation_size, disable_bpf_deprecated_load_instructions, disable_bpf_unresolved_symbols_at_runtime, disable_fees_sysvar, error_on_syscall_bpf_function_hash_collisions, reject_callx_r10, zk_token_sdk_enabled}; -use crate::syscalls::{ - SyscallAbort, - SyscallPanic, - SyscallLog, - SyscallLogU64, - SyscallLogBpfComputeUnits, - SyscallLogPubkey, - SyscallCreateProgramAddress, - SyscallTryFindProgramAddress, - SyscallSha256, - SyscallKeccak256, - SyscallSecp256k1Recover, - SyscallBlake3, - SyscallZkTokenElgamalOp, - SyscallZkTokenElgamalOpWithLoHi, - SyscallZkTokenElgamalOpWithScalar, - SyscallCurvePointValidation, - SyscallCurveGroupOps, - SyscallGetClockSysvar, - SyscallGetEpochScheduleSysvar, - SyscallGetFeesSysvar, - SyscallGetRentSysvar, - SyscallMemcpy, - SyscallMemmove, - SyscallMemcmp, - SyscallMemset, - SyscallInvokeSignedC, - SyscallInvokeSignedRust, - SyscallAllocFree, - SyscallSetReturnData, - SyscallGetReturnData, - SyscallLogData, - SyscallGetProcessedSiblingInstruction, - SyscallGetStackHeight, -}; domichain_sdk::declare_builtin!( domichain_sdk::wasm_loader::ID, @@ -196,7 +184,6 @@ fn try_borrow_account<'a>( } } -// create_executor pub fn create_executor( programdata_account_index: usize, programdata_offset: usize, @@ -217,8 +204,6 @@ pub fn create_executor( ic_msg!(invoke_context, "Failed to register syscalls: {}", e); InstructionError::ProgramEnvironmentSetupFailure })?; - // HERE - error!("DEV {}:{}: got syscall_registry={syscall_registry:?}", file!(), line!()); let compute_budget = invoke_context.get_compute_budget(); let config = solana_rbpf::vm::Config { max_call_depth: compute_budget.max_call_depth, @@ -266,6 +251,7 @@ pub fn create_executor( )?; create_executor_metrics.program_id = programdata.get_key().to_string(); let mut load_elf_time = Measure::start("load_elf_time"); + // TODO: load WASM here // TODO: our own Executable, not from solana_rbpf @@ -277,14 +263,6 @@ pub fn create_executor( &engine, &mut data, ).expect("Binary should be valid WASM"); - // let executable = Executable::::from_elf( - // programdata - // .get_data() - // .get(programdata_offset..) - // .ok_or(InstructionError::AccountDataTooSmall)?, - // config, - // syscall_registry, - // ); load_elf_time.stop(); create_executor_metrics.load_elf_us = load_elf_time.as_us(); invoke_context.timings.create_executor_load_elf_us = invoke_context @@ -295,11 +273,6 @@ pub fn create_executor( } .map_err(|e| map_ebpf_error(invoke_context, e))?; let mut verify_code_time = Measure::start("verify_code_time"); - // let mut verified_executable = - // VerifiedExecutable::::from_executable( - // executable, - // ) - // .map_err(|e| map_ebpf_error(invoke_context, e))?; let verified_executable = executable; verify_code_time.stop(); create_executor_metrics.verify_code_us = verify_code_time.as_us(); @@ -307,20 +280,6 @@ pub fn create_executor( .timings .create_executor_verify_code_us .saturating_add(create_executor_metrics.verify_code_us); - // if use_jit { - // let mut jit_compile_time = Measure::start("jit_compile_time"); - // let jit_compile_result = verified_executable.jit_compile(); - // jit_compile_time.stop(); - // create_executor_metrics.jit_compile_us = jit_compile_time.as_us(); - // invoke_context.timings.create_executor_jit_compile_us = invoke_context - // .timings - // .create_executor_jit_compile_us - // .saturating_add(create_executor_metrics.jit_compile_us); - // if let Err(err) = jit_compile_result { - // ic_msg!(invoke_context, "Failed to compile program {:?}", err); - // return Err(InstructionError::ProgramFailedToCompile); - // } - // } create_executor_metrics.submit_datapoint(); Ok(Arc::new(WasmExecutor { engine, @@ -389,7 +348,6 @@ pub fn create_vm<'a, 'b>( AlignedMemory::new_with_size(compute_budget.heap_size.unwrap_or(HEAP_LENGTH), HOST_ALIGN); let parameter_region = MemoryRegion::new_writable(parameter_bytes, MM_INPUT_START); let mut vm = EbpfVm::new(program, heap.as_slice_mut(), vec![parameter_region])?; - // TODO: bind_syscall syscalls::bind_syscall_context_objects(&mut vm, invoke_context, heap, orig_account_lengths)?; Ok(vm) } @@ -744,7 +702,6 @@ fn process_loader_upgradeable_instruction( invoke_context.native_invoke(instruction, signers.as_slice())?; // Load and verify the program bits - // NO let executor = create_executor( first_instruction_account.saturating_add(3), buffer_data_offset, @@ -1373,14 +1330,6 @@ impl Executor for WasmExecutor { wasmi_wasi::add_to_linker(&mut linker, |ctx| &mut ctx.0) .map_err(|error| format!("failed to add WASI definitions to the linker: {error}")).unwrap(); - // TODO: bind functions - // let host_hello = wasmi::Func::wrap(&mut store, |caller: wasmi::Caller<'_, HostState>, param: i32| { - // println!("Got {param} from WebAssembly"); - // println!("My host state is: {}", caller.data()); - // }); - - // let invoke_context_clone = invoke_context.clone(); - linker.define( "env", "abort", @@ -1657,178 +1606,11 @@ impl Executor for WasmExecutor { }), ).unwrap(); - // let sol_log_ = wasmi::Func::wrap(&mut store, |caller: wasmi::Caller<'_, HostState>, message: i32, len: u64| { - // let invoke_context = caller.data().1 - // .try_borrow() - // .map_err(|_| Trap::new(format!("{:?}", SyscallError::InvokeContextBorrowFailed)))?; - // - // let mem = match caller.get_export("memory") { - // Some(Extern::Memory(mem)) => mem, - // _ => panic!("failed to find host memory"), - // }; - // let data = mem.data(&caller) - // .get(message as u32 as usize..) - // .and_then(|arr| arr.get(..len as u32 as usize)); - // let string = match data { - // Some(data) => match std::str::from_utf8(data) { - // Ok(s) => s, - // Err(_) => panic!("invalid utf-8"), - // }, - // None => panic!("pointer/length out of bounds"), - // }; - // - // stable_log::program_log(&invoke_context.get_log_collector(), string); - // - // // println!("My host state is: {}", caller.data()); - // Ok(()) - // }); - // linker.define("env", "sol_log_", sol_log_).unwrap(); - - // let abort = wasmi::Func::wrap(&mut store, |_caller: wasmi::Caller<'_, HostState>| { - // Err::(Trap::new(format!("{:?}", SyscallError::Abort))) - // }); - // linker.define("env", "abort", abort).unwrap(); - // - // let sol_panic_ = wasmi::Func::wrap(&mut store, |caller: wasmi::Caller<'_, HostState>, file: i32, len: u64, line: u64, column: u64| { - // let mem = match caller.get_export("memory") { - // Some(Extern::Memory(mem)) => mem, - // _ => panic!("failed to find host memory"), - // }; - // let data = mem.data(&caller) - // .get(file as u32 as usize..) - // .and_then(|arr| arr.get(..len as u32 as usize)); - // let string = match data { - // Some(data) => match std::str::from_utf8(data) { - // Ok(s) => s, - // Err(_) => panic!("invalid utf-8"), - // }, - // None => panic!("pointer/length out of bounds"), - // }; - // - // Err::(Trap::new(format!("{:?}", SyscallError::Panic(string.to_string(), line, column)))) - // }); - // linker.define("env", "sol_panic_", sol_panic_).unwrap(); - - // let sol_sha256 = wasmi::Func::wrap(&mut store, |mut caller: wasmi::Caller<'_, HostState>, vals_addr: i32, vals_len: u64, result_addr: i32| { - // let mem = match caller.get_export("memory") { - // Some(Extern::Memory(mem)) => mem, - // _ => panic!("failed to find host memory"), - // }; - // - // let mut hasher = domichain_sdk::hash::Hasher::default(); - // - // if vals_len > 0 { - // let vals_addr = vals_addr as u32 as usize; - // let vals = mem.data(&mut caller) - // .get(vals_addr..vals_addr + vals_len as usize).unwrap(); - // hasher.hash(vals); - // } - // let result_addr = result_addr as u32 as usize; - // let hash_result = mem.data_mut(&mut caller) - // .get_mut(result_addr..result_addr + domichain_sdk::hash::HASH_BYTES).unwrap(); - // hash_result.copy_from_slice(&hasher.result().to_bytes()); - // - // Ok(0 as i64) - // }); - // linker.define("env", "sol_sha256", sol_sha256).unwrap(); - // - // let sol_keccak256 = wasmi::Func::wrap(&mut store, |mut caller: wasmi::Caller<'_, HostState>, vals_addr: i32, vals_len: u64, result_addr: i32| { - // let mem = match caller.get_export("memory") { - // Some(Extern::Memory(mem)) => mem, - // _ => panic!("failed to find host memory"), - // }; - // - // let mut hasher = domichain_sdk::keccak::Hasher::default(); - // - // if vals_len > 0 { - // let vals_addr = vals_addr as u32 as usize; - // let vals = mem.data(&mut caller) - // .get(vals_addr..vals_addr + vals_len as usize).unwrap(); - // hasher.hash(vals); - // } - // let result_addr = result_addr as u32 as usize; - // let hash_result = mem.data_mut(&mut caller) - // .get_mut(result_addr..result_addr + domichain_sdk::keccak::HASH_BYTES).unwrap(); - // hash_result.copy_from_slice(&hasher.result().to_bytes()); - // - // Ok(0 as i64) - // }); - // linker.define("env", "sol_keccak256", sol_keccak256).unwrap(); - - // let memcpy = wasmi::Func::wrap(&mut store, |mut caller: wasmi::Caller<'_, HostState>, dst: i32, src: i32, len: i32| { - // let mem = match caller.get_export("memory") { - // Some(Extern::Memory(mem)) => mem, - // _ => panic!("failed to find host memory"), - // }; - // let data = mem.data_mut(&mut caller); - // - // let src_start = src as u32 as usize; - // // let src_bytes = data - // // .get(src_start..src_start + len as usize) - // // .unwrap(); - // - // let dst_start = dst as u32 as usize; - // // let dst_bytes = data - // // .get_mut(dst_start..dst_start + len as usize) - // // .unwrap(); - // - // unsafe { - // std::ptr::copy_nonoverlapping( - // &data[src_start] as *const u8, - // &mut data[dst_start] as *mut u8, - // len as usize, - // ) - // } - // - // 0 as i32 - // }); - // linker.define("env", "memcpy", memcpy).unwrap(); - // - // let memset = wasmi::Func::wrap(&mut store, |mut caller: wasmi::Caller<'_, HostState>, ptr: i32, val: i32, len: i32| { - // let mem = match caller.get_export("memory") { - // Some(Extern::Memory(mem)) => mem, - // _ => panic!("failed to find host memory"), - // }; - // let data = mem.data_mut(&mut caller); - // - // let dst_start = ptr as u32 as usize; - // // let dst_bytes = data - // // .get_mut(dst_start..dst_start + len as usize) - // // .unwrap(); - // - // unsafe { - // std::ptr::write_bytes( - // &mut data[dst_start] as *mut u8, - // val as u8, - // len as usize, - // ) - // } - // - // 0 as i32 - // }); - // linker.define("env", "memset", memset).unwrap(); - - // let mut syscall_registry = SyscallRegistry::default(); - // syscall_registry.register_syscall_by_hash(6, BpfTracePrintf::init::, BpfTracePrintf::call).unwrap(); - - // linker.define("host", "hello", host_hello).unwrap(); let instance = linker .instantiate(&mut store, &self.verified_executable).unwrap() .start(&mut store).unwrap(); let memory = instance.get_memory(&mut store, "memory").unwrap(); - // dbg!(memory.current_pages(&store).to_bytes()); - // if cfg!(target_pointer_width = "16") { - // dbg!("Self::new16(pages)"); - // } else if cfg!(target_pointer_width = "32") { - // dbg!("Self::new32(pages)"); - // } else if cfg!(target_pointer_width = "64") { - // dbg!("Self::new64(pages)"); - // } else { - // dbg!("None"); - // } - // memory.grow(&mut store, wasmi::core::Pages::new(1).unwrap()).unwrap(); - // dbg!(memory.current_pages(&store).to_bytes()); let parameter_bytes_slice = parameter_bytes.as_slice(); let parameter_bytes_slice_len = parameter_bytes_slice.len(); memory.data_mut(&mut store)[0..parameter_bytes_slice_len] @@ -1836,20 +1618,6 @@ impl Executor for WasmExecutor { let vm = instance.get_typed_func::(&store, "entrypoint").unwrap(); - // let mut bpf_vm = match create_vm( - // &self.verified_executable, - // parameter_bytes.as_slice_mut(), - // account_lengths, - // invoke_context, - // ) { - // Ok(info) => info, - // Err(e) => { - // // THIS: Failed to create BPF VM - // ic_logger_msg!(log_collector, "Failed to create BPF VM: {}", e); - // return Err(InstructionError::ProgramEnvironmentSetupFailure); - // } - // }; - let check_aligned = true; let check_size = invoke_context.borrow() .feature_set @@ -1870,6 +1638,8 @@ impl Executor for WasmExecutor { execute_time = Measure::start("execute"); stable_log::program_invoke(&log_collector, &program_id, stack_height); + + // TODO(Dev): return instruction meter and the rest // let mut instruction_meter = ThisInstructionMeter::new(compute_meter.clone()); let before = compute_meter.borrow().get_remaining(); diff --git a/programs/wasm_loader/src/syscalls.rs b/programs/wasm_loader/src/syscalls.rs index 013d943e..797753ba 100644 --- a/programs/wasm_loader/src/syscalls.rs +++ b/programs/wasm_loader/src/syscalls.rs @@ -1,4 +1,3 @@ -use log::error; #[allow(deprecated)] use { crate::{allocator_bump::BpfAllocator, BpfError}, @@ -356,9 +355,6 @@ pub fn register_syscalls( SyscallGetStackHeight::call, )?; - // HERE - error!("DEV {}:{}: got syscall_registry={syscall_registry:?}", file!(), line!()); - Ok(syscall_registry) } diff --git a/programs/wasm_loader/src/upgradeable.rs b/programs/wasm_loader/src/upgradeable.rs index 47399c3e..cd0f5435 100644 --- a/programs/wasm_loader/src/upgradeable.rs +++ b/programs/wasm_loader/src/upgradeable.rs @@ -3,4 +3,4 @@ domichain_sdk::declare_builtin!( domichain_wasm_loader_upgradeable_program, domichain_wasm_loader_program::process_instruction, upgradeable::id -); \ No newline at end of file +); diff --git a/rbpf-cli/Cargo.toml b/rbpf-cli/Cargo.toml index 543d65b6..2884bbf1 100644 --- a/rbpf-cli/Cargo.toml +++ b/rbpf-cli/Cargo.toml @@ -18,4 +18,3 @@ domichain-logger = { path = "../logger", version = "=1.11.1" } domichain-program-runtime = { path = "../program-runtime", version = "=1.11.1" } domichain-sdk = { path = "../sdk", version = "=1.11.1" } solana_rbpf = "=0.2.31" -# solana_rbpf = { path = "../../rbpf", version = "=0.2.31" } diff --git a/rbpf-cli/src/main.rs b/rbpf-cli/src/main.rs index af471307..7333d789 100644 --- a/rbpf-cli/src/main.rs +++ b/rbpf-cli/src/main.rs @@ -26,7 +26,6 @@ use { time::{Duration, Instant}, }, }; -use domichain_program_runtime::log_collector::log::error; #[derive(Serialize, Deserialize, Debug)] struct Account { @@ -245,7 +244,6 @@ native machine code before execting it in the virtual machine.", let mut contents = Vec::new(); file.read_to_end(&mut contents).unwrap(); let syscall_registry = register_syscalls(&mut invoke_context, true).unwrap(); - error!("DEV {}:{}: got syscall_registry={syscall_registry:?}", file!(), line!()); let executable = if magic == [0x7f, 0x45, 0x4c, 0x46] { Executable::::from_elf(&contents, config, syscall_registry) .map_err(|err| format!("Executable constructor failed: {:?}", err)) diff --git a/runtime/src/accounts.rs b/runtime/src/accounts.rs index 59c08f34..d8f8decc 100644 --- a/runtime/src/accounts.rs +++ b/runtime/src/accounts.rs @@ -32,8 +32,7 @@ use { domichain_sdk::{ account::{Account, AccountSharedData, ReadableAccount, WritableAccount}, account_utils::StateMut, - // bpf_loader_upgradeable::{self, UpgradeableLoaderState}, - wasm_loader_upgradeable::{self, UpgradeableLoaderState}, + wasm_loader_upgradeable, clock::{BankId, Slot, INITIAL_RENT_EPOCH}, feature_set::{self, add_set_compute_unit_price_ix, tx_wide_compute_cap, FeatureSet}, fee::FeeStructure, @@ -321,10 +320,6 @@ impl Accounts { validated_fee_payer = true; } - // let acc_owner_str = format!("{}", account.owner()); - // if acc_owner_str != "Vote111111111111111111111111111111111111111" && acc_owner_str != "11111111111111111111111111111111" { - // dbg!(account.owner()); - // } if wasm_loader_upgradeable::check_id(account.owner()) { if message.is_writable(i) && !message.is_upgradeable_loader_present() { error_counters.invalid_writable_account += 1; @@ -333,11 +328,10 @@ impl Accounts { if account.executable() { // The upgradeable loader requires the derived ProgramData account - if let Ok(UpgradeableLoaderState::Program { + if let Ok(wasm_loader_upgradeable::UpgradeableLoaderState::Program { programdata_address, }) = account.state() { - dbg!(programdata_address); if let Some((programdata_account, _)) = self .accounts_db .load_with_fixed_root(ancestors, &programdata_address) @@ -495,7 +489,7 @@ impl Accounts { account_indices.insert(0, program_account_index); if wasm_loader_upgradeable::check_id(&program_owner) { // The upgradeable loader requires the derived ProgramData account - if let Ok(UpgradeableLoaderState::Program { + if let Ok(wasm_loader_upgradeable::UpgradeableLoaderState::Program { programdata_address, }) = program.state() { diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 6dc18a02..a9121f10 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -4565,7 +4565,6 @@ impl Bank { error_counters: &mut TransactionErrorMetrics, ) -> TransactionExecutionResult { let mut get_executors_time = Measure::start("get_executors_time"); - // get_executors let executors = self.get_executors(&loaded_transaction.accounts); get_executors_time.stop(); saturating_add_assign!( @@ -4574,15 +4573,7 @@ impl Bank { ); let mut transaction_accounts = Vec::new(); - // loaded_transaction.accounts - // if loaded_transaction.accounts.iter().any(|(pk, _)| { - // let pk = format!("{pk}"); - // pk.contains("11111111") && pk != "Vote111111111111111111111111111111111111111" - // }) { - // dbg!(&loaded_transaction.accounts); - // } std::mem::swap(&mut loaded_transaction.accounts, &mut transaction_accounts); - // TransactionContext::new let mut transaction_context = TransactionContext::new( transaction_accounts, compute_budget.max_invoke_depth.saturating_add(1), diff --git a/runtime/src/snapshot_minimizer.rs b/runtime/src/snapshot_minimizer.rs index d58c5e18..8b121b07 100644 --- a/runtime/src/snapshot_minimizer.rs +++ b/runtime/src/snapshot_minimizer.rs @@ -16,8 +16,7 @@ use { domichain_sdk::{ account::ReadableAccount, account_utils::StateMut, - // bpf_loader_upgradeable::{self, UpgradeableLoaderState}, - wasm_loader_upgradeable::{self, UpgradeableLoaderState}, + wasm_loader_upgradeable, clock::Slot, pubkey::Pubkey, sdk_ids, @@ -202,7 +201,7 @@ impl<'a> SnapshotMinimizer<'a> { .filter(|account| account.executable()) .filter(|account| wasm_loader_upgradeable::check_id(account.owner())) .filter_map(|account| { - if let Ok(UpgradeableLoaderState::Program { + if let Ok(wasm_loader_upgradeable::UpgradeableLoaderState::Program { programdata_address, }) = account.state() { diff --git a/sdk/program/src/instruction.rs b/sdk/program/src/instruction.rs index 79d3b527..bafd3788 100644 --- a/sdk/program/src/instruction.rs +++ b/sdk/program/src/instruction.rs @@ -48,7 +48,6 @@ pub enum InstructionError { InvalidInstructionData, /// An account's data contents was invalid - // Error: Deploying program failed: Error processing Instruction 1: invalid account data for instruction #[error("invalid account data for instruction")] InvalidAccountData, diff --git a/sdk/src/transaction_context.rs b/sdk/src/transaction_context.rs index 7fd68ca0..a58eded5 100644 --- a/sdk/src/transaction_context.rs +++ b/sdk/src/transaction_context.rs @@ -45,7 +45,7 @@ pub struct TransactionContext { account_keys: Pin>, accounts: Pin]>>, instruction_context_capacity: usize, - pub instruction_stack: Vec, + instruction_stack: Vec, number_of_instructions_at_transaction_level: usize, instruction_trace: InstructionTrace, return_data: TransactionReturnData, diff --git a/transaction-status/src/parse_wasm_loader.rs b/transaction-status/src/parse_wasm_loader.rs index e4e34ce6..8dddaa96 100644 --- a/transaction-status/src/parse_wasm_loader.rs +++ b/transaction-status/src/parse_wasm_loader.rs @@ -169,5 +169,3 @@ fn check_num_bpf_upgradeable_loader_accounts( ) -> Result<(), ParseInstructionError> { check_num_accounts(accounts, num, ParsableProgram::BpfUpgradeableLoader) } - -