swapped in solana wallet adapter

Change-Id: I3075380313f10fdb579a4b777e0f10506e7e1ede
This commit is contained in:
chase-45 2021-08-20 21:28:17 -04:00
parent 2a317ab923
commit 0fab2481ca
18 changed files with 2151 additions and 275 deletions

File diff suppressed because it is too large Load Diff

View File

@ -7,9 +7,19 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.11.2",
"@metamask/detect-provider": "^1.2.0",
"@project-serum/sol-wallet-adapter": "^0.2.5",
"@reduxjs/toolkit": "^1.6.1",
"@solana/spl-token": "^0.1.6",
"@solana/wallet-adapter-base": "^0.4.1",
"@solana/wallet-adapter-ledger": "^0.4.1",
"@solana/wallet-adapter-material-ui": "^0.7.1",
"@solana/wallet-adapter-mathwallet": "^0.4.1",
"@solana/wallet-adapter-phantom": "^0.4.1",
"@solana/wallet-adapter-react": "^0.7.1",
"@solana/wallet-adapter-solflare": "^0.1.0",
"@solana/wallet-adapter-sollet": "^0.4.1",
"@solana/wallet-adapter-solong": "^0.4.1",
"@solana/wallet-adapter-torus": "^0.5.0",
"@solana/wallet-adapter-wallets": "^0.6.1",
"@solana/wallet-base": "^0.0.1",
"@solana/web3.js": "^1.22.0",
"@terra-money/wallet-provider": "^1.4.0-alpha.1",

View File

