Skip to content

Commit 73abc1c

Browse files
committed
demo
1 parent 865d16e commit 73abc1c

8 files changed

Lines changed: 46 additions & 45 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ pinocchio-system = { version = "0.3.0", optional = true }
4747
rkyv = { version = "0.7.45", optional = true }
4848
solana-curve25519 = { version = ">=2.2", optional = true }
4949
solana-program = { version = ">=1.16, <3.0.0" }
50+
solana-sha256-hasher = "3.1.0"
5051
solana-security-txt = { version = ">=1.1", optional = true }
5152
static_assertions = "1.1.0"
5253
strum = { version = ">=0.27", features = ["derive"] }

src/args/args_with_buffer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ impl<'a, H: Pod> ArgsWithBuffer<'a, H> {
2323
}
2424
}
2525

26-
impl<'a, H> Deref for ArgsWithBuffer<'a, H> {
26+
impl<H> Deref for ArgsWithBuffer<'_, H> {
2727
type Target = H;
2828
fn deref(&self) -> &Self::Target {
2929
self.header

src/args/commit_state.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ use borsh::{BorshDeserialize, BorshSerialize};
55

66
use crate::args::ArgsWithBuffer;
77

8+
#[repr(C)]
9+
#[derive(Copy, Clone, Pod, Zeroable, Default)]
10+
pub struct CommitBumps {
11+
/// bumps of the PDA accounts to be validated by ix
12+
pub delegation_record: u8,
13+
pub delegation_metadata: u8,
14+
pub validator_fees_vault: u8,
15+
pub program_config: u8,
16+
}
17+
818
#[repr(C)]
919
#[derive(Copy, Clone, Pod, Zeroable)]
1020
pub struct CommitFinalizeArgs {
@@ -20,10 +30,7 @@ pub struct CommitFinalizeArgs {
2030
pub data_is_diff: u8,
2131

2232
/// bumps of the PDA accounts to be validated by the ix
23-
pub delegation_record_bump: u8,
24-
pub delegation_metadata_bump: u8,
25-
pub validator_fees_vault_bump: u8,
26-
pub program_config_bump: u8,
33+
pub bumps: CommitBumps,
2734

2835
pub reserved_padding: [u8; 2],
2936
}

src/instruction_builder/commit_finalize.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use solana_program::instruction::Instruction;
22
use solana_program::system_program;
33
use solana_program::{instruction::AccountMeta, pubkey::Pubkey};
44

5-
use crate::args::CommitFinalizeArgs;
5+
use crate::args::{CommitBumps, CommitFinalizeArgs};
66
use crate::discriminator::DlpDiscriminator;
77
use crate::pod_view::PodView;
88
use crate::{
@@ -42,10 +42,12 @@ pub fn commit_finalize(
4242
);
4343

4444
// save the bumps in the args
45-
commit_args.delegation_record_bump = delegation_record.1;
46-
commit_args.delegation_metadata_bump = delegation_metadata.1;
47-
commit_args.validator_fees_vault_bump = validator_fees_vault.1;
48-
commit_args.program_config_bump = program_config.1;
45+
commit_args.bumps = CommitBumps {
46+
delegation_record: delegation_record.1,
47+
delegation_metadata: delegation_metadata.1,
48+
validator_fees_vault: validator_fees_vault.1,
49+
program_config: program_config.1,
50+
};
4951

5052
Instruction {
5153
program_id: crate::id(),

src/processor/fast/commit_finalize.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,11 @@ pub fn process_commit_finalize(
5959
let args = CommitFinalizeArgsWithBuffer::from_bytes(data)?;
6060

6161
let commit_args = CommitFinalizeInternalArgs {
62-
delegation_record_bump: args.delegation_record_bump,
63-
delegation_metadata_bump: args.delegation_metadata_bump,
64-
validator_fees_vault_bump: args.validator_fees_vault_bump,
65-
program_config_bump: args.program_config_bump,
62+
bumps: &args.bumps,
6663
new_state: match args.data_is_diff {
67-
0 => NewState::FullBytes(&args.buffer),
64+
0 => NewState::FullBytes(args.buffer),
6865
1 => {
69-
let diffset = DiffSet::try_new(&args.buffer)?;
66+
let diffset = DiffSet::try_new(args.buffer)?;
7067
if diffset.segments_count() == 0 {
7168
log!("WARN: noop; empty diff sent");
7269
}

src/processor/fast/commit_finalize_internal.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,21 @@ use pinocchio::pubkey::{self, pubkey_eq, PDA_MARKER};
22
use pinocchio::{account_info::AccountInfo, program_error::ProgramError};
33
use pinocchio_log::log;
44

5+
use crate::args::CommitBumps;
56
use crate::error::DlpError;
67
use crate::pod_view::PodView;
78
use crate::processor::fast::NewState;
89
use crate::state::{DelegationMetadata, DelegationMetadataFast, DelegationRecord, ProgramConfig};
910
use crate::{
1011
apply_diff_in_place, pda, require_initialized_pda, require_initialized_pda_unsafe,
11-
require_owned_by, require_pda, require_program_config, require_program_config_unsafe,
12-
require_signer,
12+
require_owned_by, require_program_config, require_program_config_unsafe, require_signer,
1313
};
1414

1515
use super::to_pinocchio_program_error;
1616

1717
/// Arguments for the commit state internal function
1818
pub(crate) struct CommitFinalizeInternalArgs<'a> {
19-
pub(crate) delegation_record_bump: u8,
20-
pub(crate) delegation_metadata_bump: u8,
21-
pub(crate) validator_fees_vault_bump: u8,
22-
pub(crate) program_config_bump: u8,
19+
pub(crate) bumps: &'a CommitBumps,
2320
pub(crate) new_state: NewState<'a>,
2421
pub(crate) commit_id: u64,
2522
pub(crate) allow_undelegation: bool,
@@ -48,7 +45,7 @@ pub(crate) fn process_commit_finalize_internal(
4845
&[
4946
pda::DELEGATION_RECORD_TAG,
5047
args.delegated_account.key(),
51-
&[args.delegation_record_bump]
48+
&[args.bumps.delegation_record]
5249
],
5350
&crate::fast::ID,
5451
false
@@ -59,7 +56,7 @@ pub(crate) fn process_commit_finalize_internal(
5956
&[
6057
pda::DELEGATION_METADATA_TAG,
6158
args.delegated_account.key(),
62-
&[args.delegation_metadata_bump]
59+
&[args.bumps.delegation_metadata]
6360
],
6461
&crate::fast::ID,
6562
true
@@ -70,7 +67,7 @@ pub(crate) fn process_commit_finalize_internal(
7067
&[
7168
pda::VALIDATOR_FEES_VAULT_TAG,
7269
args.validator.key(),
73-
&[args.validator_fees_vault_bump]
70+
&[args.bumps.validator_fees_vault]
7471
],
7572
&crate::fast::ID,
7673
false
@@ -81,7 +78,7 @@ pub(crate) fn process_commit_finalize_internal(
8178
&[
8279
pda::DELEGATION_RECORD_TAG,
8380
args.delegated_account.key(),
84-
&[args.delegation_record_bump],
81+
&[args.bumps.delegation_record],
8582
&crate::fast::ID,
8683
PDA_MARKER
8784
],
@@ -94,7 +91,7 @@ pub(crate) fn process_commit_finalize_internal(
9491
&[
9592
pda::DELEGATION_METADATA_TAG,
9693
args.delegated_account.key(),
97-
&[args.delegation_metadata_bump],
94+
&[args.bumps.delegation_metadata],
9895
&crate::fast::ID,
9996
PDA_MARKER
10097
],
@@ -107,7 +104,7 @@ pub(crate) fn process_commit_finalize_internal(
107104
&[
108105
pda::VALIDATOR_FEES_VAULT_TAG,
109106
args.validator.key(),
110-
&[args.validator_fees_vault_bump],
107+
&[args.bumps.validator_fees_vault],
111108
&crate::fast::ID,
112109
PDA_MARKER
113110
],
@@ -210,19 +207,19 @@ pub(crate) fn process_commit_finalize_internal(
210207
// Load the program configuration and validate it, if any
211208

212209
// OPTIMIZE 1
213-
if true {
210+
if false {
214211
let has_program_config = if USE_SAFE {
215212
require_program_config!(
216213
args.program_config_account,
217214
delegation_record.owner.as_array(),
218-
args.program_config_bump,
215+
args.bumps.program_config,
219216
false
220217
)
221218
} else {
222219
require_program_config_unsafe!(
223220
args.program_config_account,
224221
delegation_record.owner.as_array(),
225-
args.program_config_bump,
222+
args.bumps.program_config,
226223
false
227224
)
228225
};

src/processor/fast/utils/requires.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -364,10 +364,10 @@ macro_rules! require_pda_unsafe {
364364
#[macro_export]
365365
macro_rules! require_program_config {
366366
($program_config: expr, $program: expr, $bump: expr, $is_writable: expr) => {{
367-
require_pda!(
367+
$crate::require_pda!(
368368
$program_config,
369369
&[pda::PROGRAM_CONFIG_TAG, $program, &[$bump]],
370-
&crate::fast::ID,
370+
&$crate::fast::ID,
371371
$is_writable
372372
);
373373
!pubkey_eq($program_config.owner(), &pinocchio_system::ID)
@@ -377,16 +377,16 @@ macro_rules! require_program_config {
377377
#[macro_export]
378378
macro_rules! require_program_config_unsafe {
379379
($program_config: expr, $program: expr, $bump: expr, $is_writable: expr) => {{
380-
crate::require_pda_unsafe!(
380+
$crate::require_pda_unsafe!(
381381
$program_config,
382382
&[
383383
pda::PROGRAM_CONFIG_TAG,
384384
$program,
385385
&[$bump],
386-
&crate::fast::ID,
386+
&$crate::fast::ID,
387387
PDA_MARKER
388388
],
389-
&crate::fast::ID,
389+
&$crate::fast::ID,
390390
$is_writable
391391
);
392392
!pubkey_eq($program_config.owner(), &pinocchio_system::ID)

tests/test_commit_finalize.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,16 @@ mod fixtures;
2323
#[tokio::test]
2424
async fn test_commit_finalize() {
2525
// Setup
26-
let (banks, _, authority, blockhash) = setup_program_test_env().await;
27-
let new_state: Vec<u8> = (0..255).collect();
26+
let (banks, _, authority, blockhash) = setup_program_test_env(vec![0; 10240]).await;
27+
let new_state: Vec<u8> = vec![1; 10240];
2828

2929
let new_account_balance = 1_000_000;
3030
let mut commit_args = CommitFinalizeArgs {
3131
commit_id: 1,
3232
allow_undelegation: 1,
3333
data_is_diff: 0,
34-
delegation_metadata_bump: 0,
35-
delegation_record_bump: 0,
36-
validator_fees_vault_bump: 0,
37-
program_config_bump: 0,
3834
lamports: new_account_balance,
35+
bumps: Default::default(),
3936
reserved_padding: Default::default(),
4037
};
4138

@@ -78,7 +75,7 @@ async fn test_commit_out_of_order() {
7875
"transport transaction error: Error processing Instruction 0: custom program error: 0xc";
7976

8077
// Setup
81-
let (banks, _, authority, blockhash) = setup_program_test_env().await;
78+
let (banks, _, authority, blockhash) = setup_program_test_env(vec![]).await;
8279
let new_state = vec![0, 1, 2, 9, 9, 9, 6, 7, 8, 9];
8380

8481
let new_account_balance = 1_000_000;
@@ -109,7 +106,7 @@ async fn test_commit_out_of_order() {
109106
);
110107
}
111108

112-
async fn setup_program_test_env() -> (BanksClient, Keypair, Keypair, Hash) {
109+
async fn setup_program_test_env(pda_data: Vec<u8>) -> (BanksClient, Keypair, Keypair, Hash) {
113110
let mut program_test = ProgramTest::new("dlp", dlp::ID, None);
114111
program_test.prefer_bpf(true);
115112

@@ -131,7 +128,7 @@ async fn setup_program_test_env() -> (BanksClient, Keypair, Keypair, Hash) {
131128
DELEGATED_PDA_ID,
132129
Account {
133130
lamports: LAMPORTS_PER_SOL,
134-
data: vec![],
131+
data: pda_data,
135132
owner: dlp::id(),
136133
executable: false,
137134
rent_epoch: 0,

0 commit comments

Comments
 (0)