Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,9 @@ pub fn fast_process_instruction(
discriminator::DlpDiscriminator::CommitState => Some(
processor::fast::process_commit_state(program_id, accounts, data),
),
discriminator::DlpDiscriminator::CommitStateFromBuffer => Some(
processor::fast::process_commit_state_from_buffer(program_id, accounts, data),
),
discriminator::DlpDiscriminator::Undelegate => Some(processor::fast::process_undelegate(
program_id, accounts, data,
)),
Expand Down
46 changes: 46 additions & 0 deletions src/processor/fast/commit_state_from_buffer.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
use crate::args::CommitStateFromBufferArgs;
use crate::processor::fast::{process_commit_state_internal, CommitStateInternalArgs};

use borsh::BorshDeserialize;
use pinocchio::account_info::AccountInfo;
use pinocchio::program_error::ProgramError;
use pinocchio::pubkey::Pubkey;
use pinocchio::ProgramResult;

pub fn process_commit_state_from_buffer(
_program_id: &Pubkey,
accounts: &[AccountInfo],
data: &[u8],
) -> ProgramResult {
let args =
CommitStateFromBufferArgs::try_from_slice(data).map_err(|_| ProgramError::BorshIoError)?;

let commit_record_lamports = args.lamports;
let commit_record_nonce = args.nonce;
let allow_undelegation = args.allow_undelegation;

let [validator, delegated_account, commit_state_account, commit_record_account, delegation_record_account, delegation_metadata_account, state_buffer_account, validator_fees_vault, program_config_account, system_program] =
accounts
else {
return Err(ProgramError::NotEnoughAccountKeys);
};
let state = state_buffer_account.try_borrow_data()?;
let commit_state_bytes: &[u8] = &state;

let commit_args = CommitStateInternalArgs {
commit_state_bytes,
commit_record_lamports,
commit_record_nonce,
allow_undelegation,
validator,
delegated_account,
commit_state_account,
commit_record_account,
delegation_record_account,
delegation_metadata_account,
validator_fees_vault,
program_config_account,
system_program,
};
process_commit_state_internal(commit_args)
}
2 changes: 2 additions & 0 deletions src/processor/fast/mod.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
mod commit_state;
mod commit_state_from_buffer;
mod delegate;
mod undelegate;
mod utils;

pub use commit_state::*;
pub use commit_state_from_buffer::*;
pub use delegate::*;
pub use undelegate::*;

Expand Down