@ -1,4 +1,8 @@
import { CHAIN_ID_TERRA, CHAIN_ID_ETH, CHAIN_ID_SOLANA } from "@certusone/wormhole-sdk";
import {
CHAIN_ID_TERRA,
CHAIN_ID_ETH,
CHAIN_ID_SOLANA,
} from "@certusone/wormhole-sdk";
import { Button, CircularProgress, makeStyles } from "@material-ui/core";
import { useCallback } from "react";
import { useConnectedWallet } from "@terra-money/wallet-provider";
@ -29,8 +33,8 @@ function Create() {
const dispatch = useDispatch();
const classes = useStyles();
const targetChain = useSelector(selectAttestTargetChain);
const { wallet } = useSolanaWallet();
const solPK = wallet?.publicKey;
const solanaWallet = useSolanaWallet();
const solPK = solanaWallet?.publicKey;
const signedVAA = useAttestSignedVAA();
const isCreating = useSelector(selectAttestIsCreating);
const { signer } = useEthereumProvider();
@ -39,7 +43,7 @@ function Create() {
if (targetChain === CHAIN_ID_SOLANA && signedVAA) {
(async () => {
dispatch(setIsCreating(true));
await createWrappedOnSolana(wallet, solPK?.toString(), signedVAA);
await createWrappedOnSolana(solanaWallet, solPK?.toString(), signedVAA);
dispatch(reset());
})();
}
@ -56,7 +60,7 @@ function Create() {
createWrappedOnTerra(terraWallet, signedVAA);
})();
}
}, [dispatch, targetChain, wallet, solPK, signedVAA, signer]);
}, [dispatch, targetChain, solanaWallet, solPK, signedVAA, signer]);
return (
<div style={{ position: "relative" }}>
<Button

View File

@ -1,4 +1,8 @@
import { CHAIN_ID_TERRA, CHAIN_ID_ETH, CHAIN_ID_SOLANA } from "@certusone/wormhole-sdk";
import {
CHAIN_ID_TERRA,
CHAIN_ID_ETH,
CHAIN_ID_SOLANA,
} from "@certusone/wormhole-sdk";
import { Button, CircularProgress, makeStyles } from "@material-ui/core";
import { useCallback } from "react";
import { useDispatch, useSelector } from "react-redux";
@ -39,9 +43,9 @@ function Send() {
const isSending = useSelector(selectAttestIsSending);
const isSendComplete = useSelector(selectAttestIsSendComplete);
const { signer } = useEthereumProvider();
const { wallet } = useSolanaWallet();
const solanaWallet = useSolanaWallet();
const terraWallet = useConnectedWallet();
const solPK = wallet?.publicKey;
const solPK = solanaWallet?.publicKey;
// TODO: dynamically get "to" wallet
const handleAttestClick = useCallback(() => {
if (sourceChain === CHAIN_ID_ETH) {
@ -63,7 +67,7 @@ function Send() {
dispatch(setIsSending(true));
try {
const vaaBytes = await attestFromSolana(
wallet,
solanaWallet,
solPK?.toString(),
sourceAsset
);
@ -75,20 +79,20 @@ function Send() {
}
})();
} else if (sourceChain === CHAIN_ID_TERRA) {
//TODO: just for testing, this should eventually use the store to communicate between steps
(async () => {
dispatch(setIsSending(true));
try {
const vaaBytes = await attestFromTerra(terraWallet, sourceAsset);
console.log("bytes in attest", vaaBytes);
vaaBytes && dispatch(setSignedVAAHex(uint8ArrayToHex(vaaBytes)));
} catch (e) {
console.error(e);
dispatch(setIsSending(false));
}
})();
}
}, [dispatch, sourceChain, signer, wallet, solPK, sourceAsset]);
//TODO: just for testing, this should eventually use the store to communicate between steps
(async () => {
dispatch(setIsSending(true));
try {
const vaaBytes = await attestFromTerra(terraWallet, sourceAsset);
console.log("bytes in attest", vaaBytes);
vaaBytes && dispatch(setSignedVAAHex(uint8ArrayToHex(vaaBytes)));
} catch (e) {
console.error(e);
dispatch(setIsSending(false));
}
})();
}
}, [dispatch, sourceChain, signer, solanaWallet, solPK, sourceAsset]);
return (
<>
<div style={{ position: "relative" }}>

View File

@ -1,16 +1,25 @@
import { Toolbar, Typography } from "@material-ui/core";
import DisconnectIcon from "@material-ui/icons/LinkOff";
import {
WalletDisconnectButton,
WalletMultiButton,
} from "@solana/wallet-adapter-material-ui";
import { useWallet } from "@solana/wallet-adapter-react";
import React, { FC } from "react";
import { useSolanaWallet } from "../contexts/SolanaWalletContext";
import ToggleConnectedButton from "./ToggleConnectedButton";
const SolanaWalletKey = () => {
const { connect, disconnect, connected, wallet } = useSolanaWallet();
const pk = wallet?.publicKey?.toString() || "";
const wallet = useSolanaWallet();
return (
<ToggleConnectedButton
connect={connect}
disconnect={disconnect}
connected={connected}
pk={pk}
/>
<Toolbar style={{ display: "flex" }}>
<WalletMultiButton />
{wallet && (
<WalletDisconnectButton
startIcon={<DisconnectIcon />}
style={{ marginLeft: 8 }}
/>
)}
</Toolbar>
);
};

View File

@ -41,8 +41,8 @@ function Redeem() {
const originChain = useSelector(selectTransferOriginChain);
const targetChain = useSelector(selectTransferTargetChain);
const targetAsset = useSelector(selectTransferTargetAsset);
const { wallet } = useSolanaWallet();
const solPK = wallet?.publicKey;
const solanaWallet = useSolanaWallet();
const solPK = solanaWallet?.publicKey;
const { signer } = useEthereumProvider();
const terraWallet = useConnectedWallet();
const signedVAA = useTransferSignedVAA();
@ -59,7 +59,7 @@ function Redeem() {
(async () => {
dispatch(setIsRedeeming(true));
await redeemOnSolana(
wallet,
solanaWallet,
solPK?.toString(),
signedVAA,
!!isSourceAssetWormholeWrapped && originChain === CHAIN_ID_SOLANA,
@ -78,7 +78,7 @@ function Redeem() {
targetChain,
signer,
signedVAA,
wallet,
solanaWallet,
solPK,
isSourceAssetWormholeWrapped,
originChain,

View File

@ -1,4 +1,8 @@
import { CHAIN_ID_TERRA, CHAIN_ID_ETH, CHAIN_ID_SOLANA } from "@certusone/wormhole-sdk";
import {
CHAIN_ID_TERRA,
CHAIN_ID_ETH,
CHAIN_ID_SOLANA,
} from "@certusone/wormhole-sdk";
import { Button, CircularProgress, makeStyles } from "@material-ui/core";
import {
ASSOCIATED_TOKEN_PROGRAM_ID,
@ -58,9 +62,9 @@ function Send() {
const isSending = useSelector(selectTransferIsSending);
const isSendComplete = useSelector(selectTransferIsSendComplete);
const { signer, signerAddress } = useEthereumProvider();
const { wallet } = useSolanaWallet();
const terraWallet = useConnectedWallet();
const solPK = wallet?.publicKey;
const solanaWallet = useSolanaWallet();
const solPK = solanaWallet?.publicKey;
const sourceParsedTokenAccount = useSelector(
selectTransferSourceParsedTokenAccount
);
@ -133,7 +137,7 @@ function Send() {
dispatch(setIsSending(true));
try {
const vaaBytes = await transferFromSolana(
wallet,
solanaWallet,
solPK?.toString(),
sourceTokenPublicKey,
sourceAsset,
@ -161,7 +165,7 @@ function Send() {
sourceAsset,
amount,
"",
targetChain,
targetChain
);
console.log("bytes in transfer", vaaBytes);
vaaBytes && dispatch(setSignedVAAHex(uint8ArrayToHex(vaaBytes)));
@ -176,7 +180,7 @@ function Send() {
sourceChain,
signer,
signerAddress,
wallet,
solanaWallet,
solPK,
sourceTokenPublicKey,
sourceAsset,

View File

@ -1,59 +1,34 @@
import Wallet from "@project-serum/sol-wallet-adapter";
import React, {
ReactChildren,
useCallback,
useContext,
useMemo,
useState,
} from "react";
import { SOLANA_HOST } from "../utils/consts";
import { WalletDialogProvider } from "@solana/wallet-adapter-material-ui";
import { useWallet, WalletProvider } from "@solana/wallet-adapter-react";
import {
getPhantomWallet,
getSolletWallet,
} from "@solana/wallet-adapter-wallets";
import React, { FC, useMemo } from "react";
interface ISolanaWalletContext {
connect(): void;
disconnect(): void;
connected: boolean;
wallet: Wallet | undefined;
}
const SolanaWalletContext = React.createContext<ISolanaWalletContext>({
connect: () => {},
disconnect: () => {},
connected: false,
wallet: undefined,
});
export const SolanaWalletProvider = ({
children,
}: {
children: ReactChildren;
}) => {
const [wallet, setWallet] = useState<Wallet | undefined>(undefined);
const [connected, setConnected] = useState(false);
const connect = useCallback(() => {
const wallet = new Wallet("https://www.sollet.io", SOLANA_HOST);
setWallet(wallet);
wallet.on("connect", () => {
setConnected(true);
});
wallet.on("disconnect", () => {
console.log("disconnected");
setConnected(false);
setWallet(undefined);
});
wallet.connect();
export const SolanaWalletProvider: FC = (props) => {
// @solana/wallet-adapter-wallets includes all the adapters but supports tree shaking --
// Only the wallets you want to instantiate here will be compiled into your application
const wallets = useMemo(() => {
console.log("running wallets memo again");
return [
getPhantomWallet(),
// getSolflareWallet(),
// getTorusWallet({
// options: { clientId: 'Go to https://developer.tor.us and create a client ID' }
// }),
// getLedgerWallet(),
// getSolongWallet(),
// getMathWallet(),
getSolletWallet(),
];
}, []);
const disconnect = useCallback(() => {
wallet?.disconnect();
}, [wallet]);
const contextValue = useMemo(
() => ({ connect, disconnect, connected, wallet }),
[connect, disconnect, wallet, connected]
);
return (
<SolanaWalletContext.Provider value={contextValue}>
{children}
</SolanaWalletContext.Provider>
<WalletProvider wallets={wallets}>
<WalletDialogProvider>{props.children}</WalletDialogProvider>
</WalletProvider>
);
};
export const useSolanaWallet = () => {
return useContext(SolanaWalletContext);
};
export const useSolanaWallet = useWallet;

View File

@ -51,7 +51,7 @@ export const TerraWalletWrapper = ({
}) => {
// TODO: Use wallet instead of useConnectedWallet.
const terraWallet = useWallet();
const [wallet, setWallet] = useState<Wallet | undefined>(undefined);
const [, setWallet] = useState<Wallet | undefined>(undefined);
const [connected, setConnected] = useState(false);
const connect = useCallback(() => {

View File

@ -10,6 +10,8 @@ import { useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { useEthereumProvider } from "../contexts/EthereumProviderContext";
import { useSolanaWallet } from "../contexts/SolanaWalletContext";
import { useConnectedWallet } from "@terra-money/wallet-provider";
import {
selectTransferSourceAsset,
selectTransferSourceChain,
@ -59,8 +61,9 @@ function useGetBalanceEffect(sourceOrTarget: "source" | "target") {
? selectTransferSourceAsset
: selectTransferTargetAsset
);
const { wallet } = useSolanaWallet();
const solPK = wallet?.publicKey;
const solanaWallet = useSolanaWallet();
const solPK = solanaWallet?.publicKey;
const terraWallet = useConnectedWallet();
const { provider, signerAddress } = useEthereumProvider();
useEffect(() => {
// TODO: loading state
@ -69,7 +72,8 @@ function useGetBalanceEffect(sourceOrTarget: "source" | "target") {
return;
}
let cancelled = false;
if (lookupChain === CHAIN_ID_TERRA && wallet) {
if (lookupChain === CHAIN_ID_TERRA && terraWallet) {
dispatch(
setSourceParsedTokenAccount(
createParsedTokenAccount(undefined, "0", 0, 0, "0")
@ -151,7 +155,8 @@ function useGetBalanceEffect(sourceOrTarget: "source" | "target") {
};
}, [
dispatch,
wallet,
solanaWallet,
terraWallet,
sourceOrTarget,
setAction,
lookupChain,

View File

@ -12,7 +12,7 @@ import {
parseSequenceFromLogSolana,
parseSequenceFromLogTerra,
} from "@certusone/wormhole-sdk";
import Wallet from "@project-serum/sol-wallet-adapter";
import { WalletContextState } from "@solana/wallet-adapter-react";
import { Connection } from "@solana/web3.js";
import { ConnectedWallet as TerraConnectedWallet } from "@terra-money/wallet-provider";
import { ethers } from "ethers";
@ -49,7 +49,7 @@ export async function attestFromEth(
}
export async function attestFromSolana(
wallet: Wallet | undefined,
wallet: WalletContextState,
payerAddress: string | undefined, //TODO: we may not need this since we have wallet
mintAddress: string
) {

View File

@ -4,7 +4,6 @@ import {
createWrappedOnSolana as createWrappedOnSolanaTx,
createWrappedOnTerra as createWrappedOnTerraTx,
} from "@certusone/wormhole-sdk";
import Wallet from "@project-serum/sol-wallet-adapter";
import { Connection } from "@solana/web3.js";
import { ethers } from "ethers";
import { ConnectedWallet as TerraConnectedWallet } from "@terra-money/wallet-provider";
@ -17,6 +16,7 @@ import {
TERRA_BRIDGE_ADDRESS,
} from "./consts";
import { signSendAndConfirm } from "./solana";
import { WalletContextState } from "@solana/wallet-adapter-react";
export async function createWrappedOnEth(
signer: ethers.Signer | undefined,
@ -39,7 +39,7 @@ export async function createWrappedOnTerra(
}
export async function createWrappedOnSolana(
wallet: Wallet | undefined,
wallet: WalletContextState | undefined,
payerAddress: string | undefined, //TODO: we may not need this since we have wallet
signedVAA: Uint8Array
) {
@ -48,11 +48,12 @@ export async function createWrappedOnSolana(
const connection = new Connection(SOLANA_HOST, "confirmed");
await postVaaSolana(
connection,
wallet,
wallet.signTransaction,
SOL_BRIDGE_ADDRESS,
payerAddress,
Buffer.from(signedVAA)
);
const transaction = await createWrappedOnSolanaTx(
connection,
SOL_BRIDGE_ADDRESS,

View File

@ -3,10 +3,9 @@ import {
redeemOnEth as redeemOnEthTx,
redeemOnSolana as redeemOnSolanaTx,
} from "@certusone/wormhole-sdk";
import Wallet from "@project-serum/sol-wallet-adapter";
import { Connection } from "@solana/web3.js";
import { ethers } from "ethers";
import { fromUint8Array } from 'js-base64';
import { fromUint8Array } from "js-base64";
import { ConnectedWallet as TerraConnectedWallet } from "@terra-money/wallet-provider";
import { MsgExecuteContract } from "@terra-money/terra.js";
import {
@ -17,6 +16,7 @@ import {
TERRA_TOKEN_BRIDGE_ADDRESS,
} from "./consts";
import { signSendAndConfirm } from "./solana";
import { WalletContextState } from "@solana/wallet-adapter-react";
export async function redeemOnEth(
signer: ethers.Signer | undefined,
@ -27,7 +27,7 @@ export async function redeemOnEth(
}
export async function redeemOnSolana(
wallet: Wallet | undefined,
wallet: WalletContextState | undefined,
payerAddress: string | undefined, //TODO: we may not need this since we have wallet
signedVAA: Uint8Array,
isSolanaNative: boolean,
@ -38,11 +38,12 @@ export async function redeemOnSolana(
const connection = new Connection(SOLANA_HOST, "confirmed");
await postVaaSolana(
connection,
wallet,
wallet.signTransaction,
SOL_BRIDGE_ADDRESS,
payerAddress,
Buffer.from(signedVAA)
);
const transaction = await redeemOnSolanaTx(
connection,
SOL_BRIDGE_ADDRESS,
@ -57,22 +58,23 @@ export async function redeemOnSolana(
export async function redeemOnTerra(
wallet: TerraConnectedWallet | undefined,
signedVAA: Uint8Array,
signedVAA: Uint8Array
) {
if (!wallet) return;
wallet && await wallet.post({
msgs: [
new MsgExecuteContract(
wallet.terraAddress,
TERRA_TOKEN_BRIDGE_ADDRESS,
{
submit_vaa: {
data: fromUint8Array(signedVAA)
wallet &&
(await wallet.post({
msgs: [
new MsgExecuteContract(
wallet.terraAddress,
TERRA_TOKEN_BRIDGE_ADDRESS,
{
submit_vaa: {
data: fromUint8Array(signedVAA),
},
},
},
{ uluna: 1000 }
),
],
memo: "Complete Transfer",
});
{ uluna: 1000 }
),
],
memo: "Complete Transfer",
}));
}

View File

@ -1,8 +1,8 @@
import Wallet from "@project-serum/sol-wallet-adapter";
import { WalletContextState } from "@solana/wallet-adapter-react";
import { Connection, Transaction } from "@solana/web3.js";
export async function signSendAndConfirm(
wallet: Wallet,
wallet: WalletContextState,
connection: Connection,
transaction: Transaction
) {
@ -13,7 +13,7 @@ export async function signSendAndConfirm(
}
export async function signSendConfirmAndGet(
wallet: Wallet,
wallet: WalletContextState,
connection: Connection,
transaction: Transaction
) {

View File

@ -1,8 +1,8 @@
import {
ChainId,
CHAIN_ID_ETH,
CHAIN_ID_TERRA,
CHAIN_ID_SOLANA,
CHAIN_ID_TERRA,
getEmitterAddressEth,
getEmitterAddressSolana,
parseSequenceFromLogEth,
@ -11,9 +11,11 @@ import {
transferFromEth as transferFromEthTx,
transferFromSolana as transferFromSolanaTx,
} from "@certusone/wormhole-sdk";
import { fromUint8Array } from 'js-base64';
import { ConnectedWallet as TerraConnectedWallet, TxResult } from "@terra-money/wallet-provider";
import Wallet from "@project-serum/sol-wallet-adapter";
import { fromUint8Array } from "js-base64";
import {
ConnectedWallet as TerraConnectedWallet,
TxResult,
} from "@terra-money/wallet-provider";
import { Connection } from "@solana/web3.js";
import { MsgExecuteContract } from "@terra-money/terra.js";
import { ethers } from "ethers";
@ -30,6 +32,7 @@ import {
} from "./consts";
import { getSignedVAAWithRetry } from "./getSignedVAAWithRetry";
import { signSendConfirmAndGet } from "./solana";
import { WalletContextState } from "@solana/wallet-adapter-react";
// TODO: overall better input checking and error handling
export async function transferFromEth(
@ -62,7 +65,7 @@ export async function transferFromEth(
}
export async function transferFromSolana(
wallet: Wallet | undefined,
wallet: WalletContextState | undefined,
payerAddress: string | undefined, //TODO: we may not need this since we have wallet
fromAddress: string | undefined,
mintAddress: string,
@ -123,29 +126,31 @@ export async function transferFromTerra(
asset: string,
amount: string,
targetAddressStr: string | undefined,
targetChain: ChainId,
targetChain: ChainId
) {
if (!wallet) return;
const result: TxResult = wallet && await wallet.post({
msgs: [
new MsgExecuteContract(
wallet.terraAddress,
TERRA_TOKEN_BRIDGE_ADDRESS,
{
initiate_transfer: {
asset: TERRA_TEST_TOKEN_ADDRESS,
amount: amount,
recipient_chain: targetChain,
recipient: targetAddressStr,
fee: 1000,
nonce: 0,
const result: TxResult =
wallet &&
(await wallet.post({
msgs: [
new MsgExecuteContract(
wallet.terraAddress,
TERRA_TOKEN_BRIDGE_ADDRESS,
{
initiate_transfer: {
asset: TERRA_TEST_TOKEN_ADDRESS,
amount: amount,
recipient_chain: targetChain,
recipient: targetAddressStr,
fee: 1000,
nonce: 0,
},
},
},
{ uluna: 1000 }
),
],
memo: "Complete Transfer",
});
{ uluna: 1000 }
),
],
memo: "Complete Transfer",
}));
console.log(result);
const sequence = parseSequenceFromLogTerra(result);
console.log(sequence);

View File

@ -11,7 +11,6 @@
"license": "Apache-2.0",
"dependencies": {
"@improbable-eng/grpc-web": "^0.14.0",
"@project-serum/sol-wallet-adapter": "^0.2.5",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^1.8.10",
@ -1013,21 +1012,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/@project-serum/sol-wallet-adapter": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.5.tgz",
"integrity": "sha512-Y0XHe+FXXJ7P8XZtx3luAlatO0ge2LdrZUCmqMSzJf+K+fko+qTYIBSUuWwO7y/O4brIXVReR1mEUvF6QKDF2w==",
"dependencies": {
"bs58": "^4.0.1",
"eventemitter3": "^4.0.7"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"@solana/web3.js": "^1.5.0"
}
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@ -4193,15 +4177,6 @@
"integrity": "sha512-LD4NnkKpHHSMo5z9MvFsG4g1xxZUDqV3A3Futu3nvyfs4wPwXxqOgMaxOoa2PeyGL2VNeSlbxT54enbQzGcgJQ==",
"dev": true
},
"@project-serum/sol-wallet-adapter": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.5.tgz",
"integrity": "sha512-Y0XHe+FXXJ7P8XZtx3luAlatO0ge2LdrZUCmqMSzJf+K+fko+qTYIBSUuWwO7y/O4brIXVReR1mEUvF6QKDF2w==",
"requires": {
"bs58": "^4.0.1",
"eventemitter3": "^4.0.7"
}
},
"@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",

View File

@ -48,7 +48,6 @@
},
"dependencies": {
"@improbable-eng/grpc-web": "^0.14.0",
"@project-serum/sol-wallet-adapter": "^0.2.5",
"@solana/spl-token": "^0.1.8",
"@solana/web3.js": "^1.24.0",
"@terra-money/terra.js": "^1.8.10",

View File

@ -5,13 +5,12 @@ import {
Transaction,
TransactionInstruction,
} from "@solana/web3.js";
import Wallet from "@project-serum/sol-wallet-adapter";
import { ixFromRust } from "./rust";
// is there a better pattern for this?
export async function postVaa(
connection: Connection,
wallet: Wallet,
signTransaction: (transaction: Transaction) => any,
bridge_id: string,
payer: string,
vaa: Buffer
@ -53,7 +52,7 @@ export async function postVaa(
transaction.partialSign(signature_set);
// Sign transaction, broadcast, and confirm
const signed = await wallet.signTransaction(transaction);
const signed = await signTransaction(transaction);
const txid = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction(txid);
}
@ -66,7 +65,7 @@ export async function postVaa(
transaction.recentBlockhash = blockhash;
transaction.feePayer = new PublicKey(payer);
const signed = await wallet.signTransaction(transaction);
const signed = await signTransaction(transaction);
const txid = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction(txid);
}