File tree Expand file tree Collapse file tree
program-tests/registry-test/tests Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ( ) ;
Original file line number Diff line number Diff 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 )
You can’t perform that action at this time.
0 commit comments