add fantom to explorer

This commit is contained in:
justinschuldt 2022-03-02 17:50:37 -06:00 committed by Justin Schuldt
parent 2e0fc37ba0
commit a60d639097
13 changed files with 205 additions and 1134 deletions

View File

@ -5,7 +5,7 @@ GATSBY_GUARDIAN_DEVNET_RPC_URL=http://localhost:7071
GATSBY_GUARDIAN_TESTNET_RPC_URL=https://wormhole-v2-testnet-api.certus.one GATSBY_GUARDIAN_TESTNET_RPC_URL=https://wormhole-v2-testnet-api.certus.one
GATSBY_GUARDIAN_MAINNET_RPC_URL=https://wormhole-v2-mainnet-api.certus.one GATSBY_GUARDIAN_MAINNET_RPC_URL=https://wormhole-v2-mainnet-api.certus.one
GATSBY_BIGTABLE_FUNCTIONS_DEVNET_BASE_URL=http://localhost:8080/ GATSBY_BIGTABLE_FUNCTIONS_DEVNET_BASE_URL=http://localhost:8090/
GATSBY_BIGTABLE_FUNCTIONS_TESTNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/testnet- GATSBY_BIGTABLE_FUNCTIONS_TESTNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/testnet-
GATSBY_BIGTABLE_FUNCTIONS_MAINNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet- GATSBY_BIGTABLE_FUNCTIONS_MAINNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet-
@ -42,6 +42,10 @@ GATSBY_DEVNET_OASIS_CORE_BRIDGE=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
GATSBY_DEVNET_OASIS_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16 GATSBY_DEVNET_OASIS_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16
GATSBY_DEVNET_OASIS_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec GATSBY_DEVNET_OASIS_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec
GATSBY_DEVNET_FANTOM_CORE_BRIDGE=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
GATSBY_DEVNET_FANTOM_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16
GATSBY_DEVNET_FANTOM_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec
## testnet addresses ## testnet addresses
GATSBY_TESTNET_SOLANA_CORE_BRIDGE=Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb GATSBY_TESTNET_SOLANA_CORE_BRIDGE=Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb
GATSBY_TESTNET_SOLANA_TOKEN_BRIDGE=A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg GATSBY_TESTNET_SOLANA_TOKEN_BRIDGE=A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg
@ -71,6 +75,10 @@ GATSBY_TESTNET_OASIS_CORE_BRIDGE=0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
GATSBY_TESTNET_OASIS_TOKEN_BRIDGE=0x88d8004A9BdbfD9D28090A02010C19897a29605c GATSBY_TESTNET_OASIS_TOKEN_BRIDGE=0x88d8004A9BdbfD9D28090A02010C19897a29605c
GATSBY_TESTNET_OASIS_NFT_BRIDGE=0xC5c25B41AB0b797571620F5204Afa116A44c0ebA GATSBY_TESTNET_OASIS_NFT_BRIDGE=0xC5c25B41AB0b797571620F5204Afa116A44c0ebA
GATSBY_TESTNET_FANTOM_CORE_BRIDGE=0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
GATSBY_TESTNET_FANTOM_TOKEN_BRIDGE=0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
GATSBY_TESTNET_FANTOM_NFT_BRIDGE=0x63eD9318628D26BdCB15df58B53BB27231D1B227
## mainnet addresses ## mainnet addresses
GATSBY_MAINNET_SOLANA_CORE_BRIDGE=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth GATSBY_MAINNET_SOLANA_CORE_BRIDGE=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
GATSBY_MAINNET_SOLANA_TOKEN_BRIDGE=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb GATSBY_MAINNET_SOLANA_TOKEN_BRIDGE=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
@ -99,3 +107,7 @@ GATSBY_MAINNET_AVALANCHE_NFT_BRIDGE=0xf7B6737Ca9c4e08aE573F75A97B73D7a813f5De5
GATSBY_MAINNET_OASIS_CORE_BRIDGE=0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585 GATSBY_MAINNET_OASIS_CORE_BRIDGE=0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
GATSBY_MAINNET_OASIS_TOKEN_BRIDGE=0x5848c791e09901b40a9ef749f2a6735b418d7564 GATSBY_MAINNET_OASIS_TOKEN_BRIDGE=0x5848c791e09901b40a9ef749f2a6735b418d7564
GATSBY_MAINNET_OASIS_NFT_BRIDGE=0x04952d522ff217f40b5ef3cbf659eca7b952a6c1 GATSBY_MAINNET_OASIS_NFT_BRIDGE=0x04952d522ff217f40b5ef3cbf659eca7b952a6c1
GATSBY_MAINNET_FANTOM_CORE_BRIDGE=0x126783A6Cb203a3E35344528B26ca3a0489a1485
GATSBY_MAINNET_FANTOM_TOKEN_BRIDGE=0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
GATSBY_MAINNET_FANTOM_NFT_BRIDGE=0xA9c7119aBDa80d4a4E0C06C8F4d8cF5893234535

