Skip to content

Commit

Permalink
comments
Browse files Browse the repository at this point in the history
  • Loading branch information
kbhargava-jump committed Jul 30, 2024
1 parent ff36237 commit 14b8fb5
Showing 1 changed file with 19 additions and 26 deletions.
45 changes: 19 additions & 26 deletions src/flamenco/runtime/program/fd_stake_program.c
Original file line number Diff line number Diff line change
Expand Up @@ -2090,23 +2090,22 @@ move_stake_or_lamports_shared_checks( fd_exec_instr_ctx_t const * invoke_conte
ulong lamports,
fd_borrowed_account_t * destination_account,
ulong stake_authority_index,
fd_pubkey_t const * signers[static FD_TXN_SIG_MAX],
merge_kind_t * source_merge_kind,
merge_kind_t * destination_merge_kind,
uint * custom_err ) {
int rc;

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L145-L153
fd_pubkey_t const * stake_authority_pubkey = &invoke_context->instr->acct_pubkeys[stake_authority_index];
if( FD_UNLIKELY( !fd_instr_signers_contains( signers, stake_authority_pubkey ) ) ) {
if( FD_UNLIKELY( !fd_instr_acc_is_signer_idx( invoke_context->instr, stake_authority_index ) ) ) {
return FD_EXECUTOR_INSTR_ERR_MISSING_REQUIRED_SIGNATURE;
}

fd_pubkey_t const * check_signers[FD_TXN_SIG_MAX] = { stake_authority_pubkey };
fd_pubkey_t const * stake_authority_pubkey = &invoke_context->instr->acct_pubkeys[stake_authority_index];
fd_pubkey_t const * signers[FD_TXN_SIG_MAX] = { stake_authority_pubkey };

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L158
if( FD_UNLIKELY( 0!=memcmp( &source_account->meta->info.owner, fd_solana_stake_program_id.key, 32UL ) ||
0!=memcmp( &destination_account->meta->info.owner, fd_solana_stake_program_id.key, 32UL ) ) )
if( FD_UNLIKELY( 0!=memcmp( &source_account->meta->info.owner, fd_solana_stake_program_id.key, sizeof(fd_pubkey_t) ) ||
0!=memcmp( &destination_account->meta->info.owner, fd_solana_stake_program_id.key, sizeof(fd_pubkey_t) ) ) )
return FD_EXECUTOR_INSTR_ERR_INCORRECT_PROGRAM_ID;

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L163
Expand Down Expand Up @@ -2147,7 +2146,7 @@ move_stake_or_lamports_shared_checks( fd_exec_instr_ctx_t const * invoke_conte
return rc;

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L191
rc = authorized_check( &meta( source_merge_kind )->authorized, check_signers, STAKE_AUTHORIZE_STAKER );
rc = authorized_check( &meta( source_merge_kind )->authorized, signers, STAKE_AUTHORIZE_STAKER );
if( FD_UNLIKELY( rc ) )
return rc;

Expand Down Expand Up @@ -2178,7 +2177,6 @@ move_stake(fd_exec_instr_ctx_t const * ctx,
ulong lamports,
ulong destination_account_index,
ulong stake_authority_index,
fd_pubkey_t const * signers[static FD_TXN_SIG_MAX],
uint * custom_err ) {
int rc;

Expand All @@ -2192,14 +2190,13 @@ move_stake(fd_exec_instr_ctx_t const * ctx,
if( FD_UNLIKELY( rc ) ) return rc;

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L804
merge_kind_t source_merge_kind = { 0 };
merge_kind_t destination_merge_kind = { 0 };
merge_kind_t source_merge_kind = {0};
merge_kind_t destination_merge_kind = {0};
rc = move_stake_or_lamports_shared_checks( ctx,
source_account,
lamports,
destination_account,
stake_authority_index,
signers,
&source_merge_kind,
&destination_merge_kind,
&ctx->txn_ctx->custom_err );
Expand Down Expand Up @@ -2336,8 +2333,7 @@ move_lamports(fd_exec_instr_ctx_t const * ctx,
ulong source_account_index,
ulong lamports,
ulong destination_account_index,
ulong stake_authority_index,
fd_pubkey_t const * signers[static FD_TXN_SIG_MAX] ) {
ulong stake_authority_index ) {
int rc;

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L937-L942
Expand All @@ -2350,14 +2346,13 @@ move_lamports(fd_exec_instr_ctx_t const * ctx,
if( FD_UNLIKELY( rc ) ) return rc;

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L943
merge_kind_t source_merge_kind = { 0 };
merge_kind_t destination_merge_kind = { 0 };
merge_kind_t source_merge_kind = {0};
merge_kind_t destination_merge_kind = {0};
rc = move_stake_or_lamports_shared_checks( ctx,
source_account,
lamports,
destination_account,
stake_authority_index,
signers,
&source_merge_kind,
&destination_merge_kind,
&ctx->txn_ctx->custom_err );
Expand All @@ -2384,7 +2379,7 @@ move_lamports(fd_exec_instr_ctx_t const * ctx,
}

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_state.rs#L964
if ( lamports > source_free_lamports ) {
if ( FD_UNLIKELY( lamports > source_free_lamports ) ) {
return FD_EXECUTOR_INSTR_ERR_INVALID_ARG;
}

Expand Down Expand Up @@ -3294,17 +3289,16 @@ fd_stake_program_execute( fd_exec_instr_ctx_t ctx ) {
// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_instruction.rs#L359
if( FD_LIKELY( FD_FEATURE_ACTIVE( ctx.slot_ctx, move_stake_and_move_lamports_ixs ) ) ) {
// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_instruction.rs#L361
if( FD_UNLIKELY( ctx.instr->acct_cnt < 3 ) )
if( FD_UNLIKELY( ctx.instr->acct_cnt<3 ) )
return FD_EXECUTOR_INSTR_ERR_NOT_ENOUGH_ACC_KEYS;

ulong lamports = instruction->inner.move_stake;
// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_instruction.rs#L362
rc = move_stake( &ctx,
0,
0UL,
lamports,
1,
2,
signers,
1UL,
2UL,
&ctx.txn_ctx->custom_err );
} else {
// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_instruction.rs#L372
Expand Down Expand Up @@ -3332,11 +3326,10 @@ fd_stake_program_execute( fd_exec_instr_ctx_t ctx ) {

// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_instruction.rs#L381
rc = move_lamports( &ctx,
0,
0UL,
lamports,
1,
2,
signers );
1UL,
2UL );
} else {
// https://github.com/anza-xyz/agave/blob/cdff19c7807b006dd63429114fb1d9573bf74172/programs/stake/src/stake_instruction.rs#L391
return FD_EXECUTOR_INSTR_ERR_INVALID_INSTR_DATA;
Expand Down

0 comments on commit 14b8fb5

Please sign in to comment.