Skip to content

Commit 2aefe89

Browse files
committed
fix: init v1 tree with custom forester
1 parent b5f7f10 commit 2aefe89

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

program-tests/registry-test/tests/tests.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,30 @@ async fn test_initialize_protocol_config() {
453453
.await
454454
.unwrap();
455455
}
456+
// FAIL: initialize a Merkle tree with network_fee + forester (must be rejected)
457+
{
458+
let merkle_tree_keypair = Keypair::new();
459+
let nullifier_queue_keypair = Keypair::new();
460+
let cpi_context_keypair = Keypair::new();
461+
let result = create_state_merkle_tree_and_queue_account(
462+
&payer,
463+
true,
464+
&mut rpc,
465+
&merkle_tree_keypair,
466+
&nullifier_queue_keypair,
467+
Some(&cpi_context_keypair),
468+
None,
469+
Some(Pubkey::new_unique()),
470+
1,
471+
&StateMerkleTreeConfig {
472+
network_fee: Some(5000),
473+
..Default::default()
474+
},
475+
&NullifierQueueConfig::default(),
476+
)
477+
.await;
478+
assert_rpc_error(result, 3, RegistryError::ForesterDefined.into()).unwrap();
479+
}
456480
// FAIL: initialize a Merkle tree with network fee != 0 || 5000
457481
{
458482
let merkle_tree_keypair = Keypair::new();

programs/registry/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,10 @@ pub mod light_registry {
341341
if network_fee != ctx.accounts.protocol_config_pda.config.network_fee {
342342
return err!(RegistryError::InvalidNetworkFee);
343343
}
344+
if forester.is_some() {
345+
msg!("Forester pubkey must not be defined for trees serviced by light foresters.");
346+
return err!(RegistryError::ForesterDefined);
347+
}
344348
} else if forester.is_none() {
345349
msg!("Forester pubkey required for trees without a network fee.");
346350
msg!("Trees without a network fee will not be serviced by light foresters.");
@@ -826,6 +830,9 @@ pub fn check_forester(
826830
}
827831
Ok(())
828832
} else if metadata.access_metadata.forester == authority {
833+
if metadata.rollover_metadata.network_fee != 0 {
834+
return err!(RegistryError::InvalidNetworkFee);
835+
}
829836
Ok(())
830837
} else {
831838
err!(RegistryError::InvalidSigner)

0 commit comments

Comments
 (0)