From 722dfc94d6e1f39adfb7a1417482a0a8d50429e3 Mon Sep 17 00:00:00 2001 From: taco-paco Date: Thu, 19 Feb 2026 17:09:37 +0800 Subject: [PATCH 1/2] fix: MagicContext's data reset on restart --- magicblock-api/src/fund_account.rs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/magicblock-api/src/fund_account.rs b/magicblock-api/src/fund_account.rs index 12583887b..af8dbc9ca 100644 --- a/magicblock-api/src/fund_account.rs +++ b/magicblock-api/src/fund_account.rs @@ -70,15 +70,24 @@ pub(crate) fn funded_faucet( } pub(crate) fn fund_magic_context(accountsdb: &AccountsDb) { - fund_account_with_data( - accountsdb, - &magic_program::MAGIC_CONTEXT_PUBKEY, - u64::MAX, - MagicContext::SIZE, - ); - let mut magic_context = accountsdb - .get_account(&magic_program::MAGIC_CONTEXT_PUBKEY) - .unwrap(); + const CONTEXT_LAMPORTS: u64 = u64::MAX; + + let mut magic_context = if let Some(mut acc) = + accountsdb.get_account(&magic_program::MAGIC_CONTEXT_PUBKEY) + { + // If account exists it was created with correct size + // Account data shall be preserved across restarts + acc.set_lamports(CONTEXT_LAMPORTS); + acc + } else { + // Create MagicContext on a fresh start + // Sets data to [0; MagicContext::SIZE] + AccountSharedData::new( + CONTEXT_LAMPORTS, + MagicContext::SIZE, + &Default::default(), + ) + }; magic_context.set_delegated(true); let _ = accountsdb .insert_account(&magic_program::MAGIC_CONTEXT_PUBKEY, &magic_context); From 8e85535ec34677671e39c53af7b214f6f013a920 Mon Sep 17 00:00:00 2001 From: taco-paco Date: Mon, 23 Feb 2026 22:18:55 +0800 Subject: [PATCH 2/2] fix: comment --- magicblock-api/src/fund_account.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/magicblock-api/src/fund_account.rs b/magicblock-api/src/fund_account.rs index e64934a66..3e9e4e2f0 100644 --- a/magicblock-api/src/fund_account.rs +++ b/magicblock-api/src/fund_account.rs @@ -28,12 +28,10 @@ pub(crate) fn fund_account_with_data( lamports: u64, size: usize, ) { - let account = if let Some(mut acc) = accountsdb.get_account(pubkey) { - acc.set_lamports(lamports); - acc - } else { - AccountSharedData::new(lamports, size, &Default::default()) - }; + if accountsdb.get_account(pubkey).is_some() { + return; + } + let account = AccountSharedData::new(lamports, size, &Default::default()); let _ = accountsdb.insert_account(pubkey, &account); }