diff --git a/program-tests/registry-test/tests/tests.rs b/program-tests/registry-test/tests/tests.rs index 399435372c..836a8524ca 100644 --- a/program-tests/registry-test/tests/tests.rs +++ b/program-tests/registry-test/tests/tests.rs @@ -453,6 +453,30 @@ async fn test_initialize_protocol_config() { .await .unwrap(); } + // FAIL: initialize a Merkle tree with network_fee + forester (must be rejected) + { + let merkle_tree_keypair = Keypair::new(); + let nullifier_queue_keypair = Keypair::new(); + let cpi_context_keypair = Keypair::new(); + let result = create_state_merkle_tree_and_queue_account( + &payer, + true, + &mut rpc, + &merkle_tree_keypair, + &nullifier_queue_keypair, + Some(&cpi_context_keypair), + None, + Some(Pubkey::new_unique()), + 1, + &StateMerkleTreeConfig { + network_fee: Some(5000), + ..Default::default() + }, + &NullifierQueueConfig::default(), + ) + .await; + assert_rpc_error(result, 3, RegistryError::ForesterDefined.into()).unwrap(); + } // FAIL: initialize a Merkle tree with network fee != 0 || 5000 { let merkle_tree_keypair = Keypair::new(); diff --git a/programs/registry/src/lib.rs b/programs/registry/src/lib.rs index 201d78ff16..38bca66614 100644 --- a/programs/registry/src/lib.rs +++ b/programs/registry/src/lib.rs @@ -677,13 +677,16 @@ pub mod light_registry { bump: u8, inputs: MigrateLeafParams, ) -> Result<()> { - check_forester( - &ctx.accounts.merkle_tree.load()?.metadata, - ctx.accounts.authority.key(), - ctx.accounts.merkle_tree.key(), - &mut Some(ctx.accounts.registered_forester_pda.clone()), + let metadata = ctx.accounts.merkle_tree.load()?.metadata; + ForesterEpochPda::check_forester_in_program( + &mut ctx.accounts.registered_forester_pda, + &ctx.accounts.authority.key(), + &ctx.accounts.merkle_tree.key(), DEFAULT_WORK_V1, )?; + if metadata.rollover_metadata.network_fee == 0 { + return err!(RegistryError::InvalidNetworkFee); + } process_migrate_state(&ctx, bump, inputs) }