Skip to main content

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.

Request Method

Parameters

ParameterDescription
methodJSON RPC method name in String. Supports signing methods and smart account operations (see supported methods below).
requestParamsParameters 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.
warning

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 message
  • eth_sign - Sign data
  • eth_signTypedData - Sign typed structured data
  • eth_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 abstraction
  • eth_estimateUserOperationGas - Estimate gas for a user operation
  • wallet_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")
}
}
tip

For smart account operations, the Web3Auth dashboard will automatically handle:

  • Bundler URL configuration
  • Paymaster integration for sponsored transactions
  • User operation validation

SignResponse

NameDescription
successDetermines 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.