diff --git a/sdk/js/CHANGELOG.md b/sdk/js/CHANGELOG.md index 45c5b35cb..a90dfe439 100644 --- a/sdk/js/CHANGELOG.md +++ b/sdk/js/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.9.16 + +### Changed + +Sui redeem fix + ## 0.9.15 ### Added diff --git a/sdk/js/package.json b/sdk/js/package.json index ca8632a35..0992da0ad 100644 --- a/sdk/js/package.json +++ b/sdk/js/package.json @@ -1,6 +1,6 @@ { "name": "@certusone/wormhole-sdk", - "version": "0.9.15", + "version": "0.9.16", "description": "SDK for interacting with Wormhole", "homepage": "https://wormhole.com", "main": "./lib/cjs/index.js", diff --git a/sdk/js/src/sui/utils.ts b/sdk/js/src/sui/utils.ts index 62682c5f9..a71ecc92f 100644 --- a/sdk/js/src/sui/utils.ts +++ b/sdk/js/src/sui/utils.ts @@ -1,4 +1,5 @@ import { + builder, getObjectType, isValidSuiAddress as isValidFullSuiAddress, JsonRpcProvider, @@ -14,8 +15,12 @@ import { SuiRpcValidationError } from "./error"; import { SuiError } from "./types"; import { DynamicFieldPage } from "@mysten/sui.js/dist/types/dynamic_fields"; +const MAX_PURE_ARGUMENT_SIZE = 16 * 1024; const UPGRADE_CAP_TYPE = "0x2::package::UpgradeCap"; +export const uint8ArrayToBCS = (arr: Uint8Array) => + builder.ser("vector", arr, { maxSize: MAX_PURE_ARGUMENT_SIZE }).toBytes(); + export const executeTransactionBlock = async ( signer: RawSigner, transactionBlock: TransactionBlock diff --git a/sdk/js/src/token_bridge/createWrapped.ts b/sdk/js/src/token_bridge/createWrapped.ts index 621b930ab..87a3b8523 100644 --- a/sdk/js/src/token_bridge/createWrapped.ts +++ b/sdk/js/src/token_bridge/createWrapped.ts @@ -32,6 +32,7 @@ import { getUpgradeCapObjectId, getWrappedCoinType, publishCoin, + uint8ArrayToBCS, } from "../sui"; import { callFunctionNear } from "../utils"; import { SignedVaa } from "../vaa"; @@ -247,7 +248,7 @@ export async function createWrappedOnSui( target: `${coreBridgePackageId}::vaa::parse_and_verify`, arguments: [ tx.object(coreBridgeStateObjectId), - tx.pure([...attestVAA]), + tx.pure(uint8ArrayToBCS(attestVAA)), tx.object(SUI_CLOCK_OBJECT_ID), ], }); diff --git a/sdk/js/src/token_bridge/redeem.ts b/sdk/js/src/token_bridge/redeem.ts index f52dc9ef0..f34fa922d 100644 --- a/sdk/js/src/token_bridge/redeem.ts +++ b/sdk/js/src/token_bridge/redeem.ts @@ -5,13 +5,13 @@ import { } from "@mysten/sui.js"; import { ACCOUNT_SIZE, + NATIVE_MINT, + TOKEN_PROGRAM_ID, createCloseAccountInstruction, createInitializeAccountInstruction, createTransferInstruction, getMinimumBalanceForRentExemptAccount, getMint, - NATIVE_MINT, - TOKEN_PROGRAM_ID, } from "@solana/spl-token"; import { Commitment, @@ -27,7 +27,7 @@ import { MsgExecuteContract as XplaMsgExecuteContract } from "@xpla/xpla.js"; import { Algodv2 } from "algosdk"; import { AptosClient, Types } from "aptos"; import BN from "bn.js"; -import { ethers, Overrides } from "ethers"; +import { Overrides, ethers } from "ethers"; import { fromUint8Array } from "js-base64"; import { FunctionCallOptions } from "near-api-js/lib/account"; import { Provider } from "near-api-js/lib/providers"; @@ -42,17 +42,17 @@ import { createCompleteTransferNativeInstruction, createCompleteTransferWrappedInstruction, } from "../solana/tokenBridge"; -import { getPackageId, getTokenCoinType } from "../sui"; +import { getPackageId, getTokenCoinType, uint8ArrayToBCS } from "../sui"; import { - callFunctionNear, - ChainId, CHAIN_ID_NEAR, CHAIN_ID_SOLANA, - hashLookup, + ChainId, MAX_VAA_DECIMALS, + callFunctionNear, + hashLookup, uint8ArrayToHex, } from "../utils"; -import { parseTokenTransferVaa, SignedVaa } from "../vaa"; +import { SignedVaa, parseTokenTransferVaa } from "../vaa"; import { getForeignAssetNear } from "./getForeignAsset"; export async function redeemOnEth( @@ -392,7 +392,7 @@ export async function redeemOnSui( target: `${coreBridgePackageId}::vaa::parse_and_verify`, arguments: [ tx.object(coreBridgeStateObjectId), - tx.pure([...transferVAA]), + tx.pure(uint8ArrayToBCS(transferVAA)), tx.object(SUI_CLOCK_OBJECT_ID), ], }); diff --git a/sdk/js/src/token_bridge/updateWrapped.ts b/sdk/js/src/token_bridge/updateWrapped.ts index b26fb7de2..437bd638c 100644 --- a/sdk/js/src/token_bridge/updateWrapped.ts +++ b/sdk/js/src/token_bridge/updateWrapped.ts @@ -13,7 +13,7 @@ import { createWrappedOnXpla, } from "."; import { Bridge__factory } from "../ethers-contracts"; -import { getPackageId, getWrappedCoinType } from "../sui"; +import { getPackageId, getWrappedCoinType, uint8ArrayToBCS } from "../sui"; export async function updateWrappedOnEth( tokenBridgeAddress: string, @@ -71,7 +71,7 @@ export async function updateWrappedOnSui( target: `${coreBridgePackageId}::vaa::parse_and_verify`, arguments: [ tx.object(coreBridgeStateObjectId), - tx.pure([...attestVAA]), + tx.pure(uint8ArrayToBCS(attestVAA)), tx.object(SUI_CLOCK_OBJECT_ID), ], });