These are the methods that wallets should implement to handle Sui transactions and messages via WalletConnect.
The SUI RPC standard is still under review and specifications may change. Implementation details and method signatures are subject to updates.
sui_getAccounts
This method returns an Array of public keys and addresses available to sign from the wallet.
Parameters
none
Returns
Array - Array of accounts:
Object :
pubkey : String - public key for keypair
address : String - the Sui address
Example
// Request
{
"id": 1,
"jsonrpc": "2.0",
"method": "sui_getAccounts",
"params": {}
}
// Result
{
"id": 1,
"jsonrpc": "2.0",
"result": [{ "pubkey": "AC68P56WCCTF0nUEX31/V5b1wqiD1pvfc8Fql8dPIPDA", "address":"0x3cd077f41680eebca0176baad3915b2ea26dbbdfd10161865234732bb1f2ac50" }]
}
Session Properties
In a connection request, it is recommended to serialize the response to getAccounts in session.sessionProperties.sui_getAccounts. This allows dapps to consume an active session without requiring a context switch to re-request all addresses and associated public keys from the wallet.
sui_signTransaction
Sign a Sui transaction without executing it.
Parameters
transaction (object) - The transaction to sign:
transaction (string) - The base64 encoded, BCS encoded, transaction data
address (string) - The sender’s Sui address
Returns
object - The signed transaction:
signature (string) - The base64 encoded signature
transactionBytes (string) - The base64 encoded signed transaction bytes
Example
// Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_signTransaction",
"params": {
"transaction": "AAACAAhkAAAAAAAAAAAgcfGPMPqXhXLvgkjSYSgtJoBBfJN4xPm3bwZGapDhVIICAgABAQAAAQEDAAAAAAEBAHHxjzD6l4Vy74JI0mEoLSaAQXyTeMT5t28GRmqQ4VSCAq3fqx8mNL6p13BcS9bG74Gbh1dowEtQ",
"address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa"
}
}
// Response
{
"jsonrpc": "2.0",
"result": {
"signature": "ACRvdr3yI2mdpeOK+NsJIimdNGcE9R//jjT3HALZ17fFyu818op4jZi/64lPBjpKMDX6ZtxnCFZExTOFdpi3MwEZXLv/ORduxMYX0fw8dbHlnWC8WG0ymrlAmARpEibbhw==",
"transactionBytes": "AAACAAhkAAAAAAAAAAAg1fZH7bd9T9ox0DBFBkR/s8kuVar3e8XtS3fDMt1GBfoCAgABAQAAAQEDAAAAAAEBANX2R+23fU/aMdAwRQZEf7PJLlWq93vF7Ut3wzLdRgX6At/pRJzj2VpZgqXpSvEtd3GzPvt99hR8e/yOCGz/8nbRmA7QFAAAAAAgBy5vStJizn76LmJTBlDiONdR/2rSuzzS4L+Tp/Zs4hZ8cBxYkcSlxBD6QXvgS11E6d+DNek8LiA/beba6iH3l5gO0BQAAAAAIMpdmZjiqJ5GG9di1MAgD4S3uRr2gaMC7S1WsaeBwNIx1fZH7bd9T9ox0DBFBkR/s8kuVar3e8XtS3fDMt1GBfroAwAAAAAAAECrPAAAAAAAAA=="
},
"id": 1
}
sui_signAndExecuteTransaction
Sign and execute a Sui transaction.
Parameters
transaction (object) - The transaction to sign and execute:
transaction (string) - The base64 encoded, BCS encoded, transaction data
address (string) - The sender’s Sui address
Returns
object - The transaction result:
digest (string) - The transaction digest that can be used to look up the transaction in the explorer
Example
// Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_signAndExecuteTransaction",
"params": {
"transaction": "AAACAAhkAAAAAAAAAAAgcfGPMPqXhXLvgkjSYSgtJoBBfJN4xPm3bwZGapDhVIICAgABAQAAAQEDAAAAAAEBAHHxjzD6l4Vy74JI0mEoLSaAQXyTeMT5t28GRmqQ4VSCAq3fqx8mNL6p13BcS9bG74Gbh1dowEtQ",
"address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa"
}
}
// Response
{
"jsonrpc": "2.0",
"result": {
"digest": "GBqPRFR9sYfWA8rt2wCkcgZrctyYMj8Ufunxkjg5G8zt"
},
"id": 1
}
sui_signPersonalMessage
Sign a personal message.
Parameters
message (object) - The message to sign:
message (string) - The message to sign (plain text)
address (string) - The account address to sign with
Returns
object - The signed message:
signature (string) - The base64 encoded signature
Example
// Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_signPersonalMessage",
"params": {
"message": "This is a message to be signed for SUI",
"address": "0xd5f647edb77d4fda31d0304506447fb3c92e55aaf77bc5ed4b77c332dd4605fa"
}
}
// Response
{
"jsonrpc": "2.0",
"result": {
"signature": "APsZ7PvuAynXYxxfeo0Py4DWOnrUpwqHhJJ1F8aGB2nmS5Wv9dvVo8Gr7DKaXwPMqFaFNKsHb0Hej07R0L0NpQsZXLv/ORduxMYX0fw8dbHlnWC8WG0ymrlAmARpEibbhw=="
},
"id": 1
}
Additional Resources
For more information about Sui RPC methods and implementation details, please refer to the official Sui documentation.