From ab57634f7f8df5c539950bb6b2f507729e730c19 Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Tue, 24 Jun 2025 16:38:06 -0500 Subject: [PATCH] new events --- Cargo.lock | 1 + Cargo.toml | 1 + api/Cargo.toml | 1 + api/src/event.rs | 20 ++++++++++++++++++++ api/src/sdk.rs | 2 ++ program/src/commit.rs | 8 ++++++++ 6 files changed, 33 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f3b1a34..bcd7774 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2460,6 +2460,7 @@ dependencies = [ name = "ore-api" version = "3.7.0" dependencies = [ + "base64 0.22.1", "bytemuck", "const-crypto", "mpl-token-metadata", diff --git a/Cargo.toml b/Cargo.toml index f00581b..1f87aaf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ keywords = ["solana", "crypto", "mining"] [workspace.dependencies] anyhow = "1.0" +base64 = "0.22.1" bincode = "1.3.3" bytemuck = "1.14.3" bytemuck_derive = "1.7.0" diff --git a/api/Cargo.toml b/api/Cargo.toml index 75e6384..3095cf1 100644 --- a/api/Cargo.toml +++ b/api/Cargo.toml @@ -10,6 +10,7 @@ repository.workspace = true keywords.workspace = true [dependencies] +base64.workspace = true bytemuck.workspace = true const-crypto.workspace = true mpl-token-metadata.workspace = true diff --git a/api/src/event.rs b/api/src/event.rs index 5ac4c5b..63c9f94 100644 --- a/api/src/event.rs +++ b/api/src/event.rs @@ -260,3 +260,23 @@ event!(WithdrawEvent); event!(UncommitEvent); event!(MineEvent); event!(CloseEvent); + +#[cfg(test)] +mod tests { + use super::*; + use base64::{prelude::BASE64_STANDARD, Engine}; + + #[test] + fn test_parse_commit_event() { + // Create sample return data + let data = "BQAAAAAAAAB9607Qp9I2VxNo2rSPHAz/tR2pJzGu9om7qHP71TpKqciMAwAAAAAAAAAAAAAAAAA2CwUAAAAAAADodkgXAAAAAAAAAAAAAAAAAAAAAAAAADYLBQAAAAAAAB7cDBcAAAAAypo7AAAAAMMQW2gAAAAA"; + let bytes = BASE64_STANDARD.decode(data).unwrap(); + + // Parse into CommitEvent + let event: &SwapEvent = bytemuck::try_from_bytes(&bytes).unwrap(); + + // Verify fields + println!("{:?}", event); + assert!(false); + } +} diff --git a/api/src/sdk.rs b/api/src/sdk.rs index 34c2da3..c9a60d3 100644 --- a/api/src/sdk.rs +++ b/api/src/sdk.rs @@ -93,6 +93,8 @@ pub fn mine(signer: Pubkey, id: u64, amount: u64) -> Instruction { } } +// let [signer_info, block_info, commitment_info, market_info, miner_info, mint_info, permit_info, sender_info, system_program, token_program] = + pub fn commit( signer: Pubkey, amount: u64, diff --git a/program/src/commit.rs b/program/src/commit.rs index ee46c24..785ed32 100644 --- a/program/src/commit.rs +++ b/program/src/commit.rs @@ -1,4 +1,5 @@ use ore_api::prelude::*; +use solana_program::log::sol_log; use steel::*; /// Commit to a block. @@ -17,18 +18,25 @@ pub fn process_commit(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResul return Err(ProgramError::NotEnoughAccountKeys); }; signer_info.is_signer()?; + sol_log("A"); let block = block_info .as_account_mut::(&ore_api::ID)? .assert_mut(|b| clock.slot < b.start_slot)?; + sol_log("B"); commitment_info.as_associated_token_account(block_info.key, mint_info.key)?; + sol_log("C"); let market = market_info .as_account::(&ore_api::ID)? .assert(|m| m.id == block.id)?; + sol_log("D"); mint_info.has_address(&market.base.mint)?.as_mint()?; + sol_log("E"); let sender = sender_info .is_writable()? .as_associated_token_account(signer_info.key, &mint_info.key)?; + sol_log("F"); system_program.is_program(&system_program::ID)?; + sol_log("G"); token_program.is_program(&spl_token::ID)?; // Normalize amount.