View File

@ -5,7 +5,7 @@ GATSBY_GUARDIAN_DEVNET_RPC_URL=http://localhost:7071
GATSBY_GUARDIAN_TESTNET_RPC_URL=https://wormhole-v2-testnet-api.certus.one GATSBY_GUARDIAN_TESTNET_RPC_URL=https://wormhole-v2-testnet-api.certus.one
GATSBY_GUARDIAN_MAINNET_RPC_URL=https://wormhole-v2-mainnet-api.certus.one GATSBY_GUARDIAN_MAINNET_RPC_URL=https://wormhole-v2-mainnet-api.certus.one
GATSBY_BIGTABLE_FUNCTIONS_DEVNET_BASE_URL=http://localhost:8080/ GATSBY_BIGTABLE_FUNCTIONS_DEVNET_BASE_URL=http://localhost:8090/
GATSBY_BIGTABLE_FUNCTIONS_TESTNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/testnet- GATSBY_BIGTABLE_FUNCTIONS_TESTNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/testnet-
GATSBY_BIGTABLE_FUNCTIONS_MAINNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet- GATSBY_BIGTABLE_FUNCTIONS_MAINNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet-
@ -42,6 +42,10 @@ GATSBY_DEVNET_OASIS_CORE_BRIDGE=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
GATSBY_DEVNET_OASIS_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16 GATSBY_DEVNET_OASIS_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16
GATSBY_DEVNET_OASIS_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec GATSBY_DEVNET_OASIS_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec
GATSBY_DEVNET_FANTOM_CORE_BRIDGE=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
GATSBY_DEVNET_FANTOM_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16
GATSBY_DEVNET_FANTOM_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec
## testnet addresses ## testnet addresses
GATSBY_TESTNET_SOLANA_CORE_BRIDGE=Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb GATSBY_TESTNET_SOLANA_CORE_BRIDGE=Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb
GATSBY_TESTNET_SOLANA_TOKEN_BRIDGE=A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg GATSBY_TESTNET_SOLANA_TOKEN_BRIDGE=A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg
@ -71,6 +75,10 @@ GATSBY_TESTNET_OASIS_CORE_BRIDGE=0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
GATSBY_TESTNET_OASIS_TOKEN_BRIDGE=0x88d8004A9BdbfD9D28090A02010C19897a29605c GATSBY_TESTNET_OASIS_TOKEN_BRIDGE=0x88d8004A9BdbfD9D28090A02010C19897a29605c
GATSBY_TESTNET_OASIS_NFT_BRIDGE=0xC5c25B41AB0b797571620F5204Afa116A44c0ebA GATSBY_TESTNET_OASIS_NFT_BRIDGE=0xC5c25B41AB0b797571620F5204Afa116A44c0ebA
GATSBY_TESTNET_FANTOM_CORE_BRIDGE=0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
GATSBY_TESTNET_FANTOM_TOKEN_BRIDGE=0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
GATSBY_TESTNET_FANTOM_NFT_BRIDGE=0x63eD9318628D26BdCB15df58B53BB27231D1B227
## mainnet addresses ## mainnet addresses
GATSBY_MAINNET_SOLANA_CORE_BRIDGE=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth GATSBY_MAINNET_SOLANA_CORE_BRIDGE=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
GATSBY_MAINNET_SOLANA_TOKEN_BRIDGE=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb GATSBY_MAINNET_SOLANA_TOKEN_BRIDGE=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
@ -99,3 +107,8 @@ GATSBY_MAINNET_AVALANCHE_NFT_BRIDGE=0xf7B6737Ca9c4e08aE573F75A97B73D7a813f5De5
GATSBY_MAINNET_OASIS_CORE_BRIDGE=0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585 GATSBY_MAINNET_OASIS_CORE_BRIDGE=0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
GATSBY_MAINNET_OASIS_TOKEN_BRIDGE=0x5848c791e09901b40a9ef749f2a6735b418d7564 GATSBY_MAINNET_OASIS_TOKEN_BRIDGE=0x5848c791e09901b40a9ef749f2a6735b418d7564
GATSBY_MAINNET_OASIS_NFT_BRIDGE=0x04952d522ff217f40b5ef3cbf659eca7b952a6c1 GATSBY_MAINNET_OASIS_NFT_BRIDGE=0x04952d522ff217f40b5ef3cbf659eca7b952a6c1
GATSBY_MAINNET_FANTOM_CORE_BRIDGE=0x126783A6Cb203a3E35344528B26ca3a0489a1485
GATSBY_MAINNET_FANTOM_TOKEN_BRIDGE=0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
GATSBY_MAINNET_FANTOM_NFT_BRIDGE=0xA9c7119aBDa80d4a4E0C06C8F4d8cF5893234535

