pm_getPaymasterData
Returns values to be used in paymaster-related fields of a signed user operation. These are not stub values and will be included in a signed user operation as part of an eth_sendUserOperation
call to a bundler. Similar to pm_getPaymasterStubData
, accepts an unsigned user operation, entrypoint address, chain ID, and a context object.
Paymaster services must detect which EntryPoint version is being used and handle and respond to requests according to the EntryPoint version detected. Differences in parameters and return values across different EntryPoint versions are specified below.
EntryPoint v0.6
Example Usage
cURL
curl --location <YOUR_PAYMASTER_URL> \
--header 'Content-Type: application/json' \
--data '{"method":"pm_getPaymasterData","params":[{
"sender": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
"nonce": "0x2a",
"initCode": "0x",
"callData": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
"callGasLimit": "0x0",
"verificationGasLimit": "0x0",
"preVerificationGas": "0x0",
"maxFeePerGas": "0x0",
"maxPriorityFeePerGas": "0x0"
}, "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789", "0x14A34",
{
"policyId": "631528b0-d444-4a9b-a575-40dd3aa4a13a"
}],"jsonrpc":"2.0", "id": 1}'
# {
# "jsonrpc": "2.0",
# "id": 1,
# "result": {
# "paymasterAndData": "0xe3dc822D77f23984723871310CAAA32100000000000000000000000000000000000000000000000000000101010101010000000000000000000000000000000000000000000000000000000000000000cd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c"
# }
# }
Parameters
An array with the following entries:
-
1. User operation
UserOperation
- For EntryPoint v0.6, the
UserOperation
type is defined as an object that has the following fields:- sender
Address
- The account making the operation.
- nonce
Hex
- Anti-replay parameter.
- initCode
Hex
- The initCode of the account.
- callData
Hex
- The data to pass to the
sender
during the main execution call.
- callGasLimit
Hex
- The amount of gas to allocate the main execution call.
- verificationGasLimit
Hex
- The amount of gas to allocate for the verification step.
- preVerificationGas
Hex
- The amount of gas to pay for to compensate the bundler for pre-verification execution and calldata.
- maxFeePerGas
Hex
- Maximum fee per gas.
- maxPriorityFeePerGas
Hex
- Maximum priority fee per gas
- sender
-
2. EntryPoint
Address
- The entrypoint address the user operation will be sent through.
-
3. Chain ID
Hex
- The chain ID of the chain the user operation will be submitted on.
-
4. Context (optional)
Object
- An object with fields defined by paymaster service providers. This is where app developers could include something like a policy ID which identifies sponsorship constraints, where the constraints are configured by developers with their service providers.
Returns
An object with the following fields:
-
paymasterAndData
Hex
- Stub or "dummy" paymasterAndData field for a wallet to use during user operation gas estimation.
EntryPoint v0.7
Example Usage
cURL
curl --location <YOUR_PAYMASTER_URL> \
--header 'Content-Type: application/json' \
--data '{"method":"pm_getPaymasterData","params":[{
"sender": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
"nonce": "0x2a",
"factory": "0x0BA5ED0c6AA8c49038F819E587E2633c4A9F428a",
"factoryData": "0x",
"callData": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
"callGasLimit": "0x0",
"verificationGasLimit": "0x0",
"preVerificationGas": "0x0",
"maxFeePerGas": "0x0",
"maxPriorityFeePerGas": "0x0",
"paymasterVerificationGasLimit": "0x0",
"paymasterPostOpGasLimit": "0x0"
}, "0x0000000071727De22E5E9d8BAf0edAc6f37da032", "0x14A34",
{
"policyId": "631528b0-d444-4a9b-a575-40dd3aa4a13a"
}],"jsonrpc":"2.0", "id": 1}'
# {
# "jsonrpc": "2.0",
# "id": 1,
# "result": {
# "paymaster": "0x9d0021A869123d3a661Ffe8C9B41Ec6244261d98",
# "paymasterData": "0x00000000000000000000000000000000000000000000000000000101010101010000000000000000000000000000000000000000000000000000000000000000cd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c"
# }
# }
Parameters
An array with the following entries:
-
1. User operation
UserOperation
- For EntryPoint v0.7, the
UserOperation
type is defined as an object that has the following fields:- sender
Address
- The account making the operation.
- nonce
Hex
- Anti-replay parameter.
- factory
Address
- The account factory.
- factoryData
Hex
- Data for account factory.
- callData
Hex
- The data to pass to the
sender
during the main execution call.
- callGasLimit
Hex
- The amount of gas to allocate the main execution call.
- verificationGasLimit
Hex
- The amount of gas to allocate for the verification step.
- preVerificationGas
Hex
- The amount of gas to pay for to compensate the bundler for pre-verification execution and calldata.
- maxFeePerGas
Hex
- Maximum fee per gas.
- maxPriorityFeePerGas
Hex
- Maximum priority fee per gas
- paymasterVerificationGasLimit
Hex
- The amount of gas to allocate for the paymaster validation code
- paymasterPostOpGasLimit
Hex
- The amount of gas to allocate for the paymaster post-operation code
- sender
-
2. EntryPoint
Address
- The entrypoint address the user operation will be sent through.
-
3. Chain ID
Hex
- The chain ID of the chain the user operation will be submitted on.
-
4. Context (optional)
Object
- An object with fields defined by paymaster service providers. This is where app developers could include something like a policy ID which identifies sponsorship constraints, where the constraints are configured by developers with their service providers.
Returns
An object with the following fields:
-
paymaster
Address
- The address of the paymaster.
-
paymasterData
Hex
- Stub or "dummy" value for the paymaster to be used by wallets during user operation gas estimation.