From 861b7119c82d5e605d3d4c5e214a8d9a16247225 Mon Sep 17 00:00:00 2001 From: Thorsten Lorenz Date: Fri, 21 Nov 2025 22:05:54 +0400 Subject: [PATCH 1/3] chore: keep undelegating and delegated accounts on startup with accountsdb --- magicblock-chainlink/src/chainlink/mod.rs | 26 +++++++++++++---------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/magicblock-chainlink/src/chainlink/mod.rs b/magicblock-chainlink/src/chainlink/mod.rs index c5805c688..0e4713552 100644 --- a/magicblock-chainlink/src/chainlink/mod.rs +++ b/magicblock-chainlink/src/chainlink/mod.rs @@ -149,8 +149,8 @@ impl let blacklisted_accounts = blacklisted_accounts(&self.validator_id, &self.faucet_id); - let delegated = AtomicU64::new(0); - let dlp_owned_not_delegated = AtomicU64::new(0); + let delegated_only = AtomicU64::new(0); + let undelegating = AtomicU64::new(0); let blacklisted = AtomicU64::new(0); let remaining = AtomicU64::new(0); let remaining_empty = AtomicU64::new(0); @@ -160,13 +160,12 @@ impl blacklisted.fetch_add(1, Ordering::Relaxed); return false; } - // TODO: this potentially looses data and is a temporary measure - if account.owner().eq(&dlp::id()) { - dlp_owned_not_delegated.fetch_add(1, Ordering::Relaxed); - return true; - } if account.delegated() { - delegated.fetch_add(1, Ordering::Relaxed); + if account.undelegating() { + undelegating.fetch_add(1, Ordering::Relaxed); + } else { + delegated_only.fetch_add(1, Ordering::Relaxed); + } return false; } trace!( @@ -186,16 +185,21 @@ impl .load(Ordering::Relaxed) .saturating_sub(remaining_empty.load(Ordering::Relaxed)); + let delegated_only = delegated_only.into_inner(); + let undelegating = undelegating.into_inner(); + info!( "Removed {removed} accounts from bank: -{} DLP-owned non-delegated {} non-delegated non-blacklisted, no-feature non-empty. {} non-delegated non-blacklisted empty +{} delegated not undelegating +{} delegated and undelegating Kept: {} delegated, {} blacklisted", - dlp_owned_not_delegated.into_inner(), non_empty, remaining_empty.into_inner(), - delegated.into_inner(), + undelegating, + delegated_only, + delegated_only + undelegating, blacklisted.into_inner() ); } From a9334f700b6792c68f3038de6487ccdc2be8c237 Mon Sep 17 00:00:00 2001 From: Thorsten Lorenz Date: Fri, 21 Nov 2025 22:11:37 +0400 Subject: [PATCH 2/3] chore: super safe removal protection --- magicblock-chainlink/src/chainlink/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/magicblock-chainlink/src/chainlink/mod.rs b/magicblock-chainlink/src/chainlink/mod.rs index 0e4713552..f48a8ce05 100644 --- a/magicblock-chainlink/src/chainlink/mod.rs +++ b/magicblock-chainlink/src/chainlink/mod.rs @@ -160,7 +160,10 @@ impl blacklisted.fetch_add(1, Ordering::Relaxed); return false; } - if account.delegated() { + // Undelegating accounts are normally also delegated, but if that ever changes + // we want to make sure we never remove an account of which we aren't sure + // if the undelegation completed on chain or not. + if account.delegated() || account.undelegating() { if account.undelegating() { undelegating.fetch_add(1, Ordering::Relaxed); } else { From e5d31e9b14806e1a554e3d18c5fe6bccfb98cd9a Mon Sep 17 00:00:00 2001 From: Thorsten Lorenz Date: Fri, 21 Nov 2025 22:12:55 +0400 Subject: [PATCH 3/3] fix: log bug --- magicblock-chainlink/src/chainlink/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/magicblock-chainlink/src/chainlink/mod.rs b/magicblock-chainlink/src/chainlink/mod.rs index f48a8ce05..d2ced15c1 100644 --- a/magicblock-chainlink/src/chainlink/mod.rs +++ b/magicblock-chainlink/src/chainlink/mod.rs @@ -200,8 +200,8 @@ impl Kept: {} delegated, {} blacklisted", non_empty, remaining_empty.into_inner(), - undelegating, delegated_only, + undelegating, delegated_only + undelegating, blacklisted.into_inner() );