From a517d66657e935c8656877ab63f453923c35336e Mon Sep 17 00:00:00 2001 From: Kunal Kotiyal <100824262+kunalroute@users.noreply.github.com> Date: Tue, 29 Oct 2024 13:41:05 +0530 Subject: [PATCH] Update sui-support.md --- .../sui-support.md | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/docs/develop/asset-transfer-via-nitro/tools/nitro-pathfinder-api/performing-cross-chain-transaction/sui-support.md b/docs/develop/asset-transfer-via-nitro/tools/nitro-pathfinder-api/performing-cross-chain-transaction/sui-support.md index 33b66c26..32774610 100644 --- a/docs/develop/asset-transfer-via-nitro/tools/nitro-pathfinder-api/performing-cross-chain-transaction/sui-support.md +++ b/docs/develop/asset-transfer-via-nitro/tools/nitro-pathfinder-api/performing-cross-chain-transaction/sui-support.md @@ -9,8 +9,22 @@ For Sui, only the signing and sending trasaction will be different. ```jsx import { TransactionBlock } from "@mysten/sui.js/transactions"; import { getFullnodeUrl, SuiClient } from "@mysten/sui/client"; +import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519"; +import { ethers } from "ethers"; const main = async () => { + + // configure your private_key + const signer = Ed25519Keypair.fromSecretKey( + Uint8Array.from( + ethers.getBytes( + private_key.startsWith("0x") ? private_key : `0x${private_key}` + ) + ) + ); + + // wallet address can be derived if required + // const wallet = signer.getPublicKey().toSuiAddress(); // get transaction data same as evm const txResponse = await getTransaction(quoteData); // quoteData has been fetched in step 1 @@ -20,12 +34,32 @@ const main = async () => { const client = new SuiClient({ url: rpcUrl }); // sending the transaction using the data given by the pathfinder - const byteArray = hexToUint8Array(txResponse.data); + const byteArray = hexToUint8Array(txResponse.data); // convert api tnx hex data to tnx byte array const transactionBlock = TransactionBlock.from(byteArray); - const result = await signAndSendTx(client, transactionBlock, walletAddress) + const result = await signAndSendTx(client, transactionBlock, signer) console.log(`txHash ${result.digest}`); } +async function signAndSendTx( + client: SuiClient, + txb: Transaction | Uint8Array, + signer: typeof Ed25519Keypair +) { + return await client.signAndExecuteTransaction({ + transaction: txb, + signer, + requestType: "WaitForLocalExecution", + options: { + showEffects: true, + showEvents: true, + showRawInput: true, + showInput: true, + showBalanceChanges: true, + showObjectChanges: true, + }, + }); +} + main() -``` \ No newline at end of file +```