View File

@ -5,7 +5,7 @@ GATSBY_GUARDIAN_DEVNET_RPC_URL=http://localhost:7071
GATSBY_GUARDIAN_TESTNET_RPC_URL=https://wormhole-v2-testnet-api.certus.one GATSBY_GUARDIAN_TESTNET_RPC_URL=https://wormhole-v2-testnet-api.certus.one
GATSBY_GUARDIAN_MAINNET_RPC_URL=https://wormhole-v2-mainnet-api.certus.one GATSBY_GUARDIAN_MAINNET_RPC_URL=https://wormhole-v2-mainnet-api.certus.one
GATSBY_BIGTABLE_FUNCTIONS_DEVNET_BASE_URL=http://localhost:8080/ GATSBY_BIGTABLE_FUNCTIONS_DEVNET_BASE_URL=http://localhost:8090/
GATSBY_BIGTABLE_FUNCTIONS_TESTNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/testnet- GATSBY_BIGTABLE_FUNCTIONS_TESTNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/testnet-
GATSBY_BIGTABLE_FUNCTIONS_MAINNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet- GATSBY_BIGTABLE_FUNCTIONS_MAINNET_BASE_URL=https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet-
@ -42,6 +42,10 @@ GATSBY_DEVNET_OASIS_CORE_BRIDGE=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
GATSBY_DEVNET_OASIS_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16 GATSBY_DEVNET_OASIS_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16
GATSBY_DEVNET_OASIS_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec GATSBY_DEVNET_OASIS_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec
GATSBY_DEVNET_FANTOM_CORE_BRIDGE=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
GATSBY_DEVNET_FANTOM_TOKEN_BRIDGE=0x0290FB167208Af455bB137780163b7B7a9a10C16
GATSBY_DEVNET_FANTOM_NFT_BRIDGE=0x26b4afb60d6c903165150c6f0aa14f8016be4aec
## testnet addresses ## testnet addresses
GATSBY_TESTNET_SOLANA_CORE_BRIDGE=Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb GATSBY_TESTNET_SOLANA_CORE_BRIDGE=Brdguy7BmNB4qwEbcqqMbyV5CyJd2sxQNUn6NEpMSsUb
GATSBY_TESTNET_SOLANA_TOKEN_BRIDGE=A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg GATSBY_TESTNET_SOLANA_TOKEN_BRIDGE=A4Us8EhCC76XdGAN17L4KpRNEK423nMivVHZzZqFqqBg
@ -71,6 +75,10 @@ GATSBY_TESTNET_OASIS_CORE_BRIDGE=0xc1C338397ffA53a2Eb12A7038b4eeb34791F8aCb
GATSBY_TESTNET_OASIS_TOKEN_BRIDGE=0x88d8004A9BdbfD9D28090A02010C19897a29605c GATSBY_TESTNET_OASIS_TOKEN_BRIDGE=0x88d8004A9BdbfD9D28090A02010C19897a29605c
GATSBY_TESTNET_OASIS_NFT_BRIDGE=0xC5c25B41AB0b797571620F5204Afa116A44c0ebA GATSBY_TESTNET_OASIS_NFT_BRIDGE=0xC5c25B41AB0b797571620F5204Afa116A44c0ebA
GATSBY_TESTNET_FANTOM_CORE_BRIDGE=0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7
GATSBY_TESTNET_FANTOM_TOKEN_BRIDGE=0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8
GATSBY_TESTNET_FANTOM_NFT_BRIDGE=0x63eD9318628D26BdCB15df58B53BB27231D1B227
## mainnet addresses ## mainnet addresses
GATSBY_MAINNET_SOLANA_CORE_BRIDGE=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth GATSBY_MAINNET_SOLANA_CORE_BRIDGE=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
GATSBY_MAINNET_SOLANA_TOKEN_BRIDGE=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb GATSBY_MAINNET_SOLANA_TOKEN_BRIDGE=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb
@ -98,3 +106,7 @@ GATSBY_MAINNET_AVALANCHE_NFT_BRIDGE=0xf7B6737Ca9c4e08aE573F75A97B73D7a813f5De5
GATSBY_MAINNET_OASIS_CORE_BRIDGE=0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585 GATSBY_MAINNET_OASIS_CORE_BRIDGE=0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585
GATSBY_MAINNET_OASIS_TOKEN_BRIDGE=0x5848c791e09901b40a9ef749f2a6735b418d7564 GATSBY_MAINNET_OASIS_TOKEN_BRIDGE=0x5848c791e09901b40a9ef749f2a6735b418d7564
GATSBY_MAINNET_OASIS_NFT_BRIDGE=0x04952d522ff217f40b5ef3cbf659eca7b952a6c1 GATSBY_MAINNET_OASIS_NFT_BRIDGE=0x04952d522ff217f40b5ef3cbf659eca7b952a6c1
GATSBY_MAINNET_FANTOM_CORE_BRIDGE=0x126783A6Cb203a3E35344528B26ca3a0489a1485
GATSBY_MAINNET_FANTOM_TOKEN_BRIDGE=0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2
GATSBY_MAINNET_FANTOM_NFT_BRIDGE=0xA9c7119aBDa80d4a4E0C06C8F4d8cF5893234535

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@
"clean": "gatsby clean" "clean": "gatsby clean"
}, },
"dependencies": { "dependencies": {
"@certusone/wormhole-sdk": "^0.1.6", "@certusone/wormhole-sdk": "0.2.0",
"@cosmjs/encoding": "^0.27.0", "@cosmjs/encoding": "^0.27.0",
"@emotion/react": "^11.7.1", "@emotion/react": "^11.7.1",
"@emotion/styled": "^11.6.0", "@emotion/styled": "^11.6.0",

View File

@ -6,6 +6,7 @@ import terraIcon from "../images/terra.svg";
import polygonIcon from "../images/polygon.svg"; import polygonIcon from "../images/polygon.svg";
import avalancheIcon from "../images/avalanche.svg"; import avalancheIcon from "../images/avalanche.svg";
import oasisIcon from "../images/oasis.svg"; import oasisIcon from "../images/oasis.svg";
import fantomIcon from "../images/fantom.svg";
import { import {
ChainId, ChainId,
CHAIN_ID_AVAX, CHAIN_ID_AVAX,
@ -15,6 +16,7 @@ import {
CHAIN_ID_POLYGON, CHAIN_ID_POLYGON,
CHAIN_ID_SOLANA, CHAIN_ID_SOLANA,
CHAIN_ID_TERRA, CHAIN_ID_TERRA,
CHAIN_ID_FANTOM,
} from "@certusone/wormhole-sdk"; } from "@certusone/wormhole-sdk";
import { chainEnums } from "../utils/consts"; import { chainEnums } from "../utils/consts";
import { Box } from "@mui/material"; import { Box } from "@mui/material";
@ -27,6 +29,7 @@ const chainIdToSrc = {
[CHAIN_ID_POLYGON]: polygonIcon, [CHAIN_ID_POLYGON]: polygonIcon,
[CHAIN_ID_AVAX]: avalancheIcon, [CHAIN_ID_AVAX]: avalancheIcon,
[CHAIN_ID_OASIS]: oasisIcon, [CHAIN_ID_OASIS]: oasisIcon,
[CHAIN_ID_FANTOM]: fantomIcon,
}; };
const ChainIcon = ({ chainId }: { chainId: ChainId }) => const ChainIcon = ({ chainId }: { chainId: ChainId }) =>

View File

@ -56,6 +56,14 @@ const ChainOverviewCard: React.FC<ChainOverviewCardProps> = ({
alignItems: "center", alignItems: "center",
flexDirection: "column", flexDirection: "column",
}; };
// prevent an exception if data is missing (ie. new chain)
if (
!notionalTransferredToCumulative ||
!(dataKey in notionalTransferredToCumulative.AllTime) ||
!("*" in notionalTransferredToCumulative.AllTime[dataKey])
) {
return <>coming soon</>
}
return ( return (
<> <>
<div style={{ ...centerStyles, gap: 8 }}> <div style={{ ...centerStyles, gap: 8 }}>
@ -79,11 +87,11 @@ const ChainOverviewCard: React.FC<ChainOverviewCardProps> = ({
</div> </div>
)} )}
{notionalTransferred && {notionalTransferred &&
notionalTransferred.WithinPeriod && notionalTransferred.WithinPeriod &&
dataKey in notionalTransferred.WithinPeriod && dataKey in notionalTransferred.WithinPeriod &&
"*" in notionalTransferred.WithinPeriod[dataKey] && "*" in notionalTransferred.WithinPeriod[dataKey] &&
"*" in notionalTransferred.WithinPeriod[dataKey]["*"] && "*" in notionalTransferred.WithinPeriod[dataKey]["*"] &&
notionalTransferred.WithinPeriod[dataKey]["*"]["*"] > 0 ? ( notionalTransferred.WithinPeriod[dataKey]["*"]["*"] > 0 ? (
<div style={centerStyles}> <div style={centerStyles}>
<div> <div>
<Typography <Typography
@ -92,9 +100,9 @@ const ChainOverviewCard: React.FC<ChainOverviewCardProps> = ({
> >
{notionalTransferred.WithinPeriod[dataKey]["*"]["*"] {notionalTransferred.WithinPeriod[dataKey]["*"]["*"]
? "$" + ? "$" +
amountFormatter( amountFormatter(
notionalTransferred.WithinPeriod[dataKey]["*"]["*"] notionalTransferred.WithinPeriod[dataKey]["*"]["*"]
) )
: "..."} : "..."}
</Typography> </Typography>
</div> </div>

View File

@ -51,6 +51,9 @@ const DailyNotionalBarChart = (props: DailyCountProps) => {
const chains = props.daily[date] const chains = props.daily[date]
return [...accum, Object.keys(chains).reduce<BarDatum>((subAccum, chain) => { return [...accum, Object.keys(chains).reduce<BarDatum>((subAccum, chain) => {
if (chain === "*") {
return subAccum
}
const group = makeGroupName(chain, activeNetwork) const group = makeGroupName(chain, activeNetwork)
// const group = chain // const group = chain

View File

@ -15,6 +15,7 @@ import terraIcon from "../../images/terra.svg";
import polygonIcon from "../../images/polygon.svg"; import polygonIcon from "../../images/polygon.svg";
import avalancheIcon from "../../images/avalanche.svg"; import avalancheIcon from "../../images/avalanche.svg";
import oasisIcon from "../../images/oasis.svg"; import oasisIcon from "../../images/oasis.svg";
import fantomIcon from "../../images/fantom.svg"
import GridWithCards from "../GridWithCards"; import GridWithCards from "../GridWithCards";
import { explorer } from "../../utils/urls"; import { explorer } from "../../utils/urls";
@ -589,8 +590,28 @@ const ExplorerStats: React.FC<StatsProps> = ({
/> />
), ),
imgStyle: { height: 110 }, imgStyle: { height: 110 },
}, }
]} ].concat(
// check the we have transfer data before adding the fantom card
("10" in notionalTransferredToCumulative.AllTime) &&
("*" in notionalTransferredToCumulative.AllTime["10"]) ?
[{
header: ChainID[10],
src: fantomIcon,
to: `${explorer}?emitterChain=10`,
description: (
<ChainOverviewCard
totals={totals}
notionalTransferredToCumulative={
notionalTransferredToCumulative
}
notionalTransferred={notionalTransferred}
dataKey="10"
/>
),
imgStyle: { height: 110 },
}] : []
)}
/> />
) : ( ) : (
<Box <Box

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><defs><style>.cls-1{fill:#fff;fill-rule:evenodd;}.cls-2{fill:#13b5ec;}.cls-3{mask:url(#mask);}</style><mask id="mask" x="10" y="6" width="93.1" height="20" maskUnits="userSpaceOnUse"><g id="a"><path class="cls-1" d="M10,6h93.1V26H10Z"/></g></mask></defs><title>fa</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><circle class="cls-2" cx="16" cy="16" r="16"/><g class="cls-3"><path class="cls-1" d="M17.2,12.9l3.6-2.1V15Zm3.6,9L16,24.7l-4.8-2.8V17L16,19.8,20.8,17ZM11.2,10.8l3.6,2.1L11.2,15Zm5.4,3.1L20.2,16l-3.6,2.1Zm-1.2,4.2L11.8,16l3.6-2.1Zm4.8-8.3L16,12.2,11.8,9.8,16,7.3ZM10,9.4V22.5l6,3.4,6-3.4V9.4L16,6Z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 766 B

View File

@ -13,6 +13,7 @@ export const chainEnums = [
"Polygon", "Polygon",
"Avalanche", "Avalanche",
"Oasis", "Oasis",
"Fantom",
]; ];
export interface ChainIDs { export interface ChainIDs {
@ -23,6 +24,7 @@ export interface ChainIDs {
polygon: 5; polygon: 5;
avalanche: 6; avalanche: 6;
oasis: 7; oasis: 7;
fantom: 10,
} }
export const chainIDs: ChainIDs = { export const chainIDs: ChainIDs = {
solana: 1, solana: 1,
@ -32,6 +34,7 @@ export const chainIDs: ChainIDs = {
polygon: 5, polygon: 5,
avalanche: 6, avalanche: 6,
oasis: 7, oasis: 7,
fantom: 10
}; };
export const chainIDStrings: { [chainIDString: string]: string } = { export const chainIDStrings: { [chainIDString: string]: string } = {
"1": "solana", "1": "solana",
@ -41,6 +44,7 @@ export const chainIDStrings: { [chainIDString: string]: string } = {
"5": "polygon", "5": "polygon",
"6": "avalanche", "6": "avalanche",
"7": "oasis", "7": "oasis",
"10": "fantom"
}; };
export enum ChainID { export enum ChainID {
@ -52,6 +56,7 @@ export enum ChainID {
Polygon, Polygon,
Avalanche, Avalanche,
Oasis, Oasis,
Fantom
} }
export type ChainName = keyof ChainIDs; export type ChainName = keyof ChainIDs;
export type ChainIDNumber = ChainIDs[ChainName]; export type ChainIDNumber = ChainIDs[ChainName];
@ -95,6 +100,12 @@ const envVarMap: { [name: string]: string | undefined } = {
GATSBY_DEVNET_OASIS_TOKEN_BRIDGE: GATSBY_DEVNET_OASIS_TOKEN_BRIDGE:
process.env.GATSBY_DEVNET_OASIS_TOKEN_BRIDGE, process.env.GATSBY_DEVNET_OASIS_TOKEN_BRIDGE,
GATSBY_DEVNET_OASIS_NFT_BRIDGE: process.env.GATSBY_DEVNET_OASIS_NFT_BRIDGE, GATSBY_DEVNET_OASIS_NFT_BRIDGE: process.env.GATSBY_DEVNET_OASIS_NFT_BRIDGE,
GATSBY_DEVNET_FANTOM_CORE_BRIDGE:
process.env.GATSBY_DEVNET_FANTOM_CORE_BRIDGE,
GATSBY_DEVNET_FANTOM_TOKEN_BRIDGE:
process.env.GATSBY_DEVNET_FANTOM_TOKEN_BRIDGE,
GATSBY_DEVNET_FANTOM_NFT_BRIDGE:
process.env.GATSBY_DEVNET_FANTOM_NFT_BRIDGE,
GATSBY_TESTNET_SOLANA_CORE_BRIDGE: GATSBY_TESTNET_SOLANA_CORE_BRIDGE:
process.env.GATSBY_TESTNET_SOLANA_CORE_BRIDGE, process.env.GATSBY_TESTNET_SOLANA_CORE_BRIDGE,
@ -133,6 +144,12 @@ const envVarMap: { [name: string]: string | undefined } = {
GATSBY_TESTNET_OASIS_TOKEN_BRIDGE: GATSBY_TESTNET_OASIS_TOKEN_BRIDGE:
process.env.GATSBY_TESTNET_OASIS_TOKEN_BRIDGE, process.env.GATSBY_TESTNET_OASIS_TOKEN_BRIDGE,
GATSBY_TESTNET_OASIS_NFT_BRIDGE: process.env.GATSBY_TESTNET_OASIS_NFT_BRIDGE, GATSBY_TESTNET_OASIS_NFT_BRIDGE: process.env.GATSBY_TESTNET_OASIS_NFT_BRIDGE,
GATSBY_TESTNET_FANTOM_CORE_BRIDGE:
process.env.GATSBY_TESTNET_FANTOM_CORE_BRIDGE,
GATSBY_TESTNET_FANTOM_TOKEN_BRIDGE:
process.env.GATSBY_TESTNET_FANTOM_TOKEN_BRIDGE,
GATSBY_TESTNET_FANTOM_NFT_BRIDGE:
process.env.GATSBY_TESTNET_FANTOM_NFT_BRIDGE,
GATSBY_MAINNET_SOLANA_CORE_BRIDGE: GATSBY_MAINNET_SOLANA_CORE_BRIDGE:
process.env.GATSBY_MAINNET_SOLANA_CORE_BRIDGE, process.env.GATSBY_MAINNET_SOLANA_CORE_BRIDGE,
@ -171,6 +188,12 @@ const envVarMap: { [name: string]: string | undefined } = {
GATSBY_MAINNET_OASIS_TOKEN_BRIDGE: GATSBY_MAINNET_OASIS_TOKEN_BRIDGE:
process.env.GATSBY_MAINNET_OASIS_TOKEN_BRIDGE, process.env.GATSBY_MAINNET_OASIS_TOKEN_BRIDGE,
GATSBY_MAINNET_OASIS_NFT_BRIDGE: process.env.GATSBY_MAINNET_OASIS_NFT_BRIDGE, GATSBY_MAINNET_OASIS_NFT_BRIDGE: process.env.GATSBY_MAINNET_OASIS_NFT_BRIDGE,
GATSBY_MAINNET_FANTOM_CORE_BRIDGE:
process.env.GATSBY_MAINNET_FANTOM_CORE_BRIDGE,
GATSBY_MAINNET_FANTOM_TOKEN_BRIDGE:
process.env.GATSBY_MAINNET_FANTOM_TOKEN_BRIDGE,
GATSBY_MAINNET_FANTOM_NFT_BRIDGE:
process.env.GATSBY_MAINNET_FANTOM_NFT_BRIDGE,
}; };
export interface KnownContracts { export interface KnownContracts {
@ -200,6 +223,7 @@ const getEmitterAddress: {
polygon: getEmitterAddressEVM, polygon: getEmitterAddressEVM,
avalanche: getEmitterAddressEVM, avalanche: getEmitterAddressEVM,
oasis: getEmitterAddressEVM, oasis: getEmitterAddressEVM,
fantom: getEmitterAddressEVM,
}; };
// the keys used for creating the map of contract addresses of each chain, on each network. // the keys used for creating the map of contract addresses of each chain, on each network.

View File

@ -131,6 +131,8 @@ const nativeExplorerContractUri = (
base = "https://snowtrace.io/address/"; base = "https://snowtrace.io/address/";
} else if (chainId === chainIDs["oasis"]) { } else if (chainId === chainIDs["oasis"]) {
base = "https://explorer.oasis.updev.si/address/"; base = "https://explorer.oasis.updev.si/address/";
} else if (chainId === chainIDs["fantom"]) {
base = "https://ftmscan.com/address/";
} }
return `${base}${nativeAddress}`; return `${base}${nativeAddress}`;
} }
@ -155,6 +157,8 @@ const nativeExplorerTxUri = (
base = "https://snowtrace.io/tx/"; base = "https://snowtrace.io/tx/";
} else if (chainId === chainIDs["oasis"]) { } else if (chainId === chainIDs["oasis"]) {
base = "https://explorer.emerald.oasis.dev/tx/"; base = "https://explorer.emerald.oasis.dev/tx/";
} else if (chainId === chainIDs["fantom"]) {
base = "https://ftmscan.com/tx/";
} }
if (base) { if (base) {
@ -163,6 +167,7 @@ const nativeExplorerTxUri = (
return ""; return "";
}; };
// define colors to represent chains in charts/graphs
const chainColors: { [chain: string]: string } = { const chainColors: { [chain: string]: string } = {
"*": "hsl(183, 100%, 61%)", "*": "hsl(183, 100%, 61%)",
"1": "hsl(297, 100%, 61%)", "1": "hsl(297, 100%, 61%)",
@ -171,7 +176,8 @@ const chainColors: { [chain: string]: string } = {
"4": "hsl(54, 100%, 61%)", "4": "hsl(54, 100%, 61%)",
"5": "hsl(271, 100%, 61%)", "5": "hsl(271, 100%, 61%)",
"6": "hsl(360, 100%, 61%)", "6": "hsl(360, 100%, 61%)",
"7": "hsl(204, 100%, 48%", "7": "hsl(204, 100%, 48%)",
"10": "hsl(220, 78%, 92%)",
}; };
const chainIdColors = Object.entries(chainColors).reduce<Array<string>>( const chainIdColors = Object.entries(chainColors).reduce<Array<string>>(
// returns an array of hsl colors, indexed by chainId // returns an array of hsl colors, indexed by chainId

View File

@ -7,7 +7,7 @@ export const network = "/network/";
export const brand = "/brand/"; export const brand = "/brand/";
// External // External
export const portal = "https://wormholebridge.com/"; export const portal = "https://portalbridge.com/";
export const blog = "https://wormholecrypto.medium.com/"; export const blog = "https://wormholecrypto.medium.com/";
export const docs = "https://docs.wormholenetwork.com/"; export const docs = "https://docs.wormholenetwork.com/";
export const jobs = "https://boards.greenhouse.io/wormhole"; export const jobs = "https://boards.greenhouse.io/wormhole";