This commit is contained in:
Hardhat Chad
2025-10-09 16:36:38 -07:00
parent 25ec6250c4
commit 838f059a33
7 changed files with 84 additions and 45 deletions

View File

@@ -22,7 +22,7 @@ pub fn process_bury(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult
board_info.as_account_mut::<Board>(&ore_api::ID)?;
config_info
.as_account::<Config>(&ore_api::ID)?
.assert(|c| c.admin == *signer_info.key)?;
.assert(|c| c.bury_authority == *signer_info.key)?;
mint_info.has_address(&MINT_ADDRESS)?.as_mint()?;
let treasury = treasury_info.as_account_mut::<Treasury>(&ore_api::ID)?;
let treasury_ore =

View File

@@ -11,7 +11,7 @@ mod deploy;
mod deposit;
mod log;
// mod migrate_miner;
// mod migrate_treasury;
mod migrate_treasury;
mod reset;
mod set_admin;
mod set_fee_collector;

View File

@@ -1,49 +1,46 @@
use ore_api::prelude::*;
use solana_program::rent::Rent;
use solana_program::{pubkey, rent::Rent};
use steel::*;
/// Sets the admin.
pub fn process_migrate_treasury(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult {
// Load accounts.
let [signer_info, config_info, treasury_info, system_program] = accounts else {
let [signer_info, config_info, system_program] = accounts else {
return Err(ProgramError::NotEnoughAccountKeys);
};
signer_info.is_signer()?;
let config = config_info
.as_account_mut::<Config>(&ore_api::ID)?
.as_account_mut::<ConfigOLD>(&ore_api::ID)?
.assert_mut_err(
|c| c.admin == *signer_info.key,
OreError::NotAuthorized.into(),
)?;
let treasury = treasury_info.as_account_mut::<TreasuryOLD>(&ore_api::ID)?;
system_program.is_program(&system_program::ID)?;
// Record old values.
let balance = treasury.balance;
let motherlode = treasury.motherlode;
let stake_rewards_factor = treasury.stake_rewards_factor;
let total_staked = treasury.total_staked;
let total_unclaimed = treasury.total_unclaimed;
let miner_rewards_factor = treasury.miner_rewards_factor;
let admin = config.admin;
let fee_collector = config.fee_collector;
let last_boost = config.last_boost;
let is_seeker_activation_enabled = config.is_seeker_activation_enabled;
// Realloc treasury.
let new_size = 8 + std::mem::size_of::<Treasury>();
let old_size = 8 + std::mem::size_of::<TreasuryOLD>();
let new_size = 8 + std::mem::size_of::<Config>();
let old_size = 8 + std::mem::size_of::<ConfigOLD>();
let new_rent = Rent::get()?.minimum_balance(new_size);
let old_rent = Rent::get()?.minimum_balance(old_size);
let additional_rent = new_rent - old_rent;
treasury_info.realloc(new_size, false)?;
treasury_info.collect(additional_rent, &signer_info)?;
config_info.realloc(new_size, false)?;
if new_size > old_size {
let additional_rent = new_rent.saturating_sub(old_rent);
config_info.collect(additional_rent, &signer_info)?;
}
// Update treasury.
let treasury = treasury_info.as_account_mut::<Treasury>(&ore_api::ID)?;
treasury.balance = balance;
treasury.motherlode = motherlode;
treasury.stake_rewards_factor = stake_rewards_factor;
treasury.total_staked = total_staked;
treasury.total_unclaimed = total_unclaimed;
treasury.miner_rewards_factor = miner_rewards_factor;
treasury.total_refined = 0;
// Update config.
let config = config_info.as_account_mut::<Config>(&ore_api::ID)?;
config.admin = admin;
config.fee_collector = fee_collector;
config.bury_authority = pubkey!("HNWhK5f8RMWBqcA7mXJPaxdTPGrha3rrqUrri7HSKb3T");
config.last_boost = last_boost;
config.is_seeker_activation_enabled = is_seeker_activation_enabled;
Ok(())
}