@@ -172,43 +172,22 @@ export async function toSessionSmartAccount<
172172 verificationGasLimit : verificationGasLimit . toString ( ) ,
173173 preVerificationGas : preVerificationGas . toString ( ) ,
174174 } ) ;
175- console . debug ( "[toSessionSmartAccount] signUserOperation paymaster params:" , {
176- paymaster : params . paymaster || "(none)" ,
177- paymasterData : params . paymasterData || "(none)" ,
178- paymasterVerificationGasLimit : params . paymasterVerificationGasLimit ?. toString ( ) || "(none)" ,
179- paymasterPostOpGasLimit : params . paymasterPostOpGasLimit ?. toString ( ) || "(none)" ,
180- } ) ;
181-
182- // Create params for hash computation
183- const hashParams = new EncodeGetUserOperationHashParams (
184- sender ,
185- nonce . toString ( ) ,
186- ( params . callData ?? "0x" ) as Hex ,
187- callGasLimit . toString ( ) ,
188- verificationGasLimit . toString ( ) ,
189- preVerificationGas . toString ( ) ,
190- maxFeePerGas . toString ( ) ,
191- maxPriorityFeePerGas . toString ( ) ,
192- ) ;
193-
194- // Add paymaster fields if present (for sponsored operations)
195- if ( params . paymaster ) {
196- hashParams . paymaster = params . paymaster ;
197- hashParams . paymasterData = params . paymasterData || "0x" ;
198- hashParams . paymasterVerificationGasLimit = params . paymasterVerificationGasLimit ?. toString ( ) ;
199- hashParams . paymasterPostOpGasLimit = params . paymasterPostOpGasLimit ?. toString ( ) ;
200- console . debug ( "[toSessionSmartAccount] Paymaster fields set:" , {
201- paymaster : hashParams . paymaster ,
202- paymasterData : hashParams . paymasterData ,
203- paymasterVerificationGasLimit : hashParams . paymasterVerificationGasLimit ,
204- paymasterPostOpGasLimit : hashParams . paymasterPostOpGasLimit ,
205- } ) ;
206- } else {
207- console . debug ( "[toSessionSmartAccount] No paymaster in params" ) ;
208- }
209175
210176 // Encode call data for EntryPoint.getUserOpHash()
211- const callData = encode_get_user_operation_hash_call_data ( hashParams ) as Hex ;
177+ // NOTE: We do NOT include paymaster fields in the hash computation
178+ // This ensures the signature is computed without paymaster data
179+ const callData = encode_get_user_operation_hash_call_data (
180+ new EncodeGetUserOperationHashParams (
181+ sender ,
182+ nonce . toString ( ) ,
183+ ( params . callData ?? "0x" ) as Hex ,
184+ callGasLimit . toString ( ) ,
185+ verificationGasLimit . toString ( ) ,
186+ preVerificationGas . toString ( ) ,
187+ maxFeePerGas . toString ( ) ,
188+ maxPriorityFeePerGas . toString ( ) ,
189+ ) ,
190+ ) as Hex ;
212191
213192 // Get user operation hash from EntryPoint
214193 const { data : userOpHash } = await client . call ( {
0 commit comments