Sign and send SUI transfer
Copy
Ask AI
// Sign only (does not broadcast)
string signature = await DynamicSDK.Instance.Networks.Sui.SignTransferTransaction(
wallet.Id, "0xRecipientAddress", "0.1");
// Sign and broadcast
string digest = await DynamicSDK.Instance.Networks.Sui.SignAndSendTransferTransaction(
wallet.Id, "0xRecipientAddress", "0.1");
Debug.Log($"Transaction digest: {digest}");
Sign message
Copy
Ask AI
string signature = await DynamicSDK.Instance.Networks.Sui.SignMessage(
wallet.Id, "Hello from SUI");
Sign raw transaction
Sign a base64-encoded transaction:Copy
Ask AI
string signature = await DynamicSDK.Instance.Networks.Sui.SignTransaction(
wallet.Id, base64TransactionBytes);
Send raw transaction
Send a base64-encoded transaction:Copy
Ask AI
string digest = await DynamicSDK.Instance.Networks.Sui.SendTransaction(
wallet.Id, base64TransactionBytes);
Complete example
Copy
Ask AI
using DynamicSDK.Core;
using UnityEngine;
using System.Linq;
public class SuiTransactionManager : MonoBehaviour
{
private BaseWallet _suiWallet;
private void Start()
{
_suiWallet = DynamicSDK.Instance.Wallets.UserWallets
.FirstOrDefault(w => w.Chain.ToUpper() == "SUI");
if (_suiWallet != null)
{
Debug.Log($"SUI wallet found: {_suiWallet.Address}");
}
}
public async void SendSui(string toAddress, string amount)
{
if (_suiWallet == null)
{
Debug.LogError("No SUI wallet available");
return;
}
try
{
string digest = await DynamicSDK.Instance.Networks.Sui.SignAndSendTransferTransaction(
_suiWallet.Id, toAddress, amount);
Debug.Log($"Transaction sent!");
Debug.Log($"Digest: {digest}");
}
catch (System.Exception ex)
{
Debug.LogError($"Transaction failed: {ex.Message}");
}
}
public async void SignMessage()
{
if (_suiWallet == null)
{
Debug.LogError("No SUI wallet available");
return;
}
string message = "Hello from SUI!";
try
{
string signature = await DynamicSDK.Instance.Networks.Sui.SignMessage(
_suiWallet.Id, message);
Debug.Log($"Message signed successfully");
Debug.Log($"Signature: {signature}");
}
catch (System.Exception ex)
{
Debug.LogError($"Signing failed: {ex.Message}");
}
}
public async void SignTransferOnly(string toAddress, string amount)
{
if (_suiWallet == null)
{
Debug.LogError("No SUI wallet available");
return;
}
// Sign without broadcasting (useful for multi-sig or delayed execution)
string signature = await DynamicSDK.Instance.Networks.Sui.SignTransferTransaction(
_suiWallet.Id, toAddress, amount);
Debug.Log($"Transaction signed (not broadcast)");
Debug.Log($"Signature: {signature}");
}
}
Next steps
- Message Signing - Sign messages with SUI wallets
- Token Balances - Query token balances