This commit is contained in:
Hardhat Chad
2025-06-25 09:05:27 -05:00
parent 0c2b6a087e
commit c23bd5a9c6
8 changed files with 86 additions and 27 deletions

View File

@@ -14,12 +14,20 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul
let block = block_info
.as_account_mut::<Block>(&ore_api::ID)?
.assert_mut(|b| clock.slot >= b.start_slot + 1500)?;
let _collateral = collateral_info
collateral_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_quote_info.key)?;
let commitment = commitment_info
.has_address(&collateral_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_quote_info.key)?
.assert(|t| t.owner() == *market_info.key)?;
// .as_associated_token_account(block_info.key, mint_quote_info.key)?;
commitment_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_base_info.key)?;
.has_address(&commitment_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_base_info.key)?
.assert(|t| t.owner() == *block_info.key)?;
// commitment_info.as_associated_token_account(block_info.key, mint_base_info.key)?;
let market = market_info
.as_account_mut::<Market>(&ore_api::ID)?
.assert_mut(|m| m.id == block.id)?;
@@ -28,12 +36,20 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul
treasury_info
.is_writable()?
.has_address(&TREASURY_ADDRESS)?;
let vault_base = vault_base_info
vault_base_info
.is_writable()?
.as_associated_token_account(market_info.key, mint_base_info.key)?;
let vault_quote = vault_quote_info
.has_address(&vault_base_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_base_info.key)?
.assert(|t| t.owner() == *market_info.key)?;
// .as_associated_token_account(market_info.key, mint_base_info.key)?;
vault_quote_info
.is_writable()?
.as_associated_token_account(market_info.key, mint_quote_info.key)?;
.has_address(&vault_quote_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_quote_info.key)?
.assert(|t| t.owner() == *market_info.key)?;
// .as_associated_token_account(market_info.key, mint_quote_info.key)?;
system_program.is_program(&system_program::ID)?;
token_program.is_program(&spl_token::ID)?;
@@ -65,6 +81,7 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul
}
// Burn base liquidity.
let vault_base = vault_base_info.as_token_account()?;
let base_burned = vault_base.amount();
burn_signed(
vault_base_info,
@@ -76,6 +93,7 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul
)?;
// Burn quote liquidity.
let vault_quote = vault_quote_info.as_token_account()?;
let quote_burned = vault_quote.amount();
burn_signed(
vault_quote_info,
@@ -87,6 +105,7 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul
)?;
// Burn any remaining commitment.
let commitment = commitment_info.as_token_account()?;
let commitment_burned = commitment.amount();
burn_signed(
commitment_info,

View File

@@ -20,7 +20,12 @@ pub fn process_commit(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResul
let block = block_info
.as_account_mut::<Block>(&ore_api::ID)?
.assert_mut(|b| clock.slot < b.start_slot)?;
commitment_info.as_associated_token_account(block_info.key, mint_info.key)?;
commitment_info
.has_address(&commitment_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_info.key)?
.assert(|t| t.owner() == *block_info.key)?;
// commitment_info.as_associated_token_account(block_info.key, mint_info.key)?;
let market = market_info
.as_account::<Market>(&ore_api::ID)?
.assert(|m| m.id == block.id)?;

View File

@@ -20,7 +20,11 @@ pub fn process_deposit(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResu
.assert_mut(|b| clock.slot < b.start_slot)?;
collateral_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_ore_info.key)?;
.has_address(&collateral_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_ore_info.key)?
.assert(|t| t.owner() == *block_info.key)?;
// .as_associated_token_account(block_info.key, mint_ore_info.key)?;
mint_ore_info.has_address(&MINT_ADDRESS)?.as_mint()?;
sender_info
.is_writable()?

View File

@@ -24,7 +24,11 @@ pub fn process_mine(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult
.assert_mut(|b| clock.slot < b.start_slot + 1500)?;
commitment_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_hash_info.key)?;
.has_address(&commitment_pda(block.id).0)?
.as_token_account()?;
// .assert(|t| t.mint() == *mint_hash_info.key)?
// .assert(|t| t.owner() == *block_info.key)?;
// commitment_info.as_associated_token_account(block_info.key, mint_hash_info.key)?;
let market = market_info
.as_account::<Market>(&ore_api::ID)?
.assert(|m| m.id == block.id)?;

View File

@@ -22,7 +22,11 @@ pub fn process_swap(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult
.assert_mut(|b| clock.slot < b.start_slot)?;
collateral_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_quote_info.key)?;
.has_address(&collateral_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_quote_info.key)?
.assert(|t| t.owner() == *market_info.key)?;
// collateral_info.as_associated_token_account(block_info.key, mint_quote_info.key)?;
let market = market_info
.as_account_mut::<Market>(&ore_api::ID)?
.assert_mut(|m| m.id == block.id)?
@@ -36,10 +40,18 @@ pub fn process_swap(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult
.assert_mut(|p| p.block_id == block.id)?;
vault_base_info
.is_writable()?
.as_associated_token_account(market_info.key, mint_base_info.key)?;
.has_address(&vault_base_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_base_info.key)?
.assert(|t| t.owner() == *market_info.key)?;
// vault_base_info.as_associated_token_account(market_info.key, mint_base_info.key)?;
vault_quote_info
.is_writable()?
.as_associated_token_account(market_info.key, mint_quote_info.key)?;
.has_address(&vault_quote_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_quote_info.key)?
.assert(|t| t.owner() == *market_info.key)?;
// vault_quote_info.as_associated_token_account(market_info.key, mint_quote_info.key)?;
system_program.is_program(&system_program::ID)?;
token_program.is_program(&spl_token::ID)?;
associated_token_program.is_program(&spl_associated_token_account::ID)?;

View File

@@ -20,7 +20,11 @@ pub fn process_uncommit(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramRes
.assert_mut(|b| clock.slot < b.start_slot)?;
commitment_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_info.key)?;
.has_address(&commitment_pda(block.id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_info.key)?
.assert(|t| t.owner() == *block_info.key)?;
// commitment_info.as_associated_token_account(block_info.key, mint_info.key)?;
let market = market_info
.as_account::<Market>(&ore_api::ID)?
.assert(|m| m.id == block.id)?;

View File

@@ -15,9 +15,7 @@ pub fn process_withdraw(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramRes
return Err(ProgramError::NotEnoughAccountKeys);
};
signer_info.is_signer()?;
collateral_info
.is_writable()?
.as_associated_token_account(block_info.key, mint_ore_info.key)?;
// .as_associated_token_account(block_info.key, mint_ore_info.key)?;
mint_ore_info.has_address(&MINT_ADDRESS)?.as_mint()?;
recipient_info
.is_writable()?
@@ -26,6 +24,12 @@ pub fn process_withdraw(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramRes
.as_account_mut::<Stake>(&ore_api::ID)?
.assert_mut(|p| p.authority == *signer_info.key)?;
block_info.has_seeds(&[BLOCK, &stake.block_id.to_le_bytes()], &ore_api::ID)?;
collateral_info
.is_writable()?
.has_address(&collateral_pda(stake.block_id).0)?
.as_token_account()?
.assert(|t| t.mint() == *mint_ore_info.key)?
.assert(|t| t.owner() == *block_info.key)?;
system_program.is_program(&system_program::ID)?;
token_program.is_program(&spl_token::ID)?;