├── .dockerignore
├── .github
├── actions
│ └── setup
│ │ └── action.yml
└── workflows
│ ├── docker-publish.yml
│ ├── npm-publish.yml
│ ├── publishable-packages.yml
│ └── ui-deploy.yml
├── .gitignore
├── .husky
├── check-npmignore.mjs
└── pre-commit
├── .npmrc
├── .nvmrc
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── eslint.config.mjs
├── jest.config.base.mjs
├── jest.config.esm.mjs
├── ops
├── README.md
└── webhooks
│ ├── README.md
│ ├── install_dependencies.sh
│ ├── install_webhook_server.sh
│ ├── run_webhook_server.sh
│ ├── stop_webook_server.sh
│ ├── test_webhook_server.sh
│ └── webhook_postreceive.sh
├── package.json
├── packages
├── api
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── bench
│ │ ├── bench.sh
│ │ └── payload.lua
│ ├── ci
│ │ └── package_check.sh
│ ├── eslint.config.mjs
│ ├── jest.config.mjs
│ ├── package.json
│ ├── src
│ │ ├── config.ts
│ │ ├── index.ts
│ │ ├── rateLimit.ts
│ │ ├── responseCache.ts
│ │ └── server.ts
│ ├── test
│ │ └── server.test.ts
│ └── tsconfig.json
├── explorer-backend
│ ├── .dockerignore
│ ├── .gitignore
│ ├── .node-version
│ ├── .nvmrc
│ ├── Dockerfile
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── docker-compose.yml
│ ├── eslint.config.mjs
│ ├── jest.config.mjs
│ ├── package.json
│ ├── public
│ │ └── index.html
│ ├── scripts
│ │ ├── README.md
│ │ ├── backfill_cctp.js
│ │ ├── bonder_balance_checker.js
│ │ ├── docker.sh
│ │ ├── loadtest
│ │ │ ├── bench.sh
│ │ │ └── payload.lua
│ │ ├── package.json
│ │ ├── postgres.sh
│ │ ├── postgres_dev.sh
│ │ ├── refresh_pending.js
│ │ └── select_transferIds_console.js
│ ├── src
│ │ ├── Db.ts
│ │ ├── OsStats.ts
│ │ ├── TransferStats.ts
│ │ ├── cache.ts
│ │ ├── cli.ts
│ │ ├── config.ts
│ │ ├── controller.ts
│ │ ├── index.ts
│ │ ├── populateData.ts
│ │ ├── preregenesis.ts
│ │ ├── price.ts
│ │ ├── rateLimit.ts
│ │ ├── responseCache.ts
│ │ ├── server.ts
│ │ ├── theGraph.ts
│ │ ├── utils
│ │ │ ├── cctpDomainToChainId.ts
│ │ │ ├── chainIdToName.ts
│ │ │ ├── chainSlugToId.ts
│ │ │ ├── chainSlugToName.ts
│ │ │ ├── explorerLink.ts
│ │ │ ├── explorerLinkAddress.ts
│ │ │ ├── explorerLinkTx.ts
│ │ │ ├── formatCurrency.ts
│ │ │ ├── getChainLogo.ts
│ │ │ ├── getColor.ts
│ │ │ ├── getDefaultRpcUrl.ts
│ │ │ ├── getProxyAddress.ts
│ │ │ ├── getSlugFromChainId.ts
│ │ │ ├── getSubgraphUrl.ts
│ │ │ ├── getSupportedCctpChains.ts
│ │ │ ├── getTokenLogo.ts
│ │ │ ├── integrationPartnerImage.ts
│ │ │ ├── integrationPartnerName.ts
│ │ │ ├── nearestDate.ts
│ │ │ ├── padHex.ts
│ │ │ ├── populateTransfer.ts
│ │ │ ├── promiseTimeout.ts
│ │ │ ├── timeToBridgeStats.ts
│ │ │ ├── truncateAddress.ts
│ │ │ ├── truncateHash.ts
│ │ │ └── truncateString.ts
│ │ └── worker.ts
│ ├── static
│ │ ├── favicon.ico
│ │ ├── images
│ │ │ └── hop.svg
│ │ ├── main.js
│ │ └── style.css
│ ├── test
│ │ ├── config.test.ts
│ │ └── theGraph.test.ts
│ └── tsconfig.json
├── explorer-frontend
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── components
│ │ ├── _dark.tsx
│ │ ├── _light.tsx
│ │ ├── _theme.tsx
│ │ └── _useTheme.tsx
│ ├── eslint.config.mjs
│ ├── netlify.toml
│ ├── next-env.d.ts
│ ├── next.config.js
│ ├── package.json
│ ├── pages
│ │ ├── _app.tsx
│ │ ├── api
│ │ │ └── hello.ts
│ │ ├── assets
│ │ │ ├── circles-bg-dark.svg
│ │ │ └── circles-bg.svg
│ │ └── index.tsx
│ ├── public
│ │ ├── favicon.ico
│ │ ├── lib
│ │ │ ├── clipboard-1.4.0.min.js
│ │ │ ├── d3.chart.min.js
│ │ │ ├── d3.v3.min.js
│ │ │ ├── ethers-5.0.umd.min.js
│ │ │ ├── luxon-1.27.0.min.js
│ │ │ ├── sankey.js
│ │ │ ├── sankey.patched.js
│ │ │ └── vue-2.6.14.min.js
│ │ └── static.js
│ ├── styles
│ │ ├── Index.module.css
│ │ └── globals.css
│ └── tsconfig.json
├── frontend
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── eslint.config.mjs
│ ├── index.html
│ ├── netlify.toml
│ ├── package.json
│ ├── public
│ │ ├── 451.html
│ │ ├── airdrop
│ │ │ ├── authereum
│ │ │ │ └── index.html
│ │ │ ├── index.html
│ │ │ ├── preview
│ │ │ │ └── index.html
│ │ │ └── social-verify
│ │ │ │ └── index.html
│ │ ├── apple-touch-icon.png
│ │ ├── assets
│ │ │ ├── circles-bg-dark.svg
│ │ │ └── circles-bg.svg
│ │ ├── authereum-verified
│ │ │ └── index.html
│ │ ├── cachebust
│ │ ├── claim
│ │ │ └── index.html
│ │ ├── commit-transfers
│ │ │ └── index.html
│ │ ├── convert
│ │ │ └── index.html
│ │ ├── favicon.ico
│ │ ├── health
│ │ │ └── index.html
│ │ ├── images
│ │ │ ├── hop_600x200.jpg
│ │ │ ├── hop_logo.png
│ │ │ └── hop_logo_192x192.png
│ │ ├── js
│ │ │ ├── dinoGame.js
│ │ │ └── static.js
│ │ ├── logo16.png
│ │ ├── logo192.png
│ │ ├── logo32.png
│ │ ├── logo512.png
│ │ ├── manifest.json
│ │ ├── pool
│ │ │ └── index.html
│ │ ├── pools
│ │ │ └── index.html
│ │ ├── relay
│ │ │ └── index.html
│ │ ├── rewards
│ │ │ └── index.html
│ │ ├── robots.txt
│ │ ├── send
│ │ │ └── index.html
│ │ ├── site.webmanifest
│ │ ├── social-verified
│ │ │ └── index.html
│ │ ├── stake
│ │ │ └── index.html
│ │ ├── stats
│ │ │ └── index.html
│ │ ├── whitepaper.pdf
│ │ └── withdraw
│ │ │ └── index.html
│ ├── src
│ │ ├── App.css
│ │ ├── App.tsx
│ │ ├── AppRoutes.tsx
│ │ ├── abis
│ │ │ ├── MerkleRewards.json
│ │ │ ├── index.ts
│ │ │ └── types
│ │ │ │ ├── ENSToken.d.ts
│ │ │ │ ├── common.ts
│ │ │ │ ├── factories
│ │ │ │ └── ENSToken__factory.ts
│ │ │ │ └── index.ts
│ │ ├── assets
│ │ │ ├── bolt.svg
│ │ │ ├── circles-bg-dark.svg
│ │ │ ├── circles-bg.svg
│ │ │ ├── logos
│ │ │ │ ├── arbitrum.svg
│ │ │ │ ├── coinbasewallet.svg
│ │ │ │ ├── dai.svg
│ │ │ │ ├── deversifi.svg
│ │ │ │ ├── discord.svg
│ │ │ │ ├── eth.svg
│ │ │ │ ├── github.svg
│ │ │ │ ├── gnosis.svg
│ │ │ │ ├── gnosissafe.svg
│ │ │ │ ├── hop-logo-black.svg
│ │ │ │ ├── hop-logo-full-color.svg
│ │ │ │ ├── hop-logo-white.svg
│ │ │ │ ├── hop-token-logo.svg
│ │ │ │ ├── hop.svg
│ │ │ │ ├── mainnet.svg
│ │ │ │ ├── matic.svg
│ │ │ │ ├── medium.svg
│ │ │ │ ├── metamask.png
│ │ │ │ ├── metamask.svg
│ │ │ │ ├── nova.svg
│ │ │ │ ├── op.svg
│ │ │ │ ├── optimism.svg
│ │ │ │ ├── polygon.svg
│ │ │ │ ├── sbtc.svg
│ │ │ │ ├── seth.svg
│ │ │ │ ├── snx.svg
│ │ │ │ ├── susd.svg
│ │ │ │ ├── twitter-x.svg
│ │ │ │ ├── twitter.svg
│ │ │ │ ├── usdc.svg
│ │ │ │ ├── usdt.svg
│ │ │ │ ├── walletconnect.svg
│ │ │ │ ├── wbtc.svg
│ │ │ │ └── xdai.svg
│ │ │ ├── moon-icon.svg
│ │ │ ├── settings-icon.svg
│ │ │ └── sun-icon.svg
│ │ ├── components
│ │ │ ├── AccountDetails
│ │ │ │ ├── AccountDetails.tsx
│ │ │ │ ├── AccountTransferHistory.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Alert
│ │ │ │ ├── Alert.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── AmmDetails
│ │ │ │ ├── AmmDetails.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── AmountSelectorCard
│ │ │ │ ├── AmountSelectorCard.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Banner
│ │ │ │ ├── Banner.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Button
│ │ │ │ ├── Button.tsx
│ │ │ │ ├── ButtonLink.tsx
│ │ │ │ ├── ButtonsWrapper.tsx
│ │ │ │ ├── ClipboardCopyButton
│ │ │ │ │ ├── ClipboardCopyButton.tsx
│ │ │ │ │ ├── ClipboardIcon.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── StyledButton.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Footer
│ │ │ │ ├── Footer.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── useBlockNumber.tsx
│ │ │ ├── Grid
│ │ │ │ ├── Grid.tsx
│ │ │ │ └── index.ts
│ │ │ ├── Header
│ │ │ │ ├── ConnectWalletButton.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── HeaderRoutes.tsx
│ │ │ │ ├── Settings.tsx
│ │ │ │ ├── TxPill.tsx
│ │ │ │ ├── WalletWarning.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── InfoTooltip
│ │ │ │ ├── AprDetailsTooltip.tsx
│ │ │ │ ├── DetailRow.tsx
│ │ │ │ ├── FeeDetails.tsx
│ │ │ │ ├── InfoTooltip.tsx
│ │ │ │ └── index.ts
│ │ │ ├── LargeTextField
│ │ │ │ ├── LargeTextField.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Link
│ │ │ │ ├── Link.tsx
│ │ │ │ ├── StyledLink.tsx
│ │ │ │ └── index.ts
│ │ │ ├── Loading
│ │ │ │ ├── Loading.tsx
│ │ │ │ └── index.ts
│ │ │ ├── Modal
│ │ │ │ ├── Modal.tsx
│ │ │ │ ├── StyledModal.tsx
│ │ │ │ ├── TxStatusModal.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── NetworkSelector
│ │ │ │ ├── NetworkSelector.tsx
│ │ │ │ ├── RaisedNetworkSelector.tsx
│ │ │ │ ├── index.ts
│ │ │ │ └── useNetworkSelectorStyles.ts
│ │ │ ├── SmallTextField
│ │ │ │ ├── SmallTextField.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Table
│ │ │ │ ├── RightAlignedData.tsx
│ │ │ │ ├── Table.tsx
│ │ │ │ ├── index.ts
│ │ │ │ └── makeData.ts
│ │ │ ├── TokenWrapper
│ │ │ │ ├── Expandable.tsx
│ │ │ │ ├── TokenWrapper.tsx
│ │ │ │ ├── TokenWrapperContext.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Transaction
│ │ │ │ ├── TransactionRow.tsx
│ │ │ │ ├── TransactionStatus.tsx
│ │ │ │ ├── TransactionsList.tsx
│ │ │ │ ├── TxStatusTracker.tsx
│ │ │ │ ├── index.ts
│ │ │ │ └── useTxStatusStyles.ts
│ │ │ ├── Web3Modal
│ │ │ │ ├── Web3Modal.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── useWeb3ModalStyles.tsx
│ │ │ ├── selects
│ │ │ │ ├── FlatSelect.tsx
│ │ │ │ ├── RaisedSelect.tsx
│ │ │ │ └── SelectOption.tsx
│ │ │ ├── slider
│ │ │ │ ├── Slider.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── tabs
│ │ │ │ └── FlatTabs.tsx
│ │ │ ├── txConfirm
│ │ │ │ ├── AddLiquidity.tsx
│ │ │ │ ├── AddLiquidityAndStake.tsx
│ │ │ │ ├── Approval.tsx
│ │ │ │ ├── ApproveAndStake.tsx
│ │ │ │ ├── ConfirmConvert.tsx
│ │ │ │ ├── ConfirmSend.tsx
│ │ │ │ ├── ConfirmStake.tsx
│ │ │ │ ├── RemoveLiquidity.tsx
│ │ │ │ ├── TxConfirm.tsx
│ │ │ │ ├── TxList.tsx
│ │ │ │ ├── UnstakeAndRemoveLiquidity.tsx
│ │ │ │ ├── UnwrapToken.tsx
│ │ │ │ ├── WithdrawReview.tsx
│ │ │ │ ├── WithdrawStake.tsx
│ │ │ │ ├── WrapToken.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── useSendingTransaction.ts
│ │ │ └── ui
│ │ │ │ ├── Circle.tsx
│ │ │ │ ├── CopyEthAddress.tsx
│ │ │ │ ├── EthAddress.tsx
│ │ │ │ ├── Icon.tsx
│ │ │ │ └── SvgImg.tsx
│ │ ├── config
│ │ │ ├── addresses.ts
│ │ │ ├── blocklist.ts
│ │ │ ├── config.ts
│ │ │ ├── disabled.test.ts
│ │ │ ├── disabled.ts
│ │ │ ├── goerli.ts
│ │ │ ├── index.ts
│ │ │ ├── interfaces.ts
│ │ │ ├── mainnet.ts
│ │ │ ├── networks.ts
│ │ │ └── sepolia.ts
│ │ ├── contexts
│ │ │ ├── AppContext
│ │ │ │ ├── AppContext.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── useAccountDetails.tsx
│ │ │ │ ├── useBridges.ts
│ │ │ │ ├── useEvents.ts
│ │ │ │ ├── useSettings.tsx
│ │ │ │ ├── useTokens.ts
│ │ │ │ ├── useTxConfirm.ts
│ │ │ │ └── useTxHistory.ts
│ │ │ └── Web3Context.tsx
│ │ ├── hooks
│ │ │ ├── index.ts
│ │ │ ├── useAddTokenToMetamask.ts
│ │ │ ├── useAmountSelectorCardStyles.ts
│ │ │ ├── useApprove.ts
│ │ │ ├── useAssets.ts
│ │ │ ├── useAsyncMemo.tsx
│ │ │ ├── useBalance.tsx
│ │ │ ├── useCheckPoolDeprecated.tsx
│ │ │ ├── useCheckTokenDeprecated.tsx
│ │ │ ├── useCurrentBlockTimestamp.ts
│ │ │ ├── useDisableTxs.ts
│ │ │ ├── useEns.ts
│ │ │ ├── useEstimateTxCost.ts
│ │ │ ├── useFeeConversions.ts
│ │ │ ├── useGnosisSafeTransaction.ts
│ │ │ ├── useIsSmartContractWallet.ts
│ │ │ ├── useNeedsTokenForFee.ts
│ │ │ ├── useQueryParams.tsx
│ │ │ ├── useSelectedNetwork.ts
│ │ │ ├── useSufficientBalance.ts
│ │ │ ├── useTokenPrice.ts
│ │ │ ├── useTransaction.ts
│ │ │ ├── useTransactionReplacement.ts
│ │ │ ├── useTransactionStatus.tsx
│ │ │ ├── useTransferTimeEstimate.ts
│ │ │ └── useTxResult.ts
│ │ ├── logger
│ │ │ ├── index.ts
│ │ │ └── logger.ts
│ │ ├── main.tsx
│ │ ├── models
│ │ │ ├── Address.ts
│ │ │ ├── Network.ts
│ │ │ ├── Price.ts
│ │ │ ├── Token.ts
│ │ │ └── Transaction.ts
│ │ ├── pages
│ │ │ ├── Airdrop
│ │ │ │ ├── AirdropPreview
│ │ │ │ │ ├── AddressModal.tsx
│ │ │ │ │ ├── AirdropPreview.tsx
│ │ │ │ │ ├── AirdropPreviewWrapper.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── useDistribution.tsx
│ │ │ │ ├── AuthereumVerified
│ │ │ │ │ ├── AuthereumVerified.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── AuthereumVerify
│ │ │ │ │ ├── AuthereumVerify.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ClaimDateMessage.tsx
│ │ │ │ ├── SocialVerified
│ │ │ │ │ ├── SocialVerified.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ └── SocialVerify
│ │ │ │ │ ├── SocialVerify.tsx
│ │ │ │ │ └── index.ts
│ │ │ ├── Claim
│ │ │ │ ├── ChooseDelegate.tsx
│ │ │ │ ├── Claim.tsx
│ │ │ │ ├── ClaimReview.tsx
│ │ │ │ ├── ClaimStart.tsx
│ │ │ │ ├── ClaimWrapper.tsx
│ │ │ │ ├── Claimed.tsx
│ │ │ │ ├── Claiming.tsx
│ │ │ │ ├── DelegateConfirmModal.tsx
│ │ │ │ ├── DelegateIcon.tsx
│ │ │ │ ├── DelegateInfoModal.tsx
│ │ │ │ ├── claims.ts
│ │ │ │ ├── config.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── merkle.ts
│ │ │ │ ├── useClaim.ts
│ │ │ │ └── useDelegates.ts
│ │ │ ├── CommitTransfers
│ │ │ │ ├── CommitTransfers.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Convert
│ │ │ │ ├── Convert.tsx
│ │ │ │ ├── ConvertContent.tsx
│ │ │ │ ├── ConvertContext.tsx
│ │ │ │ ├── ConvertOption
│ │ │ │ │ ├── AmmConvertOption.tsx
│ │ │ │ │ ├── ConvertOption.tsx
│ │ │ │ │ ├── HopConvertOption.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Faucet
│ │ │ │ ├── Faucet.tsx
│ │ │ │ ├── FaucetContext.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Health
│ │ │ │ ├── Health.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── Pools
│ │ │ │ ├── PoolDetails
│ │ │ │ │ ├── AccountPosition.tsx
│ │ │ │ │ ├── BottomPoolStats.tsx
│ │ │ │ │ ├── DepositForm.tsx
│ │ │ │ │ ├── DinoGame.tsx
│ │ │ │ │ ├── PoolDetails.tsx
│ │ │ │ │ ├── PoolEmptyState.tsx
│ │ │ │ │ ├── StakeForm.tsx
│ │ │ │ │ ├── StakingRewardsClaim.tsx
│ │ │ │ │ ├── TopPoolStats.tsx
│ │ │ │ │ ├── WithdrawForm.tsx
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── useStyles.tsx
│ │ │ │ ├── PoolsContext.tsx
│ │ │ │ ├── PoolsOverview
│ │ │ │ │ ├── PoolRow.tsx
│ │ │ │ │ ├── PoolsOverview.tsx
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── usePools.tsx
│ │ │ │ ├── components
│ │ │ │ │ ├── BalanceText.tsx
│ │ │ │ │ ├── InputField.tsx
│ │ │ │ │ └── TokenIcon.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── usePoolStats.ts
│ │ │ │ ├── useStaking.tsx
│ │ │ │ └── useStakingAll.tsx
│ │ │ ├── Relay
│ │ │ │ ├── Relay.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ └── relayer
│ │ │ │ │ ├── ArbitrumRelayer.ts
│ │ │ │ │ ├── GnosisRelayer.ts
│ │ │ │ │ ├── LineaRelayer.ts
│ │ │ │ │ ├── OptimismRelayer.ts
│ │ │ │ │ ├── PolygonRelayer.ts
│ │ │ │ │ ├── PolygonZkRelayer.ts
│ │ │ │ │ ├── Relayer.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── theGraph.ts
│ │ │ │ │ └── types.ts
│ │ │ ├── Rewards
│ │ │ │ ├── Rewards.tsx
│ │ │ │ ├── RewardsWidget.tsx
│ │ │ │ ├── config.ts
│ │ │ │ ├── index.tsx
│ │ │ │ ├── merkle.ts
│ │ │ │ ├── useHasRewards.tsx
│ │ │ │ └── useRewards.tsx
│ │ │ ├── Send
│ │ │ │ ├── CustomRecipientDropdown.tsx
│ │ │ │ ├── FeeRefund.tsx
│ │ │ │ ├── Send.tsx
│ │ │ │ ├── SendAmountSelectorCard.tsx
│ │ │ │ ├── SendHeader.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── useAvailableLiquidity.tsx
│ │ │ │ ├── useSend.tsx
│ │ │ │ ├── useSendData.tsx
│ │ │ │ ├── useSendStyles.ts
│ │ │ │ └── useSendTransaction.ts
│ │ │ ├── Stats
│ │ │ │ ├── BalanceStats.tsx
│ │ │ │ ├── BonderStats.tsx
│ │ │ │ ├── DebitWindowStats.tsx
│ │ │ │ ├── PendingAmountStats.tsx
│ │ │ │ ├── PoolStats.tsx
│ │ │ │ ├── Stats.tsx
│ │ │ │ ├── StatsContext.tsx
│ │ │ │ └── index.tsx
│ │ │ └── Withdraw
│ │ │ │ ├── Withdraw.tsx
│ │ │ │ └── index.tsx
│ │ ├── react-app-env.d.ts
│ │ ├── reportWebVitals.ts
│ │ ├── setupTests.ts
│ │ ├── theme
│ │ │ ├── ThemeProvider.tsx
│ │ │ ├── dark.tsx
│ │ │ ├── index.ts
│ │ │ ├── light.tsx
│ │ │ ├── overrides.ts
│ │ │ ├── theme.tsx
│ │ │ └── typography.ts
│ │ ├── utils
│ │ │ ├── addresses.test.ts
│ │ │ ├── addresses.ts
│ │ │ ├── bigNumberMax.ts
│ │ │ ├── bigNumberMin.test.ts
│ │ │ ├── bigNumberMin.ts
│ │ │ ├── blocks.test.ts
│ │ │ ├── blocks.ts
│ │ │ ├── bridges.ts
│ │ │ ├── capitalize.ts
│ │ │ ├── chainIdToHex.ts
│ │ │ ├── commafy.ts
│ │ │ ├── constants.ts
│ │ │ ├── contracts.ts
│ │ │ ├── createTransaction.ts
│ │ │ ├── ens.ts
│ │ │ ├── format.test.ts
│ │ │ ├── format.ts
│ │ │ ├── getBaseExplorerUrl.ts
│ │ │ ├── getBonderFeeWithId.ts
│ │ │ ├── getChainName.ts
│ │ │ ├── getDefaultSendGasLimit.ts
│ │ │ ├── getEtherscanLink.ts
│ │ │ ├── getExplorerUrl.ts
│ │ │ ├── getIsTxFinalized.ts
│ │ │ ├── getNativeTokenSymbol.ts
│ │ │ ├── getProvider.ts
│ │ │ ├── getQueryParam.ts
│ │ │ ├── getRpcUrl.ts
│ │ │ ├── getTransferTimeSeconds.ts
│ │ │ ├── getTransferTimeString.ts
│ │ │ ├── index.ts
│ │ │ ├── localStorage.ts
│ │ │ ├── logs.ts
│ │ │ ├── networks.test.ts
│ │ │ ├── networks.ts
│ │ │ ├── normalizeTokenSymbol.ts
│ │ │ ├── prettifyErrorMessage.ts
│ │ │ ├── promiseTimeout.ts
│ │ │ ├── queries.ts
│ │ │ ├── retryPromise.ts
│ │ │ ├── shiftBNDecimals.ts
│ │ │ ├── stake.ts
│ │ │ ├── styles.ts
│ │ │ ├── timings.ts
│ │ │ ├── toPercentDisplay.ts
│ │ │ ├── toTokenDisplay.ts
│ │ │ ├── toUsdDisplay.ts
│ │ │ ├── tokens.ts
│ │ │ ├── transactions.test.ts
│ │ │ ├── transactions.ts
│ │ │ ├── transferTimeDisplay.ts
│ │ │ ├── updateQueryParams.ts
│ │ │ └── wait.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── hop-node
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── docker-compose.yml
│ ├── eslint.config.mjs
│ ├── jest.config.mjs
│ ├── package.json
│ ├── src
│ │ ├── aws
│ │ │ ├── AwsSigner.ts
│ │ │ ├── KmsSigner.ts
│ │ │ ├── LambdaSigner.ts
│ │ │ ├── cloudWatch.ts
│ │ │ ├── index.ts
│ │ │ ├── parameterStore.ts
│ │ │ └── s3Upload.ts
│ │ ├── chains
│ │ │ ├── AbstractChainBridge.ts
│ │ │ ├── Chains
│ │ │ │ ├── arbitrum
│ │ │ │ │ ├── ArbitrumAddresses.ts
│ │ │ │ │ ├── ArbitrumBridge.ts
│ │ │ │ │ ├── ArbitrumFinalityService.ts
│ │ │ │ │ ├── ArbitrumMessageService.ts
│ │ │ │ │ └── inclusion
│ │ │ │ │ │ └── ArbitrumInclusionService.ts
│ │ │ │ ├── gnosis
│ │ │ │ │ ├── GnosisAddresses.ts
│ │ │ │ │ ├── GnosisBridge.ts
│ │ │ │ │ ├── GnosisFinalityService.ts
│ │ │ │ │ └── GnosisMessageService.ts
│ │ │ │ ├── linea
│ │ │ │ │ ├── LineaBridge.ts
│ │ │ │ │ ├── LineaFinalityService.ts
│ │ │ │ │ └── LineaMessageService.ts
│ │ │ │ ├── optimism
│ │ │ │ │ ├── OptimismAddresses.ts
│ │ │ │ │ ├── OptimismBridge.ts
│ │ │ │ │ ├── OptimismFinalityService.ts
│ │ │ │ │ ├── OptimismMessageService.ts
│ │ │ │ │ └── inclusion
│ │ │ │ │ │ ├── AbstractOptimismInclusionService.ts
│ │ │ │ │ │ ├── AlchemyInclusionService.ts
│ │ │ │ │ │ ├── Derive.ts
│ │ │ │ │ │ └── JsonRpcInclusionService.ts
│ │ │ │ ├── polygon
│ │ │ │ │ ├── PolygonBridge.ts
│ │ │ │ │ ├── PolygonFinalityService.ts
│ │ │ │ │ └── PolygonMessageService.ts
│ │ │ │ ├── polygonzk
│ │ │ │ │ ├── PolygonZkBridge.ts
│ │ │ │ │ ├── PolygonZkFinalityService.ts
│ │ │ │ │ └── PolygonZkMessageService.ts
│ │ │ │ ├── scroll
│ │ │ │ │ ├── ScrollBridge.ts
│ │ │ │ │ ├── ScrollFinalityService.ts
│ │ │ │ │ └── ScrollMessageService.ts
│ │ │ │ └── zksync
│ │ │ │ │ ├── ZkSyncBridge.ts
│ │ │ │ │ ├── ZkSyncFinalityService.ts
│ │ │ │ │ └── ZkSyncMessageService.ts
│ │ │ ├── Factories
│ │ │ │ └── ChainBridgeFactory.ts
│ │ │ ├── IChainBridge.ts
│ │ │ ├── Services
│ │ │ │ ├── AbstractFinalityService.ts
│ │ │ │ ├── AbstractInclusionService.ts
│ │ │ │ ├── AbstractMessageService.ts
│ │ │ │ ├── AbstractService.ts
│ │ │ │ └── CacheService.ts
│ │ │ ├── getChainBridge.ts
│ │ │ └── index.ts
│ │ ├── cli
│ │ │ ├── bondFirstRootOfRoute.ts
│ │ │ ├── bondTransferRoot.ts
│ │ │ ├── bondWithdrawal.ts
│ │ │ ├── bondedUnconfirmedRoots.ts
│ │ │ ├── challenger.ts
│ │ │ ├── cli.ts
│ │ │ ├── commitTransfers.ts
│ │ │ ├── confirmRoot.ts
│ │ │ ├── dbDump.ts
│ │ │ ├── generateChainBalanceArchiveData.ts
│ │ │ ├── healthCheck.ts
│ │ │ ├── hopNode.ts
│ │ │ ├── incompleteSettlements.ts
│ │ │ ├── index.ts
│ │ │ ├── invalidBondWithdrawals.ts
│ │ │ ├── keystores.ts
│ │ │ ├── logs.ts
│ │ │ ├── metrics
│ │ │ │ ├── bonderBalance.ts
│ │ │ │ ├── bonderTxCost.ts
│ │ │ │ └── sharedMetrics.ts
│ │ │ ├── pendingTransfers.ts
│ │ │ ├── refreshApiStats.ts
│ │ │ ├── relayL1ToL2Message.ts
│ │ │ ├── resyncData.ts
│ │ │ ├── selfTest.ts
│ │ │ ├── send.ts
│ │ │ ├── sendToSelf.ts
│ │ │ ├── settle.ts
│ │ │ ├── shared
│ │ │ │ ├── art.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── shared.ts
│ │ │ │ └── utils.ts
│ │ │ ├── showConfig.ts
│ │ │ ├── stake.ts
│ │ │ ├── stakeStatus.ts
│ │ │ ├── swap.ts
│ │ │ ├── totalStake.ts
│ │ │ ├── transferId.ts
│ │ │ ├── transferIds.ts
│ │ │ ├── transferRoot.ts
│ │ │ ├── transferRoots.ts
│ │ │ ├── transferRootsCount.ts
│ │ │ ├── transfersCount.ts
│ │ │ ├── transfersTable.ts
│ │ │ ├── unbondedTransferRoots.ts
│ │ │ ├── unsettledRoots.ts
│ │ │ ├── unstake.ts
│ │ │ ├── unwind.ts
│ │ │ ├── unwithdrawnTransfers.ts
│ │ │ ├── updateConfig.ts
│ │ │ ├── verifyAwsSigner.ts
│ │ │ ├── verifyChainBalance.ts
│ │ │ ├── verifyCommits.ts
│ │ │ ├── withdraw.ts
│ │ │ └── withdrawalProof.ts
│ │ ├── config
│ │ │ ├── config.ts
│ │ │ ├── coreConfig.ts
│ │ │ ├── fileOps.ts
│ │ │ ├── index.ts
│ │ │ ├── types.ts
│ │ │ └── validation.ts
│ │ ├── constants
│ │ │ ├── chainBalanceArchiveData.ts
│ │ │ ├── constants.ts
│ │ │ ├── index.ts
│ │ │ ├── preRegenesisRootsCommitted.ts
│ │ │ └── utils.ts
│ │ ├── contracts
│ │ │ ├── contracts.ts
│ │ │ └── index.ts
│ │ ├── db
│ │ │ ├── BaseDb.ts
│ │ │ ├── DatabaseMigrator.ts
│ │ │ ├── GasBoostDb.ts
│ │ │ ├── GasCostDb.ts
│ │ │ ├── SyncStateDb.ts
│ │ │ ├── TransferRootsDb.ts
│ │ │ ├── TransfersDb.ts
│ │ │ ├── db.ts
│ │ │ ├── index.ts
│ │ │ ├── migrations.ts
│ │ │ └── utils.ts
│ │ ├── finality
│ │ │ ├── FinalityService.ts
│ │ │ ├── IFinalityService.ts
│ │ │ ├── index.ts
│ │ │ └── strategies
│ │ │ │ ├── FinalityStrategy.ts
│ │ │ │ ├── IFinalityStrategy.ts
│ │ │ │ ├── bonder
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── collateralized
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── default
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── threshold
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ ├── gasboost
│ │ │ ├── GasBoostSigner.ts
│ │ │ ├── GasBoostTransaction.ts
│ │ │ ├── GasBoostTransactionFactory.ts
│ │ │ ├── MemoryStore.ts
│ │ │ ├── Store.ts
│ │ │ ├── constants.ts
│ │ │ └── index.ts
│ │ ├── keystore
│ │ │ ├── entropyToMnemonic.ts
│ │ │ ├── index.ts
│ │ │ └── keystore.ts
│ │ ├── logger
│ │ │ ├── Logger.ts
│ │ │ └── index.ts
│ │ ├── metrics
│ │ │ ├── MetricsServer.ts
│ │ │ ├── index.ts
│ │ │ └── metrics.ts
│ │ ├── notifier
│ │ │ ├── index.ts
│ │ │ ├── interfaces.ts
│ │ │ ├── notifier.ts
│ │ │ └── slack.ts
│ │ ├── prompt
│ │ │ ├── index.ts
│ │ │ └── promptPassphrase.ts
│ │ ├── provider
│ │ │ ├── index.ts
│ │ │ └── provider.ts
│ │ ├── swap
│ │ │ ├── index.ts
│ │ │ ├── swap.ts
│ │ │ ├── types.ts
│ │ │ └── uniswap
│ │ │ │ ├── index.ts
│ │ │ │ └── uniswap.ts
│ │ ├── theGraph
│ │ │ ├── getBondedWithdrawal.ts
│ │ │ ├── getBondedWithdrawals.ts
│ │ │ ├── getIncompleteSettlements.ts
│ │ │ ├── getInvalidBondWithdrawals.ts
│ │ │ ├── getMultipleWithdrawalsSettled.ts
│ │ │ ├── getStake.ts
│ │ │ ├── getSubgraphLastBlockSynced.ts
│ │ │ ├── getTransfer.ts
│ │ │ ├── getTransferCommitted.ts
│ │ │ ├── getTransferFromL1Completed.ts
│ │ │ ├── getTransferId.ts
│ │ │ ├── getTransferIds.ts
│ │ │ ├── getTransferIdsForTransferRoot.ts
│ │ │ ├── getTransferRoot.ts
│ │ │ ├── getTransferRootBonded.ts
│ │ │ ├── getTransferRootConfirmed.ts
│ │ │ ├── getTransferRootForTransferId.ts
│ │ │ ├── getTransferRootSet.ts
│ │ │ ├── getTransferRoots.ts
│ │ │ ├── getTransferRootsCount.ts
│ │ │ ├── getTransferSent.ts
│ │ │ ├── getTransferSentToL2.ts
│ │ │ ├── getTransferSents.ts
│ │ │ ├── getTransfers.ts
│ │ │ ├── getTransfersCommitted.ts
│ │ │ ├── getTransfersCount.ts
│ │ │ ├── getUnbondedTransferRoots.ts
│ │ │ ├── getUnbondedTransfers.ts
│ │ │ ├── getUnsetTransferRoots.ts
│ │ │ ├── getUnstake.ts
│ │ │ ├── getUnwithdrawnTransfers.ts
│ │ │ ├── getWithdrawal.ts
│ │ │ ├── getWithdrawals.ts
│ │ │ ├── makeRequest.ts
│ │ │ └── shared.ts
│ │ ├── types
│ │ │ ├── error.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── utils
│ │ │ ├── MerkleTree.ts
│ │ │ ├── bigNumberMax.ts
│ │ │ ├── bigNumberMin.ts
│ │ │ ├── chainSlugToId.ts
│ │ │ ├── findMissingIndexes.ts
│ │ │ ├── getBlockNumberFromDate.ts
│ │ │ ├── getBumpedBN.ts
│ │ │ ├── getBumpedGasPrice.ts
│ │ │ ├── getCanonicalTokenSymbol.ts
│ │ │ ├── getEnvFilePath.ts
│ │ │ ├── getExponentialBackoffDelayMs.ts
│ │ │ ├── getNameservers.ts
│ │ │ ├── getNonRetryableRpcProvider.ts
│ │ │ ├── getProviderChainSlug.ts
│ │ │ ├── getRpcProvider.ts
│ │ │ ├── getRpcProviderFromUrl.ts
│ │ │ ├── getRpcRootProviderName.ts
│ │ │ ├── getRpcUrlFromProvider.ts
│ │ │ ├── getSortedTransferIds.ts
│ │ │ ├── getSubgraphUrl.ts
│ │ │ ├── getTokenMetadataByAddress.ts
│ │ │ ├── getTransferId.ts
│ │ │ ├── getTransferIdFromCalldata.ts
│ │ │ ├── getTransferRootId.ts
│ │ │ ├── getTransferSentToL2TransferId.ts
│ │ │ ├── getWithdrawalProofData.ts
│ │ │ ├── isFetchBadResponseError.ts
│ │ │ ├── isFetchConnectionError.ts
│ │ │ ├── isFetchExecutionError.ts
│ │ │ ├── isFetchRateLimitError.ts
│ │ │ ├── isFetchRpcServerError.ts
│ │ │ ├── isFetchTimeoutError.ts
│ │ │ ├── isHToken.ts
│ │ │ ├── isL1.ts
│ │ │ ├── isL1ChainId.ts
│ │ │ ├── isNativeToken.ts
│ │ │ ├── isTokenSupportedForChain.ts
│ │ │ ├── objectDepth.ts
│ │ │ ├── padHex.ts
│ │ │ ├── promiseQueue.ts
│ │ │ ├── promiseTimeout.ts
│ │ │ ├── rateLimitRetry.ts
│ │ │ └── wait.ts
│ │ ├── wallets
│ │ │ ├── index.ts
│ │ │ └── wallets.ts
│ │ └── watchers
│ │ │ ├── AvailableLiquidityWatcher.ts
│ │ │ ├── BondTransferRootWatcher.ts
│ │ │ ├── BondWithdrawalWatcher.ts
│ │ │ ├── ChallengeWatcher.ts
│ │ │ ├── CommitTransfersWatcher.ts
│ │ │ ├── ConfirmRootsWatcher.ts
│ │ │ ├── HealthCheckWatcher.ts
│ │ │ ├── IncompleteSettlementsWatcher.ts
│ │ │ ├── OsWatcher.ts
│ │ │ ├── RelayWatcher.ts
│ │ │ ├── SettleBondedWithdrawalWatcher.ts
│ │ │ ├── SyncWatcher.ts
│ │ │ ├── classes
│ │ │ ├── BaseWatcher.ts
│ │ │ ├── Bridge.ts
│ │ │ ├── ContractBase.ts
│ │ │ ├── IBaseWatcher.ts
│ │ │ ├── L1Bridge.ts
│ │ │ ├── L1MessengerWrapper.ts
│ │ │ ├── L2Amm.ts
│ │ │ ├── L2AmmWrapper.ts
│ │ │ ├── L2Bridge.ts
│ │ │ ├── Metrics.ts
│ │ │ └── Token.ts
│ │ │ └── watchers.ts
│ ├── test
│ │ ├── KmsSigner.test.ts
│ │ ├── LambdaSigner.test.ts
│ │ ├── bridge.test.ts
│ │ ├── config.ts
│ │ ├── eventsBatch.test.ts
│ │ ├── gasBoostSigner.test.ts
│ │ ├── getBlockNumberFromDate.test.ts
│ │ ├── getBumpedBN.test.ts
│ │ ├── getSubgraphUrl.test.ts
│ │ ├── getTransferId.test.ts
│ │ ├── getTransferIdFromCalldata.test.ts
│ │ ├── getTransferRootId.test.ts
│ │ ├── getTransfersIdsWithTransferRootHash.test.ts
│ │ ├── healthChecker.test.ts
│ │ ├── isNativeToken.test.ts
│ │ ├── keystore.test.ts
│ │ ├── merkle.test.ts
│ │ ├── queue.test.ts
│ │ ├── rateLimitRetry.test.ts
│ │ ├── syncWatcher.test.ts
│ │ ├── theGraph.test.ts
│ │ ├── utils.test.ts
│ │ └── utils
│ │ │ └── expectDefined.ts
│ └── tsconfig.json
├── metabase
│ ├── .gitignore
│ ├── README.md
│ └── docker-compose.yml
├── sdk-demo
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── eslint.config.mjs
│ ├── index.html
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ ├── logo192.png
│ │ ├── logo512.png
│ │ ├── manifest.json
│ │ └── robots.txt
│ ├── src
│ │ ├── App.css
│ │ ├── App.tsx
│ │ ├── actions.json
│ │ ├── index.css
│ │ ├── main.tsx
│ │ ├── react-app-env.d.ts
│ │ ├── reportWebVitals.ts
│ │ ├── setupTests.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── sdk
│ ├── .gitattributes
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── abi
│ │ ├── Accounting.ts
│ │ ├── ArbERC20.ts
│ │ ├── ArbitrumGlobalInbox.ts
│ │ ├── ArbitrumMessengerWrapper.ts
│ │ ├── Arbitrum_L1_ERC20_Bridge.ts
│ │ ├── Arbitrum_L2_ERC20_Bridge.ts
│ │ ├── Bridge.ts
│ │ ├── CCTPMessageTransmitter.ts
│ │ ├── CCTPTokenMessenger.ts
│ │ ├── CCTPTokenMinter.ts
│ │ ├── ERC20.ts
│ │ ├── ERC20Burnable.ts
│ │ ├── ERC20Mintable.ts
│ │ ├── FxBaseChildTunnel.ts
│ │ ├── FxBaseRootTunnel.ts
│ │ ├── GovernorAlpha.ts
│ │ ├── Hop.ts
│ │ ├── HopBridgeToken.ts
│ │ ├── IAllowlist.ts
│ │ ├── IArbSys.ts
│ │ ├── IArbitraryMessageBridge.ts
│ │ ├── IBridge.ts
│ │ ├── ICheckpointManager.ts
│ │ ├── IERC20.ts
│ │ ├── IEthERC20Bridge.ts
│ │ ├── IFlashLoanReceiver.ts
│ │ ├── IForeignOmniBridge.ts
│ │ ├── IFxMessageProcessor.ts
│ │ ├── IFxStateSender.ts
│ │ ├── IGlobalInbox.ts
│ │ ├── IInbox.ts
│ │ ├── IMessageProvider.ts
│ │ ├── IMessengerWrapper.ts
│ │ ├── IOutbox.ts
│ │ ├── IPolygonFxChild.ts
│ │ ├── IRootChainManager.ts
│ │ ├── IStateReceiver.ts
│ │ ├── IStateSender.ts
│ │ ├── ISwap.ts
│ │ ├── ISwapFlashLoan.ts
│ │ ├── ISwapGuarded.ts
│ │ ├── IWETH.ts
│ │ ├── I_L1_PolygonMessenger.ts
│ │ ├── I_L2_PolygonMessengerProxy.ts
│ │ ├── L1_ArbitrumMessenger.ts
│ │ ├── L1_Bridge.ts
│ │ ├── L1_ERC20_Bridge.ts
│ │ ├── L1_ERC20_Bridge_Legacy.ts
│ │ ├── L1_ETH_Bridge.ts
│ │ ├── L1_HomeAMBNativeToErc20.ts
│ │ ├── L1_HopCCTPImplementation.ts
│ │ ├── L1_OptimismMessenger.ts
│ │ ├── L1_OptimismTokenBridge.ts
│ │ ├── L1_PolygonFxBaseRootTunnel.ts
│ │ ├── L1_PolygonMessenger.ts
│ │ ├── L1_PolygonPosRootChainManager.ts
│ │ ├── L1_xDaiAMB.ts
│ │ ├── L1_xDaiForeignOmniBridge.ts
│ │ ├── L1_xDaiMessenger.ts
│ │ ├── L2_AmmWrapper.ts
│ │ ├── L2_ArbitrumBridge.ts
│ │ ├── L2_Bridge.ts
│ │ ├── L2_BridgeWrapper.ts
│ │ ├── L2_HopCCTPImplementation.ts
│ │ ├── L2_OptimismBridge.ts
│ │ ├── L2_OptimismTokenBridge.ts
│ │ ├── L2_PolygonBridge.ts
│ │ ├── L2_PolygonChildERC20.ts
│ │ ├── L2_PolygonMessengerProxy.ts
│ │ ├── L2_xDaiAMB.ts
│ │ ├── L2_xDaiBridge.ts
│ │ ├── L2_xDaiToken.ts
│ │ ├── LPToken.ts
│ │ ├── MathUtils.ts
│ │ ├── MessengerWrapper.ts
│ │ ├── MockERC20.ts
│ │ ├── MockEthERC20Bridge.ts
│ │ ├── MockForeignOmniBridge.ts
│ │ ├── MockFxChild.ts
│ │ ├── MockFxRoot.ts
│ │ ├── MockMessenger.ts
│ │ ├── MockPolygonMessengerWrapper.ts
│ │ ├── MockRootChainManager.ts
│ │ ├── Mock_Accounting.ts
│ │ ├── Mock_Bridge.ts
│ │ ├── Mock_L1_CanonicalBridge.ts
│ │ ├── Mock_L1_ERC20_Bridge.ts
│ │ ├── Mock_L1_ETH_Bridge.ts
│ │ ├── Mock_L1_Messenger.ts
│ │ ├── Mock_L1_PolygonMessenger.ts
│ │ ├── Mock_L1_xDaiMessenger.ts
│ │ ├── Mock_L2_ArbitrumBridge.ts
│ │ ├── Mock_L2_Messenger.ts
│ │ ├── Mock_L2_OptimismBridge.ts
│ │ ├── Mock_L2_PolygonBridge.ts
│ │ ├── Mock_L2_xDaiBridge.ts
│ │ ├── Multicall3.ts
│ │ ├── OVM_BaseCrossDomainMessenger.ts
│ │ ├── OVM_L1_ERC20_Bridge.ts
│ │ ├── OVM_L2_ERC20_Bridge.ts
│ │ ├── OptimismMessengerWrapper.ts
│ │ ├── Ownable.ts
│ │ ├── OwnableUpgradeable.ts
│ │ ├── OwnerPausableUpgradeable.ts
│ │ ├── PausableUpgradeable.ts
│ │ ├── PolygonMessengerWrapper.ts
│ │ ├── SaddleLpToken.ts
│ │ ├── StakingRewards.ts
│ │ ├── StakingRewardsFactory.ts
│ │ ├── Swap.ts
│ │ ├── SwapUtils.ts
│ │ ├── Timelock.ts
│ │ ├── UniswapQuoterV2.ts
│ │ ├── UniswapV3Pool.ts
│ │ ├── WETH9.ts
│ │ ├── iAbs_BaseCrossDomainMessenger.ts
│ │ ├── iOVM_BaseCrossDomainMessenger.ts
│ │ ├── iOVM_L1CrossDomainMessenger.ts
│ │ ├── iOVM_L2CrossDomainMessenger.ts
│ │ ├── mockOVM_CrossDomainMessenger.ts
│ │ └── xDaiMessengerWrapper.ts
│ ├── docs
│ │ ├── .nojekyll
│ │ ├── README.md
│ │ ├── classes
│ │ │ ├── AMM.md
│ │ │ ├── Accounting__factory.md
│ │ │ ├── ArbERC20__factory.md
│ │ │ ├── ArbitrumGlobalInbox__factory.md
│ │ │ ├── ArbitrumMessengerWrapper__factory.md
│ │ │ ├── Arbitrum_L1_ERC20_Bridge__factory.md
│ │ │ ├── Arbitrum_L2_ERC20_Bridge__factory.md
│ │ │ ├── Base.md
│ │ │ ├── Bridge__factory.md
│ │ │ ├── CCTPMessageTransmitter__factory.md
│ │ │ ├── CCTPTokenMessenger__factory.md
│ │ │ ├── CCTPTokenMinter__factory.md
│ │ │ ├── ERC20Burnable__factory.md
│ │ │ ├── ERC20Mintable__factory.md
│ │ │ ├── ERC20__factory.md
│ │ │ ├── FallbackProvider.md
│ │ │ ├── FxBaseChildTunnel__factory.md
│ │ │ ├── FxBaseRootTunnel__factory.md
│ │ │ ├── GovernorAlpha__factory.md
│ │ │ ├── Hop.md
│ │ │ ├── HopBridge.md
│ │ │ ├── HopBridgeToken__factory.md
│ │ │ ├── Hop__factory.md
│ │ │ ├── IAbs_BaseCrossDomainMessenger__factory.md
│ │ │ ├── IAllowlist__factory.md
│ │ │ ├── IArbSys__factory.md
│ │ │ ├── IArbitraryMessageBridge__factory.md
│ │ │ ├── IBridge__factory.md
│ │ │ ├── ICheckpointManager__factory.md
│ │ │ ├── IERC20__factory.md
│ │ │ ├── IEthERC20Bridge__factory.md
│ │ │ ├── IFlashLoanReceiver__factory.md
│ │ │ ├── IForeignOmniBridge__factory.md
│ │ │ ├── IFxMessageProcessor__factory.md
│ │ │ ├── IFxStateSender__factory.md
│ │ │ ├── IGlobalInbox__factory.md
│ │ │ ├── IInbox__factory.md
│ │ │ ├── IMessageProvider__factory.md
│ │ │ ├── IMessengerWrapper__factory.md
│ │ │ ├── IOVM_BaseCrossDomainMessenger__factory.md
│ │ │ ├── IOVM_L1CrossDomainMessenger__factory.md
│ │ │ ├── IOVM_L2CrossDomainMessenger__factory.md
│ │ │ ├── IOutbox__factory.md
│ │ │ ├── IPolygonFxChild__factory.md
│ │ │ ├── IRootChainManager__factory.md
│ │ │ ├── IStateReceiver__factory.md
│ │ │ ├── IStateSender__factory.md
│ │ │ ├── ISwapFlashLoan__factory.md
│ │ │ ├── ISwapGuarded__factory.md
│ │ │ ├── ISwap__factory.md
│ │ │ ├── IWETH__factory.md
│ │ │ ├── I_L1_PolygonMessenger__factory.md
│ │ │ ├── I_L2_PolygonMessengerProxy__factory.md
│ │ │ ├── L1_ArbitrumMessenger__factory.md
│ │ │ ├── L1_Bridge__factory.md
│ │ │ ├── L1_ERC20_Bridge_Legacy__factory.md
│ │ │ ├── L1_ERC20_Bridge__factory.md
│ │ │ ├── L1_ETH_Bridge__factory.md
│ │ │ ├── L1_HomeAMBNativeToErc20__factory.md
│ │ │ ├── L1_HopCCTPImplementation__factory.md
│ │ │ ├── L1_OptimismMessenger__factory.md
│ │ │ ├── L1_OptimismTokenBridge__factory.md
│ │ │ ├── L1_PolygonFxBaseRootTunnel__factory.md
│ │ │ ├── L1_PolygonMessenger__factory.md
│ │ │ ├── L1_PolygonPosRootChainManager__factory.md
│ │ │ ├── L1_xDaiAMB__factory.md
│ │ │ ├── L1_xDaiForeignOmniBridge__factory.md
│ │ │ ├── L1_xDaiMessenger__factory.md
│ │ │ ├── L2_AmmWrapper__factory.md
│ │ │ ├── L2_ArbitrumBridge__factory.md
│ │ │ ├── L2_BridgeWrapper__factory.md
│ │ │ ├── L2_Bridge__factory.md
│ │ │ ├── L2_HopCCTPImplementation__factory.md
│ │ │ ├── L2_OptimismBridge__factory.md
│ │ │ ├── L2_OptimismTokenBridge__factory.md
│ │ │ ├── L2_PolygonBridge__factory.md
│ │ │ ├── L2_PolygonChildERC20__factory.md
│ │ │ ├── L2_PolygonMessengerProxy__factory.md
│ │ │ ├── L2_xDaiAMB__factory.md
│ │ │ ├── L2_xDaiBridge__factory.md
│ │ │ ├── L2_xDaiToken__factory.md
│ │ │ ├── LPToken__factory.md
│ │ │ ├── MathUtils__factory.md
│ │ │ ├── MessengerWrapper__factory.md
│ │ │ ├── MockERC20__factory.md
│ │ │ ├── MockEthERC20Bridge__factory.md
│ │ │ ├── MockForeignOmniBridge__factory.md
│ │ │ ├── MockFxChild__factory.md
│ │ │ ├── MockFxRoot__factory.md
│ │ │ ├── MockMessenger__factory.md
│ │ │ ├── MockOVM_CrossDomainMessenger__factory.md
│ │ │ ├── MockPolygonMessengerWrapper__factory.md
│ │ │ ├── MockRootChainManager__factory.md
│ │ │ ├── Mock_Accounting__factory.md
│ │ │ ├── Mock_Bridge__factory.md
│ │ │ ├── Mock_L1_CanonicalBridge__factory.md
│ │ │ ├── Mock_L1_ERC20_Bridge__factory.md
│ │ │ ├── Mock_L1_ETH_Bridge__factory.md
│ │ │ ├── Mock_L1_Messenger__factory.md
│ │ │ ├── Mock_L1_PolygonMessenger__factory.md
│ │ │ ├── Mock_L1_xDaiMessenger__factory.md
│ │ │ ├── Mock_L2_ArbitrumBridge__factory.md
│ │ │ ├── Mock_L2_Messenger__factory.md
│ │ │ ├── Mock_L2_OptimismBridge__factory.md
│ │ │ ├── Mock_L2_PolygonBridge__factory.md
│ │ │ ├── Mock_L2_xDaiBridge__factory.md
│ │ │ ├── Multicall.md
│ │ │ ├── Multicall3__factory.md
│ │ │ ├── OVM_BaseCrossDomainMessenger__factory.md
│ │ │ ├── OVM_L1_ERC20_Bridge__factory.md
│ │ │ ├── OVM_L2_ERC20_Bridge__factory.md
│ │ │ ├── OptimismMessengerWrapper__factory.md
│ │ │ ├── OwnableUpgradeable__factory.md
│ │ │ ├── Ownable__factory.md
│ │ │ ├── OwnerPausableUpgradeable__factory.md
│ │ │ ├── PausableUpgradeable__factory.md
│ │ │ ├── PolygonMessengerWrapper__factory.md
│ │ │ ├── PriceFeed.md
│ │ │ ├── PriceFeedFromS3.md
│ │ │ ├── RelayerFee.md
│ │ │ ├── RetryProvider.md
│ │ │ ├── SaddleLpToken__factory.md
│ │ │ ├── StakingRewardsFactory__factory.md
│ │ │ ├── StakingRewards__factory.md
│ │ │ ├── SwapUtils__factory.md
│ │ │ ├── Swap__factory.md
│ │ │ ├── Timelock__factory.md
│ │ │ ├── Token.md
│ │ │ ├── TokenModel.md
│ │ │ ├── UniswapQuoterV2__factory.md
│ │ │ ├── UniswapV3Pool__factory.md
│ │ │ ├── WETH9__factory.md
│ │ │ ├── WithdrawalProof.md
│ │ │ └── XDaiMessengerWrapper__factory.md
│ │ ├── enums
│ │ │ ├── CanonicalToken.md
│ │ │ ├── ChainId.md
│ │ │ ├── ChainName.md
│ │ │ ├── ChainSlug.md
│ │ │ ├── HToken.md
│ │ │ ├── NetworkSlug.md
│ │ │ ├── RpcProviderSlug.md
│ │ │ ├── Slug.md
│ │ │ ├── TokenSymbol.md
│ │ │ └── WrappedToken.md
│ │ ├── interfaces
│ │ │ ├── Accounting.md
│ │ │ ├── ArbERC20.md
│ │ │ ├── ArbitrumGlobalInbox.md
│ │ │ ├── ArbitrumMessengerWrapper.md
│ │ │ ├── Arbitrum_L1_ERC20_Bridge.md
│ │ │ ├── Arbitrum_L2_ERC20_Bridge.md
│ │ │ ├── Bridge-1.md
│ │ │ ├── CCTPMessageTransmitter.md
│ │ │ ├── CCTPTokenMessenger.md
│ │ │ ├── CCTPTokenMinter.md
│ │ │ ├── ERC20.md
│ │ │ ├── ERC20Burnable.md
│ │ │ ├── ERC20Mintable.md
│ │ │ ├── FxBaseChildTunnel.md
│ │ │ ├── FxBaseRootTunnel.md
│ │ │ ├── GovernorAlpha-1.md
│ │ │ ├── HopBridgeToken.md
│ │ │ ├── IAbs_BaseCrossDomainMessenger.md
│ │ │ ├── IAllowlist.md
│ │ │ ├── IArbSys.md
│ │ │ ├── IArbitraryMessageBridge.md
│ │ │ ├── IBridge.md
│ │ │ ├── ICheckpointManager.md
│ │ │ ├── IERC20.md
│ │ │ ├── IEthERC20Bridge.md
│ │ │ ├── IFlashLoanReceiver.md
│ │ │ ├── IForeignOmniBridge.md
│ │ │ ├── IFxMessageProcessor.md
│ │ │ ├── IFxStateSender.md
│ │ │ ├── IGlobalInbox.md
│ │ │ ├── IInbox.md
│ │ │ ├── IMessageProvider.md
│ │ │ ├── IMessengerWrapper.md
│ │ │ ├── IOVM_BaseCrossDomainMessenger.md
│ │ │ ├── IOVM_L1CrossDomainMessenger.md
│ │ │ ├── IOVM_L2CrossDomainMessenger.md
│ │ │ ├── IOutbox.md
│ │ │ ├── IPolygonFxChild.md
│ │ │ ├── IRootChainManager.md
│ │ │ ├── IStateReceiver.md
│ │ │ ├── IStateSender.md
│ │ │ ├── ISwap.md
│ │ │ ├── ISwapFlashLoan.md
│ │ │ ├── ISwapGuarded.md
│ │ │ ├── IWETH.md
│ │ │ ├── I_L1_PolygonMessenger.md
│ │ │ ├── I_L2_PolygonMessengerProxy.md
│ │ │ ├── L1_ArbitrumMessenger.md
│ │ │ ├── L1_Bridge.md
│ │ │ ├── L1_ERC20_Bridge.md
│ │ │ ├── L1_ERC20_Bridge_Legacy.md
│ │ │ ├── L1_ETH_Bridge.md
│ │ │ ├── L1_HomeAMBNativeToErc20.md
│ │ │ ├── L1_HopCCTPImplementation.md
│ │ │ ├── L1_OptimismMessenger.md
│ │ │ ├── L1_OptimismTokenBridge.md
│ │ │ ├── L1_PolygonFxBaseRootTunnel.md
│ │ │ ├── L1_PolygonMessenger.md
│ │ │ ├── L1_PolygonPosRootChainManager.md
│ │ │ ├── L1_xDaiAMB.md
│ │ │ ├── L1_xDaiForeignOmniBridge.md
│ │ │ ├── L1_xDaiMessenger.md
│ │ │ ├── L2_AmmWrapper.md
│ │ │ ├── L2_ArbitrumBridge.md
│ │ │ ├── L2_Bridge.md
│ │ │ ├── L2_BridgeWrapper.md
│ │ │ ├── L2_HopCCTPImplementation.md
│ │ │ ├── L2_OptimismBridge.md
│ │ │ ├── L2_OptimismTokenBridge.md
│ │ │ ├── L2_PolygonBridge.md
│ │ │ ├── L2_PolygonChildERC20.md
│ │ │ ├── L2_PolygonMessengerProxy.md
│ │ │ ├── L2_xDaiAMB.md
│ │ │ ├── L2_xDaiBridge.md
│ │ │ ├── L2_xDaiToken.md
│ │ │ ├── LPToken.md
│ │ │ ├── MathUtils.md
│ │ │ ├── MessengerWrapper.md
│ │ │ ├── MockERC20.md
│ │ │ ├── MockEthERC20Bridge.md
│ │ │ ├── MockForeignOmniBridge.md
│ │ │ ├── MockFxChild.md
│ │ │ ├── MockFxRoot.md
│ │ │ ├── MockMessenger.md
│ │ │ ├── MockOVM_CrossDomainMessenger-1.md
│ │ │ ├── MockPolygonMessengerWrapper.md
│ │ │ ├── MockRootChainManager.md
│ │ │ ├── Mock_Accounting.md
│ │ │ ├── Mock_Bridge.md
│ │ │ ├── Mock_L1_CanonicalBridge.md
│ │ │ ├── Mock_L1_ERC20_Bridge.md
│ │ │ ├── Mock_L1_ETH_Bridge.md
│ │ │ ├── Mock_L1_Messenger.md
│ │ │ ├── Mock_L1_PolygonMessenger.md
│ │ │ ├── Mock_L1_xDaiMessenger.md
│ │ │ ├── Mock_L2_ArbitrumBridge.md
│ │ │ ├── Mock_L2_Messenger.md
│ │ │ ├── Mock_L2_OptimismBridge.md
│ │ │ ├── Mock_L2_PolygonBridge.md
│ │ │ ├── Mock_L2_xDaiBridge.md
│ │ │ ├── Multicall3-1.md
│ │ │ ├── OVM_BaseCrossDomainMessenger.md
│ │ │ ├── OVM_L1_ERC20_Bridge.md
│ │ │ ├── OVM_L2_ERC20_Bridge.md
│ │ │ ├── OptimismMessengerWrapper.md
│ │ │ ├── Ownable.md
│ │ │ ├── OwnableUpgradeable.md
│ │ │ ├── OwnerPausableUpgradeable.md
│ │ │ ├── PausableUpgradeable.md
│ │ │ ├── PolygonMessengerWrapper.md
│ │ │ ├── SaddleLpToken.md
│ │ │ ├── StakingRewards.md
│ │ │ ├── StakingRewardsFactory.md
│ │ │ ├── Swap.md
│ │ │ ├── SwapUtils.md
│ │ │ ├── Timelock.md
│ │ │ ├── UniswapQuoterV2.md
│ │ │ ├── UniswapV3Pool.md
│ │ │ ├── WETH9.md
│ │ │ └── XDaiMessengerWrapper.md
│ │ ├── modules.md
│ │ └── modules
│ │ │ ├── Bridge.md
│ │ │ ├── GovernorAlpha.md
│ │ │ ├── MockOVM_CrossDomainMessenger.md
│ │ │ └── Multicall3.md
│ ├── eslint.config.mjs
│ ├── example
│ │ └── example.js
│ ├── jest.config.mjs
│ ├── package.json
│ ├── scripts
│ │ ├── .gitignore
│ │ ├── generate_chart_from_file.py
│ │ └── update_gitbook.sh
│ ├── src
│ │ ├── AMM.ts
│ │ ├── Base.ts
│ │ ├── Hop.ts
│ │ ├── HopBridge.ts
│ │ ├── Token.ts
│ │ ├── addresses
│ │ │ ├── goerli.ts
│ │ │ ├── index.ts
│ │ │ ├── mainnet.ts
│ │ │ ├── sepolia.ts
│ │ │ └── types.ts
│ │ ├── chains
│ │ │ ├── assets
│ │ │ │ ├── arbitrum.ts
│ │ │ │ ├── base.ts
│ │ │ │ ├── ethereum.ts
│ │ │ │ ├── gnosis.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── linea.ts
│ │ │ │ ├── nova.ts
│ │ │ │ ├── optimism.ts
│ │ │ │ ├── polygon.ts
│ │ │ │ ├── polygonzk.ts
│ │ │ │ ├── scrollzk.ts
│ │ │ │ └── zksync.ts
│ │ │ ├── index.ts
│ │ │ ├── networks
│ │ │ │ ├── goerli.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mainnet.ts
│ │ │ │ ├── sepolia.ts
│ │ │ │ └── shared.ts
│ │ │ ├── types.ts
│ │ │ └── utils
│ │ │ │ ├── getChainNativeTokenSymbol.ts
│ │ │ │ ├── getChainSlug.ts
│ │ │ │ ├── getMinGasLimit.ts
│ │ │ │ ├── getMinGasPrice.ts
│ │ │ │ ├── getSlugFromChainId.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── internal.ts
│ │ │ │ ├── isValidChainSlug.ts
│ │ │ │ └── isValidNetworkSlug.ts
│ │ ├── config
│ │ │ ├── goerli.ts
│ │ │ ├── index.ts
│ │ │ ├── mainnet.ts
│ │ │ ├── sepolia.ts
│ │ │ └── types.ts
│ │ ├── constants
│ │ │ ├── constants.ts
│ │ │ ├── eventTopics.ts
│ │ │ └── index.ts
│ │ ├── contracts
│ │ │ ├── Accounting.ts
│ │ │ ├── ArbERC20.ts
│ │ │ ├── ArbitrumGlobalInbox.ts
│ │ │ ├── ArbitrumMessengerWrapper.ts
│ │ │ ├── Arbitrum_L1_ERC20_Bridge.ts
│ │ │ ├── Arbitrum_L2_ERC20_Bridge.ts
│ │ │ ├── Bridge.ts
│ │ │ ├── CCTPMessageTransmitter.ts
│ │ │ ├── CCTPTokenMessenger.ts
│ │ │ ├── CCTPTokenMinter.ts
│ │ │ ├── ERC20.ts
│ │ │ ├── ERC20Burnable.ts
│ │ │ ├── ERC20Mintable.ts
│ │ │ ├── FxBaseChildTunnel.ts
│ │ │ ├── FxBaseRootTunnel.ts
│ │ │ ├── GovernorAlpha.ts
│ │ │ ├── Hop.ts
│ │ │ ├── HopBridgeToken.ts
│ │ │ ├── IAbs_BaseCrossDomainMessenger.ts
│ │ │ ├── IAllowlist.ts
│ │ │ ├── IArbSys.ts
│ │ │ ├── IArbitraryMessageBridge.ts
│ │ │ ├── IBridge.ts
│ │ │ ├── ICheckpointManager.ts
│ │ │ ├── IERC20.ts
│ │ │ ├── IEthERC20Bridge.ts
│ │ │ ├── IFlashLoanReceiver.ts
│ │ │ ├── IForeignOmniBridge.ts
│ │ │ ├── IFxMessageProcessor.ts
│ │ │ ├── IFxStateSender.ts
│ │ │ ├── IGlobalInbox.ts
│ │ │ ├── IInbox.ts
│ │ │ ├── IMessageProvider.ts
│ │ │ ├── IMessengerWrapper.ts
│ │ │ ├── IOVM_BaseCrossDomainMessenger.ts
│ │ │ ├── IOVM_L1CrossDomainMessenger.ts
│ │ │ ├── IOVM_L2CrossDomainMessenger.ts
│ │ │ ├── IOutbox.ts
│ │ │ ├── IPolygonFxChild.ts
│ │ │ ├── IRootChainManager.ts
│ │ │ ├── IStateReceiver.ts
│ │ │ ├── IStateSender.ts
│ │ │ ├── ISwap.ts
│ │ │ ├── ISwapFlashLoan.ts
│ │ │ ├── ISwapGuarded.ts
│ │ │ ├── IWETH.ts
│ │ │ ├── I_L1_PolygonMessenger.ts
│ │ │ ├── I_L2_PolygonMessengerProxy.ts
│ │ │ ├── L1_ArbitrumMessenger.ts
│ │ │ ├── L1_Bridge.ts
│ │ │ ├── L1_ERC20_Bridge.ts
│ │ │ ├── L1_ERC20_Bridge_Legacy.ts
│ │ │ ├── L1_ETH_Bridge.ts
│ │ │ ├── L1_HomeAMBNativeToErc20.ts
│ │ │ ├── L1_HopCCTPImplementation.ts
│ │ │ ├── L1_OptimismMessenger.ts
│ │ │ ├── L1_OptimismTokenBridge.ts
│ │ │ ├── L1_PolygonFxBaseRootTunnel.ts
│ │ │ ├── L1_PolygonMessenger.ts
│ │ │ ├── L1_PolygonPosRootChainManager.ts
│ │ │ ├── L1_xDaiAMB.ts
│ │ │ ├── L1_xDaiForeignOmniBridge.ts
│ │ │ ├── L1_xDaiMessenger.ts
│ │ │ ├── L2_AmmWrapper.ts
│ │ │ ├── L2_ArbitrumBridge.ts
│ │ │ ├── L2_Bridge.ts
│ │ │ ├── L2_BridgeWrapper.ts
│ │ │ ├── L2_HopCCTPImplementation.ts
│ │ │ ├── L2_OptimismBridge.ts
│ │ │ ├── L2_OptimismTokenBridge.ts
│ │ │ ├── L2_PolygonBridge.ts
│ │ │ ├── L2_PolygonChildERC20.ts
│ │ │ ├── L2_PolygonMessengerProxy.ts
│ │ │ ├── L2_xDaiAMB.ts
│ │ │ ├── L2_xDaiBridge.ts
│ │ │ ├── L2_xDaiToken.ts
│ │ │ ├── LPToken.ts
│ │ │ ├── MathUtils.ts
│ │ │ ├── MessengerWrapper.ts
│ │ │ ├── MockERC20.ts
│ │ │ ├── MockEthERC20Bridge.ts
│ │ │ ├── MockForeignOmniBridge.ts
│ │ │ ├── MockFxChild.ts
│ │ │ ├── MockFxRoot.ts
│ │ │ ├── MockMessenger.ts
│ │ │ ├── MockOVM_CrossDomainMessenger.ts
│ │ │ ├── MockPolygonMessengerWrapper.ts
│ │ │ ├── MockRootChainManager.ts
│ │ │ ├── Mock_Accounting.ts
│ │ │ ├── Mock_Bridge.ts
│ │ │ ├── Mock_L1_CanonicalBridge.ts
│ │ │ ├── Mock_L1_ERC20_Bridge.ts
│ │ │ ├── Mock_L1_ETH_Bridge.ts
│ │ │ ├── Mock_L1_Messenger.ts
│ │ │ ├── Mock_L1_PolygonMessenger.ts
│ │ │ ├── Mock_L1_xDaiMessenger.ts
│ │ │ ├── Mock_L2_ArbitrumBridge.ts
│ │ │ ├── Mock_L2_Messenger.ts
│ │ │ ├── Mock_L2_OptimismBridge.ts
│ │ │ ├── Mock_L2_PolygonBridge.ts
│ │ │ ├── Mock_L2_xDaiBridge.ts
│ │ │ ├── Multicall3.ts
│ │ │ ├── OVM_BaseCrossDomainMessenger.ts
│ │ │ ├── OVM_L1_ERC20_Bridge.ts
│ │ │ ├── OVM_L2_ERC20_Bridge.ts
│ │ │ ├── OptimismMessengerWrapper.ts
│ │ │ ├── Ownable.ts
│ │ │ ├── OwnableUpgradeable.ts
│ │ │ ├── OwnerPausableUpgradeable.ts
│ │ │ ├── PausableUpgradeable.ts
│ │ │ ├── PolygonMessengerWrapper.ts
│ │ │ ├── SaddleLpToken.ts
│ │ │ ├── StakingRewards.ts
│ │ │ ├── StakingRewardsFactory.ts
│ │ │ ├── Swap.ts
│ │ │ ├── SwapUtils.ts
│ │ │ ├── Timelock.ts
│ │ │ ├── UniswapQuoterV2.ts
│ │ │ ├── UniswapV3Pool.ts
│ │ │ ├── WETH9.ts
│ │ │ ├── XDaiMessengerWrapper.ts
│ │ │ ├── common.ts
│ │ │ ├── factories
│ │ │ │ ├── Accounting__factory.ts
│ │ │ │ ├── ArbERC20__factory.ts
│ │ │ │ ├── ArbitrumGlobalInbox__factory.ts
│ │ │ │ ├── ArbitrumMessengerWrapper__factory.ts
│ │ │ │ ├── Arbitrum_L1_ERC20_Bridge__factory.ts
│ │ │ │ ├── Arbitrum_L2_ERC20_Bridge__factory.ts
│ │ │ │ ├── Bridge__factory.ts
│ │ │ │ ├── CCTPMessageTransmitter__factory.ts
│ │ │ │ ├── CCTPTokenMessenger__factory.ts
│ │ │ │ ├── CCTPTokenMinter__factory.ts
│ │ │ │ ├── ERC20Burnable__factory.ts
│ │ │ │ ├── ERC20Mintable__factory.ts
│ │ │ │ ├── ERC20__factory.ts
│ │ │ │ ├── FxBaseChildTunnel__factory.ts
│ │ │ │ ├── FxBaseRootTunnel__factory.ts
│ │ │ │ ├── GovernorAlpha__factory.ts
│ │ │ │ ├── HopBridgeToken__factory.ts
│ │ │ │ ├── Hop__factory.ts
│ │ │ │ ├── IAbs_BaseCrossDomainMessenger__factory.ts
│ │ │ │ ├── IAllowlist__factory.ts
│ │ │ │ ├── IArbSys__factory.ts
│ │ │ │ ├── IArbitraryMessageBridge__factory.ts
│ │ │ │ ├── IBridge__factory.ts
│ │ │ │ ├── ICheckpointManager__factory.ts
│ │ │ │ ├── IERC20__factory.ts
│ │ │ │ ├── IEthERC20Bridge__factory.ts
│ │ │ │ ├── IFlashLoanReceiver__factory.ts
│ │ │ │ ├── IForeignOmniBridge__factory.ts
│ │ │ │ ├── IFxMessageProcessor__factory.ts
│ │ │ │ ├── IFxStateSender__factory.ts
│ │ │ │ ├── IGlobalInbox__factory.ts
│ │ │ │ ├── IInbox__factory.ts
│ │ │ │ ├── IMessageProvider__factory.ts
│ │ │ │ ├── IMessengerWrapper__factory.ts
│ │ │ │ ├── IOVM_BaseCrossDomainMessenger__factory.ts
│ │ │ │ ├── IOVM_L1CrossDomainMessenger__factory.ts
│ │ │ │ ├── IOVM_L2CrossDomainMessenger__factory.ts
│ │ │ │ ├── IOutbox__factory.ts
│ │ │ │ ├── IPolygonFxChild__factory.ts
│ │ │ │ ├── IRootChainManager__factory.ts
│ │ │ │ ├── IStateReceiver__factory.ts
│ │ │ │ ├── IStateSender__factory.ts
│ │ │ │ ├── ISwapFlashLoan__factory.ts
│ │ │ │ ├── ISwapGuarded__factory.ts
│ │ │ │ ├── ISwap__factory.ts
│ │ │ │ ├── IWETH__factory.ts
│ │ │ │ ├── I_L1_PolygonMessenger__factory.ts
│ │ │ │ ├── I_L2_PolygonMessengerProxy__factory.ts
│ │ │ │ ├── L1_ArbitrumMessenger__factory.ts
│ │ │ │ ├── L1_Bridge__factory.ts
│ │ │ │ ├── L1_ERC20_Bridge_Legacy__factory.ts
│ │ │ │ ├── L1_ERC20_Bridge__factory.ts
│ │ │ │ ├── L1_ETH_Bridge__factory.ts
│ │ │ │ ├── L1_HomeAMBNativeToErc20__factory.ts
│ │ │ │ ├── L1_HopCCTPImplementation__factory.ts
│ │ │ │ ├── L1_OptimismMessenger__factory.ts
│ │ │ │ ├── L1_OptimismTokenBridge__factory.ts
│ │ │ │ ├── L1_PolygonFxBaseRootTunnel__factory.ts
│ │ │ │ ├── L1_PolygonMessenger__factory.ts
│ │ │ │ ├── L1_PolygonPosRootChainManager__factory.ts
│ │ │ │ ├── L1_xDaiAMB__factory.ts
│ │ │ │ ├── L1_xDaiForeignOmniBridge__factory.ts
│ │ │ │ ├── L1_xDaiMessenger__factory.ts
│ │ │ │ ├── L2_AmmWrapper__factory.ts
│ │ │ │ ├── L2_ArbitrumBridge__factory.ts
│ │ │ │ ├── L2_BridgeWrapper__factory.ts
│ │ │ │ ├── L2_Bridge__factory.ts
│ │ │ │ ├── L2_HopCCTPImplementation__factory.ts
│ │ │ │ ├── L2_OptimismBridge__factory.ts
│ │ │ │ ├── L2_OptimismTokenBridge__factory.ts
│ │ │ │ ├── L2_PolygonBridge__factory.ts
│ │ │ │ ├── L2_PolygonChildERC20__factory.ts
│ │ │ │ ├── L2_PolygonMessengerProxy__factory.ts
│ │ │ │ ├── L2_xDaiAMB__factory.ts
│ │ │ │ ├── L2_xDaiBridge__factory.ts
│ │ │ │ ├── L2_xDaiToken__factory.ts
│ │ │ │ ├── LPToken__factory.ts
│ │ │ │ ├── MathUtils__factory.ts
│ │ │ │ ├── MessengerWrapper__factory.ts
│ │ │ │ ├── MockERC20__factory.ts
│ │ │ │ ├── MockEthERC20Bridge__factory.ts
│ │ │ │ ├── MockForeignOmniBridge__factory.ts
│ │ │ │ ├── MockFxChild__factory.ts
│ │ │ │ ├── MockFxRoot__factory.ts
│ │ │ │ ├── MockMessenger__factory.ts
│ │ │ │ ├── MockOVM_CrossDomainMessenger__factory.ts
│ │ │ │ ├── MockPolygonMessengerWrapper__factory.ts
│ │ │ │ ├── MockRootChainManager__factory.ts
│ │ │ │ ├── Mock_Accounting__factory.ts
│ │ │ │ ├── Mock_Bridge__factory.ts
│ │ │ │ ├── Mock_L1_CanonicalBridge__factory.ts
│ │ │ │ ├── Mock_L1_ERC20_Bridge__factory.ts
│ │ │ │ ├── Mock_L1_ETH_Bridge__factory.ts
│ │ │ │ ├── Mock_L1_Messenger__factory.ts
│ │ │ │ ├── Mock_L1_PolygonMessenger__factory.ts
│ │ │ │ ├── Mock_L1_xDaiMessenger__factory.ts
│ │ │ │ ├── Mock_L2_ArbitrumBridge__factory.ts
│ │ │ │ ├── Mock_L2_Messenger__factory.ts
│ │ │ │ ├── Mock_L2_OptimismBridge__factory.ts
│ │ │ │ ├── Mock_L2_PolygonBridge__factory.ts
│ │ │ │ ├── Mock_L2_xDaiBridge__factory.ts
│ │ │ │ ├── Multicall3__factory.ts
│ │ │ │ ├── OVM_BaseCrossDomainMessenger__factory.ts
│ │ │ │ ├── OVM_L1_ERC20_Bridge__factory.ts
│ │ │ │ ├── OVM_L2_ERC20_Bridge__factory.ts
│ │ │ │ ├── OptimismMessengerWrapper__factory.ts
│ │ │ │ ├── OwnableUpgradeable__factory.ts
│ │ │ │ ├── Ownable__factory.ts
│ │ │ │ ├── OwnerPausableUpgradeable__factory.ts
│ │ │ │ ├── PausableUpgradeable__factory.ts
│ │ │ │ ├── PolygonMessengerWrapper__factory.ts
│ │ │ │ ├── SaddleLpToken__factory.ts
│ │ │ │ ├── StakingRewardsFactory__factory.ts
│ │ │ │ ├── StakingRewards__factory.ts
│ │ │ │ ├── SwapUtils__factory.ts
│ │ │ │ ├── Swap__factory.ts
│ │ │ │ ├── Timelock__factory.ts
│ │ │ │ ├── UniswapQuoterV2__factory.ts
│ │ │ │ ├── UniswapV3Pool__factory.ts
│ │ │ │ ├── WETH9__factory.ts
│ │ │ │ ├── XDaiMessengerWrapper__factory.ts
│ │ │ │ └── index.ts
│ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── models
│ │ │ ├── Token.ts
│ │ │ └── index.ts
│ │ ├── multicall
│ │ │ ├── Multicall.ts
│ │ │ └── index.ts
│ │ ├── networks
│ │ │ └── index.ts
│ │ ├── priceFeed
│ │ │ ├── PriceFeed.ts
│ │ │ ├── PriceFeedFromS3.ts
│ │ │ ├── index.ts
│ │ │ └── priceFeeds
│ │ │ │ ├── CoinCodex.ts
│ │ │ │ ├── CoinGecko.ts
│ │ │ │ ├── Coinbase.ts
│ │ │ │ ├── Coinpaprika.ts
│ │ │ │ └── S3.ts
│ │ ├── provider
│ │ │ ├── Provider.ts
│ │ │ ├── index.ts
│ │ │ ├── metadata.ts
│ │ │ └── types.ts
│ │ ├── relayerFee
│ │ │ ├── AbstractRelayerFee.ts
│ │ │ ├── ArbitrumRelayerFee.ts
│ │ │ ├── IRelayerFee.ts
│ │ │ ├── LineaRelayerFee.ts
│ │ │ ├── PolygonZkRelayerFee.ts
│ │ │ ├── RelayerFee.ts
│ │ │ └── index.ts
│ │ ├── tokens
│ │ │ ├── assets
│ │ │ │ ├── ARB.ts
│ │ │ │ ├── DAI.ts
│ │ │ │ ├── ETH.ts
│ │ │ │ ├── FRAX.ts
│ │ │ │ ├── GNO.ts
│ │ │ │ ├── HOP.ts
│ │ │ │ ├── MAGIC.ts
│ │ │ │ ├── MATIC.ts
│ │ │ │ ├── OP.ts
│ │ │ │ ├── RPL.ts
│ │ │ │ ├── SNX.ts
│ │ │ │ ├── UNI.ts
│ │ │ │ ├── USDC.ts
│ │ │ │ ├── USDT.ts
│ │ │ │ ├── WBTC.ts
│ │ │ │ ├── XDAI.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── rETH.ts
│ │ │ │ ├── sBTC.ts
│ │ │ │ ├── sETH.ts
│ │ │ │ └── sUSD.ts
│ │ │ ├── index.ts
│ │ │ ├── tokens.ts
│ │ │ ├── types.ts
│ │ │ └── utils
│ │ │ │ ├── getTokenDecimals.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── isValidTokenSymbol.ts
│ │ ├── types.ts
│ │ ├── utils
│ │ │ ├── WithdrawalProof.ts
│ │ │ ├── fetchJsonOrThrow.ts
│ │ │ ├── getBlockNumberFromDate.ts
│ │ │ ├── getCctpDomain.ts
│ │ │ ├── getChainSlugFromName.ts
│ │ │ ├── getLpFeeBps.ts
│ │ │ ├── getProviderFromUrl.ts
│ │ │ ├── getProviderWithFallbacks.ts
│ │ │ ├── getSubgraphChains.ts
│ │ │ ├── getSubgraphUrl.ts
│ │ │ ├── getUrlFromProvider.ts
│ │ │ ├── index.ts
│ │ │ ├── promiseQueue.ts
│ │ │ ├── promiseTimeout.ts
│ │ │ ├── rateLimitRetry.ts
│ │ │ ├── serializeQueryParams.ts
│ │ │ ├── shiftBNDecimals.ts
│ │ │ ├── uniswap.ts
│ │ │ └── wait.ts
│ │ └── watchers
│ │ │ ├── BaseWatcher.ts
│ │ │ ├── L1ToL2Watcher.ts
│ │ │ ├── L2ToL1Watcher.ts
│ │ │ ├── L2ToL2Watcher.ts
│ │ │ ├── Watcher.ts
│ │ │ └── makeRequest.ts
│ ├── test
│ │ ├── addresses.test.ts
│ │ ├── provider
│ │ │ └── provider.test.ts
│ │ ├── sdk.test.ts
│ │ └── utils
│ │ │ ├── WithdrawalProof.test.ts
│ │ │ └── uniswap.test.ts
│ ├── tsconfig.cjs.json
│ ├── tsconfig.esm.json
│ └── tsconfig.json
├── stats-worker
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── eslint.config.mjs
│ ├── jest.config.mjs
│ ├── metabase_queries
│ │ ├── dai_1_day_apr.sql
│ │ ├── dai_30_day_apr.sql
│ │ ├── dai_7_day_apr.sql
│ │ ├── dai_chart.sql
│ │ ├── dai_table.sql
│ │ ├── dai_total_apr.sql
│ │ ├── eth_1_day_apr.sql
│ │ ├── eth_30_day_apr.sql
│ │ ├── eth_7_day_apr.sql
│ │ ├── eth_chart.sql
│ │ ├── eth_table.sql
│ │ ├── eth_total.sql
│ │ ├── eth_total_apr.sql
│ │ ├── usdc_1_day_apr.sql
│ │ ├── usdc_30_day_apr.sql
│ │ ├── usdc_7_day_apr.sql
│ │ ├── usdc_chart.sql
│ │ ├── usdc_table.sql
│ │ ├── usdc_total.sql
│ │ ├── usdc_total_apr.sql
│ │ ├── usdt_1_day_apr.sql
│ │ ├── usdt_30_day_apr.sql
│ │ ├── usdt_7_day_apr.sql
│ │ ├── usdt_chart.sql
│ │ ├── usdt_table.sql
│ │ ├── usdt_total.sql
│ │ └── usdt_total_apr.sql
│ ├── package.json
│ ├── scripts
│ │ ├── download_metabase_queries.js
│ │ └── downloaded_dashboard_queries
│ │ │ ├── Bonder Stats
│ │ │ ├── DAI
│ │ │ ├── DAI Bonder APR - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder APR 30 Day - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder APR 7 Day - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Balances Table - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Fees - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Profit - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Tx Fees Spent - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Tx Fees Spent Table - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Tx Fees Spent USD - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── ETH
│ │ │ ├── ETH Bonder APR - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder APR 30 Day - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder APR 7 Day - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Balances Table - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Fees - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Profit - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Tx Fees Spent - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Tx Fees Spent Table - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Tx Fees Spent USD - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── MATIC
│ │ │ ├── MATIC Bonder APR - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder APR 30 Day - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder APR 7 Day - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder Balances Table - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder Fees - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder Profit - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder Tx Fees Spent - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder Tx Fees Spent Table - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── MATIC Bonder Tx Spent USD - 0xd8781ca9163e9f132a4d8392332e64115688013a
│ │ │ ├── USDC
│ │ │ ├── USDC Bonder APR - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder APR 30 Day - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder APR 7 Day - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Balances Table - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Fees - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Profit - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Tx Fees Spent - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Tx Fees Spent Table - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Tx Fees Spent USD - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDT Bonder APR - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder APR 30 Day - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder APR 7 Day - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Balances Table - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Fees - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Profit - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Tx Fees Spent - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Tx Fees Spent Table - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ └── USDT Bonder Tx Fees Spent USD - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── DAI Bonder Stats
│ │ │ ├── DAI Bonder APR - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder APR 1 Day - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder APR 30 Day - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder APR 7 Day - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── DAI Bonder Balances Table - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ └── DAI Bonder Profit - 0x305933e09871D4043b5036e09af794FACB3f6170
│ │ │ ├── ETH Bonder Stats
│ │ │ ├── ETH Bonder APR - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder APR 1 Day - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder APR 30 Day - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder APR 7 Day - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── ETH Bonder Balances Table - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ └── ETH Bonder Profit - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564
│ │ │ ├── TVL Stats
│ │ │ ├── Arbitrum
│ │ │ ├── Arbitrum DAI Historical TVL
│ │ │ ├── Arbitrum ETH Historical TVL
│ │ │ ├── Arbitrum TVL
│ │ │ ├── Arbitrum Token TVL
│ │ │ ├── Arbitrum USDC Historical TVL
│ │ │ ├── Arbitrum USDT Historical TVL
│ │ │ ├── Chain TVL
│ │ │ ├── Chain Token TVL Bar Chart
│ │ │ ├── Ethereum
│ │ │ ├── Ethereum DAI Historical TVL
│ │ │ ├── Ethereum ETH Historical TVL
│ │ │ ├── Ethereum MATIC Historical TVL
│ │ │ ├── Ethereum TVL
│ │ │ ├── Ethereum Token TVL
│ │ │ ├── Ethereum USDC Historical TVL
│ │ │ ├── Ethereum USDT Historical TVL
│ │ │ ├── Gnosis
│ │ │ ├── GnosisChain DAI Historical TVL
│ │ │ ├── GnosisChain ETH Historical TVL
│ │ │ ├── GnosisChain MATIC Historical TVL
│ │ │ ├── GnosisChain TVL
│ │ │ ├── GnosisChain Token TVL
│ │ │ ├── GnosisChain USDC Historical TVL
│ │ │ ├── GnosisChain USDT Historical TVL
│ │ │ ├── Optimism
│ │ │ ├── Optimism DAI Historical TVL
│ │ │ ├── Optimism ETH Historical TVL
│ │ │ ├── Optimism TVL
│ │ │ ├── Optimism Token TVL
│ │ │ ├── Optimism USDC Historical TVL
│ │ │ ├── Optimism USDT Historical TVL
│ │ │ ├── Polygon
│ │ │ ├── Polygon DAI Historical TVL
│ │ │ ├── Polygon ETH Historical TVL
│ │ │ ├── Polygon MATIC Historical TVL
│ │ │ ├── Polygon TVL
│ │ │ ├── Polygon Token TVL
│ │ │ ├── Polygon USDC Historical TVL
│ │ │ ├── Polygon USDT Historical TVL
│ │ │ ├── Token TVL
│ │ │ └── Total TVL
│ │ │ ├── Transfer Stats (Arbitrum Odyssey)
│ │ │ ├── Accounts Bridging ETH into Arbitrum (Arbitrum Odyssey Week)
│ │ │ ├── Daily Spent on Bonder Fees by Source Chain (Arbitrum Odyssey Week)
│ │ │ ├── Daily Transfer Count by Source Chain (Arbitrum Odyssey Week)
│ │ │ ├── Daily Transfers into Arbitrum (Arbitrum Odyssey Week)
│ │ │ ├── Daily Volume USD (Arbitrum Odyssey Week)
│ │ │ ├── Daily Volume by Source Chain (Arbitrum Odyssey Week)
│ │ │ ├── Daily Volume by Token (Arbitrum Odyssey Week)
│ │ │ ├── ETH Total Volume (Arbitrum Odyssey Week)
│ │ │ ├── ETH Total Volume USD (Arbitrum Odyssey Week)
│ │ │ ├── ETH Total Volume from Ethereum to Arbitrum (Arbitrum Odyssey Week)
│ │ │ ├── ETH Total Volume into Arbitrum (Arbitrum Odyssey Week)
│ │ │ ├── ETH Total Volume leaving Arbitrum (Arbitrum Odyssey Week)
│ │ │ ├── ETH Transfers Daily USD Total
│ │ │ ├── ETH Transfers Daily USD Total (Arbitrum Odyssey Week)
│ │ │ ├── Lifetime Transfers Count
│ │ │ ├── Spent Daily on Bonder Fees USD (Arbitrum Odyssey Week)
│ │ │ ├── Spent on Bonder Fees USD (Arbitrum Odyssey Week)
│ │ │ ├── Total Volume USD (Arbitrum Odyssey Week)
│ │ │ ├── Transfers Count (Arbitrum Odyssey Week)
│ │ │ ├── Transfers Count by Token (Arbitrum Odyssey Week)
│ │ │ ├── Transfers Daily Count
│ │ │ ├── Transfers Daily Count (Arbitrum Odyssey Week)
│ │ │ ├── Transfers Hourly Count (Arbitrum Odyssey Week)
│ │ │ └── Transfers into Arbitrum Count (Arbitrum Odyssey Week)
│ │ │ ├── Transfer Stats - Count
│ │ │ ├── Daily Transfers Count by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count in Last 7 Days
│ │ │ ├── Lifetime Transfers Count
│ │ │ ├── Lifetime Transfers Count by Source Chain
│ │ │ ├── Lifetime Transfers Count by Token
│ │ │ ├── Monthly Transfers Count
│ │ │ └── Weekly Transfers Count in Last 6 Months
│ │ │ ├── Transfer Stats - Cumulative Volume
│ │ │ ├── Transfers Cumulative Volume USD
│ │ │ ├── Transfers Cumulative Volume USD By Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain from MetaMask Portfolio
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain from Socket
│ │ │ ├── Transfers Cumulative Volume USD From Arbitrum to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Ethereum to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Gnosis Chain to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Optimism to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Polygon to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token
│ │ │ ├── Transfers Cumulative Volume USD by Token by Arbitrum as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Arbitrum as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Ethereum as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Ethereum as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Gnosis Chain as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Gnosis Chain as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Optimism as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Optimism as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Polygon as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Polygon as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token from MetaMask Portfolio
│ │ │ └── Transfers Cumulative Volume USD by Token from Socket
│ │ │ ├── Transfer Stats - Daily Volume
│ │ │ ├── Daily Transfers Count by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Sum Chain Daily Volume Last 7 Days
│ │ │ ├── Transfers Daily Volume USD Historical Bar Chart
│ │ │ ├── Transfers Daily Volume USD by Arbitrum as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Ethereum as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Gnosis Chain as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Optimism as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Polygon as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by SNX Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by SNX Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token in Last 7 Days
│ │ │ └── Transfers Daily Volume USD in Last 7 Days
│ │ │ ├── Transfer Stats - Integration Partners
│ │ │ ├── Daily Volume USD by Integration Partner And Hop Bar Chart
│ │ │ ├── Daily Volume USD by Integration Partner Bar Chart
│ │ │ ├── Daily Volume USD by Source Chain from LI.FI
│ │ │ ├── Daily Volume USD by Source Chain from MetaMask Portfolio
│ │ │ ├── Daily Volume USD by Source Chain from Socket
│ │ │ ├── Daily Volume USD by Token from MetaMask Portfolio
│ │ │ ├── Daily Volume USD by Token from Socket
│ │ │ ├── Transfers Cumulative Volume USD By Integration Partners And Hop Pie Chart
│ │ │ ├── Transfers Cumulative Volume USD By Integration Partners Pie Chart
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain from MetaMask Portfolio
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain from Socket
│ │ │ ├── Transfers Cumulative Volume USD by Token from MetaMask Portfolio
│ │ │ ├── Transfers Cumulative Volume USD by Token from Socket
│ │ │ ├── Transfers Daily Volume USD from MetaMask Portfolio in Last 7 Days
│ │ │ └── Transfers Daily Volume USD from Socket in Last 7 Days
│ │ │ ├── Transfer Stats - Monthly Volume
│ │ │ ├── Transfers Monthly Volume USD
│ │ │ ├── Transfers Monthly Volume USD by DAI Token
│ │ │ ├── Transfers Monthly Volume USD by ETH Token
│ │ │ ├── Transfers Monthly Volume USD by HOP Token
│ │ │ ├── Transfers Monthly Volume USD by MATIC Token
│ │ │ ├── Transfers Monthly Volume USD by SNX Token
│ │ │ ├── Transfers Monthly Volume USD by USDC Token
│ │ │ └── Transfers Monthly Volume USD by USDT Token
│ │ │ ├── Transfer Stats - Weekly Volume
│ │ │ ├── Transfers Weekly Volume USD by DAI Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by ETH Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by HOP Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by MATIC Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by SNX Token Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by USDC Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by USDT Token in Last 6 Months
│ │ │ └── Transfers Weekly Volume USD in Last 6 Months
│ │ │ ├── Transfer Stats
│ │ │ ├── Daily Transfers Count by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Daily Transfers Count in Last 7 Days
│ │ │ ├── Daily Volume USD by Source Chain from LI.FI
│ │ │ ├── Daily Volume USD by Source Chain from MetaMask Portfolio
│ │ │ ├── Daily Volume USD by Source Chain from Socket
│ │ │ ├── Daily Volume USD by Token from MetaMask Portfolio
│ │ │ ├── Daily Volume USD by Token from Socket
│ │ │ ├── Lifetime Transfers Count
│ │ │ ├── Lifetime Transfers Count by Source Chain
│ │ │ ├── Lifetime Transfers Count by Token
│ │ │ ├── Monthly Transfers Count
│ │ │ ├── Transfer Cumulative Volume USD Chart
│ │ │ ├── Transfers Cumulative Volume USD
│ │ │ ├── Transfers Cumulative Volume USD By Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain from MetaMask Portfolio
│ │ │ ├── Transfers Cumulative Volume USD By Source Chain from Socket
│ │ │ ├── Transfers Cumulative Volume USD From Arbitrum to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Ethereum to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Gnosis Chain to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Optimism to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD From Polygon to Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token
│ │ │ ├── Transfers Cumulative Volume USD by Token by Arbitrum as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Arbitrum as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Ethereum as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Ethereum as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Gnosis Chain as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Gnosis Chain as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Optimism as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Optimism as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Polygon as Destination Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token by Polygon as Source Chain
│ │ │ ├── Transfers Cumulative Volume USD by Token from MetaMask Portfolio
│ │ │ ├── Transfers Cumulative Volume USD by Token from Socket
│ │ │ ├── Transfers Daily Volume USD by Arbitrum as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by DAI Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by ETH Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Ethereum as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Gnosis Chain as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by HOP Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by MATIC Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Optimism as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Polygon as Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by SNX Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by SNX Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by SNX Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Source Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by Token By Arbitrum as Destination Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Arbitrum as Source Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Ethereum as Destination Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Ethereum as Source Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Gnosis Chain as Source Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Gnosis as Chain Destination Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Optimism as Destination Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Optimism as Source Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Polygon as Destination Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token By Polygon as Source Chain in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token in Last 6 Months
│ │ │ ├── Transfers Daily Volume USD by Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDC Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Arbitrum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Ethereum as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Gnosis Chain as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Optimism as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token by Polygon as Source Chain to Destination Chain in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD by USDT Token in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD from MetaMask Portfolio in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD from Socket in Last 7 Days
│ │ │ ├── Transfers Daily Volume USD in Last 7 Days
│ │ │ ├── Transfers Monthly Volume USD
│ │ │ ├── Transfers Monthly Volume USD by DAI Token
│ │ │ ├── Transfers Monthly Volume USD by ETH Token
│ │ │ ├── Transfers Monthly Volume USD by HOP Token
│ │ │ ├── Transfers Monthly Volume USD by MATIC Token
│ │ │ ├── Transfers Monthly Volume USD by SNX Token
│ │ │ ├── Transfers Monthly Volume USD by USDC Token
│ │ │ ├── Transfers Monthly Volume USD by USDT Token
│ │ │ ├── Transfers Weekly Volume USD by DAI Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by ETH Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by HOP Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by MATIC Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by USDC Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD by USDT Token in Last 6 Months
│ │ │ ├── Transfers Weekly Volume USD in Last 6 Months
│ │ │ └── Weekly Transfers Count in Last 6 Months
│ │ │ ├── USDC Bonder Stats
│ │ │ ├── USDC Bonder APR - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder APR 1 Day - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder APR 30 Day - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder APR 7 Day - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDC Bonder Balances Table - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ └── USDC Bonder Profit - 0xa6a688F107851131F0E1dce493EbBebFAf99203e
│ │ │ ├── USDT Bonder Stats
│ │ │ ├── USDT Bonder APR - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder APR 1 Day - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder APR 30 Day - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder APR 7 Day - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Balances Table - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ ├── USDT Bonder Profit - 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ └── USDT Bonder Profit 0x15ec4512516d980090050fe101de21832c8edfee
│ │ │ └── Volume Stats
│ │ │ ├── Arbitrum
│ │ │ ├── Arbitrum Sum Token Daily Volume Last 7 Days
│ │ │ ├── Arbitrum Sum Weekly Volume
│ │ │ ├── Arbitrum Token Cumulative Volume
│ │ │ ├── Chain Cumulative Volume
│ │ │ ├── Cumulative
│ │ │ ├── Cumulative Volume
│ │ │ ├── Cumulative Volume Chart
│ │ │ ├── Daily
│ │ │ ├── ETH Sum Daily Volume Last 7 Days
│ │ │ ├── ETH Sum Weekly Volume
│ │ │ ├── Ethereum
│ │ │ ├── Ethereum Sum Token Daily Volume Last 7 Days
│ │ │ ├── Ethereum Sum Weekly Volume
│ │ │ ├── Ethereum Token Cumulative Volume
│ │ │ ├── Gnosis
│ │ │ ├── GnosisChain Sum Token Daily Volume Last 7 Days
│ │ │ ├── GnosisChain Sum Weekly Volume
│ │ │ ├── GnosisChain Token Cumulative Volume
│ │ │ ├── Historical Token Daily Volume
│ │ │ ├── Monthly
│ │ │ ├── Optimism
│ │ │ ├── Optimism Sum Token Daily Volume Last 7 Days
│ │ │ ├── Optimism Sum Weekly Volume
│ │ │ ├── Optimism Token Cumulative Volume
│ │ │ ├── Polygon
│ │ │ ├── Polygon Sum Token Daily Volume Last 7 Days
│ │ │ ├── Polygon Sum Weekly Volume
│ │ │ ├── Polygon Token Cumulative Volume
│ │ │ ├── Sum Chain Daily Volume Last 7 Days
│ │ │ ├── Sum Daily Volume Last 7 Days
│ │ │ ├── Sum Monthly Volume
│ │ │ ├── Sum Token Daily Volume Last 7 Days
│ │ │ ├── Sum Weekly Volume
│ │ │ ├── Token Cumulative Volume
│ │ │ └── Weekly
│ ├── src
│ │ ├── AmmStats.ts
│ │ ├── BonderStats.ts
│ │ ├── Db.ts
│ │ ├── IpfsUpload.ts
│ │ ├── PriceFeed.ts
│ │ ├── PriceStats.ts
│ │ ├── S3Upload.ts
│ │ ├── TvlStats.ts
│ │ ├── VolumeStats.ts
│ │ ├── YieldStats.ts
│ │ ├── config.ts
│ │ ├── constants.ts
│ │ ├── data
│ │ │ ├── arbitrum_alises.json
│ │ │ ├── bonder_profits.json
│ │ │ └── weth_addresses.json
│ │ ├── index.ts
│ │ ├── utils
│ │ │ ├── getBlockNumberFromDate.ts
│ │ │ ├── getDefaultRpcProvider.ts
│ │ │ ├── getEtherscanApiUrl.ts
│ │ │ ├── getSubgraphUrl.ts
│ │ │ ├── nearestDate.ts
│ │ │ ├── queryFetch.ts
│ │ │ ├── sumAmounts.ts
│ │ │ └── wait.ts
│ │ └── worker.ts
│ ├── test
│ │ └── fees.test.ts
│ └── tsconfig.json
├── v2-explorer-backend
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── docker-compose.yml
│ ├── eslint.config.mjs
│ ├── jest.config.mjs
│ ├── package.json
│ ├── scripts
│ │ └── postgres_dev.sh
│ ├── src
│ │ ├── cli
│ │ │ ├── cli.ts
│ │ │ ├── index.ts
│ │ │ ├── shared
│ │ │ │ └── index.ts
│ │ │ └── worker.ts
│ │ ├── config
│ │ │ ├── config.ts
│ │ │ └── index.ts
│ │ ├── controller
│ │ │ ├── Controller.ts
│ │ │ └── index.ts
│ │ ├── db
│ │ │ ├── BaseDb.ts
│ │ │ ├── db.ts
│ │ │ ├── index.ts
│ │ │ └── syncStateDb
│ │ │ │ ├── SyncStateDb.ts
│ │ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── indexer
│ │ │ ├── index.ts
│ │ │ └── indexer.ts
│ │ ├── pgDb
│ │ │ ├── events
│ │ │ │ ├── BaseType.ts
│ │ │ │ ├── BundleCommitted.ts
│ │ │ │ ├── BundleForwarded.ts
│ │ │ │ ├── BundleReceived.ts
│ │ │ │ ├── BundleSet.ts
│ │ │ │ ├── FeesSentToHub.ts
│ │ │ │ ├── MessageBundled.ts
│ │ │ │ ├── MessageExecuted.ts
│ │ │ │ ├── MessageSent.ts
│ │ │ │ └── context.ts
│ │ │ ├── index.ts
│ │ │ └── pgDb.ts
│ │ ├── server
│ │ │ ├── index.ts
│ │ │ ├── rateLimit.ts
│ │ │ ├── responseCache.ts
│ │ │ └── server.ts
│ │ ├── utils
│ │ │ ├── getEnvFilePath.ts
│ │ │ ├── getTransactionHashExplorerUrl.ts
│ │ │ ├── truncateString.ts
│ │ │ └── wait.ts
│ │ └── worker
│ │ │ ├── index.ts
│ │ │ └── worker.ts
│ ├── test
│ │ ├── cli.test.ts
│ │ ├── controller.test.ts
│ │ ├── db.test.ts
│ │ ├── indexer.test.ts
│ │ └── server.test.ts
│ └── tsconfig.json
├── v2-explorer-frontend
│ ├── .gitignore
│ ├── .nvmrc
│ ├── LICENSE
│ ├── README.md
│ ├── eslint.config.mjs
│ ├── index.html
│ ├── netlify.toml
│ ├── package.json
│ ├── public
│ │ ├── _headers
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── logo192.png
│ │ ├── logo512.png
│ │ ├── manifest.json
│ │ └── robots.txt
│ ├── src
│ │ ├── App.css
│ │ ├── App.tsx
│ │ ├── assets
│ │ │ └── circles-bg.svg
│ │ ├── components
│ │ │ ├── ChainSelect.tsx
│ │ │ ├── ExplorerEvents.tsx
│ │ │ ├── Footer.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── SiteWrapper.tsx
│ │ │ ├── Table.tsx
│ │ │ └── events
│ │ │ │ ├── BundleCommittedEvents.tsx
│ │ │ │ ├── BundleForwardedEvents.tsx
│ │ │ │ ├── BundleReceivedEvents.tsx
│ │ │ │ ├── BundleSetEvents.tsx
│ │ │ │ ├── MessageBundledEvents.tsx
│ │ │ │ ├── MessageExecutedEvents.tsx
│ │ │ │ └── MessageSentEvents.tsx
│ │ ├── config.ts
│ │ ├── hooks
│ │ │ ├── useEvents.ts
│ │ │ └── useQueryParams.tsx
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── main.tsx
│ │ ├── pages
│ │ │ ├── Details.tsx
│ │ │ ├── Events.tsx
│ │ │ ├── Main.tsx
│ │ │ └── NotFound.tsx
│ │ ├── react-app-env.d.ts
│ │ ├── reportWebVitals.ts
│ │ ├── setupTests.ts
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── v2-hop-node
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── LICENSE
│ ├── README.md
│ ├── eslint.config.mjs
│ ├── jest.config.mjs
│ ├── package.json
│ ├── src
│ │ ├── cctp
│ │ │ ├── Message.ts
│ │ │ ├── MessageDataProvider.ts
│ │ │ ├── MessageIndexer.ts
│ │ │ ├── MessageStateMachine.ts
│ │ │ ├── sdk
│ │ │ │ ├── MessageSDK.ts
│ │ │ │ └── utils.ts
│ │ │ └── types.ts
│ │ ├── chains
│ │ │ ├── AbstractChainBridge.ts
│ │ │ ├── Chains
│ │ │ │ ├── arbitrum
│ │ │ │ │ ├── ArbitrumAddresses.ts
│ │ │ │ │ ├── ArbitrumBridge.ts
│ │ │ │ │ ├── ArbitrumFinalityService.ts
│ │ │ │ │ ├── ArbitrumMessageService.ts
│ │ │ │ │ └── inclusion
│ │ │ │ │ │ └── ArbitrumInclusionService.ts
│ │ │ │ ├── gnosis
│ │ │ │ │ ├── GnosisAddresses.ts
│ │ │ │ │ ├── GnosisBridge.ts
│ │ │ │ │ ├── GnosisFinalityService.ts
│ │ │ │ │ └── GnosisMessageService.ts
│ │ │ │ ├── linea
│ │ │ │ │ ├── LineaBridge.ts
│ │ │ │ │ ├── LineaFinalityService.ts
│ │ │ │ │ └── LineaMessageService.ts
│ │ │ │ ├── optimism
│ │ │ │ │ ├── OptimismAddresses.ts
│ │ │ │ │ ├── OptimismBridge.ts
│ │ │ │ │ ├── OptimismFinalityService.ts
│ │ │ │ │ ├── OptimismMessageService.ts
│ │ │ │ │ └── inclusion
│ │ │ │ │ │ ├── AbstractOptimismInclusionService.ts
│ │ │ │ │ │ ├── AlchemyInclusionService.ts
│ │ │ │ │ │ ├── Derive.ts
│ │ │ │ │ │ └── JsonRpcInclusionService.ts
│ │ │ │ ├── polygon
│ │ │ │ │ ├── PolygonBridge.ts
│ │ │ │ │ ├── PolygonFinalityService.ts
│ │ │ │ │ └── PolygonMessageService.ts
│ │ │ │ ├── polygonzk
│ │ │ │ │ ├── PolygonZkBridge.ts
│ │ │ │ │ ├── PolygonZkFinalityService.ts
│ │ │ │ │ └── PolygonZkMessageService.ts
│ │ │ │ ├── scroll
│ │ │ │ │ ├── ScrollBridge.ts
│ │ │ │ │ ├── ScrollFinalityService.ts
│ │ │ │ │ └── ScrollMessageService.ts
│ │ │ │ └── zksync
│ │ │ │ │ ├── ZkSyncBridge.ts
│ │ │ │ │ ├── ZkSyncFinalityService.ts
│ │ │ │ │ └── ZkSyncMessageService.ts
│ │ │ ├── Factories
│ │ │ │ └── ChainBridgeFactory.ts
│ │ │ ├── IChainBridge.ts
│ │ │ ├── Services
│ │ │ │ ├── AbstractFinalityService.ts
│ │ │ │ ├── AbstractInclusionService.ts
│ │ │ │ ├── AbstractMessageService.ts
│ │ │ │ ├── AbstractService.ts
│ │ │ │ └── CacheService.ts
│ │ │ ├── getChainBridge.ts
│ │ │ └── index.ts
│ │ ├── cli
│ │ │ ├── cctp
│ │ │ │ ├── cctp.ts
│ │ │ │ ├── cctpDBDump.ts
│ │ │ │ ├── relayCCTP.ts
│ │ │ │ ├── unrelayedCCTPMessages.ts
│ │ │ │ └── utils.ts
│ │ │ ├── cli.ts
│ │ │ ├── hopNode.ts
│ │ │ ├── index.ts
│ │ │ └── shared
│ │ │ │ ├── art.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── shared.ts
│ │ ├── config
│ │ │ ├── ConfigManager.ts
│ │ │ ├── configs
│ │ │ │ ├── SharedConfig.ts
│ │ │ │ └── SignerConfig.ts
│ │ │ ├── constants.ts
│ │ │ ├── index.ts
│ │ │ ├── types.ts
│ │ │ └── utils.ts
│ │ ├── constants
│ │ │ ├── constants.ts
│ │ │ ├── index.ts
│ │ │ └── utils.ts
│ │ ├── data-provider
│ │ │ ├── DataProvider.ts
│ │ │ └── IDataProvider.ts
│ │ ├── db
│ │ │ ├── DB.ts
│ │ │ ├── OnchainEventIndexerDB.ts
│ │ │ ├── StateMachineDB.ts
│ │ │ ├── TxRelayDB.ts
│ │ │ ├── constants.ts
│ │ │ └── utils.ts
│ │ ├── finality
│ │ │ ├── FinalityService.ts
│ │ │ ├── IFinalityService.ts
│ │ │ ├── index.ts
│ │ │ └── strategies
│ │ │ │ ├── FinalityStrategy.ts
│ │ │ │ ├── IFinalityStrategy.ts
│ │ │ │ ├── bonder
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── collateralized
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── default
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── threshold
│ │ │ │ ├── ArbitrumStrategy.ts
│ │ │ │ ├── EthereumStrategy.ts
│ │ │ │ ├── GnosisStrategy.ts
│ │ │ │ ├── LineaStrategy.ts
│ │ │ │ ├── OptimismStrategy.ts
│ │ │ │ ├── PolygonStrategy.ts
│ │ │ │ ├── PolygonZkStrategy.ts
│ │ │ │ └── index.ts
│ │ ├── gasboost
│ │ │ ├── GasBoostSigner.ts
│ │ │ ├── GasBoostTransaction.ts
│ │ │ ├── GasBoostTransactionFactory.ts
│ │ │ ├── MemoryStore.ts
│ │ │ ├── Store.ts
│ │ │ ├── constants.ts
│ │ │ └── index.ts
│ │ ├── indexer
│ │ │ ├── IOnchainEventIndexer.ts
│ │ │ ├── OnchainEventIndexer.ts
│ │ │ ├── constants.ts
│ │ │ └── utils.ts
│ │ ├── keystore
│ │ │ ├── entropyToMnemonic.ts
│ │ │ ├── index.ts
│ │ │ └── keystore.ts
│ │ ├── logger
│ │ │ ├── Logger.ts
│ │ │ └── index.ts
│ │ ├── provider
│ │ │ ├── index.ts
│ │ │ └── provider.ts
│ │ ├── state-machine
│ │ │ ├── IStateMachine.ts
│ │ │ ├── StateMachine.ts
│ │ │ └── utils.ts
│ │ ├── types
│ │ │ ├── error.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── utils
│ │ │ ├── bigNumberMax.ts
│ │ │ ├── bigNumberMin.ts
│ │ │ ├── getBumpedBN.ts
│ │ │ ├── getBumpedGasPrice.ts
│ │ │ ├── getRpcProvider.ts
│ │ │ ├── getRpcProviderFromUrl.ts
│ │ │ ├── getRpcRootProviderName.ts
│ │ │ ├── getRpcUrlFromProvider.ts
│ │ │ ├── getTxOverrides.ts
│ │ │ ├── poll.ts
│ │ │ ├── promiseTimeout.ts
│ │ │ ├── rateLimitRetry.ts
│ │ │ └── wait.ts
│ │ └── wallets
│ │ │ ├── index.ts
│ │ │ └── wallets.ts
│ ├── test
│ │ ├── cctp.test.ts
│ │ └── utils
│ │ │ └── expectDefined.ts
│ └── tsconfig.json
├── v2-sdk-demo
│ ├── .gitignore
│ └── README.md
└── v2-sdk
│ ├── .gitignore
│ └── README.md
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── tsconfig.eslint.json
└── tsconfig.json
/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | Dockerfile
3 | *.env
4 | packages/explorer-backend/scripts/pgdata
5 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | node .husky/check-npmignore.mjs
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | # Pins pacakges by default
2 | save-prefix=''
3 |
4 | # Remove all ethersproject when ethers is updated
5 | public-hoist-pattern[]=@ethersproject/*
6 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 20.12.2
2 |
--------------------------------------------------------------------------------
/jest.config.base.mjs:
--------------------------------------------------------------------------------
1 | export default {
2 | roots: ['test'],
3 | transform: {
4 | '^.+\\.tsx?$': ['ts-jest']
5 | },
6 | bail: 1,
7 | verbose: true
8 | }
9 |
--------------------------------------------------------------------------------
/ops/README.md:
--------------------------------------------------------------------------------
1 | # Ops
2 |
3 | Various operational packages
4 |
--------------------------------------------------------------------------------
/ops/webhooks/run_webhook_server.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | /usr/local/bin/gws -port=4665 -method=POST -path=/postreceive -secret=$WEBHOOK_SECRET -command=$(pwd)/webhook_postreceive.sh
4 |
--------------------------------------------------------------------------------
/ops/webhooks/test_webhook_server.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | mock_response='{"payload":{"reponame":"explorer","branch":"production-backend","build_parameters":{"CIRCLE_JOB":""},"outcome":"success","build_url":"https://app.circleci.com/jobs/github/hop-protocol/explorer/1"}}'
4 |
5 | curl -X POST -H "X-Secret: $WEBHOOK_SECRET" -d $mock_response http://localhost:4665/postreceive
6 |
--------------------------------------------------------------------------------
/packages/api/.dockerignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/api/.dockerignore
--------------------------------------------------------------------------------
/packages/api/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | *.env
3 | dist
4 | *.log
5 | yarn.lock
6 | .npmignore
--------------------------------------------------------------------------------
/packages/api/bench/bench.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #HOST="https://api.hop.exchange"
4 | HOST="http://localhost:8000"
5 | PATH="/v1/quote?amount=1000000&token=USDC&fromChain=polygon&toChain=gnosis&slippage=0.5"
6 | #PATH="/health"
7 | URL="$HOST$PATH"
8 |
9 | /bin/wrk2 -t5 -c200 -d30s -R2000 -s payload.lua "$URL"
10 |
--------------------------------------------------------------------------------
/packages/api/ci/package_check.sh:
--------------------------------------------------------------------------------
1 | #/bin/env bash
2 |
3 | curl -s "https://registry.npmjs.org/@hop-protocol/sdk/latest" | jq '.version' > /tmp/sdk1.txt
4 | cat package.json | jq '.dependencies."@hop-protocol/sdk"' > /tmp/sdk2.txt
5 | diff /tmp/sdk1.txt /tmp/sdk2.txt || sleep 180
6 |
--------------------------------------------------------------------------------
/packages/api/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/api/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseESMConfig from '../../jest.config.esm.mjs'
2 | export default baseESMConfig
3 |
--------------------------------------------------------------------------------
/packages/api/src/index.ts:
--------------------------------------------------------------------------------
1 | import './server.js'
2 |
--------------------------------------------------------------------------------
/packages/api/test/server.test.ts:
--------------------------------------------------------------------------------
1 | describe('test', () => {
2 | it('test', () => {
3 | // TODO
4 | })
5 | })
6 |
--------------------------------------------------------------------------------
/packages/api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./dist"
6 | },
7 | "include": [
8 | "src"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/explorer-backend/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | Dockerfile
3 | *.env
4 | pgdata
5 |
--------------------------------------------------------------------------------
/packages/explorer-backend/.gitignore:
--------------------------------------------------------------------------------
1 | #public
2 | node_modules
3 | dist
4 | *.env
5 | *.db
6 | *.db-journal
7 | pgdata
8 | docker_compose/
9 | .npmignore
--------------------------------------------------------------------------------
/packages/explorer-backend/.node-version:
--------------------------------------------------------------------------------
1 | 16
2 |
--------------------------------------------------------------------------------
/packages/explorer-backend/.nvmrc:
--------------------------------------------------------------------------------
1 | 16
2 |
--------------------------------------------------------------------------------
/packages/explorer-backend/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/explorer-backend/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseESMConfig from '../../jest.config.esm.mjs'
2 | export default baseESMConfig
3 |
--------------------------------------------------------------------------------
/packages/explorer-backend/scripts/loadtest/bench.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if ! command -v wrk2 >/dev/null 2>&1; then
4 | if [ -f "/etc/arch-release" ]; then
5 | yay -S wrk2-git
6 | fi
7 | fi
8 |
9 | wrk2 -t5 -c200 -d30s -R2000 -s payload.lua "https://explorer-api.hop.exchange/v1/transfers?perPage=100&startDate=2022-06-01&endDate=2022-06-05"
10 |
--------------------------------------------------------------------------------
/packages/explorer-backend/scripts/loadtest/payload.lua:
--------------------------------------------------------------------------------
1 | wrk.method = "GET"
2 | wrk.headers["Accept"] = "application/json"
3 |
4 | logfile = io.open("wrk.log", "w")
5 |
6 | response = function(status, header, body)
7 | str = "status:" .. status .. "\n" .. body .. "\n-------------------------------------------------\n"
8 | print(str)
9 | logfile:write(str);
10 | end
11 |
--------------------------------------------------------------------------------
/packages/explorer-backend/scripts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "scripts",
3 | "version": "1.0.0",
4 | "description": "",
5 | "license": "ISC",
6 | "author": "",
7 | "type": "commonjs",
8 | "main": "",
9 | "scripts": {
10 | "test": "echo \"Error: no test specified\" && exit 1"
11 | },
12 | "devDependencies": {
13 | "chalk": "^3.0.0"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/explorer-backend/scripts/select_transferIds_console.js:
--------------------------------------------------------------------------------
1 | copy(Array.from(document.querySelectorAll('.transferId a'))
2 | .map(element => element.getAttribute('data-clipboard-text')).filter(Boolean)
3 | .join(','))
4 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/cache.ts:
--------------------------------------------------------------------------------
1 | import mcache from 'memory-cache'
2 |
3 | const cache = new mcache.Cache()
4 |
5 | export { cache }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/index.ts:
--------------------------------------------------------------------------------
1 | import './server'
2 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/chainSlugToName.ts:
--------------------------------------------------------------------------------
1 | import { networks } from '../config'
2 |
3 | const chainSlugToNameMap :any = {}
4 |
5 | for (const chain in networks) {
6 | chainSlugToNameMap[chain] = (networks as any)[chain].name
7 | }
8 |
9 | export function chainSlugToName (chainSlug: string) {
10 | return chainSlugToNameMap[chainSlug]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/explorerLink.ts:
--------------------------------------------------------------------------------
1 | import { networks } from '../config'
2 |
3 | export function explorerLink (chain: string) {
4 | return (networks as any)[chain]?.explorerUrls?.[0] ?? ''
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/explorerLinkAddress.ts:
--------------------------------------------------------------------------------
1 | import { explorerLink } from '../utils/explorerLink'
2 |
3 | export function explorerLinkAddress (chain: string, address: string) {
4 | const base = explorerLink(chain)
5 | return `${base}/address/${address || ''}`
6 | }
7 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/explorerLinkTx.ts:
--------------------------------------------------------------------------------
1 | import { explorerLink } from './explorerLink'
2 |
3 | export function explorerLinkTx (chain: string, transactionHash: string) {
4 | const base = explorerLink(chain)
5 | return `${base}/tx/${transactionHash || ''}`
6 | }
7 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/getChainLogo.ts:
--------------------------------------------------------------------------------
1 | export function getChainLogo (chainSlug: string) {
2 | return `https://assets.hop.exchange/logos/${chainSlug?.toLowerCase()}.svg`
3 | }
4 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/getDefaultRpcUrl.ts:
--------------------------------------------------------------------------------
1 | import { getNetwork, NetworkSlug } from '@hop-protocol/sdk'
2 |
3 | export function getDefaultRpcUrl (network: string, chain: string) {
4 | return (getNetwork(network as NetworkSlug)?.chains as any)?.[chain]?.publicRpcUrl
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/getSupportedCctpChains.ts:
--------------------------------------------------------------------------------
1 | export function getSupportedCctpChains() {
2 | const supportedChains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'base']
3 | return supportedChains
4 | }
5 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/getTokenLogo.ts:
--------------------------------------------------------------------------------
1 | export function getTokenLogo (tokenSymbol: string) {
2 | return `https://assets.hop.exchange/logos/${tokenSymbol?.toLowerCase()}.svg`
3 | }
4 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/integrationPartnerImage.ts:
--------------------------------------------------------------------------------
1 | import { integrationPartnerImageUrls } from '../config'
2 |
3 | export function integrationPartnerImage (slug: string) {
4 | return integrationPartnerImageUrls[slug]
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/integrationPartnerName.ts:
--------------------------------------------------------------------------------
1 | import { integrationPartnerNames } from '../config'
2 |
3 | export function integrationPartnerName (slug: string) {
4 | return integrationPartnerNames[slug]
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/padHex.ts:
--------------------------------------------------------------------------------
1 | import toHex from 'to-hex'
2 |
3 | export function padHex (hex: string) {
4 | return toHex(hex, { evenLength: true, addPrefix: true })
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/truncateAddress.ts:
--------------------------------------------------------------------------------
1 | import { truncateString } from './truncateString'
2 |
3 | export function truncateAddress (address :string) {
4 | return truncateString(address, 4)
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/truncateHash.ts:
--------------------------------------------------------------------------------
1 | import { truncateString } from './truncateString'
2 |
3 | export function truncateHash (hash: string) {
4 | return truncateString(hash, 6)
5 | }
6 |
--------------------------------------------------------------------------------
/packages/explorer-backend/src/utils/truncateString.ts:
--------------------------------------------------------------------------------
1 | export function truncateString (str: string, splitNum: number) {
2 | if (!str) return ''
3 | if (str.length < splitNum * 2) {
4 | return str
5 | }
6 | return str.substring(0, 2 + splitNum) + '…' + str.substring(str.length - splitNum, str.length)
7 | }
8 |
--------------------------------------------------------------------------------
/packages/explorer-backend/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/explorer-backend/static/favicon.ico
--------------------------------------------------------------------------------
/packages/explorer-backend/static/main.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/explorer-backend/static/main.js
--------------------------------------------------------------------------------
/packages/explorer-backend/static/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | }
3 |
4 |
--------------------------------------------------------------------------------
/packages/explorer-backend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "module": "NodeNext",
5 | "moduleResolution": "NodeNext",
6 | "rootDir": "./src",
7 | "outDir": "./dist",
8 | "paths": {
9 | "src/*": ["./src/*"]
10 | }
11 | },
12 | "include": ["src"]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/explorer-frontend/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/explorer-frontend/netlify.toml:
--------------------------------------------------------------------------------
1 | [[plugins]]
2 | package = "@netlify/plugin-nextjs"
3 |
4 | [[redirects]]
5 | from = "/mainnet"
6 | to = "/"
7 | status = 301
8 |
9 | [[redirects]]
10 | from = "/_ipx/*"
11 | to = "/"
12 | status = 301
13 |
--------------------------------------------------------------------------------
/packages/explorer-frontend/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/packages/explorer-frontend/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | images: {
5 | domains: ['assets.hop.exchange']
6 | },
7 | }
8 |
9 | module.exports = nextConfig
10 |
--------------------------------------------------------------------------------
/packages/explorer-frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/explorer-frontend/public/favicon.ico
--------------------------------------------------------------------------------
/packages/explorer-frontend/styles/Index.module.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/explorer-frontend/styles/Index.module.css
--------------------------------------------------------------------------------
/packages/frontend/public/451.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Unavailable For Legal Reasons
6 |
7 |
8 | Unavailable For Legal Reasons
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/frontend/public/airdrop/authereum/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/airdrop/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/airdrop/preview/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/airdrop/social-verify/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/packages/frontend/public/authereum-verified/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/cachebust:
--------------------------------------------------------------------------------
1 | this file only exists to trigger a new ipfs build
2 | because github actions masks the output hash after if it's already seen it and that breaks other parts of the build.
3 | If you need to rebuild on github actions, just update the number below to trigger a diff.
4 |
5 | 017
6 |
--------------------------------------------------------------------------------
/packages/frontend/public/claim/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/commit-transfers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/convert/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/packages/frontend/public/health/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/images/hop_600x200.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/images/hop_600x200.jpg
--------------------------------------------------------------------------------
/packages/frontend/public/images/hop_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/images/hop_logo.png
--------------------------------------------------------------------------------
/packages/frontend/public/images/hop_logo_192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/images/hop_logo_192x192.png
--------------------------------------------------------------------------------
/packages/frontend/public/logo16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/logo16.png
--------------------------------------------------------------------------------
/packages/frontend/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/logo192.png
--------------------------------------------------------------------------------
/packages/frontend/public/logo32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/logo32.png
--------------------------------------------------------------------------------
/packages/frontend/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/logo512.png
--------------------------------------------------------------------------------
/packages/frontend/public/pool/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/pools/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/relay/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/rewards/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Allow: /
4 |
--------------------------------------------------------------------------------
/packages/frontend/public/send/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/site.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"","short_name":"","icons":[{"src":"/logo192.png","sizes":"192x192","type":"image/png"},{"src":"/logo512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
--------------------------------------------------------------------------------
/packages/frontend/public/social-verified/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/stake/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/stats/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/public/whitepaper.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/public/whitepaper.pdf
--------------------------------------------------------------------------------
/packages/frontend/public/withdraw/index.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/abis/index.ts:
--------------------------------------------------------------------------------
1 | export * from './types/index.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/abis/types/index.ts:
--------------------------------------------------------------------------------
1 | /* Autogenerated file. Do not edit manually. */
2 | /* tslint:disable */
3 |
4 | export type { ENSToken } from './ENSToken' // eslint-disable-line n/no-missing-import
5 |
6 | export { ENSToken__factory } from './factories/ENSToken__factory.js'
7 |
--------------------------------------------------------------------------------
/packages/frontend/src/assets/logos/metamask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/frontend/src/assets/logos/metamask.png
--------------------------------------------------------------------------------
/packages/frontend/src/components/AccountDetails/index.tsx:
--------------------------------------------------------------------------------
1 | export { AccountDetails } from '#components/AccountDetails/AccountDetails.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Alert/index.tsx:
--------------------------------------------------------------------------------
1 | export { Alert } from '#components/Alert/Alert.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/AmmDetails/index.tsx:
--------------------------------------------------------------------------------
1 | export { AmmDetails } from '#components/AmmDetails/AmmDetails.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/AmountSelectorCard/index.tsx:
--------------------------------------------------------------------------------
1 | export { AmountSelectorCard } from '#components/AmountSelectorCard/AmountSelectorCard.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Banner/index.tsx:
--------------------------------------------------------------------------------
1 | export { Banner } from '#components/Banner/Banner.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Button/ClipboardCopyButton/index.tsx:
--------------------------------------------------------------------------------
1 | export { ClipboardCopyButton } from '#components/Button/ClipboardCopyButton/ClipboardCopyButton.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Button/index.tsx:
--------------------------------------------------------------------------------
1 | export { Button } from '#components/Button/Button.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Footer/index.tsx:
--------------------------------------------------------------------------------
1 | export { Footer } from '#components/Footer/Footer.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Grid/index.ts:
--------------------------------------------------------------------------------
1 | export * from '#components/Grid/Grid.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Header/index.tsx:
--------------------------------------------------------------------------------
1 | export { Header } from '#components/Header/Header.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/InfoTooltip/index.ts:
--------------------------------------------------------------------------------
1 | export { InfoTooltip } from '#components/InfoTooltip/InfoTooltip.js'
2 | export { FeeDetails } from '#components/InfoTooltip/FeeDetails.js'
3 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/LargeTextField/index.tsx:
--------------------------------------------------------------------------------
1 | export { LargeTextField } from '#components/LargeTextField/LargeTextField.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Link/index.ts:
--------------------------------------------------------------------------------
1 | export * from '#components/Link/Link.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Loading/index.ts:
--------------------------------------------------------------------------------
1 | export { Loading } from '#components/Loading/Loading.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Modal/index.tsx:
--------------------------------------------------------------------------------
1 | export { Modal } from '#components/Modal/Modal.js'
2 | export { StyledModal } from '#components/Modal/StyledModal.js'
3 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/NetworkSelector/index.ts:
--------------------------------------------------------------------------------
1 | export { NetworkSelector } from '#components/NetworkSelector/NetworkSelector.js'
2 | export { useNetworkSelectorStyles } from '#components/NetworkSelector/useNetworkSelectorStyles.js'
3 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/SmallTextField/index.tsx:
--------------------------------------------------------------------------------
1 | export { SmallTextField } from '#components/SmallTextField/SmallTextField.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Table/index.ts:
--------------------------------------------------------------------------------
1 | export * from '#components/Table/Table.js'
2 | export * from '#components/Table/RightAlignedData.js'
3 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Transaction/index.ts:
--------------------------------------------------------------------------------
1 | export { default as TxStatusTracker } from './TxStatusTracker.js'
2 | export { default as TransactionsList } from './TransactionsList.js'
3 | export { default as TransactionStatus } from './TransactionStatus.js'
4 | export { useTxStatusStyles } from './useTxStatusStyles.js'
5 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/Web3Modal/index.tsx:
--------------------------------------------------------------------------------
1 | export { Web3Modal } from './Web3Modal.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/slider/index.tsx:
--------------------------------------------------------------------------------
1 | export * from '#components/slider/Slider.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/txConfirm/index.tsx:
--------------------------------------------------------------------------------
1 | import TxConfirm from '#components/txConfirm/TxConfirm.js'
2 |
3 | export default TxConfirm
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/components/ui/Circle.tsx:
--------------------------------------------------------------------------------
1 | import Box, { BoxProps } from '@mui/material/Box'
2 | import styled from 'styled-components'
3 |
4 | export const Circle = styled(Box)`
5 | display: flex;
6 | align-items: center;
7 | overflow: hidden;
8 | border-radius: 50%;
9 | `
10 |
--------------------------------------------------------------------------------
/packages/frontend/src/config/index.ts:
--------------------------------------------------------------------------------
1 | export * from '#config/config.js'
2 | export * from '#config/addresses.js'
3 | export * from '#config/interfaces.js'
4 | export * from '#config/blocklist.js'
5 |
--------------------------------------------------------------------------------
/packages/frontend/src/contexts/AppContext/index.tsx:
--------------------------------------------------------------------------------
1 | import AppContext from '#contexts/AppContext/AppContext.js'
2 | export * from '#contexts/AppContext/AppContext.js'
3 |
4 | export default AppContext
5 |
--------------------------------------------------------------------------------
/packages/frontend/src/contexts/AppContext/useAccountDetails.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from 'react'
2 |
3 | export type AccountDetails = {
4 | open: boolean
5 | show: (open: boolean) => void
6 | }
7 |
8 | export const useAccountDetails = (): AccountDetails => {
9 | const [open, show] = useState(false)
10 |
11 | return {
12 | open,
13 | show,
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/frontend/src/hooks/useAsyncMemo.tsx:
--------------------------------------------------------------------------------
1 | import { useAsyncMemo } from 'use-async-memo'
2 |
3 | export default useAsyncMemo
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/logger/index.ts:
--------------------------------------------------------------------------------
1 | export { default, Logger } from '#logger/logger.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Airdrop/AirdropPreview/index.ts:
--------------------------------------------------------------------------------
1 | export * from '#pages/Airdrop/AirdropPreview/AirdropPreview.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Airdrop/AuthereumVerified/index.ts:
--------------------------------------------------------------------------------
1 | import { AuthereumVerified } from '#pages/Airdrop/AuthereumVerified/AuthereumVerified.js'
2 |
3 | export default AuthereumVerified
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Airdrop/AuthereumVerify/index.ts:
--------------------------------------------------------------------------------
1 | import { AuthereumVerify } from '#pages/Airdrop/AuthereumVerify/AuthereumVerify.js'
2 |
3 | export default AuthereumVerify
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Airdrop/SocialVerified/index.ts:
--------------------------------------------------------------------------------
1 | import { SocialVerified } from '#pages/Airdrop/SocialVerified/SocialVerified.js'
2 |
3 | export default SocialVerified
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Airdrop/SocialVerify/index.ts:
--------------------------------------------------------------------------------
1 | import { SocialVerify } from '#pages/Airdrop/SocialVerify/SocialVerify.js'
2 |
3 | export default SocialVerify
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Claim/index.ts:
--------------------------------------------------------------------------------
1 | export * from '#pages/Claim/ChooseDelegate.js'
2 | export * from '#pages/Claim/Claim.js'
3 | export * from '#pages/Claim/Claimed.js'
4 | export * from '#pages/Claim/Claiming.js'
5 | export * from '#pages/Claim/ClaimReview.js'
6 | export * from '#pages/Claim/ClaimStart.js'
7 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/CommitTransfers/index.tsx:
--------------------------------------------------------------------------------
1 | import { CommitTransfers } from './CommitTransfers.js'
2 |
3 | export default CommitTransfers
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Convert/ConvertOption/index.tsx:
--------------------------------------------------------------------------------
1 | import ConvertOption from '#pages/Convert/ConvertOption/ConvertOption.js'
2 |
3 | export default ConvertOption
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Convert/index.tsx:
--------------------------------------------------------------------------------
1 | import Convert from '#pages/Convert/Convert.js'
2 | import ConvertProvider from '#pages/Convert/ConvertContext.js'
3 | import React from 'react'
4 |
5 | const fc = () => (
6 |
7 |
8 |
9 | )
10 | export default fc
11 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Faucet/index.tsx:
--------------------------------------------------------------------------------
1 | import Faucet from '#pages/Faucet/Faucet.js'
2 | import FaucetContext from '#pages/Faucet/FaucetContext.js'
3 | import React from 'react'
4 |
5 | const fc = () => (
6 |
7 |
8 |
9 | )
10 | export default fc
11 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Health/index.tsx:
--------------------------------------------------------------------------------
1 | import Health from '#pages/Health/Health.js'
2 |
3 | export default Health
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Pools/PoolDetails/index.tsx:
--------------------------------------------------------------------------------
1 | export { PoolDetails as default } from '#pages/Pools/PoolDetails/PoolDetails.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Pools/PoolsOverview/index.tsx:
--------------------------------------------------------------------------------
1 | export { PoolsOverview as default } from '#pages/Pools/PoolsOverview/PoolsOverview.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Pools/index.tsx:
--------------------------------------------------------------------------------
1 | import PoolDetails from '#pages/Pools/PoolDetails/index.js'
2 | import PoolsProvider from '#pages/Pools/PoolsContext.js'
3 | import React from 'react'
4 |
5 | const fc = () => (
6 |
7 |
8 |
9 | )
10 | export default fc
11 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Relay/index.tsx:
--------------------------------------------------------------------------------
1 | import { Relay } from './Relay.js'
2 |
3 | export default Relay
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Relay/relayer/types.ts:
--------------------------------------------------------------------------------
1 | export enum MessageDirection {
2 | L1_TO_L2 = 0,
3 | L2_TO_L1 = 1
4 | }
5 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Rewards/index.tsx:
--------------------------------------------------------------------------------
1 | import { Rewards } from '#pages/Rewards/Rewards.js'
2 |
3 | export default Rewards
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Send/index.tsx:
--------------------------------------------------------------------------------
1 | import Send from '#pages/Send/Send.js'
2 |
3 | export default Send
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Stats/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Stats from '#pages/Stats/Stats.js'
3 | import StatsProvider from '#pages/Stats/StatsContext.js'
4 |
5 | const fc = () => (
6 |
7 |
8 |
9 | )
10 | export default fc
11 |
--------------------------------------------------------------------------------
/packages/frontend/src/pages/Withdraw/index.tsx:
--------------------------------------------------------------------------------
1 | import { Withdraw } from '#pages/Withdraw/Withdraw.js'
2 |
3 | export default Withdraw
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/setupTests.ts:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom'
6 |
--------------------------------------------------------------------------------
/packages/frontend/src/theme/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ThemeProvider } from '#theme/ThemeProvider.js'
2 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/bigNumberMax.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 |
3 | export function bigNumberMax(a: BigNumber, b: BigNumber) {
4 | if (!a) {
5 | return b
6 | }
7 | if (!b) {
8 | return a
9 | }
10 |
11 | return a?.gt(b) ? a : b
12 | }
13 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/bigNumberMin.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 |
3 | export function bigNumberMin(a: BigNumber, b: BigNumber) {
4 | if (!a) {
5 | return b
6 | }
7 | if (!b) {
8 | return a
9 | }
10 |
11 | return a?.lt(b) ? a : b
12 | }
13 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/bridges.ts:
--------------------------------------------------------------------------------
1 | import find from 'lodash/find'
2 | import { HopBridge } from '@hop-protocol/sdk'
3 |
4 | export function findMatchingBridge(bridges: HopBridge[], tokenSymbol?: string) {
5 | return find(bridges, b => b.getTokenSymbol() === tokenSymbol)
6 | }
7 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/capitalize.ts:
--------------------------------------------------------------------------------
1 | import capitalize from 'lodash/capitalize'
2 |
3 | export { capitalize }
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/chainIdToHex.ts:
--------------------------------------------------------------------------------
1 | export function chainIdToHex (chainId: number) {
2 | if (!chainId) {
3 | throw new Error('chainIdToHex: chainId is required')
4 | }
5 |
6 | return `0x${chainId.toString(16)}`
7 | }
8 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/getBaseExplorerUrl.ts:
--------------------------------------------------------------------------------
1 | import { networks } from '#config/index.js'
2 |
3 | export const getBaseExplorerUrl = (slug: string) => {
4 | for (const key in networks) {
5 | const v = networks[key]
6 | if (key === slug) {
7 | return v.explorerUrl.replace(/\/$/, '')
8 | }
9 | }
10 |
11 | return ''
12 | }
13 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/getNativeTokenSymbol.ts:
--------------------------------------------------------------------------------
1 | import { ChainSlug, NetworkSlug, getChain } from '@hop-protocol/sdk'
2 |
3 | export function getNativeTokenSymbol (chainSlug: string) {
4 | // The native token is the same on all networks so default to Ethereum
5 | const chain = getChain(NetworkSlug.Mainnet, chainSlug as ChainSlug)
6 | return chain.nativeTokenSymbol
7 | }
8 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/getTransferTimeSeconds.ts:
--------------------------------------------------------------------------------
1 | import { transferTimes } from '#config/index.js'
2 |
3 | export function getTransferTimeSeconds (fromChainSlug: string, toChainSlug: string) {
4 | if (!(fromChainSlug && toChainSlug)) {
5 | return 0
6 | }
7 | const minutes = transferTimes?.[fromChainSlug]?.[toChainSlug] ?? 60
8 | return minutes * 60
9 | }
10 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/prettifyErrorMessage.ts:
--------------------------------------------------------------------------------
1 | export const prettifyErrorMessage = (str: string = ''): string => {
2 | if (!str) {
3 | return ''
4 | }
5 | return str.replace(/.*\[ethjs-query\].*"message":"(.*)"\}.*/, '$1')
6 | }
7 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/shiftBNDecimals.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 |
3 | export function shiftBNDecimals(bn: BigNumber, shiftAmount: number): BigNumber {
4 | if (shiftAmount < 0) throw new Error('shiftAmount must be positive')
5 | return bn.mul(BigNumber.from(10).pow(shiftAmount))
6 | }
7 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/timings.ts:
--------------------------------------------------------------------------------
1 | export function isOlderThanOneHour(timestampMs: number) {
2 | return (Date.now() - (60 * 60 * 1000)) > timestampMs
3 | }
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/utils/wait.ts:
--------------------------------------------------------------------------------
1 | export const wait = async (t: number) => {
2 | return new Promise(resolve => setTimeout(() => resolve(null), t))
3 | }
4 |
--------------------------------------------------------------------------------
/packages/frontend/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/frontend/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/hop-node/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | Dockerfile
3 | *.env
4 | *.tsbuildinfo
--------------------------------------------------------------------------------
/packages/hop-node/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 | dist
3 | yarn.lock
4 | secret.json
5 | .env
6 | *.env
7 | .env*
8 | docker/arbitrum/data
9 | docker/arbitrum/docker-compose.yml
10 | src/scripts
11 | *.dump
12 | *.log
13 | .build-info.json
14 | provider_calls.json
15 | prometheus_pass.txt
16 | *.txt
17 | *.tsbuildinfo
18 | cctp_db_data*
19 | .npmignore
20 | db_data*
--------------------------------------------------------------------------------
/packages/hop-node/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.9'
2 |
3 | services:
4 | bonder:
5 | image: hopprotocol/hop-node:latest
6 | env_file:
7 | - docker.env
8 | restart: unless-stopped
9 | logging:
10 | driver: awslogs
11 | options:
12 | awslogs-region: us-east-1
13 | awslogs-group: HopNode
14 | awslogs-create-group: 'true'
15 |
--------------------------------------------------------------------------------
/packages/hop-node/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | import tseslint from 'typescript-eslint'
3 |
4 | export default tseslint.config(
5 | ...baseConfig
6 | )
--------------------------------------------------------------------------------
/packages/hop-node/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseESMConfig from '../../jest.config.esm.mjs'
2 | export default baseESMConfig
3 |
--------------------------------------------------------------------------------
/packages/hop-node/src/aws/index.ts:
--------------------------------------------------------------------------------
1 | export * from './AwsSigner.js'
2 | export * from './cloudWatch.js'
3 | export * from './KmsSigner.js'
4 | export * from './LambdaSigner.js'
5 | export * from './parameterStore.js'
6 | export * from './s3Upload.js'
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/Chains/arbitrum/ArbitrumFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class ArbitrumFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/Chains/gnosis/GnosisFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class GnosisFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/Chains/linea/LineaFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class LineaFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/Chains/polygon/PolygonFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class PolygonFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/Chains/scroll/ScrollFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class ScrollFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/Chains/zksync/ZkSyncFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class ZkSyncFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/chains/index.ts:
--------------------------------------------------------------------------------
1 | export * from './getChainBridge.js'
2 | export * from './IChainBridge.js'
3 | export {
4 | MessageUnknownError,
5 | MessageInFlightError,
6 | MessageRelayedError,
7 | MessageInvalidError,
8 | } from './Services/AbstractMessageService.js'
--------------------------------------------------------------------------------
/packages/hop-node/src/cli/index.ts:
--------------------------------------------------------------------------------
1 | import './cli.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/cli/shared/art.ts:
--------------------------------------------------------------------------------
1 | export const hopArt = `
2 | __ __
3 | / / / /___ ____
4 | / /_/ / __ \\/ __ \\
5 | / __ / /_/ / /_/ /
6 | /_/ /_/\\____/ .___/
7 | /_/
8 | `
9 |
10 | export const printHopArt = () => console.log(hopArt)
11 |
--------------------------------------------------------------------------------
/packages/hop-node/src/cli/shared/index.ts:
--------------------------------------------------------------------------------
1 | export * from './shared.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/cli/showConfig.ts:
--------------------------------------------------------------------------------
1 | import { actionHandler, root } from './shared/index.js'
2 |
3 | root
4 | .command('show-config')
5 | .description('Update config file')
6 | .action(actionHandler(main))
7 |
8 | async function main (source: any) {
9 | const { config } = source
10 | console.log(JSON.stringify(config, null, 2))
11 | }
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/config/index.ts:
--------------------------------------------------------------------------------
1 | export * from './config.js'
2 | export { type SignerConfig, CoreEnvironment } from './coreConfig.js'
--------------------------------------------------------------------------------
/packages/hop-node/src/constants/index.ts:
--------------------------------------------------------------------------------
1 | export * from './constants.js'
2 | export * from './preRegenesisRootsCommitted.js'
3 | export * from './chainBalanceArchiveData.js'
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/contracts/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './contracts.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/db/index.ts:
--------------------------------------------------------------------------------
1 | export * from './db.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/IFinalityService.ts:
--------------------------------------------------------------------------------
1 | import type { IFinalityStrategy } from './strategies/IFinalityStrategy.js'
2 |
3 | export interface IFinalityService extends IFinalityStrategy {
4 | isCustomBlockNumberImplemented(): boolean
5 | }
6 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/index.ts:
--------------------------------------------------------------------------------
1 | export * from './FinalityService.js'
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/bonder/ArbitrumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class ArbitrumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/bonder/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/bonder/GnosisStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class GnosisStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/collateralized/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/default/ArbitrumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class ArbitrumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/default/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/default/GnosisStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class GnosisStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/default/OptimismStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class OptimismStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/finality/strategies/threshold/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/gasboost/Store.ts:
--------------------------------------------------------------------------------
1 | export interface Store {
2 | update: (key: string, value: any) => Promise
3 | getItem: (key: string) => Promise
4 | deleteItem: (key: string) => Promise
5 | }
6 |
--------------------------------------------------------------------------------
/packages/hop-node/src/gasboost/constants.ts:
--------------------------------------------------------------------------------
1 | export const MAX_PRIORITY_FEE_CONFIDENCE_LEVEL = 95
2 | export const INITIAL_TX_GAS_PRICE_MULTIPLIER = 1
3 | export const MAX_GAS_PRICE_MULTIPLIER = 1.25
4 | export const PRIORITY_FEE_PER_GAS_CAP = 20
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/gasboost/index.ts:
--------------------------------------------------------------------------------
1 | export * from './GasBoostSigner.js'
2 | export * from './GasBoostTransaction.js'
--------------------------------------------------------------------------------
/packages/hop-node/src/keystore/entropyToMnemonic.ts:
--------------------------------------------------------------------------------
1 | import * as bip39 from 'bip39'
2 |
3 | export const entropyToMnemonic = (entropy: Buffer): string => {
4 | return bip39.entropyToMnemonic(entropy)
5 | }
6 |
--------------------------------------------------------------------------------
/packages/hop-node/src/keystore/index.ts:
--------------------------------------------------------------------------------
1 | export * from './entropyToMnemonic.js'
2 | export * from './keystore.js'
3 |
--------------------------------------------------------------------------------
/packages/hop-node/src/logger/index.ts:
--------------------------------------------------------------------------------
1 | export { Logger, setLogLevel } from './Logger.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/metrics/index.ts:
--------------------------------------------------------------------------------
1 | export * from './MetricsServer.js'
2 | export * from './metrics.js'
3 |
--------------------------------------------------------------------------------
/packages/hop-node/src/notifier/index.ts:
--------------------------------------------------------------------------------
1 | export * from './notifier.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/notifier/interfaces.ts:
--------------------------------------------------------------------------------
1 | export abstract class Notifier {
2 | error (message: string) {}
3 | info (message: string) {}
4 | log (message: string) {}
5 | success (message: string) {}
6 | warn (message: string) {}
7 | }
8 |
--------------------------------------------------------------------------------
/packages/hop-node/src/notifier/notifier.ts:
--------------------------------------------------------------------------------
1 | export { SlackClient as Notifier } from './slack.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/prompt/index.ts:
--------------------------------------------------------------------------------
1 | export * from './promptPassphrase.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/provider/index.ts:
--------------------------------------------------------------------------------
1 | export * from './provider.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/swap/index.ts:
--------------------------------------------------------------------------------
1 | export * from './swap.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/swap/types.ts:
--------------------------------------------------------------------------------
1 | export type SwapInput = {
2 | chain: string
3 | fromToken: string
4 | toToken: string
5 | amount: number
6 | max?: boolean
7 | slippage: number
8 | recipient: string
9 | dryMode: boolean
10 | deadline?: number
11 | }
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/swap/uniswap/index.ts:
--------------------------------------------------------------------------------
1 | export * from './uniswap.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/theGraph/getTransferRootsCount.ts:
--------------------------------------------------------------------------------
1 | import getTransferRoots from './getTransferRoots.js'
2 |
3 | async function getTransferRootsCount (
4 | chain: string,
5 | token: string
6 | ) {
7 | const transferRoots = await getTransferRoots(chain, token)
8 | return transferRoots.length
9 | }
10 |
11 | export default getTransferRootsCount
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/theGraph/getTransfersCount.ts:
--------------------------------------------------------------------------------
1 | import getTransferIds from './getTransferIds.js'
2 |
3 | async function getTransfersCount (
4 | chain: string,
5 | token: string
6 | ) {
7 | const transferIds = await getTransferIds(chain, token)
8 | return transferIds.length
9 | }
10 |
11 | export default getTransfersCount
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export * from './error.js'
2 | export * from './types.js'
--------------------------------------------------------------------------------
/packages/hop-node/src/types/types.ts:
--------------------------------------------------------------------------------
1 | import type { CallOverrides, Event as EthersEvent } from 'ethers'
2 |
3 | export type Event = EthersEvent & {
4 | blockNumber?: number
5 | }
6 |
7 | // Use an interface so that intellisense doesn't ignore our type definition
8 | // https://github.com/microsoft/TypeScript/issues/31940
9 | export interface TxOverrides extends CallOverrides {}
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/bigNumberMax.ts:
--------------------------------------------------------------------------------
1 | import type { BigNumber } from 'ethers'
2 |
3 | export function bigNumberMax (a: BigNumber, b: BigNumber): BigNumber {
4 | if (!a) {
5 | return b
6 | }
7 | if (!b) {
8 | return a
9 | }
10 | return a?.gt(b) ? a : b
11 | }
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/bigNumberMin.ts:
--------------------------------------------------------------------------------
1 | import type { BigNumber } from 'ethers'
2 |
3 | export function bigNumberMin (a: BigNumber, b: BigNumber): BigNumber {
4 | if (!a) {
5 | return b
6 | }
7 | if (!b) {
8 | return a
9 | }
10 | return a?.lt(b) ? a : b
11 | }
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/chainSlugToId.ts:
--------------------------------------------------------------------------------
1 | import { config as globalConfig } from '#config/index.js'
2 |
3 | export const chainSlugToId = (network: string): number => {
4 | const chainId = (globalConfig as any).networks[network]?.chainId
5 | if (!chainId) {
6 | throw new Error(`chain ID for ${network} not found`)
7 | }
8 | return chainId
9 | }
10 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/getBumpedBN.ts:
--------------------------------------------------------------------------------
1 | import { utils } from 'ethers'
2 | import type { BigNumber } from 'ethers'
3 |
4 | export const getBumpedBN = (value: BigNumber, multiplier: number = 1) => {
5 | return value.mul(utils.parseUnits(multiplier.toString(), 100)).div(utils.parseUnits('1', 100))
6 | }
7 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/getBumpedGasPrice.ts:
--------------------------------------------------------------------------------
1 | import { getBumpedBN } from './getBumpedBN.js'
2 | import type { BigNumber } from 'ethers'
3 |
4 | export const getBumpedGasPrice = (gasPrice: BigNumber, multiplier: number) => {
5 | return getBumpedBN(gasPrice, multiplier)
6 | }
7 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/getExponentialBackoffDelayMs.ts:
--------------------------------------------------------------------------------
1 | export const getExponentialBackoffDelayMs = (backoffIndex: number): number => {
2 | // Used for tx retries. Must be long enough for a tx to be processed and confirmed onchain.
3 | return (1 << backoffIndex) * 30 * 1000
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/getTransferRootId.ts:
--------------------------------------------------------------------------------
1 | import { utils } from 'ethers'
2 | import type { BigNumber } from 'ethers'
3 |
4 | const getTransferRootId = (rootHash: string, totalAmount: BigNumber) => {
5 | return utils.solidityKeccak256(
6 | ['bytes32', 'uint256'],
7 | [rootHash, totalAmount]
8 | )
9 | }
10 |
11 | export default getTransferRootId
12 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isFetchBadResponseError.ts:
--------------------------------------------------------------------------------
1 | export function isFetchBadResponseError (errMsg: string): boolean {
2 | const badResponseErrorRegex = /(bad response|response error|missing response|processing response error|invalid json response body|FetchError)/i
3 | return badResponseErrorRegex.test(errMsg)
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isFetchConnectionError.ts:
--------------------------------------------------------------------------------
1 | export function isFetchConnectionError (errMsg: string): boolean {
2 | const connectionErrorRegex = /(ETIMEDOUT|ENETUNREACH|ECONNRESET|ECONNREFUSED|SERVER_ERROR|EPROTO|EHOSTUNREACH)/i
3 | return connectionErrorRegex.test(errMsg)
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isFetchExecutionError.ts:
--------------------------------------------------------------------------------
1 | export function isFetchExecutionError (errMsg: string): boolean {
2 | const executionErrorRegex = /(The execution failed due to an exception|execution reverted|VM execution error)/i
3 | return executionErrorRegex.test(errMsg)
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isFetchRateLimitError.ts:
--------------------------------------------------------------------------------
1 | export function isFetchRateLimitError (errMsg: string): boolean {
2 | const rateLimitErrorRegex = /(rate limit|too many concurrent requests|exceeded|socket hang up)/i
3 | return rateLimitErrorRegex.test(errMsg)
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isFetchTimeoutError.ts:
--------------------------------------------------------------------------------
1 | export function isFetchTimeoutError (errMsg: string): boolean {
2 | const timeoutErrorRegex = /(timeout|time-out|time out|timedout|timed out)/i
3 | return timeoutErrorRegex.test(errMsg)
4 | }
5 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isHToken.ts:
--------------------------------------------------------------------------------
1 | const hTokens = new Set(['hUSDC', 'hUSDT', 'hDAI', 'hMATIC', 'hETH', 'hHOP', 'hSNX', 'hsUSD', 'hrETH', 'hUNI', 'hMAGIC'])
2 |
3 | function isHToken (tokenSymbol: string) {
4 | return hTokens.has(tokenSymbol)
5 | }
6 |
7 | export default isHToken
8 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isL1.ts:
--------------------------------------------------------------------------------
1 | import { ChainSlug } from '@hop-protocol/sdk'
2 |
3 | export const isL1 = (network: string) => {
4 | return network === ChainSlug.Ethereum
5 | }
6 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isL1ChainId.ts:
--------------------------------------------------------------------------------
1 | const l1Chains: Record = {
2 | 1: true,
3 | 5: true,
4 | 42: true,
5 | 11155111: true
6 | }
7 |
8 | export const isL1ChainId = (chainId: number | string) => {
9 | return l1Chains[chainId.toString()] ?? false
10 | }
11 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/isNativeToken.ts:
--------------------------------------------------------------------------------
1 | import { getChainNativeTokenSymbol } from '@hop-protocol/sdk'
2 |
3 | export function isNativeToken (chainId: string, token: string): boolean {
4 | const nativeTokenSymbol = getChainNativeTokenSymbol(chainId)
5 | return nativeTokenSymbol === token
6 | }
7 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/objectDepth.ts:
--------------------------------------------------------------------------------
1 | const objectDepth = (o: any): number => {
2 | return Object(o) === o ? 1 + Math.max(-1, ...Object.values(o).map(objectDepth)) : 0
3 | }
4 |
5 | export default objectDepth
6 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/padHex.ts:
--------------------------------------------------------------------------------
1 | import toHex from 'to-hex'
2 |
3 | export function padHex (hex: string) {
4 | return toHex(hex, { evenLength: true, addPrefix: true })
5 | }
6 |
--------------------------------------------------------------------------------
/packages/hop-node/src/utils/wait.ts:
--------------------------------------------------------------------------------
1 | export async function wait (t: number) {
2 | return new Promise(resolve => setTimeout(() => resolve(null), t))
3 | }
4 |
--------------------------------------------------------------------------------
/packages/hop-node/src/wallets/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wallets.js'
2 |
--------------------------------------------------------------------------------
/packages/hop-node/src/watchers/classes/IBaseWatcher.ts:
--------------------------------------------------------------------------------
1 | export interface IBaseWatcher {
2 | pollCheck(): Promise
3 | prePollHandler(): boolean
4 | pollHandler(): Promise
5 | postPollHandler(): Promise
6 |
7 | start(): Promise
8 | stop(): Promise
9 | }
10 |
--------------------------------------------------------------------------------
/packages/hop-node/test/getBumpedBN.test.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 | import { getBumpedBN } from '#utils/getBumpedBN.js'
3 |
4 | test('getBumpedBN', () => {
5 | expect(getBumpedBN(BigNumber.from('20'), 1.5).toString()).toBe(BigNumber.from('30').toString())
6 | expect(getBumpedBN(BigNumber.from('20'), 2.23456789).toString()).toBe(BigNumber.from('44').toString())
7 | })
8 |
--------------------------------------------------------------------------------
/packages/hop-node/test/getSubgraphUrl.test.ts:
--------------------------------------------------------------------------------
1 | import getSubgraphUrl from '#utils/getSubgraphUrl.js'
2 | import { ChainSlug } from '@hop-protocol/sdk'
3 |
4 | test('getSubgraphUrl', async () => {
5 | const url = getSubgraphUrl(ChainSlug.Ethereum)
6 | expect(url).toBeTruthy()
7 | })
8 |
--------------------------------------------------------------------------------
/packages/hop-node/test/utils/expectDefined.ts:
--------------------------------------------------------------------------------
1 | export default function expectDefined (arg: T): asserts arg is NonNullable {
2 | expect(arg).toBeDefined()
3 | }
4 |
--------------------------------------------------------------------------------
/packages/hop-node/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./dist"
6 | },
7 | "include": ["src"]
8 | }
--------------------------------------------------------------------------------
/packages/metabase/.gitignore:
--------------------------------------------------------------------------------
1 | metabase-db
2 | sqlite3.db
3 | db
4 | .npmignore
--------------------------------------------------------------------------------
/packages/metabase/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.9'
2 | services:
3 | metabase:
4 | image: metabase/metabase:latest
5 | container_name: metabase
6 | hostname: metabase
7 | restart: unless-stopped
8 | volumes:
9 | - ./metabase-db:/metabase.db
10 | - ./db/sqlite3.db:/sqlite3.db
11 | ports:
12 | - 3000:3000
13 |
--------------------------------------------------------------------------------
/packages/sdk-demo/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/sdk-demo/public/favicon.ico
--------------------------------------------------------------------------------
/packages/sdk-demo/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/sdk-demo/public/logo192.png
--------------------------------------------------------------------------------
/packages/sdk-demo/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/sdk-demo/public/logo512.png
--------------------------------------------------------------------------------
/packages/sdk-demo/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/sdk-demo/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/sdk-demo/src/setupTests.ts:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom'
6 |
--------------------------------------------------------------------------------
/packages/sdk-demo/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/sdk-demo/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/sdk/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 |
--------------------------------------------------------------------------------
/packages/sdk/docs/.nojekyll:
--------------------------------------------------------------------------------
1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
--------------------------------------------------------------------------------
/packages/sdk/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/sdk/example/example.js:
--------------------------------------------------------------------------------
1 | const { Hop } = require('../')
2 | const hop = new Hop()
3 | console.log(hop.version)
4 |
--------------------------------------------------------------------------------
/packages/sdk/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../jest.config.base.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/sdk/scripts/.gitignore:
--------------------------------------------------------------------------------
1 | *.png
2 |
--------------------------------------------------------------------------------
/packages/sdk/src/chains/utils/getMinGasLimit.ts:
--------------------------------------------------------------------------------
1 | import type { ChainSlug, NetworkSlug } from '../types.js'
2 | import { getChain } from '../index.js'
3 |
4 | export function getMinGasLimit (network: NetworkSlug, chain: ChainSlug): number | undefined {
5 | return getChain(network, chain).txOverrides?.minGasLimit
6 | }
7 |
--------------------------------------------------------------------------------
/packages/sdk/src/chains/utils/getMinGasPrice.ts:
--------------------------------------------------------------------------------
1 | import type { ChainSlug, NetworkSlug } from '../types.js'
2 | import { getChain } from '../index.js'
3 |
4 | export function getMinGasPrice (network: NetworkSlug, chain: ChainSlug): number | undefined {
5 | return getChain(network, chain).txOverrides?.minGasPrice
6 | }
7 |
--------------------------------------------------------------------------------
/packages/sdk/src/chains/utils/getSlugFromChainId.ts:
--------------------------------------------------------------------------------
1 | import type { ChainSlug } from '../types.js'
2 | import { getChainSlug } from '../index.js'
3 |
4 | export function getSlugFromChainId(chainId: string): ChainSlug {
5 | return getChainSlug(chainId)
6 | }
7 |
--------------------------------------------------------------------------------
/packages/sdk/src/chains/utils/isValidChainSlug.ts:
--------------------------------------------------------------------------------
1 | import { ChainSlug } from '../types.js'
2 |
3 | // Return a type predicate
4 | // https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates
5 |
6 | export function isValidChainSlug(slug: ChainSlug | string): slug is ChainSlug {
7 | return Object.values(ChainSlug).includes(slug as ChainSlug)
8 | }
9 |
--------------------------------------------------------------------------------
/packages/sdk/src/chains/utils/isValidNetworkSlug.ts:
--------------------------------------------------------------------------------
1 | import { NetworkSlug } from '../types.js'
2 |
3 | // Return a type predicate
4 | // https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates
5 |
6 | export function isValidNetworkSlug(slug: NetworkSlug | string): slug is NetworkSlug {
7 | return Object.values(NetworkSlug).includes(slug as NetworkSlug)
8 | }
--------------------------------------------------------------------------------
/packages/sdk/src/models/index.ts:
--------------------------------------------------------------------------------
1 | export { TokenModel } from './Token.js'
2 |
--------------------------------------------------------------------------------
/packages/sdk/src/multicall/index.ts:
--------------------------------------------------------------------------------
1 | export { Multicall } from './Multicall.js'
2 |
--------------------------------------------------------------------------------
/packages/sdk/src/networks/index.ts:
--------------------------------------------------------------------------------
1 | export enum HToken {
2 | hETH = 'hETH',
3 | hMATIC = 'hMATIC',
4 | hUSDC = 'hUSDC',
5 | hUSDT = 'hUSDT',
6 | hDAI = 'hDAI',
7 | hHop = 'hHOP',
8 | hrETH = 'hrETH',
9 | hUNI = 'hUNI',
10 | hMAGIC = 'hMAGIC'
11 | }
12 |
--------------------------------------------------------------------------------
/packages/sdk/src/priceFeed/index.ts:
--------------------------------------------------------------------------------
1 | export { PriceFeed, type PriceFeedApiKeys } from './PriceFeed.js'
2 | export { PriceFeedFromS3 } from './PriceFeedFromS3.js'
3 |
--------------------------------------------------------------------------------
/packages/sdk/src/provider/index.ts:
--------------------------------------------------------------------------------
1 | export { FallbackProvider } from './Provider.js'
2 | export { RetryProvider } from './Provider.js'
3 | export { rpcProviders } from './metadata.js'
4 | export { type RpcProvider, RpcProviderSlug } from './types.js'
5 |
--------------------------------------------------------------------------------
/packages/sdk/src/relayerFee/AbstractRelayerFee.ts:
--------------------------------------------------------------------------------
1 | export abstract class AbstractRelayerFee {
2 | readonly network: string
3 | readonly chain: string
4 | readonly token: string
5 |
6 | constructor (network: string, chain: string, token: string) {
7 | this.network = network
8 | this.chain = chain
9 | this.token = token
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/sdk/src/relayerFee/IRelayerFee.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 |
3 | export interface IRelayerFee {
4 | getRelayCost(): Promise
5 | }
6 |
--------------------------------------------------------------------------------
/packages/sdk/src/relayerFee/index.ts:
--------------------------------------------------------------------------------
1 | export { RelayerFee } from './RelayerFee.js'
2 |
--------------------------------------------------------------------------------
/packages/sdk/src/tokens/utils/getTokenDecimals.ts:
--------------------------------------------------------------------------------
1 | import type { TokenSymbol } from '../types.js'
2 | import { getToken } from '../index.js'
3 |
4 | export const getTokenDecimals = (symbol: TokenSymbol): number => {
5 | return getToken(symbol).decimals
6 | }
7 |
--------------------------------------------------------------------------------
/packages/sdk/src/tokens/utils/index.ts:
--------------------------------------------------------------------------------
1 | export { getTokenDecimals } from './getTokenDecimals.js'
2 | export { isValidTokenSymbol } from './isValidTokenSymbol.js'
3 |
--------------------------------------------------------------------------------
/packages/sdk/src/utils/getProviderFromUrl.ts:
--------------------------------------------------------------------------------
1 | import { providers } from 'ethers'
2 | import { getProviderWithFallbacks } from '#utils/getProviderWithFallbacks.js'
3 |
4 | export function getProviderFromUrl (rpcUrl: string | string[]): providers.Provider {
5 | const rpcUrls = Array.isArray(rpcUrl) ? rpcUrl : [rpcUrl]
6 | return getProviderWithFallbacks(rpcUrls)
7 | }
8 |
--------------------------------------------------------------------------------
/packages/sdk/src/utils/getSubgraphUrl.ts:
--------------------------------------------------------------------------------
1 | import { sdkConfig } from '#config/index.js'
2 |
3 | export function getSubgraphUrl (networkSlug: string, chainSlug: string): string {
4 | const url = sdkConfig[networkSlug]?.chains?.[chainSlug]?.subgraphUrl
5 | if (!url) {
6 | throw new Error(`subgraph url not found for chain ${chainSlug}`)
7 | }
8 |
9 | return url
10 | }
11 |
--------------------------------------------------------------------------------
/packages/sdk/src/utils/shiftBNDecimals.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 |
3 | export function shiftBNDecimals (bn: BigNumber, shiftAmount: number): BigNumber {
4 | if (shiftAmount < 0) throw new Error('shiftAmount must be positive')
5 | return bn.mul(BigNumber.from(10).pow(shiftAmount))
6 | }
7 |
--------------------------------------------------------------------------------
/packages/sdk/src/utils/wait.ts:
--------------------------------------------------------------------------------
1 | export const wait = async (t: number) => {
2 | return new Promise(resolve => setTimeout(() => resolve(null), t))
3 | }
4 |
--------------------------------------------------------------------------------
/packages/sdk/test/addresses.test.ts:
--------------------------------------------------------------------------------
1 | import * as addresses from '#addresses/index.js'
2 |
3 | test('addresses', () => {
4 | expect(addresses.mainnet.bridges.ETH!.ethereum!.l1Bridge).toBeTruthy()
5 | })
6 |
--------------------------------------------------------------------------------
/packages/sdk/tsconfig.cjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "dist/cjs",
5 | "tsBuildInfoFile": "./tsconfig.cjs.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/sdk/tsconfig.esm.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "dist/esm",
5 | "module": "ESNext",
6 | "moduleResolution": "Bundler",
7 | "tsBuildInfoFile": "./tsconfig.esm.tsbuildinfo"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/packages/sdk/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./dist"
6 | },
7 | "include": ["src"]
8 | }
--------------------------------------------------------------------------------
/packages/stats-worker/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | Dockerfile
3 | *.env
4 |
--------------------------------------------------------------------------------
/packages/stats-worker/.gitignore:
--------------------------------------------------------------------------------
1 | *.env
2 | dist
3 | build
4 | yarn.lock
5 | _data
6 | generated
7 | sqlite3.db
8 | *.csv
9 | .npmignore
--------------------------------------------------------------------------------
/packages/stats-worker/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/stats-worker/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../jest.config.base.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/stats-worker/metabase_queries/eth_total.sql:
--------------------------------------------------------------------------------
1 | -- ETH Bonder Total Profit
2 |
3 | select
4 | result3 as profit
5 | from bonder_balances
6 | where
7 | token = 'ETH'
8 | order by timestamp desc
9 | limit 1
10 |
--------------------------------------------------------------------------------
/packages/stats-worker/metabase_queries/usdc_total.sql:
--------------------------------------------------------------------------------
1 | select
2 | result3 as profit
3 | from bonder_balances
4 | where
5 | token = 'USDC'
6 | order by timestamp desc
7 | limit 1
8 |
--------------------------------------------------------------------------------
/packages/stats-worker/metabase_queries/usdt_total.sql:
--------------------------------------------------------------------------------
1 | select
2 | result3 as profit
3 | from bonder_balances
4 | where
5 | token = 'USDT'
6 | order by timestamp desc
7 | limit 1
8 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/DAI:
--------------------------------------------------------------------------------
1 | select 'DAI'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/DAI Bonder Fees - 0x305933e09871D4043b5036e09af794FACB3f6170:
--------------------------------------------------------------------------------
1 | select total_fees_amount as fees, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_fees where token = 'DAI' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/DAI Bonder Tx Fees Spent USD - 0x305933e09871D4043b5036e09af794FACB3f6170:
--------------------------------------------------------------------------------
1 | select total_tx_fees as usd, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_tx_fees where token = 'DAI' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
2 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/ETH:
--------------------------------------------------------------------------------
1 | select 'ETH'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/ETH Bonder Fees - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564:
--------------------------------------------------------------------------------
1 | select total_fees_amount as fees, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_fees where token = 'ETH' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/ETH Bonder Tx Fees Spent USD - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564:
--------------------------------------------------------------------------------
1 | select total_tx_fees as usd, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_tx_fees where token = 'ETH' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
2 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/MATIC:
--------------------------------------------------------------------------------
1 | select 'MATIC'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/MATIC Bonder APR - 0xd8781ca9163e9f132a4d8392332e64115688013a:
--------------------------------------------------------------------------------
1 | select
2 | ((result * 365) / 6026000.00) as apr
3 | from bonder_balances
4 | where
5 | token = 'MATIC'
6 | order by timestamp desc
7 | limit 1
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/MATIC Bonder Fees - 0xd8781ca9163e9f132a4d8392332e64115688013a:
--------------------------------------------------------------------------------
1 | select total_fees_amount as fees, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_fees where token = 'MATIC' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/MATIC Bonder Tx Spent USD - 0xd8781ca9163e9f132a4d8392332e64115688013a:
--------------------------------------------------------------------------------
1 | select total_tx_fees as usd, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_tx_fees where token = 'MATIC' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
2 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/USDC:
--------------------------------------------------------------------------------
1 | select 'USDT'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/USDC Bonder Fees - 0xa6a688F107851131F0E1dce493EbBebFAf99203e:
--------------------------------------------------------------------------------
1 | select total_fees_amount as fees, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_fees where token = 'USDC' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/USDC Bonder Tx Fees Spent USD - 0xa6a688F107851131F0E1dce493EbBebFAf99203e:
--------------------------------------------------------------------------------
1 | select total_tx_fees as usd, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_tx_fees where token = 'USDC' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-01'
2 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/USDT Bonder Fees - 0x15ec4512516d980090050fe101de21832c8edfee:
--------------------------------------------------------------------------------
1 | select total_fees_amount as fees, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_fees where token = 'USDT' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-27'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Bonder Stats/USDT Bonder Tx Fees Spent USD - 0x15ec4512516d980090050fe101de21832c8edfee:
--------------------------------------------------------------------------------
1 | select total_tx_fees as usd, strftime('%m - %d - %Y', datetime(timestamp, 'unixepoch', 'utc')) as day from bonder_tx_fees where token = 'USDT' AND strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch', 'utc')) >= '2022-01-27'
2 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/DAI Bonder Stats/DAI Bonder Profit - 0x305933e09871D4043b5036e09af794FACB3f6170:
--------------------------------------------------------------------------------
1 | select
2 | result3 as result
3 | from bonder_balances
4 | where
5 | token = 'DAI'
6 | order by timestamp desc
7 | limit 1
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/ETH Bonder Stats/ETH Bonder Profit - 0x710bDa329b2a6224E4B44833DE30F38E7f81d564:
--------------------------------------------------------------------------------
1 | select
2 | result3 as profit
3 | from bonder_balances
4 | where
5 | token = 'ETH'
6 | order by timestamp desc
7 | limit 1
8 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum:
--------------------------------------------------------------------------------
1 | select "Arbitrum"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum DAI Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'arbitrum' and token = 'DAI' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum ETH Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'arbitrum' and token = 'ETH' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum TVL:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as sum_usd from (select amount_usd from tvl_pool_stats where chain = 'arbitrum' and token in ('USDC', 'USDT', 'DAI', 'ETH') order by timestamp desc limit 4);
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum Token TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, token from tvl_pool_stats where chain = 'arbitrum' and token in ('USDC', 'USDT', 'DAI', 'ETH') order by timestamp desc limit 4
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum USDC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'arbitrum' and token = 'USDC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Arbitrum USDT Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'arbitrum' and token = 'USDT' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum:
--------------------------------------------------------------------------------
1 | select "Ethereum"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum DAI Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'ethereum' and token = 'DAI' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum ETH Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'ethereum' and token = 'ETH' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum MATIC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'ethereum' and token = 'MATIC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum TVL:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as sum_usd from (select amount_usd from tvl_pool_stats where chain = 'ethereum' and token in ('USDC', 'USDT', 'DAI', 'MATIC', 'ETH') order by timestamp desc limit 5);
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum Token TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, token from tvl_pool_stats where chain = 'ethereum' and token in ('USDC', 'USDT', 'DAI', 'MATIC', 'ETH') order by timestamp desc limit 5
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum USDC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'ethereum' and token = 'USDC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Ethereum USDT Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'ethereum' and token = 'USDT' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Gnosis:
--------------------------------------------------------------------------------
1 | select "Gnosis"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain DAI Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'gnosis' and token = 'DAI' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain ETH Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'gnosis' and token = 'ETH' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain MATIC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'gnosis' and token = 'MATIC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain TVL:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as sum_usd from (select amount_usd from tvl_pool_stats where chain = 'gnosis' and token in ('USDC', 'USDT', 'DAI', 'MATIC', 'ETH') order by timestamp desc limit 5);
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain Token TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, token from tvl_pool_stats where chain = 'gnosis' and token in ('USDC', 'USDT', 'DAI', 'MATIC', 'ETH') order by timestamp desc limit 5
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain USDC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'gnosis' and token = 'USDC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/GnosisChain USDT Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'gnosis' and token = 'USDT' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism:
--------------------------------------------------------------------------------
1 | select "Optimism"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism DAI Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'optimism' and token = 'DAI' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism ETH Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'optimism' and token = 'ETH' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism TVL:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as sum_usd from (select amount_usd from tvl_pool_stats where chain = 'optimism' and token in ('USDC', 'USDT', 'DAI', 'ETH') order by timestamp desc limit 4);
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism Token TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, token from tvl_pool_stats where chain = 'optimism' and token in ('USDC', 'USDT', 'DAI', 'ETH') order by timestamp desc limit 4
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism USDC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'optimism' and token = 'USDC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Optimism USDT Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'optimism' and token = 'USDT' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon:
--------------------------------------------------------------------------------
1 | select "Polygon"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon DAI Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'polygon' and token = 'DAI' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon ETH Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'polygon' and token = 'ETH' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon MATIC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'polygon' and token = 'MATIC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon TVL:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as sum_usd from (select amount_usd from tvl_pool_stats where chain = 'polygon' and token in ('USDC', 'USDT', 'DAI', 'MATIC', 'ETH') order by timestamp desc limit 5);
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon Token TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, token from tvl_pool_stats where chain = 'polygon' and token in ('USDC', 'USDT', 'DAI', 'MATIC', 'ETH') order by timestamp desc limit 5
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon USDC Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'polygon' and token = 'USDC' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/TVL Stats/Polygon USDT Historical TVL:
--------------------------------------------------------------------------------
1 | select amount_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from tvl_pool_stats where timestamp > 1623826800 and chain = 'polygon' and token = 'USDT' order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Accounts Bridging ETH into Arbitrum (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select DISTINCT account_address from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 and token = 'ETH' and destination_chain_slug = 'arbitrum' order by account_address
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Daily Volume USD (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select date_trunc('day', to_timestamp("timestamp")) as date, sum(amount_usd) as USD from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 group by date_trunc('day', to_timestamp("timestamp"))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Daily Volume by Token (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 group by (token, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/ETH Total Volume (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(amount_formatted) as amount_transferred from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 and token = 'ETH'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/ETH Total Volume USD (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as amount_transferred from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 and token = 'ETH'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/ETH Total Volume from Ethereum to Arbitrum (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(amount_formatted) as amount_transferred from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 and token = 'ETH' and source_chain_slug = 'ethereum' and destination_chain_slug = 'arbitrum'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/ETH Total Volume into Arbitrum (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(amount_formatted) as amount_transferred from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 and token = 'ETH' and destination_chain_slug = 'arbitrum'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/ETH Total Volume leaving Arbitrum (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(amount_formatted) as amount_transferred from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 and token = 'ETH' and source_chain_slug = 'arbitrum'
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/ETH Transfers Daily USD Total:
--------------------------------------------------------------------------------
1 | select date_trunc('day', to_timestamp("timestamp")) as date, sum(amount_usd) as USD from transfers where token = 'ETH' group by date_trunc('day', to_timestamp("timestamp")) order by date_trunc('day', to_timestamp("timestamp")) asc
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Lifetime Transfers Count:
--------------------------------------------------------------------------------
1 | select count(*) from transfers;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Spent Daily on Bonder Fees USD (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select date_trunc('day', to_timestamp("timestamp")) as date, sum(bonder_fee_usd) as bonder_Fees from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 group by date_trunc('day', to_timestamp("timestamp"))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Spent on Bonder Fees USD (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(bonder_fee_usd) as bonder_fees from transfers where "timestamp" > 1655830800 and timestamp < 1656349140
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Total Volume USD (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as amount_transferred from transfers where "timestamp" > 1655830800 and timestamp < 1656349140
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Transfers Count (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select count(*) from transfers where "timestamp" > 1655830800 and timestamp < 1656349140
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Transfers Count by Token (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select token, count(*) from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 group by token
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Transfers Daily Count:
--------------------------------------------------------------------------------
1 | select date_trunc('day', to_timestamp("timestamp")) as date, count(*) as "count" from transfers group by date_trunc('day', to_timestamp("timestamp")) order by date_trunc('day', to_timestamp("timestamp")) asc
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats (Arbitrum Odyssey)/Transfers into Arbitrum Count (Arbitrum Odyssey Week):
--------------------------------------------------------------------------------
1 | select source_chain_slug, count(*) as "count" from transfers where "timestamp" > 1655830800 and timestamp < 1656349140 group by (source_chain_slug, destination_chain_slug) having (destination_chain_slug = 'arbitrum')
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Count/Daily Transfers Count in Last 7 Days:
--------------------------------------------------------------------------------
1 | select count(*) as "count", date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Count/Lifetime Transfers Count:
--------------------------------------------------------------------------------
1 | select count(*) from transfers;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Count/Lifetime Transfers Count by Source Chain:
--------------------------------------------------------------------------------
1 | select source_chain_slug, count(*) as "count" from transfers group by source_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Count/Lifetime Transfers Count by Token:
--------------------------------------------------------------------------------
1 | select token, count(*) as "count" from transfers group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Count/Monthly Transfers Count:
--------------------------------------------------------------------------------
1 | select count(*) as "count", date_trunc('month', to_timestamp(timestamp)) as month from transfers where to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Count/Weekly Transfers Count in Last 6 Months:
--------------------------------------------------------------------------------
1 | select count(*) as "count", date_trunc('week', to_timestamp(timestamp)) as week from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total from transfers;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD By Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD By Source Chain:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers group by source_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD By Source Chain from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers where integration_partner = 'metamask' group by source_chain_slug
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD By Source Chain from Socket:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers where integration_partner = 'socket' group by source_chain_slug
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD From Arbitrum to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'arbitrum' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD From Ethereum to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'ethereum' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD From Gnosis Chain to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'gnosis' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD From Optimism to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'optimism' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD From Polygon to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'polygon' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Arbitrum as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'arbitrum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Arbitrum as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'arbitrum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Ethereum as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'ethereum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Ethereum as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'ethereum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Gnosis Chain as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'gnosis' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Gnosis Chain as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'gnosis' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Optimism as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'optimism' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Optimism as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'optimism' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Polygon as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'polygon' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token by Polygon as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'polygon' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where integration_partner = 'metamask' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Cumulative Volume/Transfers Cumulative Volume USD by Token from Socket:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where integration_partner = 'socket' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Sum Chain Daily Volume Last 7 Days:
--------------------------------------------------------------------------------
1 | select chain, sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where datetime(timestamp, 'unixepoch', 'utc') > DATETIME('now', '-7 day') group by chain, timestamp order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD Historical Bar Chart:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 month' group by token, day order by day
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Arbitrum as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'arbitrum' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by DAI Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'DAI' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Destination Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by destination_chain_slug, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by ETH Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'ETH' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Ethereum as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'ethereum' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Gnosis Chain as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'gnosis' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by HOP Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'HOP' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by MATIC Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'MATIC' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Optimism as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'optimism' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Polygon as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'polygon' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by SNX Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'SNX' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by source_chain_slug, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by USDC Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'USDC' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD by USDT Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'USDT' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Daily Volume/Transfers Daily Volume USD in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Daily Volume USD by Token from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'metamask' and "timestamp" > 1667894400 group by (token, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Daily Volume USD by Token from Socket:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'socket' and "timestamp" > 1667894400 group by (token, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Cumulative Volume USD By Integration Partners Pie Chart:
--------------------------------------------------------------------------------
1 | select integration_partner, sum(amount_usd) as total_usd from transfers where timestamp > 1667894400 and integration_partner IS NOT NULL and integration_partner != '' group by integration_partner
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Cumulative Volume USD By Source Chain from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers where integration_partner = 'metamask' group by source_chain_slug
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Cumulative Volume USD By Source Chain from Socket:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers where integration_partner = 'socket' group by source_chain_slug
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Cumulative Volume USD by Token from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where integration_partner = 'metamask' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Cumulative Volume USD by Token from Socket:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where integration_partner = 'socket' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Daily Volume USD from MetaMask Portfolio in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where integration_partner = 'metamask' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Integration Partners/Transfers Daily Volume USD from Socket in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where integration_partner = 'socket' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by DAI Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'DAI' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by ETH Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'ETH' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by HOP Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'HOP' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by MATIC Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'MATIC' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by SNX Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'SNX' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by USDC Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'USDC' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Monthly Volume/Transfers Monthly Volume USD by USDT Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'USDT' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by DAI Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'DAI' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by ETH Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'ETH' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by HOP Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'HOP' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by MATIC Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'MATIC' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by SNX Token Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'SNX' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by USDC Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'USDC' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD by USDT Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'USDT' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats - Weekly Volume/Transfers Weekly Volume USD in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Daily Transfers Count in Last 7 Days:
--------------------------------------------------------------------------------
1 | select count(*) as "count", date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Daily Volume USD by Source Chain from LI.FI:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'lifi' and "timestamp" > 1667894400 group by (source_chain_slug, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Daily Volume USD by Source Chain from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'metamask' and "timestamp" > 1667894400 group by (source_chain_slug, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Daily Volume USD by Source Chain from Socket:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'socket' and "timestamp" > 1667894400 group by (source_chain_slug, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Daily Volume USD by Token from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'metamask' and "timestamp" > 1667894400 group by (token, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Daily Volume USD by Token from Socket:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as USD, date_trunc('day', to_timestamp("timestamp")) as date from transfers where integration_partner = 'socket' and "timestamp" > 1667894400 group by (token, date_trunc('day', to_timestamp("timestamp")))
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Lifetime Transfers Count:
--------------------------------------------------------------------------------
1 | select count(*) from transfers;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Lifetime Transfers Count by Source Chain:
--------------------------------------------------------------------------------
1 | select source_chain_slug, count(*) as "count" from transfers group by source_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Lifetime Transfers Count by Token:
--------------------------------------------------------------------------------
1 | select token, count(*) as "count" from transfers group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Monthly Transfers Count:
--------------------------------------------------------------------------------
1 | select count(*) as "count", date_trunc('month', to_timestamp(timestamp)) as month from transfers where to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total from transfers;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD By Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD By Source Chain:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers group by source_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD By Source Chain from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers where integration_partner = 'metamask' group by source_chain_slug
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD By Source Chain from Socket:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd from transfers where integration_partner = 'socket' group by source_chain_slug
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD From Arbitrum to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'arbitrum' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD From Ethereum to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'ethereum' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD From Gnosis Chain to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'gnosis' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD From Optimism to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'optimism' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD From Polygon to Destination Chain:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'polygon' group by destination_chain_slug;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Arbitrum as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'arbitrum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Arbitrum as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'arbitrum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Ethereum as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'ethereum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Ethereum as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'ethereum' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Gnosis Chain as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'gnosis' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Gnosis Chain as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'gnosis' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Optimism as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'optimism' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Optimism as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'optimism' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Polygon as Destination Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where destination_chain_slug = 'polygon' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token by Polygon as Source Chain:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where source_chain_slug = 'polygon' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token from MetaMask Portfolio:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where integration_partner = 'metamask' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Cumulative Volume USD by Token from Socket:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from transfers where integration_partner = 'socket' group by token;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Arbitrum as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'arbitrum' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by DAI Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'DAI' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Destination Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select destination_chain_slug, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by destination_chain_slug, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by ETH Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'ETH' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Ethereum as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'ethereum' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Gnosis Chain as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'gnosis' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by HOP Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'HOP' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by MATIC Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'MATIC' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Optimism as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'optimism' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Polygon as Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'polygon' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by SNX Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'SNX' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Source Chain in Last 7 Days:
--------------------------------------------------------------------------------
1 | select source_chain_slug, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by source_chain_slug, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token By Arbitrum as Source Chain in Last 6 Months:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'arbitrum' and to_timestamp(timestamp) > now() - INTERVAL '5 month' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token By Ethereum as Source Chain in Last 6 Months:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'ethereum' and to_timestamp(timestamp) > now() - INTERVAL '5 month' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token By Gnosis Chain as Source Chain in Last 6 Months:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'gnosis' and to_timestamp(timestamp) > now() - INTERVAL '5 month' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token By Optimism as Source Chain in Last 6 Months:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'optimism' and to_timestamp(timestamp) > now() - INTERVAL '5 month' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token By Polygon as Source Chain in Last 6 Months:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where source_chain_slug = 'polygon' and to_timestamp(timestamp) > now() - INTERVAL '5 month' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '5 month' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by token, day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by USDC Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'USDC' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD by USDT Token in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' and token = 'USDT' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD from MetaMask Portfolio in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where integration_partner = 'metamask' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD from Socket in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where integration_partner = 'socket' and to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Daily Volume USD in Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('day', to_timestamp(timestamp)) as day from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 day' group by day order by day;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by DAI Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'DAI' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by ETH Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'ETH' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by HOP Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'HOP' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by MATIC Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'MATIC' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by SNX Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'SNX' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by USDC Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'USDC' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Monthly Volume USD by USDT Token:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('month', to_timestamp(timestamp)) as month from transfers where token = 'USDT' and to_timestamp(timestamp) > now() - INTERVAL '24 month' group by month order by month;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD by DAI Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'DAI' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD by ETH Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'ETH' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD by HOP Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'HOP' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD by MATIC Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'MATIC' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD by USDC Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'USDC' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD by USDT Token in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where token = 'USDT' and to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Transfers Weekly Volume USD in Last 6 Months:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, date_trunc('week', to_timestamp(timestamp)) as week from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Transfer Stats/Weekly Transfers Count in Last 6 Months:
--------------------------------------------------------------------------------
1 | select count(*) as "count", date_trunc('week', to_timestamp(timestamp)) as week from transfers where to_timestamp(timestamp) > now() - INTERVAL '6 month' group by week order by week;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/USDC Bonder Stats/USDC Bonder Profit - 0xa6a688F107851131F0E1dce493EbBebFAf99203e:
--------------------------------------------------------------------------------
1 | select
2 | result3 as profit
3 | from bonder_balances
4 | where
5 | token = 'USDC'
6 | order by timestamp desc
7 | limit 1
8 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/USDT Bonder Stats/USDT Bonder Profit 0x15ec4512516d980090050fe101de21832c8edfee:
--------------------------------------------------------------------------------
1 | select
2 | result3 as profit
3 | from bonder_balances
4 | where
5 | token = 'USDT'
6 | order by timestamp desc
7 | limit 1
8 |
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Arbitrum:
--------------------------------------------------------------------------------
1 | select "Arbitrum"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Arbitrum Token Cumulative Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from volume_stats where chain = 'arbitrum' group by token order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Chain Cumulative Volume:
--------------------------------------------------------------------------------
1 | select chain, sum(amount_usd) as total_usd from volume_stats group by chain order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Cumulative:
--------------------------------------------------------------------------------
1 | select "Cumulative"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Cumulative Volume:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd from volume_stats order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Cumulative Volume Chart:
--------------------------------------------------------------------------------
1 | select day, total_usd from (select timestamp, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day, sum(amount_usd) OVER (order by timestamp asc) as total_usd from volume_stats order by timestamp desc) group by day order by timestamp asc;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Daily:
--------------------------------------------------------------------------------
1 | select "Daily"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/ETH Sum Daily Volume Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where token = 'ETH' and datetime(timestamp, 'unixepoch', 'utc') > DATETIME('now', '-7 day') group by day, timestamp order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/ETH Sum Weekly Volume:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as week from volume_stats where token = 'ETH' group by strftime('%W', datetime(timestamp, 'unixepoch', 'utc')) order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Ethereum:
--------------------------------------------------------------------------------
1 | select "Ethereum"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Ethereum Token Cumulative Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from volume_stats where chain = 'mainnet' group by token order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Gnosis:
--------------------------------------------------------------------------------
1 | select "Gnosis"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/GnosisChain Token Cumulative Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from volume_stats where chain = 'gnosis' group by token order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Historical Token Daily Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where datetime(timestamp, 'unixepoch', 'utc') >= date('now','start of month','-6 months') group by token, timestamp order by timestamp
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Monthly:
--------------------------------------------------------------------------------
1 | select "Monthly"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Optimism:
--------------------------------------------------------------------------------
1 | select "Optimism"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Optimism Token Cumulative Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from volume_stats where chain = 'optimism' group by token order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Polygon:
--------------------------------------------------------------------------------
1 | select "Polygon"
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Polygon Sum Token Daily Volume Last 7 Days:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where datetime(timestamp, 'unixepoch', 'utc') > DATETIME('now', '-7 day') and chain = 'polygon' group by token, timestamp order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Polygon Token Cumulative Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from volume_stats where chain = 'polygon' group by token order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Sum Chain Daily Volume Last 7 Days:
--------------------------------------------------------------------------------
1 | select chain, sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where datetime(timestamp, 'unixepoch', 'utc') > DATETIME('now', '-7 day') group by chain, timestamp order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Sum Daily Volume Last 7 Days:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where datetime(timestamp, 'unixepoch', 'utc') > DATETIME('now', '-7 day') group by day, timestamp order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Sum Monthly Volume:
--------------------------------------------------------------------------------
1 | select sum(amount_usd) as total_usd, strftime('%m-%Y ', datetime(timestamp, 'unixepoch', 'utc')) as month from volume_stats where datetime(timestamp, 'unixepoch', 'utc') >= date('now','start of month','-12 months') group by strftime('%m-%Y', datetime(timestamp, 'unixepoch', 'utc')) order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Sum Token Daily Volume Last 7 Days:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd, strftime('%m - %d - %Y ', datetime(timestamp, 'unixepoch', 'utc')) as day from volume_stats where datetime(timestamp, 'unixepoch', 'utc') > DATETIME('now', '-7 day') group by token, timestamp order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Token Cumulative Volume:
--------------------------------------------------------------------------------
1 | select token, sum(amount_usd) as total_usd from volume_stats group by token order by timestamp;
--------------------------------------------------------------------------------
/packages/stats-worker/scripts/downloaded_dashboard_queries/Volume Stats/Weekly:
--------------------------------------------------------------------------------
1 | select "Weekly"
--------------------------------------------------------------------------------
/packages/stats-worker/src/data/weth_addresses.json:
--------------------------------------------------------------------------------
1 | {
2 | "wethAddresses": {
3 | "arbitrum": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/stats-worker/src/utils/getDefaultRpcProvider.ts:
--------------------------------------------------------------------------------
1 | import { mainnet as mainnetAddresses } from '@hop-protocol/sdk/addresses'
2 |
3 | export function getDefaultRpcUrl (chain: string) {
4 | return (mainnetAddresses as any)?.[chain]?.publicRpcUrl
5 | }
6 |
--------------------------------------------------------------------------------
/packages/stats-worker/src/utils/getEtherscanApiUrl.ts:
--------------------------------------------------------------------------------
1 | import { getChain, NetworkSlug, ChainSlug } from '@hop-protocol/sdk'
2 |
3 | export function getEtherscanApiUrl (chain: string) {
4 | return getChain(NetworkSlug.Mainnet, chain as ChainSlug)?.etherscanApiUrl
5 | }
6 |
--------------------------------------------------------------------------------
/packages/stats-worker/src/utils/sumAmounts.ts:
--------------------------------------------------------------------------------
1 | import { BigNumber } from 'ethers'
2 |
3 | export function sumAmounts (items: any) {
4 | let sum = BigNumber.from(0)
5 | for (const item of items) {
6 | const amount = BigNumber.from(item.amount)
7 | sum = sum.add(amount)
8 | }
9 | return sum
10 | }
11 |
--------------------------------------------------------------------------------
/packages/stats-worker/src/utils/wait.ts:
--------------------------------------------------------------------------------
1 | export const wait = async (t: number) => {
2 | return new Promise(resolve => setTimeout(() => resolve(null), t))
3 | }
4 |
--------------------------------------------------------------------------------
/packages/stats-worker/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./dist",
6 | "paths": {
7 | "src/*": ["./src/*"]
8 | }
9 | },
10 | "include": [
11 | "src",
12 | "src/**/*.json" // Required to include JSON files specifically
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | Dockerfile
3 | *.env
4 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
3 | dist
4 | .env
5 | *.env
6 | .env*
7 | src/scripts
8 | *.dump
9 | *.log
10 | .build-info.json
11 | test-db
12 | .npmignore
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../eslint.config.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseConfig from '../../jest.config.base.mjs'
2 | export default baseConfig
3 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/cli/index.ts:
--------------------------------------------------------------------------------
1 | import './cli.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/config/index.ts:
--------------------------------------------------------------------------------
1 | export * from './config.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/controller/index.ts:
--------------------------------------------------------------------------------
1 | export { Controller } from './Controller.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/db/index.ts:
--------------------------------------------------------------------------------
1 | export { db } from './db.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/db/syncStateDb/index.ts:
--------------------------------------------------------------------------------
1 | export * from './SyncStateDb.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/index.ts:
--------------------------------------------------------------------------------
1 | export { Worker } from '#worker/index.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/indexer/index.ts:
--------------------------------------------------------------------------------
1 | export { Indexer } from './indexer.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/pgDb/index.ts:
--------------------------------------------------------------------------------
1 | export * from './pgDb.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/server/index.ts:
--------------------------------------------------------------------------------
1 | export * from './server.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/utils/truncateString.ts:
--------------------------------------------------------------------------------
1 | export function truncateString (str: string, splitNum: number = 2) {
2 | if (!str) return ''
3 | return str.substring(0, 2 + splitNum) + '…' + str.substring(str.length - splitNum, str.length)
4 | }
5 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/utils/wait.ts:
--------------------------------------------------------------------------------
1 | export async function wait (t: number) {
2 | return new Promise(resolve => setTimeout(() => resolve(null), t))
3 | }
4 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/src/worker/index.ts:
--------------------------------------------------------------------------------
1 | export * from './worker.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-backend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./dist"
6 | },
7 | "include": ["src"]
8 | }
9 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/.nvmrc:
--------------------------------------------------------------------------------
1 | 16
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/netlify.toml:
--------------------------------------------------------------------------------
1 | [[redirects]]
2 | from = "/*"
3 | to = "/index.html"
4 | status = 200
5 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/public/_headers:
--------------------------------------------------------------------------------
1 | /*
2 | Access-Control-Allow-Origin: *
3 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/v2-explorer-frontend/public/favicon.ico
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/v2-explorer-frontend/public/logo192.png
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hop-protocol/hop/8b48f0ea8315912ca46de011c813c9743e8629b5/packages/v2-explorer-frontend/public/logo512.png
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/src/components/Footer.tsx:
--------------------------------------------------------------------------------
1 | import Box from '@mui/material/Box'
2 | import React from 'react'
3 |
4 | export function Footer () {
5 | return (
6 |
7 | Github
8 |
9 | )
10 | }
11 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/src/config.ts:
--------------------------------------------------------------------------------
1 | export const apiUrl = process.env.REACT_APP_API_URL || 'http://localhost:8000'
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/src/pages/NotFound.tsx:
--------------------------------------------------------------------------------
1 | import Box from '@mui/material/Box'
2 | import React from 'react'
3 | import { SiteWrapper } from '../components/SiteWrapper'
4 |
5 | export function NotFound () {
6 | return (
7 |
8 |
9 | Not Found
10 |
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/src/setupTests.ts:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom'
6 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/v2-explorer-frontend/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | Dockerfile
3 | *.env
4 | *.tsbuildinfo
--------------------------------------------------------------------------------
/packages/v2-hop-node/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 | dist
3 | yarn.lock
4 | secret.json
5 | .env
6 | *.env
7 | .env*
8 | docker/arbitrum/data
9 | docker/arbitrum/docker-compose.yml
10 | src/scripts
11 | *.dump
12 | *.log
13 | .build-info.json
14 | provider_calls.json
15 | prometheus_pass.txt
16 | *.txt
17 | *.tsbuildinfo
18 | cctp_db_data*
19 | .npmignore
20 | db_data*
--------------------------------------------------------------------------------
/packages/v2-hop-node/README.md:
--------------------------------------------------------------------------------
1 | # V2 Hop Node
2 |
3 | The V2 Hop Node for Hop Protocol.
4 |
5 | ## License
6 |
7 | [MIT](LICENSE)
8 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/jest.config.mjs:
--------------------------------------------------------------------------------
1 | import baseESMConfig from '../../jest.config.esm.mjs'
2 | export default baseESMConfig
3 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/Chains/arbitrum/ArbitrumFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class ArbitrumFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/Chains/gnosis/GnosisFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class GnosisFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/Chains/linea/LineaFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class LineaFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/Chains/polygon/PolygonFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class PolygonFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/Chains/scroll/ScrollFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class ScrollFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/Chains/zksync/ZkSyncFinalityService.ts:
--------------------------------------------------------------------------------
1 | import { AbstractFinalityService, type IFinalityService } from '../../Services/AbstractFinalityService.js'
2 |
3 | export class ZkSyncFinalityService extends AbstractFinalityService implements IFinalityService {}
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/chains/index.ts:
--------------------------------------------------------------------------------
1 | export * from './getChainBridge.js'
2 | export * from './IChainBridge.js'
3 | export {
4 | MessageUnknownError,
5 | MessageInFlightError,
6 | MessageRelayedError,
7 | MessageInvalidError,
8 | } from './Services/AbstractMessageService.js'
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/cli/index.ts:
--------------------------------------------------------------------------------
1 | import './cli.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/cli/shared/art.ts:
--------------------------------------------------------------------------------
1 | export const hopArt = `
2 | __ __
3 | / / / /___ ____
4 | / /_/ / __ \\/ __ \\
5 | / __ / /_/ / /_/ /
6 | /_/ /_/\\____/ .___/
7 | /_/
8 | `
9 |
10 | export const printHopArt = () => console.log(hopArt)
11 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/cli/shared/index.ts:
--------------------------------------------------------------------------------
1 | export * from './shared.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/config/constants.ts:
--------------------------------------------------------------------------------
1 | import os from 'node:os'
2 |
3 | const CONFIG_DIR = `${os.homedir()}/.hop`
4 | export const DEFAULT_CONFIG_PATH = `${CONFIG_DIR}/default-config.json`
5 | export const USER_CONFIG_PATH = `${CONFIG_DIR}/config.json`
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/config/types.ts:
--------------------------------------------------------------------------------
1 | import type{ ISharedConfig } from './configs/SharedConfig.js'
2 | import type { ISignerConfig } from './configs/SignerConfig.js'
3 |
4 | export interface IConfig {
5 | shared: ISharedConfig
6 | signer: ISignerConfig
7 | }
8 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/constants/index.ts:
--------------------------------------------------------------------------------
1 | export * from './constants.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/data-provider/IDataProvider.ts:
--------------------------------------------------------------------------------
1 | export interface IDataProvider {
2 | // Initialization
3 | start (): void
4 | init (): Promise
5 |
6 | // Node events
7 | on (event: string, listener: (...args: any[]) => void): void
8 |
9 | // Public methods
10 | fetchItem(key: T, value: U): Promise
11 | }
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/db/constants.ts:
--------------------------------------------------------------------------------
1 | export const DATA_PUT_EVENT = 'DATA_PUT_EVENT'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/IFinalityService.ts:
--------------------------------------------------------------------------------
1 | import type { IFinalityStrategy } from './strategies/IFinalityStrategy.js'
2 |
3 | export interface IFinalityService extends IFinalityStrategy {
4 | isCustomBlockNumberImplemented(): boolean
5 | }
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/index.ts:
--------------------------------------------------------------------------------
1 | export * from './FinalityService.js'
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/bonder/ArbitrumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class ArbitrumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/bonder/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/bonder/GnosisStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class GnosisStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/collateralized/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/default/ArbitrumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class ArbitrumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/default/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/default/GnosisStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class GnosisStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/default/OptimismStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class OptimismStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/finality/strategies/threshold/EthereumStrategy.ts:
--------------------------------------------------------------------------------
1 | import { FinalityStrategy } from '../FinalityStrategy.js'
2 | import type { IFinalityStrategy } from '../IFinalityStrategy.js'
3 |
4 | export class EthereumStrategy extends FinalityStrategy implements IFinalityStrategy {}
5 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/gasboost/Store.ts:
--------------------------------------------------------------------------------
1 | export interface Store {
2 | update: (key: string, value: any) => Promise
3 | getItem: (key: string) => Promise
4 | deleteItem: (key: string) => Promise
5 | }
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/gasboost/index.ts:
--------------------------------------------------------------------------------
1 | export * from './GasBoostSigner.js'
2 | export * from './GasBoostTransaction.js'
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/indexer/constants.ts:
--------------------------------------------------------------------------------
1 | export const DATA_STORED_EVENT = 'DATA_STORED_EVENT'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/keystore/entropyToMnemonic.ts:
--------------------------------------------------------------------------------
1 | import * as bip39 from 'bip39'
2 |
3 | export const entropyToMnemonic = (entropy: Buffer): string => {
4 | return bip39.entropyToMnemonic(entropy)
5 | }
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/keystore/index.ts:
--------------------------------------------------------------------------------
1 | export * from './entropyToMnemonic.js'
2 | export * from './keystore.js'
3 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/logger/index.ts:
--------------------------------------------------------------------------------
1 | export { Logger, setLogLevel } from './Logger.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/provider/index.ts:
--------------------------------------------------------------------------------
1 | export * from './provider.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/state-machine/IStateMachine.ts:
--------------------------------------------------------------------------------
1 | export interface IStateMachine {
2 | // Initialization
3 | init (): Promise
4 | start (): void
5 | }
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export * from './error.js'
2 | export * from './types.js'
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/utils/bigNumberMax.ts:
--------------------------------------------------------------------------------
1 | import type { BigNumber } from 'ethers'
2 |
3 | export function bigNumberMax (a: BigNumber, b: BigNumber): BigNumber {
4 | return a.gt(b) ? a : b
5 | }
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/utils/bigNumberMin.ts:
--------------------------------------------------------------------------------
1 | import type { BigNumber } from 'ethers'
2 |
3 | export function bigNumberMin (a: BigNumber, b: BigNumber): BigNumber {
4 | return a.lt(b) ? a : b
5 | }
6 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/utils/getBumpedBN.ts:
--------------------------------------------------------------------------------
1 | import { utils } from 'ethers'
2 | import type { BigNumber } from 'ethers'
3 |
4 | export const getBumpedBN = (value: BigNumber, multiplier: number = 1) => {
5 | return value.mul(utils.parseUnits(multiplier.toString(), 100)).div(utils.parseUnits('1', 100))
6 | }
7 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/utils/getBumpedGasPrice.ts:
--------------------------------------------------------------------------------
1 | import { getBumpedBN } from './getBumpedBN.js'
2 | import type { BigNumber } from 'ethers'
3 |
4 | export const getBumpedGasPrice = (gasPrice: BigNumber, multiplier: number) => {
5 | return getBumpedBN(gasPrice, multiplier)
6 | }
7 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/utils/wait.ts:
--------------------------------------------------------------------------------
1 | export async function wait (t: number) {
2 | return new Promise(resolve => setTimeout(() => resolve(null), t))
3 | }
4 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/src/wallets/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wallets.js'
2 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/test/cctp.test.ts:
--------------------------------------------------------------------------------
1 | import { MessageState } from '#cctp/types.js'
2 |
3 | // eslint-disable-next-line jest/no-disabled-tests
4 | describe.skip('CCTP', () => {
5 |
6 | it('Test', async () => {
7 | const state = MessageState.Sent
8 | expect(state).toBe(MessageState.Sent)
9 | })
10 | })
11 |
--------------------------------------------------------------------------------
/packages/v2-hop-node/test/utils/expectDefined.ts:
--------------------------------------------------------------------------------
1 | export default function expectDefined (arg: T): asserts arg is NonNullable {
2 | expect(arg).toBeDefined()
3 | }
4 |
--------------------------------------------------------------------------------
/packages/v2-sdk-demo/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | *.tsbuildinfo
4 | *.env
5 |
--------------------------------------------------------------------------------
/packages/v2-sdk-demo/README.md:
--------------------------------------------------------------------------------
1 | Coming soon. Development in progress under private repo.
2 |
--------------------------------------------------------------------------------
/packages/v2-sdk/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | *.tsbuildinfo
4 | *.env
5 | docs-ui
6 | docs
7 |
--------------------------------------------------------------------------------
/packages/v2-sdk/README.md:
--------------------------------------------------------------------------------
1 | Coming soon. Development in progress under private repo.
2 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
--------------------------------------------------------------------------------
/tsconfig.eslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json"
3 | }
--------------------------------------------------------------------------------