@@ -42,13 +42,14 @@ pub struct InitializeGroup {
4242 #[ account( mut ) ]
4343 pub mint_account : Signer ,
4444 pub token_program : Program < Token2022Program > ,
45- pub system_program : Program < System > ,
45+ pub system_program : Program < SystemProgram > ,
4646}
4747
4848#[ inline( always) ]
4949fn handle_initialize_group ( accounts : & mut InitializeGroup ) -> Result < ( ) , ProgramError > {
50- // Mint + GroupPointer extension = 250 bytes
51- let mint_size: u64 = 250 ;
50+ // Mint + GroupPointer extension = 234 bytes
51+ // (base mint padded to 165 + account_type byte + GroupPointer TLV [2 type + 2 len + 64 data])
52+ let mint_size: u64 = 234 ;
5253 let lamports = Rent :: get ( ) ?. try_minimum_balance ( mint_size as usize ) ?;
5354
5455 accounts
@@ -62,10 +63,11 @@ fn handle_initialize_group(accounts: &mut InitializeGroup) -> Result<(), Program
6263 )
6364 . invoke ( ) ?;
6465
65- // InitializeGroupPointer: opcode 41, sub-opcode 0
66- // Data: [41, 0, authority (32 bytes), group_address (32 bytes)]
66+ // InitializeGroupPointer: opcode 40, sub-opcode 0
67+ // (opcode 41 is GroupMemberPointer, not GroupPointer)
68+ // Data: [40, 0, authority (32 bytes), group_address (32 bytes)]
6769 let mut ext_data = [ 0u8 ; 66 ] ;
68- ext_data[ 0 ] = 41 ;
70+ ext_data[ 0 ] = 40 ;
6971 ext_data[ 1 ] = 0 ;
7072 // authority = mint itself (self-referential PDA pattern)
7173 ext_data[ 2 ..34 ] . copy_from_slice ( accounts. mint_account . to_account_view ( ) . address ( ) . as_ref ( ) ) ;
0 commit comments