From eed828407af4d993f7cd3dea8d060a4d3a0b7a98 Mon Sep 17 00:00:00 2001 From: Sarfaraz Nawaz Date: Sat, 4 Jul 2026 00:42:22 +0530 Subject: [PATCH] feat: Support validator-requested undelegation in DLP finalize paths --- .../crates/magicblock-committor-service.md | 4 +- .agents/specs/validator-specification.md | 28 ++-- Cargo.lock | 12 +- Cargo.toml | 2 +- magicblock-committor-service/src/tasks/mod.rs | 120 +++++++++++++++++- .../src/tasks/task_builder.rs | 47 ++----- .../src/tasks/task_strategist.rs | 78 ++++++++++-- test-integration/Cargo.lock | 56 ++++---- test-integration/Cargo.toml | 2 +- test-integration/schedulecommit/elfs/dlp.so | Bin 473048 -> 471400 bytes 10 files changed, 244 insertions(+), 105 deletions(-) diff --git a/.agents/context/crates/magicblock-committor-service.md b/.agents/context/crates/magicblock-committor-service.md index 9ba6b918a..dc2769c0c 100644 --- a/.agents/context/crates/magicblock-committor-service.md +++ b/.agents/context/crates/magicblock-committor-service.md @@ -191,7 +191,7 @@ IntentExecutorImpl::execute -> TaskBuilderImpl::commit_tasks + finalize_tasks -> fetch next commit nonces, delegation metadata, and diffable base accounts using max(remote_slot) -> persist commit_id for each committed account - -> create commit, commit-finalize, undelegate, finalize, and action tasks + -> create commit, commit-finalize, finalize, explicit undelegate, and action tasks -> TaskStrategist::build_execution_strategy -> try single transaction when total task count <= 22 and it fits -> optimize large tasks to buffers when needed @@ -203,7 +203,7 @@ IntentExecutorImpl::execute -> reset nonce cache for all committed pubkeys on errors, or only undelegated pubkeys on successful undelegation ``` -Task building fetches `DelegationMetadata` for accounts whose base-layer flow may finalize. `FinalizeTask` and `CommitFinalizeTask` include the delegated account owner and `DelegationMetadata.rent_payer` so the Delegation Program can auto-undelegate owner-program requests during finalize, commit-finalize, and commit-finalize-from-buffer. The active task-building path derives the request PDA through the DLP instruction builders and does not fetch or decode `UndelegationRequest`; explicit undelegate tasks still pass `request_rent_payer = None` unless a future path deliberately restores request-account decoding. +Task building fetches `DelegationMetadata` for accounts whose base-layer flow may finalize. `FinalizeTask` and `CommitFinalizeTask` include the delegated account owner and `DelegationMetadata.rent_payer` so the Delegation Program can auto-undelegate owner-program and validator requests during finalize, commit-finalize, and commit-finalize-from-buffer. Validator-requested `CommitAndUndelegate` no longer emits a trailing `UndelegateTask`; post-undelegate base actions are still scheduled after the finalize task. The active task-building path derives the request PDA through the DLP instruction builders and does not fetch or decode `UndelegationRequest`; explicit undelegate tasks still pass `request_rent_payer = None` unless a future path deliberately restores request-account decoding. Transaction fit is not only packet size. `TaskStrategist` currently checks whether a single-stage transaction or each two-stage transaction fits the wire size, optionally after switching commits to buffers and adding ALTs, but it does not split a transaction stage by compute units. Each commit, finalize, commit-finalize, and undelegate task currently advertises `120_000` CU, while Agave caps a transaction at `1_400_000` CU. Keep task bundles below that transaction-level cap unless the strategist and executor/output/persistence model are extended to split, record, and confirm multiple transactions for the affected stage. diff --git a/.agents/specs/validator-specification.md b/.agents/specs/validator-specification.md index 841abc7c5..7134fe84d 100644 --- a/.agents/specs/validator-specification.md +++ b/.agents/specs/validator-specification.md @@ -259,13 +259,15 @@ This is a critical lifecycle invariant. Do not allow normal ER transactions to k Owner-program requested undelegation is recorded by the Delegation Program in `DelegationMetadata.undelegation_requester = OwnerProgram` and an -`UndelegationRequest` PDA. This marker is not a validator-side completion -signal: the validator must still commit/finalize the latest ER state. For -commit/finalize, commit-finalize, and commit-finalize-from-buffer paths, the -committor supplies the DLP auto-undelegation accounts using the delegated -account's owner program and `DelegationMetadata.rent_payer`; it derives the -request PDA for those instruction metas and does not need to fetch or decode -`UndelegationRequest` during task construction. +`UndelegationRequest` PDA. Validator-requested undelegation is recorded as +`DelegationMetadata.undelegation_requester = Validator`. These markers are not +validator-side completion signals: the validator must still commit/finalize the +latest ER state. For commit/finalize, commit-finalize, and +commit-finalize-from-buffer paths, the committor supplies the DLP +auto-undelegation accounts using the delegated account's owner program and +`DelegationMetadata.rent_payer`; it derives the request PDA for those +instruction metas and does not need to fetch or decode `UndelegationRequest` +during task construction. The validator observes owner-program `UndelegationRequest` PDAs through Chainlink and `magicblock-accounts`. Live request-account subscription updates @@ -274,12 +276,12 @@ accounts with a filtered `getProgramAccounts` every configured interval (`chainlink.undelegation-request-poll-interval`, default `5m`) and feeds the decoded requests into the same `ScheduleCommitAndUndelegate` scheduling path. -If DLP sees `OwnerProgram` requester during a successful finalize path, it -finalizes the committed state and undelegates/closes the delegation/request PDAs -in the same instruction flow. An explicit undelegate instruction later in the -same transaction may no-op once ownership has already returned to the owner -program. `AlreadyUndelegated` remains a conflict for validator-requested -undelegation state, not a reason to drop an owner-program request. +If DLP sees `OwnerProgram` or `Validator` requester during a successful +finalize-style path, it finalizes the committed state and undelegates/closes the +delegation PDAs in the same instruction flow. Owner-program requests also close +the request PDA and reimburse its rent payer. Validator-requested +`CommitAndUndelegate` should rely on this auto-undelegation behavior and must +not append a separate explicit `Undelegate` task for the same account. ### Callback discriminator diff --git a/Cargo.lock b/Cargo.lock index d839bb02a..6c8411ab8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1970,7 +1970,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -3856,7 +3856,7 @@ dependencies = [ [[package]] name = "magicblock-delegation-program-api" version = "3.0.0" -source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7#72af1c7542ee00a383f0945184fee4a0d9cec6e0" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57#ccb7d57e37bbb18a1958a25d63730c4b06ac45ad" dependencies = [ "bincode", "borsh 0.10.4", @@ -5289,7 +5289,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -5765,7 +5765,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -9668,7 +9668,7 @@ dependencies = [ "getrandom 0.4.3", "once_cell", "rustix 1.1.4", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -10626,7 +10626,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ce5ff6a14..f43dbe7d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -116,7 +116,7 @@ magicblock-committor-program = { path = "./magicblock-committor-program", featur magicblock-committor-service = { path = "./magicblock-committor-service" } magicblock-config = { path = "./magicblock-config" } magicblock-core = { path = "./magicblock-core" } -magicblock-delegation-program-api = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "72af1c7" } +magicblock-delegation-program-api = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "ccb7d57" } magicblock-ledger = { path = "./magicblock-ledger" } magicblock-magic-program-api = { path = "./magicblock-magic-program-api" } magicblock-metrics = { path = "./magicblock-metrics" } diff --git a/magicblock-committor-service/src/tasks/mod.rs b/magicblock-committor-service/src/tasks/mod.rs index fefc73c92..6584bccd7 100644 --- a/magicblock-committor-service/src/tasks/mod.rs +++ b/magicblock-committor-service/src/tasks/mod.rs @@ -571,7 +571,11 @@ mod serialization_safety_test { use dlp_api::{ discriminator::DlpDiscriminator, - pda::undelegation_request_pda_from_delegated_account, + pda::{ + fees_vault_pda, undelegate_buffer_pda_from_delegated_account, + undelegation_request_pda_from_delegated_account, + validator_fees_vault_pda_from_validator, + }, }; use magicblock_core::intent::CommittedAccount; use magicblock_program::{ @@ -716,6 +720,120 @@ mod serialization_safety_test { assert!(!ix.accounts[13].is_signer); } + #[test] + fn test_finalize_task_includes_auto_undelegation_accounts() { + let validator = Pubkey::new_unique(); + let delegated_account = Pubkey::new_unique(); + let owner_program = Pubkey::new_unique(); + let rent_reimbursement = Pubkey::new_unique(); + + let ix = FinalizeTask { + delegated_account, + owner_program, + rent_reimbursement, + } + .instruction(&validator); + + assert_eq!(ix.program_id, dlp_api::id()); + assert_eq!(ix.data, DlpDiscriminator::Finalize.to_vec()); + assert_eq!(ix.accounts.len(), 13); + assert_eq!( + ix.accounts[6].pubkey, + validator_fees_vault_pda_from_validator(&validator) + ); + assert_eq!(ix.accounts[8].pubkey, owner_program); + assert_eq!( + ix.accounts[9].pubkey, + undelegate_buffer_pda_from_delegated_account(&delegated_account) + ); + assert_eq!(ix.accounts[10].pubkey, rent_reimbursement); + assert_eq!(ix.accounts[11].pubkey, fees_vault_pda()); + assert_eq!( + ix.accounts[12].pubkey, + undelegation_request_pda_from_delegated_account(&delegated_account) + ); + } + + fn make_commit_finalize_task() -> CommitFinalizeTask { + let delegated_account = Pubkey::new_unique(); + let owner_program = Pubkey::new_unique(); + CommitFinalizeTask { + commit_id: 1, + allow_undelegation: true, + committed_account: CommittedAccount { + pubkey: delegated_account, + account: Account { + lamports: 1_000, + data: vec![1, 2, 3], + owner: owner_program, + executable: false, + rent_epoch: 0, + }, + remote_slot: Default::default(), + }, + delivery: CommitDelivery::StateInArgs, + rent_reimbursement: Pubkey::new_unique(), + } + } + + #[test] + fn test_commit_finalize_task_includes_auto_undelegation_accounts() { + let validator = Pubkey::new_unique(); + let task = make_commit_finalize_task(); + let delegated_account = task.committed_account.pubkey; + let owner_program = task.committed_account.account.owner; + let rent_reimbursement = task.rent_reimbursement; + + let ix = task.instruction(&validator); + + assert_eq!(ix.program_id, dlp_api::id()); + assert!(ix + .data + .starts_with(&DlpDiscriminator::CommitFinalize.to_vec())); + assert_eq!(ix.accounts.len(), 11); + assert_eq!(ix.accounts[6].pubkey, owner_program); + assert_eq!( + ix.accounts[7].pubkey, + undelegate_buffer_pda_from_delegated_account(&delegated_account) + ); + assert_eq!(ix.accounts[8].pubkey, rent_reimbursement); + assert_eq!(ix.accounts[9].pubkey, fees_vault_pda()); + assert_eq!( + ix.accounts[10].pubkey, + undelegation_request_pda_from_delegated_account(&delegated_account) + ); + } + + #[test] + fn test_commit_finalize_from_buffer_task_includes_auto_undelegation_accounts( + ) { + let validator = Pubkey::new_unique(); + let mut task = make_commit_finalize_task(); + assert!(task.try_optimize_tx_size()); + let delegated_account = task.committed_account.pubkey; + let owner_program = task.committed_account.account.owner; + let rent_reimbursement = task.rent_reimbursement; + + let ix = task.instruction(&validator); + + assert_eq!(ix.program_id, dlp_api::id()); + assert!(ix + .data + .starts_with(&DlpDiscriminator::CommitFinalizeFromBuffer.to_vec())); + assert_eq!(ix.accounts.len(), 12); + assert_eq!(ix.accounts[7].pubkey, owner_program); + assert_eq!( + ix.accounts[8].pubkey, + undelegate_buffer_pda_from_delegated_account(&delegated_account) + ); + assert_eq!(ix.accounts[9].pubkey, rent_reimbursement); + assert_eq!(ix.accounts[10].pubkey, fees_vault_pda()); + assert_eq!( + ix.accounts[11].pubkey, + undelegation_request_pda_from_delegated_account(&delegated_account) + ); + } + fn make_buffer_commit_task( commit_id: u64, allow_undelegation: bool, diff --git a/magicblock-committor-service/src/tasks/task_builder.rs b/magicblock-committor-service/src/tasks/task_builder.rs index 2989f0f6e..3823a1057 100644 --- a/magicblock-committor-service/src/tasks/task_builder.rs +++ b/magicblock-committor-service/src/tasks/task_builder.rs @@ -20,7 +20,7 @@ use crate::{ tasks::{ commit_task::{CommitDelivery, CommitTask}, BaseActionTask, BaseActionTaskV1, BaseActionTaskV2, BaseTaskImpl, - CommitFinalizeTask, FinalizeTask, UndelegateTask, + CommitFinalizeTask, FinalizeTask, }, }; @@ -172,9 +172,6 @@ impl TaskBuilderImpl { [ intent_bundle.get_commit_intent_pubkeys(), intent_bundle.get_undelegate_intent_pubkeys(), - intent_bundle - .intent_bundle - .get_commit_finalize_and_undelegate_intent_pubkeys(), ] .into_iter() .flatten() @@ -360,21 +357,6 @@ impl TasksBuilder for TaskBuilderImpl { .into() } - // Helper to create an undelegate task - fn undelegate_task( - account: &CommittedAccount, - rent_reimbursement: &Pubkey, - request_rent_payer: Option, - ) -> BaseTaskImpl { - UndelegateTask { - delegated_account: account.pubkey, - owner_program: account.account.owner, - rent_reimbursement: *rent_reimbursement, - request_rent_payer, - } - .into() - } - // Helper to process commit types fn create_finalize_tasks( commit: &CommitType, @@ -417,29 +399,16 @@ impl TasksBuilder for TaskBuilderImpl { } } - fn create_undelegate_tasks( + fn create_post_undelegate_action_tasks( commit_and_undelegate: &CommitAndUndelegate, - delegation_metadata: &HashMap, - ) -> TaskBuilderResult> { - let accounts = commit_and_undelegate.get_committed_accounts(); - - let mut tasks = accounts - .iter() - .map(|account| { - let rent_reimbursement = rent_reimbursement( - delegation_metadata, - account.pubkey, - )?; - Ok(undelegate_task(account, &rent_reimbursement, None)) - }) - .collect::>>()?; - + ) -> Vec { if let UndelegateType::WithBaseActions(actions) = &commit_and_undelegate.undelegate_action { - tasks.extend(TaskBuilderImpl::create_action_tasks(actions)); + TaskBuilderImpl::create_action_tasks(actions).collect() + } else { + Vec::new() } - Ok(tasks) } let mut tasks = Vec::new(); @@ -470,13 +439,13 @@ impl TasksBuilder for TaskBuilderImpl { &value.commit_action, &delegation_metadata, )?); - tasks.extend(create_undelegate_tasks(value, &delegation_metadata)?); + tasks.extend(create_post_undelegate_action_tasks(value)); } if let Some(ref value) = intent_bundle.intent_bundle.commit_finalize_and_undelegate { - tasks.extend(create_undelegate_tasks(value, &delegation_metadata)?); + tasks.extend(create_post_undelegate_action_tasks(value)); } Ok(tasks) diff --git a/magicblock-committor-service/src/tasks/task_strategist.rs b/magicblock-committor-service/src/tasks/task_strategist.rs index 8203699ea..43e0ef1a8 100644 --- a/magicblock-committor-service/src/tasks/task_strategist.rs +++ b/magicblock-committor-service/src/tasks/task_strategist.rs @@ -477,7 +477,7 @@ mod tests { }; use magicblock_core::intent::CommittedAccount; use magicblock_program::magic_scheduled_base_intent::{ - BaseAction, ProgramArgs, + BaseAction, ProgramArgs, UndelegateType, }; use solana_account::Account; use solana_pubkey::Pubkey; @@ -901,7 +901,7 @@ mod tests { } #[tokio::test] - async fn test_finalize_tasks_uses_metadata_rent_payer_for_undelegate() { + async fn test_commit_and_undelegate_finalize_stage_auto_undelegates() { let delegated_account = Pubkey::new_unique(); let intent = create_test_intent(0, &[delegated_account], true); let info_fetcher = Arc::new(MockInfoFetcher); @@ -910,18 +910,46 @@ mod tests { .await .unwrap(); - assert_eq!(tasks.len(), 2); + assert_eq!(tasks.len(), 1); let BaseTaskImpl::Finalize(task) = &tasks[0] else { panic!("expected finalize task"); }; assert_eq!(task.delegated_account, delegated_account); assert_eq!(task.rent_reimbursement, delegated_account); - let BaseTaskImpl::Undelegate(task) = &tasks[1] else { - panic!("expected undelegate task"); - }; - assert_eq!(task.delegated_account, delegated_account); - assert_eq!(task.rent_reimbursement, delegated_account); - assert_eq!(task.request_rent_payer, None); + } + + #[tokio::test] + async fn test_commit_and_undelegate_finalize_stage_keeps_post_undelegate_actions( + ) { + let delegated_account = Pubkey::new_unique(); + let mut intent = create_test_intent(0, &[delegated_account], true); + intent + .intent_bundle + .commit_and_undelegate + .as_mut() + .unwrap() + .undelegate_action = + UndelegateType::WithBaseActions(vec![BaseAction { + destination_program: Pubkey::new_unique(), + source_program: None, + escrow_authority: Pubkey::new_unique(), + account_metas_per_program: vec![], + data_per_program: ProgramArgs { + data: vec![1, 2, 3], + escrow_index: 0, + }, + compute_units: 30_000, + callback: None, + }]); + let info_fetcher = Arc::new(MockInfoFetcher); + + let tasks = TaskBuilderImpl::finalize_tasks(&info_fetcher, &intent) + .await + .unwrap(); + + assert_eq!(tasks.len(), 2); + assert!(matches!(tasks[0], BaseTaskImpl::Finalize(_))); + assert!(matches!(tasks[1], BaseTaskImpl::BaseAction(_))); } #[tokio::test] @@ -957,9 +985,31 @@ mod tests { } #[tokio::test] - async fn test_build_two_stage_mode_no_alts() { - let pubkeys: [_; 3] = std::array::from_fn(|_| Pubkey::new_unique()); - let intent = create_test_intent(0, &pubkeys, true); + async fn test_build_two_stage_mode_when_united_task_limit_is_exceeded() { + let pubkeys: [_; 5] = std::array::from_fn(|_| Pubkey::new_unique()); + let mut intent = create_test_intent(0, &pubkeys, true); + let make_action = || BaseAction { + destination_program: Pubkey::new_unique(), + source_program: None, + escrow_authority: Pubkey::new_unique(), + account_metas_per_program: vec![], + data_per_program: ProgramArgs { + data: vec![1], + escrow_index: 0, + }, + compute_units: 30_000, + callback: None, + }; + intent.intent_bundle.standalone_actions = + (0..6).map(|_| make_action()).collect(); + intent + .intent_bundle + .commit_and_undelegate + .as_mut() + .unwrap() + .undelegate_action = UndelegateType::WithBaseActions( + (0..7).map(|_| make_action()).collect(), + ); let info_fetcher = Arc::new(MockInfoFetcher); let commit_task = TaskBuilderImpl::commit_tasks( @@ -989,8 +1039,8 @@ mod tests { else { panic!("Unexpected execution mode"); }; - assert!(!commit_stage.uses_alts()); - assert!(!finalize_stage.uses_alts()); + assert_eq!(commit_stage.optimized_tasks.len(), 11); + assert_eq!(finalize_stage.optimized_tasks.len(), 12); } #[tokio::test] diff --git a/test-integration/Cargo.lock b/test-integration/Cargo.lock index 6dee47c77..9483ff66f 100644 --- a/test-integration/Cargo.lock +++ b/test-integration/Cargo.lock @@ -289,7 +289,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -300,7 +300,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2041,7 +2041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -3050,7 +3050,7 @@ dependencies = [ "borsh 1.7.0", "color-backtrace", "magicblock-config", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "rand 0.8.6", "rayon", "serde", @@ -3531,7 +3531,7 @@ dependencies = [ "magicblock-chainlink", "magicblock-committor-service", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-metrics", "magicblock-program", "solana-hash 4.2.0", @@ -3647,7 +3647,7 @@ dependencies = [ "magicblock-committor-service", "magicblock-config", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-ledger", "magicblock-magic-program-api 0.13.3", "magicblock-metrics", @@ -3709,7 +3709,7 @@ dependencies = [ "magicblock-aml", "magicblock-config", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-magic-program-api 0.13.3", "magicblock-metrics", "parking_lot", @@ -3778,7 +3778,7 @@ dependencies = [ "magicblock-chainlink", "magicblock-committor-program", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-metrics", "magicblock-program", "magicblock-rpc-client", @@ -3892,7 +3892,7 @@ dependencies = [ [[package]] name = "magicblock-delegation-program-api" version = "3.0.0" -source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7#72af1c7542ee00a383f0945184fee4a0d9cec6e0" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57#ccb7d57e37bbb18a1958a25d63730c4b06ac45ad" dependencies = [ "bincode", "borsh 0.10.4", @@ -4051,7 +4051,7 @@ dependencies = [ "bincode", "lazy_static", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-magic-program-api 0.13.3", "num-derive", "num-traits", @@ -4209,7 +4209,7 @@ dependencies = [ name = "magicblock-validator-admin" version = "0.13.3" dependencies = [ - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-program", "magicblock-rpc-client", "solana-commitment-config", @@ -4467,7 +4467,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -5058,7 +5058,7 @@ version = "0.0.0" dependencies = [ "borsh 1.7.0", "ephemeral-rollups-sdk", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-magic-program-api 0.13.3", "rkyv 0.7.46", "solana-program 3.0.0", @@ -5355,7 +5355,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -5817,7 +5817,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -5946,7 +5946,7 @@ dependencies = [ "anyhow", "borsh 1.7.0", "integration-test-tools", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "program-schedulecommit", "solana-commitment-config", "solana-compute-budget-interface", @@ -5968,7 +5968,7 @@ dependencies = [ "magicblock-committor-program", "magicblock-committor-service", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-program", "magicblock-rpc-client", "magicblock-table-mania", @@ -5996,7 +5996,7 @@ dependencies = [ "ephemeral-rollups-sdk", "integration-test-tools", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-magic-program-api 0.13.3", "magicblock-program", "program-schedulecommit", @@ -6017,7 +6017,7 @@ name = "schedulecommit-test-security" version = "0.0.0" dependencies = [ "integration-test-tools", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-magic-program-api 0.13.3", "program-schedulecommit", "program-schedulecommit-security", @@ -6439,7 +6439,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -9775,7 +9775,7 @@ dependencies = [ "getrandom 0.4.3", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -9796,7 +9796,7 @@ dependencies = [ "integration-test-tools", "magicblock-config", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "program-flexi-counter", "program-mini", "solana-loader-v4-interface 3.1.0", @@ -9823,7 +9823,7 @@ dependencies = [ "magicblock-aml", "magicblock-chainlink", "magicblock-config", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "program-flexi-counter", "program-mini", "solana-account 3.4.0", @@ -9849,7 +9849,7 @@ version = "0.0.0" dependencies = [ "integration-test-tools", "magicblock-core", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "program-flexi-counter", "program-mini", "solana-loader-v4-interface 3.1.0", @@ -9919,7 +9919,7 @@ dependencies = [ "integration-test-tools", "magicblock-accounts-db", "magicblock-config", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "program-flexi-counter", "solana-commitment-config", "solana-rpc-client", @@ -9942,7 +9942,7 @@ dependencies = [ "magic-domain-program", "magicblock-api", "magicblock-config", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-program", "magicblock-validator-admin", "solana-commitment-config", @@ -9988,7 +9988,7 @@ dependencies = [ "ephemeral-rollups-sdk", "integration-test-tools", "log", - "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=72af1c7)", + "magicblock-delegation-program-api 3.0.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=ccb7d57)", "magicblock-magic-program-api 0.13.3", "program-flexi-counter", "solana-rpc-client-api", @@ -10960,7 +10960,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/test-integration/Cargo.toml b/test-integration/Cargo.toml index 7173bafba..5f35ee1ee 100644 --- a/test-integration/Cargo.toml +++ b/test-integration/Cargo.toml @@ -63,7 +63,7 @@ magicblock-committor-program = { path = "../magicblock-committor-program", featu magicblock-committor-service = { path = "../magicblock-committor-service" } magicblock-config = { path = "../magicblock-config" } magicblock-core = { path = "../magicblock-core" } -magicblock-delegation-program-api = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "72af1c7", default-features = false } +magicblock-delegation-program-api = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "ccb7d57", default-features = false } magicblock-magic-program-api = { path = "../magicblock-magic-program-api" } magicblock-program = { path = "../programs/magicblock" } magicblock-rpc-client = { path = "../magicblock-rpc-client" } diff --git a/test-integration/schedulecommit/elfs/dlp.so b/test-integration/schedulecommit/elfs/dlp.so index 1cd487be083a613c790674a451134f5c3c4c3129..7dfa3e9370d54347bb5657031412c76d2114b91e 100755 GIT binary patch delta 85924 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 U3964M2|-YmSVNwOr4_L>Xh$4HLab4u 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