Paymaster V2 RPC Methods
JSON-RPC API reference for Candide's Paymaster service
Visit dashboard to get an API key for Candide's Paymaster.
pm_supportedERC20Tokens
Gets supported ERC-20 Tokens for gas payments, along side the paymaster metadata
Invocation
{ "method": "pm_supportedERC20Tokens", "params": [] }
Return
{ "result": { paymasterMetadata, tokens } }
- Example Request
- Example Response
- Response Types
{
"jsonrpc": "2.0",
"id": 0,
"method": "pm_supportedERC20Tokens",
"params": []
}
{
"jsonrpc": "2.0",
"id": 0,
"result": {
"paymasterMetadata": {
"name": "Candide Paymaster",
"description": "Candide Paymaster a fast, secure and feature-rich 4337 Paymaster",
"icons": [],
"address": "0x7e3393ebA62DA6f555a5341E079e0F6585CE8c56",
"sponsoredEventTopic": "0x13..fa1",
"dummyPaymasterAndData": "0x69...135",
},
"tokens": [
{
"symbol": "DAI",
"address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
"decimal": "0x12",
"fee": "0x0",
"exchangeRate": "0x0ddeb609310c89b1"
}
]
}
}
Paramater | Type | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
paymasterMetadata | Object
| |||||||||||||||||||||
tokens | Object[]
|
pm_sponsorUserOperation
Sends a UserOperation to a paymaster for off-chain verification. If approved, it will return the paymasterData
. It will also return gas overrides when the mode for gas sponsorship is FREE for the user.
- Pay Gas in ERC-20s: No gas overrides are returned
- Gas Policy: Mandatory
preVerificationGas
,maxFeePerGas
, andmaxPriorityFeePerGas
fields are returned.
If the paymaster rejects the UserOperation, it should not return a result but a standard JSON-RPC error with the reason.
Invocation
{ "method": "pm_sponsorUserOperation", "params": [userOperation, entrypoint, context] }
Return
{
"result": {
paymasterAndData,
preVerificationGas,
maxFeePerGas,
maxPriorityFeePerGas
}
}
- Example Request
- Example Response
- Request Types
- Response Type
{
"jsonrpc": "2.0",
"id": 0,
"method": "pm_sponsorUserOperation",
"params": [
{
sender: "0x2c298CcaFF..c236fCC66dB2"
nonce: "0x17",
initCode: "0x",
callData: "0xf3....0000",
callGasLimit: "0x12a87",
verificationGasLimit: "0x1a332",
preVerificationGas: "0xe95c",
maxFeePerGas: "0x5f4ecdc0",
maxPriorityFeePerGas: "0x59682f00",
paymasterAndData: "0x",
signature: "0x",
},
"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
{ "token": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" },
]
}
{
"jsonrpc": "2.0",
"id": 0,
"result": {
"paymasterAndData": "0x....",
"preVerificationGas": "0x..",
"maxFeePerGas": "0x..",
"maxPriorityFeePerGas": "0x.."
}
}
Paramater | Type | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
userOperation | Object
| ||||||||||||||||||||||||||||||||||||
entrypoint |
| ||||||||||||||||||||||||||||||||||||
context | Object: This argument contains information about the specific paymaster implementation you are using. If use paying gas in ERC-20 Tokens, pass the token key and value.
|
key | type | description |
---|---|---|
paymasterAndData | string | Paymaster address and data required to pass paymaster contract validation |
preVerificationGas | string | The amount of gas to pay for to compensate the bundler for pre-verification execution and calldata |
maxFeePerGas | string | Maximum fee per gas (similar to EIP-1559 max_fee_per_gas) |
maxPriorityFeePerGas | string | Maximum priority fee per gas (similar to EIP-1559 max_priority_fee_per_gas) |
pm_supportedEntryPoint
Get supported EntryPoint returns the entryPoint address supported by the paymaster
Invocation
{ "method": "pm_supportedEntryPoint", "params": [] }
Return
{ "result": entrypoint }
- Example Request
- Example Response
- Response Type
{
"jsonrpc": "2.0",
"id": 0,
"method": "pm_supportedEntryPoint",
"params": []
}
{
"jsonrpc": "2.0",
"id": 0,
"result": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" // Entrypoint address
}
key | type | description |
---|---|---|
entrypoint | string | EntryPoint Address that the paymaster is supporting |
pm_chainId
Get Chain ID asks the paymaster service to return the chain_id it currently supports
Invocation
{ "method": "pm_chainId", "params": [] }
Return
{ "result": chainId }
- Example Request
- Example Response
- Response Type
{
"jsonrpc": "2.0",
"id": 0,
"method": "pm_chainId",
"params": []
}
{
"jsonrpc": "2.0",
"id": 0,
"result": "0x5"
}
Paramater | Type | Description |
---|---|---|
chainId |
| Chain ID that the paymaster supports |