Skip to content

Commit

Permalink
Merge branch 'feat/enable-attest-recovery'
Browse files Browse the repository at this point in the history
  • Loading branch information
yuli-ferna committed May 28, 2024
2 parents ac13691 + 57c252e commit d506253
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 15 deletions.
19 changes: 15 additions & 4 deletions src/components/Recovery.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import {
uint8ArrayToHex,
CHAIN_ID_SUI,
getForeignAssetSui,
CHAIN_ID_SCROLL,
} from "@certusone/wormhole-sdk";
import { repairVaa } from "../utils/repairVaa";
import {
Expand Down Expand Up @@ -126,6 +127,7 @@ import { getSeiWasmClient, parseRawLog, searchInLogs } from "../utils/sei";
import { useVaaVerifier } from "../hooks/useVaaVerifier";
import ChainWarningMessage from "./ChainWarningMessage";
import { useDeepLinkRecoveryParams } from "../hooks/useDeepLinkRecoveryParams";
import { setSignedVAAHex, setTargetChain } from "../store/attestSlice";

const NOT_SUPPORTED_VAA_WARNING_MESSAGE = (
<>
Expand Down Expand Up @@ -585,7 +587,7 @@ export default function Recovery() {
useState(false);
const [recoverySourceTxError, setRecoverySourceTxError] = useState("");
const [recoverySignedVAA, setRecoverySignedVAA] = useState("");
const { isNFTTransfer, isTokenBridgeTransfer } =
const { isNFTTransfer, isTokenBridgeTransfer, isTokenBridgetAttest } =
useVaaVerifier(recoverySignedVAA);
const [recoveryParsedVAA, setRecoveryParsedVAA] = useState<ParsedVaa | null>(
null
Expand Down Expand Up @@ -943,12 +945,20 @@ export default function Recovery() {
}
}, [recoverySignedVAA]);
const parsedPayloadTargetChain = parsedPayload?.targetChain;
const enableRecovery = recoverySignedVAA && parsedPayloadTargetChain;
const enableRecovery = isTokenBridgetAttest || (recoverySignedVAA && parsedPayloadTargetChain);
//&& (isNFTTransfer || isTokenBridgeTransfer);

const handleRecoverClickBase = useCallback(
(useRelayer: boolean) => {
if (enableRecovery && recoverySignedVAA && parsedPayloadTargetChain) {
if (isTokenBridgetAttest) {
dispatch(setTargetChain(CHAIN_ID_SCROLL));
dispatch(setSignedVAAHex(recoverySignedVAA));
push("/register");
} else if (
enableRecovery &&
recoverySignedVAA &&
parsedPayloadTargetChain
) {
// TODO: make recovery reducer
if (isNFT) {
dispatch(
Expand Down Expand Up @@ -991,6 +1001,7 @@ export default function Recovery() {
parsedPayloadTargetChain,
parsedPayload,
isNFT,
isTokenBridgetAttest,
push,
]
);
Expand Down Expand Up @@ -1073,7 +1084,7 @@ export default function Recovery() {
</>
)}
{recoverySignedVAA !== "" &&
!(isNFTTransfer || isTokenBridgeTransfer) && (
!(isNFTTransfer || isTokenBridgeTransfer || isTokenBridgetAttest) && (
<ChainWarningMessage>
{NOT_SUPPORTED_VAA_WARNING_MESSAGE}
</ChainWarningMessage>
Expand Down
3 changes: 3 additions & 0 deletions src/hooks/useHandleAttest.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ async function evm(
chainId === CHAIN_ID_KLAYTN
? { gasPrice: (await signer.getGasPrice()).toString() }
: {};
debugger;
const receipt = await attestFromEth(
getTokenBridgeAddressForChain(chainId),
signer,
Expand Down Expand Up @@ -691,6 +692,8 @@ export function useHandleAttest() {
const suiWallet = useSuiWallet();
const disabled = !isTargetComplete || isSending || isSendComplete;
const handleAttestClick = useCallback(() => {
debugger;
console.log("sourceChain", sourceChain);
if (isEVMChain(sourceChain) && !!signer) {
evm(dispatch, enqueueSnackbar, signer, sourceAsset, sourceChain);
} else if (sourceChain === CHAIN_ID_SOLANA && !!solanaWallet && !!solPK) {
Expand Down
2 changes: 2 additions & 0 deletions src/hooks/useHandleCreateWrapped.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ async function evm(
shouldUpdate: boolean
) {
dispatch(setIsCreating(true));
console.log(chainId, signedVAA, shouldUpdate, getTokenBridgeAddressForChain(chainId))
try {
// Karura and Acala need gas params for contract deploys
// Klaytn requires specifying gasPrice
Expand All @@ -286,6 +287,7 @@ async function evm(
signedVAA,
overrides
);
console.log(receipt, )
dispatch(
setCreateTx({ id: receipt.transactionHash, block: receipt.blockNumber })
);
Expand Down
14 changes: 14 additions & 0 deletions src/hooks/useVaaVerifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,19 @@ export function useVaaVerifier(hexVaa: string) {
[vaa]
);
const payloadType = useMemo(() => getPayloadType(vaa?.payload), [vaa]);
const isTokenBridgetAttest = useMemo(
() =>
itWasEmittedFrom(
vaaEmitterAddress,
vaaEmitterChain,
getTokenBridgeAddressForChain
) &&
isItASupportedType(
payloadType,
VAAType.ATTEST,
),
[vaaEmitterAddress, vaaEmitterChain, payloadType]
);
const isTokenBridgeTransfer = useMemo(
() =>
itWasEmittedFrom(
Expand Down Expand Up @@ -124,5 +137,6 @@ export function useVaaVerifier(hexVaa: string) {
payloadType,
isTokenBridgeTransfer,
isNFTTransfer,
isTokenBridgetAttest
};
}
25 changes: 14 additions & 11 deletions src/utils/consts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1423,17 +1423,20 @@ export const getNFTBridgeAddressForChain = (chainId: ChainId) =>
? "TESTNET"
: "DEVNET"
][coalesceChainName(chainId)].nft_bridge || "";
export const getTokenBridgeAddressForChain = (chainId: ChainId) =>
CLUSTER === "mainnet" && chainId === CHAIN_ID_SUI
? "0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9"
: CONTRACTS[
CLUSTER === "mainnet"
? "MAINNET"
: CLUSTER === "testnet"
? "TESTNET"
: "DEVNET"
][coalesceChainName(chainId)].token_bridge || "";

export const getTokenBridgeAddressForChain = (chainId: ChainId) => {
if (CLUSTER === "mainnet" && chainId === CHAIN_ID_SUI) {
return "0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9"
} else {
const env = CLUSTER === "mainnet"
? "MAINNET"
: CLUSTER === "testnet"
? "TESTNET"
: "DEVNET";
const CONTRACTS_MAP = CONTRACTS[env]
const contracts = CONTRACTS_MAP[coalesceChainName(chainId)];
return contracts?.token_bridge || "";
}
}
export const COVALENT_API_KEY = process.env.REACT_APP_COVALENT_API_KEY
? process.env.REACT_APP_COVALENT_API_KEY
: "";
Expand Down

0 comments on commit d506253

Please sign in to comment.