Request Signature
The request
method facilitates the use of templated transaction screens for signing transactions. The method will return SignResponse. It can be used to sign transactions for any EVM chain and screens can be whitelabeled to your branding.
Please check the list of JSON RPC methods, noting that the request method currently supports only the signing methods.
Parameters
Parameter | Description |
---|---|
method | JSON RPC method name in String . Supports signing methods and smart account operations (see supported methods below). |
requestParams | Parameters for the corresponding method. The parameters should be in the list and correct sequence. Take a look at RPC methods to know more. |
path? | The path where the signing service is located. Default value is "wallet/request" . This is an internal routing path for the wallet services infrastructure. |
appState? | It can be used to keep track of the app state. Default is null , and accepts String as a value. |
The chain configuration is now automatically retrieved from your project settings in the Web3Auth Dashboard. The request will use the appropriate chain based on your project configuration.
Supported Methods
Standard Signing Methods
personal_sign
- Sign a messageeth_sign
- Sign dataeth_signTypedData
- Sign typed structured dataeth_signTypedData_v4
- Sign typed structured data (v4)eth_sendTransaction
- Send a transaction
Smart Account Operations
When smart accounts are enabled in your dashboard, additional methods are available:
eth_sendUserOperation
- Send a user operation for account abstractioneth_estimateUserOperationGas
- Estimate gas for a user operationwallet_showUserOperation
- Display user operation details in wallet UI
Usage
Standard Transaction Signing
val params = JsonArray().apply {
// Message to be signed
add("Hello, World!")
// User's EOA address
add(address)
}
val signMsgCompletableFuture = web3Auth.request(
"personal_sign",
requestParams = params
)
signMsgCompletableFuture.whenComplete { signResult, error ->
if (error == null) {
Log.d("Sign Result", signResult.toString())
} else {
Log.d("Sign Error", error.message ?: "Something went wrong")
}
}
Smart Account User Operation
When smart accounts are enabled, you can send user operations:
// Build user operation parameters
val userOp = JsonObject().apply {
addProperty("sender", smartAccountAddress)
addProperty("nonce", "0x0")
addProperty("initCode", "0x")
addProperty("callData", encodedCallData)
addProperty("callGasLimit", "0x5208")
addProperty("verificationGasLimit", "0x5208")
addProperty("preVerificationGas", "0x5208")
addProperty("maxFeePerGas", "0x3b9aca00")
addProperty("maxPriorityFeePerGas", "0x3b9aca00")
addProperty("paymasterAndData", "0x")
addProperty("signature", "0x")
}
val params = JsonArray().apply {
add(userOp)
}
val userOpCompletableFuture = web3Auth.request(
"eth_sendUserOperation",
requestParams = params
)
userOpCompletableFuture.whenComplete { result, error ->
if (error == null) {
Log.d("UserOp Hash", result.toString())
} else {
Log.d("UserOp Error", error.message ?: "Failed to send user operation")
}
}
For smart account operations, the Web3Auth dashboard will automatically handle:
- Bundler URL configuration
- Paymaster integration for sponsored transactions
- User operation validation
SignResponse
Name | Description |
---|---|
success | Determines whether the request was successful or not. |
result? | Holds the signature for the request when success is true . |
error? | Holds the error for the request when success is false . |