sdk/js: simplify getSignedVAA
Change-Id: Ieaecd9070d0b4284467e5097f912c1a44e1827be
This commit is contained in:
parent
1c2e7444e8
commit
c7b61b7470
|
@ -1,7 +1,6 @@
|
|||
import {
|
||||
CHAIN_ID_ETH,
|
||||
CHAIN_ID_SOLANA,
|
||||
getSignedVAA,
|
||||
ixFromRust,
|
||||
Bridge__factory,
|
||||
Implementation__factory,
|
||||
|
@ -23,6 +22,7 @@ import {
|
|||
SOL_BRIDGE_ADDRESS,
|
||||
SOL_TOKEN_BRIDGE_ADDRESS,
|
||||
} from "./consts";
|
||||
import { getSignedVAAWithRetry } from "./getSignedVAAWithRetry";
|
||||
|
||||
// TODO: allow for / handle cancellation?
|
||||
// TODO: overall better input checking and error handling
|
||||
|
@ -57,7 +57,7 @@ export async function attestFromEth(
|
|||
const emitterAddress = Buffer.from(
|
||||
zeroPad(arrayify(ETH_TOKEN_BRIDGE_ADDRESS), 32)
|
||||
).toString("hex");
|
||||
const { vaaBytes } = await getSignedVAA(
|
||||
const { vaaBytes } = await getSignedVAAWithRetry(
|
||||
CHAIN_ID_ETH,
|
||||
emitterAddress,
|
||||
sequence.toString()
|
||||
|
@ -146,7 +146,7 @@ export async function attestFromSolana(
|
|||
32
|
||||
)
|
||||
).toString("hex");
|
||||
const { vaaBytes } = await getSignedVAA(
|
||||
const { vaaBytes } = await getSignedVAAWithRetry(
|
||||
CHAIN_ID_SOLANA,
|
||||
emitterAddress,
|
||||
sequence.toString()
|
||||
|
|
|
@ -34,6 +34,7 @@ export const CHAINS_BY_ID: ChainsById = CHAINS.reduce((obj, chain) => {
|
|||
obj[chain.id] = chain;
|
||||
return obj;
|
||||
}, {} as ChainsById);
|
||||
export const WORMHOLE_RPC_HOST = "http://localhost:8080";
|
||||
export const SOLANA_HOST = "http://localhost:8899";
|
||||
export const ETH_TEST_TOKEN_ADDRESS = getAddress(
|
||||
"0x0290FB167208Af455bB137780163b7B7a9a10C16"
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
import { ChainId, getSignedVAA } from "@certusone/wormhole-sdk";
|
||||
import { WORMHOLE_RPC_HOST } from "./consts";
|
||||
|
||||
export async function getSignedVAAWithRetry(
|
||||
emitterChain: ChainId,
|
||||
emitterAddress: string,
|
||||
sequence: string
|
||||
) {
|
||||
let result;
|
||||
while (!result) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
try {
|
||||
result = await getSignedVAA(
|
||||
WORMHOLE_RPC_HOST,
|
||||
emitterChain,
|
||||
emitterAddress,
|
||||
sequence
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
|
@ -3,7 +3,6 @@ import {
|
|||
ChainId,
|
||||
CHAIN_ID_ETH,
|
||||
CHAIN_ID_SOLANA,
|
||||
getSignedVAA,
|
||||
Implementation__factory,
|
||||
ixFromRust,
|
||||
TokenImplementation__factory,
|
||||
|
@ -27,6 +26,7 @@ import {
|
|||
SOL_BRIDGE_ADDRESS,
|
||||
SOL_TOKEN_BRIDGE_ADDRESS,
|
||||
} from "./consts";
|
||||
import { getSignedVAAWithRetry } from "./getSignedVAAWithRetry";
|
||||
|
||||
// TODO: allow for / handle cancellation?
|
||||
// TODO: overall better input checking and error handling
|
||||
|
@ -91,7 +91,7 @@ export async function transferFromEth(
|
|||
const emitterAddress = Buffer.from(
|
||||
zeroPad(arrayify(ETH_TOKEN_BRIDGE_ADDRESS), 32)
|
||||
).toString("hex");
|
||||
const { vaaBytes } = await getSignedVAA(
|
||||
const { vaaBytes } = await getSignedVAAWithRetry(
|
||||
CHAIN_ID_ETH,
|
||||
emitterAddress,
|
||||
sequence.toString()
|
||||
|
@ -239,7 +239,7 @@ export async function transferFromSolana(
|
|||
32
|
||||
)
|
||||
).toString("hex");
|
||||
const { vaaBytes } = await getSignedVAA(
|
||||
const { vaaBytes } = await getSignedVAAWithRetry(
|
||||
CHAIN_ID_SOLANA,
|
||||
emitterAddress,
|
||||
sequence
|
||||
|
|
|
@ -5,27 +5,18 @@ import {
|
|||
} from "../proto/publicrpc/v1/publicrpc";
|
||||
|
||||
export async function getSignedVAA(
|
||||
host: string,
|
||||
emitterChain: ChainId,
|
||||
emitterAddress: string,
|
||||
sequence: string
|
||||
) {
|
||||
const rpc = new GrpcWebImpl("http://localhost:8080", {}); // TODO: make this a parameter
|
||||
const rpc = new GrpcWebImpl(host, {});
|
||||
const api = new PublicrpcClientImpl(rpc);
|
||||
// TODO: move this loop outside sdk
|
||||
let result;
|
||||
while (!result) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
try {
|
||||
result = await api.GetSignedVAA({
|
||||
messageId: {
|
||||
emitterChain,
|
||||
emitterAddress,
|
||||
sequence,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
// TODO: instead of try/catch, simply return api.GetSignedVAA
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return await api.GetSignedVAA({
|
||||
messageId: {
|
||||
emitterChain,
|
||||
emitterAddress,
|
||||
sequence,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue