diff --git a/.github/workflows/external-data-storage-daily.yml b/.github/workflows/external-data-storage-daily.yml new file mode 100644 index 00000000000..1754b7bbc7b --- /dev/null +++ b/.github/workflows/external-data-storage-daily.yml @@ -0,0 +1,42 @@ +name: External Data Storage (Daily) + +on: + schedule: + # Runs every day at 00:00 UTC + - cron: "0 0 * * *" + workflow_dispatch: # Can be dispatched manually + +jobs: + store-external-data: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + + - name: Set up Node.js + uses: actions/setup-node@v6 + with: + node-version: 20 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Install ts-node + run: pnpm add -g ts-node + + - name: Run external data storage CRON (daily) + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/externalDataStorageCRONDaily.ts + env: + UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }} + UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }} + NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} + NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} + EXTERNAL_DATA_TTL_SECONDS: ${{ secrets.EXTERNAL_DATA_TTL_SECONDS }} + diff --git a/.github/workflows/external-data-storage-hourly.yml b/.github/workflows/external-data-storage-hourly.yml new file mode 100644 index 00000000000..790fe7f0fd7 --- /dev/null +++ b/.github/workflows/external-data-storage-hourly.yml @@ -0,0 +1,42 @@ +name: External Data Storage (Hourly) + +on: + schedule: + # Runs every hour at minute 0 (e.g., 00:00, 01:00, 02:00, etc.) + - cron: "0 * * * *" + workflow_dispatch: # Can be dispatched manually + +jobs: + store-external-data: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + + - name: Set up Node.js + uses: actions/setup-node@v6 + with: + node-version: 20 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Install ts-node + run: pnpm add -g ts-node + + - name: Run external data storage CRON (hourly) + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/externalDataStorageCRONHourly.ts + env: + UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }} + UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }} + NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} + NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} + EXTERNAL_DATA_TTL_SECONDS: ${{ secrets.EXTERNAL_DATA_TTL_SECONDS }} + diff --git a/app/[locale]/[...slug]/page.tsx b/app/[locale]/[...slug]/page.tsx index b731f3f7c87..1b0a2782cab 100644 --- a/app/[locale]/[...slug]/page.tsx +++ b/app/[locale]/[...slug]/page.tsx @@ -6,15 +6,16 @@ import { setRequestLocale, } from "next-intl/server" -import type { SlugPageParams } from "@/lib/types" +import type { GHIssue, SlugPageParams } from "@/lib/types" import I18nProvider from "@/components/I18nProvider" import mdComponents from "@/components/MdComponents" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { dateToString } from "@/lib/utils/date" import { getLayoutFromSlug } from "@/lib/utils/layout" import { checkPathValidity, getPostSlugs } from "@/lib/utils/md" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" import { LOCALES_CODES } from "@/lib/constants" @@ -22,12 +23,9 @@ import { LOCALES_CODES } from "@/lib/constants" import SlugJsonLD from "./page-jsonld" import { componentsMapping, layoutMapping } from "@/layouts" -import { fetchGFIs } from "@/lib/api/fetchGFIs" import { getPageData } from "@/lib/md/data" import { getMdMetadata } from "@/lib/md/metadata" -const loadData = dataLoader([["gfissues", fetchGFIs]]) - export default async function Page({ params }: { params: SlugPageParams }) { const { locale, slug: slugArray } = params @@ -40,7 +38,13 @@ export default async function Page({ params }: { params: SlugPageParams }) { // Enable static rendering setRequestLocale(locale) - const [gfissues] = await loadData() + // Fetch daily data (GitHub good first issues) with 24-hour revalidation + const { gfissues: gfissuesResponse } = + (await getExternalData(["gfissues"], every("day"))) || {} + const gfissues = + gfissuesResponse && "value" in gfissuesResponse + ? (gfissuesResponse.value as GHIssue[]) + : [] const slug = slugArray.join("/") diff --git a/app/[locale]/apps/[application]/page.tsx b/app/[locale]/apps/[application]/page.tsx index b01482de762..54a1e0cefc5 100644 --- a/app/[locale]/apps/[application]/page.tsx +++ b/app/[locale]/apps/[application]/page.tsx @@ -30,11 +30,12 @@ import { ButtonLink } from "@/components/ui/buttons/Button" import { LinkBox, LinkOverlay } from "@/components/ui/link-box" import { Tag } from "@/components/ui/tag" -import { APP_TAG_VARIANTS } from "@/lib/utils/apps" +import { APP_TAG_VARIANTS, extractAppsData } from "@/lib/utils/apps" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { isValidDate } from "@/lib/utils/date" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { formatLanguageNames, getRequiredNamespacesForPage, @@ -42,19 +43,12 @@ import { import { slugify } from "@/lib/utils/url" import { formatStringList } from "@/lib/utils/wallets" -import { BASE_TIME_UNIT } from "@/lib/constants" - import AppCard from "../_components/AppCard" import ScreenshotSwiper from "./_components/ScreenshotSwiper" import AppsAppJsonLD from "./page-jsonld" -import { fetchApps } from "@/lib/api/fetchApps" - -// 24 hours -const REVALIDATE_TIME = BASE_TIME_UNIT * 24 - -const loadData = dataLoader([["appsData", fetchApps]], REVALIDATE_TIME * 1000) +// 24 hours revalidation for apps data const Page = async ({ params, @@ -72,8 +66,14 @@ const Page = async ({ const requiredNamespaces = getRequiredNamespacesForPage("/apps") const messages = pick(allMessages, requiredNamespaces) - // const [application] = application - const [appsData] = await loadData() + // Fetch apps data with 24-hour revalidation + const appsDataRaw = await getExternalData(["appsData"], every("day")) + const appsData = extractAppsData( + appsDataRaw?.appsData as + | { value: Record } + | { error: string } + | undefined + ) const app = Object.values(appsData) .flat() .find((app) => slugify(app.name) === application)! @@ -394,7 +394,14 @@ export async function generateMetadata({ }) { const { locale, application } = params - const [appsData] = await loadData() + // Fetch apps data with 24-hour revalidation + const appsDataRaw = await getExternalData(["appsData"], every("day")) + const appsData = extractAppsData( + appsDataRaw?.appsData as + | { value: Record } + | { error: string } + | undefined + ) const app = Object.values(appsData) .flat() diff --git a/app/[locale]/apps/categories/[catetgoryName]/page.tsx b/app/[locale]/apps/categories/[catetgoryName]/page.tsx index 01fea8251c9..2df179af03a 100644 --- a/app/[locale]/apps/categories/[catetgoryName]/page.tsx +++ b/app/[locale]/apps/categories/[catetgoryName]/page.tsx @@ -27,34 +27,26 @@ import { } from "@/components/ui/breadcrumb" import TabNav from "@/components/ui/TabNav" -import { getHighlightedApps } from "@/lib/utils/apps" +import { extractAppsData, getHighlightedApps } from "@/lib/utils/apps" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" import { appsCategories } from "@/data/apps/categories" -import { BASE_TIME_UNIT } from "@/lib/constants" - import AppsHighlight from "../../_components/AppsHighlight" import AppsTable from "../../_components/AppsTable" import SuggestAnApp from "../../_components/SuggestAnApp" import AppsCategoryJsonLD from "./page-jsonld" -import { fetchApps } from "@/lib/api/fetchApps" - const VALID_CATEGORIES = Object.values(AppCategoryEnum) const isValidCategory = (category: string): category is AppCategoryEnum => VALID_CATEGORIES.includes(category as AppCategoryEnum) -// 24 hours -const REVALIDATE_TIME = BASE_TIME_UNIT * 24 - -const loadData = dataLoader([["appsData", fetchApps]], REVALIDATE_TIME * 1000) - const Page = async ({ params, }: { @@ -63,7 +55,14 @@ const Page = async ({ const { locale, catetgoryName } = params setRequestLocale(locale) - const [appsData] = await loadData() + // Fetch apps data with 24-hour revalidation + const appsDataRaw = await getExternalData(["appsData"], every("day")) + const appsData = extractAppsData( + appsDataRaw?.appsData as + | { value: Record } + | { error: string } + | undefined + ) const t = await getTranslations({ locale, namespace: "page-apps" }) diff --git a/app/[locale]/apps/page.tsx b/app/[locale]/apps/page.tsx index d9659a7a70b..591cb997375 100644 --- a/app/[locale]/apps/page.tsx +++ b/app/[locale]/apps/page.tsx @@ -5,7 +5,7 @@ import { setRequestLocale, } from "next-intl/server" -import { CommitHistory, Lang, PageParams } from "@/lib/types" +import { CommitHistory, CommunityPick, Lang, PageParams } from "@/lib/types" import Breadcrumbs from "@/components/Breadcrumbs" import { SimpleHero } from "@/components/Hero" @@ -14,19 +14,19 @@ import MainArticle from "@/components/MainArticle" import SubpageCard from "@/components/SubpageCard" import { + extractAppsData, getDevconnectApps, getDiscoverApps, getHighlightedApps, } from "@/lib/utils/apps" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" import { appsCategories } from "@/data/apps/categories" -import { BASE_TIME_UNIT } from "@/lib/constants" - import AppCard from "./_components/AppCard" import AppsHighlight from "./_components/AppsHighlight" import CommunityPicks from "./_components/CommunityPicks" @@ -35,26 +35,28 @@ import SuggestAnApp from "./_components/SuggestAnApp" import TopApps from "./_components/TopApps" import AppsJsonLD from "./page-jsonld" -import { fetchApps } from "@/lib/api/fetchApps" -import { fetchCommunityPicks } from "@/lib/api/fetchCommunityPicks" - -// 24 hours -const REVALIDATE_TIME = BASE_TIME_UNIT * 24 - -const loadData = dataLoader( - [ - ["appsData", fetchApps], - ["communityPicks", fetchCommunityPicks], - ], - REVALIDATE_TIME * 1000 -) - const Page = async ({ params }: { params: PageParams }) => { const { locale } = params setRequestLocale(locale) - const [appsData, communityPicks] = await loadData() + // Fetch daily data (apps and community picks) with 24-hour revalidation + const { appsData: appsDataRaw, communityPicks: communityPicksResponse } = + (await getExternalData(["appsData", "communityPicks"], every("day"))) || {} + + // Extract apps data + const appsData = extractAppsData( + appsDataRaw as + | { value: Record } + | { error: string } + | undefined + ) + + // Extract community picks + const communityPicks = + communityPicksResponse && "value" in communityPicksResponse + ? (communityPicksResponse.value as CommunityPick[]) + : [] // Get 3 random highlighted apps const highlightedApps = getHighlightedApps(appsData, 3) diff --git a/app/[locale]/developers/local-environment/page.tsx b/app/[locale]/developers/local-environment/page.tsx index c8cf206e3e0..1927db9578c 100644 --- a/app/[locale]/developers/local-environment/page.tsx +++ b/app/[locale]/developers/local-environment/page.tsx @@ -5,30 +5,50 @@ import { setRequestLocale, } from "next-intl/server" -import type { CommitHistory, Lang, PageParams } from "@/lib/types" +import type { + CommitHistory, + FrameworkGitHubData, + Lang, + PageParams, +} from "@/lib/types" import I18nProvider from "@/components/I18nProvider" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" +import { frameworksList } from "@/data/frameworks/frameworks" + import LocalEnvironmentPage from "./_components/local-environment" import LocalEnvironmentJsonLD from "./page-jsonld" -import { getLocalEnvironmentFrameworkData } from "@/lib/api/ghRepoData" - -const loadData = dataLoader([ - ["frameworksListData", getLocalEnvironmentFrameworkData], -]) - const Page = async ({ params }: { params: PageParams }) => { const { locale } = params setRequestLocale(locale) - const [frameworksListData] = await loadData() + // Fetch daily data (framework GitHub data) with 24-hour revalidation + const { frameworkGitHubData: frameworkGitHubResponse } = + (await getExternalData(["frameworkGitHubData"], every("day"))) || {} + + // Extract framework GitHub data + const frameworkGitHubData = + frameworkGitHubResponse && "value" in frameworkGitHubResponse + ? (frameworkGitHubResponse.value as FrameworkGitHubData) + : null + + // Combine static framework data with GitHub data + const frameworksListData = frameworksList.map((framework) => { + const githubData = frameworkGitHubData?.[framework.id] + return { + ...framework, + starCount: githubData?.starCount, + languages: githubData?.languages?.slice(0, 2), + } + }) // Get i18n messages const allMessages = await getMessages({ locale }) diff --git a/app/[locale]/enterprise/page.tsx b/app/[locale]/enterprise/page.tsx index 2547db4cb45..16b8c06cd2d 100644 --- a/app/[locale]/enterprise/page.tsx +++ b/app/[locale]/enterprise/page.tsx @@ -4,6 +4,8 @@ import { getTranslations } from "next-intl/server" import type { CommitHistory, + ExternalDataReturnData, + GrowThePieRawDataItem, Lang, PageParams, StatsBoxMetric, @@ -49,10 +51,10 @@ import { Skeleton, SkeletonLines } from "@/components/ui/skeleton" import { cn } from "@/lib/utils/cn" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" +import { processGrowThePieData } from "@/lib/utils/layer-2" import { getMetadata } from "@/lib/utils/metadata" - -import { BASE_TIME_UNIT } from "@/lib/constants" +import { every } from "@/lib/utils/time" import CasesColumn from "./_components/CasesColumn" import EnterpriseContactForm from "./_components/ContactForm/lazy" @@ -67,10 +69,6 @@ import EnterprisePageJsonLD from "./page-jsonld" import type { Case, EcosystemPlayer, Feature } from "./types" import { parseActivity } from "./utils" -import { fetchBeaconchainEpoch } from "@/lib/api/fetchBeaconchainEpoch" -import { fetchEthereumStablecoinsMcap } from "@/lib/api/fetchEthereumStablecoinsMcap" -import { fetchEthPrice } from "@/lib/api/fetchEthPrice" -import { fetchGrowThePie } from "@/lib/api/fetchGrowThePie" import EthGlyph from "@/public/images/assets/svgs/eth-diamond-rainbow.svg" import heroImage from "@/public/images/heroes/enterprise-hero-white.png" @@ -97,34 +95,66 @@ const CasesSwiper = dynamic(() => import("./_components/CasesSwiper"), { ), }) -const loadData = dataLoader( - [ - ["growThePieData", fetchGrowThePie], - ["ethereumStablecoins", fetchEthereumStablecoinsMcap], - ["ethPrice", fetchEthPrice], - ["beaconchainEpoch", fetchBeaconchainEpoch], - ], - BASE_TIME_UNIT * 1000 -) - const Page = async ({ params }: { params: PageParams }) => { const { locale } = params const t = await getTranslations({ locale, namespace: "page-enterprise" }) - const [ - { txCount, txCostsMedianUsd }, - stablecoinMarketCap, - ethPrice, - { totalEthStaked }, - ] = await loadData() + // Fetch hourly data (ethPrice, beaconchainEpoch, growThePie, and stablecoin market cap) with 1-hour revalidation + const { + ethPrice: ethPriceResponse, + beaconchainEpoch: beaconchainEpochData, + growThePie: growThePieResponse, + ethereumStablecoinsMcap: stablecoinMarketCapResponse, + } = (await getExternalData( + ["ethPrice", "beaconchainEpoch", "growThePie", "ethereumStablecoinsMcap"], + every("hour") + )) || {} + + // Extract and process growThePie data + const growThePieDataRaw = + growThePieResponse && "value" in growThePieResponse + ? (growThePieResponse.value as GrowThePieRawDataItem[]) + : null + const growThePieData = growThePieDataRaw + ? processGrowThePieData(growThePieDataRaw) + : { + txCount: { value: 0, timestamp: Date.now() }, + txCostsMedianUsd: { value: 0, timestamp: Date.now() }, + dailyTxCosts: {} as Record, + activeAddresses: {} as Record, + } + const { txCount, txCostsMedianUsd } = growThePieData + + // Extract hourly metrics from external data + const ethPrice = + ethPriceResponse && "value" in ethPriceResponse + ? ethPriceResponse + : { value: 0, timestamp: Date.now() } + const totalEthStaked = + beaconchainEpochData && + !("error" in beaconchainEpochData) && + typeof beaconchainEpochData === "object" && + "totalEthStaked" in beaconchainEpochData && + beaconchainEpochData.totalEthStaked && + "value" in beaconchainEpochData.totalEthStaked + ? beaconchainEpochData.totalEthStaked + : { value: 0, timestamp: Date.now() } + const stablecoinMarketCap = + stablecoinMarketCapResponse && "value" in stablecoinMarketCapResponse + ? stablecoinMarketCapResponse + : { value: 0, timestamp: Date.now() } const metrics = await parseActivity({ txCount, txCostsMedianUsd, - stablecoinMarketCap, - ethPrice, - totalEthStaked, + stablecoinMarketCap: + "value" in stablecoinMarketCap && + typeof stablecoinMarketCap.value === "number" + ? (stablecoinMarketCap as ExternalDataReturnData) + : { value: 0, timestamp: Date.now() }, + ethPrice: ethPrice as ExternalDataReturnData, + totalEthStaked: totalEthStaked as ExternalDataReturnData, }) const signals: StatsBoxMetric[] = [ diff --git a/app/[locale]/enterprise/utils.ts b/app/[locale]/enterprise/utils.ts index 8ee4af35a60..e0b4f7b6661 100644 --- a/app/[locale]/enterprise/utils.ts +++ b/app/[locale]/enterprise/utils.ts @@ -29,49 +29,65 @@ export const parseActivity = async ({ const txCountFormatted = "error" in txCount ? { error: txCount.error } - : { - ...txCount, - value: formatLargeNumber(txCount.value, localeForNumberFormat), - } + : "value" in txCount && typeof txCount.value === "number" + ? { + ...txCount, + value: formatLargeNumber(txCount.value, localeForNumberFormat), + } + : { value: "0", timestamp: Date.now() } const medianTxCost = "error" in txCostsMedianUsd ? { error: txCostsMedianUsd.error } - : { - ...txCostsMedianUsd, - value: formatSmallUSD(txCostsMedianUsd.value, localeForNumberFormat), - } + : "value" in txCostsMedianUsd && + typeof txCostsMedianUsd.value === "number" + ? { + ...txCostsMedianUsd, + value: formatSmallUSD( + txCostsMedianUsd.value, + localeForNumberFormat + ), + } + : { value: "0", timestamp: Date.now() } const stablecoinMarketCapFormatted = "error" in stablecoinMarketCap ? { error: stablecoinMarketCap.error } - : { - ...stablecoinMarketCap, - value: formatLargeUSD( - stablecoinMarketCap.value, - localeForNumberFormat - ), - } + : "value" in stablecoinMarketCap && + typeof stablecoinMarketCap.value === "number" + ? { + ...stablecoinMarketCap, + value: formatLargeUSD( + stablecoinMarketCap.value, + localeForNumberFormat + ), + } + : { value: "0", timestamp: Date.now() } - const hasEthStakerAndPriceData = - "value" in totalEthStaked && "value" in ethPrice - const totalStakedInUsd = hasEthStakerAndPriceData - ? totalEthStaked.value * ethPrice.value - : 0 + const totalEthStakedValue = + "value" in totalEthStaked && typeof totalEthStaked.value === "number" + ? totalEthStaked.value + : 0 + const ethPriceValue = + "value" in ethPrice && typeof ethPrice.value === "number" + ? ethPrice.value + : 0 + const totalStakedInUsd = totalEthStakedValue * ethPriceValue - const totalValueSecuringFormatted = !totalStakedInUsd - ? { - error: - "error" in totalEthStaked - ? totalEthStaked.error - : "error" in ethPrice - ? ethPrice.error - : "", - } - : { - ...totalEthStaked, - value: formatLargeUSD(totalStakedInUsd, localeForNumberFormat), - } + const totalValueSecuringFormatted = + !totalStakedInUsd || totalEthStakedValue === 0 || ethPriceValue === 0 + ? { + error: + "error" in totalEthStaked + ? totalEthStaked.error + : "error" in ethPrice + ? ethPrice.error + : "", + } + : { + ...totalEthStaked, + value: formatLargeUSD(totalStakedInUsd, localeForNumberFormat), + } const metrics: StatsBoxMetric[] = [ { diff --git a/app/[locale]/layer-2/networks/page.tsx b/app/[locale]/layer-2/networks/page.tsx index 9acb95228b5..0e0367142e0 100644 --- a/app/[locale]/layer-2/networks/page.tsx +++ b/app/[locale]/layer-2/networks/page.tsx @@ -5,71 +5,105 @@ import { setRequestLocale, } from "next-intl/server" -import type { CommitHistory, Lang, PageParams } from "@/lib/types" +import type { + CommitHistory, + GrowThePieBlockspaceData, + GrowThePieLaunchDates, + GrowThePieRawDataItem, + L2beatResponse, + Lang, + PageParams, +} from "@/lib/types" import I18nProvider from "@/components/I18nProvider" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" +import { processGrowThePieData } from "@/lib/utils/layer-2" import { getMetadata } from "@/lib/utils/metadata" import { networkMaturity } from "@/lib/utils/networkMaturity" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" import { ethereumNetworkData, layer2Data } from "@/data/networks/networks" import { walletsData } from "@/data/wallets/wallet-data" -import { BASE_TIME_UNIT } from "@/lib/constants" - import Layer2Networks from "./_components/networks" import Layer2NetworksPageJsonLD from "./page-jsonld" -import { fetchEthereumMarketcap } from "@/lib/api/fetchEthereumMarketcap" -import { fetchGrowThePie } from "@/lib/api/fetchGrowThePie" -import { fetchGrowThePieBlockspace } from "@/lib/api/fetchGrowThePieBlockspace" -import { fetchGrowThePieMaster } from "@/lib/api/fetchGrowThePieMaster" -import { fetchL2beat } from "@/lib/api/fetchL2beat" - -// In seconds -const REVALIDATE_TIME = BASE_TIME_UNIT * 1 - -const loadData = dataLoader( - [ - ["ethereumMarketcapData", fetchEthereumMarketcap], - ["growThePieData", fetchGrowThePie], - ["growThePieBlockspaceData", fetchGrowThePieBlockspace], - ["growThePieMasterData", fetchGrowThePieMaster], - ["l2beatData", fetchL2beat], - ], - REVALIDATE_TIME * 1000 -) - const Page = async ({ params }: { params: PageParams }) => { const { locale } = params setRequestLocale(locale) - const [ - ethereumMarketcapData, - growThePieData, - growThePieBlockspaceData, - growThePieMasterData, - l2beatData, - ] = await loadData() + // Fetch hourly data (growThePie, ethereum market cap, blockspace data, master data, and l2beat data) with 1-hour revalidation + const { + growThePie: growThePieResponse, + ethereumMarketcap: ethereumMarketcapResponse, + growThePieBlockspace: growThePieBlockspaceResponse, + growThePieMaster: growThePieMasterResponse, + l2beatData: l2beatResponse, + } = (await getExternalData( + [ + "growThePie", + "ethereumMarketcap", + "growThePieBlockspace", + "growThePieMaster", + "l2beatData", + ], + every("hour") + )) || {} + + // Extract blockspace data + const growThePieBlockspaceData = + growThePieBlockspaceResponse && "value" in growThePieBlockspaceResponse + ? (growThePieBlockspaceResponse.value as GrowThePieBlockspaceData) + : {} + + // Extract master data (launch dates) + const growThePieMasterData = + growThePieMasterResponse && "value" in growThePieMasterResponse + ? (growThePieMasterResponse.value as GrowThePieLaunchDates) + : {} + + // Extract L2beat data + const l2beatData = + l2beatResponse && "value" in l2beatResponse + ? (l2beatResponse.value as L2beatResponse) + : null + + // Extract and process growThePie data + const growThePieDataRaw = + growThePieResponse && "value" in growThePieResponse + ? (growThePieResponse.value as GrowThePieRawDataItem[]) + : null + const growThePieData = growThePieDataRaw + ? processGrowThePieData(growThePieDataRaw) + : { + txCount: { value: 0, timestamp: Date.now() }, + txCostsMedianUsd: { value: 0, timestamp: Date.now() }, + dailyTxCosts: {} as Record, + activeAddresses: {} as Record, + } + + // Extract Ethereum market cap + const ethereumMarketcapData = + ethereumMarketcapResponse && "value" in ethereumMarketcapResponse + ? ethereumMarketcapResponse + : { value: 0, timestamp: Date.now() } const layer2DataCompiled = layer2Data .map((network) => { + const project = l2beatData?.projects[network.l2beatID] return { ...network, txCosts: growThePieData.dailyTxCosts[network.growthepieID], - tvl: l2beatData.projects[network.l2beatID].tvs.breakdown.total, - networkMaturity: networkMaturity(l2beatData.projects[network.l2beatID]), + tvl: project?.tvs.breakdown.total || 0, + networkMaturity: project ? networkMaturity(project) : "emerging", activeAddresses: growThePieData.activeAddresses[network.growthepieID], - blockspaceData: - (growThePieBlockspaceData || {})[network.growthepieID] || null, + blockspaceData: growThePieBlockspaceData[network.growthepieID] || null, launchDate: - (growThePieMasterData?.launchDates || {})[ - network.growthepieID.replace(/_/g, "-") - ] || null, + growThePieMasterData[network.growthepieID.replace(/_/g, "-")] || null, walletsSupported: walletsData .filter((wallet) => wallet.supported_chains.includes(network.chainName) @@ -111,7 +145,11 @@ const Page = async ({ params }: { params: PageParams }) => { mainnetData: { ...ethereumNetworkData, txCosts: growThePieData.dailyTxCosts.ethereum, - tvl: "value" in ethereumMarketcapData ? ethereumMarketcapData.value : 0, + tvl: + "value" in ethereumMarketcapData && + typeof ethereumMarketcapData.value === "number" + ? ethereumMarketcapData.value + : 0, walletsSupported: walletsData .filter((wallet) => wallet.supported_chains.includes("Ethereum Mainnet") diff --git a/app/[locale]/layer-2/page.tsx b/app/[locale]/layer-2/page.tsx index 80b317c6f51..d1671561a4d 100644 --- a/app/[locale]/layer-2/page.tsx +++ b/app/[locale]/layer-2/page.tsx @@ -5,56 +5,74 @@ import { setRequestLocale, } from "next-intl/server" -import type { CommitHistory, Lang, PageParams } from "@/lib/types" +import type { + CommitHistory, + GrowThePieRawDataItem, + L2beatResponse, + Lang, + PageParams, +} from "@/lib/types" import I18nProvider from "@/components/I18nProvider" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" +import { processGrowThePieData } from "@/lib/utils/layer-2" import { getMetadata } from "@/lib/utils/metadata" import { networkMaturity } from "@/lib/utils/networkMaturity" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" import { layer2Data } from "@/data/networks/networks" -import { BASE_TIME_UNIT } from "@/lib/constants" - import Layer2Page from "./_components/layer-2" import Layer2PageJsonLD from "./page-jsonld" import { routing } from "@/i18n/routing" -import { fetchGrowThePie } from "@/lib/api/fetchGrowThePie" -import { fetchL2beat } from "@/lib/api/fetchL2beat" - -// In seconds -const REVALIDATE_TIME = BASE_TIME_UNIT * 24 - -const loadData = dataLoader( - [ - ["growThePieData", fetchGrowThePie], - ["l2beatData", fetchL2beat], - ], - REVALIDATE_TIME * 1000 -) const Page = async ({ params }: { params: PageParams }) => { const { locale } = params setRequestLocale(locale) - const [growThePieData, l2beatData] = await loadData() + // Fetch hourly data (growThePie and l2beat) with 1-hour revalidation + const { growThePie: growThePieResponse, l2beatData: l2beatResponse } = + (await getExternalData(["growThePie", "l2beatData"], every("hour"))) || {} + + // Extract and process growThePie data + const growThePieDataRaw = + growThePieResponse && "value" in growThePieResponse + ? (growThePieResponse.value as GrowThePieRawDataItem[]) + : null + const growThePieData = growThePieDataRaw + ? processGrowThePieData(growThePieDataRaw) + : { + txCount: { value: 0, timestamp: Date.now() }, + txCostsMedianUsd: { value: 0, timestamp: Date.now() }, + dailyTxCosts: {} as Record, + activeAddresses: {} as Record, + } + + // Extract L2beat data + const l2beatData = + l2beatResponse && "value" in l2beatResponse + ? (l2beatResponse.value as L2beatResponse) + : null const getRandomL2s = () => { - let randomL2s = layer2Data.filter( - (network) => - networkMaturity(l2beatData.projects[network.l2beatID]) === "robust" - ) + if (!l2beatData) + return layer2Data.sort(() => 0.5 - Math.random()).slice(0, 3) + + let randomL2s = layer2Data.filter((network) => { + const project = l2beatData.projects[network.l2beatID] + return project && networkMaturity(project) === "robust" + }) if (randomL2s.length === 0) { - randomL2s = layer2Data.filter( - (network) => - networkMaturity(l2beatData.projects[network.l2beatID]) === "maturing" - ) + randomL2s = layer2Data.filter((network) => { + const project = l2beatData.projects[network.l2beatID] + return project && networkMaturity(project) === "maturing" + }) } return randomL2s.sort(() => 0.5 - Math.random()).slice(0, 3) diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx index 4eceeaf5ce9..c9a2686e538 100644 --- a/app/[locale]/page.tsx +++ b/app/[locale]/page.tsx @@ -6,10 +6,13 @@ import { getTranslations, setRequestLocale } from "next-intl/server" import type { AllHomepageActivityData, CommunityBlog, + ExternalDataReturnData, + GrowThePieRawDataItem, PageParams, + RSSItem, ValuesPairing, } from "@/lib/types" -import { CodeExample } from "@/lib/interfaces" +import { CodeExample, CommunityEvent } from "@/lib/interfaces" import ActivityStats from "@/components/ActivityStats" import { ChevronNext } from "@/components/Chevron" @@ -60,20 +63,19 @@ import { import { Skeleton, SkeletonCardGrid } from "@/components/ui/skeleton" import WindowBox from "@/components/WindowBox" -import { parseAppsOfTheWeek } from "@/lib/utils/apps" +import { extractAppsData, parseAppsOfTheWeek } from "@/lib/utils/apps" import { cn } from "@/lib/utils/cn" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { isValidDate } from "@/lib/utils/date" import { getDirection } from "@/lib/utils/direction" +import { processGrowThePieData } from "@/lib/utils/layer-2" import { getMetadata } from "@/lib/utils/metadata" import { polishRSSList } from "@/lib/utils/rss" +import { every } from "@/lib/utils/time" import events from "@/data/community-events.json" import { - ATTESTANT_BLOG, - BASE_TIME_UNIT, - BLOG_FEEDS, BLOGS_WITHOUT_FEED, CALENDAR_DISPLAY_COUNT, DEFAULT_LOCALE, @@ -87,14 +89,6 @@ import IndexPageJsonLD from "./page-jsonld" import { getActivity, getUpcomingEvents } from "./utils" import { routing } from "@/i18n/routing" -import { fetchCommunityEvents } from "@/lib/api/calendarEvents" -import { fetchApps } from "@/lib/api/fetchApps" -import { fetchBeaconchainEpoch } from "@/lib/api/fetchBeaconchainEpoch" -import { fetchEthPrice } from "@/lib/api/fetchEthPrice" -import { fetchGrowThePie } from "@/lib/api/fetchGrowThePie" -import { fetchAttestantPosts } from "@/lib/api/fetchPosts" -import { fetchRSS } from "@/lib/api/fetchRSS" -import { fetchTotalValueLocked } from "@/lib/api/fetchTotalValueLocked" import EventFallback from "@/public/images/events/event-placeholder.png" const BentoCardSwiper = dynamic( @@ -131,27 +125,7 @@ const ValuesMarquee = dynamic( } ) -const fetchXmlBlogFeeds = async () => { - const xmlUrls = BLOG_FEEDS.filter((feed) => ![ATTESTANT_BLOG].includes(feed)) - return await fetchRSS(xmlUrls) -} - -// In seconds -const REVALIDATE_TIME = BASE_TIME_UNIT * 1 - -const loadData = dataLoader( - [ - ["ethPrice", fetchEthPrice], - ["beaconchainEpoch", fetchBeaconchainEpoch], - ["totalValueLocked", fetchTotalValueLocked], - ["growThePieData", fetchGrowThePie], - ["communityEvents", fetchCommunityEvents], - ["attestantPosts", fetchAttestantPosts], - ["rssData", fetchXmlBlogFeeds], - ["appsData", fetchApps], - ], - REVALIDATE_TIME * 1000 -) +// Hourly revalidation for growThePie data const Page = async ({ params }: { params: PageParams }) => { const { locale } = params @@ -164,17 +138,101 @@ const Page = async ({ params }: { params: PageParams }) => { const tCommon = await getTranslations({ locale, namespace: "common" }) const { direction: dir, isRtl } = getDirection(locale) - const [ - ethPrice, - { totalEthStaked }, - totalValueLocked, - growThePieData, - communityEvents, - attestantPosts, - xmlBlogs, - appsData, - ] = await loadData() + // Fetch hourly data with 1-hour revalidation + const { + ethPrice: ethPriceResponse, + totalValueLocked: totalValueLockedResponse, + beaconchainEpoch: beaconchainEpochData, + growThePie: growThePieResponse, + } = (await getExternalData( + ["ethPrice", "beaconchainEpoch", "totalValueLocked", "growThePie"], + every("hour") + )) || {} + + // Extract hourly metrics from external data + const ethPrice = + ethPriceResponse && "value" in ethPriceResponse + ? ethPriceResponse + : { value: 0, timestamp: Date.now() } + const totalValueLocked = + totalValueLockedResponse && "value" in totalValueLockedResponse + ? totalValueLockedResponse + : { value: 0, timestamp: Date.now() } + const totalEthStaked = + beaconchainEpochData && + !("error" in beaconchainEpochData) && + typeof beaconchainEpochData === "object" && + "totalEthStaked" in beaconchainEpochData && + beaconchainEpochData.totalEthStaked && + "value" in beaconchainEpochData.totalEthStaked + ? beaconchainEpochData.totalEthStaked + : { value: 0, timestamp: Date.now() } + + // Extract and process growThePie data + const growThePieDataRaw = + growThePieResponse && "value" in growThePieResponse + ? (growThePieResponse.value as GrowThePieRawDataItem[]) + : null + const growThePieData = growThePieDataRaw + ? processGrowThePieData(growThePieDataRaw) + : { + txCount: { value: 0, timestamp: Date.now() }, + txCostsMedianUsd: { value: 0, timestamp: Date.now() }, + dailyTxCosts: {} as Record, + activeAddresses: {} as Record, + } + // Fetch daily data (calendar events, attestant posts, and blog feeds) with 24-hour revalidation + const { + calendarEvents: calendarEventsResponse, + attestantPosts: attestantPostsResponse, + blogFeeds: blogFeedsResponse, + appsData: appsDataRaw, + } = (await getExternalData( + ["calendarEvents", "attestantPosts", "blogFeeds", "appsData"], + every("day") + )) || {} + + // Extract calendar events + const calendarEventsData = + calendarEventsResponse && "value" in calendarEventsResponse + ? (calendarEventsResponse.value as { + upcomingEvents?: { value: CommunityEvent[] } + pastEvents?: { value: CommunityEvent[] } + }) + : undefined + const communityEvents = { + upcomingEventData: + (calendarEventsData?.upcomingEvents && + "value" in calendarEventsData.upcomingEvents && + calendarEventsData.upcomingEvents.value) || + [], + pastEventData: + (calendarEventsData?.pastEvents && + "value" in calendarEventsData.pastEvents && + calendarEventsData.pastEvents.value) || + [], + } + + // Extract attestant posts + const attestantPosts = + attestantPostsResponse && "value" in attestantPostsResponse + ? (attestantPostsResponse.value as RSSItem[]) + : [] + + // Extract blog feeds + const xmlBlogs = + blogFeedsResponse && "value" in blogFeedsResponse + ? (blogFeedsResponse.value as RSSItem[][]) + : [] + + // Extract apps + const appsData = extractAppsData( + appsDataRaw as + | { value: Record } + | { error: string } + | undefined + ) const appsOfTheWeek = parseAppsOfTheWeek(appsData) const bentoItems = await getBentoBoxItems(locale) @@ -406,9 +464,9 @@ const Page = async ({ params }: { params: PageParams }) => { const upcomingEvents = allUpcomingEvents.slice(0, 3) const metricResults: AllHomepageActivityData = { - ethPrice, - totalEthStaked, - totalValueLocked, + ethPrice: ethPrice as ExternalDataReturnData, + totalEthStaked: totalEthStaked as ExternalDataReturnData, + totalValueLocked: totalValueLocked as ExternalDataReturnData, txCount: growThePieData.txCount, txCostsMedianUsd: growThePieData.txCostsMedianUsd, } diff --git a/app/[locale]/resources/page.tsx b/app/[locale]/resources/page.tsx index 2799aac7661..9397f2d2768 100644 --- a/app/[locale]/resources/page.tsx +++ b/app/[locale]/resources/page.tsx @@ -16,35 +16,50 @@ import TabNav, { StickyContainer } from "@/components/ui/TabNav" import { cn } from "@/lib/utils/cn" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" +import { processGrowThePieData } from "@/lib/utils/layer-2" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { GITHUB_REPO_URL } from "@/lib/constants" -import { BASE_TIME_UNIT } from "@/lib/constants" import { ResourceItem, ResourcesContainer } from "./_components/ResourcesUI" import ResourcesPageJsonLD from "./page-jsonld" import { getResources } from "./utils" -import { fetchGrowThePie } from "@/lib/api/fetchGrowThePie" import heroImg from "@/public/images/heroes/guides-hub-hero.jpg" -// In seconds -const REVALIDATE_TIME = BASE_TIME_UNIT * 1 const EVENT_CATEGORY = "dashboard" -const loadData = dataLoader( - [["growThePieData", fetchGrowThePie]], - REVALIDATE_TIME * 1000 -) - const Page = async ({ params }: { params: PageParams }) => { const { locale } = params const t = await getTranslations({ locale, namespace: "page-resources" }) - // Load data - const [growThePieData] = await loadData() + // Fetch hourly data (growThePie) with 1-hour revalidation + const hourlyData = await getExternalData(["growThePie"], every("hour")) + + // Extract and process growThePie data from hourly data + const growThePieDataRaw = hourlyData?.growThePie as + | { + value: Array<{ + metric_key: string + origin_key: string + date: string + value: number + }> + } + | { error: string } + | undefined + const growThePieData = + growThePieDataRaw && "value" in growThePieDataRaw + ? processGrowThePieData(growThePieDataRaw.value) + : { + txCount: { value: 0, timestamp: Date.now() }, + txCostsMedianUsd: { value: 0, timestamp: Date.now() }, + dailyTxCosts: {} as Record, + activeAddresses: {} as Record, + } const { txCostsMedianUsd } = growThePieData const resourceSections = await getResources({ txCostsMedianUsd }) diff --git a/app/[locale]/stablecoins/page.tsx b/app/[locale]/stablecoins/page.tsx index 8db7c9c01ce..46d992bb0dd 100644 --- a/app/[locale]/stablecoins/page.tsx +++ b/app/[locale]/stablecoins/page.tsx @@ -6,7 +6,12 @@ import { setRequestLocale, } from "next-intl/server" -import type { CommitHistory, Lang, PageParams } from "@/lib/types" +import type { + CoinGeckoCoinMarketItem, + CommitHistory, + Lang, + PageParams, +} from "@/lib/types" import CalloutBannerSSR from "@/components/CalloutBannerSSR" import DataProductCard from "@/components/DataProductCard" @@ -32,16 +37,14 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { cn } from "@/lib/utils/cn" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" -import { BASE_TIME_UNIT } from "@/lib/constants" - import { stablecoins } from "./data" import StablecoinsPageJsonLD from "./page-jsonld" -import { fetchEthereumStablecoinsData } from "@/lib/api/stablecoinsData" import sparkfiImg from "@/public/images/dapps/sparkfi.png" import summerfiImg from "@/public/images/dapps/summerfi.png" import dogeComputerImg from "@/public/images/doge-computer.png" @@ -59,14 +62,6 @@ import visaImg from "@/public/images/stablecoins/tools/visa.png" import usdcLargeImg from "@/public/images/stablecoins/usdc-large.png" import usdsLargeImg from "@/public/images/stablecoins/usds-large.png" -type CoinGeckoCoinMarketResponse = Array<{ - id: string - name: string - market_cap: number - image: string - symbol: string -}> - export type CoinDetails = { name: string marketCap: string @@ -77,8 +72,6 @@ export type CoinDetails = { symbol: string } -// In seconds -const REVALIDATE_TIME = BASE_TIME_UNIT * 1 const MIN_MARKET_CAP_USD = 500_000 const Section = ({ @@ -88,11 +81,6 @@ const Section = ({
) -const loadData = dataLoader<[CoinGeckoCoinMarketResponse]>( - [["ethereumStablecoinsData", fetchEthereumStablecoinsData]], - REVALIDATE_TIME * 1000 -) - async function Page({ params }: { params: PageParams }) { const { locale } = params const t = await getTranslations({ locale, namespace: "page-stablecoins" }) @@ -105,14 +93,20 @@ async function Page({ params }: { params: PageParams }) { const requiredNamespaces = getRequiredNamespacesForPage("/stablecoins") const messages = pick(allMessages, requiredNamespaces) - let marketsHasError = false // TODO: Implement error handling + // Fetch hourly data (stablecoins data) with 1-hour revalidation + const { stablecoinsData: stablecoinsDataResponse } = + (await getExternalData(["stablecoinsData"], every("hour"))) || {} + const stablecoinsData = + stablecoinsDataResponse && "value" in stablecoinsDataResponse + ? (stablecoinsDataResponse.value as CoinGeckoCoinMarketItem[]) + : [] + + let marketsHasError = false const coinDetails: CoinDetails[] = [] try { marketsHasError = false - const [stablecoinsData] = await loadData() - const ethereumStablecoinData = stablecoins .map(({ id, ...rest }) => { const coinMarketData = stablecoinsData.find((coin) => coin.id === id) @@ -139,7 +133,7 @@ async function Page({ params }: { params: PageParams }) { coinDetails.push(...ethereumStablecoinData) } catch (error) { console.error(error) - marketsHasError = true // TODO: Handle error state + marketsHasError = true } const heroContent = { diff --git a/app/[locale]/staking/page.tsx b/app/[locale]/staking/page.tsx index ae0f9750650..72ab751ae35 100644 --- a/app/[locale]/staking/page.tsx +++ b/app/[locale]/staking/page.tsx @@ -10,40 +10,65 @@ import { CommitHistory, Lang, PageParams, StakingStatsData } from "@/lib/types" import I18nProvider from "@/components/I18nProvider" import { getAppPageContributorInfo } from "@/lib/utils/contributors" -import { dataLoader } from "@/lib/utils/data/dataLoader" +import { getExternalData } from "@/lib/utils/data/getExternalData" import { getMetadata } from "@/lib/utils/metadata" +import { every } from "@/lib/utils/time" import { getRequiredNamespacesForPage } from "@/lib/utils/translations" -import { BASE_TIME_UNIT } from "@/lib/constants" - import StakingPage from "./_components/staking" import StakingPageJsonLD from "./page-jsonld" -import { fetchBeaconchainEpoch } from "@/lib/api/fetchBeaconchainEpoch" -import { fetchBeaconchainEthstore } from "@/lib/api/fetchBeaconchainEthstore" - -// In seconds -const REVALIDATE_TIME = BASE_TIME_UNIT * 1 - -const loadData = dataLoader( - [ - ["beaconchainEpoch", fetchBeaconchainEpoch], - ["beaconchainApr", fetchBeaconchainEthstore], - ], - REVALIDATE_TIME * 1000 -) - const Page = async ({ params }: { params: PageParams }) => { const { locale } = params setRequestLocale(locale) - const [{ totalEthStaked, validatorscount }, apr] = await loadData() + // Fetch hourly data (beaconchain epoch and APR) with 1-hour revalidation + const { + beaconchainEpoch: beaconchainEpochData, + beaconchainApr: aprResponse, + } = + (await getExternalData( + ["beaconchainEpoch", "beaconchainApr"], + every("hour") + )) || {} + + // Extract beaconchain epoch data + const totalEthStaked = + beaconchainEpochData && + !("error" in beaconchainEpochData) && + typeof beaconchainEpochData === "object" && + "totalEthStaked" in beaconchainEpochData && + beaconchainEpochData.totalEthStaked && + "value" in beaconchainEpochData.totalEthStaked + ? beaconchainEpochData.totalEthStaked + : { value: 0, timestamp: Date.now() } + const validatorscount = + beaconchainEpochData && + !("error" in beaconchainEpochData) && + typeof beaconchainEpochData === "object" && + "validatorscount" in beaconchainEpochData && + beaconchainEpochData.validatorscount && + "value" in beaconchainEpochData.validatorscount + ? beaconchainEpochData.validatorscount + : { value: 0, timestamp: Date.now() } + + // Extract APR data + const apr = + aprResponse && "value" in aprResponse + ? aprResponse + : { value: 0, timestamp: Date.now() } const data: StakingStatsData = { - totalEthStaked: "value" in totalEthStaked ? totalEthStaked.value : 0, - validatorscount: "value" in validatorscount ? validatorscount.value : 0, - apr: "value" in apr ? apr.value : 0, + totalEthStaked: + "value" in totalEthStaked && typeof totalEthStaked.value === "number" + ? totalEthStaked.value + : 0, + validatorscount: + "value" in validatorscount && typeof validatorscount.value === "number" + ? validatorscount.value + : 0, + apr: "value" in apr && typeof apr.value === "number" ? apr.value : 0, } // Get i18n messages diff --git a/app/[locale]/utils.ts b/app/[locale]/utils.ts index ccf4cc6563c..d3be646f1c5 100644 --- a/app/[locale]/utils.ts +++ b/app/[locale]/utils.ts @@ -59,49 +59,68 @@ export const getActivity = async ( const localeForNumberFormat = getLocaleForNumberFormat(locale) - const hasEthStakerAndPriceData = - "value" in totalEthStaked && "value" in ethPrice - const totalStakedInUsd = hasEthStakerAndPriceData - ? totalEthStaked.value * ethPrice.value - : 0 - - const totalEtherStaked = !totalStakedInUsd - ? { - error: - "error" in totalEthStaked - ? totalEthStaked.error - : "error" in ethPrice - ? ethPrice.error - : "", - } - : { - ...totalEthStaked, - value: formatLargeUSD(totalStakedInUsd, localeForNumberFormat), - } + const totalEthStakedValue = + "value" in totalEthStaked && typeof totalEthStaked.value === "number" + ? totalEthStaked.value + : 0 + const ethPriceValue = + "value" in ethPrice && typeof ethPrice.value === "number" + ? ethPrice.value + : 0 + const totalStakedInUsd = totalEthStakedValue * ethPriceValue + + const totalEtherStaked = + !totalStakedInUsd || totalEthStakedValue === 0 || ethPriceValue === 0 + ? { + error: + "error" in totalEthStaked + ? totalEthStaked.error + : "error" in ethPrice + ? ethPrice.error + : "", + } + : { + ...totalEthStaked, + value: formatLargeUSD(totalStakedInUsd, localeForNumberFormat), + } const valueLocked = "error" in totalValueLocked ? { error: totalValueLocked.error } - : { - ...totalValueLocked, - value: formatLargeUSD(totalValueLocked.value, localeForNumberFormat), - } + : "value" in totalValueLocked && + typeof totalValueLocked.value === "number" + ? { + ...totalValueLocked, + value: formatLargeUSD( + totalValueLocked.value, + localeForNumberFormat + ), + } + : { value: "0", timestamp: Date.now() } const txs = "error" in txCount ? { error: txCount.error } - : { - ...txCount, - value: formatLargeNumber(txCount.value, localeForNumberFormat), - } + : "value" in txCount && typeof txCount.value === "number" + ? { + ...txCount, + value: formatLargeNumber(txCount.value, localeForNumberFormat), + } + : { value: "0", timestamp: Date.now() } const medianTxCost = "error" in txCostsMedianUsd ? { error: txCostsMedianUsd.error } - : { - ...txCostsMedianUsd, - value: formatSmallUSD(txCostsMedianUsd.value, localeForNumberFormat), - } + : "value" in txCostsMedianUsd && + typeof txCostsMedianUsd.value === "number" + ? { + ...txCostsMedianUsd, + value: formatSmallUSD( + txCostsMedianUsd.value, + localeForNumberFormat + ), + } + : { value: "0", timestamp: Date.now() } const metrics: StatsBoxMetric[] = [ { diff --git a/next.config.js b/next.config.js index 07b4140bf75..e88d94fd2a1 100644 --- a/next.config.js +++ b/next.config.js @@ -94,7 +94,7 @@ module.exports = (phase, { defaultConfig }) => { }, { protocol: "https", - hostname: "avatars.githubusercontent.com", + hostname: "avatars*.githubusercontent.com", }, { protocol: "https", diff --git a/package.json b/package.json index bdca301ef88..3814f47e19d 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,9 @@ "crowdin-needs-review": "ts-node -O '{ \"module\": \"commonjs\" }' src/scripts/crowdin/reports/generateReviewReport.ts", "update-tutorials": "ts-node -O '{ \"module\": \"commonjs\" }' src/scripts/update-tutorials-list.ts", "prepare": "husky", + "test": "vitest", + "test:watch": "vitest --watch", + "test:coverage": "vitest --coverage", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:debug": "playwright test --debug", @@ -57,11 +60,13 @@ "@rainbow-me/rainbowkit": "^2.2.3", "@sentry/nextjs": "^10.5.0", "@socialgouv/matomo-next": "^1.8.0", + "@supabase/supabase-js": "^2.78.0", "@tanstack/react-query": "^5.66.7", "@tanstack/react-table": "^8.19.3", "@tanstack/react-virtual": "^3.13.12", "@types/canvas-confetti": "^1.9.0", "@types/three": "^0.177.0", + "@upstash/redis": "^1.35.6", "@wagmi/core": "^2.17.3", "canvas-confetti": "^1.9.3", "chart.js": "^4.4.2", @@ -132,6 +137,7 @@ "@types/xml2js": "^0.4.14", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", + "@vitest/ui": "^4.0.8", "autoprefixer": "^10.4.19", "chromatic": "12.0.0", "decompress": "^4.2.1", @@ -163,6 +169,7 @@ "typescript": "^5.5.2", "unified": "^10.0.0", "unist-util-visit": "^5.0.0", + "vitest": "^4.0.8", "xml2js": "^0.6.2" }, "packageManager": "pnpm@10.12.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff917f1717c..cc262a153f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,13 +82,16 @@ importers: version: 1.2.3(@types/react-dom@18.2.19)(@types/react@18.2.57)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rainbow-me/rainbowkit': specifier: ^2.2.3 - version: 2.2.5(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(wagmi@2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)) + version: 2.2.5(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(wagmi@2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)) '@sentry/nextjs': specifier: ^10.5.0 version: 10.5.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(next@14.2.32(@babel/core@7.27.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.53.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.99.9(esbuild@0.25.5)) '@socialgouv/matomo-next': specifier: ^1.8.0 version: 1.9.2(next@14.2.32(@babel/core@7.27.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.53.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@supabase/supabase-js': + specifier: ^2.78.0 + version: 2.78.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tanstack/react-query': specifier: ^5.66.7 version: 5.80.2(react@18.3.1) @@ -104,6 +107,9 @@ importers: '@types/three': specifier: ^0.177.0 version: 0.177.0 + '@upstash/redis': + specifier: ^1.35.6 + version: 1.35.6 '@wagmi/core': specifier: ^2.17.3 version: 2.17.3(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)) @@ -232,7 +238,7 @@ importers: version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) wagmi: specifier: ^2.14.11 - version: 2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + version: 2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) yaml-loader: specifier: ^0.8.0 version: 0.8.1 @@ -309,6 +315,9 @@ importers: '@typescript-eslint/parser': specifier: ^7.18.0 version: 7.18.0(eslint@8.57.1)(typescript@5.8.3) + '@vitest/ui': + specifier: ^4.0.8 + version: 4.0.8(vitest@4.0.8) autoprefixer: specifier: ^10.4.19 version: 10.4.21(postcss@8.5.4) @@ -402,6 +411,9 @@ importers: unist-util-visit: specifier: ^5.0.0 version: 5.0.0 + vitest: + specifier: ^4.0.8 + version: 4.0.8(@types/debug@4.1.12)(@types/node@20.17.57)(@vitest/ui@4.0.8)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0) xml2js: specifier: ^0.6.2 version: 0.6.2 @@ -1770,6 +1782,9 @@ packages: '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -3267,6 +3282,9 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@storybook/addon-actions@8.5.8': resolution: {integrity: sha512-7J0NAz+WDw1NmvmKIh0Qr5cxgVRDPFC5fmngbDNxedk147TkwrgmqOypgEi/SAksHbTWxJclbimoqdcsNtWffA==} peerDependencies: @@ -3614,6 +3632,28 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@supabase/auth-js@2.78.0': + resolution: {integrity: sha512-cXDtu1U0LeZj/xfnFoV7yCze37TcbNo8FCxy1FpqhMbB9u9QxxDSW6pA5gm/07Ei7m260Lof4CZx67Cu6DPeig==} + + '@supabase/functions-js@2.78.0': + resolution: {integrity: sha512-t1jOvArBsOINyqaRee1xJ3gryXLvkBzqnKfi6q3YRzzhJbGS6eXz0pXR5fqmJeB01fLC+1njpf3YhMszdPEF7g==} + + '@supabase/node-fetch@2.6.15': + resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} + engines: {node: 4.x || >=6.0.0} + + '@supabase/postgrest-js@2.78.0': + resolution: {integrity: sha512-AwhpYlSvJ+PSnPmIK8sHj7NGDyDENYfQGKrMtpVIEzQA2ApUjgpUGxzXWN4Z0wEtLQsvv7g4y9HVad9Hzo1TNA==} + + '@supabase/realtime-js@2.78.0': + resolution: {integrity: sha512-rCs1zmLe7of7hj4s7G9z8rTqzWuNVtmwDr3FiCRCJFawEoa+RQO1xpZGbdeuVvVmKDyVN6b542Okci+117y/LQ==} + + '@supabase/storage-js@2.78.0': + resolution: {integrity: sha512-n17P0JbjHOlxqJpkaGFOn97i3EusEKPEbWOpuk1r4t00Wg06B8Z4GUiq0O0n1vUpjiMgJUkLIMuBVp+bEgunzQ==} + + '@supabase/supabase-js@2.78.0': + resolution: {integrity: sha512-xYMRNBFmKp2m1gMuwcp/gr/HlfZKqjye1Ib8kJe29XJNsgwsfO/f8skxnWiscFKTlkOKLuBexNgl5L8dzGt6vA==} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -3792,6 +3832,9 @@ packages: '@types/canvas-confetti@1.9.0': resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -3828,6 +3871,9 @@ packages: '@types/decompress@4.2.7': resolution: {integrity: sha512-9z+8yjKr5Wn73Pt17/ldnmQToaFHZxK0N1GHysuk/JIPT8RIdQeoInM01wWPgypRcvb6VH1drjuFpQ4zmY437g==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} @@ -3888,6 +3934,9 @@ packages: '@types/pg@8.15.4': resolution: {integrity: sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==} + '@types/phoenix@1.6.6': + resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} + '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} @@ -3941,6 +3990,9 @@ packages: '@types/webxr@0.5.22': resolution: {integrity: sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} @@ -4176,6 +4228,9 @@ packages: cpu: [x64] os: [win32] + '@upstash/redis@1.35.6': + resolution: {integrity: sha512-aSEIGJgJ7XUfTYvhQcQbq835re7e/BXjs8Janq6Pvr6LlmTZnyqwT97RziZLO/8AVUL037RLXqqiQC6kCt+5pA==} + '@vanilla-extract/css@1.15.5': resolution: {integrity: sha512-N1nQebRWnXvlcmu9fXKVUs145EVwmWtMD95bpiEKtvehHDpUhmO1l2bauS7FGYKbi3dU1IurJbGpQhBclTr1ng==} @@ -4193,21 +4248,55 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/expect@4.0.8': + resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} + + '@vitest/mocker@4.0.8': + resolution: {integrity: sha512-9FRM3MZCedXH3+pIh+ME5Up2NBBHDq0wqwhOKkN4VnvCiKbVxddqH9mSGPZeawjd12pCOGnl+lo/ZGHt0/dQSg==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} '@vitest/pretty-format@2.1.9': resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + '@vitest/pretty-format@4.0.8': + resolution: {integrity: sha512-qRrjdRkINi9DaZHAimV+8ia9Gq6LeGz2CgIEmMLz3sBDYV53EsnLZbJMR1q84z1HZCMsf7s0orDgZn7ScXsZKg==} + + '@vitest/runner@4.0.8': + resolution: {integrity: sha512-mdY8Sf1gsM8hKJUQfiPT3pn1n8RF4QBcJYFslgWh41JTfrK1cbqY8whpGCFzBl45LN028g0njLCYm0d7XxSaQQ==} + + '@vitest/snapshot@4.0.8': + resolution: {integrity: sha512-Nar9OTU03KGiubrIOFhcfHg8FYaRaNT+bh5VUlNz8stFhCZPNrJvmZkhsr1jtaYvuefYFwK2Hwrq026u4uPWCw==} + '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + '@vitest/spy@4.0.8': + resolution: {integrity: sha512-nvGVqUunyCgZH7kmo+Ord4WgZ7lN0sOULYXUOYuHr55dvg9YvMz3izfB189Pgp28w0vWFbEEfNc/c3VTrqrXeA==} + + '@vitest/ui@4.0.8': + resolution: {integrity: sha512-F9jI5rSstNknPlTlPN2gcc4gpbaagowuRzw/OJzl368dvPun668Q182S8Q8P9PITgGCl5LAKXpzuue106eM4wA==} + peerDependencies: + vitest: 4.0.8 + '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@vitest/utils@4.0.8': + resolution: {integrity: sha512-pdk2phO5NDvEFfUTxcTP8RFYjVj/kfLSPIN5ebP2Mu9kcIMeAQTbknqcFEyBcC4z2pJlJI9aS5UQjcYfhmKAow==} + '@wagmi/connectors@5.8.3': resolution: {integrity: sha512-U4SJgi91+ny/XDGQWAMmawMafDx1BofcbYkPT/WSU6XrGL+apa7VltscqY7PVmwVGi/CYTqe8nlQiK/wmQ8D3A==} peerDependencies: @@ -4812,6 +4901,10 @@ packages: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} + chai@6.2.0: + resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} + engines: {node: '>=18'} + chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -5818,6 +5911,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + engines: {node: '>=12.0.0'} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -5877,6 +5974,15 @@ packages: picomatch: optional: true + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} @@ -6753,6 +6859,9 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} @@ -7358,6 +7467,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -7391,6 +7503,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -7565,6 +7681,10 @@ packages: resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -8228,6 +8348,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -8242,6 +8365,10 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -8304,6 +8431,9 @@ packages: stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -8311,6 +8441,9 @@ packages: resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} engines: {node: '>=6'} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -8625,17 +8758,31 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tinyrainbow@1.2.0: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + engines: {node: '>=14.0.0'} + tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -9073,6 +9220,80 @@ packages: typescript: optional: true + vite@7.2.2: + resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.0.8: + resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.8 + '@vitest/browser-preview': 4.0.8 + '@vitest/browser-webdriverio': 4.0.8 + '@vitest/ui': 4.0.8 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} @@ -9161,6 +9382,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -9857,7 +10083,7 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1 + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -11080,6 +11306,8 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -11215,7 +11443,7 @@ snapshots: bufferutil: 4.0.9 cross-fetch: 4.1.0 date-fns: 2.30.0 - debug: 4.4.1 + debug: 4.4.3 eciesjs: 0.4.15 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -11239,7 +11467,7 @@ snapshots: '@paulmillr/qr': 0.2.1 bowser: 2.11.0 cross-fetch: 4.1.0 - debug: 4.4.1 + debug: 4.4.3 eciesjs: 0.4.15 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -11275,7 +11503,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 pony-cause: 2.1.11 semver: 7.7.2 uuid: 9.0.1 @@ -11289,7 +11517,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 pony-cause: 2.1.11 semver: 7.7.2 uuid: 9.0.1 @@ -12220,7 +12448,7 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@rainbow-me/rainbowkit@2.2.5(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(wagmi@2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))': + '@rainbow-me/rainbowkit@2.2.5(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(wagmi@2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4))': dependencies: '@tanstack/react-query': 5.80.2(react@18.3.1) '@vanilla-extract/css': 1.15.5(babel-plugin-macros@3.1.0) @@ -12233,7 +12461,7 @@ snapshots: react-remove-scroll: 2.6.2(@types/react@18.2.57)(react@18.3.1) ua-parser-js: 1.0.40 viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - wagmi: 2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + wagmi: 2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) transitivePeerDependencies: - '@types/react' - babel-plugin-macros @@ -12249,11 +12477,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-controllers@1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/universal-provider': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) valtio: 1.13.2(@types/react@18.2.57)(react@18.3.1) viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: @@ -12287,12 +12515,12 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4)': + '@reown/appkit-scaffold-ui@1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-ui': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-utils': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4) + '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-ui': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-utils': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4) '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) lit: 3.1.0 transitivePeerDependencies: @@ -12323,10 +12551,10 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-ui@1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) lit: 3.1.0 qrcode: 1.5.3 @@ -12357,14 +12585,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4)': + '@reown/appkit-utils@1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.3 '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/universal-provider': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) valtio: 1.13.2(@types/react@18.2.57)(react@18.3.1) viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: @@ -12405,17 +12633,17 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit@1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.3 - '@reown/appkit-scaffold-ui': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4) - '@reown/appkit-ui': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-utils': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4) + '@reown/appkit-scaffold-ui': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4) + '@reown/appkit-ui': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-utils': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.2.57)(react@18.3.1))(zod@3.22.4) '@reown/appkit-wallet': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.19.2 - '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.19.2(@upstash/redis@1.35.6) + '@walletconnect/universal-provider': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) bs58: 6.0.0 valtio: 1.13.2(@types/react@18.2.57)(react@18.3.1) viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) @@ -13091,6 +13319,8 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} + '@standard-schema/spec@1.0.0': {} + '@storybook/addon-actions@8.5.8(storybook@8.5.8(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))': dependencies: '@storybook/global': 5.0.0 @@ -13657,6 +13887,53 @@ snapshots: dependencies: storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10) + '@supabase/auth-js@2.78.0': + dependencies: + '@supabase/node-fetch': 2.6.15 + tslib: 2.8.1 + + '@supabase/functions-js@2.78.0': + dependencies: + '@supabase/node-fetch': 2.6.15 + tslib: 2.8.1 + + '@supabase/node-fetch@2.6.15': + dependencies: + whatwg-url: 5.0.0 + + '@supabase/postgrest-js@2.78.0': + dependencies: + '@supabase/node-fetch': 2.6.15 + tslib: 2.8.1 + + '@supabase/realtime-js@2.78.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@supabase/node-fetch': 2.6.15 + '@types/phoenix': 1.6.6 + '@types/ws': 8.18.1 + tslib: 2.8.1 + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@supabase/storage-js@2.78.0': + dependencies: + '@supabase/node-fetch': 2.6.15 + tslib: 2.8.1 + + '@supabase/supabase-js@2.78.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@supabase/auth-js': 2.78.0 + '@supabase/functions-js': 2.78.0 + '@supabase/node-fetch': 2.6.15 + '@supabase/postgrest-js': 2.78.0 + '@supabase/realtime-js': 2.78.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@supabase/storage-js': 2.78.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -13868,6 +14145,11 @@ snapshots: '@types/canvas-confetti@1.9.0': {} + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + '@types/connect@3.4.38': dependencies: '@types/node': 20.17.57 @@ -13904,6 +14186,8 @@ snapshots: dependencies: '@types/node': 20.17.57 + '@types/deep-eql@4.0.2': {} + '@types/doctrine@0.0.9': {} '@types/eslint-scope@3.7.7': @@ -13966,6 +14250,8 @@ snapshots: pg-protocol: 1.10.3 pg-types: 2.2.0 + '@types/phoenix@1.6.6': {} + '@types/prop-types@15.7.14': {} '@types/react-dom@18.2.19': @@ -14018,6 +14304,10 @@ snapshots: '@types/webxr@0.5.22': {} + '@types/ws@8.18.1': + dependencies: + '@types/node': 20.17.57 + '@types/xml2js@0.4.14': dependencies: '@types/node': 20.17.57 @@ -14086,7 +14376,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -14291,6 +14581,10 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.7.9': optional: true + '@upstash/redis@1.35.6': + dependencies: + uncrypto: 0.1.3 + '@vanilla-extract/css@1.15.5(babel-plugin-macros@3.1.0)': dependencies: '@emotion/hash': 0.9.2 @@ -14325,6 +14619,23 @@ snapshots: chai: 5.2.0 tinyrainbow: 1.2.0 + '@vitest/expect@4.0.8': + dependencies: + '@standard-schema/spec': 1.0.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.8 + '@vitest/utils': 4.0.8 + chai: 6.2.0 + tinyrainbow: 3.0.3 + + '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@20.17.57)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 4.0.8 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.2.2(@types/node@20.17.57)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0) + '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 @@ -14333,10 +14644,38 @@ snapshots: dependencies: tinyrainbow: 1.2.0 + '@vitest/pretty-format@4.0.8': + dependencies: + tinyrainbow: 3.0.3 + + '@vitest/runner@4.0.8': + dependencies: + '@vitest/utils': 4.0.8 + pathe: 2.0.3 + + '@vitest/snapshot@4.0.8': + dependencies: + '@vitest/pretty-format': 4.0.8 + magic-string: 0.30.21 + pathe: 2.0.3 + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 + '@vitest/spy@4.0.8': {} + + '@vitest/ui@4.0.8(vitest@4.0.8)': + dependencies: + '@vitest/utils': 4.0.8 + fflate: 0.8.2 + flatted: 3.3.3 + pathe: 2.0.3 + sirv: 3.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vitest: 4.0.8(@types/debug@4.1.12)(@types/node@20.17.57)(@vitest/ui@4.0.8)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0) + '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -14350,14 +14689,19 @@ snapshots: loupe: 3.1.3 tinyrainbow: 1.2.0 - '@wagmi/connectors@5.8.3(@types/react@18.2.57)(@wagmi/core@2.17.2(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': + '@vitest/utils@4.0.8': + dependencies: + '@vitest/pretty-format': 4.0.8 + tinyrainbow: 3.0.3 + + '@wagmi/connectors@5.8.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(@wagmi/core@2.17.2(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': dependencies: '@coinbase/wallet-sdk': 4.3.0 '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@wagmi/core': 2.17.2(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)) - '@walletconnect/ethereum-provider': 2.20.2(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/ethereum-provider': 2.20.2(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) optionalDependencies: @@ -14419,21 +14763,21 @@ snapshots: - react - use-sync-external-store - '@walletconnect/core@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/core@2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.2 - '@walletconnect/utils': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.19.2(@upstash/redis@1.35.6) + '@walletconnect/utils': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14462,21 +14806,21 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/core@2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.20.2 - '@walletconnect/utils': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.20.2(@upstash/redis@1.35.6) + '@walletconnect/utils': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14509,18 +14853,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.20.2(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/ethereum-provider@2.20.2(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@reown/appkit': 1.7.3(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit': 1.7.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/sign-client': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@walletconnect/types': 2.20.2 - '@walletconnect/universal-provider': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@walletconnect/utils': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) + '@walletconnect/sign-client': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.20.2(@upstash/redis@1.35.6) + '@walletconnect/universal-provider': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14596,11 +14940,11 @@ snapshots: - bufferutil - utf-8-validate - '@walletconnect/keyvaluestorage@1.1.1': + '@walletconnect/keyvaluestorage@1.1.1(@upstash/redis@1.35.6)': dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.2 - unstorage: 1.16.0(idb-keyval@6.2.2) + unstorage: 1.16.0(@upstash/redis@1.35.6)(idb-keyval@6.2.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14641,16 +14985,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/sign-client@2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@walletconnect/core': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/core': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.2 - '@walletconnect/utils': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.19.2(@upstash/redis@1.35.6) + '@walletconnect/utils': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14676,16 +15020,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/sign-client@2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@walletconnect/core': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/core': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.20.2 - '@walletconnect/utils': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.20.2(@upstash/redis@1.35.6) + '@walletconnect/utils': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14715,12 +15059,12 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/types@2.19.2': + '@walletconnect/types@2.19.2(@upstash/redis@1.35.6)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -14743,12 +15087,12 @@ snapshots: - ioredis - uploadthing - '@walletconnect/types@2.20.2': + '@walletconnect/types@2.20.2(@upstash/redis@1.35.6)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -14771,18 +15115,18 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/universal-provider@2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@walletconnect/types': 2.19.2 - '@walletconnect/utils': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/sign-client': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.19.2(@upstash/redis@1.35.6) + '@walletconnect/utils': 2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -14810,18 +15154,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/universal-provider@2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) - '@walletconnect/types': 2.20.2 - '@walletconnect/utils': 2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/sign-client': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/types': 2.20.2(@upstash/redis@1.35.6) + '@walletconnect/utils': 2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -14849,18 +15193,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/utils@2.19.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.2 + '@walletconnect/types': 2.19.2(@upstash/redis@1.35.6) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 @@ -14892,18 +15236,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.20.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/utils@2.20.2(@upstash/redis@1.35.6)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/keyvaluestorage': 1.1.1(@upstash/redis@1.35.6) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.20.2 + '@walletconnect/types': 2.20.2(@upstash/redis@1.35.6) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 @@ -15058,7 +15402,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -15505,6 +15849,8 @@ snapshots: loupe: 3.1.3 pathval: 2.0.0 + chai@6.2.0: {} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -16718,6 +17064,8 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + expect-type@1.2.2: {} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -16769,6 +17117,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + fflate@0.8.2: {} file-entry-cache@6.0.1: @@ -17204,7 +17556,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -17695,6 +18047,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@0.30.8: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -18167,7 +18523,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -18606,6 +18962,8 @@ snapshots: path-type@4.0.0: {} + pathe@2.0.3: {} + pathval@2.0.0: {} pbkdf2@3.1.2: @@ -18636,6 +18994,8 @@ snapshots: picomatch@4.0.2: {} + picomatch@4.0.3: {} + pidtree@0.6.0: {} pify@2.3.0: {} @@ -18796,6 +19156,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} postgres-bytea@1.0.0: {} @@ -19297,7 +19663,7 @@ snapshots: require-in-the-middle@7.5.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 module-details-from-path: 1.0.4 resolve: 1.22.10 transitivePeerDependencies: @@ -19587,6 +19953,8 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@4.1.0: {} simple-swizzle@0.2.2: @@ -19601,6 +19969,12 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + slash@3.0.0: {} slice-ansi@5.0.0: @@ -19663,12 +20037,16 @@ snapshots: stable-hash@0.0.5: {} + stackback@0.0.2: {} + stackframe@1.3.4: {} stacktrace-parser@0.1.11: dependencies: type-fest: 0.7.1 + std-env@3.10.0: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -20051,15 +20429,26 @@ snapshots: tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} + tinycolor2@1.6.0: {} + tinyexec@0.3.2: {} + tinyglobby@0.2.14: dependencies: fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinyrainbow@1.2.0: {} + tinyrainbow@3.0.3: {} + tinyspy@3.0.2: {} to-buffer@1.1.1: {} @@ -20340,7 +20729,7 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.7.9 '@unrs/resolver-binding-win32-x64-msvc': 1.7.9 - unstorage@1.16.0(idb-keyval@6.2.2): + unstorage@1.16.0(@upstash/redis@1.35.6)(idb-keyval@6.2.2): dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -20351,6 +20740,7 @@ snapshots: ofetch: 1.4.1 ufo: 1.6.1 optionalDependencies: + '@upstash/redis': 1.35.6 idb-keyval: 6.2.2 update-browserslist-db@1.1.3(browserslist@4.25.0): @@ -20530,12 +20920,67 @@ snapshots: - utf-8-validate - zod + vite@7.2.2(@types/node@20.17.57)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0): + dependencies: + esbuild: 0.25.5 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.46.2 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 20.17.57 + fsevents: 2.3.3 + jiti: 1.21.7 + terser: 5.40.0 + yaml: 2.8.0 + + vitest@4.0.8(@types/debug@4.1.12)(@types/node@20.17.57)(@vitest/ui@4.0.8)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0): + dependencies: + '@vitest/expect': 4.0.8 + '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@20.17.57)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0)) + '@vitest/pretty-format': 4.0.8 + '@vitest/runner': 4.0.8 + '@vitest/snapshot': 4.0.8 + '@vitest/spy': 4.0.8 + '@vitest/utils': 4.0.8 + debug: 4.4.3 + es-module-lexer: 1.7.0 + expect-type: 1.2.2 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.2.2(@types/node@20.17.57)(jiti@1.21.7)(terser@5.40.0)(yaml@2.8.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 20.17.57 + '@vitest/ui': 4.0.8(vitest@4.0.8) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + vm-browserify@1.1.2: {} - wagmi@2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4): + wagmi@2.15.4(@tanstack/query-core@5.80.2)(@tanstack/react-query@5.80.2(react@18.3.1))(@types/react@18.2.57)(@upstash/redis@1.35.6)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4): dependencies: '@tanstack/react-query': 5.80.2(react@18.3.1) - '@wagmi/connectors': 5.8.3(@types/react@18.2.57)(@wagmi/core@2.17.2(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@wagmi/connectors': 5.8.3(@types/react@18.2.57)(@upstash/redis@1.35.6)(@wagmi/core@2.17.2(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) '@wagmi/core': 2.17.2(@tanstack/query-core@5.80.2)(@types/react@18.2.57)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) @@ -20703,6 +21148,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + word-wrap@1.2.5: {} wrap-ansi@6.2.0: diff --git a/scripts/generateMockData.ts b/scripts/generateMockData.ts new file mode 100644 index 00000000000..8f613131d22 --- /dev/null +++ b/scripts/generateMockData.ts @@ -0,0 +1,194 @@ +import fs from "fs/promises" +import path from "path" + +// Load environment variables from .env.local or .env (same pattern as playwright.config.ts) +// Using require() here because dotenv needs to be loaded before other imports +// eslint-disable-next-line @typescript-eslint/no-var-requires +const dotenv = require("dotenv") +try { + dotenv.config({ path: path.resolve(__dirname, "../.env.local") }) + dotenv.config({ path: path.resolve(__dirname, "../.env") }) +} catch (error) { + // dotenv might not be available or files might not exist - that's okay + // Environment variables might be set another way (e.g., system env vars) +} + +import { getRedisData } from "@/lib/utils/data/clients/redisClient" +import { getSupabaseData } from "@/lib/utils/data/clients/supabaseClient" + +import { + externalServicesDaily, + externalServicesHourly, +} from "@/data/external-services" + +const MOCK_DATA_DIR = path.resolve("src/data/mocks") + +async function generateAllMockData() { + console.log("🔄 Generating mock data for all external services...\n") + console.log("📡 Fetching from Redis/Supabase...\n") + + const allServices = [...externalServicesHourly, ...externalServicesDaily] + const allKeys = allServices.map((service) => service.key) + + // Fetch all data from Redis/Supabase, with fallback to fresh fetch + const fetchResults = await Promise.all( + allKeys.map(async (key) => { + try { + // Try Redis first + let data = await getRedisData(key, 3600) // Use 1 hour revalidation + + // Fallback to Supabase if Redis returns null + if (data === null) { + data = await getSupabaseData(key, 3600) // Use 1 hour revalidation + } + + // If still not found in cache, try fetching fresh data + if (data === null) { + const service = allServices.find((s) => s.key === key) + if (service) { + console.log( + ` ⚠️ ${service.name} not in cache, fetching fresh data...` + ) + try { + const freshData = await service.function() + // Only use fresh data if it's not an error response + if ( + freshData && + typeof freshData === "object" && + !("error" in freshData) + ) { + data = freshData + } else if ( + freshData && + typeof freshData === "object" && + "error" in freshData + ) { + console.error( + ` ❌ ${service.name} fetch returned error: ${freshData.error}` + ) + } + } catch (fetchError) { + console.error( + ` ❌ Failed to fetch fresh data for ${service.name}:`, + fetchError instanceof Error + ? fetchError.message + : String(fetchError) + ) + } + } + } + + return { key, data } + } catch (error) { + console.error(`Error fetching data for key "${key}":`, error) + return { key, data: null } + } + }) + ) + + // Build the data map + const dataMap = fetchResults.reduce( + (acc, { key, data }) => { + if (data !== null && data !== undefined) { + acc[key] = data + } + return acc + }, + {} as Record + ) + + if (Object.keys(dataMap).length === 0) { + console.error("❌ Failed to fetch any data from Redis/Supabase") + process.exit(1) + } + + const saveResults: Array<{ key: string; success: boolean; error?: string }> = + [] + + // Save each key's data to a mock file + for (const service of allServices) { + const data = dataMap[service.key] + + if (!data) { + console.warn(`⚠️ No data found for ${service.name} (${service.key})`) + saveResults.push({ + key: service.key, + success: false, + error: "No data in response", + }) + continue + } + + if (data && typeof data === "object" && "error" in data) { + const errorMessage = + typeof data.error === "string" ? data.error : String(data.error) + console.error(` ❌ ${service.name}: ${errorMessage}`) + saveResults.push({ + key: service.key, + success: false, + error: errorMessage, + }) + continue + } + + try { + const outputPath = path.join(MOCK_DATA_DIR, `${service.key}.json`) + const jsonData = JSON.stringify(data, null, 2) + + await fs.writeFile(outputPath, jsonData, "utf-8") + + // Log success with data info + if (data && typeof data === "object" && "value" in data) { + const value = data.value + if (Array.isArray(value)) { + console.log(` ✅ ${service.name}: Saved ${value.length} items`) + } else if (typeof value === "object" && value !== null) { + const keys = Object.keys(value) + console.log( + ` ✅ ${service.name}: Saved object with ${keys.length} keys` + ) + } else if (typeof value === "number") { + console.log(` ✅ ${service.name}: Saved value: ${value}`) + } else { + console.log(` ✅ ${service.name}: Saved`) + } + } else { + console.log(` ✅ ${service.name}: Saved`) + } + + saveResults.push({ key: service.key, success: true }) + } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error) + console.error(` ❌ ${service.name}: Failed to save - ${errorMessage}`) + saveResults.push({ + key: service.key, + success: false, + error: errorMessage, + }) + } + } + + // Summary + console.log("\n" + "=".repeat(60)) + console.log("📊 Summary:") + const successful = saveResults.filter((r) => r.success).length + const failed = saveResults.filter((r) => !r.success).length + console.log(` ✅ Successful: ${successful}/${saveResults.length}`) + if (failed > 0) { + console.log(` ❌ Failed: ${failed}/${saveResults.length}`) + console.log("\nFailed services:") + saveResults + .filter((r) => !r.success) + .forEach((r) => { + const service = allServices.find((s) => s.key === r.key) + console.log(` - ${service?.name || r.key}: ${r.error}`) + }) + } + console.log("=".repeat(60)) +} + +generateAllMockData().catch((error) => { + console.error("Fatal error generating mock data:", error) + process.exit(1) +}) diff --git a/src/data/external-services/index.ts b/src/data/external-services/index.ts new file mode 100644 index 00000000000..3980234142b --- /dev/null +++ b/src/data/external-services/index.ts @@ -0,0 +1,144 @@ +import { every } from "@/lib/utils/time" + +import { fetchApps } from "@/lib/api/fetchApps" +import { fetchAttestantPosts } from "@/lib/api/fetchAttestantPosts" +import { fetchBeaconchainEpoch } from "@/lib/api/fetchBeaconchainEpoch" +import { fetchBeaconchainEthstore } from "@/lib/api/fetchBeaconchainEthstore" +import { fetchCalendarEvents } from "@/lib/api/fetchCalendarEvents" +import { fetchCommunityPicks } from "@/lib/api/fetchCommunityPicks" +import { fetchEthereumMarketcap } from "@/lib/api/fetchEthereumMarketcap" +import { fetchEthereumStablecoinsMcap } from "@/lib/api/fetchEthereumStablecoinsMcap" +import { fetchEthPrice } from "@/lib/api/fetchEthPrice" +import { fetchFrameworkGitHubData } from "@/lib/api/fetchFrameworkGitHubData" +import { fetchGFIs } from "@/lib/api/fetchGFIs" +import { fetchGrowThePie } from "@/lib/api/fetchGrowThePie" +import { fetchGrowThePieBlockspace } from "@/lib/api/fetchGrowThePieBlockspace" +import { fetchGrowThePieMaster } from "@/lib/api/fetchGrowThePieMaster" +import { fetchL2beat } from "@/lib/api/fetchL2beat" +import { fetchBlogFeeds } from "@/lib/api/fetchRSS" +import { fetchStablecoinsData } from "@/lib/api/fetchStablecoinsData" +import { fetchTotalValueLocked } from "@/lib/api/fetchTotalValueLocked" + +export interface ExternalService { + name: string + key: string + attribution?: string // TODO: Add attribution to the service info + function: () => Promise + revalidationTime: number // Revalidation time in seconds +} + +// Services that should be fetched hourly +export const externalServicesHourly: ExternalService[] = [ + { + name: "Beaconcha.in epoch", + key: "beaconchainEpoch", + function: fetchBeaconchainEpoch, + revalidationTime: every("hour"), + }, + { + name: "Beaconcha.in ethstore (APR)", + key: "beaconchainApr", + function: fetchBeaconchainEthstore, + revalidationTime: every("hour"), + }, + { + name: "ETH Price - CoinGecko", + key: "ethPrice", + function: fetchEthPrice, + revalidationTime: every("hour"), + }, + { + name: "Ethereum Market Cap - CoinGecko", + key: "ethereumMarketcap", + function: fetchEthereumMarketcap, + revalidationTime: every("hour"), + }, + { + name: "Ethereum Stablecoins Market Cap - Llama.fi", + key: "ethereumStablecoinsMcap", + function: fetchEthereumStablecoinsMcap, + revalidationTime: every("hour"), + }, + { + name: "TVL - Defi Llama", + key: "totalValueLocked", + function: fetchTotalValueLocked, + revalidationTime: every("hour"), + }, + { + name: "GrowThePie - Transaction Data", + key: "growThePie", + function: fetchGrowThePie, + revalidationTime: every("hour"), + }, + { + name: "GrowThePie - Blockspace Data", + key: "growThePieBlockspace", + function: fetchGrowThePieBlockspace, + revalidationTime: every("hour"), + }, + { + name: "GrowThePie - Master Data", + key: "growThePieMaster", + function: fetchGrowThePieMaster, + revalidationTime: every("hour"), + }, + { + name: "L2beat - Scaling Summary", + key: "l2beatData", + function: fetchL2beat, + revalidationTime: every("hour"), + }, + { + name: "Stablecoins Data - CoinGecko", + key: "stablecoinsData", + function: fetchStablecoinsData, + revalidationTime: every("hour"), + }, +] + +// Services that should be fetched daily +export const externalServicesDaily: ExternalService[] = [ + { + name: "Calendar Events - Google Calendar", + key: "calendarEvents", + function: fetchCalendarEvents, + revalidationTime: every("day"), + }, + { + name: "Attestant Posts", + key: "attestantPosts", + function: fetchAttestantPosts, + revalidationTime: every("day"), + }, + { + name: "Blog Feeds", + key: "blogFeeds", + function: fetchBlogFeeds, + revalidationTime: every("day"), + }, + { + name: "Apps - Google Sheets", + key: "appsData", + function: fetchApps, + revalidationTime: every("day"), + }, + { + name: "Community Picks", + key: "communityPicks", + function: fetchCommunityPicks, + revalidationTime: every("day"), + }, + { + name: "GitHub Good First Issues", + key: "gfissues", + function: fetchGFIs, + revalidationTime: every("day"), + }, + { + name: "Framework GitHub Data", + key: "frameworkGitHubData", + function: fetchFrameworkGitHubData, + revalidationTime: every("day"), + }, +] diff --git a/src/lib/api/ghRepoData.ts b/src/data/frameworks/frameworks-data.ts similarity index 55% rename from src/lib/api/ghRepoData.ts rename to src/data/frameworks/frameworks-data.ts index 876e72d2e14..401d382161b 100644 --- a/src/lib/api/ghRepoData.ts +++ b/src/data/frameworks/frameworks-data.ts @@ -1,12 +1,19 @@ -import { Framework } from "@/lib/interfaces" +/** + * Framework data without image imports. + * This file contains pure data that can be imported by ts-node scripts. + */ -import EthDiamondBlackImage from "@/public/images/assets/eth-diamond-black.png" -import FoundryImage from "@/public/images/dev-tools/foundry.png" -import HardhatImage from "@/public/images/dev-tools/hardhat.png" -import KurtosisImage from "@/public/images/dev-tools/kurtosis.png" -import ScaffoldEthImage from "@/public/images/dev-tools/scaffoldeth.png" +export interface FrameworkData { + id: string + url: string + githubUrl: string + background: string + name: string + description: string + alt: string +} -const frameworksList: Array = [ +export const frameworksListData: FrameworkData[] = [ { id: "Kurtosis Ethereum Package", url: "https://github.com/kurtosis-tech/ethereum-package", @@ -16,7 +23,6 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-kurtosis-desc", alt: "page-developers-local-environment:page-local-environment-kurtosis-logo-alt", - image: KurtosisImage, }, { id: "hardhat", @@ -27,7 +33,6 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-hardhat-desc", alt: "page-developers-local-environment:page-local-environment-hardhat-logo-alt", - image: HardhatImage, }, { id: "brownie", @@ -38,7 +43,6 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-brownie-desc", alt: "page-developers-local-environment:page-local-environment-brownie-logo-alt", - image: EthDiamondBlackImage, }, { id: "createethapp", @@ -49,7 +53,6 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-eth-app-desc", alt: "page-developers-local-environment:page-local-environment-eth-app-logo-alt", - image: EthDiamondBlackImage, }, { id: "scaffoldeth", @@ -60,7 +63,6 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-scaffold-eth-desc", alt: "page-local-environment-scaffold-eth-logo-alt", - image: ScaffoldEthImage, }, { id: "soliditytemplate", @@ -71,7 +73,6 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-solidity-template-desc", alt: "page-developers-local-environment:page-local-environment-solidity-template-logo-alt", - image: EthDiamondBlackImage, }, { id: "foundry", @@ -82,59 +83,5 @@ const frameworksList: Array = [ description: "page-developers-local-environment:page-local-environment-foundry-desc", alt: "page-developers-local-environment:page-local-environment-foundry-logo-alt", - image: FoundryImage, }, ] - -export const ghRepoData = async (githubUrl: string) => { - const split = githubUrl.split("/") - const repoOwner = split[split.length - 2] - const repoName = split[split.length - 1] - const repoReq = await fetch( - `https://api.github.com/repos/${repoOwner}/${repoName}`, - { - headers: { - Authorization: `Bearer ${process.env.GITHUB_TOKEN_READ_ONLY}`, - }, - } - ) - if (!repoReq.ok) { - console.log(repoReq.status, repoReq.statusText) - throw new Error("Failed to fetch Github repo data") - } - - const repoData = await repoReq.json() - - const languageReq = await fetch( - `https://api.github.com/repos/${repoOwner}/${repoName}/languages`, - { - headers: { - Authorization: `Bearer ${process.env.GITHUB_TOKEN_READ_ONLY}`, - }, - } - ) - if (!languageReq.ok) { - console.log(languageReq.status, languageReq.statusText) - throw new Error("Failed to fetch Github repo language data") - } - const languageData = await languageReq.json() - - return { - starCount: repoData.stargazers_count, - languages: Object.keys(languageData), - } -} - -export const getLocalEnvironmentFrameworkData = async () => { - const frameworksListData = await Promise.all( - frameworksList.map(async (framework) => { - const repoData = await ghRepoData(framework.githubUrl) - return { - ...framework, - starCount: repoData.starCount, - languages: repoData.languages.slice(0, 2), - } - }) - ) - return frameworksListData -} diff --git a/src/data/frameworks/frameworks.ts b/src/data/frameworks/frameworks.ts new file mode 100644 index 00000000000..108ba4e4de3 --- /dev/null +++ b/src/data/frameworks/frameworks.ts @@ -0,0 +1,28 @@ +import type { StaticImageData } from "next/image" + +import type { Framework } from "@/lib/interfaces" + +import { frameworksListData } from "./frameworks-data" + +import EthDiamondBlackImage from "@/public/images/assets/eth-diamond-black.png" +import FoundryImage from "@/public/images/dev-tools/foundry.png" +import HardhatImage from "@/public/images/dev-tools/hardhat.png" +import KurtosisImage from "@/public/images/dev-tools/kurtosis.png" +import ScaffoldEthImage from "@/public/images/dev-tools/scaffoldeth.png" + +const imageMap: Record = { + "Kurtosis Ethereum Package": KurtosisImage, + hardhat: HardhatImage, + brownie: EthDiamondBlackImage, + createethapp: EthDiamondBlackImage, + scaffoldeth: ScaffoldEthImage, + soliditytemplate: EthDiamondBlackImage, + foundry: FoundryImage, +} + +export const frameworksList: Array = frameworksListData.map( + (framework) => ({ + ...framework, + image: imageMap[framework.id] || EthDiamondBlackImage, + }) +) diff --git a/src/data/mocks/appsData.json b/src/data/mocks/appsData.json index 7719d2407a3..e0d9e5af0d4 100644 --- a/src/data/mocks/appsData.json +++ b/src/data/mocks/appsData.json @@ -1,4840 +1,6240 @@ { - "DeFi": [ - { - "name": "Aave", - "url": "https://aave.com", - "description": "Aave is a decentralised non-custodial liquidity protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market while earning interest, and borrowers can access liquidity by providing collateral that exceeds the borrowed amount.", - "image": "https://i.imgur.com/iaxZ9N8.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing" - ], - "networks": [ - "Base", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/gfy4ae2.png", - "https://i.imgur.com/RRyZ9HN.png" - ], - "bannerImage": "https://i.imgur.com/lCDltCK.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/aave", - "github": "https://github.com/aave", - "discord": "https://discord.com/invite/aave", - "kpiUrl": "", - "sortingWeight": 1, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Avara", - "parentCompanyURL": "https://avara.xyz", - "openSource": true, - "contractAddress": "https://aave.com/docs/resources/addresses", - "dateOfLaunch": "9/18/2018", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Sky/Maker - USDS", - "url": "https://sky.money/", - "description": "Sky.money is a non-custodial gateway to the decentralized Sky Protocol, which centers around the USDS stablecoin.", - "image": "https://i.imgur.com/qwvHjfZ.png", - "category": "DeFi", - "subCategory": [ - "Stablecoin issuance", - "RWA", - "Lending and borrowing" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/YrlOLfQ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/SkyEcosystem", - "github": "https://github.com/sky-ecosystem", - "discord": "https://discord.com/invite/skyecosystem", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Sky Ecosystem", - "parentCompanyURL": "https://sky.money/", - "openSource": true, - "contractAddress": "https://developers.sky.money/quick-start/deployments-tracker/", - "dateOfLaunch": "9/18/2024", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Ethena - USDE", - "url": "https://ethena.fi/", - "description": "Ethena is a synthetic dollar protocol built on Ethereum that provides a crypto-native solution for money, USDe, alongside a globally accessible dollar savings asset, sUSDe.", - "image": "https://i.imgur.com/4Y0s8zC.png", - "category": "DeFi", - "subCategory": [ - "RWA", - "Stablecoin issuance", - "Yield" - ], - "networks": [ - "Base", - "Linea", - "Blast", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/jE4oO4N.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/ethena_labs", - "github": "https://github.com/ethena-labs", - "discord": "https://discord.com/invite/ethena", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Ethena Labs", - "parentCompanyURL": "https://ethena.fi/", - "openSource": true, - "contractAddress": "https://docs.ethena.fi/api-documentation/overview", - "dateOfLaunch": "2/19/2024", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Uniswap", - "url": "https://app.uniswap.org/", - "description": "Uniswap is an automated liquidity protocol powered by a constant product formula and implemented in a system of non-upgradeable smart contracts on the Ethereum blockchain. It obviates the need for trusted intermediaries, prioritizing decentralization, censorship resistance, and security.", - "image": "https://i.imgur.com/6NqxUnZ.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Base", - "Blast", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/rah0enO.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://x.com/Uniswap/", - "github": "https://github.com/uniswap", - "discord": "https://discord.com/invite/uniswap", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English", - "Chinese", - "Japanese", - "French", - "Portuguese", - "Spanish", - "Vietnamese" - ], - "parentCompany": "Uniswap Labs", - "parentCompanyURL": "https://uniswap.org", - "openSource": true, - "contractAddress": "https://docs.uniswap.org/contracts/v4/deployments", - "dateOfLaunch": "11/2/2018", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Pendle", - "url": "https://www.pendle.finance/", - "description": "Pendle is a DeFi protocol focused on yield trading, allowing users to both fix or leverage their yield.", - "image": "https://i.imgur.com/WyUeZqC.png", - "category": "DeFi", - "subCategory": [ - "RWA" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/Ki7C0XF.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/pendle_fi/", - "github": "https://github.com/pendle-finance", - "discord": "https://discord.com/invite/EAujvncY2R", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English", - "Chinese" - ], - "parentCompany": "Pendle Finance", - "parentCompanyURL": "https://www.pendle.finance/", - "openSource": true, - "contractAddress": "https://github.com/pendle-finance/pendle-core-v2-public/blob/main/deployments/1-core.json", - "dateOfLaunch": "6/17/2021", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Spark", - "url": "https://spark.fi/", - "description": "Spark Fi is a non-custodial DeFi protocol that allows users to lend and borrow digital assets through SparkLend, while earning passive income via the USDS stablecoin and its associated Sky Savings Rate.", - "image": "https://i.imgur.com/XsBN52D.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing", - "RWA" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/54aFOoV.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/sparkdotfi", - "github": "https://github.com/sparkdotfi", - "discord": "https://discord.com/invite/sparkdotfi", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Spark Foundation", - "parentCompanyURL": "https://spark.fi/", - "openSource": true, - "contractAddress": "https://github.com/sparkdotfi/spark-address-registry/tree/master/src", - "dateOfLaunch": "5/9/2023", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Morpho", - "url": "https://morpho.org/", - "description": "Morpho is an open, efficient, and resilient platform that allows anyone to earn yield and borrow assets. At the same time, developers or businesses can create markets, curate vaults, and build a range of applications on its flexible, permissionless infrastructure.", - "image": "https://i.imgur.com/IPLyiMT.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/VrzR6Pp.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/MorphoLabs/", - "github": "https://github.com/morpho-org", - "discord": "https://discord.com/invite/BWXbJMHMdz/", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Morpho Labs", - "parentCompanyURL": "https://morpho.org/", - "openSource": true, - "contractAddress": "https://docs.morpho.org/overview/resources/addresses#addresses", - "dateOfLaunch": "12/20/2022", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Compound", - "url": "https://compound.finance/", - "description": "Compound is an EVM compatible protocol that enables supplying of crypto assets as collateral in order to borrow the base asset. Accounts can also earn interest by supplying the base asset to the protocol.", - "image": "https://i.imgur.com/yFoeO1U.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing" - ], - "networks": [ - "Base", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/oBflT3o.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/compoundfinance/", - "github": "https://github.com/compound-finance", - "discord": "https://discord.com/invite/rps4rfjeGz", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Compound Labs Inc.", - "parentCompanyURL": "https://compound.finance/", - "openSource": true, - "contractAddress": "https://docs.compound.finance/", - "dateOfLaunch": "9/27/2018", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Curve", - "url": "https://www.curve.finance/", - "description": "Curve.fi is a non-custodial decentralized exchange that revolutionized stablecoin trading. It began by offering superior exchange rates for stablecoin swaps (like DAI to USDC) through liquidity pools, where users earn yield by depositing their assets.", - "image": "https://i.imgur.com/NmXvivo.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/8q4O5Hd.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/CurveFinance/", - "github": "https://github.com/curvefi", - "discord": "https://discord.com/invite/9uEHakc", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Curve DAO", - "parentCompanyURL": "https://www.curve.finance/dao/", - "openSource": true, - "contractAddress": "https://docs.curve.finance/deployments/amm/", - "dateOfLaunch": "2/20/2020", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Balancer", - "url": "https://balancer.fi/", - "description": "Balancer is a decentralized automated market maker (AMM) protocol built on Ethereum with a clear focus on fungible and yield-bearing liquidity. Balancer's success is intrinsically linked to the success of protocols and products built on the platform.", - "image": "https://i.imgur.com/9yZ7IJ8.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/u2l56hQ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/Balancer", - "github": "https://github.com/balancer", - "discord": "https://discord.com/invite/fEPBpe6F", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Balancer Labs", - "parentCompanyURL": "https://balancer.fi/", - "openSource": true, - "contractAddress": "https://docs.balancer.fi/developer-reference/contracts/deployment-addresses/mainnet.html", - "dateOfLaunch": "3/31/2020", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Usual ", - "url": "https://usual.money/", - "description": "Usual is a decentralized protocol, embracing the shape of a decentralized banking system. It issues a fiat-backed stablecoin, collateralized by Real-World Assets (RWAs), combining the security of real assets with the composability and liquidity of DeFi.", - "image": "https://i.imgur.com/MPWo9qE.png", - "category": "DeFi", - "subCategory": [ - "RWA", - "Stablecoin issuance", - "Yield" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/MPWo9qE.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/usualmoney", - "github": "https://github.com/usual-dao", - "discord": "https://discord.usual.money/", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Usual Protocol", - "parentCompanyURL": "https://usual.money", - "openSource": true, - "contractAddress": "https://tech.usual.money/smart-contracts/contract-deployments", - "dateOfLaunch": "5/23/2024", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Fluid", - "url": "https://fluid.io/", - "description": "Fluid is a DeFi protocol combining a liquidity layer, automated limits, lending and vault protocols, robust oracle system, and DEX protocol,", - "image": "https://i.imgur.com/5Oh1Lek.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing", - "DEX" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/G2JQeje.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/0xfluid", - "github": "https://github.com/Instadapp", - "discord": "https://discord.com/invite/C76CeZc", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Instadapp", - "parentCompanyURL": "https://instadapp.io/", - "openSource": true, - "contractAddress": "https://github.com/Instadapp/fluid-contracts-public/blob/main/deployments/deployments.md", - "dateOfLaunch": "10/29/2024", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Frax", - "url": "https://frax.finance/", - "description": "Frax currently issues 3 stablecoins: FRAX, FPI, and frxETH, along with numerous other non-stablecoin tokens. There are also multiple contract groups or \"subprotocols\" within it that integrate these tokens to provide utility and stability, including Fraxtal, a modular L2 chain.", - "image": "https://i.imgur.com/2lwTQ6d.png", - "category": "DeFi", - "subCategory": [ - "RWA", - "Stablecoin issuance", - "Lending and borrowing" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/Q2AXkzE.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/fraxfinance", - "github": "https://github.com/FraxFinance", - "discord": "https://discord.gg/fraxfinance", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Frax Finance", - "parentCompanyURL": "https://frax.finance", - "openSource": true, - "contractAddress": "https://docs.frax.com/protocol/assets/frxusd/addresses", - "dateOfLaunch": "12/20/2020", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Aerodrome", - "url": "https://aerodrome.finance/", - "description": "Aerodrome is a decentralized exchange where you can execute low-fee swaps, deposit tokens to earn rewards, and actively participate in the onchain economy.", - "image": "https://i.imgur.com/ESTKcyO.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/fJWk5bn.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/AerodromeFi", - "github": "https://github.com/aerodrome-finance", - "discord": "https://discord.gg/aerodrome", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Aerodrome Finance", - "parentCompanyURL": "https://aerodrome.finance", - "openSource": true, - "contractAddress": "https://aerodrome.finance/security", - "dateOfLaunch": "8/28/2023", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Moonwell", - "url": "https://moonwell.fi/", - "description": "Put your digital assets to work. Lend or borrow to handle whatever life throws your way. Pay it back on your own schedule, with no monthly payments or additional fees.", - "image": "https://i.imgur.com/cIgVDSd.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/WeCuzJq.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/MoonwellDeFi", - "github": "https://github.com/moonwell-fi/", - "discord": "https://discord.com/invite/moonwellfi", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Moonwell", - "parentCompanyURL": "https://moonwell.fi", - "openSource": true, - "contractAddress": "https://docs.moonwell.fi/moonwell/protocol-information/contracts", - "dateOfLaunch": "8/9/2023", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Franklin Templeton - BENJI", - "url": "https://digitalassets.franklintempleton.com/benji/", - "description": "Benji is Franklin Templeton's proprietary blockchain-integrated recordkeeping system that enables the tokenization and servicing of mutual funds on public blockchain infrastructure.", - "image": "https://i.imgur.com/e7QgHwP.png", - "category": "DeFi", - "subCategory": [ - "RWA" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/8FU1YZ3.png", - "platforms": [ - "Browser" - ], - "twitter": "", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Franklin Templeton", - "parentCompanyURL": "https://franklintempleton.com", - "openSource": false, - "contractAddress": "https://digitalassets.franklintempleton.com/benji/benji-contracts/", - "dateOfLaunch": "11/14/2024", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Synthetix", - "url": "https://synthetix.io/", - "description": "Synthetix provides liquidity for permissionless derivatives like perpetual futures, options, parimutuel markets, and more across EVM chains.", - "image": "https://i.imgur.com/v4Xkjp7.png", - "category": "DeFi", - "subCategory": [ - "Prediction" - ], - "networks": [ - "Ethereum Mainnet", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/eOcFBl5.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/synthetix_io", - "github": "https://github.com/synthetixio", - "discord": "https://discord.gg/synthetix", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Synthetix", - "parentCompanyURL": "https://synthetix.io", - "openSource": true, - "contractAddress": "https://github.com/Synthetixio/synthetix-deployments", - "dateOfLaunch": "6/26/2018", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "ZeroLend", - "url": "https://zerolend.xyz/", - "description": "ZeroLend is a user-friendly and frictionless lending experience to onboard the masses to Defi. Built on L2s.", - "image": "https://i.imgur.com/WKj2WDX.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing" - ], - "networks": [ - "Linea", - "Blast", - "Ethereum Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/MjlZo57.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/zerolendxyz", - "github": "https://github.com/zerolend", - "discord": "https://discord.gg/zerolend", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "ZeroLend", - "parentCompanyURL": "https://zerolend.xyz", - "openSource": true, - "contractAddress": "https://docs.zerolend.xyz/security/deployed-addresses", - "dateOfLaunch": "1/1/2023", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "SyncSwap", - "url": "https://syncswap.xyz/", - "description": "Powered by zero-knowledge technology, SyncSwap brings more people easy-to-use and low-cost DeFi with complete Ethereum security.", - "image": "https://i.imgur.com/vpk2LXa.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Scroll", - "Linea", - "zkSync Mainnet", - "Taiko Alethia" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/CEPC1m9.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/syncswap", - "github": "https://github.com/syncswap", - "discord": "https://discord.gg/syncswap", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "SyncSwap", - "parentCompanyURL": "https://syncswap.xyz", - "openSource": true, - "contractAddress": "https://docs.syncswap.xyz/syncswap/smart-contracts/smart-contracts", - "dateOfLaunch": "3/4/2023", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Ekubo", - "url": "https://ekubo.org/", - "description": "Ekubo is an automated market maker, with several unique features including concentrated liquidity and a extensible and gas efficient architecture.", - "image": "https://i.imgur.com/xFOVA9S.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Starknet", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/VCZaLrd.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/EkuboProtocol", - "github": "https://github.com/EkuboProtocol", - "discord": "https://discord.com/invite/RFbSXxtqUG", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Ekubo", - "parentCompanyURL": "https://ekubo.org", - "openSource": true, - "contractAddress": "https://docs.ekubo.org/integration-guides/reference/contract-addresses", - "dateOfLaunch": "8/26/2023", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Maple", - "url": "https://maple.finance/", - "description": "Maple delivers full-spectrum yield strategies and financing across USDC, USDT, BTC, and more – for institutions and onchain participants around the world.", - "image": "https://i.imgur.com/39h1fde.png", - "category": "DeFi", - "subCategory": [ - "RWA", - "Lending and borrowing" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/tpdQ0Hx.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/maplefinance", - "github": "https://github.com/maple-labs/address-registry/blob/main/MapleAddressRegistryETH.md", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Maple Finance", - "parentCompanyURL": "https://maple.finance", - "openSource": true, - "contractAddress": "https://github.com/maple-labs/address-registry/blob/main/MapleAddressRegistryETH.md", - "dateOfLaunch": "5/12/2021", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Centrifuge", - "url": "https://centrifuge.io/", - "description": "Centrifuge is the platform for tokenized real-world assets, providing the infrastructure and ecosystem to tokenize, manage, and invest into RWAs.", - "image": "https://i.imgur.com/JSO0lIV.png", - "category": "DeFi", - "subCategory": [ - "RWA" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/blvCZ8y.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/centrifuge", - "github": "https://github.com/centrifuge/", - "discord": "https://discord.com/invite/yEzyUq5gxF", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Centrifuge", - "parentCompanyURL": "https:.//centrifuge.io", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "5/22/2023", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Goldfinch", - "url": "https://goldfinch.finance/", - "description": "Goldfinch is a decentralized credit protocol that enables crypto borrowing without crypto collateral. It connects investors with real-world businesses.", - "image": "https://i.imgur.com/iPhuqPh.png", - "category": "DeFi", - "subCategory": [ - "RWA" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/K1R5KEC.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/goldfinch_fi", - "github": "https://github.com/goldfinch-eng", - "discord": "https://discord.com/invite/HVeaca3fN8", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Goldfinch", - "parentCompanyURL": "https://goldfinch.finance", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "1/31/2021", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Superstate", - "url": "https://superstate.com/", - "description": "Superstate connects financial assets with crypto capital markets through on-chain public listings and tokenized securities.", - "image": "https://i.imgur.com/xDIoI7M.png", - "category": "DeFi", - "subCategory": [ - "RWA" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/q3KFe1l.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/superstatefunds", - "github": "https://github.com/superstateinc", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Superstate", - "parentCompanyURL": "https://superstate.co", - "openSource": true, - "contractAddress": "https://docs.superstate.com/introduction-to-superstate/smart-contracts", - "dateOfLaunch": "1/3/2024", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Ondo", - "url": "https://ondo.finance/", - "description": "Ondo designs institutional-grade platforms, assets, and infrastructure to bring financial markets onchain.", - "image": "https://i.imgur.com/lI0Kd4R.png", - "category": "DeFi", - "subCategory": [ - "RWA" - ], - "networks": [ - "Arbitrum One", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/6wE3z1t.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/OndoFinance", - "github": "https://github.com/ondoprotocol", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Ondo", - "parentCompanyURL": "https://ondo.finance", - "openSource": true, - "contractAddress": "https://docs.ondo.finance/addresses", - "dateOfLaunch": "7/27/2021", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "PayPal - PYUSD", - "url": "https://www.paypal.com/pyusd", - "description": "PayPal USD (PYUSD) is a stablecoin backed by secure and highly liquid assets. Buy, sell, hold, and transfer it in the PayPal app or website.", - "image": "https://i.imgur.com/0MC9QNU.png", - "category": "DeFi", - "subCategory": [ - "RWA", - "Stablecoin issuance" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/pDessgi.jpeg", - "https://i.imgur.com/rHoNrFW.jpeg", - "https://i.imgur.com/bRa61P0.jpeg" - ], - "bannerImage": "https://i.imgur.com/N98oDCJ.png", - "platforms": [ - "Browser" - ], - "twitter": "", - "github": "https://github.com/paxosglobal/pyusd-contract", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Paypal", - "parentCompanyURL": "https://paypal.com", - "openSource": false, - "contractAddress": "https://etherscan.io/token/0x6c3ea9036406852006290770bedfcaba0e23a0e8", - "dateOfLaunch": "8/7/2023", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Etherisc", - "url": "https://etherisc.com/", - "description": "Etherisc provides a complete suite of solutions to build, manage, and inspect decentralized insurance products.", - "image": "https://i.imgur.com/ZVOa4fY.png", - "category": "DeFi", - "subCategory": [ - "Insurance" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/EBgQucz.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/etherisc?lang=en", - "github": "https://github.com/etherisc", - "discord": "https://discord.gg/cVsgakVG4R", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Etherisc", - "parentCompanyURL": "https://etherisc.com", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "7/28/2016", - "lastUpdated": "7/28/2016", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Polymarket", - "url": "https://polymarket.com/", - "description": "Polymarket is the world’s largest prediction market, allowing you to stay informed and profit from your knowledge by betting on future events across various topics.", - "image": "https://i.imgur.com/2YlJ2Jq.png", - "category": "DeFi", - "subCategory": [ - "Prediction" - ], - "networks": [], - "screenshots": [], - "bannerImage": "https://i.imgur.com/pXUEFwa.png", - "platforms": [ - "Browser", - "Android", - "iOS" - ], - "twitter": "https://twitter.com/Polymarket", - "github": "", - "discord": "https://discord.gg/Polymarket", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Adventure One QSS Inc", - "parentCompanyURL": "a1qss.com", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "6/16/2020", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "1inch", - "url": "https://1inch.io/", - "description": "1inch is an exchange aggregator that scans decentralized exchanges to find the lowest cryptocurrency prices for traders.", - "image": "https://i.imgur.com/8NYV5YL.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Base", - "Linea", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/v9VqXmC.png", - "platforms": [ - "Browser", - "Android", - "iOS" - ], - "twitter": "https://twitter.com/intent/follow?screen_name=1inch", - "github": "https://github.com/1inch", - "discord": "https://discord.com/invite/1inch", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "1inch", - "parentCompanyURL": "https://1inch.io", - "openSource": true, - "contractAddress": "https://portal.1inch.dev/documentation/contracts/aggregation-protocol/aggregation-introduction", - "dateOfLaunch": "5/9/2019", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Liquity", - "url": "https://www.liquity.org/", - "description": "Liquity v2 is a decentralized borrowing protocol that lets users deposit ETH or LSTs as collateral, and mint the stablecoin BOLD.", - "image": "https://i.imgur.com/mG928HR.png", - "category": "DeFi", - "subCategory": [ - "RWA", - "Lending and borrowing" - ], - "networks": [ - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/4EWjy7M.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/LiquityProtocol", - "github": "https://github.com/liquity/bold", - "discord": "https://discord.com/invite/HFKpCdgQm6", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Liquity", - "parentCompanyURL": "https://liquity.org", - "openSource": true, - "contractAddress": "https://discord.com/invite/HFKpCdgQm6", - "dateOfLaunch": "4/5/2021", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Cowswap", - "url": "https://cowswap.exchange/", - "description": "CoW Swap finds the lowest prices from all decentralized exchanges and DEX aggregators & saves you more with p2p trading and protection from MEV.", - "image": "https://i.imgur.com/9wgR8rv.png", - "category": "DeFi", - "subCategory": [ - "DEX" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/s6mJj9Z.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/CoWSwap", - "github": "https://github.com/cowprotocol", - "discord": "https://discord.com/invite/cowprotocol", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "CoW DAO", - "parentCompanyURL": "https://cowswap.exchange", - "openSource": true, - "contractAddress": "https://docs.cow.fi/cow-protocol/reference/contracts/core", - "dateOfLaunch": "4/28/2021", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "PoolTogether", - "url": "https://pooltogether.com/", - "description": "PoolTogether is a prize savings game, where users pool yield from their tokens for a chance to win prizes. The protocol is a gamification layer that allows users to have a chance to win big while holding their favourite token.", - "image": "https://i.imgur.com/wtLeg1K.png", - "category": "DeFi", - "subCategory": [ - "Yield" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/0Kmydrv.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/PoolTogether_", - "github": "https://github.com/pooltogether", - "discord": "https://discord.com/invite/hFJh4zJx", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "PoolTogether", - "parentCompanyURL": "https://pooltogether.com", - "openSource": true, - "contractAddress": "https://dev.pooltogether.com/protocol/deployments/", - "dateOfLaunch": "6/24/2019", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Yearn", - "url": "https://yearn.finance/", - "description": "Yearn Finance is yield aggregator that automatically seeks out profit-generating strategies for crypto users through smart contracts.", - "image": "https://i.imgur.com/HR0IJKk.png", - "category": "DeFi", - "subCategory": [ - "Yield", - "Lending and borrowing" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/aCh22JJ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/yearnfi", - "github": "https://github.com/yearn", - "discord": "https://discord.com/invite/yearn", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Yearn", - "parentCompanyURL": "https://yearn.finance", - "openSource": true, - "contractAddress": "https://docs.yearn.fi/developers/addresses/", - "dateOfLaunch": "7/17/2020", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "True Markets", - "url": "https://app.truemarkets.org/en", - "description": "TrueMarkets is a decentralized prediction market platform that enables users to forecast real-world event outcomes by trading binary options, facilitating real-time sentiment analysis and information discovery.", - "image": "https://i.imgur.com/DOJRAj0.png", - "category": "DeFi", - "subCategory": [ - "Prediction" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/kgDbq7g.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/TrueMarketsOrg", - "github": "https://github.com/truemarketsorg", - "discord": "https://discord.gg/truemarkets", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "truemarkets.org", - "parentCompanyURL": "https://truemarkets.org", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "3/11/2025", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Flaunch", - "url": "https://flaunch.gg/", - "description": "Flaunch is a permissionless protocol and engine for all forms of tokenization — memes, AI agents, products, art, RWAs and more. The protocol allows builders to create their own Token Managers, providing complete flexibility in the monetization of the assets launched.", - "image": "https://i.imgur.com/NgyChQC.png", - "category": "DeFi", - "subCategory": [ - "Launchpad" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/tw4fnPz.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/flaunchgg", - "github": "https://github.com/flayerlabs/flaunchgg-contracts", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Flaunch", - "parentCompanyURL": "https://flaunch.gg", - "openSource": true, - "contractAddress": "https://docs.flaunch.gg/developer-resources/contract-addresses", - "dateOfLaunch": "2/1/2025", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Octant", - "url": "https://octant.build/", - "description": "Octant aims to become the first self-sustaining global public goods funding ecosystem that balances the common good and individual financial empowerment.", - "image": "https://i.imgur.com/f7NBrxB.png", - "category": "DeFi", - "subCategory": [ - "Crowdfunding" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/Mxu9vWC.jpeg" - ], - "bannerImage": "https://i.imgur.com/DZKTArI.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/octantapp", - "github": "https://github.com/golemfoundation/octant", - "discord": "https://discord.gg/octant", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Golem Foundation", - "parentCompanyURL": "https://golem.foundation/", - "openSource": true, - "contractAddress": "https://github.com/golemfoundation/octant/tree/develop/contracts-v1", - "dateOfLaunch": "8/8/2023", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "SuperFluid", - "url": "https://superfluid.org/", - "description": "Earn every second. Superfluid is the money streaming protocol, powering apps for earning, investing, and trading by the second onchain.", - "image": "https://i.imgur.com/kGnnASt.png", - "category": "DeFi", - "subCategory": [ - "Salary distribution", - "Lending and borrowing" - ], - "networks": [ - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/wRkER30.png" - ], - "bannerImage": "https://i.imgur.com/xiI2Rsk.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/Superfluid_HQ", - "github": "https://github.com/superfluid-finance", - "discord": "https://discord.gg/EFAUmTnPd9", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Superfluid Finance LTD", - "parentCompanyURL": "https://superfluid.org/", - "openSource": true, - "contractAddress": "0x4E583d9390082B65Bef884b629DFA426114CED6d", - "dateOfLaunch": "", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Splits.org", - "url": "https://splits.org", - "description": "Splits.org is a decentralized platform for easy, automated on-chain payment splitting and revenue sharing across multiple blockchains.", - "image": "https://i.imgur.com/YNFXeUv.png", - "category": "DeFi", - "subCategory": [ - "Payments" - ], - "networks": [ - "Base", - "Blast", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/J87FFyg.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/0xsplits", - "github": "https://github.com/0xSplits", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Splits Protocols, Inc", - "parentCompanyURL": "https://splits.org", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "2/15/2022", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "JuiceboxETH", - "url": "https://juicebox.money", - "description": "Juicebox is a programmable treasury and community funding protocol on Ethereum that lets users launch projects with configurable funding cycles, allocate funds transparently, and issue tokens or NFTs in return—commonly used for DAOs, creative initiatives, and experimental public goods.", - "image": "https://i.imgur.com/Iqlc83m.png", - "category": "DeFi", - "subCategory": [ - "Crowdfunding" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/SUqxpOa.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/juiceboxETH", - "github": "https://github.com/jbx-protocol", - "discord": "https://discord.com/invite/wFTh4QnDzk", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Juicebox", - "parentCompanyURL": "https://juicebox.money", - "openSource": true, - "contractAddress": "https://docs.juicebox.money/v4/addresses/", - "dateOfLaunch": "7/15/2021", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "zkp2p", - "url": "https://zkp2p.xyz", - "description": "ZKP2P is a trust-minimized, peer-to-peer fiat-to-crypto on-ramp/off-ramp protocol using zero-knowledge proofs (ZKPs) to verify off-chain payments (e.g., Venmo, Revolut) without exposing sensitive data—enabling secure fiat conversion to crypto.", - "image": "https://i.imgur.com/HalUEnr.png", - "category": "DeFi", - "subCategory": [ - "Onramp / offramp" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/a7zBmeQ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/zkp2p", - "github": "https://github.com/zkp2p", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "P2P Labs Inc.", - "parentCompanyURL": "https://zkp2p.xyz", - "openSource": true, - "contractAddress": "https://docs.zkp2p.xyz/developer/smart-contracts/deployments", - "dateOfLaunch": "2/3/2025", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Teller", - "url": "https://teller.org", - "description": "Teller is a decentralized, peer-to-peer lending protocol on Ethereum and Polygon that offers time-based, fixed-term loans with no margin liquidations—borrowers pay fixed interest and return the full collateral at maturity.", - "image": "https://i.imgur.com/AoqkHhy.png", - "category": "DeFi", - "subCategory": [ - "Lending and borrowing" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/a6SgPLC.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/useteller", - "github": "https://github.com/teller-protocol", - "discord": "https://discord.com/invite/teller", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Teller", - "parentCompanyURL": "https://teller.org", - "openSource": true, - "contractAddress": "https://docs.teller.org/v2/resources/deployed-contracts", - "dateOfLaunch": "1/4/2021", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "EigenCloud", - "url": "https://eigencloud.xyz", - "description": "EigenLayer (EigenCloud) is a restaking protocol on Ethereum enabling ETH and LST (Liquid Staking Token) holders to reuse their staked assets to secure additional protocols (called AVSs) and earn extra yield.", - "image": "https://i.imgur.com/FvUtF9r.png", - "category": "DeFi", - "subCategory": [ - "Infrastructure" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/XhOY5jZ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/eigenlayer", - "github": "https://github.com/Layr-Labs", - "discord": "https://discord.gg/eigenlayer", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Eigen Labs", - "parentCompanyURL": "https://eigencloud.xyz", - "openSource": true, - "contractAddress": "https://github.com/Layr-Labs/eigenlayer-contracts", - "dateOfLaunch": "6/14/2023", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - } - ], - "Social": [ - { - "name": "Zora", - "url": "https://zora.co/", - "description": "Zora is an onchain social network revealing new opportunities to create, connect, and earn from your life online.", - "image": "https://i.imgur.com/3ti964X.png", - "category": "Social", - "subCategory": [ - "Social network" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/6OxNqMF.jpeg" - ], - "bannerImage": "https://i.imgur.com/GBBRB59.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://twitter.com/zora", - "github": "https://github.com/ourzora", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Zora Labs", - "parentCompanyURL": "https://zora.co", - "openSource": true, - "contractAddress": "0xaD031EeE55f595dF6Dbd61e9ef3B908FaD1B3671", - "dateOfLaunch": "1/1/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Rodeo", - "url": "https://rodeo.club/", - "description": "Rodeo is a creative social network where artists, makers, and creators come together to share and celebrate their work. It combines the familiar features of social platforms with unique ways to support and earn from creativity.", - "image": "https://i.imgur.com/R3AaFkG.png", - "category": "Social", - "subCategory": [ - "Social network" - ], - "networks": [ - "Base" - ], - "screenshots": [ - "https://i.imgur.com/stYV9Rv.png", - "https://i.imgur.com/zEPpsoL.png", - "https://i.imgur.com/2hnlwsV.png", - "https://i.imgur.com/X0wUCxY.png" - ], - "bannerImage": "https://i.imgur.com/FDduCHZ.png", - "platforms": [ - "Browser", - "iOS" - ], - "twitter": "https://x.com/rodeodotclub", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Rodeo Club", - "parentCompanyURL": "https://rodeo.club", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "12/24/2024", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Towns", - "url": "https://www.towns.com/", - "description": "Towns Protocol is an open source protocol for building decentralized real-time messaging apps. It consists of an EVM-compatible L2 chain, decentralized off-chain stream nodes, and smart contracts that are deployed on Base.", - "image": "https://i.imgur.com/1XjFcVW.png", - "category": "Social", - "subCategory": [ - "Messaging" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/YNOquL3.png", - "platforms": [ - "Browser", - "iOS" - ], - "twitter": "https://x.com/townsxyz", - "github": "https://github.com/river-build", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Here Not There Labs", - "parentCompanyURL": "https://towns.com", - "openSource": true, - "contractAddress": "https://docs.towns.com/towns-smart-contracts/contracts", - "dateOfLaunch": "2/23/2023", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Farcaster", - "url": "https://farcaster.xyz/", - "description": "Farcaster is a sufficiently decentralized social network built on Ethereum. It is a public social network similar to X and Reddit. Users can create profiles, post \"casts\" and follow others. They own their accounts and relationships with other users and are free to move between different apps.", - "image": "https://i.imgur.com/Xv6wvV9.png", - "category": "Social", - "subCategory": [ - "Social network", - "Messaging" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/Dpb0JFt.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://x.com/farcaster_xyz", - "github": "https://github.com/farcasterxyz", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Farcaster Labs", - "parentCompanyURL": "https://farcaster.xyz", - "openSource": true, - "contractAddress": "https://docs.farcaster.xyz/reference/contracts/deployments", - "dateOfLaunch": "2/23/2023", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Orb", - "url": "https://orb.club/", - "description": "Orb.club is a consumer social mobile app built on Lens Protocol, known for its viral sticker drops, collectible posts, native tipping, and creator-first features.", - "image": "https://i.imgur.com/Rx9ooN8.png", - "category": "Social", - "subCategory": [ - "Social network" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/9mRCEGT.png", - "platforms": [ - "iOS", - "Android" - ], - "twitter": "https://x.com/orb_club", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Orb Technology Inc.", - "parentCompanyURL": "https://orb.club", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "10/18/2024", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Shibuya Films", - "url": "https://www.shibuya.film/", - "description": "Shibuya is a crowdfunding platform for bold, independent filmmakers, that gives creators the tools to raise capital, build community, and bring original stories to life—one episode at a time.", - "image": "https://i.imgur.com/ERgwg6l.png", - "category": "Social", - "subCategory": [ - "Video" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/WM93RX5.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/shibuyaxyz", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Shibuya.xyz", - "parentCompanyURL": "https://shibuya.xyz", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "2/28/2022", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Hey.xyz", - "url": "https://hey.xyz/", - "description": "Hey is a decentralized and permissionless social media app built with Lens Protocol.", - "image": "https://i.imgur.com/gOpRfUD.png", - "category": "Social", - "subCategory": [ - "Social network" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/yFCtj1d.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/heydotxyz", - "github": "https://github.com/heyverse/hey", - "discord": "https://hey.xyz/discord", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Hey.xyz", - "parentCompanyURL": "https://hey.xyz", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "9/29/2023", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Audius", - "url": "https://audius.co/", - "description": "Audius is an innovative music streaming platform that uses blockchain technology to give artists and listeners more control and freedom. With Audius, artists can easily upload their music and keep full control over their content, while listeners get to enjoy a vast and diverse library of tunes from talented musicians and producers all around the world. ", - "image": "https://i.imgur.com/8oeEo3l.png", - "category": "Social", - "subCategory": [ - "Music" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/GodKnNZ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/AudiusProject", - "github": "https://github.com/AudiusProject", - "discord": "https://discord.gg/audius", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Open Audio Foundation", - "parentCompanyURL": "https://audius.org/", - "openSource": true, - "contractAddress": "0x44617F9dCEd9787C3B06a05B35B4C779a2AA1334", - "dateOfLaunch": "10/23/2020", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Paragraph", - "url": "https://paragraph.com", - "description": "Paragraph is a Web3 publishing platform that lets writers create token-gated newsletters and mint content as NFTs on Ethereum and Base.", - "image": "https://i.imgur.com/qn3J0qz.png", - "category": "Social", - "subCategory": [ - "Publishing" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/3VKBKAn.jpeg" - ], - "bannerImage": "https://i.imgur.com/s7v5uty.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/paragraph_xyz", - "github": "", - "discord": "https://paragraph.xyz/discord", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Paragraph", - "parentCompanyURL": "https://paragraph.com", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "10/1/2021", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Ethereum Follow Protocol", - "url": "https://efp.app", - "description": "EFP is an on‑chain social graph protocol, enabling Ethereum users to \"follow\" or \"tag\" other addresses via NFT-powered lists. It complements ENS and Sign‑In with Ethereum (SIWE)—forming part of the emerging Ethereum identity stack ", - "image": "https://i.imgur.com/mk6kT65.png", - "category": "Social", - "subCategory": [ - "Social network" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/M7BSS6c.jpeg" - ], - "bannerImage": "https://i.imgur.com/pzYxz9M.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/efp", - "github": "https://github.com/ethereumfollowprotocol", - "discord": "https://discord.com/invite/ZUyG3mSXFD", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Ethereum Identity Foundation", - "parentCompanyURL": "https://efp.app", - "openSource": true, - "contractAddress": "https://docs.efp.app/production/deployments/", - "dateOfLaunch": "9/24/2024", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - } - ], - "Privacy": [ - { - "name": "Fluidkey", - "url": "https://fluidkey.com/", - "description": "Fluidkey allows users to seamlessly manage, receive, and send onchain assets while protecting their privacy.", - "image": "https://i.imgur.com/lkEMfCo.png", - "category": "Privacy", - "subCategory": [ - "Stealth address", - "Payments", - "Identity" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/CnsW57W.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/fluidkey", - "github": "https://github.com/fluidkey", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Fluidkey SA", - "parentCompanyURL": "https://fluidkey.com/", - "openSource": true, - "contractAddress": "0xa238cbeb142c10ef7ad8442c6d1f9e89e07e7761", - "dateOfLaunch": "2/24/2024", - "lastUpdated": "7/9/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Rarimo", - "url": "https://rarimo.com/", - "description": "Unlocking a new generation of social apps, where users stay private without losing historical actions, networks, and identities", - "image": "https://i.imgur.com/53RT7xX.png", - "category": "Privacy", - "subCategory": [ - "Identity" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/2XGpnYg.png", - "platforms": [ - "Browser", - "Android" - ], - "twitter": "https://x.com/Rarimo_protocol", - "github": "https://github.com/rarimo", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Rarilabs Ltd.", - "parentCompanyURL": "https://rarimo.com/", - "openSource": true, - "contractAddress": "https://docs.rarimo.com/zk-passport/contracts/#deployments", - "dateOfLaunch": "4/24/2025", - "lastUpdated": "7/9/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Privacy Pools", - "url": "https://privacypools.com/", - "description": "Privacy Pools by 0xbow is a compliant way to anonymously transact on Ethereum. 0xbow blocks illicit actors to ensure pool integrity.", - "image": "https://i.imgur.com/eTwgSVR.png", - "category": "Privacy", - "subCategory": [ - "Pools", - "Compliance" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/vdqDZB5.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/0xbowio", - "github": "https://github.com/0xbow-io/privacy-pools-core", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "0xbow", - "parentCompanyURL": "https://0xbow.io/", - "openSource": true, - "contractAddress": "0xf241d57c6debae225c0f2e6ea1529373c9a9c9fb", - "dateOfLaunch": "3/31/2025", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Tornado Cash", - "url": "http://tornadocash.eth.limo/", - "description": "Secure, Decentralized, Private protocol", - "image": "https://i.imgur.com/9S2K8kO.png", - "category": "Privacy", - "subCategory": [ - "Pools" - ], - "networks": [ - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/P8xZqf8.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/TornadoCash", - "github": "https://github.com/tornadocash", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "Ukrainian", - "Turkish", - "English", - "Spanish", - "French", - "Chinese" - ], - "parentCompany": "Tornado Cash", - "parentCompanyURL": "https://tornadocash.eth.limo/", - "openSource": true, - "contractAddress": "https://github.com/tornadocash/docs/blob/b91f1a469ff7c7094e535fd41c4586d1080869c4/general/tornado-cash-smart-contracts.md", - "dateOfLaunch": "12/17/2019", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "0xbow", - "url": "https://0xbow.io/", - "description": "0xbow is a privacy protocol for Ethereum that enables compliant, zero-knowledge-based private transactions through customizable Privacy Pools.", - "image": "https://i.imgur.com/PAb3BvU.png", - "category": "Privacy", - "subCategory": [ - "Pools" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/REXrQxe.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/0xbowio", - "github": "https://github.com/0xbow-io/privacy-pools-core", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "0xbow", - "parentCompanyURL": "https://0xbow.io", - "openSource": true, - "contractAddress": "https://docs.privacypools.com/deployments", - "dateOfLaunch": "3/31/2025", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - } - ], - "Collectibles": [ - { - "name": "OpenSea", - "url": "https://opensea.io/", - "description": "OpenSea is an online marketplace for non-fungible tokens (NFTs), enabling users to buy, sell, and create NFTs. It functions as a decentralized platform where users can trade various digital assets, including art, music, gaming items, and more, across multiple blockchains. ", - "image": "https://i.imgur.com/J4vZUTN.png", - "category": "Collectibles", - "subCategory": [ - "Market" - ], - "networks": [ - "Base", - "Blast", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/bxhdZRK.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://twitter.com/opensea", - "github": "https://github.com/projectopensea", - "discord": "https://discord.gg/opensea", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English", - "Chinese Traditional", - "Chinese", - "German", - "French", - "Japanese", - "Korean", - "Spanish" - ], - "parentCompany": "OpenSea", - "parentCompanyURL": "https://opensea.io", - "openSource": true, - "contractAddress": "0xA5409eC958C83C3f309868bABaCA7c86DCB077c1 ", - "dateOfLaunch": "12/20/2017", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Blur", - "url": "https://blur.io/", - "description": "Blur is a professional NFT marketplace offering zero-fee NFT trading and features for intermediate and advanced traders.", - "image": "https://i.imgur.com/qaTlXOZ.png", - "category": "Collectibles", - "subCategory": [ - "Market" - ], - "networks": [ - "Blast", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/XYzhlqX.png", - "platforms": [ - "Browser", - "Android", - "iOS" - ], - "twitter": "https://twitter.com/blur_io", - "github": "", - "discord": "https://discord.gg/blurdao", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Blur LLC", - "parentCompanyURL": "https://blur.io", - "openSource": false, - "contractAddress": "https://docs.blur.foundation/contracts", - "dateOfLaunch": "10/19/2022", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Highlight", - "url": "https://highlight.xyz/", - "description": "Highlight is a platform for creating and collecting digital art and culture.", - "image": "https://i.imgur.com/gvbFr2a.png", - "category": "Collectibles", - "subCategory": [ - "Art" - ], - "networks": [ - "Base", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/FxFbMqo.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/Highlight_xyz", - "github": "https://github.com/highlightxyz", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Highlight, Inc.", - "parentCompanyURL": "https://highlight.xyz", - "openSource": true, - "contractAddress": "https://support.highlight.xyz/knowledge-base/for-developers/nft-contracts/official-addresses", - "dateOfLaunch": "7/26/2023", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Manifold", - "url": "https://manifold.xyz/", - "description": "Manifold Studio is a series of tools that allow you to build your own web3 creative platform. Studio allows for the creation and distribution of digital assets known as non-fungible tokens(NFTs).", - "image": "https://i.imgur.com/2WZrZfG.png", - "category": "Collectibles", - "subCategory": [ - "Art" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/D0J823R.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/manifoldxyz", - "github": "https://github.com/manifoldxyz", - "discord": "https://discord.gg/XNVfgutbeK", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Manifold Technologies Ltd.", - "parentCompanyURL": "https://manifold.xyz", - "openSource": true, - "contractAddress": "https://github.com/manifoldxyz/royalty-registry-solidity", - "dateOfLaunch": "10/1/2021", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Rarible", - "url": "https://rarible.com/", - "description": "Rarible is a multi-chain platform where you can buy, sell, and create non-fungible tokens (NFTs).", - "image": "https://i.imgur.com/0dhVyXp.png", - "category": "Collectibles", - "subCategory": [ - "Market" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/WhOG44D.png", - "platforms": [ - "Browser", - "iOS" - ], - "twitter": "https://x.com/rarible", - "github": "https://github.com/rarible", - "discord": "http://discord.gg/rarible", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Rarible, Inc.", - "parentCompanyURL": "https://rarible.com", - "openSource": true, - "contractAddress": "https://docs.rarible.org/reference/contract-addresses", - "dateOfLaunch": "8/17/2020", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Pudgy Penguins", - "url": "https://www.pudgypenguins.com/", - "description": "Pudgy Penguins is a global IP focused on proliferating the penguin, memetic culture, and good vibes.", - "image": "https://i.imgur.com/jdf0uFw.png", - "category": "Collectibles", - "subCategory": [ - "Art", - "IP" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/fBRUbxB.png", - "platforms": [ - "iOS", - "Browser" - ], - "twitter": "https://x.com/pudgypenguins", - "github": "", - "discord": "https://discord.gg/pudgypenguins", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "LSLTTT Holdings, Inc.", - "parentCompanyURL": "https://pudgypenguins.com", - "openSource": false, - "contractAddress": "https://etherscan.io/address/0xBd3531dA5CF5857e7CfAA92426877b022e612cf8", - "dateOfLaunch": "7/22/2021", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Bored Ape Yacht Club", - "url": "https://boredapeyachtclub.com/", - "description": "The Bored Ape Yacht Club is a collection of 10000 unique Bored Ape NFTs— unique digital collectibles living on the Ethereum blockchain.", - "image": "https://i.imgur.com/EmOxvhI.png", - "category": "Collectibles", - "subCategory": [ - "Art", - "IP" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/CAAi7lV.png", - "platforms": [ - "iOS", - "Browser" - ], - "twitter": "https://x.com/BoredApeYC", - "github": "", - "discord": "https://discord.com/invite/3P5K3dzgdB", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Yuga Labs LLC", - "parentCompanyURL": "https://yuga.com", - "openSource": false, - "contractAddress": "https://etherscan.io/address/0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", - "dateOfLaunch": "4/23/2021", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Art Blocks", - "url": "https://www.artblocks.io/", - "description": "Art Blocks is a digital platform where generative artists publish unique artworks using creative code. With historical roots in conceptual art, generative art involves the creation of an algorithm using computer code, with randomness introduced into the artist’s algorithm to produce unique works.", - "image": "https://i.imgur.com/6POOwm3.png", - "category": "Collectibles", - "subCategory": [ - "Art" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/Rs44gsk.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/artblocks_io", - "github": "https://github.com/ArtBlocks", - "discord": "https://discord.com/invite/artblocks", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Art Blocks, Inc.", - "parentCompanyURL": "https://artblocks.io", - "openSource": true, - "contractAddress": "https://github.com/ArtBlocks/artblocks-contracts/blob/main/packages/contracts/README.md", - "dateOfLaunch": "11/27/2020", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Cool Cats", - "url": "https://www.coolcatsnft.com/", - "description": "Cool Cats is a collection of 9,999 randomly generated NFT avatars, each featuring a unique Blue Cat with various traits like clothing, hairstyles, and accessories.", - "image": "https://i.imgur.com/Z20S33T.png", - "category": "Collectibles", - "subCategory": [ - "IP", - "Art" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/tYwCO41.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/coolcatsnft", - "github": "", - "discord": "https://discord.gg/coolcatsnft", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Cool Cats", - "parentCompanyURL": "https://coolcatsnft.com", - "openSource": false, - "contractAddress": "https://etherscan.io/address/0x1a92f7381b9f03921564a437210bb9396471050c", - "dateOfLaunch": "6/9/2021", - "lastUpdated": "7/4/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Doodles", - "url": "https://www.doodles.app/", - "description": "Doodles is a next-generation entertainment company focused on immersive storytelling through the creation and distribution of live and digital experiences, original content, and lifestyle products.", - "image": "https://i.imgur.com/xgn185K.png", - "category": "Collectibles", - "subCategory": [ - "IP", - "Art" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/SEx1boH.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/doodles", - "github": "", - "discord": "https://discord.gg/doodles", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Doodles, Inc.", - "parentCompanyURL": "https://doodles.app`", - "openSource": false, - "contractAddress": "https://etherscan.io/address/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e", - "dateOfLaunch": "10/16/2021", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Basepaint", - "url": "https://basepaint.xyz/", - "description": "BasePaint.xyz is a collaborative, onchain pixel art application where artists create daily, shared canvases that are then minted as NFTs.", - "image": "https://i.imgur.com/svBfl50.png", - "category": "Collectibles", - "subCategory": [ - "IP", - "Art" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/dtcQL5j.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/basepaint_xyz", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "BasePaint", - "parentCompanyURL": "https://basepaint.xyz", - "openSource": false, - "contractAddress": "https://hackmd.io/@uTlMZA23Qz-cK8e7PqQt0A/rkOAbFIhn", - "dateOfLaunch": "8/8/2023", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Foundation", - "url": "https://foundation.app/", - "description": "Foundation.app is an NFT marketplace that allows artists to tokenize their creations as NFTs and provides a platform for collectors to buy, sell, and trade these digital artworks.", - "image": "https://i.imgur.com/s5zw9NG.png", - "category": "Collectibles", - "subCategory": [ - "Market" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/fyNzBFy.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/foundation", - "github": "https://github.com/f8n", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Foundation Labs, Inc.", - "parentCompanyURL": "https://foundation.app", - "openSource": true, - "contractAddress": "https://os.foundation.app/docs/creator-tools/drop", - "dateOfLaunch": "2/1/2021", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Sandbox", - "url": "https://www.sandbox.game/", - "description": "The Sandbox is a community-driven creative platform that empowers artists, storytellers, and game makers to create, publish, own, and monetise a myriad of unique content on a decentralised platform on the blockchain.", - "image": "https://i.imgur.com/u2UXDq4.png", - "category": "Collectibles", - "subCategory": [ - "Gaming", - "Market" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/m9DGm5H.png", - "platforms": [ - "Browser", - "Desktop", - "iOS" - ], - "twitter": "https://twitter.com/thesandboxgame", - "github": "https://discord.gg/thesandboxgame", - "discord": "https://discord.gg/thesandboxgame", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English", - "Chinese", - "Chinese Traditional", - "Korean", - "Japanese", - "Turkish", - "Thai" - ], - "parentCompany": "Animoca Brands", - "parentCompanyURL": "https://www.animocabrands.com/", - "openSource": true, - "contractAddress": "https://etherscan.io/token/0x3845badade8e6dff049820680d1f14bd3903a5d0", - "dateOfLaunch": "11/29/2021", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "SuperRare", - "url": "https://superrare.com/", - "description": "SuperRare is a platform to issue, collect, and trade rare digital art backed by non-fungible tokens (NFTs) on the Ethereum blockchain. Every piece of art on SuperRare is a single edition - this means each artwork is unique without duplicates.", - "image": "https://i.imgur.com/HRl4kUv.png", - "category": "Collectibles", - "subCategory": [ - "Art", - "Market" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/n9YsZCt.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://twitter.com/SuperRare", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "SuperRare Labs, Inc.", - "parentCompanyURL": "https://superrare.com", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "4/4/2018", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Decentraland", - "url": "https://decentraland.org/", - "description": "Decentraland was the world’s first fully decentralized, social virtual world, empowering users to own, create, and control their digital assets and experiences. Launched in 2020, Decentraland features an open, traversable landscape filled with user-generated content that evolves and changes in real-time.", - "image": "https://i.imgur.com/1cghrNy.png", - "category": "Collectibles", - "subCategory": [ - "Gaming", - "Art", - "Market" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/V1mpz2o.png", - "platforms": [ - "Browser", - "iOS", - "Android", - "Desktop" - ], - "twitter": "https://twitter.com/decentraland", - "github": "https://github.com/decentraland", - "discord": "https://dcl.gg/discord", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English", - "Chinese", - "Chinese Traditional", - "Japanese", - "Korean", - "Thai", - "Turkish" - ], - "parentCompany": "Decentraland Foundation", - "parentCompanyURL": "https;//decentraland.org", - "openSource": true, - "contractAddress": "https://github.com/decentraland/marketplace/tree/master/indexer", - "dateOfLaunch": "2/20/2020", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Magic Eden", - "url": "https://magiceden.io/", - "description": "Magic Eden is a non-fungible token marketplace that allows users to buy, sell, mint, and manage NFTs. It's a popular platform for both creators launching new NFT projects and for trading on the secondary market. ", - "image": "https://i.imgur.com/oSGwPR4.png", - "category": "Collectibles", - "subCategory": [ - "Market" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/mtBvmC3.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://twitter.com/MagicEden", - "github": "https://github.com/magiceden", - "discord": "https://discord.gg/magiceden", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Magic Eden", - "parentCompanyURL": "https://magiceden.io", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "9/17/2021", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Azuki", - "url": "https://www.azuki.com/", - "description": "Azuki is a brand born at the intersection of art, technology, and internet culture. What started as a web3 project has evolved into a global community of artists and builders shaping original characters, stories, and experiences together. From digital collectibles to fashion and real-world events, Azuki is building a universe for digital natives drawn to what's next.", - "image": "https://i.imgur.com/fe1Tipo.png", - "category": "Collectibles", - "subCategory": [ - "IP", - "Art", - "Membership" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/3Rqf7Dp.png", - "platforms": [ - "Browser" - ], - "twitter": "https://www.azuki.com/icons/x-twitter-solid-black.svg", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Chiru Labs", - "parentCompanyURL": "https://azuki.com", - "openSource": false, - "contractAddress": "https://nfthud.io/collection/azuki", - "dateOfLaunch": "1/12/2022", - "lastUpdated": "7/6/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "POAP", - "url": "https://poap.xyz/", - "description": "POAP are the bookmarks for your life. Mint the most important memories of your life as digital collectibles (NFTs) forever on the blockchain.", - "image": "https://i.imgur.com/U3ZyEUt.png", - "category": "Collectibles", - "subCategory": [ - "Attendance", - "Collect", - "Membership" - ], - "networks": [ - "Gnosis", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/tGp8SmS.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://x.com/poapxyz", - "github": "https://github.com/poapxyz", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "POAP Inc", - "parentCompanyURL": "https://poap.xyz", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "1/1/2021", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Courtyard", - "url": "https://courtyard.io", - "description": "Courtyard is a platform for minting and trading NFTs backed by real-world collectibles like trading cards, with assets stored in insured vaults and redeemable on-chain.", - "image": "https://i.imgur.com/a50EywS.png", - "category": "Collectibles", - "subCategory": [ - "Market" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/y5nQjIL.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/Courtyard_NFT", - "github": "", - "discord": "https://discord.gg/courtyard-io", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Courtyard, Inc.", - "parentCompanyURL": "https://courtyard.io", - "openSource": false, - "contractAddress": "https://docs.courtyard.io/courtyard/resources/useful-links#ethereum-mainnet", - "dateOfLaunch": "5/8/2022", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - } - ], - "Gaming": [ - { - "name": "EVE Frontier", - "url": "https://evefrontier.com/en", - "description": "EVE Frontier is a sandbox shaped by player-driven activity. From player-made factions, to bases, private economies and the stargate network, you create the ultimate living world.", - "image": "https://i.imgur.com/8VI7Xmb.png", - "category": "Gaming", - "subCategory": [ - "MMORPG" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/pylOP7f.png" - ], - "bannerImage": "https://i.imgur.com/YGuDW8X.png", - "platforms": [ - "Desktop" - ], - "twitter": "https://x.com/EVE_Frontier", - "github": "", - "discord": "https://discord.com/invite/evefrontier", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "CCP Games", - "parentCompanyURL": "https://www.ccpgames.com/", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "6/11/2025", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Remix", - "url": "https://remix.gg/", - "description": "Remix is a platform combining AI and mobile gaming, designed to offer on-chain, AI-powered games.", - "image": "https://i.imgur.com/KBHOee9.png", - "category": "Gaming", - "subCategory": [ - "retro gaming", - "Casual", - "AI gaming" - ], - "networks": [ - "Base", - "world" - ], - "screenshots": [ - "https://i.imgur.com/RHH5ukf.jpeg" - ], - "bannerImage": "https://i.imgur.com/ILekHLM.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/RemixGG_", - "github": "", - "discord": "https://discord.gg/a3bgdr4RC6", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Remix (formerly Farcade)", - "parentCompanyURL": "https://remix.gg/", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "4/4/2021", - "lastUpdated": "2025", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Illuvium", - "url": "https://illuvium.io/", - "description": "Illuvium is a collectible RPG game and auto-battler rolled into one. There is an open-world RPG experience in the overworld, where you mine, harvest, capture, and fight Illuvials. Once you have assembled your team you can join the autobattler to build your teams to beat your opponents in battle.", - "image": "https://i.imgur.com/LBo34WC.png", - "category": "Gaming", - "subCategory": [], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/ONlCXAt.png", - "platforms": [ - "Windows", - "Mac", - "Android", - "iOS" - ], - "twitter": "https://x.com/illuviumio", - "github": "https://github.com/illuviumgame", - "discord": "https://discord.com/invite/illuvium", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Illuvium", - "parentCompanyURL": "https://illuvium.io", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "7/25/2024", - "lastUpdated": "", - "ready": "true", - "devconnect": "true" - }, - { - "name": "Parallel", - "url": "https://parallel.life", - "description": "Parallel is a free-to-play, turn-based strategy game where players build 40-card decks using cards from five factions or universal cards to battle each other.", - "image": "https://i.imgur.com/OcpP6tZ.png", - "category": "Gaming", - "subCategory": [ - "Card & deck building" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/zLLypAz.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/ParallelTCG", - "github": "", - "discord": "https://discord.com/invite/paralleltcg", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Parallel Studios", - "parentCompanyURL": "https://parallel.life", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "4/22/2024", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - } - ], - "DAO": [ - { - "name": "Snapshot", - "url": "https://snapshot.box/", - "description": "Snapshot is a voting platform that allows DAOs, DeFi protocols, or NFT communities to vote easily and without gas fees.The tool allows high customization of the voting process to cater to the diverse needs of the users and organizations.", - "image": "https://i.imgur.com/B2nGDiy.png", - "category": "DAO", - "subCategory": [ - "Governance", - "Organization", - "Offchain voting" - ], - "networks": [ - "Starknet", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/lyAL0O7.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/SnapshotLabs", - "github": "https://github.com/snapshot-labs", - "discord": "https://discord.snapshot.org", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Snapshot", - "parentCompanyURL": "https://snapshot.box", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "1/8/2020", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Tally", - "url": "https://www.tally.xyz/", - "description": "Tally is a platform focused on onchain governance for decentralized autonomous organizations and blockchain protocols by providing tools and infrastructure for launching, managing, and participating in DAOs.", - "image": "https://i.imgur.com/uFbNLmO.png", - "category": "DAO", - "subCategory": [ - "Onchain voting", - "Analytics", - "Tokenomics", - "DAO creation", - "Governor" - ], - "networks": [ - "Base", - "Blast", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [ - "https://i.imgur.com/LpyPBZv.png" - ], - "bannerImage": "https://i.imgur.com/9Jo8BK3.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/tallyxyz", - "github": "https://github.com/withtally/", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Tally", - "parentCompanyURL": "https://www.tally.xyz/", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Hats Protocol", - "url": "https://www.hatsprotocol.xyz/", - "description": "Hats turns organizations into a digital object, ready to be programmed. All of the properties of your organization and its individual roles and permissions can now be automated, just like any other software system.", - "image": "https://i.imgur.com/78IAtVT.png", - "category": "DAO", - "subCategory": [ - "Role management", - "Permissions", - "Organization" - ], - "networks": [ - "Base", - "Celo", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/XKumEus.png" - ], - "bannerImage": "https://i.imgur.com/CPBwsLj.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/hatsprotocol", - "github": "https://github.com/Hats-Protocol", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Haberdasher Labs", - "parentCompanyURL": "https://www.hatsprotocol.xyz/open-roles", - "openSource": true, - "contractAddress": "0x3bc1A0Ad72417f2d411118085256fC53CBdDd137", - "dateOfLaunch": "6/27/2024", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Aragon", - "url": "https://aragon.org/", - "description": "Aragon builds full-stack DAO technology that enables organizations to easily and securely govern their protocols and assets onchain.", - "image": "https://i.imgur.com/K7oLCS6.png", - "category": "DAO", - "subCategory": [ - "DAO creation", - "Governance", - "Framework" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/4Krl2j6.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/aragonproject", - "github": "https://github.com/aragon", - "discord": "https://discord.gg/aragonorg", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Aragon Foundation", - "parentCompanyURL": "https://www.aragonfoundation.org/", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "10/30/2018", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "DAOhaus", - "url": "https://daohaus.club/", - "description": "DAOhaus allows communities to create a DAO and manage, grow, and distribute a shared treasury.", - "image": "https://i.imgur.com/E6DLY0N.png", - "category": "DAO", - "subCategory": [ - "DAO creation", - "Treasury management", - "Framework", - "Moloch" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/QkydX2p.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/daohaus", - "github": "https://github.com/HausDAO", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "", - "parentCompanyURL": "", - "openSource": false, - "contractAddress": "https://docs.daohaus.club/contracts", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Event Horizon", - "url": "https://eventhorizon.vote/", - "description": "Event Horizon is a public good that helps DAOs improve their voter participation, token participation, and generally improve the governance process of DAOs with the help of agentic governance and Incentivized Delegation Vaults. ", - "image": "https://i.imgur.com/uAwjyR8.png", - "category": "DAO", - "subCategory": [ - "Governance", - "Delegation", - "Agentic" - ], - "networks": [ - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/xKdrkcq.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/EventHorizonDAO", - "github": "", - "discord": "https://discord.gg/pJwYfRUcjK", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Event Horizon", - "parentCompanyURL": "https://eventhorizon.vote/", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Splits", - "url": "https://app.splits.org/", - "description": "Splits is a platform offering financial infrastructure for onchain teams, specializing in managing onchain payments using audited, open-source smart contracts.", - "image": "https://i.imgur.com/CAiSLc5.png", - "category": "DAO", - "subCategory": [ - "Treasury management" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/yfMGVxo.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/0xsplits", - "github": "https://github.com/0xSplits", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "", - "parentCompanyURL": "", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Safe", - "url": "https://safe.global/", - "description": "Own the Internet. Ethereum Smart Accounts to safeguard your digital assets and build the future of ownership.", - "image": "https://i.imgur.com/kRMy55h.png", - "category": "DAO", - "subCategory": [ - "Treasury management", - "Multi-sig", - "Smart account" - ], - "networks": [ - "Base", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/skOZTBy.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://x.com/safe", - "github": "https://github.com/safe-global", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Safe Ecosystem Foundation ", - "parentCompanyURL": "https://safe.global", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "7/7/2022", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Coordinape", - "url": "https://coordinape.com/", - "description": "Coordinape provides tools to discover, recognize and collaborate in onchain networks of trust.", - "image": "https://i.imgur.com/Rkky5a1.png", - "category": "DAO", - "subCategory": [ - "Recognition", - "Compensation", - "Signalling" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/bmKyuk1.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://x.com/coordinape", - "github": "https://github.com/coordinape", - "discord": "https://discord.coordinape.com/", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "", - "parentCompanyURL": "", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Endaoment", - "url": "https://endaoment.org/", - "description": "Endaoment is a public charity that offers Donor-Advised Funds (DAFs) and facilitates donations to non-profits.", - "image": "https://i.imgur.com/iXSGSbp.png", - "category": "DAO", - "subCategory": [ - "Philanthropy" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/A8Xu5E5.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/endaomentdotorg", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Endaoment (501(c)(3) nonprofit)", - "parentCompanyURL": "https://endaoment.org", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "ResearchHub", - "url": "https://researchhub.com/", - "description": "ResearchHub is designed to accelerate the pace of scientific research by encouraging academics to interact in a fully open and collaborative manner. ", - "image": "https://i.imgur.com/bs1ElQd.png", - "category": "DAO", - "subCategory": [ - "Governance" - ], - "networks": [ - "Base", - "Ethereum Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/2tqDp6c.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/researchhub", - "github": "https://github.com/ResearchHub", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "ResearchHub Technologies, Inc. / ResearchHub Foundation", - "parentCompanyURL": "https://researchhub.foundation", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "2/25/2019", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Prime Intellect", - "url": "https://www.primeintellect.ai/", - "description": "Prime Intellect democratizes AI development at scale by making it easy to find global compute resources and train state-of-the-art models through distributed training across clusters.", - "image": "https://i.imgur.com/GlSYmTI.png", - "category": "DAO", - "subCategory": [ - "AI" - ], - "networks": [ - "Base" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/5lnpIGl.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/PrimeIntellect", - "github": "https://github.com/PrimeIntellect-ai", - "discord": "https://discord.gg/aHXbW7gtzY", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Prime Intellect", - "parentCompanyURL": "https://www.primeintellect.ai", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Agora", - "url": "https://agora.xyz", - "description": "Agora is an advanced on-chain governance platform that empowers protocols and communities (like Uniswap, Optimism, ENS) with scalable, secure, and user-friendly voting systems—eliminating the need for custom code.", - "image": "https://i.imgur.com/a1KpeEc.png", - "category": "DAO", - "subCategory": [ - "Governance" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/GPmgEFp.png" - ], - "bannerImage": "https://i.imgur.com/zQV6jJ3.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/agoragovernance", - "github": "https://github.com/voteagora", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Agora", - "parentCompanyURL": "https://agora.xyz", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "5/31/2024", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Sablier", - "url": "https://sablier.finance/", - "description": "Sablier is a protocol that facilitates the automated distribution of tokens over time. This \"streaming\" functionality removes the need for manual transactions, saving time and resources.", - "image": "https://i.imgur.com/w5i4Q5k.png", - "category": "DAO", - "subCategory": [ - "Payments" - ], - "networks": [ - "Base", - "Scroll", - "Linea", - "Blast", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/CNIkIB0.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/Sablier", - "github": "https://github.com/sablier-labs", - "discord": "https://discord.gg/bSwRCwWRsT", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Sablier Labs", - "parentCompanyURL": "https://sablier.com", - "openSource": true, - "contractAddress": "https://github.com/sablier-labs", - "dateOfLaunch": "12/13/2019", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - } - ], - "Productivity": [ - { - "name": "ENS", - "url": "https://ens.domains/", - "description": "The Ethereum Name Service or ENS is the decentralized naming protocol that is built on the Ethereum blockchain. It adheres to open-source standards and is based on a set of decentralized smart contracts that translate blockchain addresses into human-readable names.", - "image": "https://i.imgur.com/Ocl9okb.png", - "category": "Productivity", - "subCategory": [ - "DNS", - "Identity" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/YZGOPFM.png" - ], - "bannerImage": "https://i.imgur.com/Oq3MDGp.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/ensdomains", - "github": "https://github.com/ensdomains", - "discord": "https://discord.com/invite/faTEB36", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "ENS Labs", - "parentCompanyURL": "https://www.enslabs.org/", - "openSource": true, - "contractAddress": "https://docs.ens.domains/learn/deployments", - "dateOfLaunch": "5/4/2017", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Huddle01", - "url": "https://huddle01.com/", - "description": "Huddle01 is a decentralized real-time communication platform that offers an alternative to centralized video conferencing systems and aims to reduce latency, improve performance, and cut infrastructure costs, making communication more efficient and scalable.", - "image": "https://i.imgur.com/GcVR2ag.png", - "category": "Productivity", - "subCategory": [ - "Communication" - ], - "networks": [ - "Arbitrum One", - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/9oqfxDM.png" - ], - "bannerImage": "https://i.imgur.com/fJ2npPi.png", - "platforms": [ - "Browser", - "iOS", - "Android" - ], - "twitter": "https://x.com/huddle01com", - "github": "https://github.com/huddle01", - "discord": "https://discord.com/invite/huddle01", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Huddle01 Labs Inc.", - "parentCompanyURL": "https://huddle01.com/", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Livepeer", - "url": "https://www.livepeer.org/", - "description": "Livepeer is a decentralized network for limitless video computing, enabling AI processing and transcoding jobs to power the future of video.", - "image": "https://i.imgur.com/rwonhAA.png", - "category": "Productivity", - "subCategory": [ - "Storage", - "Video" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/mgAUNbe.png" - ], - "bannerImage": "https://i.imgur.com/beqsMqo.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/Livepeer", - "github": "https://github.com/livepeer", - "discord": "https://discord.com/invite/livepeer", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Livepeer Inc.", - "parentCompanyURL": "https://www.livepeer.org/", - "openSource": true, - "contractAddress": "https://docs.livepeer.org/references/contract-addresses", - "dateOfLaunch": "4/30/2018", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "ZK / Open Passport", - "url": "https://zkpassport.id/", - "description": "ZKPassport SDK enables privacy-preserving identity verification using passports and ID cards. It allows developers to request and verify specific identity attributes without exposing unnecessary personal information.", - "image": "https://i.imgur.com/sBVlmsl.png", - "category": "Productivity", - "subCategory": [ - "Identity" - ], - "networks": [], - "screenshots": [ - "https://i.imgur.com/nj8j1E2.jpeg" - ], - "bannerImage": "https://i.imgur.com/6Y8auId.png", - "platforms": [], - "twitter": "https://x.com/zkpassport", - "github": "https://github.com/zk-passport/", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Self Protocol ", - "parentCompanyURL": "https://self.xyz/", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "7/21/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "QuarkID", - "url": "https://quarkid.org/", - "description": "QuarkID is the digital trust framework developed by the Government of the City of Buenos Aires that creates a new digital identity system.", - "image": "https://i.imgur.com/K3T8EYJ.png", - "category": "Productivity", - "subCategory": [ - "Identity" - ], - "networks": [ - "Ethereum Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/cdB0kAC.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/quark_id", - "github": "https://github.com/ssi-quarkid", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English", - "Spanish" - ], - "parentCompany": "Extrimian S.A.", - "parentCompanyURL": "https://extrimian.io/", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "1/20/2025", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Rotki", - "url": "https://rotki.com/", - "description": "Rotki is an open source, self-hosted portfolio manager, accounting and analytics tool that protects your privacy.", - "image": "https://i.imgur.com/0AVcfDU.png", - "category": "Productivity", - "subCategory": [ - "DePIN" - ], - "networks": [ - "Base", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/ouKp1Dq.jpeg" - ], - "bannerImage": "https://i.imgur.com/Zjtf2Rc.png", - "platforms": [ - "Browser", - "Desktop" - ], - "twitter": "https://x.com/rotkiapp", - "github": "https://github.com/rotki/", - "discord": "https://discord.rotki.com/", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Rotki Software GmbH", - "parentCompanyURL": "https://rotki.com/", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "10/1/2019", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Fileverse - ddocs", - "url": "https://docs.fileverse.io/document/create", - "description": "Fileverse is the decentralized alternative to Notion and Google Workspace. Use it to write notes, collab on docs & sheets, sketch ideas, organize your files, manage a knowledgebase, create a personal webpage and more - individually or as a group.", - "image": "https://i.imgur.com/micDfkJ.png", - "category": "Productivity", - "subCategory": [ - "DePIN" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/XAdzWtj.png" - ], - "bannerImage": "https://i.imgur.com/VqQG462.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/fileverse", - "github": "https://x.com/fileverse", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": " Fileverse PTE. LTD", - "parentCompanyURL": "https://fileverse.io", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "4/7/2024", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Fileverse - dsheets", - "url": "https://sheets.fileverse.io/sheet/create", - "description": "dSheets is an open-source spreadsheet tool focused on privacy and onchain interactions that allows users to import onchain data, execute smart contracts and access Web3 features. It's equipped with end-to-end encryption and zero data storage capabilities.", - "image": "https://i.imgur.com/micDfkJ.png", - "category": "Productivity", - "subCategory": [ - "DePIN" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/kGl5UXb.png" - ], - "bannerImage": "https://i.imgur.com/VqQG462.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/fileverse", - "github": "https://x.com/fileverse", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": " Fileverse PTE. LTD", - "parentCompanyURL": "https://fileverse.io", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "6/23/2025", - "lastUpdated": "7/11/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "EAS", - "url": "https://attest.org/", - "description": "Ethereum Attestation Service (EAS) is an infrastructure public good for making attestations onchain or offchain about anything.", - "image": "https://i.imgur.com/d8kqvW4.png", - "category": "Productivity", - "subCategory": [ - "Governance" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/eZUAXjc.png" - ], - "bannerImage": "https://i.imgur.com/gBWM7Ez.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/eas_eth", - "github": "https://github.com/ethereum-attestation-service", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Ethereum Attestation Service", - "parentCompanyURL": "https://attest.org", - "openSource": true, - "contractAddress": "https://github.com/ethereum-attestation-service/eas-contracts", - "dateOfLaunch": "2/27/2023", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Unlock", - "url": "https://unlock-protocol.com/", - "description": "Unlock Protocol is a protocol that enables creators to monetize their content with a few lines of code in a fully decentralized way. It focuses on memberships and subscription NFTs with features like time constraints, pricing updates, and recurring payments. It is trusted by thousands of developers and community members for building next-generation membership products", - "image": "https://i.imgur.com/4p38CFx.png", - "category": "Productivity", - "subCategory": [ - "Governance", - "Ticketing", - "Memberships" - ], - "networks": [ - "Polygon", - "Celo", - "Gnosis", - "Base", - "Linea", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/ZVki3qp.png" - ], - "bannerImage": "https://i.imgur.com/SZ5K9mw.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/UnlockProtocol", - "github": "https://github.com/unlock-protocol/unlock", - "discord": "https://discord.unlock-protocol.com/", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Unlock Inc", - "parentCompanyURL": "https://unlock-protocol.com", - "openSource": true, - "contractAddress": "https://docs.unlock-protocol.com/core-protocol/unlock/networks", - "dateOfLaunch": "3/28/2021", - "lastUpdated": "7/15/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Human Passport", - "url": "https://passport.human.tech/", - "description": "Human Passport is an identity verification application and Sybil resistance protocol. Developers can utilize the different Human Passport products and services to build a unique humanity solution for their app or project, enabling more trustworthy and fair participation in their community.", - "image": "https://i.imgur.com/qvNkDAK.png", - "category": "Productivity", - "subCategory": [ - "Identity", - "Privacy", - "Proof-of-personhood" - ], - "networks": [ - "Base", - "Linea", - "Shape", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/WutTNUy.png" - ], - "bannerImage": "https://i.imgur.com/IjoDBkB.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/HumnPassport", - "github": "https://github.com/passportxyz/passport", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Human Tech", - "parentCompanyURL": "https://holonym.io", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "6/13/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Sequence", - "url": "https://sequence.xyz", - "description": "Sequence is a developer platform offering smart contract wallets, SDKs, and infrastructure for building Web3 apps and games on Ethereum and EVM chains.", - "image": "https://i.imgur.com/POagFpG.png", - "category": "Productivity", - "subCategory": [ - "Gaming" - ], - "networks": [ - "Base", - "Polygon", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/z3huNf6.png", - "platforms": [ - "Browser" - ], - "twitter": "https://www.twitter.com/0xsequence", - "github": "https://github.com/0xsequence", - "discord": "https://discord.gg/sequence", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Sequence", - "parentCompanyURL": "https://sequence.xyz", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "1/20/2021", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Eternal AI", - "url": "https://eternalai.org/", - "description": "Eternal AI is a blockchain-based platform for creating, deploying, and monetizing cryptographically secure AI agents as smart contracts.", - "image": "https://i.imgur.com/AFYIGAo.png", - "category": "Productivity", - "subCategory": [ - "Privacy", - "AI Agents" - ], - "networks": [ - "Base", - "Ethereum Mainnet", - "Arbitrum One" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/UGkjMLB.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/CryptoEternalAI", - "github": "https://github.com/eternalai-org", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "EternalAI DAO ", - "parentCompanyURL": "https://eternalai.org", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Virtuals", - "url": "https://app.virtuals.io/", - "description": "Virtuals Protocol is a society of productive AI agents, each designed to generate services or products and autonomously engage in onchain commerce. These agents are tokenized, allowing for capital formation, permissionless participation, and aligned incentives among creators, investors, and agents.", - "image": "https://i.imgur.com/fZ0nGYw.png", - "category": "Productivity", - "subCategory": [ - "AI Agents" - ], - "networks": [ - "Base" - ], - "screenshots": [ - "https://i.imgur.com/QWIvUfZ.png" - ], - "bannerImage": "https://i.imgur.com/wx6PJpU.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/virtuals_io", - "github": "", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Virtuals", - "parentCompanyURL": "https://virtuals.io", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "", - "lastUpdated": "", - "ready": "true", - "devconnect": "false" - } - ], - "Bridge": [ - { - "name": "Particle Network", - "url": "https://particle.network/", - "description": "Pay with any asset. Transact across chains effortlessly. Never bridge again.", - "image": "https://i.imgur.com/IX6ESQ7.png", - "category": "Bridge", - "subCategory": [ - "Chain abstraction" - ], - "networks": [ - "Base", - "Scroll", - "Starknet", - "Linea", - "Blast", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "Taiko Alethia", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/gYm3FIR.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/ParticleNtwrk", - "github": "", - "discord": "https://discord.com/invite/2y44qr6CR2", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Particle Network", - "parentCompanyURL": "https://particle.network/", - "openSource": false, - "contractAddress": "", - "dateOfLaunch": "9/9/2024", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Layerswap", - "url": "https://layerswap.io/", - "description": "Layerswap is the reliable solution for transferring crypto assets across networks in a matter of minutes. The app enables frictionless cross-chain transfers across 35+ blockchains as well as direct transfers between chains and 15+ exchanges.", - "image": "https://i.imgur.com/H8Mp3kO.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Base", - "Starknet", - "Scroll", - "ZKSync Era", - "Linea", - "Blast", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/S3R1wzQ.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/layerswap", - "github": "https://github.com/layerswap/layerswapapp", - "discord": "https://discord.gg/layerswap", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Layerswap", - "parentCompanyURL": "https://layerswap.io", - "openSource": true, - "contractAddress": "0x2Fc617E933a52713247CE25730f6695920B3befe", - "dateOfLaunch": "6/11/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Hop", - "url": "https://app.hop.exchange/", - "description": "Hop is a scalable rollup-to-rollup general token bridge. It allows users to send tokens from one rollup or sidechain to another almost immediately without having to wait for the networks challenge period.", - "image": "https://i.imgur.com/xraNXM1.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Base", - "Linea", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/9Yjx6vL.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/HopProtocol", - "github": "https://github.com/hop-protocol", - "discord": "https://discord.gg/PwCF88emV4", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Hop Protocol", - "parentCompanyURL": "https://hop.exchange", - "openSource": true, - "contractAddress": "0x914f986a44acb623a277d6bd17368171fcbe4273", - "dateOfLaunch": "7/12/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Stargate", - "url": "https://stargate.finance/bridge", - "description": "Stargate is a composable cross-chain liquidity transport protocol enabling seamless asset transfers between blockchains.", - "image": "https://i.imgur.com/E9Jw36o.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network", - "Generalized message passing" - ], - "networks": [ - "Base", - "Scroll", - "Linea", - "Blast", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "Taiko Alethia", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/BpaHCYm.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/StargateFinance", - "github": "https://github.com/stargate-protocol", - "discord": "https://stargate.finance/discord", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Stargate", - "parentCompanyURL": "https://stargate.finance/discord", - "openSource": true, - "contractAddress": "0x296f55f8fb28e498b858d0bcda06d955b2cb3f97", - "dateOfLaunch": "3/18/2022", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Across", - "url": "https://app.across.to/bridge", - "description": "Across is a cross-chain bridge for L2s and rollups secured by UMA's optimistic oracle. It is optimized for capital efficiency with a single liquidity pool, a competitive relayer landscape, and a no-slippage fee model.", - "image": "https://i.imgur.com/70fOLRm.png", - "category": "Bridge", - "subCategory": [ - "Validator or oracle", - "Liquidity network" - ], - "networks": [ - "Base", - "Blast", - "Linea", - "Scroll", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/ug6iZSa.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/AcrossProtocol", - "github": "https://github.com/across-protocol", - "discord": "https://discord.across.to/", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "Across", - "parentCompanyURL": "https://across.to/", - "openSource": true, - "contractAddress": "0x7355Efc63Ae731f584380a9838292c7046c1e433", - "dateOfLaunch": "11/8/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Meson", - "url": "https://meson.fi/", - "description": "Meson is the faster and safer way to execute low-cost, zero-slippage universal cross-chain swaps across all leading blockchains and layer-2 rollups.", - "image": "https://i.imgur.com/lDCO7eA.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Mode", - "Blast", - "Linea", - "Scroll", - "Starknet", - "Base", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "Taiko Alethia", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/TSj3ccw.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/mesonfi", - "github": "https://github.com/mesonfi", - "discord": "https://discord.gg/mesonfi", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Meson", - "parentCompanyURL": "https://meson.fi", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "12/1/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "deBridge", - "url": "https://app.debridge.finance/", - "description": "DeBridge is DeFi's internet of liquidity, enabling real-time movement of assets and information across the DeFi landscape. Without the bottlenecks and risks of liquidity pools, deBridge can power all type of cross-chain interactions with deep liquidity, tight spreads, and guaranteed rates.", - "image": "https://i.imgur.com/O1iVt88.png", - "category": "Bridge", - "subCategory": [ - "Validator or oracle" - ], - "networks": [ - "Base", - "Linea", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/3aBiKjz.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/deBridge", - "github": "https://github.com/debridge-finance/", - "discord": "https://discord.com/invite/debridge", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "deBridge", - "parentCompanyURL": "https://debridge.finance/", - "openSource": true, - "contractAddress": "0x43de2d77bf8027e25dbd179b491e8d64f38398aa", - "dateOfLaunch": "2/17/2022", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Orbiter Finance", - "url": "https://www.orbiter.finance/bridge/", - "description": "Orbiter Finance enables cross-rollup transactions of Ethereum/Bitcoin native assets in a trustless and seamless manner.", - "image": "https://i.imgur.com/xkJIVGd.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Base", - "Starknet", - "Scroll", - "Linea", - "Blast", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "Taiko Alethia", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/aYA1Ei0.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/Orbiter_Finance", - "github": "https://github.com/Orbiter-Finance", - "discord": "https://discord.gg/FFT5wfmTXT", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English", - "Korean" - ], - "parentCompany": "Orbiter Finance", - "parentCompanyURL": "https://orbiter.finance", - "openSource": true, - "contractAddress": "", - "dateOfLaunch": "12/30/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Celer cBridge", - "url": "https://cbridge.celer.network/", - "description": "Celer is a blockchain interoperability protocol enabling a one-click user experience accessing tokens, DeFi, GameFi, NFTs, governance, and more across multiple chains.", - "image": "https://i.imgur.com/TyZdpEU.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Base", - "Scroll", - "Blast", - "Linea", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/FEr4emk.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/CelerNetwork", - "github": "https://github.com/celer-network", - "discord": "https://discord.com/invite/uGx4fjQ", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Celer", - "parentCompanyURL": "https://celer.network", - "openSource": true, - "contractAddress": "0x5427FEFA711Eff984124bFBB1AB6fbf5E3DA1820", - "dateOfLaunch": "6/10/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Synapse", - "url": "https://synapseprotocol.com/", - "description": "Synapse Bridge is built on top of the cross-chain infrastructure enabling users to seamlessly transfer assets across all blockchains.", - "image": "https://i.imgur.com/07lCxpa.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Base", - "Blast", - "Linea", - "Scroll", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/hp1Fnlu.png", - "platforms": [ - "Browser" - ], - "twitter": "https://twitter.com/SynapseProtocol", - "github": "https://github.com/synapsecns", - "discord": "htts://discord.gg/synapseprotocol", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Synapse", - "parentCompanyURL": "https://synapseprotocol.com", - "openSource": true, - "contractAddress": "0x7E7A0e201FD38d3ADAA9523Da6C109a07118C96a", - "dateOfLaunch": "8/29/2021", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Gas.zip", - "url": "https://gas.zip", - "description": "Fastest one-stop gas refuel bridge for over 350+ chains. Bridge and explore all your favorite alt-chains and L2s, instantly.", - "image": "https://i.imgur.com/BE9zVpY.png", - "category": "Bridge", - "subCategory": [ - "Liquidity network" - ], - "networks": [ - "Base", - "Scroll", - "Linea", - "Blast", - "Mode", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet", - "Taiko Alethia", - "zkSync Mainnet" - ], - "screenshots": [], - "bannerImage": "https://i.imgur.com/EfeBVwX.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/gasdotzip", - "github": "https://github.com/gasdotzip", - "discord": "https://discord.com/invite/gasdotzip", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": false, - "languages": [ - "English" - ], - "parentCompany": "Gas.zip", - "parentCompanyURL": "https://gas.zip", - "openSource": true, - "contractAddress": "0x2a37D63EAdFe4b4682a3c28C1c2cD4F109Cc2762", - "dateOfLaunch": "8/9/2023", - "lastUpdated": "7/3/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Staking Launchpad", - "url": "https://launchpad.ethereum.org", - "description": "Become a validator and help secure the future of Ethereum.", - "image": "https://i.imgur.com/PO19A9T.png", - "category": "Bridge", - "subCategory": [ - "Validator or oracle" - ], - "networks": [ - "Ethereum Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/UoV3Mfn.png" - ], - "bannerImage": "https://i.imgur.com/PO19A9T.png", - "platforms": [ - "Browser" - ], - "twitter": "", - "github": "https://github.com/ethereum/staking-launchpad", - "discord": "", - "kpiUrl": "", - "sortingWeight": 0, - "discover": false, - "highlight": true, - "languages": [ - "Arabic", - "German", - "Greek", - "Hungarian", - "Indonesian", - "Italian", - "Japanese", - "Korean", - "Polish", - "Portuguese (Brazilian)", - "Romanian", - "Russian", - "Slovenian", - "Spanish", - "Turkish" - ], - "parentCompany": "Ethereum Foundation", - "parentCompanyURL": "https://ethereum.foundation", - "openSource": true, - "contractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa", - "dateOfLaunch": "12/1/2020", - "lastUpdated": "7/7/2025", - "ready": "true", - "devconnect": "false" - }, - { - "name": "Bungee", - "url": "https://bungee.exchange/", - "description": "Bungee provides seamless swaps between any blockchain. With over $20B in volume and trusted by major wallets and dApps, Bungee makes moving assets between networks efficient, secure, and accessible to everyone.", - "image": "https://i.imgur.com/X2vpia7.png", - "category": "Bridge", - "subCategory": [ - "Chain abstraction", - "swap" - ], - "networks": [ - "Base", - "Scroll", - "Mode", - "Blast", - "Linea", - "Ethereum Mainnet", - "Arbitrum One", - "OP Mainnet" - ], - "screenshots": [ - "https://i.imgur.com/axNSOBz.png" - ], - "bannerImage": "https://i.imgur.com/254aaAe.png", - "platforms": [ - "Browser" - ], - "twitter": "https://x.com/BungeeExchange", - "github": "https://github.com/SocketDotTech", - "discord": "https://discord.com/invite/DrvfYq6fvc", - "kpiUrl": "", - "sortingWeight": 0, - "discover": true, - "highlight": true, - "languages": [ - "English" - ], - "parentCompany": "SocketDotTech", - "parentCompanyURL": "https://www.socket.tech/", - "openSource": true, - "contractAddress": "https://github.com/SocketDotTech/bungee-contracts-public/tree/master/deployments", - "dateOfLaunch": "10/10/2023", - "lastUpdated": "7/14/2025", - "ready": "true", - "devconnect": "false" - } - ] + "value": { + "DeFi": [ + { + "name": "Aave", + "url": "https://aave.com", + "description": "Aave is a decentralised non-custodial liquidity protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market while earning interest, and borrowers can access liquidity by providing collateral that exceeds the borrowed amount.", + "image": "https://i.imgur.com/iaxZ9N8.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Base", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/gfy4ae2.png", + "https://i.imgur.com/RRyZ9HN.png" + ], + "bannerImage": "https://i.imgur.com/lCDltCK.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/aave", + "github": "https://github.com/aave", + "discord": "https://discord.com/invite/aave", + "kpiUrl": "", + "sortingWeight": 1, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Avara", + "parentCompanyURL": "https://avara.xyz", + "openSource": true, + "contractAddress": "https://aave.com/docs/resources/addresses", + "dateOfLaunch": "9/18/2018", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2025-10-26T06:00:00.000Z", + "appOfTheWeekEndDate": "2025-11-22T07:00:00.000Z" + }, + { + "name": "Sky/Maker - USDS", + "url": "https://sky.money/", + "description": "Sky.money is a non-custodial gateway to the decentralized Sky Protocol, which centers around the USDS stablecoin.", + "image": "https://i.imgur.com/qwvHjfZ.png", + "category": "DeFi", + "subCategory": [ + "Stablecoin issuance", + "RWA", + "Lending and borrowing" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/YrlOLfQ.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/SkyEcosystem", + "github": "https://github.com/sky-ecosystem", + "discord": "https://discord.com/invite/skyecosystem", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Sky Ecosystem", + "parentCompanyURL": "https://sky.money/", + "openSource": true, + "contractAddress": "https://developers.sky.money/quick-start/deployments-tracker/", + "dateOfLaunch": "9/18/2024", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Ethena - USDE", + "url": "https://ethena.fi/", + "description": "Ethena is a synthetic dollar protocol built on Ethereum that provides a crypto-native solution for money, USDe, alongside a globally accessible dollar savings asset, sUSDe.", + "image": "https://i.imgur.com/4Y0s8zC.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Stablecoin issuance", + "Yield" + ], + "networks": [ + "Base", + "Linea", + "Blast", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/jE4oO4N.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/ethena_labs", + "github": "https://github.com/ethena-labs", + "discord": "https://discord.com/invite/ethena", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Ethena Labs", + "parentCompanyURL": "https://ethena.fi/", + "openSource": true, + "contractAddress": "https://docs.ethena.fi/api-documentation/overview", + "dateOfLaunch": "2/19/2024", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Uniswap", + "url": "https://app.uniswap.org/", + "description": "Uniswap is an automated liquidity protocol powered by a constant product formula and implemented in a system of non-upgradeable smart contracts on the Ethereum blockchain. It obviates the need for trusted intermediaries, prioritizing decentralization, censorship resistance, and security.", + "image": "https://i.imgur.com/6NqxUnZ.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Base", + "Blast", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/rah0enO.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/Uniswap/", + "github": "https://github.com/uniswap", + "discord": "https://discord.com/invite/uniswap", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English", + "Chinese", + "Japanese", + "French", + "Portuguese", + "Spanish", + "Vietnamese" + ], + "parentCompany": "Uniswap Labs", + "parentCompanyURL": "https://uniswap.org", + "openSource": true, + "contractAddress": "https://docs.uniswap.org/contracts/v4/deployments", + "dateOfLaunch": "11/2/2018", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-10-26T06:00:00.000Z", + "appOfTheWeekEndDate": "2025-11-22T07:00:00.000Z" + }, + { + "name": "Pendle", + "url": "https://www.pendle.finance/", + "description": "Pendle is a DeFi protocol focused on yield trading, allowing users to both fix or leverage their yield.", + "image": "https://i.imgur.com/WyUeZqC.png", + "category": "DeFi", + "subCategory": [ + "RWA" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/Ki7C0XF.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/pendle_fi/", + "github": "https://github.com/pendle-finance", + "discord": "https://discord.com/invite/EAujvncY2R", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Chinese" + ], + "parentCompany": "Pendle Finance", + "parentCompanyURL": "https://www.pendle.finance/", + "openSource": true, + "contractAddress": "https://github.com/pendle-finance/pendle-core-v2-public/blob/main/deployments/1-core.json", + "dateOfLaunch": "6/17/2021", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Spark", + "url": "https://spark.fi/", + "description": "Spark Fi is a non-custodial DeFi protocol that allows users to lend and borrow digital assets through SparkLend, while earning passive income via the USDS stablecoin and its associated Sky Savings Rate.", + "image": "https://i.imgur.com/XsBN52D.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing", + "RWA" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/54aFOoV.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/sparkdotfi", + "github": "https://github.com/sparkdotfi", + "discord": "https://discord.com/invite/sparkdotfi", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Spark Foundation", + "parentCompanyURL": "https://spark.fi/", + "openSource": true, + "contractAddress": "https://github.com/sparkdotfi/spark-address-registry/tree/master/src", + "dateOfLaunch": "5/9/2023", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-12T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-18T07:00:00.000Z" + }, + { + "name": "Morpho", + "url": "https://morpho.org/", + "description": "Morpho is an open, efficient, and resilient platform that allows anyone to earn yield and borrow assets. At the same time, developers or businesses can create markets, curate vaults, and build a range of applications on its flexible, permissionless infrastructure.", + "image": "https://i.imgur.com/IPLyiMT.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/VrzR6Pp.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/MorphoLabs/", + "github": "https://github.com/morpho-org", + "discord": "https://discord.com/invite/BWXbJMHMdz/", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Morpho Labs", + "parentCompanyURL": "https://morpho.org/", + "openSource": true, + "contractAddress": "https://docs.morpho.org/overview/resources/addresses#addresses", + "dateOfLaunch": "12/20/2022", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2025-12-22T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-28T07:00:00.000Z" + }, + { + "name": "Compound", + "url": "https://compound.finance/", + "description": "Compound is an EVM compatible protocol that enables supplying of crypto assets as collateral in order to borrow the base asset. Accounts can also earn interest by supplying the base asset to the protocol.", + "image": "https://i.imgur.com/yFoeO1U.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Base", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/oBflT3o.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/compoundfinance/", + "github": "https://github.com/compound-finance", + "discord": "https://discord.com/invite/rps4rfjeGz", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Compound Labs Inc.", + "parentCompanyURL": "https://compound.finance/", + "openSource": true, + "contractAddress": "https://docs.compound.finance/", + "dateOfLaunch": "9/27/2018", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Curve", + "url": "https://www.curve.finance/", + "description": "Curve.fi is a non-custodial decentralized exchange that revolutionized stablecoin trading. It began by offering superior exchange rates for stablecoin swaps (like DAI to USDC) through liquidity pools, where users earn yield by depositing their assets.", + "image": "https://i.imgur.com/NmXvivo.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/8q4O5Hd.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/CurveFinance/", + "github": "https://github.com/curvefi", + "discord": "https://discord.com/invite/9uEHakc", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Curve DAO", + "parentCompanyURL": "https://www.curve.finance/dao/", + "openSource": true, + "contractAddress": "https://docs.curve.finance/deployments/amm/", + "dateOfLaunch": "2/20/2020", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-11-23T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-11-30T07:00:00.000Z" + }, + { + "name": "Balancer", + "url": "https://balancer.fi/", + "description": "Balancer is a decentralized automated market maker (AMM) protocol built on Ethereum with a clear focus on fungible and yield-bearing liquidity. Balancer's success is intrinsically linked to the success of protocols and products built on the platform.", + "image": "https://i.imgur.com/9yZ7IJ8.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/u2l56hQ.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Balancer", + "github": "https://github.com/balancer", + "discord": "https://discord.com/invite/fEPBpe6F", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Balancer Labs", + "parentCompanyURL": "https://balancer.fi/", + "openSource": true, + "contractAddress": "https://docs.balancer.fi/developer-reference/contracts/deployment-addresses/mainnet.html", + "dateOfLaunch": "3/31/2020", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-08T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-14T07:00:00.000Z" + }, + { + "name": "Usual ", + "url": "https://usual.money/", + "description": "Usual is a decentralized protocol, embracing the shape of a decentralized banking system. It issues a fiat-backed stablecoin, collateralized by Real-World Assets (RWAs), combining the security of real assets with the composability and liquidity of DeFi.", + "image": "https://i.imgur.com/MPWo9qE.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Stablecoin issuance", + "Yield" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/MPWo9qE.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/usualmoney", + "github": "https://github.com/usual-dao", + "discord": "https://discord.usual.money/", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Usual Protocol", + "parentCompanyURL": "https://usual.money", + "openSource": true, + "contractAddress": "https://tech.usual.money/smart-contracts/contract-deployments", + "dateOfLaunch": "5/23/2024", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Fluid", + "url": "https://fluid.io/", + "description": "Fluid is a DeFi protocol combining a liquidity layer, automated limits, lending and vault protocols, robust oracle system, and DEX protocol,", + "image": "https://i.imgur.com/5Oh1Lek.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing", + "DEX" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/G2JQeje.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/0xfluid", + "github": "https://github.com/Instadapp", + "discord": "https://discord.com/invite/C76CeZc", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Instadapp", + "parentCompanyURL": "https://instadapp.io/", + "openSource": true, + "contractAddress": "https://github.com/Instadapp/fluid-contracts-public/blob/main/deployments/deployments.md", + "dateOfLaunch": "10/29/2024", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-16T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-22T06:00:00.000Z" + }, + { + "name": "Frax", + "url": "https://frax.finance/", + "description": "Frax currently issues 3 stablecoins: FRAX, FPI, and frxETH, along with numerous other non-stablecoin tokens. There are also multiple contract groups or \"subprotocols\" within it that integrate these tokens to provide utility and stability, including Fraxtal, a modular L2 chain.", + "image": "https://i.imgur.com/2lwTQ6d.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Stablecoin issuance", + "Lending and borrowing" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/Q2AXkzE.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/fraxfinance", + "github": "https://github.com/FraxFinance", + "discord": "https://discord.gg/fraxfinance", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Frax Finance", + "parentCompanyURL": "https://frax.finance", + "openSource": true, + "contractAddress": "https://docs.frax.com/protocol/assets/frxusd/addresses", + "dateOfLaunch": "12/20/2020", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Aerodrome", + "url": "https://aerodrome.finance/", + "description": "Aerodrome is a decentralized exchange where you can execute low-fee swaps, deposit tokens to earn rewards, and actively participate in the onchain economy.", + "image": "https://i.imgur.com/ESTKcyO.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/fJWk5bn.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/AerodromeFi", + "github": "https://github.com/aerodrome-finance", + "discord": "https://discord.gg/aerodrome", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Aerodrome Finance", + "parentCompanyURL": "https://aerodrome.finance", + "openSource": true, + "contractAddress": "https://aerodrome.finance/security", + "dateOfLaunch": "8/28/2023", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Moonwell", + "url": "https://moonwell.fi/", + "description": "Put your digital assets to work. Lend or borrow to handle whatever life throws your way. Pay it back on your own schedule, with no monthly payments or additional fees.", + "image": "https://i.imgur.com/cIgVDSd.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/WeCuzJq.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/MoonwellDeFi", + "github": "https://github.com/moonwell-fi/", + "discord": "https://discord.com/invite/moonwellfi", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Moonwell", + "parentCompanyURL": "https://moonwell.fi", + "openSource": true, + "contractAddress": "https://docs.moonwell.fi/moonwell/protocol-information/contracts", + "dateOfLaunch": "8/9/2023", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Franklin Templeton - BENJI", + "url": "https://digitalassets.franklintempleton.com/benji/", + "description": "Benji is Franklin Templeton's proprietary blockchain-integrated recordkeeping system that enables the tokenization and servicing of mutual funds on public blockchain infrastructure.", + "image": "https://i.imgur.com/e7QgHwP.png", + "category": "DeFi", + "subCategory": [ + "RWA" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/8FU1YZ3.png", + "platforms": [ + "Browser" + ], + "twitter": "", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Franklin Templeton", + "parentCompanyURL": "https://franklintempleton.com", + "openSource": false, + "contractAddress": "https://digitalassets.franklintempleton.com/benji/benji-contracts/", + "dateOfLaunch": "11/14/2024", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Synthetix", + "url": "https://synthetix.io/", + "description": "Synthetix provides liquidity for permissionless derivatives like perpetual futures, options, parimutuel markets, and more across EVM chains.", + "image": "https://i.imgur.com/v4Xkjp7.png", + "category": "DeFi", + "subCategory": [ + "Prediction" + ], + "networks": [ + "Ethereum Mainnet", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/eOcFBl5.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/synthetix_io", + "github": "https://github.com/synthetixio", + "discord": "https://discord.gg/synthetix", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Synthetix", + "parentCompanyURL": "https://synthetix.io", + "openSource": true, + "contractAddress": "https://github.com/Synthetixio/synthetix-deployments", + "dateOfLaunch": "6/26/2018", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-08T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-14T07:00:00.000Z" + }, + { + "name": "ZeroLend", + "url": "https://zerolend.xyz/", + "description": "ZeroLend is a user-friendly and frictionless lending experience to onboard the masses to Defi. Built on L2s.", + "image": "https://i.imgur.com/WKj2WDX.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Linea", + "Blast", + "Ethereum Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/MjlZo57.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/zerolendxyz", + "github": "https://github.com/zerolend", + "discord": "https://discord.gg/zerolend", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "ZeroLend", + "parentCompanyURL": "https://zerolend.xyz", + "openSource": true, + "contractAddress": "https://docs.zerolend.xyz/security/deployed-addresses", + "dateOfLaunch": "1/1/2023", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-09T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-15T06:00:00.000Z" + }, + { + "name": "SyncSwap", + "url": "https://syncswap.xyz/", + "description": "Powered by zero-knowledge technology, SyncSwap brings more people easy-to-use and low-cost DeFi with complete Ethereum security.", + "image": "https://i.imgur.com/vpk2LXa.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Scroll", + "Linea", + "zkSync Mainnet", + "Taiko Alethia" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/CEPC1m9.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/syncswap", + "github": "https://github.com/syncswap", + "discord": "https://discord.gg/syncswap", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "SyncSwap", + "parentCompanyURL": "https://syncswap.xyz", + "openSource": true, + "contractAddress": "https://docs.syncswap.xyz/syncswap/smart-contracts/smart-contracts", + "dateOfLaunch": "3/4/2023", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Ekubo", + "url": "https://ekubo.org/", + "description": "Ekubo is an automated market maker, with several unique features including concentrated liquidity and a extensible and gas efficient architecture.", + "image": "https://i.imgur.com/xFOVA9S.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Starknet", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/VCZaLrd.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/EkuboProtocol", + "github": "https://github.com/EkuboProtocol", + "discord": "https://discord.com/invite/RFbSXxtqUG", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Ekubo", + "parentCompanyURL": "https://ekubo.org", + "openSource": true, + "contractAddress": "https://docs.ekubo.org/integration-guides/reference/contract-addresses", + "dateOfLaunch": "8/26/2023", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-16T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-22T07:00:00.000Z" + }, + { + "name": "Maple", + "url": "https://maple.finance/", + "description": "Maple delivers full-spectrum yield strategies and financing across USDC, USDT, BTC, and more – for institutions and onchain participants around the world.", + "image": "https://i.imgur.com/39h1fde.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Lending and borrowing" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/tpdQ0Hx.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/maplefinance", + "github": "https://github.com/maple-labs/address-registry/blob/main/MapleAddressRegistryETH.md", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Maple Finance", + "parentCompanyURL": "https://maple.finance", + "openSource": true, + "contractAddress": "https://github.com/maple-labs/address-registry/blob/main/MapleAddressRegistryETH.md", + "dateOfLaunch": "5/12/2021", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-20T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-26T06:00:00.000Z" + }, + { + "name": "Centrifuge", + "url": "https://centrifuge.io/", + "description": "Centrifuge is the platform for tokenized real-world assets, providing the infrastructure and ecosystem to tokenize, manage, and invest into RWAs.", + "image": "https://i.imgur.com/JSO0lIV.png", + "category": "DeFi", + "subCategory": [ + "RWA" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/blvCZ8y.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/centrifuge", + "github": "https://github.com/centrifuge/", + "discord": "https://discord.com/invite/yEzyUq5gxF", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Centrifuge", + "parentCompanyURL": "https:.//centrifuge.io", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "5/22/2023", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-05T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-11T07:00:00.000Z" + }, + { + "name": "Goldfinch", + "url": "https://goldfinch.finance/", + "description": "Goldfinch is a decentralized credit protocol that enables crypto borrowing without crypto collateral. It connects investors with real-world businesses.", + "image": "https://i.imgur.com/iPhuqPh.png", + "category": "DeFi", + "subCategory": [ + "RWA" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/K1R5KEC.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/goldfinch_fi", + "github": "https://github.com/goldfinch-eng", + "discord": "https://discord.com/invite/HVeaca3fN8", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Goldfinch", + "parentCompanyURL": "https://goldfinch.finance", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "1/31/2021", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-19T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-25T07:00:00.000Z" + }, + { + "name": "Superstate", + "url": "https://superstate.com/", + "description": "Superstate connects financial assets with crypto capital markets through on-chain public listings and tokenized securities.", + "image": "https://i.imgur.com/xDIoI7M.png", + "category": "DeFi", + "subCategory": [ + "RWA" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/q3KFe1l.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/superstatefunds", + "github": "https://github.com/superstateinc", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Superstate", + "parentCompanyURL": "https://superstate.co", + "openSource": true, + "contractAddress": "https://docs.superstate.com/introduction-to-superstate/smart-contracts", + "dateOfLaunch": "1/3/2024", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-02T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-08T07:00:00.000Z" + }, + { + "name": "Tether - USDT", + "url": "https://tether.to/", + "description": "Tether (USDT) is a stablecoin, a cryptocurrency pegged to and backed by fiat currencies like the U.S. dollar.", + "image": "https://i.imgur.com/Pw4Q7Qf.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Stablecoin issuance" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Ink" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/NsL1fv3.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Tether_to/", + "github": "https://github.com/tetherto", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Chinese", + "Chinese Traditional", + "Turkish", + "Russian", + "Portuguese", + "Italian", + "French", + "German" + ], + "parentCompany": "Tether Holdings Limited ", + "parentCompanyURL": "https://tether.to/", + "openSource": false, + "contractAddress": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7", + "dateOfLaunch": "11/1/2017", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Cicle - USDC", + "url": "https://circle.com/", + "description": "USDC is a digital dollar backed 100% by highly liquid cash and cash-equivalent assets and is redeemable 1:1 for US dollars.", + "image": "https://i.imgur.com/vpadKkU.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Stablecoin issuance" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Base", + "OP Mainnet", + "World Chain" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/InJtYE5.jpeg", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/circle", + "github": "https://github.com/circlefin", + "discord": "https://discord.com/invite/buildoncircle", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "ircle Internet Group, Inc.", + "parentCompanyURL": "https://www.circle.com", + "openSource": false, + "contractAddress": "https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "dateOfLaunch": "9/1/2018", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "PayPal - PYUSD", + "url": "https://www.paypal.com/pyusd", + "description": "PayPal USD (PYUSD) is a stablecoin backed by secure and highly liquid assets. Buy, sell, hold, and transfer it in the PayPal app or website.", + "image": "https://i.imgur.com/0MC9QNU.png", + "category": "DeFi", + "subCategory": [ + "RWA", + "Stablecoin issuance" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/pDessgi.jpeg", + "https://i.imgur.com/rHoNrFW.jpeg", + "https://i.imgur.com/bRa61P0.jpeg" + ], + "bannerImage": "https://i.imgur.com/N98oDCJ.png", + "platforms": [ + "Browser" + ], + "twitter": "", + "github": "https://github.com/paxosglobal/pyusd-contract", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Paypal", + "parentCompanyURL": "https://paypal.com", + "openSource": false, + "contractAddress": "https://etherscan.io/token/0x6c3ea9036406852006290770bedfcaba0e23a0e8", + "dateOfLaunch": "8/7/2023", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Etherisc", + "url": "https://etherisc.com/", + "description": "Etherisc provides a complete suite of solutions to build, manage, and inspect decentralized insurance products.", + "image": "https://i.imgur.com/ZVOa4fY.png", + "category": "DeFi", + "subCategory": [ + "Insurance" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/EBgQucz.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/etherisc?lang=en", + "github": "https://github.com/etherisc", + "discord": "https://discord.gg/cVsgakVG4R", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Etherisc", + "parentCompanyURL": "https://etherisc.com", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "7/28/2016", + "lastUpdated": "7/28/2016", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Polymarket", + "url": "https://polymarket.com/", + "description": "Polymarket is the world’s largest prediction market, allowing you to stay informed and profit from your knowledge by betting on future events across various topics.", + "image": "https://i.imgur.com/2YlJ2Jq.png", + "category": "DeFi", + "subCategory": [ + "Prediction", + "RWA", + "Yield", + "Crowdfunding" + ], + "networks": [], + "screenshots": [], + "bannerImage": "https://i.imgur.com/pXUEFwa.png", + "platforms": [ + "Browser", + "Android", + "iOS" + ], + "twitter": "https://twitter.com/Polymarket", + "github": "", + "discord": "https://discord.gg/Polymarket", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Adventure One QSS Inc", + "parentCompanyURL": "a1qss.com", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "6/16/2020", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-29T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-04T07:00:00.000Z" + }, + { + "name": "1inch", + "url": "https://1inch.io/", + "description": "1inch is an exchange aggregator that scans decentralized exchanges to find the lowest cryptocurrency prices for traders.", + "image": "https://i.imgur.com/8NYV5YL.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Base", + "Linea", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/v9VqXmC.png", + "platforms": [ + "Browser", + "Android", + "iOS" + ], + "twitter": "https://twitter.com/intent/follow?screen_name=1inch", + "github": "https://github.com/1inch", + "discord": "https://discord.com/invite/1inch", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "1inch", + "parentCompanyURL": "https://1inch.io", + "openSource": true, + "contractAddress": "https://portal.1inch.dev/documentation/contracts/aggregation-protocol/aggregation-introduction", + "dateOfLaunch": "5/9/2019", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Liquity", + "url": "https://www.liquity.org/", + "description": "Liquity V2 is a decentralized borrowing protocol that lets users borrow at fixed rates and mint the stablecoin BOLD", + "image": "https://i.imgur.com/mG928HR.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing", + "Stablecoin issuance" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/4EWjy7M.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/LiquityProtocol", + "github": "https://github.com/liquity/bold", + "discord": "https://discord.com/invite/HFKpCdgQm6", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Liquity", + "parentCompanyURL": "https://liquity.org", + "openSource": true, + "contractAddress": "https://discord.com/invite/HFKpCdgQm6", + "dateOfLaunch": "4/5/2021", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-22T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-28T07:00:00.000Z" + }, + { + "name": "Cowswap", + "url": "https://cowswap.exchange/", + "description": "CoW Swap finds the lowest prices from all decentralized exchanges and DEX aggregators & saves you more with p2p trading and protection from MEV.", + "image": "https://i.imgur.com/9wgR8rv.png", + "category": "DeFi", + "subCategory": [ + "DEX" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/s6mJj9Z.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/CoWSwap", + "github": "https://github.com/cowprotocol", + "discord": "https://discord.com/invite/cowprotocol", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "CoW DAO", + "parentCompanyURL": "https://cowswap.exchange", + "openSource": true, + "contractAddress": "https://docs.cow.fi/cow-protocol/reference/contracts/core", + "dateOfLaunch": "4/28/2021", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2026-01-12T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-18T07:00:00.000Z" + }, + { + "name": "PoolTogether", + "url": "https://pooltogether.com/", + "description": "PoolTogether is a prize savings game, where users pool yield from their tokens for a chance to win prizes. The protocol is a gamification layer that allows users to have a chance to win big while holding their favourite token.", + "image": "https://i.imgur.com/wtLeg1K.png", + "category": "DeFi", + "subCategory": [ + "Yield" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/0Kmydrv.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/PoolTogether_", + "github": "https://github.com/pooltogether", + "discord": "https://discord.com/invite/hFJh4zJx", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "PoolTogether", + "parentCompanyURL": "https://pooltogether.com", + "openSource": true, + "contractAddress": "https://dev.pooltogether.com/protocol/deployments/", + "dateOfLaunch": "6/24/2019", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-22T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-28T07:00:00.000Z" + }, + { + "name": "Yearn", + "url": "https://yearn.finance/", + "description": "Yearn Finance is yield aggregator that automatically seeks out profit-generating strategies for crypto users through smart contracts.", + "image": "https://i.imgur.com/HR0IJKk.png", + "category": "DeFi", + "subCategory": [ + "Yield", + "Lending and borrowing" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/aCh22JJ.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/yearnfi", + "github": "https://github.com/yearn", + "discord": "https://discord.com/invite/yearn", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Yearn", + "parentCompanyURL": "https://yearn.finance", + "openSource": true, + "contractAddress": "https://docs.yearn.fi/developers/addresses/", + "dateOfLaunch": "7/17/2020", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-01T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-07T07:00:00.000Z" + }, + { + "name": "ether.fi", + "url": "https://ether.fi/", + "description": "ether.fi is a non-custodial Ethereum restaking platform that lets users earn rewards while maintaining control of their assets. Built on Ethereum’s decentralized infrastructure, it extends staking into a liquid, composable layer integrated across DeFi.", + "image": "https://i.imgur.com/W21OIX5.jpeg", + "category": "DeFi", + "subCategory": [ + "Liquid staking", + "Payments" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Base", + "OP Mainnet", + "Scroll", + "Mode", + "Linea", + "Taiko Alethia" + ], + "screenshots": [ + "https://i.imgur.com/7WclCdp.png" + ], + "bannerImage": "https://i.imgur.com/MUJlbiI.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/ether_fi", + "github": "https://github.com/etherfi-protocol", + "discord": "https://discord.com/invite/etherfi", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "ether.fi", + "parentCompanyURL": "https://ether.fi/", + "openSource": true, + "contractAddress": "https://etherfi.gitbook.io/etherfi/contracts-and-integrations/deployed-contracts", + "dateOfLaunch": "5/3/2023", + "lastUpdated": "10/9/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "True Markets", + "url": "https://app.truemarkets.org/en", + "description": "TrueMarkets is a decentralized prediction market platform that enables users to forecast real-world event outcomes by trading binary options, facilitating real-time sentiment analysis and information discovery.", + "image": "https://i.imgur.com/DOJRAj0.png", + "category": "DeFi", + "subCategory": [ + "Prediction" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/kgDbq7g.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/TrueMarketsOrg", + "github": "https://github.com/truemarketsorg", + "discord": "https://discord.gg/truemarkets", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "truemarkets.org", + "parentCompanyURL": "https://truemarkets.org", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "3/11/2025", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-06T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-12T06:00:00.000Z" + }, + { + "name": "Flaunch", + "url": "https://flaunch.gg/", + "description": "Flaunch is a permissionless protocol and engine for all forms of tokenization — memes, AI agents, products, art, RWAs and more. The protocol allows builders to create their own Token Managers, providing complete flexibility in the monetization of the assets launched.", + "image": "https://i.imgur.com/NgyChQC.png", + "category": "DeFi", + "subCategory": [ + "Launchpad" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/tw4fnPz.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/flaunchgg", + "github": "https://github.com/flayerlabs/flaunchgg-contracts", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Flaunch", + "parentCompanyURL": "https://flaunch.gg", + "openSource": true, + "contractAddress": "https://docs.flaunch.gg/developer-resources/contract-addresses", + "dateOfLaunch": "2/1/2025", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-20T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-26T06:00:00.000Z" + }, + { + "name": "Octant", + "url": "https://octant.build/", + "description": "Octant aims to become the first self-sustaining global public goods funding ecosystem that balances the common good and individual financial empowerment.", + "image": "https://i.imgur.com/f7NBrxB.png", + "category": "DeFi", + "subCategory": [ + "Crowdfunding" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/Mxu9vWC.jpeg" + ], + "bannerImage": "https://i.imgur.com/DZKTArI.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/octantapp", + "github": "https://github.com/golemfoundation/octant", + "discord": "https://discord.gg/octant", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Golem Foundation", + "parentCompanyURL": "https://golem.foundation/", + "openSource": true, + "contractAddress": "https://github.com/golemfoundation/octant/tree/develop/contracts-v1", + "dateOfLaunch": "8/8/2023", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2026-02-23T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-01T07:00:00.000Z" + }, + { + "name": "SuperFluid", + "url": "https://superfluid.org/", + "description": "Earn every second. Superfluid is the money streaming protocol, powering apps for earning, investing, and trading by the second onchain.", + "image": "https://i.imgur.com/kGnnASt.png", + "category": "DeFi", + "subCategory": [ + "Salary distribution", + "Lending and borrowing" + ], + "networks": [ + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/wRkER30.png" + ], + "bannerImage": "https://i.imgur.com/xiI2Rsk.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Superfluid_HQ", + "github": "https://github.com/superfluid-finance", + "discord": "https://discord.gg/EFAUmTnPd9", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Superfluid Finance LTD", + "parentCompanyURL": "https://superfluid.org/", + "openSource": true, + "contractAddress": "0x4E583d9390082B65Bef884b629DFA426114CED6d", + "dateOfLaunch": "", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-23T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-01T07:00:00.000Z" + }, + { + "name": "Splits.org", + "url": "https://splits.org", + "description": "Splits.org is a decentralized platform for easy, automated on-chain payment splitting and revenue sharing across multiple blockchains.", + "image": "https://i.imgur.com/YNFXeUv.png", + "category": "DeFi", + "subCategory": [ + "Payments" + ], + "networks": [ + "Base", + "Blast", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/J87FFyg.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/0xsplits", + "github": "https://github.com/0xSplits", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Splits Protocols, Inc", + "parentCompanyURL": "https://splits.org", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "2/15/2022", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "JuiceboxETH", + "url": "https://juicebox.money", + "description": "Juicebox is a programmable treasury and community funding protocol on Ethereum that lets users launch projects with configurable funding cycles, allocate funds transparently, and issue tokens or NFTs in return—commonly used for DAOs, creative initiatives, and experimental public goods.", + "image": "https://i.imgur.com/Iqlc83m.png", + "category": "DeFi", + "subCategory": [ + "Crowdfunding" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/SUqxpOa.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/juiceboxETH", + "github": "https://github.com/jbx-protocol", + "discord": "https://discord.com/invite/wFTh4QnDzk", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Juicebox", + "parentCompanyURL": "https://juicebox.money", + "openSource": true, + "contractAddress": "https://docs.juicebox.money/v4/addresses/", + "dateOfLaunch": "7/15/2021", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-02T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-08T07:00:00.000Z" + }, + { + "name": "zkp2p", + "url": "https://zkp2p.xyz", + "description": "ZKP2P is a trust-minimized, peer-to-peer fiat-to-crypto on-ramp/off-ramp protocol using zero-knowledge proofs (ZKPs) to verify off-chain payments (e.g., Venmo, Revolut) without exposing sensitive data—enabling secure fiat conversion to crypto.", + "image": "https://i.imgur.com/HalUEnr.png", + "category": "DeFi", + "subCategory": [ + "Onramp / offramp" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/a7zBmeQ.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/zkp2p", + "github": "https://github.com/zkp2p", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "P2P Labs Inc.", + "parentCompanyURL": "https://zkp2p.xyz", + "openSource": true, + "contractAddress": "https://docs.zkp2p.xyz/developer/smart-contracts/deployments", + "dateOfLaunch": "2/3/2025", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2026-04-27T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-05-03T06:00:00.000Z" + }, + { + "name": "Teller", + "url": "https://teller.org", + "description": "Teller is a decentralized, peer-to-peer lending protocol on Ethereum and Polygon that offers time-based, fixed-term loans with no margin liquidations—borrowers pay fixed interest and return the full collateral at maturity.", + "image": "https://i.imgur.com/AoqkHhy.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/a6SgPLC.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/useteller", + "github": "https://github.com/teller-protocol", + "discord": "https://discord.com/invite/teller", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Teller", + "parentCompanyURL": "https://teller.org", + "openSource": true, + "contractAddress": "https://docs.teller.org/v2/resources/deployed-contracts", + "dateOfLaunch": "1/4/2021", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Alchemix", + "url": "https://alchemix.fi/", + "description": "Alchemix loans automatically pay themselves off with the yield generated from your deposits of ETH or stablecoins. Unlock the potential of your assets with secure and stress-free borrowing", + "image": "https://i.imgur.com/Hwgx9GR.png", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Linea" + ], + "screenshots": [ + "https://i.imgur.com/a/ROfmA6H.png" + ], + "bannerImage": "https://i.imgur.com/2UrdPcS.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/AlchemixFi", + "github": "https://github.com/alchemix-finance", + "discord": "https://discord.gg/XpZD7NJD", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Alchemix", + "parentCompanyURL": "https://alchemix.fi/", + "openSource": true, + "contractAddress": "https://github.com/alchemix-finance/deployments", + "dateOfLaunch": "6/27/2022", + "lastUpdated": "9/2/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Wildcat", + "url": "https://app.wildcat.finance/", + "description": "Wildcat Finance is a DeFi protocol that enables undercollateralized lending, giving institutions access to flexible credit markets without requiring oversized collateral deposits. Borrowers can create customized lending markets with transparent terms, while lenders earn yield by providing liquidity counterparties they pick themselves.", + "image": "https://i.imgur.com/0WZhOay.jpeg", + "category": "DeFi", + "subCategory": [ + "Lending and borrowing" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/wDcYpqu.png" + ], + "bannerImage": "https://i.imgur.com/wCQmFhO.png", + "platforms": [ + "Browser", + "Android", + "iOS" + ], + "twitter": "https://x.com/WildcatFi", + "github": "https://github.com/wildcat-finance", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Wildcat Labs", + "parentCompanyURL": "", + "openSource": false, + "contractAddress": "https://docs.wildcat.finance/technical-overview/contract-deployments", + "dateOfLaunch": "1/1/2024", + "lastUpdated": "9/25/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Contango", + "url": "https://app.contango.xyz/", + "description": "Contango lets you loop anything on-chain. You can create leverage (re)staking positions, arb rates differentials, farm points, or simply go long or short like a perp at low funding.", + "image": "https://i.imgur.com/OLPYww5.png", + "category": "DeFi", + "subCategory": [ + "Yield" + ], + "networks": [ + "OP Mainnet", + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [ + "https://i.imgur.com/gaWUjM0.png" + ], + "bannerImage": "https://i.imgur.com/hufoLSM.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Contango_xyz", + "github": "https://github.com/contango-xyz/core-v2", + "discord": "https://discord.gg/x3dync2edA", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Contango", + "parentCompanyURL": "", + "openSource": true, + "contractAddress": "https://docs.contango.xyz/resources/contracts-and-audits", + "dateOfLaunch": "10/1/2023", + "lastUpdated": "9/25/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "The Gauntlet App", + "url": "https://app.gauntlet.xyz/", + "description": "Access the risk-adjusted yields in DeFi, direct from the quants at Gauntlet. Earn on BTC, ETH, stablecoins, and more across multiple chains and protocols. ", + "image": "https://i.imgur.com/gUE8bIl.png", + "category": "DeFi", + "subCategory": [ + "Yield" + ], + "networks": [ + "Base", + "Unichain", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [ + "https://i.imgur.com/FzGyhhB.png" + ], + "bannerImage": "https://i.imgur.com/U2pZent.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/gauntlet_xyz", + "github": "https://github.com/aera-finance/aera-contracts-public/tree/main/v3", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Gauntlet", + "parentCompanyURL": "www.gauntlet.xyz", + "openSource": false, + "contractAddress": "misc. see app for vault addresses", + "dateOfLaunch": "10/24/2024", + "lastUpdated": "", + "ready": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Sablier", + "url": "https://sablier.finance/", + "description": "Sablier is a protocol that facilitates the automated distribution of tokens over time. This \"streaming\" functionality removes the need for manual transactions, saving time and resources.", + "image": "https://i.imgur.com/w5i4Q5k.png", + "category": "DeFi", + "subCategory": [ + "Payments" + ], + "networks": [ + "Base", + "Scroll", + "Linea", + "Blast", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/CNIkIB0.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Sablier", + "github": "https://github.com/sablier-labs", + "discord": "https://discord.gg/bSwRCwWRsT", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Sablier Labs", + "parentCompanyURL": "https://sablier.com", + "openSource": true, + "contractAddress": "https://github.com/sablier-labs", + "dateOfLaunch": "12/13/2019", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "R3al Blocks", + "url": "https://r3al.io/en", + "description": "We are a platform that offers access to investment in real-world assets.", + "image": "https://i.imgur.com/3VjkIyg.jpeg", + "category": "DeFi", + "subCategory": [ + "RWA" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/Sbm71uG.png" + ], + "bannerImage": "https://i.imgur.com/55sWskB.jpeg", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/r3al_blocks", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Spanish" + ], + "parentCompany": "Real Blocks", + "parentCompanyURL": "https://r3al.io", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "5/7/2025", + "lastUpdated": "10/13/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Lemon", + "url": "https://lemon.me/", + "description": "Exchange pesos for Bitcoin, USDT, Ethereum, and other cryptocurrencies instantly. Invest in DeFi and order your VISA Lemon Card.", + "image": "https://i.imgur.com/msDGRZU.png", + "category": "DeFi", + "subCategory": [ + "Payments", + "Wallet" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/jEJt1Z4.jpeg", + "https://i.imgur.com/85CL2fg.jpeg", + "https://i.imgur.com/JN3K8pU.jpeg" + ], + "bannerImage": "https://i.imgur.com/6pTl8lx.jpeg", + "platforms": [ + "Android" + ], + "twitter": "https://twitter.com/lemonapp_ar", + "github": "", + "discord": "https://discord.gg/qeDs4KjTMM", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Spanish", + "Portuguese (Brazilian)" + ], + "parentCompany": "Lemon", + "parentCompanyURL": "https://lemon.me/", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "1/1/2019", + "lastUpdated": "10/13/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "DeFi Saver", + "url": "https://defisaver.com/", + "description": "DeFi Saver is a non-custodial DeFi management tool offering advanced features and functionalities for managing your positions and crypto assets in various DeFi protocols", + "image": "https://i.imgur.com/KwLrIsX.jpeg", + "category": "DeFi", + "subCategory": [ + "Portfolio manager" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Base", + "OP Mainnet", + "Linea" + ], + "screenshots": [ + "https://i.imgur.com/bqK4Y1K.jpeg", + "https://i.imgur.com/iWeh70l.jpeg", + "https://i.imgur.com/hAoEu2J.jpeg", + "https://i.imgur.com/Wpo6Tob.jpeg" + ], + "bannerImage": "https://i.imgur.com/OMDI2rD.jpeg", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/defisaver", + "github": "https://github.com/defisaver/defisaver-v3-contracts", + "discord": "https://discord.com/invite/XGDJHhZ", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Spanish" + ], + "parentCompany": "Decenter", + "parentCompanyURL": "https://www.decenter.com", + "openSource": true, + "contractAddress": "https://docs.defisaver.com/protocol/deployed-contracts", + "dateOfLaunch": "1/1/2019", + "lastUpdated": "10/13/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Ripio", + "url": "https://www.ripio.com/en", + "description": "Ripio is a Latin American cryptocurrency and blockchain company that provides a suite of financial products built around crypto — including wallets, exchanges, and DeFi tools.", + "image": "https://i.imgur.com/TaGDy5i.jpeg", + "category": "DeFi", + "subCategory": [ + "DEX", + "Yield", + "Wallet", + "Portfolio manager" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/utCa3WC.jpeg" + ], + "bannerImage": "https://i.imgur.com/1ebNhg8.jpeg", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/ripioapp", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Spanish", + "Portuguese" + ], + "parentCompany": "Ripio", + "parentCompanyURL": "https://ripio.com", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "4/1/2013", + "lastUpdated": "10/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Belo", + "url": "https://belo.app/ar/", + "description": "A crypto-fiat platform with wallet, exchange, and yield tools.\n", + "image": "https://i.imgur.com/ukFEnXy.jpeg", + "category": "DeFi", + "subCategory": [ + "DEX", + "Yield", + "Wallet" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/KiTXnec.jpeg", + "https://i.imgur.com/OjFUm9a.jpeg", + "https://i.imgur.com/FNZtAP9.jpeg" + ], + "bannerImage": "https://i.imgur.com/0LCGmXX.jpeg", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/belo_app", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "Spanish" + ], + "parentCompany": "Belo", + "parentCompanyURL": "https://bello.app/ar", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "11/1/2024", + "lastUpdated": "10/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Offramp", + "url": "https://www.offramp.xyz/", + "description": "Offramp.xyz is a self-custodial crypto wallet and Visa card platform that lets users convert, spend, and withdraw stablecoins or other digital assets across multiple blockchains in everyday transactions.", + "image": "https://i.imgur.com/4ypvqWb.jpeg", + "category": "DeFi", + "subCategory": [ + "Payments" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Base", + "OP Mainnet", + "World Chain", + "Mode" + ], + "screenshots": [ + "https://i.imgur.com/1mCntHO.jpeg", + "https://i.imgur.com/6YPXtHj.jpeg", + "https://i.imgur.com/mNTjbjr.jpeg" + ], + "bannerImage": "https://i.imgur.com/nQIS63O.jpeg", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://twitter.com/OfframpXYZ", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Spanish", + "Portuguese" + ], + "parentCompany": "Offramp Labs", + "parentCompanyURL": "https://offramp.xyz", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "1/1/2022", + "lastUpdated": "10/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Daimo Pay", + "url": "https://pay.daimo.com/", + "description": "Daimo Pay routes funds from any currency, chain, or app to the chain and stablecoin you choose.", + "image": "https://i.imgur.com/VM7mZ57.jpeg", + "category": "DeFi", + "subCategory": [ + "Payments" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Base", + "OP Mainnet", + "Linea", + "World Chain", + "Scroll" + ], + "screenshots": [ + "https://i.imgur.com/VuAkCHt.jpeg", + "https://i.imgur.com/qWaSXh1.jpeg", + "https://i.imgur.com/ZEOM5xd.jpeg" + ], + "bannerImage": "https://i.imgur.com/t6thuqS.jpeg", + "platforms": [ + "Android", + "iOS", + "Browser" + ], + "twitter": "https://x.com/daimopay", + "github": "https://github.com/daimo-eth", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Daimo, Inc", + "parentCompanyURL": "https://pay.daimo.com", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "12/9/2024", + "lastUpdated": "10/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "KyberSwap", + "url": "kyberswap.com", + "description": "Kyber Network is a multichain DEX Aggregator and liquidity hub that connects liquidity from different sources to enable trades at the best rates. Native to Ethereum since 2017, KyberSwap now operates on many EVM chains and consistently the best aggregator in terms of trading volume.", + "image": "https://i.imgur.com/Bzmt2s7.jpeg", + "category": "DeFi", + "subCategory": [ + "Yield", + "DEX" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Linea", + "Unichain", + "Mantle", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/CBDooVb.png" + ], + "bannerImage": "https://i.ibb.co/qYv2VBsP/kyber-ad.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/KyberNetwork", + "github": "https://github.com/kybernetwork", + "discord": "https://discord.gg/kyberswap", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": true, + "contractAddress": "https://docs.kyberswap.com/kyberswap-solutions/kyberswap-aggregator/contracts/aggregator-contract-addresses", + "dateOfLaunch": "2/1/2018", + "lastUpdated": "", + "ready": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Superform", + "url": "https://superform.xyz", + "description": "Superform is the first stablecoin neobank. Anyone can save, swap, send, and earn onchain while keeping full control of their assets. Trusted by more than 150,000 users, Superform aggregates over $70B of opportunities across 60+ platforms so you can earn on your assets, easily and instantly.", + "image": "https://i.imgur.com/e4raePQ.png", + "category": "DeFi", + "subCategory": [ + "Yield" + ], + "networks": [ + "Ethereum Mainnet", + "Base", + "OP Mainnet", + "Unichain", + "Linea", + "Arbitrum One" + ], + "screenshots": [ + "https://i.imgur.com/RGgJcMI.png" + ], + "bannerImage": "https://i.imgur.com/hfOPmCA.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/superformxyz", + "github": "https://github.com/superform-xyz", + "discord": "https://discord.gg/superform", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Superform labs", + "parentCompanyURL": "https://superform.xyz", + "openSource": true, + "contractAddress": "https://docs.superform.xyz/integrate-superform/deployment-addresses", + "dateOfLaunch": "1/24/2024", + "lastUpdated": "10/30/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + } + ], + "Social": [ + { + "name": "Zora", + "url": "https://zora.co/", + "description": "Zora is an onchain social network revealing new opportunities to create, connect, and earn from your life online.", + "image": "https://i.imgur.com/3ti964X.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/6OxNqMF.jpeg" + ], + "bannerImage": "https://i.imgur.com/GBBRB59.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://twitter.com/zora", + "github": "https://github.com/ourzora", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Zora Labs", + "parentCompanyURL": "https://zora.co", + "openSource": true, + "contractAddress": "0xaD031EeE55f595dF6Dbd61e9ef3B908FaD1B3671", + "dateOfLaunch": "1/1/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2025-12-15T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-21T07:00:00.000Z" + }, + { + "name": "Rodeo", + "url": "https://rodeo.club/", + "description": "Rodeo is a creative social network where artists, makers, and creators come together to share and celebrate their work. It combines the familiar features of social platforms with unique ways to support and earn from creativity.", + "image": "https://i.imgur.com/R3AaFkG.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Base" + ], + "screenshots": [ + "https://i.imgur.com/stYV9Rv.png", + "https://i.imgur.com/zEPpsoL.png", + "https://i.imgur.com/2hnlwsV.png", + "https://i.imgur.com/X0wUCxY.png" + ], + "bannerImage": "https://i.imgur.com/FDduCHZ.png", + "platforms": [ + "Browser", + "iOS" + ], + "twitter": "https://x.com/rodeodotclub", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Rodeo Club", + "parentCompanyURL": "https://rodeo.club", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "12/24/2024", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-02T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-08T07:00:00.000Z" + }, + { + "name": "Towns", + "url": "https://www.towns.com/", + "description": "Towns Protocol is an open source protocol for building decentralized real-time messaging apps. It consists of an EVM-compatible L2 chain, decentralized off-chain stream nodes, and smart contracts that are deployed on Base.", + "image": "https://i.imgur.com/1XjFcVW.png", + "category": "Social", + "subCategory": [ + "Messaging" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/YNOquL3.png", + "platforms": [ + "Browser", + "iOS" + ], + "twitter": "https://x.com/townsxyz", + "github": "https://github.com/river-build", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Here Not There Labs", + "parentCompanyURL": "https://towns.com", + "openSource": true, + "contractAddress": "https://docs.towns.com/towns-smart-contracts/contracts", + "dateOfLaunch": "2/23/2023", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Farcaster", + "url": "https://farcaster.xyz/", + "description": "Farcaster is a sufficiently decentralized social network built on Ethereum. It is a public social network similar to X and Reddit. Users can create profiles, post \"casts\" and follow others. They own their accounts and relationships with other users and are free to move between different apps.", + "image": "https://i.imgur.com/Xv6wvV9.png", + "category": "Social", + "subCategory": [ + "Social network", + "Messaging" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/Dpb0JFt.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/farcaster_xyz", + "github": "https://github.com/farcasterxyz", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Merkle Manufactory", + "parentCompanyURL": "https://farcaster.xyz", + "openSource": true, + "contractAddress": "https://docs.farcaster.xyz/reference/contracts/deployments", + "dateOfLaunch": "2/23/2023", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2025-12-01T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-07T07:00:00.000Z" + }, + { + "name": "Orb", + "url": "https://orb.club/", + "description": "Orb.club is a consumer social mobile app built on Lens Protocol, known for its viral sticker drops, collectible posts, native tipping, and creator-first features.", + "image": "https://i.imgur.com/Rx9ooN8.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/9mRCEGT.png", + "platforms": [ + "iOS", + "Android" + ], + "twitter": "https://x.com/orb_club", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Orb Technology Inc.", + "parentCompanyURL": "https://orb.club", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "10/18/2024", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Shibuya Films", + "url": "https://www.shibuya.film/", + "description": "Shibuya is a crowdfunding platform for bold, independent filmmakers, that gives creators the tools to raise capital, build community, and bring original stories to life—one episode at a time.", + "image": "https://i.imgur.com/ERgwg6l.png", + "category": "Social", + "subCategory": [ + "Video" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/WM93RX5.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/shibuyaxyz", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Shibuya.xyz", + "parentCompanyURL": "https://shibuya.xyz", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "2/28/2022", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Hey.xyz", + "url": "https://hey.xyz/", + "description": "Hey is a decentralized and permissionless social media app built with Lens Protocol.", + "image": "https://i.imgur.com/gOpRfUD.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/yFCtj1d.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/heydotxyz", + "github": "https://github.com/heyverse/hey", + "discord": "https://hey.xyz/discord", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Hey.xyz", + "parentCompanyURL": "https://hey.xyz", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "9/29/2023", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Paragraph", + "url": "https://paragraph.com", + "description": "Paragraph is a Web3 publishing platform that lets writers create token-gated newsletters and mint content as NFTs on Ethereum and Base.", + "image": "https://i.imgur.com/qn3J0qz.png", + "category": "Social", + "subCategory": [ + "Publishing" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/3VKBKAn.jpeg" + ], + "bannerImage": "https://i.imgur.com/s7v5uty.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/paragraph_xyz", + "github": "", + "discord": "https://paragraph.xyz/discord", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Paragraph", + "parentCompanyURL": "https://paragraph.com", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "10/1/2021", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Ethereum Follow Protocol", + "url": "https://efp.app", + "description": "EFP is an on‑chain social graph protocol, enabling Ethereum users to \"follow\" or \"tag\" other addresses via NFT-powered lists. It complements ENS and Sign‑In with Ethereum (SIWE)—forming part of the emerging Ethereum identity stack ", + "image": "https://i.imgur.com/mk6kT65.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/M7BSS6c.jpeg" + ], + "bannerImage": "https://i.imgur.com/pzYxz9M.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/efp", + "github": "https://github.com/ethereumfollowprotocol", + "discord": "https://discord.com/invite/ZUyG3mSXFD", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Ethereum Identity Foundation", + "parentCompanyURL": "https://efp.app", + "openSource": true, + "contractAddress": "https://docs.efp.app/production/deployments/", + "dateOfLaunch": "9/24/2024", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Kiwi News", + "url": "https://news.kiwistand.com", + "description": "Kiwi News is a decentralized, open-source Hacker News—built on a peer-to-peer protocol so anyone can copy/host the data and run their own feed. Ranking and rewards are community-driven via simple, attack-aware reputation/karma, with GPL-3 code and optional crypto/Stripe integrations for monetization.", + "image": "https://i.imgur.com/fKeLVJM.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/xl52U6d.png" + ], + "bannerImage": "https://i.imgur.com/mL7qrkZ.png", + "platforms": [ + "Browser", + "iOS" + ], + "twitter": "https://x.com/KiwiNewsHQ", + "github": "https://github.com/attestate/kiwistand", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "JokeRace", + "url": "https://jokerace.io/", + "description": "JokeRace is a decentralized governance protocol that enables communities to create, vote on, and reward proposals. Participants cast votes with conviction and can earn rewards for their engagement, aligning incentives around community-driven decision-making.", + "image": "https://i.imgur.com/QRX3hJ3.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Arbitrum One" + ], + "screenshots": [ + "https://i.imgur.com/IYl8iIY.jpeg" + ], + "bannerImage": "https://i.imgur.com/PUmiNV0.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/jokerace_io", + "github": "https://github.com/jk-labs-inc/jokerace", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "JK Labs", + "parentCompanyURL": "https://jklabs.co", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "1/1/2023", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Interface", + "url": "https://app.interface.social", + "description": "Interface is a trading-focused social network on Ethereum. Share your takes, discover new markets, follow friends, and copy trade their moves with live notifications.", + "image": "https://i.imgur.com/q7w6Vgx.png", + "category": "Social", + "subCategory": [ + "Social network", + "Identity", + "Publishing" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "Base", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/7QyLGvm.jpeg" + ], + "bannerImage": "https://i.imgur.com/dyCSyVe.png", + "platforms": [ + "iOS", + "Browser", + "Android" + ], + "twitter": "https://x.com/interfacedapp", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Interface Labs", + "parentCompanyURL": "https://www.interface.social", + "openSource": false, + "contractAddress": "https://basescan.org/address/0xb262c9278fbcac384ef59fc49e24d800152e19b1", + "dateOfLaunch": "6/1/2022", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "poidh", + "url": "https://poidh.xyz", + "description": "Poidh is a fully onchain app that lets anyone create, fund, and claim bounties for real-world actions. It makes it simple and fun to incentivize anything, from viral challenges to community-driven initiatives, using crypto.", + "image": "https://i.imgur.com/wa42XYM.png", + "category": "Social", + "subCategory": [ + "Identity", + "Social network" + ], + "networks": [ + "Arbitrum One", + "Base", + "Unichain" + ], + "screenshots": [ + "https://i.imgur.com/3FJyu94.jpeg" + ], + "bannerImage": "https://i.imgur.com/WV5yjVX.png", + "platforms": [ + "Browser", + "iOS", + "Android", + "Desktop" + ], + "twitter": "https://x.com/poidhxyz", + "github": "https://github.com/picsoritdidnthappen/poidh-app", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "poidh, inc", + "parentCompanyURL": "", + "openSource": true, + "contractAddress": "https://paragraph.com/@poidh/poidh-beginner-guide", + "dateOfLaunch": "8/10/2023", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Ethereum Follow Protocol (EFP)", + "url": "https://efp.app/", + "description": "Ethereum Follow Protocol (EFP) is an onchain social graph protocol for Ethereum accounts that complements ENS.", + "image": "https://i.imgur.com/toGgNkt.png", + "category": "Social", + "subCategory": [ + "Social network" + ], + "networks": [ + "Ethereum Mainnet", + "Base", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/ghsEgLj.png", + "https://i.imgur.com/qlabIys.png" + ], + "bannerImage": "https://i.imgur.com/3IPo5YI.jpeg", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/efp", + "github": "https://github.com/ethereumfollowprotocol", + "discord": "https://discord.com/invite/ZUyG3mSXFD", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Armenian", + "Arabic", + "Amharic", + "Azerbaijani", + "Czech", + "Catalan", + "Bosnian", + "Bengali", + "Bulgarian", + "Belarusian", + "Chinese", + "Chinese Traditional", + "Croatian" + ], + "parentCompany": "Ethereum Identity Foundation", + "parentCompanyURL": "https://ethid.org/", + "openSource": true, + "contractAddress": "https://docs.efp.app/production/deployments/", + "dateOfLaunch": "9/24/2024", + "lastUpdated": "10/14/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "DRIPS", + "url": "https://www.drips.network/", + "description": "Drips is an app built on Ethereum that enables flexibly supporting open-source projects, with built-in dependency splitting.", + "image": "https://i.imgur.com/Zam58pD.jpeg", + "category": "Social", + "subCategory": [ + "Funding" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/9O3deYQ.jpeg", + "https://i.imgur.com/RBlZHDp.jpeg" + ], + "bannerImage": "https://i.imgur.com/9bhvbxW.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/dripsnetwork", + "github": "https://github.com/drips-network", + "discord": "https://discord.gg/BakDKKDpHF", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Radworks", + "parentCompanyURL": "https://radworks.org/", + "openSource": true, + "contractAddress": "https://docs.drips.network/the-protocol/smart-contract-details", + "dateOfLaunch": "7/23/2023", + "lastUpdated": "10/15/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + } + ], + "Privacy": [ + { + "name": "Fluidkey", + "url": "https://fluidkey.com/", + "description": "Fluidkey allows users to seamlessly manage, receive, and send onchain assets while protecting their privacy.", + "image": "https://i.imgur.com/lkEMfCo.png", + "category": "Privacy", + "subCategory": [ + "Stealth address", + "Payments", + "Identity" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/CnsW57W.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/fluidkey", + "github": "https://github.com/fluidkey", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Fluidkey SA", + "parentCompanyURL": "https://fluidkey.com/", + "openSource": true, + "contractAddress": "0xa238cbeb142c10ef7ad8442c6d1f9e89e07e7761", + "dateOfLaunch": "2/24/2024", + "lastUpdated": "7/9/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2026-04-27T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-05-03T06:00:00.000Z" + }, + { + "name": "Rarimo", + "url": "https://rarimo.com/", + "description": "Unlocking a new generation of social apps, where users stay private without losing historical actions, networks, and identities", + "image": "https://i.imgur.com/53RT7xX.png", + "category": "Privacy", + "subCategory": [ + "Identity" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/2XGpnYg.png", + "platforms": [ + "Browser", + "Android" + ], + "twitter": "https://x.com/Rarimo_protocol", + "github": "https://github.com/rarimo", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Rarilabs Ltd.", + "parentCompanyURL": "https://rarimo.com/", + "openSource": true, + "contractAddress": "https://docs.rarimo.com/zk-passport/contracts/#deployments", + "dateOfLaunch": "4/24/2025", + "lastUpdated": "7/9/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Railgun", + "url": "https://railgun.org/", + "description": "RAILGUN is a privacy system built directly onchain. It uses zero-knowledge cryptography to enable private use of smart contracts and DeFi, all without leaving the security of the user’s preferred chain. ", + "image": "https://i.imgur.com/iCZiC1e.png", + "category": "Privacy", + "subCategory": [ + "Shielded" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [ + "https://i.imgur.com/16W2jcw.png" + ], + "bannerImage": "https://i.imgur.com/AyPoVoj.png", + "platforms": [ + "Browser", + "Desktop", + "iOS", + "Android" + ], + "twitter": "https://x.com/railgun_project", + "github": "https://github.com/Railgun-Community", + "discord": "https://discord.gg/jgUQjkYWzh", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Railgun DAO", + "parentCompanyURL": "https://railgun.org/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "7/9/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Privacy Pools", + "url": "https://privacypools.com/", + "description": "Privacy Pools by 0xbow is a compliant way to anonymously transact on Ethereum. 0xbow blocks illicit actors to ensure pool integrity.", + "image": "https://i.imgur.com/eTwgSVR.png", + "category": "Privacy", + "subCategory": [ + "Pools", + "Compliance" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/vdqDZB5.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/0xbowio", + "github": "https://github.com/0xbow-io/privacy-pools-core", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "0xbow", + "parentCompanyURL": "https://0xbow.io/", + "openSource": true, + "contractAddress": "0xf241d57c6debae225c0f2e6ea1529373c9a9c9fb", + "dateOfLaunch": "3/31/2025", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Tornado Cash", + "url": "http://tornadocash.eth.limo/", + "description": "Secure, Decentralized, Private protocol", + "image": "https://i.imgur.com/9S2K8kO.png", + "category": "Privacy", + "subCategory": [ + "Pools" + ], + "networks": [ + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/P8xZqf8.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/TornadoCash", + "github": "https://github.com/tornadocash", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "Ukrainian", + "Turkish", + "English", + "Spanish", + "French", + "Chinese" + ], + "parentCompany": "Tornado Cash", + "parentCompanyURL": "https://tornadocash.eth.limo/", + "openSource": true, + "contractAddress": "https://github.com/tornadocash/docs/blob/b91f1a469ff7c7094e535fd41c4586d1080869c4/general/tornado-cash-smart-contracts.md", + "dateOfLaunch": "12/17/2019", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "ZK Pass", + "url": "https://zkpass.org/", + "description": "Verify your real-world private data without revealing your private details.", + "image": "https://i.imgur.com/w3SO8am.jpeg", + "category": "Privacy", + "subCategory": [ + "Identity" + ], + "networks": [ + "Base", + "Scroll", + "Linea", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/Dhi3PVf.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/zkPass", + "github": "https://github.com/zkPassOfficial", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "7/26/2025", + "lastUpdated": "7/9/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "0xbow", + "url": "https://0xbow.io/", + "description": "0xbow is a privacy protocol for Ethereum that enables compliant, zero-knowledge-based private transactions through customizable Privacy Pools.", + "image": "https://i.imgur.com/PAb3BvU.png", + "category": "Privacy", + "subCategory": [ + "Pools" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/REXrQxe.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/0xbowio", + "github": "https://github.com/0xbow-io/privacy-pools-core", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "0xbow", + "parentCompanyURL": "https://0xbow.io", + "openSource": true, + "contractAddress": "https://docs.privacypools.com/deployments", + "dateOfLaunch": "3/31/2025", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + } + ], + "Collectibles": [ + { + "name": "OpenSea", + "url": "https://opensea.io/", + "description": "OpenSea is an online marketplace for non-fungible tokens (NFTs), enabling users to buy, sell, and create NFTs. It functions as a decentralized platform where users can trade various digital assets, including art, music, gaming items, and more, across multiple blockchains. ", + "image": "https://i.imgur.com/J4vZUTN.png", + "category": "Collectibles", + "subCategory": [ + "Market" + ], + "networks": [ + "Base", + "Blast", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/bxhdZRK.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://twitter.com/opensea", + "github": "https://github.com/projectopensea", + "discord": "https://discord.gg/opensea", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English", + "Chinese Traditional", + "Chinese", + "German", + "French", + "Japanese", + "Korean", + "Spanish" + ], + "parentCompany": "OpenSea", + "parentCompanyURL": "https://opensea.io", + "openSource": true, + "contractAddress": "0xA5409eC958C83C3f309868bABaCA7c86DCB077c1 ", + "dateOfLaunch": "12/20/2017", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-10-26T06:00:00.000Z", + "appOfTheWeekEndDate": "2025-11-22T07:00:00.000Z" + }, + { + "name": "Blur", + "url": "https://blur.io/", + "description": "Blur is a professional NFT marketplace offering zero-fee NFT trading and features for intermediate and advanced traders.", + "image": "https://i.imgur.com/qaTlXOZ.png", + "category": "Collectibles", + "subCategory": [ + "Market" + ], + "networks": [ + "Blast", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/XYzhlqX.png", + "platforms": [ + "Browser", + "Android", + "iOS" + ], + "twitter": "https://twitter.com/blur_io", + "github": "", + "discord": "https://discord.gg/blurdao", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Blur LLC", + "parentCompanyURL": "https://blur.io", + "openSource": false, + "contractAddress": "https://docs.blur.foundation/contracts", + "dateOfLaunch": "10/19/2022", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-26T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-01T07:00:00.000Z" + }, + { + "name": "Highlight", + "url": "https://highlight.xyz/", + "description": "Highlight is a platform for creating and collecting digital art and culture.", + "image": "https://i.imgur.com/gvbFr2a.png", + "category": "Collectibles", + "subCategory": [ + "Art" + ], + "networks": [ + "Base", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/FxFbMqo.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Highlight_xyz", + "github": "https://github.com/highlightxyz", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Highlight, Inc.", + "parentCompanyURL": "https://highlight.xyz", + "openSource": true, + "contractAddress": "https://support.highlight.xyz/knowledge-base/for-developers/nft-contracts/official-addresses", + "dateOfLaunch": "7/26/2023", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-16T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-22T06:00:00.000Z" + }, + { + "name": "Manifold", + "url": "https://manifold.xyz/", + "description": "Manifold Studio is a series of tools that allow you to build your own web3 creative platform. Studio allows for the creation and distribution of digital assets known as non-fungible tokens(NFTs).", + "image": "https://i.imgur.com/2WZrZfG.png", + "category": "Collectibles", + "subCategory": [ + "Art" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/D0J823R.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/manifoldxyz", + "github": "https://github.com/manifoldxyz", + "discord": "https://discord.gg/XNVfgutbeK", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Manifold Technologies Ltd.", + "parentCompanyURL": "https://manifold.xyz", + "openSource": true, + "contractAddress": "https://github.com/manifoldxyz/royalty-registry-solidity", + "dateOfLaunch": "10/1/2021", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-09T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-15T06:00:00.000Z" + }, + { + "name": "Rarible", + "url": "https://rarible.com/", + "description": "Rarible is a multi-chain platform where you can buy, sell, and create non-fungible tokens (NFTs).", + "image": "https://i.imgur.com/0dhVyXp.png", + "category": "Collectibles", + "subCategory": [ + "Market" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/WhOG44D.png", + "platforms": [ + "Browser", + "iOS" + ], + "twitter": "https://x.com/rarible", + "github": "https://github.com/rarible", + "discord": "http://discord.gg/rarible", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Rarible, Inc.", + "parentCompanyURL": "https://rarible.com", + "openSource": true, + "contractAddress": "https://docs.rarible.org/reference/contract-addresses", + "dateOfLaunch": "8/17/2020", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-29T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-04T07:00:00.000Z" + }, + { + "name": "Pudgy Penguins", + "url": "https://www.pudgypenguins.com/", + "description": "Pudgy Penguins is a global IP focused on proliferating the penguin, memetic culture, and good vibes.", + "image": "https://i.imgur.com/jdf0uFw.png", + "category": "Collectibles", + "subCategory": [ + "Art", + "IP" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/fBRUbxB.png", + "platforms": [ + "iOS", + "Browser" + ], + "twitter": "https://x.com/pudgypenguins", + "github": "", + "discord": "https://discord.gg/pudgypenguins", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "LSLTTT Holdings, Inc.", + "parentCompanyURL": "https://pudgypenguins.com", + "openSource": false, + "contractAddress": "https://etherscan.io/address/0xBd3531dA5CF5857e7CfAA92426877b022e612cf8", + "dateOfLaunch": "7/22/2021", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-09T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-15T07:00:00.000Z" + }, + { + "name": "Bored Ape Yacht Club", + "url": "https://boredapeyachtclub.com/", + "description": "The Bored Ape Yacht Club is a collection of 10000 unique Bored Ape NFTs— unique digital collectibles living on the Ethereum blockchain.", + "image": "https://i.imgur.com/EmOxvhI.png", + "category": "Collectibles", + "subCategory": [ + "Art", + "IP" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/CAAi7lV.png", + "platforms": [ + "iOS", + "Browser" + ], + "twitter": "https://x.com/BoredApeYC", + "github": "", + "discord": "https://discord.com/invite/3P5K3dzgdB", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Yuga Labs LLC", + "parentCompanyURL": "https://yuga.com", + "openSource": false, + "contractAddress": "https://etherscan.io/address/0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", + "dateOfLaunch": "4/23/2021", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Art Blocks", + "url": "https://www.artblocks.io/", + "description": "Art Blocks is a digital platform where generative artists publish unique artworks using creative code. With historical roots in conceptual art, generative art involves the creation of an algorithm using computer code, with randomness introduced into the artist’s algorithm to produce unique works.", + "image": "https://i.imgur.com/6POOwm3.png", + "category": "Collectibles", + "subCategory": [ + "Art" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/Rs44gsk.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/artblocks_io", + "github": "https://github.com/ArtBlocks", + "discord": "https://discord.com/invite/artblocks", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Art Blocks, Inc.", + "parentCompanyURL": "https://artblocks.io", + "openSource": true, + "contractAddress": "https://github.com/ArtBlocks/artblocks-contracts/blob/main/packages/contracts/README.md", + "dateOfLaunch": "11/27/2020", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Cool Cats", + "url": "https://www.coolcatsnft.com/", + "description": "Cool Cats is a collection of 9,999 randomly generated NFT avatars, each featuring a unique Blue Cat with various traits like clothing, hairstyles, and accessories.", + "image": "https://i.imgur.com/Z20S33T.png", + "category": "Collectibles", + "subCategory": [ + "IP", + "Art" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/tYwCO41.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/coolcatsnft", + "github": "", + "discord": "https://discord.gg/coolcatsnft", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Cool Cats", + "parentCompanyURL": "https://coolcatsnft.com", + "openSource": false, + "contractAddress": "https://etherscan.io/address/0x1a92f7381b9f03921564a437210bb9396471050c", + "dateOfLaunch": "6/9/2021", + "lastUpdated": "7/4/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-16T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-22T07:00:00.000Z" + }, + { + "name": "Doodles", + "url": "https://www.doodles.app/", + "description": "Doodles is a next-generation entertainment company focused on immersive storytelling through the creation and distribution of live and digital experiences, original content, and lifestyle products.", + "image": "https://i.imgur.com/xgn185K.png", + "category": "Collectibles", + "subCategory": [ + "IP", + "Art" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/SEx1boH.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/doodles", + "github": "", + "discord": "https://discord.gg/doodles", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Doodles, Inc.", + "parentCompanyURL": "https://doodles.app`", + "openSource": false, + "contractAddress": "https://etherscan.io/address/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e", + "dateOfLaunch": "10/16/2021", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-26T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-01T07:00:00.000Z" + }, + { + "name": "Basepaint", + "url": "https://basepaint.xyz/", + "description": "BasePaint.xyz is a collaborative, onchain pixel art application where artists create daily, shared canvases that are then minted as NFTs.", + "image": "https://i.imgur.com/svBfl50.png", + "category": "Collectibles", + "subCategory": [ + "IP", + "Art" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/dtcQL5j.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/basepaint_xyz", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "BasePaint", + "parentCompanyURL": "https://basepaint.xyz", + "openSource": false, + "contractAddress": "https://hackmd.io/@uTlMZA23Qz-cK8e7PqQt0A/rkOAbFIhn", + "dateOfLaunch": "8/8/2023", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Foundation", + "url": "https://foundation.app/", + "description": "Foundation.app is an NFT marketplace that allows artists to tokenize their creations as NFTs and provides a platform for collectors to buy, sell, and trade these digital artworks.", + "image": "https://i.imgur.com/s5zw9NG.png", + "category": "Collectibles", + "subCategory": [ + "Market" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/fyNzBFy.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/foundation", + "github": "https://github.com/f8n", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Foundation Labs, Inc.", + "parentCompanyURL": "https://foundation.app", + "openSource": true, + "contractAddress": "https://os.foundation.app/docs/creator-tools/drop", + "dateOfLaunch": "2/1/2021", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-12T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-18T07:00:00.000Z" + }, + { + "name": "Sandbox", + "url": "https://www.sandbox.game/", + "description": "The Sandbox is a community-driven creative platform that empowers artists, storytellers, and game makers to create, publish, own, and monetise a myriad of unique content on a decentralised platform on the blockchain.", + "image": "https://i.imgur.com/u2UXDq4.png", + "category": "Collectibles", + "subCategory": [ + "Gaming", + "Market" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/m9DGm5H.png", + "platforms": [ + "Browser", + "Desktop", + "iOS" + ], + "twitter": "https://twitter.com/thesandboxgame", + "github": "https://discord.gg/thesandboxgame", + "discord": "https://discord.gg/thesandboxgame", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Chinese", + "Chinese Traditional", + "Korean", + "Japanese", + "Turkish", + "Thai" + ], + "parentCompany": "Animoca Brands", + "parentCompanyURL": "https://www.animocabrands.com/", + "openSource": true, + "contractAddress": "https://etherscan.io/token/0x3845badade8e6dff049820680d1f14bd3903a5d0", + "dateOfLaunch": "11/29/2021", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "SuperRare", + "url": "https://superrare.com/", + "description": "SuperRare is a platform to issue, collect, and trade rare digital art backed by non-fungible tokens (NFTs) on the Ethereum blockchain. Every piece of art on SuperRare is a single edition - this means each artwork is unique without duplicates.", + "image": "https://i.imgur.com/HRl4kUv.png", + "category": "Collectibles", + "subCategory": [ + "Art", + "Market" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/n9YsZCt.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://twitter.com/SuperRare", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "SuperRare Labs, Inc.", + "parentCompanyURL": "https://superrare.com", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "4/4/2018", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-01T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-07T07:00:00.000Z" + }, + { + "name": "Decentraland", + "url": "https://decentraland.org/", + "description": "Decentraland was the world’s first fully decentralized, social virtual world, empowering users to own, create, and control their digital assets and experiences. Launched in 2020, Decentraland features an open, traversable landscape filled with user-generated content that evolves and changes in real-time.", + "image": "https://i.imgur.com/1cghrNy.png", + "category": "Collectibles", + "subCategory": [ + "Gaming", + "Art", + "Market" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/V1mpz2o.png", + "platforms": [ + "Browser", + "iOS", + "Android", + "Desktop" + ], + "twitter": "https://twitter.com/decentraland", + "github": "https://github.com/decentraland", + "discord": "https://dcl.gg/discord", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Chinese", + "Chinese Traditional", + "Japanese", + "Korean", + "Thai", + "Turkish" + ], + "parentCompany": "Decentraland Foundation", + "parentCompanyURL": "https;//decentraland.org", + "openSource": true, + "contractAddress": "https://github.com/decentraland/marketplace/tree/master/indexer", + "dateOfLaunch": "2/20/2020", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-19T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-25T07:00:00.000Z" + }, + { + "name": "Magic Eden", + "url": "https://magiceden.io/", + "description": "Magic Eden is a non-fungible token marketplace that allows users to buy, sell, mint, and manage NFTs. It's a popular platform for both creators launching new NFT projects and for trading on the secondary market. ", + "image": "https://i.imgur.com/oSGwPR4.png", + "category": "Collectibles", + "subCategory": [ + "Market" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/mtBvmC3.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://twitter.com/MagicEden", + "github": "https://github.com/magiceden", + "discord": "https://discord.gg/magiceden", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Magic Eden", + "parentCompanyURL": "https://magiceden.io", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "9/17/2021", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Azuki", + "url": "https://www.azuki.com/", + "description": "Azuki is a brand born at the intersection of art, technology, and internet culture. What started as a web3 project has evolved into a global community of artists and builders shaping original characters, stories, and experiences together. From digital collectibles to fashion and real-world events, Azuki is building a universe for digital natives drawn to what's next.", + "image": "https://i.imgur.com/fe1Tipo.png", + "category": "Collectibles", + "subCategory": [ + "IP", + "Art", + "Membership" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/3Rqf7Dp.png", + "platforms": [ + "Browser" + ], + "twitter": "https://www.azuki.com/icons/x-twitter-solid-black.svg", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Chiru Labs", + "parentCompanyURL": "https://azuki.com", + "openSource": false, + "contractAddress": "https://nfthud.io/collection/azuki", + "dateOfLaunch": "1/12/2022", + "lastUpdated": "7/6/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-29T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-04T07:00:00.000Z" + }, + { + "name": "POAP", + "url": "https://poap.xyz/", + "description": "POAP are the bookmarks for your life. Mint the most important memories of your life as digital collectibles (NFTs) forever on the blockchain.", + "image": "https://i.imgur.com/U3ZyEUt.png", + "category": "Collectibles", + "subCategory": [ + "Attendance", + "Collect", + "Membership" + ], + "networks": [ + "Gnosis", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/tGp8SmS.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/poapxyz", + "github": "https://github.com/poapxyz", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "POAP Inc", + "parentCompanyURL": "https://poap.xyz", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "1/1/2021", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-23T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-29T06:00:00.000Z" + }, + { + "name": "Courtyard", + "url": "https://courtyard.io", + "description": "Courtyard is a platform for minting and trading NFTs backed by real-world collectibles like trading cards, with assets stored in insured vaults and redeemable on-chain.", + "image": "https://i.imgur.com/a50EywS.png", + "category": "Collectibles", + "subCategory": [ + "Market" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/y5nQjIL.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/Courtyard_NFT", + "github": "", + "discord": "https://discord.gg/courtyard-io", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Courtyard, Inc.", + "parentCompanyURL": "https://courtyard.io", + "openSource": false, + "contractAddress": "https://docs.courtyard.io/courtyard/resources/useful-links#ethereum-mainnet", + "dateOfLaunch": "5/8/2022", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + } + ], + "Gaming": [ + { + "name": "Remix", + "url": "https://remix.gg/", + "description": "Remix is a platform combining AI and mobile gaming, designed to offer on-chain, AI-powered games.", + "image": "https://i.imgur.com/KBHOee9.png", + "category": "Gaming", + "subCategory": [ + "retro gaming", + "Casual", + "AI gaming" + ], + "networks": [ + "Base", + "world" + ], + "screenshots": [ + "https://i.imgur.com/RHH5ukf.jpeg" + ], + "bannerImage": "https://i.imgur.com/ILekHLM.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/RemixGG_", + "github": "", + "discord": "https://discord.gg/a3bgdr4RC6", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Remix (formerly Farcade)", + "parentCompanyURL": "https://remix.gg/", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "4/4/2021", + "lastUpdated": "2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Illuvium", + "url": "https://illuvium.io/", + "description": "Illuvium is a collectible RPG game and auto-battler rolled into one. There is an open-world RPG experience in the overworld, where you mine, harvest, capture, and fight Illuvials. Once you have assembled your team you can join the autobattler to build your teams to beat your opponents in battle.", + "image": "https://i.imgur.com/LBo34WC.png", + "category": "Gaming", + "subCategory": [], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/ONlCXAt.png", + "platforms": [ + "Windows", + "Mac", + "Android", + "iOS" + ], + "twitter": "https://x.com/illuviumio", + "github": "https://github.com/illuviumgame", + "discord": "https://discord.com/invite/illuvium", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Illuvium", + "parentCompanyURL": "https://illuvium.io", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "7/25/2024", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-05T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-11T07:00:00.000Z" + }, + { + "name": "Parallel", + "url": "https://parallel.life", + "description": "Parallel is a free-to-play, turn-based strategy game where players build 40-card decks using cards from five factions or universal cards to battle each other.", + "image": "https://i.imgur.com/OcpP6tZ.png", + "category": "Gaming", + "subCategory": [ + "Card & deck building" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/zLLypAz.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/ParallelTCG", + "github": "", + "discord": "https://discord.com/invite/paralleltcg", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Parallel Studios", + "parentCompanyURL": "https://parallel.life", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "4/22/2024", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-02T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-08T07:00:00.000Z" + } + ], + "DAO": [ + { + "name": "Snapshot", + "url": "https://snapshot.box/", + "description": "Snapshot is a voting platform that allows DAOs, DeFi protocols, or NFT communities to vote easily and without gas fees.The tool allows high customization of the voting process to cater to the diverse needs of the users and organizations.", + "image": "https://i.imgur.com/B2nGDiy.png", + "category": "DAO", + "subCategory": [ + "Governance", + "Organization", + "Offchain voting" + ], + "networks": [ + "Starknet", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/lyAL0O7.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/SnapshotLabs", + "github": "https://github.com/snapshot-labs", + "discord": "https://discord.snapshot.org", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Snapshot", + "parentCompanyURL": "https://snapshot.box", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "1/8/2020", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-08T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-14T07:00:00.000Z" + }, + { + "name": "Tally", + "url": "https://www.tally.xyz/", + "description": "Tally is a platform focused on onchain governance for decentralized autonomous organizations and blockchain protocols by providing tools and infrastructure for launching, managing, and participating in DAOs.", + "image": "https://i.imgur.com/uFbNLmO.png", + "category": "DAO", + "subCategory": [ + "Onchain voting", + "Analytics", + "Tokenomics", + "DAO creation", + "Governor" + ], + "networks": [ + "Base", + "Blast", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [ + "https://i.imgur.com/LpyPBZv.png" + ], + "bannerImage": "https://i.imgur.com/9Jo8BK3.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/tallyxyz", + "github": "https://github.com/withtally/", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Tally", + "parentCompanyURL": "https://www.tally.xyz/", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Hats Protocol", + "url": "https://www.hatsprotocol.xyz/", + "description": "Hats turns organizations into a digital object, ready to be programmed. All of the properties of your organization and its individual roles and permissions can now be automated, just like any other software system.", + "image": "https://i.imgur.com/imDZeNh.png", + "category": "DAO", + "subCategory": [ + "Role management", + "Permissions", + "Organization" + ], + "networks": [ + "Base", + "Celo", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/XKumEus.png" + ], + "bannerImage": "https://i.imgur.com/dsJavjF.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/hatsprotocol", + "github": "https://github.com/Hats-Protocol", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Haberdasher Labs", + "parentCompanyURL": "https://www.hatsprotocol.xyz/open-roles", + "openSource": true, + "contractAddress": "0x3bc1A0Ad72417f2d411118085256fC53CBdDd137", + "dateOfLaunch": "6/27/2024", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2026-01-19T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-25T07:00:00.000Z" + }, + { + "name": "Aragon", + "url": "https://aragon.org/", + "description": "Aragon builds full-stack DAO technology that enables organizations to easily and securely govern their protocols and assets onchain.", + "image": "https://i.imgur.com/K7oLCS6.png", + "category": "DAO", + "subCategory": [ + "DAO creation", + "Governance", + "Framework" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/4Krl2j6.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/aragonproject", + "github": "https://github.com/aragon", + "discord": "https://discord.gg/aragonorg", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Aragon Foundation", + "parentCompanyURL": "https://www.aragonfoundation.org/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "10/30/2018", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-01-05T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-01-11T07:00:00.000Z" + }, + { + "name": "DAOhaus", + "url": "https://daohaus.club/", + "description": "DAOhaus allows communities to create a DAO and manage, grow, and distribute a shared treasury.", + "image": "https://i.imgur.com/E6DLY0N.png", + "category": "DAO", + "subCategory": [ + "DAO creation", + "Treasury management", + "Framework", + "Moloch" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/QkydX2p.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/daohaus", + "github": "https://github.com/HausDAO", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": false, + "contractAddress": "https://docs.daohaus.club/contracts", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-09T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-15T07:00:00.000Z" + }, + { + "name": "Event Horizon", + "url": "https://eventhorizon.vote/", + "description": "Event Horizon is a public good that helps DAOs improve their voter participation, token participation, and generally improve the governance process of DAOs with the help of agentic governance and Incentivized Delegation Vaults. ", + "image": "https://i.imgur.com/uAwjyR8.png", + "category": "DAO", + "subCategory": [ + "Governance", + "Delegation", + "Agentic" + ], + "networks": [ + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/xKdrkcq.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/EventHorizonDAO", + "github": "", + "discord": "https://discord.gg/pJwYfRUcjK", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Event Horizon", + "parentCompanyURL": "https://eventhorizon.vote/", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-16T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-22T07:00:00.000Z" + }, + { + "name": "Splits", + "url": "https://app.splits.org/", + "description": "Splits is a platform offering financial infrastructure for onchain teams, specializing in managing onchain payments using audited, open-source smart contracts.", + "image": "https://i.imgur.com/CAiSLc5.png", + "category": "DAO", + "subCategory": [ + "Treasury management" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/yfMGVxo.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/0xsplits", + "github": "https://github.com/0xSplits", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-30T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-05T06:00:00.000Z" + }, + { + "name": "Safe", + "url": "https://safe.global/", + "description": "Own the Internet. Ethereum Smart Accounts to safeguard your digital assets and build the future of ownership.", + "image": "https://i.imgur.com/kRMy55h.png", + "category": "DAO", + "subCategory": [ + "Treasury management", + "Multi-sig", + "Smart account" + ], + "networks": [ + "Base", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/skOZTBy.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/safe", + "github": "https://github.com/safe-global", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Safe Ecosystem Foundation ", + "parentCompanyURL": "https://safe.global", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "7/7/2022", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2025-12-15T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-12-21T07:00:00.000Z" + }, + { + "name": "Coordinape", + "url": "https://coordinape.com/", + "description": "Coordinape provides tools to discover, recognize and collaborate in onchain networks of trust.", + "image": "https://i.imgur.com/Rkky5a1.png", + "category": "DAO", + "subCategory": [ + "Recognition", + "Compensation", + "Signalling" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/bmKyuk1.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/coordinape", + "github": "https://github.com/coordinape", + "discord": "https://discord.coordinape.com/", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Endaoment", + "url": "https://endaoment.org/", + "description": "Endaoment is a public charity that offers Donor-Advised Funds (DAFs) and facilitates donations to non-profits.", + "image": "https://i.imgur.com/iXSGSbp.png", + "category": "DAO", + "subCategory": [ + "Philanthropy" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/A8Xu5E5.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/endaomentdotorg", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Endaoment (501(c)(3) nonprofit)", + "parentCompanyURL": "https://endaoment.org", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "ResearchHub", + "url": "https://researchhub.com/", + "description": "ResearchHub is designed to accelerate the pace of scientific research by encouraging academics to interact in a fully open and collaborative manner. ", + "image": "https://i.imgur.com/bs1ElQd.png", + "category": "DAO", + "subCategory": [ + "Governance" + ], + "networks": [ + "Base", + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/2tqDp6c.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/researchhub", + "github": "https://github.com/ResearchHub", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "ResearchHub Technologies, Inc. / ResearchHub Foundation", + "parentCompanyURL": "https://researchhub.foundation", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "2/25/2019", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-16T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-22T06:00:00.000Z" + }, + { + "name": "Prime Intellect", + "url": "https://www.primeintellect.ai/", + "description": "Prime Intellect democratizes AI development at scale by making it easy to find global compute resources and train state-of-the-art models through distributed training across clusters.", + "image": "https://i.imgur.com/GlSYmTI.png", + "category": "DAO", + "subCategory": [ + "AI" + ], + "networks": [ + "Base" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/5lnpIGl.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/PrimeIntellect", + "github": "https://github.com/PrimeIntellect-ai", + "discord": "https://discord.gg/aHXbW7gtzY", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Prime Intellect", + "parentCompanyURL": "https://www.primeintellect.ai", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Agora", + "url": "https://agora.xyz", + "description": "Agora is an advanced on-chain governance platform that empowers protocols and communities (like Uniswap, Optimism, ENS) with scalable, secure, and user-friendly voting systems—eliminating the need for custom code.", + "image": "https://i.imgur.com/a1KpeEc.png", + "category": "DAO", + "subCategory": [ + "Governance" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/GPmgEFp.png" + ], + "bannerImage": "https://i.imgur.com/zQV6jJ3.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/agoragovernance", + "github": "https://github.com/voteagora", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Agora", + "parentCompanyURL": "https://agora.xyz", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "5/31/2024", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + } + ], + "Productivity": [ + { + "name": "ENS", + "url": "https://ens.domains/", + "description": "The Ethereum Name Service or ENS is the decentralized naming protocol that is built on the Ethereum blockchain. It adheres to open-source standards and is based on a set of decentralized smart contracts that translate blockchain addresses into human-readable names.", + "image": "https://i.imgur.com/Ocl9okb.png", + "category": "Productivity", + "subCategory": [ + "DNS", + "Identity" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/YZGOPFM.png" + ], + "bannerImage": "https://i.imgur.com/Oq3MDGp.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/ensdomains", + "github": "https://github.com/ensdomains", + "discord": "https://discord.com/invite/faTEB36", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "ENS Labs", + "parentCompanyURL": "https://www.enslabs.org/", + "openSource": true, + "contractAddress": "https://docs.ens.domains/learn/deployments", + "dateOfLaunch": "5/4/2017", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2025-11-23T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-11-30T07:00:00.000Z" + }, + { + "name": "Huddle01", + "url": "https://huddle01.com/", + "description": "Huddle01 is a decentralized real-time communication platform that offers an alternative to centralized video conferencing systems and aims to reduce latency, improve performance, and cut infrastructure costs, making communication more efficient and scalable.", + "image": "https://i.imgur.com/GcVR2ag.png", + "category": "Productivity", + "subCategory": [ + "Communication" + ], + "networks": [ + "Arbitrum One", + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/9oqfxDM.png" + ], + "bannerImage": "https://i.imgur.com/fJ2npPi.png", + "platforms": [ + "Browser", + "iOS", + "Android" + ], + "twitter": "https://x.com/huddle01com", + "github": "https://github.com/huddle01", + "discord": "https://discord.com/invite/huddle01", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Huddle01 Labs Inc.", + "parentCompanyURL": "https://huddle01.com/", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Livepeer", + "url": "https://www.livepeer.org/", + "description": "Livepeer is a decentralized network for limitless video computing, enabling AI processing and transcoding jobs to power the future of video.", + "image": "https://i.imgur.com/rwonhAA.png", + "category": "Productivity", + "subCategory": [ + "Storage", + "Video" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/mgAUNbe.png" + ], + "bannerImage": "https://i.imgur.com/beqsMqo.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/Livepeer", + "github": "https://github.com/livepeer", + "discord": "https://discord.com/invite/livepeer", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Livepeer Inc.", + "parentCompanyURL": "https://www.livepeer.org/", + "openSource": true, + "contractAddress": "https://docs.livepeer.org/references/contract-addresses", + "dateOfLaunch": "4/30/2018", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "ZK Passport", + "url": "https://zkpassport.id/", + "description": "ZKPassport SDK enables privacy-preserving identity verification using passports and ID cards. It allows developers to request and verify specific identity attributes without exposing unnecessary personal information.", + "image": "https://i.imgur.com/sBVlmsl.png", + "category": "Productivity", + "subCategory": [ + "Identity" + ], + "networks": [], + "screenshots": [ + "https://i.imgur.com/nj8j1E2.jpeg" + ], + "bannerImage": "https://i.imgur.com/6Y8auId.png", + "platforms": [], + "twitter": "https://x.com/zkpassport", + "github": "https://github.com/zk-passport/", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "", + "parentCompanyURL": "", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "7/21/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "QuarkID", + "url": "https://quarkid.org/", + "description": "QuarkID is the digital trust framework developed by the Government of the City of Buenos Aires that creates a new digital identity system.", + "image": "https://i.imgur.com/K3T8EYJ.png", + "category": "Productivity", + "subCategory": [ + "Identity" + ], + "networks": [ + "Ethereum Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/cdB0kAC.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/quark_id", + "github": "https://github.com/ssi-quarkid", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Spanish" + ], + "parentCompany": "Extrimian S.A.", + "parentCompanyURL": "https://extrimian.io/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "1/20/2025", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-02T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-08T07:00:00.000Z" + }, + { + "name": "Rotki", + "url": "https://rotki.com/", + "description": "Rotki is an open source, self-hosted portfolio manager, accounting and analytics tool that protects your privacy.", + "image": "https://i.imgur.com/0AVcfDU.png", + "category": "Productivity", + "subCategory": [ + "DePIN" + ], + "networks": [ + "Base", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/ouKp1Dq.jpeg" + ], + "bannerImage": "https://i.imgur.com/Zjtf2Rc.png", + "platforms": [ + "Browser", + "Desktop" + ], + "twitter": "https://x.com/rotkiapp", + "github": "https://github.com/rotki/", + "discord": "https://discord.rotki.com/", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Rotki Software GmbH", + "parentCompanyURL": "https://rotki.com/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "10/1/2019", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": "2026-03-23T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-29T06:00:00.000Z" + }, + { + "name": "Zupass", + "url": "https://zupass.org/", + "description": "Zupass is a new application powered by Programmable Cryptography. It's a stepping stone towards building the next internet.", + "image": "https://i.imgur.com/FT9RVoI.png", + "category": "Productivity", + "subCategory": [ + "Identity" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/1dRS0P5.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/ZupassProject", + "github": "https://github.com/proofcarryingdata/zupass", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "0xPARC Foundation", + "parentCompanyURL": "https://0xparc.org/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "3/24/2023", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "OpenCerts", + "url": "https://opencerts.io/", + "description": "OpenCerts, part of Singapore’s Smart Nation initiative, enables issuance and validation of tamper-resistant academic certificates in a convenient and reliable manner.", + "image": "https://i.imgur.com/vErB6yN.png", + "category": "Productivity", + "subCategory": [ + "Certificate", + "Infrastructure", + "Governance" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/EoELW3n.png", + "platforms": [ + "Browser" + ], + "twitter": "", + "github": "https://github.com/opencerts", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "GovTech Singapore", + "parentCompanyURL": "https://www.tech.gov.sg/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "8/27/2018", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Self", + "url": "https://self.xyz/", + "description": "Self empowers everyday companies to identify real users and prevent attacks from fraudsters. Users maintain control of the data they share, and neither Self nor the requesting company can access user's sensitive information without consent.", + "image": "https://i.imgur.com/wvW71IU.png", + "category": "Productivity", + "subCategory": [ + "Privacy", + "Identity", + "Proof-of-personhood" + ], + "networks": [ + "Celo" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/PvtzSJ5.png", + "platforms": [ + "Browser", + "iOS", + "Android", + "Browser extension" + ], + "twitter": "https://x.com/selfprotocol/", + "github": "https://github.com/selfxyz/", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Self Labs", + "parentCompanyURL": "https://self.xyz/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "2/25/2025", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Fileverse - ddocs", + "url": "https://docs.fileverse.io/document/create", + "description": "ddocs.new is a privacy-first alternative to Google docs. dDocs is end-to-end encrypted, open-source, and onchain. By design, not by promise. You can use it both for real-time and async collaboration! Moisturised features include: Markdown and LaTeX support; Darkmode; local LLM plugin; Offline mode; Collaborate with your ENS vs email; Accountless version where all your docs are stored locally. What we stand for: Self-sovereignty, Privacy, Open standards.", + "image": "https://i.imgur.com/micDfkJ.png", + "category": "Productivity", + "subCategory": [ + "Privacy", + "Communication", + "Storage" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/GxVjiCG.png" + ], + "bannerImage": "https://i.imgur.com/YI706qW.jpeg", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/fileverse", + "github": "https://github.com/fileverse/fileverse-cryptography", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": " Fileverse PTE. LTD", + "parentCompanyURL": "https://fileverse.io", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "4/7/2024", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Fileverse - dsheets", + "url": "https://sheets.fileverse.io/sheet/create", + "description": "dSheets.new is your decentralized spreadsheets made for the global economy & open Internet. It's a no-code tool to read, manipulate, and write onchain data in real-time, using familiar spreadsheet logic & functions. Built on the same Fileverse middleware as ddocs.new: no downloads, no sign-ups, full end-to-end encryption, granular permissions (email/ENS/0x), built on open standards, and with ZK-authentication (vOPRF-ID) for your private online collaboration.", + "image": "https://i.imgur.com/micDfkJ.png", + "category": "Productivity", + "subCategory": [ + "Privacy", + "Communication", + "Storage" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/rFOUKwe.png" + ], + "bannerImage": "https://i.imgur.com/wc8Dnwm.jpeg", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/fileverse", + "github": "https://github.com/fileverse/fileverse-cryptography", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": " Fileverse PTE. LTD", + "parentCompanyURL": "https://fileverse.io", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "6/23/2025", + "lastUpdated": "7/11/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "EAS", + "url": "https://attest.org/", + "description": "Ethereum Attestation Service (EAS) is an infrastructure public good for making attestations onchain or offchain about anything.", + "image": "https://i.imgur.com/d8kqvW4.png", + "category": "Productivity", + "subCategory": [ + "Governance" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/eZUAXjc.png" + ], + "bannerImage": "https://i.imgur.com/gBWM7Ez.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/eas_eth", + "github": "https://github.com/ethereum-attestation-service", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Ethereum Attestation Service", + "parentCompanyURL": "https://attest.org", + "openSource": true, + "contractAddress": "https://github.com/ethereum-attestation-service/eas-contracts", + "dateOfLaunch": "2/27/2023", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Unlock", + "url": "https://unlock-protocol.com/", + "description": "Unlock Protocol is a protocol that enables creators to monetize their content with a few lines of code in a fully decentralized way. It focuses on memberships and subscription NFTs with features like time constraints, pricing updates, and recurring payments. It is trusted by thousands of developers and community members for building next-generation membership products", + "image": "https://i.imgur.com/4p38CFx.png", + "category": "Productivity", + "subCategory": [ + "Governance", + "Ticketing", + "Memberships" + ], + "networks": [ + "Polygon", + "Celo", + "Gnosis", + "Base", + "Linea", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/ZVki3qp.png" + ], + "bannerImage": "https://i.imgur.com/SZ5K9mw.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/UnlockProtocol", + "github": "https://github.com/unlock-protocol/unlock", + "discord": "https://discord.unlock-protocol.com/", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Unlock Inc", + "parentCompanyURL": "https://unlock-protocol.com", + "openSource": true, + "contractAddress": "https://docs.unlock-protocol.com/core-protocol/unlock/networks", + "dateOfLaunch": "3/28/2021", + "lastUpdated": "7/15/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Human Passport", + "url": "https://passport.human.tech/", + "description": "Human Passport is an identity verification application and Sybil resistance protocol. Developers can utilize the different Human Passport products and services to build a unique humanity solution for their app or project, enabling more trustworthy and fair participation in their community.", + "image": "https://i.imgur.com/qvNkDAK.png", + "category": "Productivity", + "subCategory": [ + "Identity", + "Privacy", + "Proof-of-personhood" + ], + "networks": [ + "Base", + "Linea", + "Shape", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/WutTNUy.png" + ], + "bannerImage": "https://i.imgur.com/IjoDBkB.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/HumnPassport", + "github": "https://github.com/passportxyz/passport", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Human Tech", + "parentCompanyURL": "https://holonym.io", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "6/13/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Sequence", + "url": "https://sequence.xyz", + "description": "Sequence is a developer platform offering smart contract wallets, SDKs, and infrastructure for building Web3 apps and games on Ethereum and EVM chains.", + "image": "https://i.imgur.com/POagFpG.png", + "category": "Productivity", + "subCategory": [ + "Gaming" + ], + "networks": [ + "Base", + "Polygon", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/z3huNf6.png", + "platforms": [ + "Browser" + ], + "twitter": "https://www.twitter.com/0xsequence", + "github": "https://github.com/0xsequence", + "discord": "https://discord.gg/sequence", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Sequence", + "parentCompanyURL": "https://sequence.xyz", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "1/20/2021", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-30T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-05T06:00:00.000Z" + }, + { + "name": "Eternal AI", + "url": "https://eternalai.org/", + "description": "Eternal AI is a blockchain-based platform for creating, deploying, and monetizing cryptographically secure AI agents as smart contracts.", + "image": "https://i.imgur.com/AFYIGAo.png", + "category": "Productivity", + "subCategory": [ + "Privacy", + "AI Agents" + ], + "networks": [ + "Base", + "Ethereum Mainnet", + "Arbitrum One" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/UGkjMLB.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/CryptoEternalAI", + "github": "https://github.com/eternalai-org", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "EternalAI DAO ", + "parentCompanyURL": "https://eternalai.org", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-06T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-12T06:00:00.000Z" + }, + { + "name": "Virtuals", + "url": "https://app.virtuals.io/", + "description": "Virtuals Protocol is a society of productive AI agents, each designed to generate services or products and autonomously engage in onchain commerce. These agents are tokenized, allowing for capital formation, permissionless participation, and aligned incentives among creators, investors, and agents.", + "image": "https://i.imgur.com/fZ0nGYw.png", + "category": "Productivity", + "subCategory": [ + "AI Agents" + ], + "networks": [ + "Base" + ], + "screenshots": [ + "https://i.imgur.com/QWIvUfZ.png" + ], + "bannerImage": "https://i.imgur.com/wx6PJpU.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/virtuals_io", + "github": "", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Virtuals", + "parentCompanyURL": "https://virtuals.io", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "", + "lastUpdated": "", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Focus Tree", + "url": "https://focustree.app/", + "description": "Focus Tree is an web3 app that helps you manage your screentime better. Grow your garden with friends and collect items on Starknet blockchain.", + "image": "https://i.imgur.com/sjb5oar.png", + "category": "Productivity", + "subCategory": [ + "Memberships", + "Lifestyle" + ], + "networks": [ + "Starknet" + ], + "screenshots": [ + "https://i.imgur.com/qeo89nB.jpeg", + "https://i.imgur.com/Fn0HDe6.jpeg", + "https://i.imgur.com/I77rJjp.jpeg", + "https://i.imgur.com/B9phJpy.jpeg", + "https://i.imgur.com/OTV9EXy.jpeg" + ], + "bannerImage": "https://i.imgur.com/2SCRTsj.png", + "platforms": [ + "iOS", + "Android", + "Browser" + ], + "twitter": "https://x.com/focustree_app", + "github": "", + "discord": "https://discord.com/invite/focustree", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Focus tree", + "parentCompanyURL": "https://focustree.app/#", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "1/1/2022", + "lastUpdated": "", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "elizaOS", + "url": "https://elizaos.ai/", + "description": "Build, orchestrate, and\ncollaborate with AI agents.", + "image": "https://i.imgur.com/SR0FvBn.png", + "category": "Productivity", + "subCategory": [ + "AI", + "AI Agents" + ], + "networks": [ + "Ethereum Mainnet", + "Base", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/S49fjjj.png" + ], + "bannerImage": "https://i.imgur.com/KZ8zsdQ.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/elizaos", + "github": "https://github.com/elizaos", + "discord": "https://discord.com/invite/tgCCVF9vEa", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "elizaOS", + "parentCompanyURL": "https://elizaos.ai/", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "1/29/2025", + "lastUpdated": "10/9/2025", + "ready": "true", + "devconnect": "true", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + } + ], + "Bridge": [ + { + "name": "Particle Network", + "url": "https://particle.network/", + "description": "Pay with any asset. Transact across chains effortlessly. Never bridge again.", + "image": "https://i.imgur.com/IX6ESQ7.png", + "category": "Bridge", + "subCategory": [ + "Chain abstraction" + ], + "networks": [ + "Base", + "Scroll", + "Starknet", + "Linea", + "Blast", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Taiko Alethia", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/gYm3FIR.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/ParticleNtwrk", + "github": "", + "discord": "https://discord.com/invite/2y44qr6CR2", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Particle Network", + "parentCompanyURL": "https://particle.network/", + "openSource": false, + "contractAddress": "", + "dateOfLaunch": "9/9/2024", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Layerswap", + "url": "https://layerswap.io/", + "description": "Layerswap is the reliable solution for transferring crypto assets across networks in a matter of minutes. The app enables frictionless cross-chain transfers across 35+ blockchains as well as direct transfers between chains and 15+ exchanges.", + "image": "https://i.imgur.com/H8Mp3kO.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Base", + "Starknet", + "Scroll", + "ZKSync Era", + "Linea", + "Blast", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/S3R1wzQ.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/layerswap", + "github": "https://github.com/layerswap/layerswapapp", + "discord": "https://discord.gg/layerswap", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Layerswap", + "parentCompanyURL": "https://layerswap.io", + "openSource": true, + "contractAddress": "0x2Fc617E933a52713247CE25730f6695920B3befe", + "dateOfLaunch": "6/11/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Hop", + "url": "https://app.hop.exchange/", + "description": "Hop is a scalable rollup-to-rollup general token bridge. It allows users to send tokens from one rollup or sidechain to another almost immediately without having to wait for the networks challenge period.", + "image": "https://i.imgur.com/xraNXM1.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Base", + "Linea", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/9Yjx6vL.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/HopProtocol", + "github": "https://github.com/hop-protocol", + "discord": "https://discord.gg/PwCF88emV4", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Hop Protocol", + "parentCompanyURL": "https://hop.exchange", + "openSource": true, + "contractAddress": "0x914f986a44acb623a277d6bd17368171fcbe4273", + "dateOfLaunch": "7/12/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-20T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-26T06:00:00.000Z" + }, + { + "name": "Stargate", + "url": "https://stargate.finance/bridge", + "description": "Stargate is a composable cross-chain liquidity transport protocol enabling seamless asset transfers between blockchains.", + "image": "https://i.imgur.com/E9Jw36o.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network", + "Generalized message passing" + ], + "networks": [ + "Base", + "Scroll", + "Linea", + "Blast", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Taiko Alethia", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/BpaHCYm.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/StargateFinance", + "github": "https://github.com/stargate-protocol", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Stargate", + "parentCompanyURL": "https://stargate.finance/discord", + "openSource": true, + "contractAddress": "0x296f55f8fb28e498b858d0bcda06d955b2cb3f97", + "dateOfLaunch": "3/18/2022", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Across", + "url": "https://app.across.to/bridge", + "description": "Across is a cross-chain bridge for L2s and rollups secured by UMA's optimistic oracle. It is optimized for capital efficiency with a single liquidity pool, a competitive relayer landscape, and a no-slippage fee model.", + "image": "https://i.imgur.com/70fOLRm.png", + "category": "Bridge", + "subCategory": [ + "Validator or oracle", + "Liquidity network" + ], + "networks": [ + "Base", + "Blast", + "Linea", + "Scroll", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/ug6iZSa.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/AcrossProtocol", + "github": "https://github.com/across-protocol", + "discord": "https://discord.across.to/", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "Across", + "parentCompanyURL": "https://across.to/", + "openSource": true, + "contractAddress": "0x7355Efc63Ae731f584380a9838292c7046c1e433", + "dateOfLaunch": "11/8/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-02-09T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-02-15T07:00:00.000Z" + }, + { + "name": "Meson", + "url": "https://meson.fi/", + "description": "Meson is the faster and safer way to execute low-cost, zero-slippage universal cross-chain swaps across all leading blockchains and layer-2 rollups.", + "image": "https://i.imgur.com/lDCO7eA.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Mode", + "Blast", + "Linea", + "Scroll", + "Starknet", + "Base", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Taiko Alethia", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/TSj3ccw.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/mesonfi", + "github": "https://github.com/mesonfi", + "discord": "https://discord.gg/mesonfi", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Meson", + "parentCompanyURL": "https://meson.fi", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "12/1/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-13T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-19T06:00:00.000Z" + }, + { + "name": "deBridge", + "url": "https://app.debridge.finance/", + "description": "DeBridge is DeFi's internet of liquidity, enabling real-time movement of assets and information across the DeFi landscape. Without the bottlenecks and risks of liquidity pools, deBridge can power all type of cross-chain interactions with deep liquidity, tight spreads, and guaranteed rates.", + "image": "https://i.imgur.com/O1iVt88.png", + "category": "Bridge", + "subCategory": [ + "Validator or oracle" + ], + "networks": [ + "Base", + "Linea", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/3aBiKjz.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/deBridge", + "github": "https://github.com/debridge-finance/", + "discord": "https://discord.com/invite/debridge", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "deBridge", + "parentCompanyURL": "https://debridge.finance/", + "openSource": true, + "contractAddress": "0x43de2d77bf8027e25dbd179b491e8d64f38398aa", + "dateOfLaunch": "2/17/2022", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Orbiter Finance", + "url": "https://www.orbiter.finance/bridge/", + "description": "Orbiter Finance enables cross-rollup transactions of Ethereum/Bitcoin native assets in a trustless and seamless manner.", + "image": "https://i.imgur.com/xkJIVGd.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Base", + "Starknet", + "Scroll", + "Linea", + "Blast", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Taiko Alethia", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/aYA1Ei0.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/Orbiter_Finance", + "github": "https://github.com/Orbiter-Finance", + "discord": "https://discord.gg/FFT5wfmTXT", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English", + "Korean" + ], + "parentCompany": "Orbiter Finance", + "parentCompanyURL": "https://orbiter.finance", + "openSource": true, + "contractAddress": "", + "dateOfLaunch": "12/30/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Celer cBridge", + "url": "https://cbridge.celer.network/", + "description": "Celer is a blockchain interoperability protocol enabling a one-click user experience accessing tokens, DeFi, GameFi, NFTs, governance, and more across multiple chains.", + "image": "https://i.imgur.com/TyZdpEU.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Base", + "Scroll", + "Blast", + "Linea", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/FEr4emk.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/CelerNetwork", + "github": "https://github.com/celer-network", + "discord": "https://discord.com/invite/uGx4fjQ", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Celer", + "parentCompanyURL": "https://celer.network", + "openSource": true, + "contractAddress": "0x5427FEFA711Eff984124bFBB1AB6fbf5E3DA1820", + "dateOfLaunch": "6/10/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Synapse", + "url": "https://synapseprotocol.com/", + "description": "Synapse Bridge is built on top of the cross-chain infrastructure enabling users to seamlessly transfer assets across all blockchains.", + "image": "https://i.imgur.com/07lCxpa.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Base", + "Blast", + "Linea", + "Scroll", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/hp1Fnlu.png", + "platforms": [ + "Browser" + ], + "twitter": "https://twitter.com/SynapseProtocol", + "github": "https://github.com/synapsecns", + "discord": "htts://discord.gg/synapseprotocol", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Synapse", + "parentCompanyURL": "https://synapseprotocol.com", + "openSource": true, + "contractAddress": "0x7E7A0e201FD38d3ADAA9523Da6C109a07118C96a", + "dateOfLaunch": "8/29/2021", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-13T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-19T06:00:00.000Z" + }, + { + "name": "Gas.zip", + "url": "https://gas.zip", + "description": "Fastest one-stop gas refuel bridge for over 350+ chains. Bridge and explore all your favorite alt-chains and L2s, instantly.", + "image": "https://i.imgur.com/BE9zVpY.png", + "category": "Bridge", + "subCategory": [ + "Liquidity network" + ], + "networks": [ + "Base", + "Scroll", + "Linea", + "Blast", + "Mode", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet", + "Taiko Alethia", + "zkSync Mainnet" + ], + "screenshots": [], + "bannerImage": "https://i.imgur.com/EfeBVwX.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/gasdotzip", + "github": "https://github.com/gasdotzip", + "discord": "https://discord.com/invite/gasdotzip", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": false, + "languages": [ + "English" + ], + "parentCompany": "Gas.zip", + "parentCompanyURL": "https://gas.zip", + "openSource": true, + "contractAddress": "0x2a37D63EAdFe4b4682a3c28C1c2cD4F109Cc2762", + "dateOfLaunch": "8/9/2023", + "lastUpdated": "7/3/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-04-13T06:00:00.000Z", + "appOfTheWeekEndDate": "2026-04-19T06:00:00.000Z" + }, + { + "name": "Staking Launchpad", + "url": "https://launchpad.ethereum.org", + "description": "Become a validator and help secure the future of Ethereum.", + "image": "https://i.imgur.com/PO19A9T.png", + "category": "Bridge", + "subCategory": [ + "Validator or oracle" + ], + "networks": [ + "Ethereum Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/UoV3Mfn.png" + ], + "bannerImage": "https://i.imgur.com/PO19A9T.png", + "platforms": [ + "Browser" + ], + "twitter": "", + "github": "https://github.com/ethereum/staking-launchpad", + "discord": "", + "kpiUrl": "", + "sortingWeight": 0, + "discover": false, + "highlight": true, + "languages": [ + "Arabic", + "German", + "Greek", + "Hungarian", + "Indonesian", + "Italian", + "Japanese", + "Korean", + "Polish", + "Portuguese (Brazilian)", + "Romanian", + "Russian", + "Slovenian", + "Spanish", + "Turkish" + ], + "parentCompany": "Ethereum Foundation", + "parentCompanyURL": "https://ethereum.foundation", + "openSource": true, + "contractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa", + "dateOfLaunch": "12/1/2020", + "lastUpdated": "7/7/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": null, + "appOfTheWeekEndDate": null + }, + { + "name": "Bungee", + "url": "https://bungee.exchange/", + "description": "Bungee provides seamless swaps between any blockchain. With over $20B in volume and trusted by major wallets and dApps, Bungee makes moving assets between networks efficient, secure, and accessible to everyone.", + "image": "https://i.imgur.com/X2vpia7.png", + "category": "Bridge", + "subCategory": [ + "Chain abstraction", + "swap" + ], + "networks": [ + "Base", + "Scroll", + "Mode", + "Blast", + "Linea", + "Ethereum Mainnet", + "Arbitrum One", + "OP Mainnet" + ], + "screenshots": [ + "https://i.imgur.com/axNSOBz.png" + ], + "bannerImage": "https://i.imgur.com/254aaAe.png", + "platforms": [ + "Browser" + ], + "twitter": "https://x.com/BungeeExchange", + "github": "https://github.com/SocketDotTech", + "discord": "https://discord.com/invite/DrvfYq6fvc", + "kpiUrl": "", + "sortingWeight": 0, + "discover": true, + "highlight": true, + "languages": [ + "English" + ], + "parentCompany": "SocketDotTech", + "parentCompanyURL": "https://www.socket.tech/", + "openSource": true, + "contractAddress": "https://github.com/SocketDotTech/bungee-contracts-public/tree/master/deployments", + "dateOfLaunch": "10/10/2023", + "lastUpdated": "7/14/2025", + "ready": "true", + "devconnect": "false", + "appOfTheWeekStartDate": "2026-03-02T07:00:00.000Z", + "appOfTheWeekEndDate": "2026-03-08T07:00:00.000Z" + } + ] + }, + "timestamp": 1762456324544 } \ No newline at end of file diff --git a/src/data/mocks/attestantPosts.json b/src/data/mocks/attestantPosts.json index af8dbbdb9f0..4978974939f 100644 --- a/src/data/mocks/attestantPosts.json +++ b/src/data/mocks/attestantPosts.json @@ -1,22 +1,405 @@ -[ - { - "title": "EigenLayer: What do we know so far?", - "link": "https://www.attestant.io/posts/eigenlayer-so-far/", - "content": "Exploring the underlying mechanics, the economics of the marketplace, as well as insights derived from the testing phase to date.", - "source": "Attestant", - "sourceUrl": "https://www.attestant.io/posts/", - "sourceFeedUrl": "https://www.attestant.io/posts/", - "imgSrc": "/images/attestant-logo.svg", - "pubDate": "1 May 2024" - }, - { - "title": "The Rocket Pool Protocol", - "link": "https://www.attestant.io/posts/rocketpool-protocol/", - "content": "Analysis of Rocket Pool including a performance simulation and a PnL investigation.", - "source": "Attestant", - "sourceUrl": "https://www.attestant.io/posts/", - "sourceFeedUrl": "https://www.attestant.io/posts/", - "imgSrc": "/images/attestant-logo.svg", - "pubDate": "1 Mar 2024" - } -] +{ + "value": [ + { + "title": "Exploring validator compounding", + "link": "https://www.attestant.io/posts/exploring-validator-compounding/", + "content": "Exploring the higher rewards made available with compounding validators in the Ethereum Pectra hard fork.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "10 Apr 2025" + }, + { + "title": "Attestant Joins Bitwise", + "link": "https://www.attestant.io/posts/attestant-joins-bitwise/", + "content": "The next phase of the Attestant Journey", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "13 Nov 2024" + }, + { + "title": "EigenLayer: What do we know so far?", + "link": "https://www.attestant.io/posts/eigenlayer-so-far/", + "content": "Exploring the underlying mechanics, the economics of the marketplace, as well as insights derived from the testing phase to date.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "1 May 2024" + }, + { + "title": "The Rocket Pool Protocol", + "link": "https://www.attestant.io/posts/rocketpool-protocol/", + "content": "Analysis of Rocket Pool including a performance simulation and a PnL investigation.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "1 Mar 2024" + }, + { + "title": "Why the same old rules apply to new industries", + "link": "https://www.attestant.io/posts/why-the-same-old-rules-apply-to-new-industries/", + "content": "Many crypto ecosystems are born from times of adversity and Ethereum is no exception. This article provides some words of hope during these difficult times.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "28 Nov 2023" + }, + { + "title": "Understanding Withdrawals", + "link": "https://www.attestant.io/posts/understanding-withdrawals/", + "content": "Understanding the process and mechanism of moving rewards from the consensus chain to the execution chain.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "15 Feb 2023" + }, + { + "title": "What is the Risk Free Rate?", + "link": "https://www.attestant.io/posts/what-is-the-risk-free-rate/", + "content": "An introduction to the risk free rate and why it is important in financial markets.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "17 Nov 2022" + }, + { + "title": "Exploring the Impact of MEV Relays", + "link": "https://www.attestant.io/posts/exploring-the-impact-of-mev-relays/", + "content": "MEV relays have been introduced to the Ethereum network recently. This article looks at their impact on block times and chain stability.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "23 Oct 2022" + }, + { + "title": "Exploring Execution Block Rewards: September 2022", + "link": "https://www.attestant.io/posts/exploring-execution-block-rewards-sep-22/", + "content": "Compiling data about historical execution block rewards in an attempt to provide an expectation of future rewards.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "5 Sep 2022" + }, + { + "title": "What is Credit Risk?", + "link": "https://www.attestant.io/posts/what-is-credit-risk/", + "content": "An exploration of credit risk.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "28 Jul 2022" + }, + { + "title": "Understanding Post-merge Rewards", + "link": "https://www.attestant.io/posts/understanding-post-merge-rewards/", + "content": "The merge changes how rewards are issued to validators. This article examines different sources of rewards, and how they may be accessed.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "31 Mar 2022" + }, + { + "title": "Exploring Execution Block Rewards", + "link": "https://www.attestant.io/posts/exploring-execution-block-rewards/", + "content": "Compiling data about historical execution block rewards in an attempt to provide an expectation of future rewards.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "17 Mar 2022" + }, + { + "title": "Evaluating Beacon Nodes 2022 Edition", + "link": "https://www.attestant.io/posts/evaluating-beacon-nodes-2022/", + "content": "An update of a previous article looking at the relative performance of beacon nodes in proposing blocks.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "3 Mar 2022" + }, + { + "title": "Helping Client Diversity", + "link": "https://www.attestant.io/posts/helping-client-diversity/", + "content": "Helping client diversity is not as simple as avoiding the majority client. This article explores how Vouch allows use of majority clients without the associated risk of finalizing an invalid chain.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "15 Feb 2022" + }, + { + "title": "Pennies from Heaven", + "link": "https://www.attestant.io/posts/pennies-from-heaven/", + "content": "An introduction to the Attestant Overnight Rate.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "12 Jan 2022" + }, + { + "title": "Upgrading Attestant's Infrastructure without Missing a Beat", + "link": "https://www.attestant.io/posts/upgrading-attestants-infrastructure-without-missing-a-beat/", + "content": "How to build a resilient Ethereum 2 infrastructure without duplicating keys.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "11 Feb 2021" + }, + { + "title": "What Is Risk?", + "link": "https://www.attestant.io/posts/what-is-risk/", + "content": "An introduction to risk, in its many variations.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "4 Feb 2021" + }, + { + "title": "Charting Inactive Ether", + "link": "https://www.attestant.io/posts/charting-inactive-ether/", + "content": "Ether on the beacon chain not actively participating in validating is a waste. This article charts the growth of inactive Ether in the first two weeks of the beacon chain.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "21 Jan 2021" + }, + { + "title": "Exploring Net Issuance", + "link": "https://www.attestant.io/posts/exploring-net-issuance/", + "content": "Net issuance on Ethereum 2 is a critical metric to understand total Ether supply. This article provides details on how to calculate its value.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "14 Jan 2021" + }, + { + "title": "Examining Ethereum 2 Network Performance", + "link": "https://www.attestant.io/posts/examining-ethereum-2-network-performance/", + "content": "The Ethereum 2 network is a massively complex entity, but a single metric encompassing its performance is very useful. This article describes such a metric.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "7 Jan 2021" + }, + { + "title": "Ethereum 2 Goes Live", + "link": "https://www.attestant.io/posts/ethereum-2-goes-live/", + "content": "Ethereum 2 goes live on the 1st December 2020. This article explains why this is important and what to expect in the future.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "30 Nov 2020" + }, + { + "title": "Introducing Vouch", + "link": "https://www.attestant.io/posts/introducing-vouch/", + "content": "Attestant uses their own multi-node validator client, providing high levels of security and availability whilst fitting neatly in to production environments. This article introduces Vouch and explains its features.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "28 Sep 2020" + }, + { + "title": "Evaluating Beacon Nodes", + "link": "https://www.attestant.io/posts/evaluating-beacon-nodes/", + "content": "Multiple implementations of the Ethereum 2 node software exist. This article compares some of them to see if one is significantly better than the others.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "11 Sep 2020" + }, + { + "title": "Introducing Dirk", + "link": "https://www.attestant.io/posts/introducing-dirk/", + "content": "Attestant uses their own distributed remote keymanager, providing high levels of security and availability whilst fitting neatly in to production environments. This article introduces Dirk and explains its features.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "25 Aug 2020" + }, + { + "title": "What Happened to Passwords?", + "link": "https://www.attestant.io/posts/what-happened-to-passwords/", + "content": "Tracing the path of passwords form simple, to complex, to no longer required.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "13 Aug 2020" + }, + { + "title": "Defining Attestation Effectiveness", + "link": "https://www.attestant.io/posts/defining-attestation-effectiveness/", + "content": "Attestation effectiveness is a great metric to help understand how your validators are performing. This article explains what attestation effectiveness is, and how to calculate it.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "6 Aug 2020" + }, + { + "title": "Protecting Validator Keys", + "link": "https://www.attestant.io/posts/protecting-validator-keys/", + "content": "Protecting validator keys is difficult due to their dual requirements of security and accessibility. This article discusses various methods to increase both security and accessibility of validator keys.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "30 Jul 2020" + }, + { + "title": "Protecting Withdrawal Keys", + "link": "https://www.attestant.io/posts/protecting-withdrawal-keys/", + "content": "Protecting withdrawal keys is a critical part of any Ethereum 2 staker's operations. This article discusses the use of withdrawal keys and how they can be secured with existing tools.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "11 Jun 2020" + }, + { + "title": "Charting Ethereum Issuance", + "link": "https://www.attestant.io/posts/charting-ethereum-issuance/", + "content": "Ethereum 1 secures its chain using a proof of work consensus mechanism, whereas Ethereum 2 uses proof of stake. Both networks create Ether to reward participants, however this increases the total Ether supply. This article looks at the technical changes coming to the Ethereum 1 and Ethereum 2 networks that will result in both short-term and long-term changes to the total supply of Ether.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "7 May 2020" + }, + { + "title": "This Too Shall Pass", + "link": "https://www.attestant.io/posts/this-too-shall-pass/", + "content": "Many crypto ecosystems are born from times of adversity and Ethereum is no exception. This article provides some words of hope during these difficult times.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "2 Apr 2020" + }, + { + "title": "Defining Ethereum 2 Network Metric", + "link": "https://www.attestant.io/posts/defining-ethereum-2-network-metrics/", + "content": "Much has been written about measuring the performance of individual Ethereum 2 validators, but less about the health of the overall network. This article defines some network-level metrics that can be used to measure the health and performance.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "2 Feb 2020" + }, + { + "title": "Understanding the Validator Lifecycle", + "link": "https://www.attestant.io/posts/understanding-the-validator-lifecycle/", + "content": "Examining the validator lifecycle in depth, showing what happens in each state and transition, what triggers transitions, and how long each transition takes.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "23 Jan 2020" + }, + { + "title": "Evaluating Staking Services", + "link": "https://www.attestant.io/posts/evaluating-staking-services/", + "content": "When Ethereum 2 goes live there will be many staking services vying to stake your funds. This article looks at some of the models they may provide, along with their risks and benefits.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "16 Jan 2020" + }, + { + "title": "Exploring Ethereum 2 Validator Costs", + "link": "https://www.attestant.io/posts/exploring-ethereum-2-validator-costs/", + "content": "Running an Ethereum 2 validator incurs a number of costs, which must all be considered when calculating its profitability. This post looks at the various costs involved, and how they may change as Ethereum 2 matures.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "8 Jan 2020" + }, + { + "title": "Anticipating Ethereum 2 in 2020", + "link": "https://www.attestant.io/posts/anticipating-ethereum-2-in-2020/", + "content": "2020 is a make-or-break year for Ethereum. This post looks at expectations for the year from the perspective of the Ethereum 2 phase 0 launch.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "2 Jan 2020" + }, + { + "title": "Exploring Staking Keys", + "link": "https://www.attestant.io/posts/exploring-staking-keys/", + "content": "Ethereum 2 deposits require two keys, which can be a cause of confusion. This explains the use and purpose of these keys.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "19 Dec 2019" + }, + { + "title": "Understanding Ethereum Staking Deposits", + "link": "https://www.attestant.io/posts/understanding-ethereum-staking-deposits/", + "content": "Ethereum 2's proof of stake relies on funds from Ethereum 1. This explores the process of creating staking deposits, and how they are processed by to transfer funds from one network to the other.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "12 Dec 2019" + }, + { + "title": "ETH to ETH2: The Same Asset, Evolved", + "link": "https://www.attestant.io/posts/eth-to-eth2/", + "content": "ETH and ETH2 are often discussed as separate currencies for Ethereum 1 and Ethereum 2, respectively. But they are in fact the same asset, and it is important to recognize this.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "5 Dec 2019" + }, + { + "title": "Understanding Validator Effective Balance", + "link": "https://www.attestant.io/posts/understanding-validator-effective-balance/", + "content": "Effective balance is a concept in Ethereum 2 staking whose understanding is critical to running a good validator. This post investigates effective balance and its impact on validators.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "28 Nov 2019" + }, + { + "title": "Introducing Attestant", + "link": "https://www.attestant.io/posts/introducing-attestant/", + "content": "Attestant is a company dedicated to the business of staking.", + "source": "Attestant", + "sourceUrl": "https://www.attestant.io/posts/", + "sourceFeedUrl": "https://www.attestant.io/posts/", + "imgSrc": "/images/attestant-logo.svg", + "pubDate": "25 Nov 2019" + } + ], + "timestamp": 1762456319749 +} \ No newline at end of file diff --git a/src/data/mocks/beaconchainApr.json b/src/data/mocks/beaconchainApr.json index 1fdfd185287..c52cf7e1c03 100644 --- a/src/data/mocks/beaconchainApr.json +++ b/src/data/mocks/beaconchainApr.json @@ -1 +1,4 @@ -{ "value": 0.025, "timestamp": 1759687080325 } +{ + "value": 0.028884756304419, + "timestamp": 1762449885124 +} \ No newline at end of file diff --git a/src/data/mocks/beaconchainEpoch.json b/src/data/mocks/beaconchainEpoch.json index b5022fcaacc..5a317728784 100644 --- a/src/data/mocks/beaconchainEpoch.json +++ b/src/data/mocks/beaconchainEpoch.json @@ -1,4 +1,10 @@ { - "totalEthStaked": { "value": 35000000, "timestamp": 1759687080325 }, - "validatorscount": { "value": 1000000, "timestamp": 1759687080325 } -} + "totalEthStaked": { + "value": 35708424, + "timestamp": 1762449885224 + }, + "validatorscount": { + "value": 995987, + "timestamp": 1762449885224 + } +} \ No newline at end of file diff --git a/src/data/mocks/blogFeeds.json b/src/data/mocks/blogFeeds.json new file mode 100644 index 00000000000..d54eee0bcd6 --- /dev/null +++ b/src/data/mocks/blogFeeds.json @@ -0,0 +1,9658 @@ +{ + "value": [ + [ + { + "pubDate": "Sun, 19 Oct 2025 00:00:00 +0000", + "title": "A GKR Tutorial", + "link": "https://vitalik.ca/general/2025/10/19/gkr.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 05 Oct 2025 00:00:00 +0000", + "title": "Memory access is O(N^[1/3])", + "link": "https://vitalik.ca/general/2025/10/05/memory13.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 24 Sep 2025 00:00:00 +0000", + "title": "The importance of full-stack openness and verifiability", + "link": "https://vitalik.ca/general/2025/09/24/openness_and_verifiability.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 21 Sep 2025 00:00:00 +0000", + "title": "Low-risk defi can be for Ethereum what search was for Google", + "link": "https://vitalik.ca/general/2025/09/21/low_risk_defi.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 12 Aug 2025 00:00:00 +0000", + "title": "On idea-driven ideas", + "link": "https://vitalik.ca/general/2025/08/12/ideas.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 12 Aug 2025 00:00:00 +0000", + "title": "\"I support it only if it's open source\" should be a more common viewpoint", + "link": "https://vitalik.ca/general/2025/08/12/onlyopensource.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 10 Jul 2025 00:00:00 +0000", + "title": "My response to AI 2027", + "link": "https://vitalik.ca/general/2025/07/10/2027.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 07 Jul 2025 00:00:00 +0000", + "title": "Why I used to prefer permissive licenses and now favor copyleft", + "link": "https://vitalik.ca/general/2025/07/07/copyleft.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 28 Jun 2025 00:00:00 +0000", + "title": "Does digital ID have risks even if it's ZK-wrapped?", + "link": "https://vitalik.ca/general/2025/06/28/zkid.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 11 May 2025 00:00:00 +0000", + "title": "A simple explanation of a/(b+c) + b/(c+a) + c/(a+b) = 4", + "link": "https://vitalik.ca/general/2025/05/11/abc4.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 06 May 2025 00:00:00 +0000", + "title": "The math of when stage 1 and stage 2 make sense", + "link": "https://vitalik.ca/general/2025/05/06/stages.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 03 May 2025 00:00:00 +0000", + "title": "Simplifying the L1", + "link": "https://vitalik.ca/general/2025/05/03/simplel1.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 14 Apr 2025 00:00:00 +0000", + "title": "Why I support privacy", + "link": "https://vitalik.ca/general/2025/04/14/privacy.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 29 Mar 2025 00:00:00 +0000", + "title": "We should talk less about public goods funding and more about open source funding", + "link": "https://vitalik.ca/general/2025/03/29/pubos.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 29 Mar 2025 00:00:00 +0000", + "title": "The tree ring model of culture and politics", + "link": "https://vitalik.ca/general/2025/03/29/treering.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 28 Feb 2025 00:00:00 +0000", + "title": "AI as the engine, humans as the steering wheel", + "link": "https://vitalik.ca/general/2025/02/28/aihumans.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 14 Feb 2025 00:00:00 +0000", + "title": "Reasons to have higher L1 gas limits even in an L2-heavy Ethereum", + "link": "https://vitalik.ca/general/2025/02/14/l1scaling.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 23 Jan 2025 00:00:00 +0000", + "title": "Scaling Ethereum L1 and L2s in 2025 and beyond", + "link": "https://vitalik.ca/general/2025/01/23/l1l2future.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 05 Jan 2025 00:00:00 +0000", + "title": "d/acc: one year later", + "link": "https://vitalik.ca/general/2025/01/05/dacc2.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 03 Dec 2024 00:00:00 +0000", + "title": "What I would love to see in a wallet", + "link": "https://vitalik.ca/general/2024/12/03/wallets.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 09 Nov 2024 00:00:00 +0000", + "title": "From prediction markets to info finance", + "link": "https://vitalik.ca/general/2024/11/09/infofinance.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 29 Oct 2024 00:00:00 +0000", + "title": "Possible futures of the Ethereum protocol, part 6: The Splurge", + "link": "https://vitalik.ca/general/2024/10/29/futures6.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 26 Oct 2024 00:00:00 +0000", + "title": "Possible futures of the Ethereum protocol, part 5: The Purge", + "link": "https://vitalik.ca/general/2024/10/26/futures5.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 23 Oct 2024 00:00:00 +0000", + "title": "Possible futures of the Ethereum protocol, part 4: The Verge", + "link": "https://vitalik.ca/general/2024/10/23/futures4.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 20 Oct 2024 00:00:00 +0000", + "title": "Possible futures of the Ethereum protocol, part 3: The Scourge", + "link": "https://vitalik.ca/general/2024/10/20/futures3.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 17 Oct 2024 00:00:00 +0000", + "title": "Possible futures of the Ethereum protocol, part 2: The Surge", + "link": "https://vitalik.ca/general/2024/10/17/futures2.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 14 Oct 2024 00:00:00 +0000", + "title": "Possible futures of the Ethereum protocol, part 1: The Merge", + "link": "https://vitalik.ca/general/2024/10/14/futures1.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 28 Sep 2024 00:00:00 +0000", + "title": "Making Ethereum alignment legible", + "link": "https://vitalik.ca/general/2024/09/28/alignment.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 02 Sep 2024 00:00:00 +0000", + "title": "Glue and coprocessor architectures", + "link": "https://vitalik.ca/general/2024/09/02/gluecp.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 21 Aug 2024 00:00:00 +0000", + "title": "Plurality philosophy in an incredibly oversized nutshell", + "link": "https://vitalik.ca/general/2024/08/21/plurality.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 03 Aug 2024 00:00:00 +0000", + "title": "Review: museums of the future, Dubai and Tokyo", + "link": "https://vitalik.ca/general/2024/08/03/museumfuture.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 23 Jul 2024 00:00:00 +0000", + "title": "Exploring circle STARKs", + "link": "https://vitalik.ca/general/2024/07/23/circlestarks.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 17 Jul 2024 00:00:00 +0000", + "title": "Against choosing your political allegiances based on who is \"pro-crypto\"", + "link": "https://vitalik.ca/general/2024/07/17/procrypto.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 30 Jun 2024 00:00:00 +0000", + "title": "Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times", + "link": "https://vitalik.ca/general/2024/06/30/epochslot.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 31 May 2024 00:00:00 +0000", + "title": "Some reflections on the Bitcoin block size war", + "link": "https://vitalik.ca/general/2024/05/31/blocksize.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 29 May 2024 00:00:00 +0000", + "title": "Layer 2s as cultural extensions of Ethereum", + "link": "https://vitalik.ca/general/2024/05/29/l2culture.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 23 May 2024 00:00:00 +0000", + "title": "How do layer 2s really differ from execution sharding?", + "link": "https://vitalik.ca/general/2024/05/23/l2exec.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 17 May 2024 00:00:00 +0000", + "title": "The near and mid-term future of improving the Ethereum network's permissionlessness and decentralization", + "link": "https://vitalik.ca/general/2024/05/17/decentralization.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 09 May 2024 00:00:00 +0000", + "title": "Multidimensional gas pricing", + "link": "https://vitalik.ca/general/2024/05/09/multidim.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 29 Apr 2024 00:00:00 +0000", + "title": "Binius: highly efficient proofs over binary fields", + "link": "https://vitalik.ca/general/2024/04/29/binius.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 01 Apr 2024 00:00:00 +0000", + "title": "Degen communism: the only correct political ideology", + "link": "https://vitalik.ca/general/2024/04/01/dc.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 29 Mar 2024 00:00:00 +0000", + "title": "What else could memecoins be?", + "link": "https://vitalik.ca/general/2024/03/29/memecoins.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 28 Mar 2024 00:00:00 +0000", + "title": "Ethereum has blobs. Where do we go from here?", + "link": "https://vitalik.ca/general/2024/03/28/blobs.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 09 Feb 2024 00:00:00 +0000", + "title": "Ask security questions", + "link": "https://vitalik.ca/general/2024/02/09/securityquestions.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 31 Jan 2024 00:00:00 +0000", + "title": "The end of my childhood", + "link": "https://vitalik.ca/general/2024/01/31/end.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 30 Jan 2024 00:00:00 +0000", + "title": "The promise and challenges of crypto + AI applications", + "link": "https://vitalik.ca/general/2024/01/30/cryptoai.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 28 Dec 2023 00:00:00 +0000", + "title": "Make Ethereum Cypherpunk Again", + "link": "https://vitalik.ca/general/2023/12/28/cypherpunk.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 27 Nov 2023 00:00:00 +0000", + "title": "My techno-optimism", + "link": "https://vitalik.ca/general/2023/11/27/techno_optimism.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 14 Nov 2023 00:00:00 +0000", + "title": "Exit games for EVM validiums: the return of Plasma", + "link": "https://vitalik.ca/general/2023/11/14/neoplasma.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 31 Oct 2023 00:00:00 +0000", + "title": "Different types of layer 2s", + "link": "https://vitalik.ca/general/2023/10/31/l2types.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 30 Sep 2023 00:00:00 +0000", + "title": "Should Ethereum be okay with enshrining more things in the protocol?", + "link": "https://vitalik.ca/general/2023/09/30/enshrinement.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 16 Aug 2023 00:00:00 +0000", + "title": "What do I think about Community Notes?", + "link": "https://vitalik.ca/general/2023/08/16/communitynotes.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 24 Jul 2023 00:00:00 +0000", + "title": "What do I think about biometric proof of personhood?", + "link": "https://vitalik.ca/general/2023/07/24/biometric.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 20 Jun 2023 00:00:00 +0000", + "title": "Deeper dive on cross-L2 reading for wallets and other use cases", + "link": "https://vitalik.ca/general/2023/06/20/deeperdive.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 09 Jun 2023 00:00:00 +0000", + "title": "The Three Transitions", + "link": "https://vitalik.ca/general/2023/06/09/three_transitions.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 21 May 2023 00:00:00 +0000", + "title": "Don't overload Ethereum's consensus", + "link": "https://vitalik.ca/general/2023/05/21/dont_overload.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 14 Apr 2023 00:00:00 +0000", + "title": "Travel time ~= 750 * distance ^ 0.6", + "link": "https://vitalik.ca/general/2023/04/14/traveltime.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 31 Mar 2023 00:00:00 +0000", + "title": "How will Ethereum's multi-client philosophy interact with ZK-EVMs?", + "link": "https://vitalik.ca/general/2023/03/31/zkmulticlient.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 28 Feb 2023 00:00:00 +0000", + "title": "Some personal user experiences", + "link": "https://vitalik.ca/general/2023/02/28/ux.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 20 Jan 2023 00:00:00 +0000", + "title": "An incomplete guide to stealth addresses", + "link": "https://vitalik.ca/general/2023/01/20/stealth.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 30 Dec 2022 00:00:00 +0000", + "title": "What even is an institution?", + "link": "https://vitalik.ca/general/2022/12/30/institutions.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 06 Dec 2022 00:00:00 +0000", + "title": "Updating my blog: a quick GPT chatbot coding experiment", + "link": "https://vitalik.ca/general/2022/12/06/gpt3.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 05 Dec 2022 00:00:00 +0000", + "title": "What in the Ethereum application ecosystem excites me", + "link": "https://vitalik.ca/general/2022/12/05/excited.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 19 Nov 2022 00:00:00 +0000", + "title": "Having a safe CEX: proof of solvency and beyond", + "link": "https://vitalik.ca/general/2022/11/19/proof_of_solvency.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 28 Oct 2022 00:00:00 +0000", + "title": "The Revenue-Evil Curve: a different way to think about prioritizing public goods funding", + "link": "https://vitalik.ca/general/2022/10/28/revenue_evil.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 28 Oct 2022 00:00:00 +0000", + "title": "收入-邪恶曲线:思考“公共物品融资优先”的另一种方式", + "link": "https://vitalik.ca/general/2022/10/28/revenue_evil_zhCN.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 28 Oct 2022 00:00:00 +0000", + "title": "我在加密世界的一些个人体验", + "link": "https://vitalik.ca/general/2022/10/28/ux_zhCN.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 20 Sep 2022 00:00:00 +0000", + "title": "DAOs are not corporations: where decentralization in autonomous organizations matters", + "link": "https://vitalik.ca/general/2022/09/20/daos.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 17 Sep 2022 00:00:00 +0000", + "title": "What kind of layer 3s make sense?", + "link": "https://vitalik.ca/general/2022/09/17/layer_3.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 09 Sep 2022 00:00:00 +0000", + "title": "Should there be demand-based recurring fees on ENS domains?", + "link": "https://vitalik.ca/general/2022/09/09/ens.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 29 Aug 2022 00:00:00 +0000", + "title": "不同類型的 ZK-EVM", + "link": "https://vitalik.ca/general/2022/08/29/zkevm_zhTW.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 04 Aug 2022 00:00:00 +0000", + "title": "The different types of ZK-EVMs", + "link": "https://vitalik.ca/general/2022/08/04/zkevm.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 04 Aug 2022 00:00:00 +0000", + "title": "Farklı ZK-EVM Türleri", + "link": "https://vitalik.ca/general/2022/08/04/zkevm_TR.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 13 Jul 2022 00:00:00 +0000", + "title": "What do I think about network states?", + "link": "https://vitalik.ca/general/2022/07/13/networkstates.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 13 Jul 2022 00:00:00 +0000", + "title": "「网络国家」之我见", + "link": "https://vitalik.ca/general/2022/07/13/networkstates_zhCN.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 20 Jun 2022 00:00:00 +0000", + "title": "My 40-liter backpack travel guide", + "link": "https://vitalik.ca/general/2022/06/20/backpack.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 15 Jun 2022 00:00:00 +0000", + "title": "Some ways to use ZK-SNARKs for privacy", + "link": "https://vitalik.ca/general/2022/06/15/using_snarks.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 12 Jun 2022 00:00:00 +0000", + "title": "Where to use a blockchain in non-financial applications?", + "link": "https://vitalik.ca/general/2022/06/12/nonfin.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 25 May 2022 00:00:00 +0000", + "title": "Two thought experiments to evaluate automated stablecoins", + "link": "https://vitalik.ca/general/2022/05/25/stable.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 01 Apr 2022 00:00:00 +0000", + "title": "In Defense of Bitcoin Maximalism", + "link": "https://vitalik.ca/general/2022/04/01/maximalist.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 29 Mar 2022 00:00:00 +0000", + "title": "The roads not taken", + "link": "https://vitalik.ca/general/2022/03/29/road.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 14 Mar 2022 00:00:00 +0000", + "title": "How do trusted setups work?", + "link": "https://vitalik.ca/general/2022/03/14/trustedsetup.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 28 Feb 2022 00:00:00 +0000", + "title": "Encapsulated vs systemic complexity in protocol design", + "link": "https://vitalik.ca/general/2022/02/28/complexity.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 26 Jan 2022 00:00:00 +0000", + "title": "Soulbound", + "link": "https://vitalik.ca/general/2022/01/26/soulbound.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 19 Dec 2021 00:00:00 +0000", + "title": "The bulldozer vs vetocracy political axis", + "link": "https://vitalik.ca/general/2021/12/19/bullveto.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 06 Dec 2021 00:00:00 +0000", + "title": "Endgame", + "link": "https://vitalik.ca/general/2021/12/06/endgame.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 16 Nov 2021 00:00:00 +0000", + "title": "Review of Optimism retro funding round 1", + "link": "https://vitalik.ca/general/2021/11/16/retro1.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 05 Nov 2021 00:00:00 +0000", + "title": "Halo and more: exploring incremental verification and SNARKs without pairings", + "link": "https://vitalik.ca/general/2021/11/05/halo.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 31 Oct 2021 00:00:00 +0000", + "title": "Crypto Cities", + "link": "https://vitalik.ca/general/2021/10/31/cities.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 26 Sep 2021 00:00:00 +0000", + "title": "On Nathan Schneider on the limits of cryptoeconomics", + "link": "https://vitalik.ca/general/2021/09/26/limits.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 22 Aug 2021 00:00:00 +0000", + "title": "Alternatives to selling at below-market-clearing prices for achieving fairness (or community sentiment, or fun)", + "link": "https://vitalik.ca/general/2021/08/22/prices.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 16 Aug 2021 00:00:00 +0000", + "title": "Moving beyond coin voting governance", + "link": "https://vitalik.ca/general/2021/08/16/voting3.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 29 Jul 2021 00:00:00 +0000", + "title": "Against overuse of the Gini coefficient", + "link": "https://vitalik.ca/general/2021/07/29/gini.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 18 Jun 2021 00:00:00 +0000", + "title": "Verkle trees", + "link": "https://vitalik.ca/general/2021/06/18/verkle.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 25 May 2021 00:00:00 +0000", + "title": "Blockchain voting is overrated among uninformed people but underrated among informed people", + "link": "https://vitalik.ca/general/2021/05/25/voting2.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 25 May 2021 00:00:00 +0000", + "title": "La votación mediante blockchain está sobrevalorada entre personas desinformadas pero subestimada entre personas informadas", + "link": "https://vitalik.ca/general/2021/05/25/voting2_ES.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 23 May 2021 00:00:00 +0000", + "title": "The Limits to Blockchain Scalability", + "link": "https://vitalik.ca/general/2021/05/23/scaling.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 07 Apr 2021 00:00:00 +0000", + "title": "Why sharding is great: demystifying the technical properties", + "link": "https://vitalik.ca/general/2021/04/07/sharding.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 02 Apr 2021 00:00:00 +0000", + "title": "Gitcoin Grants Round 9: The Next Phase of Growth", + "link": "https://vitalik.ca/general/2021/04/02/round9.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 23 Mar 2021 00:00:00 +0000", + "title": "The Most Important Scarce Resource is Legitimacy", + "link": "https://vitalik.ca/general/2021/03/23/legitimacy.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 23 Mar 2021 00:00:00 +0000", + "title": "El recurso escaso más importante es la legitimidad", + "link": "https://vitalik.ca/general/2021/03/23/legitimacy_ES.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 18 Feb 2021 00:00:00 +0000", + "title": "Prediction Markets: Tales from the Election", + "link": "https://vitalik.ca/general/2021/02/18/election.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 26 Jan 2021 00:00:00 +0000", + "title": "An approximate introduction to how zk-SNARKs are possible", + "link": "https://vitalik.ca/general/2021/01/26/snarks.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 11 Jan 2021 00:00:00 +0000", + "title": "Why we need wide adoption of social recovery wallets", + "link": "https://vitalik.ca/general/2021/01/11/recovery.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 05 Jan 2021 00:00:00 +0000", + "title": "An Incomplete Guide to Rollups", + "link": "https://vitalik.ca/general/2021/01/05/rollup.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 05 Jan 2021 00:00:00 +0000", + "title": "La Guía Incompleta de los Rollups", + "link": "https://vitalik.ca/general/2021/01/05/rollup_ES.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 28 Dec 2020 00:00:00 +0000", + "title": "Endnotes on 2020: Crypto and Beyond", + "link": "https://vitalik.ca/general/2020/12/28/endnotes.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 08 Nov 2020 00:00:00 +0000", + "title": "Convex and Concave Dispositions", + "link": "https://vitalik.ca/general/2020/11/08/concave.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 06 Nov 2020 00:00:00 +0000", + "title": "Why Proof of Stake (Nov 2020)", + "link": "https://vitalik.ca/general/2020/11/06/pos2020.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 06 Nov 2020 00:00:00 +0000", + "title": "為什麼權益證明棒棒的(2020 年十一月)", + "link": "https://vitalik.ca/general/2020/11/06/pos2020_zhTW.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 18 Oct 2020 00:00:00 +0000", + "title": "Gitcoin Grants Round 7 Retrospective", + "link": "https://vitalik.ca/general/2020/10/18/round7.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 18 Oct 2020 00:00:00 +0000", + "title": " 7ème tour des subventions Gitcoin - Rétrospective ", + "link": "https://vitalik.ca/general/2020/10/18/round7_FR.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 11 Sep 2020 00:00:00 +0000", + "title": "Coordination, Good and Bad", + "link": "https://vitalik.ca/general/2020/09/11/coordination.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 20 Aug 2020 00:00:00 +0000", + "title": "Trust Models", + "link": "https://vitalik.ca/general/2020/08/20/trust.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 17 Aug 2020 00:00:00 +0000", + "title": "A Philosophy of Blockchain Validation", + "link": "https://vitalik.ca/general/2020/08/17/philosophy.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 22 Jul 2020 00:00:00 +0000", + "title": "Gitcoin Grants Round 6 Retrospective", + "link": "https://vitalik.ca/general/2020/07/22/round6.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 20 Jul 2020 00:00:00 +0000", + "title": "Exploring Fully Homomorphic Encryption", + "link": "https://vitalik.ca/general/2020/07/20/homomorphic.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 30 Apr 2020 00:00:00 +0000", + "title": "Gitcoin Grants Round 5 Retrospective", + "link": "https://vitalik.ca/general/2020/04/30/round5.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 21 Mar 2020 00:00:00 +0000", + "title": "A Quick Garbled Circuits Primer", + "link": "https://vitalik.ca/general/2020/03/21/garbled.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 18 Feb 2020 00:00:00 +0000", + "title": "預測市場:一個選舉小故事(2021年 二月)", + "link": "https://vitalik.ca/general/2020/02/18/election_zhTW.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 28 Jan 2020 00:00:00 +0000", + "title": "Review of Gitcoin Quadratic Funding Round 4", + "link": "https://vitalik.ca/general/2020/01/28/round4.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 26 Dec 2019 00:00:00 +0000", + "title": "Base Layers And Functionality Escape Velocity", + "link": "https://vitalik.ca/general/2019/12/26/mvb.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 24 Dec 2019 00:00:00 +0000", + "title": "Christmas Special", + "link": "https://vitalik.ca/general/2019/12/24/christmas.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 07 Dec 2019 00:00:00 +0000", + "title": "Quadratic Payments: A Primer", + "link": "https://vitalik.ca/general/2019/12/07/quadratic.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 22 Nov 2019 00:00:00 +0000", + "title": "Hard Problems in Cryptocurrency: Five Years Later", + "link": "https://vitalik.ca/general/2019/11/22/progress.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 24 Oct 2019 00:00:00 +0000", + "title": "Review of Gitcoin Quadratic Funding Round 3", + "link": "https://vitalik.ca/general/2019/10/24/gitcoin.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 01 Oct 2019 00:00:00 +0000", + "title": "In-person meatspace protocol to prove unconditional possession of a private key", + "link": "https://vitalik.ca/general/2019/10/01/story.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 22 Sep 2019 00:00:00 +0000", + "title": "Understanding PLONK", + "link": "https://vitalik.ca/general/2019/09/22/plonk.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 28 Aug 2019 00:00:00 +0000", + "title": "The Dawn of Hybrid Layer 2 Protocols", + "link": "https://vitalik.ca/general/2019/08/28/hybrid_layer_2.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 12 Jun 2019 00:00:00 +0000", + "title": "Sidechains vs Plasma vs Sharding", + "link": "https://vitalik.ca/general/2019/06/12/plasma_vs_sharding.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 12 May 2019 00:00:00 +0000", + "title": "Fast Fourier Transforms", + "link": "https://vitalik.ca/general/2019/05/12/fft.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 09 May 2019 00:00:00 +0000", + "title": "Control as Liability", + "link": "https://vitalik.ca/general/2019/05/09/control_as_liability.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 16 Apr 2019 00:00:00 +0000", + "title": "On Free Speech", + "link": "https://vitalik.ca/general/2019/04/16/free_speech.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 03 Apr 2019 00:00:00 +0000", + "title": "On Collusion", + "link": "https://vitalik.ca/general/2019/04/03/collusion.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 01 Apr 2019 00:00:00 +0000", + "title": "[Mirror] Cantor was Wrong: debunking the infinite set hierarchy", + "link": "https://vitalik.ca/general/2019/04/01/cantor.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 05 Dec 2018 00:00:00 +0000", + "title": "A CBC Casper Tutorial", + "link": "https://vitalik.ca/general/2018/12/05/cbc_casper.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 25 Nov 2018 00:00:00 +0000", + "title": "[Mirror] Central Planning as Overfitting", + "link": "https://vitalik.ca/general/2018/11/25/central_planning.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 26 Aug 2018 00:00:00 +0000", + "title": "Layer 1 Should Be Innovative in the Short Term but Less in the Long Term", + "link": "https://vitalik.ca/general/2018/08/26/layer_1.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 07 Aug 2018 00:00:00 +0000", + "title": "A Guide to 99% Fault Tolerant Consensus", + "link": "https://vitalik.ca/general/2018/08/07/99_fault_tolerant.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 21 Jul 2018 00:00:00 +0000", + "title": "STARKs, Part 3: Into the Weeds", + "link": "https://vitalik.ca/general/2018/07/21/starks_part_3.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 20 Apr 2018 00:00:00 +0000", + "title": "On Radical Markets", + "link": "https://vitalik.ca/general/2018/04/20/radical_markets.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 28 Mar 2018 00:00:00 +0000", + "title": "Governance, Part 2: Plutocracy Is Still Bad", + "link": "https://vitalik.ca/general/2018/03/28/plutocracy.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 31 Dec 2017 00:00:00 +0000", + "title": "Proof of Stake FAQ", + "link": "https://vitalik.ca/general/2017/12/31/pos_faq.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 31 Dec 2017 00:00:00 +0000", + "title": "Sharding FAQ", + "link": "https://vitalik.ca/general/2017/12/31/sharding_faq.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 17 Dec 2017 00:00:00 +0000", + "title": "Notes on Blockchain Governance", + "link": "https://vitalik.ca/general/2017/12/17/voting.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 14 Dec 2017 00:00:00 +0000", + "title": "A Quick Gasprice Market Analysis", + "link": "https://vitalik.ca/general/2017/12/14/gas_analysis.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 22 Nov 2017 00:00:00 +0000", + "title": "STARKs, Part II: Thank Goodness It's FRI-day", + "link": "https://vitalik.ca/general/2017/11/22/starks_part_2.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 09 Nov 2017 00:00:00 +0000", + "title": "STARKs, Part I: Proofs with Polynomials", + "link": "https://vitalik.ca/general/2017/11/09/starks_part_1.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 17 Oct 2017 00:00:00 +0000", + "title": "On Medium-of-Exchange Token Valuations", + "link": "https://vitalik.ca/general/2017/10/17/moe.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 14 Sep 2017 00:00:00 +0000", + "title": "A Prehistory of the Ethereum Protocol", + "link": "https://vitalik.ca/general/2017/09/14/prehistory.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 27 Jul 2017 00:00:00 +0000", + "title": "A Note on Metcalfe's Law, Externalities and Ecosystem Splits", + "link": "https://vitalik.ca/general/2017/07/27/metcalfe.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sun, 16 Jul 2017 00:00:00 +0000", + "title": "The Triangle of Harm", + "link": "https://vitalik.ca/general/2017/07/16/triangle_of_harm.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 22 Jun 2017 00:00:00 +0000", + "title": "On Path Independence", + "link": "https://vitalik.ca/general/2017/06/22/marketmakers.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Fri, 09 Jun 2017 00:00:00 +0000", + "title": "Analyzing Token Sale Models", + "link": "https://vitalik.ca/general/2017/06/09/sales.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Mon, 08 May 2017 00:00:00 +0000", + "title": "Engineering Security Through Coordination Problems", + "link": "https://vitalik.ca/general/2017/05/08/coordination_problems.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Tue, 14 Mar 2017 00:00:00 +0000", + "title": "Hard Forks, Soft Forks, Defaults and Coercion", + "link": "https://vitalik.ca/general/2017/03/14/forks_and_markets.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 11 Mar 2017 00:00:00 +0000", + "title": "A Note On Charity Through Marginal Price Discrimination", + "link": "https://vitalik.ca/general/2017/03/11/a_note_on_charity.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Wed, 01 Feb 2017 00:00:00 +0000", + "title": "[Mirror] Zk-SNARKs: Under the Hood", + "link": "https://vitalik.ca/general/2017/02/01/zk_snarks.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 14 Jan 2017 00:00:00 +0000", + "title": "[Mirror] Exploring Elliptic Curve Pairings", + "link": "https://vitalik.ca/general/2017/01/14/exploring_ecp.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 29 Dec 2016 00:00:00 +0000", + "title": "[Mirror] A Proof of Stake Design Philosophy", + "link": "https://vitalik.ca/general/2016/12/29/pos_design.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Thu, 29 Dec 2016 00:00:00 +0000", + "title": "[Mirror] Bir Proof of Stake Tasarım Felsefesi", + "link": "https://vitalik.ca/general/2016/12/29/pos_design_TR.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 10 Dec 2016 00:00:00 +0000", + "title": "[Mirror] Quadratic Arithmetic Programs: from Zero to Hero", + "link": "https://vitalik.ca/general/2016/12/10/qap.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 01 Jan 2000 00:00:00 +0000", + "title": "Über Kollusion", + "link": "https://vitalik.ca/general/2000/01/01/On_Collusion_DE.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 01 Jan 2000 00:00:00 +0000", + "title": "Situazioni di collusione", + "link": "https://vitalik.ca/general/2000/01/01/On_Collusion_IT.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 01 Jan 2000 00:00:00 +0000", + "title": "Zmowa", + "link": "https://vitalik.ca/general/2000/01/01/On_Collusion_Polish.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + }, + { + "pubDate": "Sat, 01 Jan 2000 00:00:00 +0000", + "title": "Na colusão", + "link": "https://vitalik.ca/general/2000/01/01/On_Collusion_Portuguese.html", + "imgSrc": "http://vitalik.ca/images/icon.png", + "source": "Vitalik Buterin's website", + "sourceUrl": "https://vitalik.ca/", + "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" + } + ], + [ + { + "pubDate": "Thu, 06 Nov 2025 00:00:00 GMT", + "title": "Fusaka Mainnet Announcement", + "link": "https://blog.ethereum.org/en/2025/11/06/fusaka-mainnet-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_54231a81643afd63e1e9b43fa472ccc3.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 04 Nov 2025 00:00:00 GMT", + "title": "2 weeks to Devconnect: Everything you need to know", + "link": "https://blog.ethereum.org/en/2025/11/04/devconnect-arg", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_dd74bd795d41c4b14292d9cc8bde8d0e.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 03 Nov 2025 00:00:00 GMT", + "title": "Unveiling ESP's New Grants Program", + "link": "https://blog.ethereum.org/en/2025/11/03/new-esp-grants", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_be2cc88d206ac6f9152bc1443d3adea5.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Oct 2025 00:00:00 GMT", + "title": "Fusaka Update – Transaction Gas Limit Cap arrives with EIP-7825", + "link": "https://blog.ethereum.org/en/2025/10/21/fusaka-gascap-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 15 Oct 2025 00:00:00 GMT", + "title": "Fusaka Update - Information for Blob users", + "link": "https://blog.ethereum.org/en/2025/10/15/fusaka-blob-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 14 Oct 2025 00:00:00 GMT", + "title": "Announcing the 2026 EF Internship", + "link": "https://blog.ethereum.org/en/2025/10/14/internship-2026", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_b0bf33e0c3811ac246a522b38720e892.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 09 Oct 2025 00:00:00 GMT", + "title": "Supporting privacy with new funding mechanisms", + "link": "https://blog.ethereum.org/en/2025/10/09/new-funding-mechanisms", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 08 Oct 2025 00:00:00 GMT", + "title": "The Ethereum Foundation’s Commitment to Privacy", + "link": "https://blog.ethereum.org/en/2025/10/08/privacy-commitment", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d0fb6edaaada33833c2717eeace9e8ac.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 01 Oct 2025 00:00:00 GMT", + "title": "Privacy Cluster Leadership Announcement", + "link": "https://blog.ethereum.org/en/2025/10/01/privacy-cluster-leads", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 01 Oct 2025 00:00:00 GMT", + "title": "Checkpoint #6: Oct 2025", + "link": "https://blog.ethereum.org/en/2025/10/01/checkpoint-6", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9a721d102a66685eba4b944119d345f8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 26 Sep 2025 00:00:00 GMT", + "title": "Fusaka Testnet Announcement", + "link": "https://blog.ethereum.org/en/2025/09/26/fusaka-testnet-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_54231a81643afd63e1e9b43fa472ccc3.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 18 Sep 2025 00:00:00 GMT", + "title": "Announcing the districts of the Ethereum World’s Fair", + "link": "https://blog.ethereum.org/en/2025/09/18/ethereum-worlds-fair", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_4783c1164114fecbdc52556f5a45c6c0.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 15 Sep 2025 00:00:00 GMT", + "title": "Fusaka $2,000,000 Audit Contest!", + "link": "https://blog.ethereum.org/en/2025/09/15/fusaka-audit-content", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 01 Sep 2025 00:00:00 GMT", + "title": "Holešky Testnet Shutdown Announcement", + "link": "https://blog.ethereum.org/en/2025/09/01/holesky-shutdown-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 29 Aug 2025 00:00:00 GMT", + "title": "Protocol Update 003 — Improve UX", + "link": "https://blog.ethereum.org/en/2025/08/29/protocol-update-003", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_270c7c873d5994bd4e47958030e3599c.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 29 Aug 2025 00:00:00 GMT", + "title": "The Ecosystem Support Program's Next Chapter", + "link": "https://blog.ethereum.org/en/2025/08/29/esp-next-chapter", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_aebd967030c7370d366441f018e8109a.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 22 Aug 2025 00:00:00 GMT", + "title": "Protocol Update 002 - Scale Blobs", + "link": "https://blog.ethereum.org/en/2025/08/22/protocol-update-002", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_270c7c873d5994bd4e47958030e3599c.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 20 Aug 2025 00:00:00 GMT", + "title": "Trillion Dollar Security - Phase 2", + "link": "https://blog.ethereum.org/en/2025/08/20/trillion-dollar-sec-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 15 Aug 2025 00:00:00 GMT", + "title": "Join Us: EF Protocol Reddit AMA - August 29th, 2025", + "link": "https://blog.ethereum.org/en/2025/08/15/protocol-ama", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 05 Aug 2025 00:00:00 GMT", + "title": "Protocol Update 001 – Scale L1", + "link": "https://blog.ethereum.org/en/2025/08/05/protocol-update-001", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_270c7c873d5994bd4e47958030e3599c.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 31 Jul 2025 00:00:00 GMT", + "title": "lean Ethereum", + "link": "https://blog.ethereum.org/en/2025/07/31/lean-ethereum", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 30 Jul 2025 00:00:00 GMT", + "title": "Celebrating 10 Years of Ethereum", + "link": "https://blog.ethereum.org/en/2025/07/30/ethereum-10-years", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_1f253fb048a49a040abe24107d34ecca.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 29 Jul 2025 00:00:00 GMT", + "title": "Checkpoint #5: July 2025", + "link": "https://blog.ethereum.org/en/2025/07/29/checkpoint-5", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9a721d102a66685eba4b944119d345f8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 23 Jul 2025 00:00:00 GMT", + "title": "Allocation Update - Q2 2025", + "link": "https://blog.ethereum.org/en/2025/07/23/allocation-q2-25", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Jul 2025 00:00:00 GMT", + "title": "Shipping an L1 zkEVM #1: Realtime Proving", + "link": "https://blog.ethereum.org/en/2025/07/10/realtime-proving", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Jul 2025 00:00:00 GMT", + "title": "The Future of Ecosystem Development at the EF", + "link": "https://blog.ethereum.org/en/2025/07/10/future-of-ecodev", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_73b96d0e0de7964b423e14f0dcbbeda0.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 08 Jul 2025 00:00:00 GMT", + "title": "Partial history expiry announcement", + "link": "https://blog.ethereum.org/en/2025/07/08/partial-history-exp", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 Jun 2025 00:00:00 GMT", + "title": "Checkpoint #4: Berlinterop", + "link": "https://blog.ethereum.org/en/2025/06/19/checkpoint-4", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9a721d102a66685eba4b944119d345f8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 16 Jun 2025 00:00:00 GMT", + "title": "World Experience: Updates from the Next Billion Fellowship", + "link": "https://blog.ethereum.org/en/2025/06/16/world-experience", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c6b75b2e22eea68c595252ddaac259e6.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Jun 2025 00:00:00 GMT", + "title": "Now accepting interns - Join the Ethereum Season of Internships", + "link": "https://blog.ethereum.org/en/2025/06/12/season-of-internships", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_072288247c4c1623c02371824093b401.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 10 Jun 2025 00:00:00 GMT", + "title": "Tickets are live for the Ethereum World’s Fair! And we're launching the Supporter Program", + "link": "https://blog.ethereum.org/en/2025/06/10/devconnect-arg-ticket", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c784def16747c5e7e34bbbb0b92b32e5.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 04 Jun 2025 00:00:00 GMT", + "title": "Ethereum Foundation Treasury Policy", + "link": "https://blog.ethereum.org/en/2025/06/04/ef-treasury-policy", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_73b96d0e0de7964b423e14f0dcbbeda0.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Jun 2025 00:00:00 GMT", + "title": "Announcing the Devconnect ARG Scholars Program", + "link": "https://blog.ethereum.org/en/2025/06/03/devconnect-arg-scholars", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_cdacb108dd9be2e5b893c6449b70999e.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Jun 2025 00:00:00 GMT", + "title": "Checkpoint #3: June 2025", + "link": "https://blog.ethereum.org/en/2025/06/03/checkpoint-3", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9a721d102a66685eba4b944119d345f8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 02 Jun 2025 00:00:00 GMT", + "title": "Announcing Protocol", + "link": "https://blog.ethereum.org/en/2025/06/02/announcing-protocol", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_270c7c873d5994bd4e47958030e3599c.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 14 May 2025 00:00:00 GMT", + "title": "Announcing the Trillion Dollar Security Initiative", + "link": "https://blog.ethereum.org/en/2025/05/14/trillion-dollar-security", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 08 May 2025 00:00:00 GMT", + "title": "Allocation Update - Q1 2025", + "link": "https://blog.ethereum.org/en/2025/05/08/allocation-q1-25", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 07 May 2025 00:00:00 GMT", + "title": "CVE-2025-30147 - The curious case of subgroup check on Besu", + "link": "https://blog.ethereum.org/en/2025/05/07/the-curious-case", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 05 May 2025 00:00:00 GMT", + "title": "Announcing the Ethereum Season of Internships", + "link": "https://blog.ethereum.org/en/2025/05/05/ethereum-season-of-internships", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_03301ebc43d106758a338b0747d7800a.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 30 Apr 2025 00:00:00 GMT", + "title": "Ethereum University Tour", + "link": "https://blog.ethereum.org/en/2025/04/30/uni-tour", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7a3210022720d83b2d2729317036f73c.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 29 Apr 2025 00:00:00 GMT", + "title": "Checkpoint #2: Apr 2025", + "link": "https://blog.ethereum.org/en/2025/04/29/checkpoint-2", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9a721d102a66685eba4b944119d345f8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 28 Apr 2025 00:00:00 GMT", + "title": "The Ethereum Foundation's Next Chapter", + "link": "https://blog.ethereum.org/en/2025/04/28/next-chapter", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_f3cd5fc11a3c2ea772a988cca8cddcf0.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 28 Apr 2025 00:00:00 GMT", + "title": "The Ethereum Foundation’s Vision", + "link": "https://blog.ethereum.org/en/2025/04/28/ef-vision", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d984abf1f8154b4a02f8b742f328b5e9.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 28 Apr 2025 00:00:00 GMT", + "title": "Ethereum Foundation's Management and Board Structure", + "link": "https://blog.ethereum.org/en/2025/04/28/ef-mgmt-board", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_ee4a6b49421ef34d5e67b6a18b9d75f8.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 24 Apr 2025 00:00:00 GMT", + "title": "10 Years of Ethereum", + "link": "https://blog.ethereum.org/en/2025/04/24/ten-years", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7f7079427571384e831a50272ae9f663.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 23 Apr 2025 00:00:00 GMT", + "title": "Pectra Mainnet Announcement", + "link": "https://blog.ethereum.org/en/2025/04/23/pectra-mainnet", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c953ed34b3d2227e1ec03710bbb229b4.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 22 Apr 2025 00:00:00 GMT", + "title": "Destino Devconnect - A local grant round to bring Argentina onchain", + "link": "https://blog.ethereum.org/en/2025/04/22/destino-devconnect", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_bd733bd7c720fdac57db06b2231a1e73.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 17 Apr 2025 00:00:00 GMT", + "title": "Announcing Ethereum Protocol Fellowship Cohort 6", + "link": "https://blog.ethereum.org/en/2025/04/10/epf-6", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_ff7e62e234affe314423eb5a79ac2722.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Apr 2025 00:00:00 GMT", + "title": "Ethereum Protocol Fellowship Cohort 5 Recap", + "link": "https://blog.ethereum.org/en/2025/04/10/epf-5-recap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_e33a63c876555f534b7fa6f0f1f9f244.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 Mar 2025 00:00:00 GMT", + "title": "Checkpoint - March 2025", + "link": "https://blog.ethereum.org/en/2025/03/25/acdcheckpoint-001", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9a721d102a66685eba4b944119d345f8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Mar 2025 00:00:00 GMT", + "title": "Holesky and Hoodi Testnet Updates", + "link": "https://blog.ethereum.org/en/2025/03/18/hoodi-holesky", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_cc1a3eb5cbdab2f05c80f670c7b3f7dd.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 09 Mar 2025 00:00:00 GMT", + "title": "Ethereum Foundation Board of Directors Update", + "link": "https://blog.ethereum.org/en/2025/03/09/board-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 06 Mar 2025 00:00:00 GMT", + "title": "Mekong Deprecation Announcement", + "link": "https://blog.ethereum.org/en/2025/03/06/mekong-devnet", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_b89ad13f2213a21c87b65e93b9219809.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 05 Mar 2025 00:00:00 GMT", + "title": "Sepolia Pectra Incident Update", + "link": "https://blog.ethereum.org/en/2025/03/05/sepolia-pectra-incident", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c953ed34b3d2227e1ec03710bbb229b4.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 05 Mar 2025 00:00:00 GMT", + "title": "Devconnect 2025 - An “Ethereum World’s Fair” in Buenos Aires", + "link": "https://blog.ethereum.org/en/2025/03/05/devconnect-2025", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_6dc369d61337688bbdb4b5f09f8f7d93.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 01 Mar 2025 00:00:00 GMT", + "title": "Welcoming a new EF leadership structure", + "link": "https://blog.ethereum.org/en/2025/03/01/leadership-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_73f00d1811a4989e78ccf52ce67e48d5.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 28 Feb 2025 00:00:00 GMT", + "title": "Audit Results for the Pectra System Contracts", + "link": "https://blog.ethereum.org/en/2025/02/28/pectra-audit-results", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 Feb 2025 00:00:00 GMT", + "title": "A new chapter in the infinite garden", + "link": "https://blog.ethereum.org/en/2025/02/25/aya-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_502502e8304302b4d2f04a8650d849df.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 21 Feb 2025 00:00:00 GMT", + "title": "Pectra Audit Competition Launches on Cantina", + "link": "https://blog.ethereum.org/en/2025/02/21/pectra-audit", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Feb 2025 00:00:00 GMT", + "title": "Stories from Bangkok: Devcon SEA Scholars Program", + "link": "https://blog.ethereum.org/en/2025/02/18/devcon-sea-scholars", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_f36e50850a7215737f0d7fb6f6f9e050.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 14 Feb 2025 00:00:00 GMT", + "title": "Pectra Testnet Announcement", + "link": "https://blog.ethereum.org/en/2025/02/14/pectra-testnet-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c953ed34b3d2227e1ec03710bbb229b4.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 06 Feb 2025 00:00:00 GMT", + "title": "Allocation Update - Q4 2024", + "link": "https://blog.ethereum.org/en/2025/02/06/allocation-q4-24", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 05 Feb 2025 00:00:00 GMT", + "title": "Ethereum Protocol Studies 2025", + "link": "https://blog.ethereum.org/en/2025/02/05/ethereum-protocol-studies", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_4a66107f16c1ab39acb5f9ba560703b3.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 23 Jan 2025 00:00:00 GMT", + "title": "From quarters to cycles: accelerating ethereum.org", + "link": "https://blog.ethereum.org/en/2025/01/23/cycle-1-ethereum-org", + "imgSrc": "https://blog.ethereum.org/images/posts/eth-playground.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 22 Jan 2025 00:00:00 GMT", + "title": "ethereum.org Year in Review", + "link": "https://blog.ethereum.org/en/2025/01/22/2024-on-ethereum-org", + "imgSrc": "https://blog.ethereum.org/images/posts/eth-garden.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Jan 2025 00:00:00 GMT", + "title": "Introducing the 2025 Academic Grants Round", + "link": "https://blog.ethereum.org/en/2025/01/21/academic-round-25", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 17 Jan 2025 00:00:00 GMT", + "title": "Announcing the 2024 Academic Grants Round Recipients", + "link": "https://blog.ethereum.org/en/2025/01/17/academic-grants-recipients", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_98702f8c745cd218cb65074bd3cd1aff.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 10 Dec 2024 00:00:00 GMT", + "title": "Results from the Academic Grants Round 2022", + "link": "https://blog.ethereum.org/en/2024/12/10/academic-grants-22", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7950e4057f95963dbad3f04593c08f98.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 09 Dec 2024 00:00:00 GMT", + "title": "Digital Repatriation", + "link": "https://blog.ethereum.org/en/2024/12/09/digital-repatriation", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_97cc56b40718864546c219ab613a4b41.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 04 Dec 2024 00:00:00 GMT", + "title": "The latest chapter for Ethereum & highlights from Devcon SEA", + "link": "https://blog.ethereum.org/en/2024/12/04/devcon-sea-wrap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_72a7164ea04bf2ed4a68b2259f9d486e.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Dec 2024 00:00:00 GMT", + "title": "Allocation Update - Q3 2024", + "link": "https://blog.ethereum.org/en/2024/12/03/esp-allocation-q324", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 02 Dec 2024 00:00:00 GMT", + "title": "The ETH Rangers Program", + "link": "https://blog.ethereum.org/en/2024/12/02/ethrangers-public-goods", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 26 Nov 2024 00:00:00 GMT", + "title": "Next Billion Fellowship Program Applications Now Open!", + "link": "https://blog.ethereum.org/en/2024/11/26/nb-fellows-cohort-5", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_f68d7e70d0acc001dc59f37851d475a3.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 25 Nov 2024 00:00:00 GMT", + "title": "Ethereum Protocol Attackathon is Live", + "link": "https://blog.ethereum.org/en/2024/11/25/ethereum-protocol-attackathon", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 16 Nov 2024 00:00:00 GMT", + "title": "Announcing the 2025 EF Internship Program!", + "link": "https://blog.ethereum.org/en/2024/11/16/announcing-ef-internship-program", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7577af89001cafc2278c8cde71803445.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 07 Nov 2024 00:00:00 GMT", + "title": "Mekong Testnet Announcement", + "link": "https://blog.ethereum.org/en/2024/11/07/introducing-mekong-testnet", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_814ec8d3fa8c96ba5f861ec8140de475.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 31 Oct 2024 00:00:00 GMT", + "title": "The Devcon schedule is live!", + "link": "https://blog.ethereum.org/en/2024/10/31/devcon-sea-schedule", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7f149ae67e69886d99f7c246d2ceb02d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 25 Oct 2024 00:00:00 GMT", + "title": "Meet the teams at the Devcon Impact Forum", + "link": "https://blog.ethereum.org/en/2024/10/25/devcon-supporters-forum", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_f8e27a882f3613d6f6286ba78cd7b888.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 16 Oct 2024 00:00:00 GMT", + "title": "Ethereum.org 2024 Translatathon recap", + "link": "https://blog.ethereum.org/en/2024/10/16/translatathon-2024-recap", + "imgSrc": "https://blog.ethereum.org/images/posts/2024/10/translatathon-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 11 Oct 2024 00:00:00 GMT", + "title": "EcoDev Research Fellowship - Call for Applications", + "link": "https://blog.ethereum.org/en/2024/10/11/research-fellowship-app", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 01 Oct 2024 00:00:00 GMT", + "title": "Six weeks until Devcon SEA in Bangkok", + "link": "https://blog.ethereum.org/en/2024/10/01/devcon-sea-six-weeks", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_003f5ece7fe0c4d54f8b43be6d78b46f.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 13 Sep 2024 00:00:00 GMT", + "title": "4844 Data Challenge: Insights and Winners", + "link": "https://blog.ethereum.org/en/2024/09/13/4844-data-challenge", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_84404ba6ed463992c8eaee78610b3264.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 30 Aug 2024 00:00:00 GMT", + "title": "Allocation Update - Q2 2024", + "link": "https://blog.ethereum.org/en/2024/08/30/esp-allocation-q224", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 14 Aug 2024 00:00:00 GMT", + "title": "Data Collection Grants Round", + "link": "https://blog.ethereum.org/en/2024/08/14/data-collection-round", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_083dd420efc2a08208be17556a59f4f3.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 25 Jul 2024 00:00:00 GMT", + "title": "The ethereum.org Translatathon is back", + "link": "https://blog.ethereum.org/en/2024/07/25/translatathon", + "imgSrc": "https://blog.ethereum.org/images/posts/2024/07/translatathon-hero-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 09 Jul 2024 00:00:00 GMT", + "title": "Devcon 2024 updates - Secure your tickets, apply to speak, and get involved!", + "link": "https://blog.ethereum.org/en/2024/07/09/devcon-7-tickets", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d054cf1cc369f682edea78aac61f0fed.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 08 Jul 2024 00:00:00 GMT", + "title": "Ethereum Protocol Attackathon in Collaboration with Immunefi", + "link": "https://blog.ethereum.org/en/2024/07/08/attackathon", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5867a9b3b9d8e134ab850a8c709dd7f9.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Jul 2024 00:00:00 GMT", + "title": "blog.ethereum.org mailing list incident", + "link": "https://blog.ethereum.org/en/2024/07/02/blog-incident", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 Jun 2024 00:00:00 GMT", + "title": "ZK Grants Round Announcement", + "link": "https://blog.ethereum.org/en/2024/06/25/zk-grants-round-announce", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_84404ba6ed463992c8eaee78610b3264.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 24 Jun 2024 00:00:00 GMT", + "title": "Meet Cohort 4 of the Next Billion Fellows!", + "link": "https://blog.ethereum.org/en/2024/06/24/next-billion-cohort4", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_f68d7e70d0acc001dc59f37851d475a3.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 14 Jun 2024 00:00:00 GMT", + "title": "Launching a Quadratic Funding round for SEA communities", + "link": "https://blog.ethereum.org/en/2024/06/14/devcon7-qf-sea", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_2b9637065b450ee394c4db43ae20f9dc.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 11 Jun 2024 00:00:00 GMT", + "title": "Ticket launch details, on-chain raffle-auction, and programming tracks revealed", + "link": "https://blog.ethereum.org/en/2024/06/11/devcon7-ticket-detail", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_66b793d3de632e48a37eaa5a027a26ce.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 07 Jun 2024 00:00:00 GMT", + "title": "Devcon Scholars Program Returns for Devcon SEA!", + "link": "https://blog.ethereum.org/en/2024/06/07/devcon7-scholars", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_46c6876bb799d0812d4ed86203efc89d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 29 May 2024 00:00:00 GMT", + "title": "Announcing the Devcon SEA Supporter Program & Impact Teams", + "link": "https://blog.ethereum.org/en/2024/05/29/devcon7-supporters-impact", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_b4a232b4cb6c46319d8de83733745c81.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 22 May 2024 00:00:00 GMT", + "title": "Nyota Interop Recap ✨", + "link": "https://blog.ethereum.org/en/2024/05/22/nyota-interop-recap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7fed9f34432047c0ff0ffd60907593c5.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 14 May 2024 00:00:00 GMT", + "title": "Allocation Update - Q1 2024", + "link": "https://blog.ethereum.org/en/2024/05/14/esp-allocation-q124", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 13 May 2024 00:00:00 GMT", + "title": "Announcing the Ethereum Protocol Fellowship Cohort 5", + "link": "https://blog.ethereum.org/en/2024/05/13/epf-5-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d97f78dc85b9eea12b8ca784a5313105.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 22 Apr 2024 00:00:00 GMT", + "title": "Ethereum Protocol Fellowship Cohort 4 Recap", + "link": "https://blog.ethereum.org/en/2024/04/22/epf-4-recap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_ef8a5602779302657f773c9b6715e749.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 21 Mar 2024 00:00:00 GMT", + "title": "Sepolia Incident", + "link": "https://blog.ethereum.org/en/2024/03/21/sepolia-incident", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 14 Mar 2024 00:00:00 GMT", + "title": "Announcing the Devcon SEA venue!", + "link": "https://blog.ethereum.org/en/2024/03/14/devcon-sea-venue", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_46c6876bb799d0812d4ed86203efc89d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 29 Feb 2024 00:00:00 GMT", + "title": "Devconnect Scholars Program - Ethereum Stories from Istanbul and Beyond", + "link": "https://blog.ethereum.org/en/2024/02/29/scholars-stories", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_bc451adb280fe2de40c39e1246ddd6db.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 27 Feb 2024 00:00:00 GMT", + "title": "Dencun Mainnet Announcement", + "link": "https://blog.ethereum.org/en/2024/02/27/dencun-mainnet-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5f7b49ceccd26dd121224fe4688f175a.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 21 Feb 2024 00:00:00 GMT", + "title": "ZK Grants Round", + "link": "https://blog.ethereum.org/en/2024/02/21/zk-grants-round", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5f9de0f756d8e3961162ca8306c36cb6.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 20 Feb 2024 00:00:00 GMT", + "title": "Allocation Update - Q4 2023", + "link": "https://blog.ethereum.org/en/2024/02/20/esp-allocation-q423", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 07 Feb 2024 00:00:00 GMT", + "title": "Introducing the EPF Study Group", + "link": "https://blog.ethereum.org/en/2024/02/07/epf-study-group", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d439352ab17d519d44cef02091cbb661.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 31 Jan 2024 00:00:00 GMT", + "title": "Ethereum.org year in review", + "link": "https://blog.ethereum.org/en/2024/01/31/2023-on-ethereum-org", + "imgSrc": "https://blog.ethereum.org/images/posts/eth-garden.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 24 Jan 2024 00:00:00 GMT", + "title": "Sepolia & Holesky Dencun Announcement", + "link": "https://blog.ethereum.org/en/2024/01/24/sepolia-holesky-dencun", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5f7b49ceccd26dd121224fe4688f175a.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 23 Jan 2024 00:00:00 GMT", + "title": "Wrapping up the KZG Ceremony", + "link": "https://blog.ethereum.org/en/2024/01/23/kzg-wrap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9dce5b213b60a7992a89938f922f535f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 10 Jan 2024 00:00:00 GMT", + "title": "Goerli Dencun Announcement", + "link": "https://blog.ethereum.org/en/2024/01/10/goerli-dencun-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5f7b49ceccd26dd121224fe4688f175a.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 03 Jan 2024 00:00:00 GMT", + "title": "Southeast Asia welcomes Devcon 7!", + "link": "https://blog.ethereum.org/en/2024/01/03/devcon-sea-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7429aafd8906f8f65433275ffdaa8d55.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 19 Dec 2023 00:00:00 GMT", + "title": "Allocation Update - Q3 2023", + "link": "https://blog.ethereum.org/en/2023/12/19/esp-allocation-q323", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 06 Dec 2023 00:00:00 GMT", + "title": "Run a Node Grants Round Grantee Announcement", + "link": "https://blog.ethereum.org/en/2023/12/06/run-a-node-grantee", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 30 Nov 2023 00:00:00 GMT", + "title": "Goerli Long Term Support Update", + "link": "https://blog.ethereum.org/en/2023/11/30/goerli-lts-update", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fdbf8db846ba5c19502dd8b675c00ccb.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Nov 2023 00:00:00 GMT", + "title": "Devconnect Istanbul 2023 - A celebration of progress and the Ethereum community", + "link": "https://blog.ethereum.org/en/2023/12/04/devconnect-ist-wrap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_0ecdfe00edfb60b6c52af4cbdd81e461.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Nov 2023 00:00:00 GMT", + "title": "Application Open for Next Billion Fellowship Cohort 4", + "link": "https://blog.ethereum.org/en/2023/11/28/nxbn-cohort4-apply", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d3cbbed2f00bc01ace595256f28e1024.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 15 Nov 2023 00:00:00 GMT", + "title": "Beyond Borders - Unveiling Potential of Blockchain in a Crisis", + "link": "https://blog.ethereum.org/en/2023/11/15/beyond-borders-nb", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_bc451adb280fe2de40c39e1246ddd6db.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 03 Nov 2023 00:00:00 GMT", + "title": "Update 2 - Preparing for Devconnect Events", + "link": "https://blog.ethereum.org/en/2023/11/03/devconnect-ist-update-2", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_08ada426eddd50116c87f7c55367029b.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 02 Nov 2023 00:00:00 GMT", + "title": "Secured #6 - Writing Robust C - Best Practices for Finding and Preventing Vulnerabilities", + "link": "https://blog.ethereum.org/en/2023/11/02/writing-robust-c", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 23 Oct 2023 00:00:00 GMT", + "title": "Update - Advisory on recent events and potential travel considerations", + "link": "https://blog.ethereum.org/en/2023/10/23/devconnect-ist-advisory-update", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_b75d00ffd9e87da416556eb3ae0d095f.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 20 Sep 2023 00:00:00 GMT", + "title": "Ethereum.org Translatathon Recap", + "link": "https://blog.ethereum.org/en/2023/09/20/ethereum-org-translatathon", + "imgSrc": "https://blog.ethereum.org/images/posts/translatathon-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 18 Sep 2023 00:00:00 GMT", + "title": "Devconnect Istanbul Updates!", + "link": "https://blog.ethereum.org/en/2023/09/18/devconnect-ist-updates", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_b75d00ffd9e87da416556eb3ae0d095f.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 12 Sep 2023 00:00:00 GMT", + "title": "Geth v1.13.0", + "link": "https://blog.ethereum.org/en/2023/09/12/geth-v1-13-0", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 29 Aug 2023 00:00:00 GMT", + "title": "Ethereum Execution Layer Specification", + "link": "https://blog.ethereum.org/en/2023/08/29/eel-spec", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_df8b1c7d4bb7b7fafb10ce70cefced02.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 15 Aug 2023 00:00:00 GMT", + "title": "Allocation Update: Q2 2023", + "link": "https://blog.ethereum.org/en/2023/08/15/allocation-update-q2-23", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 08 Aug 2023 00:00:00 GMT", + "title": "Devconnect Istanbul Cowork Tickets Are Live!", + "link": "https://blog.ethereum.org/en/2023/08/08/devconnect-ist-cowork-tickets", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_af9f0f6bf59a8d67f6a8eef94f974113.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 07 Aug 2023 00:00:00 GMT", + "title": "The Human Stories of Ethereum - Meet the Next Billion Fellows Cohort 3", + "link": "https://blog.ethereum.org/en/2023/08/07/nb-fellows-cohort-3", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_bc451adb280fe2de40c39e1246ddd6db.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 02 Aug 2023 00:00:00 GMT", + "title": "KZG Ceremony Special Contributions", + "link": "https://blog.ethereum.org/en/2023/08/02/kzg-special-contributions", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_b8f57609d139ce61f1c708e50f6d4809.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 29 Jun 2023 00:00:00 GMT", + "title": "Announcing The Road To Devcon Grants", + "link": "https://blog.ethereum.org/en/2023/06/29/road-to-devcon7-grants", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_26ffe228bf48549e6c75df1a0cb26836.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 28 Jun 2023 00:00:00 GMT", + "title": "Academic Grants Round 2023 Announcement", + "link": "https://blog.ethereum.org/en/2023/06/28/academic-grants-round-23", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_bf942aa10b05ae61cf7db99dca5c5470.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 26 Jun 2023 00:00:00 GMT", + "title": "Announcing The Devconnect Istanbul Scholars Program", + "link": "https://blog.ethereum.org/en/2023/06/26/devconnect-instanbul-scholars", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_37a3978180f54599ab81a0abca3a3002.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 Jun 2023 00:00:00 GMT", + "title": "Allocation Update: Q1 2023", + "link": "https://blog.ethereum.org/en/2023/06/15/allocation-update-q1-23", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 01 Jun 2023 00:00:00 GMT", + "title": "Ethereum Protocol Fellowship - Fourth Cohort Applications Are Open!", + "link": "https://blog.ethereum.org/en/2023/06/01/ethereum-protocol-fellowship-fourth-apps-open", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_528af259f560c1e462768d8662448ebf.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 10 May 2023 00:00:00 GMT", + "title": "Ethereum Protocol Fellowship: Third Cohort Recap", + "link": "https://blog.ethereum.org/en/2023/05/10/ethereum-protocol-fellowship-third-recap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_80ba0aa49f5a37026942c45ea9f30e96.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 03 May 2023 00:00:00 GMT", + "title": "Secured #5: Public Vulnerability Disclosures Update", + "link": "https://blog.ethereum.org/en/2023/05/03/secured-5-disclosures-update", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_630d77544672a1e0df792c0d71489bd6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 01 May 2023 00:00:00 GMT", + "title": "Scouting for the Future: Technology and the Scouting Movement", + "link": "https://blog.ethereum.org/en/2023/05/01/scouting-future-movement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_bc451adb280fe2de40c39e1246ddd6db.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 20 Apr 2023 00:00:00 GMT", + "title": "Devconnect is back! See you this year in Istanbul.", + "link": "https://blog.ethereum.org/en/2023/04/20/announcing-devconnect-ist", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_00b0f0ca81303aaf837269d14a01dbd4.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Mar 2023 00:00:00 GMT", + "title": "Mainnet Shapella Announcement", + "link": "https://blog.ethereum.org/en/2023/03/28/shapella-mainnet-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5fc486ebf659fc2e64c38f805468f54c.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 16 Mar 2023 00:00:00 GMT", + "title": "Next Billion Fellowship Cohort 3 - Call for applications", + "link": "https://blog.ethereum.org/en/2023/03/16/fellowship-cohort-3-applications", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_bc451adb280fe2de40c39e1246ddd6db.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 08 Mar 2023 00:00:00 GMT", + "title": "Goerli Shapella Announcement", + "link": "https://blog.ethereum.org/en/2023/03/08/goerli-shapella-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c721600b9f9448a141574b76a38159e6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Feb 2023 00:00:00 GMT", + "title": "Announcing Devcon 7!", + "link": "https://blog.ethereum.org/en/2023/02/28/devcon-7-update", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5c48708771e113e99244cbfb722992e6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 22 Feb 2023 00:00:00 GMT", + "title": "Allocation Update: Q4 2022", + "link": "https://blog.ethereum.org/en/2023/02/22/allocation-update-q4-22", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Feb 2023 00:00:00 GMT", + "title": "Sepolia Shapella Announcement", + "link": "https://blog.ethereum.org/en/2023/02/21/sepolia-shapella-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_c721600b9f9448a141574b76a38159e6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 10 Feb 2023 00:00:00 GMT", + "title": "Finalized no. 38", + "link": "https://blog.ethereum.org/en/2023/02/10/finalized-no-38", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 09 Feb 2023 00:00:00 GMT", + "title": "Layer 2 Community Grants Winners", + "link": "https://blog.ethereum.org/en/2023/02/14/layer-2-grants-roundup", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_6c9103b50cbac863910628d8a4f324d7.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 07 Feb 2023 00:00:00 GMT", + "title": "Edelweiss Interop Recap", + "link": "https://blog.ethereum.org/en/2023/02/07/edelweiss-interop-recap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_3e0c90e6d53db5b5bafaa4f292ecfeca.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 06 Feb 2023 00:00:00 GMT", + "title": "The potential to empower disenfranchised communities in Latin America using Ethereum", + "link": "https://blog.ethereum.org/en/2023/02/06/empower-latam-ethereum-fellows", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_00d96900c0a75717ad2208cde2db9c3d.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 03 Feb 2023 00:00:00 GMT", + "title": "Grantee Roundup - Q1 2023", + "link": "https://blog.ethereum.org/en/2023/02/03/esp-grantee-roundout-q1-23", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_5314593dc47abbd6b60869473588681f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 18 Jan 2023 00:00:00 GMT", + "title": "Looking back: 2022 on ethereum.org", + "link": "https://blog.ethereum.org/en/2023/01/18/2022-on-ethereum-org", + "imgSrc": "https://blog.ethereum.org/images/posts/ethereum-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 29 Dec 2022 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Roundup", + "link": "https://blog.ethereum.org/en/2022/12/29/supported-teams-roundup-22", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_843f550fb00a32fd6183815b56f14d44.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 Dec 2022 00:00:00 GMT", + "title": "KZG Ceremony Grant Round", + "link": "https://blog.ethereum.org/en/2022/12/15/kzg-ceremony-grants-round", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_7d22bc5d7be9c0d5d8f50161734559ae.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 07 Dec 2022 00:00:00 GMT", + "title": "Allocation Update Q3 2022", + "link": "https://blog.ethereum.org/en/2022/12/07/esp-allocation-q3-22", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_de9a88166698be2e43a3c33e8a69c0a7.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 05 Dec 2022 00:00:00 GMT", + "title": "Merge Data Challenge Results", + "link": "https://blog.ethereum.org/en/2022/12/05/merge-data-challenge-results", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d8ffa747630149287cc8483996546a1b.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 30 Nov 2022 00:00:00 GMT", + "title": "Ropsten Shutdown Announcement", + "link": "https://blog.ethereum.org/en/2022/11/30/ropsten-shutdown-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_6a70f6f5faa1e4feaf1131d454a369c1.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 17 Nov 2022 00:00:00 GMT", + "title": "Devcon VI Recap, Resources & Wrap-Up!", + "link": "https://blog.ethereum.org/en/2022/11/17/devcon-vi-wrap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_d0c1b4c0850a119c5fcfb8cf07b96e51.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 07 Nov 2022 00:00:00 GMT", + "title": "Devcon VI Scholars: Growing the Infinite Garden", + "link": "https://blog.ethereum.org/en/2022/11/07/devcon-vi-scholars-wrapup", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_9034eb41af870c792a4818e38eb745a2.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 10 Oct 2022 00:00:00 GMT", + "title": "Announcing the EF Fellowship Program, Cohort #2", + "link": "https://blog.ethereum.org/en/2022/10/10/ef-fellowship-cohort-2", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_30943e71b6774aaaab174d89a80b9664.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 10 Oct 2022 00:00:00 GMT", + "title": "Announcing Supporters & Impact Booths", + "link": "https://blog.ethereum.org/en/2022/10/10/devcon-impact-supporters", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_0c64bf4c9178e2cb9b59fc1e3da7d40f.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 04 Oct 2022 00:00:00 GMT", + "title": "The Devcon VI Manual", + "link": "https://blog.ethereum.org/en/2022/10/04/devcon-manual", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_85cf7b2dc452633cb387c2c35b94420b.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 09 Sep 2022 00:00:00 GMT", + "title": "Kiln Shutdown Announcement", + "link": "https://blog.ethereum.org/en/2022/09/09/kiln-shutdown", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_8d7ea1c612b90c3235dd54044d541b6a.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 07 Sep 2022 00:00:00 GMT", + "title": "Allocation Update: Q1 and Q2 2022", + "link": "https://blog.ethereum.org/en/2022/09/07/esp-q1-q2-allocation-update", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 01 Sep 2022 00:00:00 GMT", + "title": "Ethereum Protocol Fellowship: The Third Cohort", + "link": "https://blog.ethereum.org/en/2022/09/01/ethereum-protocol-fellowship-third", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_eee89d27faf03f0be7d1724c13c5d7dc.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 31 Aug 2022 00:00:00 GMT", + "title": "Translating the Ethereum Foundation blog", + "link": "https://blog.ethereum.org/en/2022/08/31/blog-internationalization", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fc8f505659849ac7e21c75d47f833bbe.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 26 Aug 2022 00:00:00 GMT", + "title": "Finalized no. 37", + "link": "https://blog.ethereum.org/en/2022/08/26/finalized-no-37", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 24 Aug 2022 00:00:00 GMT", + "title": "Mainnet Merge Announcement", + "link": "https://blog.ethereum.org/en/2022/08/24/mainnet-merge-announcement", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_fc82062a814fd40a66c7d03a522da205.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 12 Aug 2022 00:00:00 GMT", + "title": "Finalized no. 36", + "link": "https://blog.ethereum.org/en/2022/08/12/finalized-no-36", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 03 Aug 2022 00:00:00 GMT", + "title": "Sepolia Post-Merge Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2022/08/03/sepolia-post-merge-upgrade", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_8a7434faa592c55e7a7bdface3957a88.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 29 Jul 2022 00:00:00 GMT", + "title": "Academic Grants Round grantee announcement", + "link": "https://blog.ethereum.org/en/2022/07/29/academic-grants-grantee-announce", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_bf942aa10b05ae61cf7db99dca5c5470.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 27 Jul 2022 00:00:00 GMT", + "title": "Goerli/Prater Merge Announcement", + "link": "https://blog.ethereum.org/en/2022/07/27/goerli-prater-merge-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_ac3c2a52228601912d557578f3d1aa0a.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 20 Jul 2022 00:00:00 GMT", + "title": "Devcon Scholars Returns & Announcing Devcon Week!", + "link": "https://blog.ethereum.org/en/2022/07/20/devcon-scholars-returns-22", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_9094f3bdb61991f03619c9d6e3ba7af6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 13 Jul 2022 00:00:00 GMT", + "title": "DEVCON VI: TICKET SALES BEGIN & MORE!", + "link": "https://blog.ethereum.org/en/2022/07/13/devcon-vi-tickets", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_ed930bc0e14d0e489beb16e2c978141d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 30 Jun 2022 00:00:00 GMT", + "title": "Sepolia Merge Announcement", + "link": "https://blog.ethereum.org/en/2022/06/30/sepolia-merge-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_f145c876a6e0a4d269f75913dc169507.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Jun 2022 00:00:00 GMT", + "title": "Devcon VI: First Tickets & FINAL WEEK of Speaker Applications", + "link": "https://blog.ethereum.org/en/2022/06/28/devcon-vi-auction-raffle-speaker", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_581cd60c083fdde9e041f893e70e260f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Jun 2022 00:00:00 GMT", + "title": "Ropsten, Rinkeby & Kiln Deprecation Announcement", + "link": "https://blog.ethereum.org/en/2022/06/21/testnet-deprecation", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_8d7ea1c612b90c3235dd54044d541b6a.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Jun 2022 00:00:00 GMT", + "title": "Fellowship Program: Cohort #2 Applications Open & Cohort #1 Roundup", + "link": "https://blog.ethereum.org/en/2022/06/21/fellowship-cohort-2-applications-roundup", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_c94877685be7e6cba035ca82681ede7f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 16 Jun 2022 00:00:00 GMT", + "title": "Gray Glacier Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2022/06/16/gray-glacier-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_24ff43ef1c52978b2a2e011bb53cfd21.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 07 Jun 2022 00:00:00 GMT", + "title": "Spotlight on LatAm: Identity solutions for Govtech", + "link": "https://blog.ethereum.org/en/2022/06/07/spotlight-on-latam-identity", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_c94877685be7e6cba035ca82681ede7f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 06 Jun 2022 00:00:00 GMT", + "title": "DEVCON VI: Applications Online, Participation Details Inside", + "link": "https://blog.ethereum.org/en/2022/06/06/devcon-vi-details", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_581cd60c083fdde9e041f893e70e260f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 03 Jun 2022 00:00:00 GMT", + "title": "Ropsten TTD Announcement", + "link": "https://blog.ethereum.org/en/2022/06/03/ropsten-merge-ttd", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_ae4fdccde72988ce82e722f47913acb3.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 01 Jun 2022 00:00:00 GMT", + "title": "Grantee Roundup - May 2022", + "link": "https://blog.ethereum.org/en/2022/06/01/may-22-grantee-roundup", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 May 2022 00:00:00 GMT", + "title": "Ropsten Merge Announcement", + "link": "https://blog.ethereum.org/en/2022/05/30/ropsten-merge-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_7edef98ba154912a7bb4f57c2dd74bc8.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 May 2022 00:00:00 GMT", + "title": "Wrapping up Devconnect, looking ahead!", + "link": "https://blog.ethereum.org/en/2022/05/30/devconnect-wrap", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_aa8a920fa8d267bc4e47d3024fa01903.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 May 2022 00:00:00 GMT", + "title": "Finalized no. 35", + "link": "https://blog.ethereum.org/en/2022/05/19/finalized-no-35", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 16 May 2022 00:00:00 GMT", + "title": "Secured #4: Bug Bounty Rewards now up to $250,000 USD", + "link": "https://blog.ethereum.org/en/2022/05/16/secured-no-4", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_630d77544672a1e0df792c0d71489bd6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 18 Apr 2022 00:00:00 GMT", + "title": "Ethereum Foundation Report", + "link": "https://blog.ethereum.org/en/2022/04/18/ef-report-april-2022", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_3cca8441964ecec58d88165b471b8331.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 14 Apr 2022 00:00:00 GMT", + "title": "Secured #3: Security Teams", + "link": "https://blog.ethereum.org/en/2022/04/14/secured-no-3", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_630d77544672a1e0df792c0d71489bd6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 23 Mar 2022 00:00:00 GMT", + "title": "Finalized no. 34", + "link": "https://blog.ethereum.org/en/2022/03/23/finalized-no-34", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 14 Mar 2022 00:00:00 GMT", + "title": "Announcing the Kiln Merge Testnet", + "link": "https://blog.ethereum.org/en/2022/03/14/kiln-merge-testnet", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_208a21257acb552128b7b6d0f5277d58.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 09 Mar 2022 00:00:00 GMT", + "title": "Secured #2: Public Vulnerability Disclosures", + "link": "https://blog.ethereum.org/en/2022/03/09/secured-no-2", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_630d77544672a1e0df792c0d71489bd6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 01 Mar 2022 00:00:00 GMT", + "title": "Announcing Grants Round for Academic Research", + "link": "https://blog.ethereum.org/en/2022/03/01/academic-grants-round", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_bf942aa10b05ae61cf7db99dca5c5470.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 24 Feb 2022 00:00:00 GMT", + "title": "Grantee Roundup: January 2022 - Japan Local Grants Edition!", + "link": "https://blog.ethereum.org/en/2022/02/24/japan-local-grants-round", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 18 Feb 2022 00:00:00 GMT", + "title": "Devcon: Hacia Colombia en 2022 [Redux]", + "link": "https://blog.ethereum.org/en/2022/02/18/colombia-in-2022-redux", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_2b32fe55f8984608f37d72635a3f8721.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 15 Feb 2022 00:00:00 GMT", + "title": "Allocation Update: Q3 and Q4, 2021", + "link": "https://blog.ethereum.org/en/2022/02/15/esp-q3-q4-allocation-update", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 01 Feb 2022 00:00:00 GMT", + "title": "Devconnect: 18-25 April 2022 in Amsterdam", + "link": "https://blog.ethereum.org/en/2022/02/01/devconnect-dates-and-details", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_83966632df3abe4e7f3b3bac6f3aabc9.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 31 Jan 2022 00:00:00 GMT", + "title": "Finalized no. 33", + "link": "https://blog.ethereum.org/en/2022/01/31/finalized-no-33", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 31 Jan 2022 00:00:00 GMT", + "title": "Grantee Roundup: December 2021", + "link": "https://blog.ethereum.org/en/2022/01/31/esp-roundup-december-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 24 Jan 2022 00:00:00 GMT", + "title": "The great renaming: what happened to Eth2?", + "link": "https://blog.ethereum.org/en/2022/01/24/the-great-eth2-renaming", + "imgSrc": "https://blog.ethereum.org/images/posts/ethereum-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 16 Jan 2022 00:00:00 GMT", + "title": "Announcing the KZG Ceremony", + "link": "https://blog.ethereum.org/en/2023/01/16/announcing-kzg-ceremony", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_81534446e4a8d0f543f70f95f245700f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 22 Dec 2021 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Roundup", + "link": "https://blog.ethereum.org/en/2021/12/22/ef-supported-teams-research-and-development-update-2021-pt-3", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-lights-edit.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 20 Dec 2021 00:00:00 GMT", + "title": "Announcing the Kintsugi Merge Testnet", + "link": "https://blog.ethereum.org/en/2021/12/20/kintsugi-merge-testnet", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_199e1f8087c60cd5187bc4bbb47d8396.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 13 Dec 2021 00:00:00 GMT", + "title": "Announcing the Client Incentive Program", + "link": "https://blog.ethereum.org/en/2021/12/13/client-incentive-program", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_85feb744f451f63fe2ce9b39a012fbdd.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 13 Dec 2021 00:00:00 GMT", + "title": "An update on Devcon 6, and something new...", + "link": "https://blog.ethereum.org/en/2021/12/13/announcing-devconnect", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_0d997da374443c74f965f864a7ed9998.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 07 Dec 2021 00:00:00 GMT", + "title": "Spotlight on Kenya: Microinsurance for Every Farmer", + "link": "https://blog.ethereum.org/en/2021/12/07/fellows-spotlight-on-kenya", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_c94877685be7e6cba035ca82681ede7f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 02 Dec 2021 00:00:00 GMT", + "title": "Verkle tree structure", + "link": "https://blog.ethereum.org/en/2021/12/02/verkle-tree-structure", + "imgSrc": "https://blog.ethereum.org/images/posts/r%26d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 29 Nov 2021 00:00:00 GMT", + "title": "How The Merge Impacts Ethereum’s Application Layer", + "link": "https://blog.ethereum.org/en/2021/11/29/how-the-merge-impacts-app-layer", + "imgSrc": "https://blog.ethereum.org/images/posts/r%26d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 24 Nov 2021 00:00:00 GMT", + "title": "Update on the partnership between EF and UNICEF", + "link": "https://blog.ethereum.org/en/2021/11/24/ef-unicef-update", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_85feb744f451f63fe2ce9b39a012fbdd.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 22 Nov 2021 00:00:00 GMT", + "title": "Finalized no. 32", + "link": "https://blog.ethereum.org/en/2021/11/22/finalized-no-32", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 16 Nov 2021 00:00:00 GMT", + "title": "Announcing Grants for Advocacy Non-Profits", + "link": "https://blog.ethereum.org/en/2021/11/16/advocacy-grants", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_85feb744f451f63fe2ce9b39a012fbdd.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 10 Nov 2021 00:00:00 GMT", + "title": "Arrow Glacier Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2021/11/10/arrow-glacier-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_1c575fc7a087559b3f7476c86f1b8f6f.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 04 Nov 2021 00:00:00 GMT", + "title": "Allocation Update: Q2 2021", + "link": "https://blog.ethereum.org/en/2021/11/04/esp-allocation-update-q2-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 03 Nov 2021 00:00:00 GMT", + "title": "Announcing Devcon Archive V2", + "link": "https://blog.ethereum.org/en/2021/11/03/devcon-archive-v2", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_28fc1d8000e417fa3ae5e8492419bbc6.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Nov 2021 00:00:00 GMT", + "title": "Finalized no. 31", + "link": "https://blog.ethereum.org/en/2021/11/02/finalized-no-31", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 22 Oct 2021 00:00:00 GMT", + "title": "Grantee Roundup: September 2021", + "link": "https://blog.ethereum.org/en/2021/10/22/esp-grantee-roundup-sep-21", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 19 Oct 2021 00:00:00 GMT", + "title": "Finalized no. 30", + "link": "https://blog.ethereum.org/en/2021/10/19/finalized-no-30", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 15 Oct 2021 00:00:00 GMT", + "title": "Amphora: A Major Merge Milestone", + "link": "https://blog.ethereum.org/en/2021/10/15/amphora-merge-milestone", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_e930da14c684ed98ea0c81eb83d6e5b7.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 05 Oct 2021 00:00:00 GMT", + "title": "Altair Mainnet Announcement", + "link": "https://blog.ethereum.org/en/2021/10/05/altair-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/r%26d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 04 Oct 2021 00:00:00 GMT", + "title": "Ethereum.org Translation Program: Milestones and Updates", + "link": "https://blog.ethereum.org/en/2021/10/04/translation-program-update", + "imgSrc": "https://blog.ethereum.org/images/posts/ethereum-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Sep 2021 00:00:00 GMT", + "title": "Finalized no. 29", + "link": "https://blog.ethereum.org/en/2021/09/28/finalized-no-29", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 22 Sep 2021 00:00:00 GMT", + "title": "Grantee Roundup: August 2021", + "link": "https://blog.ethereum.org/en/2021/09/22/esp-grantee-roundup-aug-21", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 09 Sep 2021 00:00:00 GMT", + "title": "Secured no. 1", + "link": "https://blog.ethereum.org/en/2021/09/09/secured-no-1", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_630d77544672a1e0df792c0d71489bd6.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 06 Sep 2021 00:00:00 GMT", + "title": "Core Developer Apprenticeship Program: The Second Cohort", + "link": "https://blog.ethereum.org/en/2021/09/06/core-dev-apprenticeship-second-cohort", + "imgSrc": "https://blog.ethereum.org/images/posts/r%26d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 25 Aug 2021 00:00:00 GMT", + "title": "Finalized no. 28", + "link": "https://blog.ethereum.org/en/2021/08/25/finalized-no-28", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 24 Aug 2021 00:00:00 GMT", + "title": "Building Together: Execution-Layer Client Ecosystem Fundraise", + "link": "https://blog.ethereum.org/en/2021/08/24/building-together", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_85feb744f451f63fe2ce9b39a012fbdd.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Aug 2021 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Roundup", + "link": "https://blog.ethereum.org/en/2021/08/12/ef-supported-teams-research-and-development-update-2021-pt-2", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-lights-edit.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 06 Aug 2021 00:00:00 GMT", + "title": "Grantee Roundup: July 2021", + "link": "https://blog.ethereum.org/en/2021/08/06/esp-grantee-roundup-july-21", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 26 Jul 2021 00:00:00 GMT", + "title": "Finalized no. 27", + "link": "https://blog.ethereum.org/en/2021/07/26/finalized-no-27", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 Jul 2021 00:00:00 GMT", + "title": "Road to Devcon Meetup and Event Grants", + "link": "https://blog.ethereum.org/en/2021/07/15/r2d-meetup-and-event-grants", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_9921db015e0d1e113ce44c717ea1b092.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 Jul 2021 00:00:00 GMT", + "title": "London Mainnet Announcement", + "link": "https://blog.ethereum.org/en/2021/07/15/london-mainnet-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_78689668e1876c0ff3fc3f0eb1d1206b.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 01 Jul 2021 00:00:00 GMT", + "title": "Allocation Update: Q1 2021", + "link": "https://blog.ethereum.org/en/2021/07/01/esp-allocation-update-q1-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 18 Jun 2021 00:00:00 GMT", + "title": "London Testnets Announcement", + "link": "https://blog.ethereum.org/en/2021/06/18/london-testnets-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_dc8a2520f38632471825db8919ecad7a.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 02 Jun 2021 00:00:00 GMT", + "title": "Grantee Roundup: May 2021", + "link": "https://blog.ethereum.org/en/2021/06/02/esp-grantee-roundup-may-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 May 2021 00:00:00 GMT", + "title": "Finalized no. 26", + "link": "https://blog.ethereum.org/en/2021/05/25/finalized-no-26", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 19 May 2021 00:00:00 GMT", + "title": "Quests along the Road to Devcon", + "link": "https://blog.ethereum.org/en/2021/05/19/quests-along-the-road", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_5165d4bf3578a20d919b947ca8a12aad.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 May 2021 00:00:00 GMT", + "title": "Dodging a bullet: Ethereum State Problems", + "link": "https://blog.ethereum.org/en/2021/05/18/eth-state-problems", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 May 2021 00:00:00 GMT", + "title": "Ethereum's energy usage will soon decrease by ~99.95%", + "link": "https://blog.ethereum.org/en/2021/05/18/country-power-no-more", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_08cb0dec8c7047a9872ee8f56d5d78bb.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 13 May 2021 00:00:00 GMT", + "title": "Core Developer Apprenticeship Program", + "link": "https://blog.ethereum.org/en/2021/05/13/core-dev-apprenticeship", + "imgSrc": "https://blog.ethereum.org/images/posts/r%26d.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 07 May 2021 00:00:00 GMT", + "title": "Ethereum for the Next Billion: Announcing the EF Fellowship Program", + "link": "https://blog.ethereum.org/en/2021/05/07/ethereum-for-the-next-billion", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_c94877685be7e6cba035ca82681ede7f.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 03 May 2021 00:00:00 GMT", + "title": "Grantee Roundup: April 2021", + "link": "https://blog.ethereum.org/en/2021/05/03/esp-grantee-roundup-april-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 26 Apr 2021 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Update", + "link": "https://blog.ethereum.org/en/2021/04/26/ef-supported-teams-research-and-development-update-2021-pt-1", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-lights-edit.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 02 Apr 2021 00:00:00 GMT", + "title": "Finalized no. 25", + "link": "https://blog.ethereum.org/en/2021/04/02/finalized-no-25", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 01 Apr 2021 00:00:00 GMT", + "title": "Grantee Roundup: March 2021", + "link": "https://blog.ethereum.org/en/2021/04/01/esp-grantee-roundup-march-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 24 Mar 2021 00:00:00 GMT", + "title": "Finalized no. 24", + "link": "https://blog.ethereum.org/en/2021/03/24/finalized-no-24", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 23 Mar 2021 00:00:00 GMT", + "title": "Supporting Ethereum’s Client Ecosystem", + "link": "https://blog.ethereum.org/en/2021/03/23/supporting-ethereums-client-ecosystem", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_85feb744f451f63fe2ce9b39a012fbdd.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 22 Mar 2021 00:00:00 GMT", + "title": "Allocation Update: Q4 2020", + "link": "https://blog.ethereum.org/en/2021/03/22/esp-allocation-update-q4-2020", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_fd63dc334e72e1c2885cb7969adc1faf.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 11 Mar 2021 00:00:00 GMT", + "title": "Finalized no. 23", + "link": "https://blog.ethereum.org/en/2021/03/11/finalized-no-23", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_4dae2a4ab4b6c89615b4b5c624c04b52.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 08 Mar 2021 00:00:00 GMT", + "title": "Ethereum Berlin Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2021/03/08/ethereum-berlin-upgrade-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_dcb0937c8bd662aae368f066f588abde.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 04 Mar 2021 00:00:00 GMT", + "title": "Local Grants Honduras & Colombia Roundup", + "link": "https://blog.ethereum.org/en/2021/03/04/local-grants-honduras-colombia-roundup", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_6adc05f98de11e4e964469d38ab39e69.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 03 Mar 2021 00:00:00 GMT", + "title": "Geth v1.10.0", + "link": "https://blog.ethereum.org/en/2021/03/03/geth-v1-10-0", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 01 Mar 2021 00:00:00 GMT", + "title": "Grantee Roundup: February 2021", + "link": "https://blog.ethereum.org/en/2021/03/01/esp-grantee-february-21", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_2b64b333510e4089691157ccc57a9d37.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 11 Feb 2021 00:00:00 GMT", + "title": "eth2 quick update no. 22", + "link": "https://blog.ethereum.org/en/2021/02/11/eth2-quick-update-no-22", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 09 Feb 2021 00:00:00 GMT", + "title": "Staking community grantee announcement", + "link": "https://blog.ethereum.org/en/2021/02/09/esp-staking-community-grantee-announcement", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_8ee2dcfef8a22561e3dfd4dd8babcd8a.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 29 Jan 2021 00:00:00 GMT", + "title": "Grantee Roundup: January 2021", + "link": "https://blog.ethereum.org/en/2021/01/29/esp-grantee-january-21", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_2b64b333510e4089691157ccc57a9d37.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 26 Jan 2021 00:00:00 GMT", + "title": "The Long(er) road to Devcon", + "link": "https://blog.ethereum.org/en/2021/01/26/the-longer-road-to-devcon", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_28fc1d8000e417fa3ae5e8492419bbc6.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 20 Jan 2021 00:00:00 GMT", + "title": "The State of Eth2, Jan 2021", + "link": "https://blog.ethereum.org/en/2021/01/20/the-state-of-eth2-january-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/ef-update-01.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 29 Dec 2020 00:00:00 GMT", + "title": "Grantee Roundup December 2020", + "link": "https://blog.ethereum.org/en/2020/12/29/esp-grantee-december-20", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_2b64b333510e4089691157ccc57a9d37.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 21 Dec 2020 00:00:00 GMT", + "title": "Ethereum.org Translation Program: Milestones and Updates", + "link": "https://blog.ethereum.org/en/2020/12/21/translation-program-milestones-updates-20", + "imgSrc": "https://blog.ethereum.org/images/posts/ethereum-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Dec 2020 00:00:00 GMT", + "title": "Validated, staking on eth2: #6 - Perfect is the enemy of the good", + "link": "https://blog.ethereum.org/en/2020/12/10/validated-perfect-is-the-enemy-of-the-good", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_08cb0dec8c7047a9872ee8f56d5d78bb.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 09 Dec 2020 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Update", + "link": "https://blog.ethereum.org/en/2020/12/09/ef-supported-teams-research-and-development-update-2020-pt-2", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-lights-edit.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 07 Dec 2020 00:00:00 GMT", + "title": "We are sunsetting Studio", + "link": "https://blog.ethereum.org/en/2020/12/07/we-are-sunsetting-studio", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 Nov 2020 00:00:00 GMT", + "title": "The Burden of Proof(s): Code Merkleization", + "link": "https://blog.ethereum.org/en/2020/11/30/the-1x-files-code-merkleization", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 27 Nov 2020 00:00:00 GMT", + "title": "eth2 quick update no. 21 ", + "link": "https://blog.ethereum.org/en/2020/11/27/eth2-quick-update-no-21", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 26 Nov 2020 00:00:00 GMT", + "title": "EthereumJS VM v5 Release", + "link": "https://blog.ethereum.org/en/2020/11/26/ethereumjs-vm-v5-release", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_dbe7960618939e067575d87951485537.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 25 Nov 2020 00:00:00 GMT", + "title": "Allocation Update: Q3 2020", + "link": "https://blog.ethereum.org/en/2020/11/25/esp-q3-updates", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_82074c38cdfeaaff7ed5208a4336ed16.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 18 Nov 2020 00:00:00 GMT", + "title": "Grantee Roundup: November 2020", + "link": "https://blog.ethereum.org/en/2020/11/18/esp-grantee-roundup-november-2020", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_82074c38cdfeaaff7ed5208a4336ed16.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 17 Nov 2020 00:00:00 GMT", + "title": "Medalla data challenge results", + "link": "https://blog.ethereum.org/en/2020/11/17/medalla-data-challenge-results", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_54f9fe7e323062c6f2ec9f94c2830056.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 13 Nov 2020 00:00:00 GMT", + "title": "eth2 quick update no. 20", + "link": "https://blog.ethereum.org/en/2020/11/13/eth2-quick-update-no-20", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Nov 2020 00:00:00 GMT", + "title": "Geth security release", + "link": "https://blog.ethereum.org/en/2020/11/12/geth-security-release", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 04 Nov 2020 00:00:00 GMT", + "title": "eth2 quick update no. 19", + "link": "https://blog.ethereum.org/en/2020/11/04/eth2-quick-update-no-19", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 22 Oct 2020 00:00:00 GMT", + "title": "Introducing the new ethereum.org developer portal", + "link": "https://blog.ethereum.org/en/2020/10/22/introducing-the-new-developer-portal", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 01 Oct 2020 00:00:00 GMT", + "title": "eth2 quick update no. 18", + "link": "https://blog.ethereum.org/en/2020/10/01/eth2-quick-update-no-18", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 22 Sep 2020 00:00:00 GMT", + "title": "eth2 quick update no. 17", + "link": "https://blog.ethereum.org/en/2020/09/22/eth2-quick-update-no-17", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 14 Sep 2020 00:00:00 GMT", + "title": "eth2 quick update no. 16", + "link": "https://blog.ethereum.org/en/2020/09/14/eth2-quick-update-no-16", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 08 Sep 2020 00:00:00 GMT", + "title": "Q2 Allocation Update", + "link": "https://blog.ethereum.org/en/2020/09/08/esp-q2-updates", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_82074c38cdfeaaff7ed5208a4336ed16.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 01 Sep 2020 00:00:00 GMT", + "title": "eth2 quick update no. 15", + "link": "https://blog.ethereum.org/en/2020/09/01/eth2-quick-update-no-15", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 Aug 2020 00:00:00 GMT", + "title": "The Stateless Tech Tree: reGenesis Edition", + "link": "https://blog.ethereum.org/en/2020/08/24/the-1x-files-tech-tree-regenesis", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 21 Aug 2020 00:00:00 GMT", + "title": "Validated, staking on eth2: #5 - Why client diversity matters", + "link": "https://blog.ethereum.org/en/2020/08/21/validated-why-client-diversity-matters", + "imgSrc": "https://blog.ethereum.org/images/posts/merkle-4k.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 19 Aug 2020 00:00:00 GMT", + "title": "ESP: Beyond Grants", + "link": "https://blog.ethereum.org/en/2020/08/19/esp-beyond-grants", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_82074c38cdfeaaff7ed5208a4336ed16.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 14 Aug 2020 00:00:00 GMT", + "title": "Announcing Devcon Improvement Proposals (DIPs)", + "link": "https://blog.ethereum.org/en/2020/08/14/announcing-devcon-improvement-proposals", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_3cce07d58a164be59f66c80f3bee57aa.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 05 Aug 2020 00:00:00 GMT", + "title": "Development update #4 – ethereum.org", + "link": "https://blog.ethereum.org/en/2020/08/05/ethereum-dot-org-development-update-4", + "imgSrc": "https://blog.ethereum.org/images/posts/ethereum-hero.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 03 Aug 2020 00:00:00 GMT", + "title": "eth2 quick update no. 14", + "link": "https://blog.ethereum.org/en/2020/08/03/eth2-quick-update-no-14", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 30 Jul 2020 00:00:00 GMT", + "title": "Ethereum turns 5 🎂", + "link": "https://blog.ethereum.org/en/2020/07/30/ethereum-turns-5", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_26ec7ca3794b9563416d2559b8a14a83.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 29 Jul 2020 00:00:00 GMT", + "title": "Ethereum.org Translation Program: Milestone and Updates", + "link": "https://blog.ethereum.org/en/2020/07/29/ethdotorg-translation-milestone", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Jul 2020 00:00:00 GMT", + "title": "The 1.x Files: GHOST in the Stack Machine", + "link": "https://blog.ethereum.org/en/2020/07/28/the-1x-files-ghost-in-the-stack-machine", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 27 Jul 2020 00:00:00 GMT", + "title": "eth2 validator launchpad 🚀", + "link": "https://blog.ethereum.org/en/2020/07/27/eth2-validator-launchpad", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_431e6a8ec269404e3f89fec7133482b9.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 23 Jul 2020 00:00:00 GMT", + "title": "eth2 quick update no. 13", + "link": "https://blog.ethereum.org/en/2020/07/23/eth2-quick-update-no-13", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 17 Jul 2020 00:00:00 GMT", + "title": "Ask about Geth: Snapshot acceleration", + "link": "https://blog.ethereum.org/en/2020/07/17/ask-about-geth-snapshot-acceleration", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 23 Jun 2020 00:00:00 GMT", + "title": "eth2 quick update no. 12", + "link": "https://blog.ethereum.org/en/2020/06/23/eth2-quick-update-no-12", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 16 Jun 2020 00:00:00 GMT", + "title": "The 1.x Files: EIP 1559 and the Ethereum Improvement Horizon", + "link": "https://blog.ethereum.org/en/2020/06/16/eth1x-1559", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Jun 2020 00:00:00 GMT", + "title": "The State of Eth2, June 2020", + "link": "https://blog.ethereum.org/en/2020/06/02/the-state-of-eth2-june-2020", + "imgSrc": "https://blog.ethereum.org/images/posts/ef-update-01.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 28 May 2020 00:00:00 GMT", + "title": "Devcon: Hacia Colombia en 2021", + "link": "https://blog.ethereum.org/en/2020/05/28/devcon-hacia-colombia-en-2021", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_1f83bbd5e1224e93451262fdd26e7cd8.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 21 May 2020 00:00:00 GMT", + "title": "Validated, staking on eth2: #4 - Keys 🔑", + "link": "https://blog.ethereum.org/en/2020/05/21/keys", + "imgSrc": "https://blog.ethereum.org/images/posts/merkle-4k.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 19 May 2020 00:00:00 GMT", + "title": "Ethereum Foundation 2020 Spring Update", + "link": "https://blog.ethereum.org/en/2020/05/19/ethereum-foundation-spring-2020-update", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_ed4dd4b5fe52fd746ac5add69155fdbb.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 07 May 2020 00:00:00 GMT", + "title": "Ecosystem Support Program: Allocation Update, Q1 2020", + "link": "https://blog.ethereum.org/en/2020/05/07/ecosystem-support-program-allocation-update-q1", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_82074c38cdfeaaff7ed5208a4336ed16.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 06 May 2020 00:00:00 GMT", + "title": "eth2 quick update no. 11", + "link": "https://blog.ethereum.org/en/2020/05/06/eth2-quick-update-no-11", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 05 May 2020 00:00:00 GMT", + "title": "Development Update #3 - Ethereum.org", + "link": "https://blog.ethereum.org/en/2020/05/05/ethereum-org-development-update-3", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 04 May 2020 00:00:00 GMT", + "title": "The 1.x Files: A Primer for the Witness Specification", + "link": "https://blog.ethereum.org/en/2020/05/04/eth1x-witness-primer", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 14 Apr 2020 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Update", + "link": "https://blog.ethereum.org/en/2020/04/14/ef-supported-teams-research-and-development-update-2020-pt-1", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_c91594eb79e6dca4c4b5faa979b31317.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 02 Apr 2020 00:00:00 GMT", + "title": "The 1.x Files: The Updated Stateless Tech Tree", + "link": "https://blog.ethereum.org/en/2020/04/02/eth1x-stateless-tech-tree", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 01 Apr 2020 00:00:00 GMT", + "title": "Ecosystem Support Program: Allocation Update", + "link": "https://blog.ethereum.org/en/2020/04/01/ecosystem-support-program-allocation-update", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_7545a983a40cccfd3be432c893db24f7.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 31 Mar 2020 00:00:00 GMT", + "title": "eth2 quick update no. 10", + "link": "https://blog.ethereum.org/en/2020/03/31/eth2-quick-update-no-10", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 Mar 2020 00:00:00 GMT", + "title": "Introducing the Devcon Archive (and an event update)", + "link": "https://blog.ethereum.org/en/2020/03/30/introducing-the-devcon-archive", + "imgSrc": "https://blog.ethereum.org/images/posts/upload_28fc1d8000e417fa3ae5e8492419bbc6.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 27 Mar 2020 00:00:00 GMT", + "title": "Validated, staking on eth2: #3 - Sharding Consensus", + "link": "https://blog.ethereum.org/en/2020/03/27/sharding-consensus", + "imgSrc": "https://blog.ethereum.org/images/posts/merkle-4k.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 20 Mar 2020 00:00:00 GMT", + "title": "Development Update #2 - Ethereum.org", + "link": "https://blog.ethereum.org/en/2020/03/20/ethereum-org-development-update-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 17 Mar 2020 00:00:00 GMT", + "title": "eth2 quick update no. 9", + "link": "https://blog.ethereum.org/en/2020/03/17/eth2-quick-update-no-9", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Mar 2020 00:00:00 GMT", + "title": "The 1.x Files: Stateless Summit Summary", + "link": "https://blog.ethereum.org/en/2020/03/12/eth1x-files-stateless-summit-summary", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 02 Mar 2020 00:00:00 GMT", + "title": "Devcon: What is Ahead", + "link": "https://blog.ethereum.org/en/2020/03/02/devcon-whats-ahead", + "imgSrc": "https://blog.ethereum.org/images/posts/eth-wallpaper.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 28 Feb 2020 00:00:00 GMT", + "title": "The 1.x Files: February call digest", + "link": "https://blog.ethereum.org/en/2020/02/28/eth1x-files-digest-no-3", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Feb 2020 00:00:00 GMT", + "title": "The 1.x Files: The State(lessness) of the Union", + "link": "https://blog.ethereum.org/en/2020/02/18/eth1x-files-the-statelessness-of-the-union", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 12 Feb 2020 00:00:00 GMT", + "title": "Validated, staking on eth2: #2 - Two ghosts in a trench coat", + "link": "https://blog.ethereum.org/en/2020/02/12/validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat", + "imgSrc": "https://blog.ethereum.org/images/posts/merkle-4k.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 04 Feb 2020 00:00:00 GMT", + "title": "eth2 quick update no. 8", + "link": "https://blog.ethereum.org/en/2020/02/04/eth2-quick-update-no-8", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 29 Jan 2020 00:00:00 GMT", + "title": "Solidity 0.6.x features: try/catch statement", + "link": "https://blog.ethereum.org/en/2020/01/29/solidity-0-6-try-catch", + "imgSrc": "https://blog.ethereum.org/images/posts/solidity-logo.svg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Jan 2020 00:00:00 GMT", + "title": "The 1.x Files: The Stateless Ethereum Tech Tree", + "link": "https://blog.ethereum.org/en/2020/01/28/eth1x-files-the-stateless-ethereum-tech-tree", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 17 Jan 2020 00:00:00 GMT", + "title": "The 1.x Files: January call digest", + "link": "https://blog.ethereum.org/en/2020/01/17/eth1x-files-digest-no-2", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 16 Jan 2020 00:00:00 GMT", + "title": "eth2 quick update no. 7", + "link": "https://blog.ethereum.org/en/2020/01/16/eth2-quick-update-no-7", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 13 Jan 2020 00:00:00 GMT", + "title": "Validated, staking on eth2: #1 - Incentives", + "link": "https://blog.ethereum.org/en/2020/01/13/validated-staking-on-eth2-1-incentives", + "imgSrc": "https://blog.ethereum.org/images/posts/merkle-4k.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 08 Jan 2020 00:00:00 GMT", + "title": "Update on the Vyper Compiler", + "link": "https://blog.ethereum.org/en/2020/01/08/update-on-the-vyper-compiler", + "imgSrc": "https://blog.ethereum.org/images/posts/eth-wallpaper.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 Dec 2019 00:00:00 GMT", + "title": "The 1.x Files: The State of Stateless Ethereum", + "link": "https://blog.ethereum.org/en/2019/12/30/eth1x-files-state-of-stateless-ethereum", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 23 Dec 2019 00:00:00 GMT", + "title": "Ethereum Muir Glacier Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2019/12/23/ethereum-muir-glacier-upgrade-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 20 Dec 2019 00:00:00 GMT", + "title": "The 1.x Files: December call digest", + "link": "https://blog.ethereum.org/en/2019/12/20/eth1x-files-digest-no-1", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 Dec 2019 00:00:00 GMT", + "title": "eth2 quick update no. 6", + "link": "https://blog.ethereum.org/en/2019/12/19/eth2-quick-update-no-6", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 10 Dec 2019 00:00:00 GMT", + "title": "The 1.x Files: a fast-sync", + "link": "https://blog.ethereum.org/en/2019/12/10/eth1x-files-fast-sync", + "imgSrc": "https://blog.ethereum.org/images/posts/the1xfiles-black.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 05 Dec 2019 00:00:00 GMT", + "title": "eth2 quick update no. 5", + "link": "https://blog.ethereum.org/en/2019/12/05/eth2-quick-update-no-5", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Dec 2019 00:00:00 GMT", + "title": "EF-Supported Teams: Research & Development Update", + "link": "https://blog.ethereum.org/en/2019/12/03/ef-supported-teams-research-and-development-update-2019-pt-2", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-lights-edit.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 27 Nov 2019 00:00:00 GMT", + "title": "Validated: Staking on eth2 #0", + "link": "https://blog.ethereum.org/en/2019/11/27/validated-staking-on-eth2-no-0", + "imgSrc": "https://blog.ethereum.org/images/posts/merkle-4k.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 21 Nov 2019 00:00:00 GMT", + "title": "eth2 quick update no. 4", + "link": "https://blog.ethereum.org/en/2019/11/21/eth2-quick-update-no-4", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 20 Nov 2019 00:00:00 GMT", + "title": "Ethereum Istanbul Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2019/11/20/ethereum-istanbul-upgrade-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 19 Nov 2019 00:00:00 GMT", + "title": "Ecosystem Support Program call for applications", + "link": "https://blog.ethereum.org/en/2019/11/19/ecosystem-support-program-call-for-applications", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-banner.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 14 Nov 2019 00:00:00 GMT", + "title": "Announcing a Taiwan-specific Wave of Grants", + "link": "https://blog.ethereum.org/en/2019/11/14/announcing-a-taiwan-specific-wave", + "imgSrc": "https://blog.ethereum.org/images/posts/header.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 12 Nov 2019 00:00:00 GMT", + "title": "Development Update #1 - Ethereum.org", + "link": "https://blog.ethereum.org/en/2019/11/12/ethereum-org-development-update-no-1", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 08 Nov 2019 00:00:00 GMT", + "title": "eth2 quick update no. 3", + "link": "https://blog.ethereum.org/en/2019/11/08/eth2-quick-update-no-3", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 04 Nov 2019 00:00:00 GMT", + "title": "Eth2 at ETHWaterloo: Prizes for Eth2 education, tooling, and research", + "link": "https://blog.ethereum.org/en/2019/11/04/eth2-at-ethwaterloo", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 31 Oct 2019 00:00:00 GMT", + "title": "eth2 quick update no. 2", + "link": "https://blog.ethereum.org/en/2019/10/31/eth2-quick-update-no-2", + "imgSrc": "https://blog.ethereum.org/images/posts/kumiko-background.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 23 Oct 2019 00:00:00 GMT", + "title": "eth2 quick update", + "link": "https://blog.ethereum.org/en/2019/10/23/eth2-quick-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 03 Oct 2019 00:00:00 GMT", + "title": "The Devcon5 Bible", + "link": "https://blog.ethereum.org/en/2019/10/03/the-devcon5-bible", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon5.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 26 Sep 2019 00:00:00 GMT", + "title": "Devcon5 Schedule, Sponsors and Speakers are online NOW!", + "link": "https://blog.ethereum.org/en/2019/09/26/devcon-speaker-release", + "imgSrc": "https://blog.ethereum.org/images/posts/01-Asanoha-1440p.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 Sep 2019 00:00:00 GMT", + "title": "Eth2 Interop in Review", + "link": "https://blog.ethereum.org/en/2019/09/19/eth2-interop-in-review", + "imgSrc": "https://blog.ethereum.org/images/posts/eth-wallpaper.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 18 Sep 2019 00:00:00 GMT", + "title": "Development Update #0 - Ethereum.org", + "link": "https://blog.ethereum.org/en/2019/09/18/development-update-no-0-ethereum-org", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Sep 2019 00:00:00 GMT", + "title": "Devcon On-Chain Raffle & Auction Participants", + "link": "https://blog.ethereum.org/en/2019/09/12/devcon-on-chain-raffle-and-auction-participants", + "imgSrc": "https://blog.ethereum.org/images/posts/horse-devcon.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Sep 2019 00:00:00 GMT", + "title": "Live: Devcon5 Final Ticket Appeals", + "link": "https://blog.ethereum.org/en/2019/09/03/live-devcon5-final-ticket-appeals", + "imgSrc": "https://blog.ethereum.org/images/posts/horse-devcon.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 26 Aug 2019 00:00:00 GMT", + "title": "Announcing Ethereum Foundation and Co-Funded Grants", + "link": "https://blog.ethereum.org/en/2019/08/26/announcing-ethereum-foundation-and-co-funded-grants", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 22 Aug 2019 00:00:00 GMT", + "title": "Devcon5 On-Chain Ticket Sale", + "link": "https://blog.ethereum.org/en/2019/08/22/devcon5-on-chain-ticket-sale", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 20 Aug 2019 00:00:00 GMT", + "title": "Translating Ethereum for our Global Community", + "link": "https://blog.ethereum.org/en/2019/08/20/translating-ethereum-for-our-global-community", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 20 Aug 2019 00:00:00 GMT", + "title": "Announcing the Devcon Scholars Program", + "link": "https://blog.ethereum.org/en/2019/08/20/announcing-the-devcon-scholars-program", + "imgSrc": "https://blog.ethereum.org/images/posts/horse-devcon.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 14 Aug 2019 00:00:00 GMT", + "title": "Devcon Tickets: Wave 3 and beyond", + "link": "https://blog.ethereum.org/en/2019/08/14/devcon-tickets-wave-three-and-beyond", + "imgSrc": "https://blog.ethereum.org/images/posts/horse-devcon.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 29 Jul 2019 00:00:00 GMT", + "title": "Devcon updates: Announcing Wave 2, a New Application window, and more!", + "link": "https://blog.ethereum.org/en/2019/07/29/devcon-updates-announcing-wave-2-a-new-application-window-and-more", + "imgSrc": "https://blog.ethereum.org/images/posts/horse-devcon.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 15 Jul 2019 00:00:00 GMT", + "title": "On Wave 1 and Devcon Ticketing", + "link": "https://blog.ethereum.org/en/2019/07/15/on-wave-one-and-devcon-ticketing", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-banner.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 10 Jul 2019 10:00:00 GMT", + "title": "Geth v1.9.0", + "link": "https://blog.ethereum.org/en/2019/07/10/geth-v1-9-0", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 Jun 2019 00:00:00 GMT", + "title": "Solidity Storage Array Bugs", + "link": "https://blog.ethereum.org/en/2019/06/25/solidity-storage-array-bugs", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 21 Jun 2019 00:00:00 GMT", + "title": "EF-Supported Teams: Development Report", + "link": "https://blog.ethereum.org/en/2019/06/21/ef-supported-teams-development-report-2019-pt-1", + "imgSrc": "https://blog.ethereum.org/images/posts/ethdenver.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 10 Jun 2019 00:00:00 GMT", + "title": "Devcon in Osaka: Applications now open!", + "link": "https://blog.ethereum.org/en/2019/06/10/devcon-in-osaka-applications-now-open", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon-banner.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 May 2019 00:00:00 GMT", + "title": "Ethereum Foundation Spring 2019 Update", + "link": "https://blog.ethereum.org/en/2019/05/21/ethereum-foundation-spring-2019-update", + "imgSrc": "https://blog.ethereum.org/images/posts/ef-update-01.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 30 Apr 2019 00:00:00 GMT", + "title": "Beginning a new ethereum.org", + "link": "https://blog.ethereum.org/en/2019/04/30/beginning-a-new-ethereum-org", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 26 Mar 2019 00:00:00 GMT", + "title": "Solidity Optimizer and ABIEncoderV2 Bug", + "link": "https://blog.ethereum.org/en/2019/03/26/solidity-optimizer-and-abiencoderv2-bug", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 22 Feb 2019 00:00:00 GMT", + "title": "Ethereum Constantinople/St. Petersburg Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 21 Feb 2019 00:00:00 GMT", + "title": "Ethereum Foundation Grants Program Wave 5", + "link": "https://blog.ethereum.org/en/2019/02/21/ethereum-foundation-grants-program-wave-5", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 15 Jan 2019 00:00:00 GMT", + "title": "Security Alert: Ethereum Constantinople Postponement", + "link": "https://blog.ethereum.org/en/2019/01/15/security-alert-ethereum-constantinople-postponement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 11 Jan 2019 00:00:00 GMT", + "title": "Ethereum Constantinople Upgrade Announcement", + "link": "https://blog.ethereum.org/en/2019/01/11/ethereum-constantinople-upgrade-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 07 Jan 2019 00:00:00 GMT", + "title": "Announcing an Ethereum Foundation Grant to Parity Technologies", + "link": "https://blog.ethereum.org/en/2019/01/07/announcing-an-ethereum-foundation-grant-to-parity-technologies", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 19 Dec 2018 00:00:00 GMT", + "title": "Call for Submissions! DApps Solving Real-World Issues", + "link": "https://blog.ethereum.org/en/2018/12/19/call-for-submissions-dapps-solving-real-world-issues", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 10 Dec 2018 00:00:00 GMT", + "title": "Devcon4 Videos and Pictures Released!", + "link": "https://blog.ethereum.org/en/2018/12/10/devcon4-videos-and-pictures-released", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 24 Oct 2018 00:00:00 GMT", + "title": "How the Ethereum Foundation grants program makes decisions", + "link": "https://blog.ethereum.org/en/2018/10/24/how-the-ethereum-foundation-grants-program-makes-decisions", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 18 Oct 2018 00:00:00 GMT", + "title": "Announcing Our dc⟠ıv Sponsors and Supporters!", + "link": "https://blog.ethereum.org/en/2018/10/18/announcing-our-dciv-sponsors-and-supporters", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 15 Oct 2018 00:00:00 GMT", + "title": "Ethereum Foundation Grants Update - Wave IV", + "link": "https://blog.ethereum.org/en/2018/10/15/ethereum-foundation-grants-update-wave-4", + "imgSrc": "https://blog.ethereum.org/images/posts/grants_eth_logo.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 13 Sep 2018 00:00:00 GMT", + "title": "Solidity Bugfix Release", + "link": "https://blog.ethereum.org/en/2018/09/13/solidity-bugfix-release", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 17 Aug 2018 00:00:00 GMT", + "title": "Ethereum Foundation Grants Update - Wave III", + "link": "https://blog.ethereum.org/en/2018/08/17/ethereum-foundation-grants-update-wave-3", + "imgSrc": "https://blog.ethereum.org/images/posts/grants_eth_logo.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 Jul 2018 00:00:00 GMT", + "title": "Devcon4 Call for Participation!", + "link": "https://blog.ethereum.org/en/2018/07/30/devcon4-call-for-participation", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 27 Jul 2018 00:00:00 GMT", + "title": "Answers to your top 3 Devcon4 questions", + "link": "https://blog.ethereum.org/en/2018/07/27/answers-to-your-top-3-devcon4-questions", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 Jul 2018 00:00:00 GMT", + "title": "Devcon4 Application Deadlines Coming Soon", + "link": "https://blog.ethereum.org/en/2018/07/19/devcon4-application-deadlines-coming-soon", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 17 Jul 2018 00:00:00 GMT", + "title": "An Update on Devcon4 Ticket Allocations & Sales", + "link": "https://blog.ethereum.org/en/2018/07/17/an-update-on-devcon4-ticket-allocations-and-sales", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Jul 2018 00:00:00 GMT", + "title": "Devcon4 Ticket Sales", + "link": "https://blog.ethereum.org/en/2018/07/03/devcon4-ticket-sales", + "imgSrc": "https://blog.ethereum.org/images/posts/devcon4-logo.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 21 Jun 2018 00:00:00 GMT", + "title": "Announcing Swarm Proof-of-Concept Release 3", + "link": "https://blog.ethereum.org/en/2018/06/21/announcing-swarm-proof-of-concept-release-3", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 11 May 2018 16:29:37 GMT", + "title": "Devcon4 Announcement", + "link": "https://blog.ethereum.org/en/2018/05/11/devcon4-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 02 May 2018 18:37:50 GMT", + "title": "Announcing May 2018 Cohort of EF Grants", + "link": "https://blog.ethereum.org/en/2018/05/02/announcing-may-2018-cohort-ef-grants", + "imgSrc": "https://blog.ethereum.org/images/posts/efg.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 01 Apr 2018 15:35:26 GMT", + "title": "Announcing World Trade Francs: The Official Ethereum Stablecoin", + "link": "https://blog.ethereum.org/en/2018/04/01/announcing-world-trade-francs-official-ethereum-stablecoin", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 07 Mar 2018 17:54:33 GMT", + "title": "Announcing Beneficiaries of the Ethereum Foundation Grants", + "link": "https://blog.ethereum.org/en/2018/03/07/announcing-beneficiaries-ethereum-foundation-grants", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 14 Feb 2018 15:45:21 GMT", + "title": "Geth 1.8 - Iceberg¹", + "link": "https://blog.ethereum.org/en/2018/02/14/geth-1-8-iceberg", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 31 Jan 2018 22:10:02 GMT", + "title": "Farewell and Welcome", + "link": "https://blog.ethereum.org/en/2018/01/31/farewell-and-welcome", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 31 Jan 2018 20:27:27 GMT", + "title": "To Infinity and Beyond!", + "link": "https://blog.ethereum.org/en/2018/01/31/to-infinity-and-beyond", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Jan 2018 17:42:21 GMT", + "title": "Ethereum scalability research and development subsidy programs", + "link": "https://blog.ethereum.org/en/2018/01/02/ethereum-scalability-research-development-subsidy-programs", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Jan 2018 15:27:18 GMT", + "title": "Q4 Roundup", + "link": "https://blog.ethereum.org/en/2018/01/02/q4-roundup", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 15 Dec 2017 10:48:58 GMT", + "title": "Security alert — Chromium vulnerability affecting Mist Browser Beta", + "link": "https://blog.ethereum.org/en/2017/12/15/security-alert-chromium-vulnerability-affecting-mist-browser-beta", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 26 Nov 2017 00:17:13 GMT", + "title": "Devcon3 videos available now!", + "link": "https://blog.ethereum.org/en/2017/11/26/devcon3-vids-available-now", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 16 Nov 2017 01:55:44 GMT", + "title": "Devcon3!!!", + "link": "https://blog.ethereum.org/en/2017/11/16/devcon3", + "imgSrc": "https://blog.ethereum.org/images/posts/Devcon3_0087.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Oct 2017 07:51:59 GMT", + "title": "Byzantium HF Announcement", + "link": "https://blog.ethereum.org/en/2017/10/12/byzantium-hf-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 09 Oct 2017 09:55:53 GMT", + "title": "Roundup #6", + "link": "https://blog.ethereum.org/en/2017/10/09/roundup-6", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 14 Sep 2017 16:36:33 GMT", + "title": "Geth 1.7 - Megara", + "link": "https://blog.ethereum.org/en/2017/09/14/geth-1-7-megara", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 23 Aug 2017 12:34:51 GMT", + "title": "Roundup #5", + "link": "https://blog.ethereum.org/en/2017/08/23/roundup-5", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 21 Aug 2017 15:59:58 GMT", + "title": "Statement Objecting To EME as a W3C Recommendation", + "link": "https://blog.ethereum.org/en/2017/08/21/statement-objecting-w3c-publishing-eme-recommendation", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 08 Jul 2017 02:03:25 GMT", + "title": "Roundup Q2", + "link": "https://blog.ethereum.org/en/2017/07/08/roundup-q2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 24 May 2017 17:04:21 GMT", + "title": "Roundup Round III", + "link": "https://blog.ethereum.org/en/2017/05/24/roundup-round-iii", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 03 May 2017 15:21:57 GMT", + "title": "Solidity optimizer bug", + "link": "https://blog.ethereum.org/en/2017/05/03/solidity-optimizer-bug", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 14 Apr 2017 13:19:30 GMT", + "title": "Geth 1.6 - Puppeth Master", + "link": "https://blog.ethereum.org/en/2017/04/14/geth-1-6-puppeth-master", + "imgSrc": "https://blog.ethereum.org/images/posts/puppeth.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 07 Apr 2017 11:30:17 GMT", + "title": "Ethereum Dev Roundup: Q1 (Boring Edition)", + "link": "https://blog.ethereum.org/en/2017/04/07/ethereum-dev-roundup-q1-boring-edition", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 01 Apr 2017 02:55:28 GMT", + "title": "Ethereum Dev Roundup: Q1", + "link": "https://blog.ethereum.org/en/2017/04/01/ethereum-dev-roundup-q1", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Mar 2017 03:11:39 GMT", + "title": "Ethereum JS Ecosystem Updates", + "link": "https://blog.ethereum.org/en/2017/03/21/ethereum-js-ecosystem-updates", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 14 Feb 2017 19:27:28 GMT", + "title": "Ethereum R&D Roundup: Valentine’s Day Edition", + "link": "https://blog.ethereum.org/en/2017/02/14/ethereum-rnd-roundup-valentines-day-edition", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 Jan 2017 17:57:54 GMT", + "title": "An Update on Integrating Zcash on Ethereum (ZoE)", + "link": "https://blog.ethereum.org/en/2017/01/19/update-integrating-zcash-ethereum", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 07 Jan 2017 03:42:14 GMT", + "title": "Introduction of the Light Client for DApp developers", + "link": "https://blog.ethereum.org/en/2017/01/07/introduction-light-client-dapp-developers", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 31 Dec 2016 14:50:37 GMT", + "title": "December Roundup", + "link": "https://blog.ethereum.org/en/2016/12/31/december-roundup", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 19 Dec 2016 21:54:25 GMT", + "title": "Security alert [12/19/2016]: Ethereum.org Forums Database Compromised", + "link": "https://blog.ethereum.org/en/2016/12/19/security-alert-12192016-ethereum-org-forums-database-compromised", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 Dec 2016 06:36:57 GMT", + "title": "Swarm alpha public pilot and the basics of Swarm", + "link": "https://blog.ethereum.org/en/2016/12/15/swarm-alpha-public-pilot-basics-swarm", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 07 Dec 2016 21:58:58 GMT", + "title": "The History of Casper - Chapter 2", + "link": "https://blog.ethereum.org/en/2016/12/07/history-casper-chapter-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 06 Dec 2016 20:04:46 GMT", + "title": "The History of Casper - Chapter 1", + "link": "https://blog.ethereum.org/en/2016/12/06/history-casper-chapter-1", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 05 Dec 2016 12:07:36 GMT", + "title": "zkSNARKs in a nutshell", + "link": "https://blog.ethereum.org/en/2016/12/05/zksnarks-in-a-nutshell", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 04 Dec 2016 11:27:47 GMT", + "title": "Ethereum Research Update", + "link": "https://blog.ethereum.org/en/2016/12/04/ethereum-research-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 25 Nov 2016 01:13:58 GMT", + "title": "Security alert [11/24/2016]: Consensus bug in geth v1.4.19 and v1.5.2", + "link": "https://blog.ethereum.org/en/2016/11/25/security-alert-11242016-consensus-bug-geth-v1-4-19-v1-5-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 20 Nov 2016 23:03:42 GMT", + "title": "From Morden to Ropsten", + "link": "https://blog.ethereum.org/en/2016/11/20/from-morden-to-ropsten", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 18 Nov 2016 18:19:46 GMT", + "title": "Hard Fork No. 4: Spurious Dragon", + "link": "https://blog.ethereum.org/en/2016/11/18/hard-fork-no-4-spurious-dragon", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 17 Nov 2016 17:35:38 GMT", + "title": "Whoa… Geth 1.5", + "link": "https://blog.ethereum.org/en/2016/11/17/whoa-geth-1-5", + "imgSrc": "https://blog.ethereum.org/images/posts/mascot.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 09 Nov 2016 10:04:37 GMT", + "title": "Analysis of Storage Corruption Bug", + "link": "https://blog.ethereum.org/en/2016/11/09/analysis-storage-corruption-bug", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 01 Nov 2016 08:40:44 GMT", + "title": "Security Alert - Solidity - Variables can be overwritten in storage", + "link": "https://blog.ethereum.org/en/2016/11/01/security-alert-solidity-variables-can-overwritten-storage", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 31 Oct 2016 03:52:04 GMT", + "title": "Uncle Rate and Transaction Fee Analysis", + "link": "https://blog.ethereum.org/en/2016/10/31/uncle-rate-transaction-fee-analysis", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 27 Oct 2016 11:12:05 GMT", + "title": "Security Alert - Mist can be vulnerable when navigating to malicious DApps", + "link": "https://blog.ethereum.org/en/2016/10/27/security-alert-mist-can-vulnerable-navigating-malicious-dapps", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Oct 2016 01:05:51 GMT", + "title": "FAQ: Upcoming Ethereum Hard Fork", + "link": "https://blog.ethereum.org/en/2016/10/18/faq-upcoming-ethereum-hard-fork", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 13 Oct 2016 23:25:27 GMT", + "title": "Announcement of imminent hard fork for EIP150 gas cost changes", + "link": "https://blog.ethereum.org/en/2016/10/13/announcement-imminent-hard-fork-eip150-gas-cost-changes", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 22 Sep 2016 21:31:35 GMT", + "title": "Transaction spam attack: Next Steps", + "link": "https://blog.ethereum.org/en/2016/09/22/transaction-spam-attack-next-steps", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 22 Sep 2016 16:46:27 GMT", + "title": "The Ethereum network is currently undergoing a DoS attack", + "link": "https://blog.ethereum.org/en/2016/09/22/ethereum-network-currently-undergoing-dos-attack", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 18 Sep 2016 23:31:43 GMT", + "title": "Security alert - All geth nodes crash due to an out of memory bug", + "link": "https://blog.ethereum.org/en/2016/09/18/security-alert-geth-nodes-crash-due-memory-bug", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 01 Sep 2016 19:55:01 GMT", + "title": "Dev Update: Formal Methods", + "link": "https://blog.ethereum.org/en/2016/09/01/formal-methods-roadmap", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 27 Jul 2016 17:00:00 GMT", + "title": "On Inflation, Transaction Fees and Cryptocurrency Monetary Policy", + "link": "https://blog.ethereum.org/en/2016/07/27/inflation-transaction-fees-cryptocurrency-monetary-policy", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 26 Jul 2016 14:42:14 GMT", + "title": "Onward from the Hard Fork", + "link": "https://blog.ethereum.org/en/2016/07/26/onward-from-the-hard-fork", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 22 Jul 2016 09:36:16 GMT", + "title": "Hive: How we strived for a clean fork", + "link": "https://blog.ethereum.org/en/2016/07/22/hive-strived-clean-fork", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 20 Jul 2016 20:29:12 GMT", + "title": "Hard Fork Completed", + "link": "https://blog.ethereum.org/en/2016/07/20/hard-fork-completed", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 15 Jul 2016 10:56:30 GMT", + "title": "To fork or not to fork", + "link": "https://blog.ethereum.org/en/2016/07/15/to-fork-or-not-to-fork", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 12 Jul 2016 16:47:52 GMT", + "title": "How to build server less applications for Mist", + "link": "https://blog.ethereum.org/en/2016/07/12/build-server-less-applications-mist", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 11 Jul 2016 16:05:58 GMT", + "title": "Taylor’s Summer Update", + "link": "https://blog.ethereum.org/en/2016/07/11/taylors-summer-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 08 Jul 2016 17:57:33 GMT", + "title": "C++ DEV Update - July edition", + "link": "https://blog.ethereum.org/en/2016/07/08/c-dev-update-summer-edition", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 08 Jul 2016 09:59:03 GMT", + "title": "The Devcon2 site is now live!", + "link": "https://blog.ethereum.org/en/2016/07/08/devcon2-site-now-live", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 28 Jun 2016 18:21:40 GMT", + "title": "Security Alert - DoS Vulnerability in the Soft Fork", + "link": "https://blog.ethereum.org/en/2016/06/28/security-alert-dos-vulnerability-in-the-soft-fork", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 24 Jun 2016 17:46:38 GMT", + "title": "DAO Wars: Your voice on the soft-fork dilemma", + "link": "https://blog.ethereum.org/en/2016/06/24/dao-wars-youre-voice-soft-fork-dilemma", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 24 Jun 2016 13:58:05 GMT", + "title": "Security Alert – Smart Contract Wallets created in frontier are vulnerable to phishing attacks", + "link": "https://blog.ethereum.org/en/2016/06/24/security-alert-smart-contract-wallets-created-in-frontier-are-vulnerable-to-phishing-attacks", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 19 Jun 2016 01:30:06 GMT", + "title": "Thinking About Smart Contract Security", + "link": "https://blog.ethereum.org/en/2016/06/19/thinking-smart-contract-security", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 17 Jun 2016 13:20:23 GMT", + "title": "CRITICAL UPDATE Re: DAO Vulnerability", + "link": "https://blog.ethereum.org/en/2016/06/17/critical-update-re-dao-vulnerability", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 14 Jun 2016 10:44:52 GMT", + "title": "The Ethereum Foundation welcomes Microsoft as the Premiere Sponsor of Devcon2, Shanghai 19-21 September, 2016", + "link": "https://blog.ethereum.org/en/2016/06/14/ethereum-welcomes-microsoft-devcon", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 10 Jun 2016 18:27:17 GMT", + "title": "Smart Contract Security", + "link": "https://blog.ethereum.org/en/2016/06/10/smart-contract-security", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 03 Jun 2016 18:05:58 GMT", + "title": "Security Alert - cpp-ethereum’s account unlocking problem not yet fixed [Now fixed]", + "link": "https://blog.ethereum.org/en/2016/06/03/security-alert-cpp-ethereums-account-unlocking-problem-not-yet-fixed", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 02 Jun 2016 16:21:36 GMT", + "title": "Go Ethereum’s JIT-EVM", + "link": "https://blog.ethereum.org/en/2016/06/02/go-ethereums-jit-evm", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 31 May 2016 00:13:36 GMT", + "title": "Security Alert - cpp-ethereum keeps accounts unlocked", + "link": "https://blog.ethereum.org/en/2016/05/31/security-alert-cpp-ethereum-keeps-accounts-unlocked", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 17 May 2016 18:39:54 GMT", + "title": "Security Alert – Geth suffers from a very low probable DoS attack vector - Update immediately", + "link": "https://blog.ethereum.org/en/2016/05/17/security-alert-geth-suffers-from-a-very-low-probable-dos-attack-vector-update-immediately", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 09 May 2016 08:07:25 GMT", + "title": "On Settlement Finality", + "link": "https://blog.ethereum.org/en/2016/05/09/on-settlement-finality", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 04 May 2016 19:22:21 GMT", + "title": "C++ DEV Update: Announcing Remix", + "link": "https://blog.ethereum.org/en/2016/05/04/c-dev-update-announcing-remix", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 05 Apr 2016 09:39:37 GMT", + "title": "Ethereum Foundation and Wanxiang Blockchain Labs announce a blockbuster event combining Devcon2 and the 2nd Global Blockchain Summit in Shanghai, September 19–24, 2016", + "link": "https://blog.ethereum.org/en/2016/04/05/devcon2-and-blockchain-summit-shanghai-september2016", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 01 Apr 2016 08:43:10 GMT", + "title": "Ethereum Partners with R3CEV on Lizardcoin, Bringing Together the Best of Centralized Finance and Blockchain Technology", + "link": "https://blog.ethereum.org/en/2016/04/01/ethereum-partners-with-r3cev-on-lizardcoin-bringing-together-the-best-of-centralized-finance-and-blockchain-technology", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 30 Mar 2016 20:17:25 GMT", + "title": "Solidity Available in Visual Studio", + "link": "https://blog.ethereum.org/en/2016/03/30/solidity-available-in-visual-studio", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 29 Mar 2016 09:05:02 GMT", + "title": "An Open Source Mining Pool Bounty and DEVgrant", + "link": "https://blog.ethereum.org/en/2016/03/29/an-open-source-mining-pool-bounty", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 05 Mar 2016 15:39:33 GMT", + "title": "Serenity PoC2", + "link": "https://blog.ethereum.org/en/2016/03/05/serenity-poc2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 29 Feb 2016 16:24:08 GMT", + "title": "Homestead Release", + "link": "https://blog.ethereum.org/en/2016/02/29/homestead-release", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 17 Feb 2016 15:42:29 GMT", + "title": "From Smart Contracts to Courts with not so Smart Judges", + "link": "https://blog.ethereum.org/en/2016/02/17/smart-contracts-courts-not-smart-judges", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 17 Feb 2016 06:09:04 GMT", + "title": "BTC Relay included in Ethereum Bounty Program", + "link": "https://blog.ethereum.org/en/2016/02/17/btc-relay-included-in-bounty-program", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 12 Feb 2016 15:31:56 GMT", + "title": "Ethereum DEV Update: C++ Roadmap", + "link": "https://blog.ethereum.org/en/2016/02/12/ethereum-dev-update-c-roadmap", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 09 Feb 2016 16:16:46 GMT", + "title": "Cut and try: building a dream", + "link": "https://blog.ethereum.org/en/2016/02/09/cut-and-try-building-a-dream", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 01 Feb 2016 04:11:14 GMT", + "title": "Ambients Applied to Ethereum", + "link": "https://blog.ethereum.org/en/2016/02/01/2458", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 15 Jan 2016 09:28:59 GMT", + "title": "Privacy on the Blockchain", + "link": "https://blog.ethereum.org/en/2016/01/15/privacy-on-the-blockchain", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 11 Jan 2016 14:09:29 GMT", + "title": "The last Blog Post", + "link": "https://blog.ethereum.org/en/2016/01/11/last-blog-post", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 08 Jan 2016 17:11:30 GMT", + "title": "ÐΞVgrants Update and New Funding", + "link": "https://blog.ethereum.org/en/2016/01/08/devgrants-update-new-funding", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 07 Jan 2016 02:37:42 GMT", + "title": "Ethereum Foundation Internal Update", + "link": "https://blog.ethereum.org/en/2016/01/07/2394", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 28 Dec 2015 01:54:30 GMT", + "title": "Understanding Serenity, Part 2: Casper", + "link": "https://blog.ethereum.org/en/2015/12/28/understanding-serenity-part-2-casper", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 24 Dec 2015 02:23:48 GMT", + "title": "Understanding Serenity, Part I: Abstraction", + "link": "https://blog.ethereum.org/en/2015/12/24/understanding-serenity-part-i-abstraction", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 07 Dec 2015 10:00:16 GMT", + "title": "Ethereum in practice part 3: how to build your own transparent bank on the blockchain", + "link": "https://blog.ethereum.org/en/2015/12/07/ethereum-in-practice-part-3-how-to-build-your-own-transparent-bank-on-the-blockchain", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 04 Dec 2015 10:00:31 GMT", + "title": "Ethereum in practice part 2: how to build a better democracy in under a 100 lines of code", + "link": "https://blog.ethereum.org/en/2015/12/04/ethereum-in-practice-part-2-how-to-build-a-better-democracy-in-under-a-100-lines-of-code", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 03 Dec 2015 22:04:45 GMT", + "title": "Ethereum in practice part 1: how to build your own cryptocurrency without touching a line of code", + "link": "https://blog.ethereum.org/en/2015/12/03/how-to-build-your-own-cryptocurrency", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 24 Nov 2015 16:43:07 GMT", + "title": "Applications of Security Deposits and Prediction Markets You Might Not Have Thought About", + "link": "https://blog.ethereum.org/en/2015/11/24/applications-of-security-deposits-and-prediction-markets-you-might-not-have-thought-about", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 15 Nov 2015 11:51:53 GMT", + "title": "Merkling in Ethereum", + "link": "https://blog.ethereum.org/en/2015/11/15/merkling-in-ethereum", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 09 Nov 2015 07:20:43 GMT", + "title": "Stateful Turing-Complete Policies", + "link": "https://blog.ethereum.org/en/2015/11/09/stateful-turing-complete-policies", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 02 Nov 2015 14:42:37 GMT", + "title": "Ethereum Dev Update 2015 / Week 44", + "link": "https://blog.ethereum.org/en/2015/11/02/ethereum-dev-update-2015-week-44", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 28 Oct 2015 20:43:42 GMT", + "title": "Microsoft to Sponsor Ethereum’s DEVCON1", + "link": "https://blog.ethereum.org/en/2015/10/28/microsoft-to-sponsor-ethereums-devcon1-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 22 Oct 2015 22:33:44 GMT", + "title": "Nick Szabo Confirmed as Keynote Speaker of Ethereum’s DEVCON1", + "link": "https://blog.ethereum.org/en/2015/10/22/nick-szabo-confirmed-as-keynote-speaker-of-ethereums-devcon1", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 22 Oct 2015 17:06:53 GMT", + "title": "Security alert [Implementation of BLOCKHASH instruction in C++ and Go clients can potentially cause consensus issue – Fixed. Please update.]", + "link": "https://blog.ethereum.org/en/2015/10/22/security-alert-implementation-of-blockhash-instruction-in-c-and-go-clients-can-potentially-cause-consensus-issue-fixed-please-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 18 Oct 2015 03:56:24 GMT", + "title": "Vitalik’s Research and Ecosystem Update", + "link": "https://blog.ethereum.org/en/2015/10/18/vitaliks-research-and-ecosystem-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 13 Oct 2015 00:43:48 GMT", + "title": "Ethereum Dev Update 2015 / Week 41", + "link": "https://blog.ethereum.org/en/2015/10/13/ethereum-dev-update-2015-week-41", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 10 Oct 2015 11:51:20 GMT", + "title": "Security Advisory [eth (cpp-ethereum) potentially vulnerable if running with UPnP enabled]", + "link": "https://blog.ethereum.org/en/2015/10/10/security-advisory-eth-cpp-ethereum-potentially-vulnerable-if-running-with-upnp-enabled", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 28 Sep 2015 17:43:55 GMT", + "title": "The Evolution of Ethereum", + "link": "https://blog.ethereum.org/en/2015/09/28/the-evolution-of-ethereum", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 25 Sep 2015 15:42:05 GMT", + "title": "More uncle statistics", + "link": "https://blog.ethereum.org/en/2015/09/25/more-uncle-statistics", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 24 Sep 2015 22:31:22 GMT", + "title": "DEVcon is back!", + "link": "https://blog.ethereum.org/en/2015/09/24/devcon-is-back", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 18 Sep 2015 20:44:24 GMT", + "title": "Ethereum Comms Announcement", + "link": "https://blog.ethereum.org/en/2015/09/18/ethereum-comms-announcement", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 16 Sep 2015 20:43:39 GMT", + "title": "Ethereum Wallet - Developer Preview", + "link": "https://blog.ethereum.org/en/2015/09/16/ethereum-wallet-developer-preview", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 14 Sep 2015 02:41:57 GMT", + "title": "On Slow and Fast Block Times", + "link": "https://blog.ethereum.org/en/2015/09/14/on-slow-and-fast-block-times", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Sep 2015 13:19:27 GMT", + "title": "Security Alert – [Previous security patch can lead to invalid state root on Go clients with a specific transaction sequence – Fixed. Please update.]", + "link": "https://blog.ethereum.org/en/2015/09/10/security-alert-previous-security-patch-can-lead-to-invalid-state-root-on-go-clients-with-a-specific-transaction-sequence-fixed-please-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 03 Sep 2015 14:27:15 GMT", + "title": "A message from Stephan Tual", + "link": "https://blog.ethereum.org/en/2015/09/03/a-message-from-stephan-tual", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 03 Sep 2015 01:44:08 GMT", + "title": "Security Alert – [Implementation bug in Go clients causing increase in difficulty – Fixed – Miners check and update Go clients]", + "link": "https://blog.ethereum.org/en/2015/09/03/security-alert-implementation-bug-in-go-clients-causing-increase-in-difficulty-fixed-miners-check-and-update-go-clients-if-necessary", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 02 Sep 2015 18:24:05 GMT", + "title": "Security Advisory [Implementation bugs in Go and Python clients can cause DoS – Fixed – Please update clients]", + "link": "https://blog.ethereum.org/en/2015/09/02/security-advisory-implementations-bugs-in-go-and-python-clients-can-cause-dos", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 02 Sep 2015 18:00:03 GMT", + "title": "devcon one postponed until further notice", + "link": "https://blog.ethereum.org/en/2015/09/02/devcon-one-postponed-until-further-notice", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 29 Aug 2015 12:25:59 GMT", + "title": "Security Advisory [Insecurely configured geth can make funds remotely accessible]", + "link": "https://blog.ethereum.org/en/2015/08/29/security-alert-insecurely-configured-geth-can-make-funds-remotely-accessible", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 28 Aug 2015 12:48:11 GMT", + "title": "On Anti-Pre-Revelation Games", + "link": "https://blog.ethereum.org/en/2015/08/28/on-anti-pre-revelation-games", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 26 Aug 2015 14:30:34 GMT", + "title": "Olympic Rewards Announced", + "link": "https://blog.ethereum.org/en/2015/08/26/olympic-rewards-announced", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 20 Aug 2015 17:26:23 GMT", + "title": "Security alert [consensus issue]", + "link": "https://blog.ethereum.org/en/2015/08/20/security-alert-consensus-issue", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Aug 2015 14:30:56 GMT", + "title": "An Analysis of the First 100000 Blocks", + "link": "https://blog.ethereum.org/en/2015/08/18/frontier-first-100k-blocks", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 08 Aug 2015 11:08:19 GMT", + "title": "Chain Reorganisation Depth Expectations", + "link": "https://blog.ethereum.org/en/2015/08/08/chain-reorganisation-depth-expectations", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 07 Aug 2015 19:08:38 GMT", + "title": "Security Alert 1 [windows+alethzero]", + "link": "https://blog.ethereum.org/en/2015/08/07/security-alert-1-windowsalethzero-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 07 Aug 2015 06:42:57 GMT", + "title": "On Public and Private Blockchains", + "link": "https://blog.ethereum.org/en/2015/08/07/on-public-and-private-blockchains", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 04 Aug 2015 22:42:56 GMT", + "title": "Ethereum Protocol Update 1", + "link": "https://blog.ethereum.org/en/2015/08/04/ethereum-protocol-update-1", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 04 Aug 2015 01:19:26 GMT", + "title": "The Thawing Frontier", + "link": "https://blog.ethereum.org/en/2015/08/04/the-thawing-frontier", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 01 Aug 2015 19:00:40 GMT", + "title": "Introducing Casper “the Friendly Ghost”", + "link": "https://blog.ethereum.org/en/2015/08/01/introducing-casper-friendly-ghost", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 30 Jul 2015 17:33:36 GMT", + "title": "Announcing the New Foundation Board and Executive Director", + "link": "https://blog.ethereum.org/en/2015/07/30/announcing-new-foundation-board-executive-director", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 30 Jul 2015 13:32:48 GMT", + "title": "Ethereum Launches", + "link": "https://blog.ethereum.org/en/2015/07/30/ethereum-launches", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 30 Jul 2015 12:04:20 GMT", + "title": "A few last minute notes…", + "link": "https://blog.ethereum.org/en/2015/07/30/a-few-last-minute-notes", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 27 Jul 2015 20:20:01 GMT", + "title": "Final Steps", + "link": "https://blog.ethereum.org/en/2015/07/27/final-steps", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 22 Jul 2015 12:49:56 GMT", + "title": "Frontier is coming - what to expect, and how to prepare", + "link": "https://blog.ethereum.org/en/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 07 Jul 2015 02:07:17 GMT", + "title": "How do you know Ethereum is secure?", + "link": "https://blog.ethereum.org/en/2015/07/07/know-ethereum-secure", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 05 Jul 2015 11:06:58 GMT", + "title": "On Abstraction", + "link": "https://blog.ethereum.org/en/2015/07/05/on-abstraction", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 26 Jun 2015 20:05:53 GMT", + "title": "State Tree Pruning", + "link": "https://blog.ethereum.org/en/2015/06/26/state-tree-pruning", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 21 Jun 2015 23:36:03 GMT", + "title": "Ethereum messaging for the masses (including fathers) - via infographic", + "link": "https://blog.ethereum.org/en/2015/06/21/ethereum-messaging-masses-including-fathers-via-infographic", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 15 Jun 2015 08:23:02 GMT", + "title": "Another Ethereum ÐΞV Update", + "link": "https://blog.ethereum.org/en/2015/06/15/another-ethereum-dev-update", + "imgSrc": "https://blog.ethereum.org/images/posts/youth.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 06 Jun 2015 10:35:12 GMT", + "title": "The Problem of Censorship", + "link": "https://blog.ethereum.org/en/2015/06/06/the-problem-of-censorship", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 24 May 2015 04:35:22 GMT", + "title": "The Business Imperative Behind the Ethereum Vision", + "link": "https://blog.ethereum.org/en/2015/05/24/the-business-imperative-behind-the-ethereum-vision", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 14 May 2015 20:03:22 GMT", + "title": "Announcing eπ: Ethereum on Raspberry Pi Programme", + "link": "https://blog.ethereum.org/en/2015/05/14/announcing-e%CF%80-ethereum-on-raspberry-pi-programme", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 09 May 2015 15:11:09 GMT", + "title": "Olympic: Frontier Pre-Release", + "link": "https://blog.ethereum.org/en/2015/05/09/olympic-frontier-pre-release", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 02 May 2015 17:44:52 GMT", + "title": "The end of the beginning…", + "link": "https://blog.ethereum.org/en/2015/05/02/the-end-of-the-beginning", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 27 Apr 2015 10:35:34 GMT", + "title": "Visions, Part 2: The Problem of Trust", + "link": "https://blog.ethereum.org/en/2015/04/27/visions-part-2-the-problem-of-trust", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 13 Apr 2015 06:25:36 GMT", + "title": "Visions, Part 1: The Value of Blockchain Technology", + "link": "https://blog.ethereum.org/en/2015/04/13/visions-part-1-the-value-of-blockchain-technology", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 10 Apr 2015 20:51:33 GMT", + "title": "Ethereum Foundation Open Call re: Board Selection", + "link": "https://blog.ethereum.org/en/2015/04/10/ethereum-foundation-open-call-re-board-selection", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 08 Apr 2015 17:33:14 GMT", + "title": "Ethereum Foundation is hiring an Executive Director", + "link": "https://blog.ethereum.org/en/2015/04/08/ethereum-foundation-is-hiring-an-executive-director", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 07 Apr 2015 17:24:23 GMT", + "title": "DEVgrants: Here to Help", + "link": "https://blog.ethereum.org/en/2015/04/07/devgrants-help", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 06 Apr 2015 17:50:03 GMT", + "title": "Ethereum Builders: Tapping Into The Collaborative Potential", + "link": "https://blog.ethereum.org/en/2015/04/06/ethereum-builders-supercharging-github", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 05 Apr 2015 14:28:13 GMT", + "title": "Blockchain Scalability: Chain-Fibers Redux", + "link": "https://blog.ethereum.org/en/2015/04/05/blockchain-scalability-chain-fibers-redux", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 05 Apr 2015 01:00:09 GMT", + "title": "Bazaar Services", + "link": "https://blog.ethereum.org/en/2015/04/05/bazaar-services", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 02 Apr 2015 13:54:15 GMT", + "title": "Implementing Vitalik’s vision", + "link": "https://blog.ethereum.org/en/2015/04/02/implementing-vitaliks-vision", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 01 Apr 2015 12:18:54 GMT", + "title": "Ethereum’s unexpected future direction", + "link": "https://blog.ethereum.org/en/2015/04/01/ethereums-unexpected-future-direction", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 20 Mar 2015 12:54:42 GMT", + "title": "Ethereum Builders: A Proposed Experiment", + "link": "https://blog.ethereum.org/en/2015/03/20/ethereum-builders-experiment", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 20 Mar 2015 11:18:25 GMT", + "title": "Jutta’s update on bug bounty program and security audit", + "link": "https://blog.ethereum.org/en/2015/03/20/juttas-update-bug-bounty-program-security-audit", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 14 Mar 2015 16:26:30 GMT", + "title": "Mihai’s Ethereum Project Update. The First Year.", + "link": "https://blog.ethereum.org/en/2015/03/14/ethereum-the-first-year", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 12 Mar 2015 18:36:27 GMT", + "title": "Getting to the Frontier", + "link": "https://blog.ethereum.org/en/2015/03/12/getting-to-the-frontier", + "imgSrc": "https://blog.ethereum.org/images/posts/Frontier_BLOG-Image_2.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 05 Mar 2015 18:15:00 GMT", + "title": "The Ethereum Development Process", + "link": "https://blog.ethereum.org/en/2015/03/05/ethereum-development-process", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 03 Mar 2015 17:09:45 GMT", + "title": "The Ethereum Launch Process", + "link": "https://blog.ethereum.org/en/2015/03/03/ethereum-launch-process", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 02 Mar 2015 17:00:35 GMT", + "title": "Gav’s Ethereum ÐΞV Update V", + "link": "https://blog.ethereum.org/en/2015/03/02/gavs-ethereum-dev-update-v", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 14 Feb 2015 09:31:23 GMT", + "title": "The Subjectivity / Exploitability Tradeoff", + "link": "https://blog.ethereum.org/en/2015/02/14/subjectivity-exploitability-tradeoff", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 28 Jan 2015 15:52:33 GMT", + "title": "The P + epsilon Attack", + "link": "https://blog.ethereum.org/en/2015/01/28/p-epsilon-attack", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 23 Jan 2015 23:11:34 GMT", + "title": "Superrationality and DAOs", + "link": "https://blog.ethereum.org/en/2015/01/23/superrationality-daos", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 10 Jan 2015 04:39:30 GMT", + "title": "Light Clients and Proof of Stake", + "link": "https://blog.ethereum.org/en/2015/01/10/light-clients-proof-stake", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 09 Jan 2015 13:01:49 GMT", + "title": "Ethereum Community Survey", + "link": "https://blog.ethereum.org/en/2015/01/09/ethereum-community-survey", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 06 Jan 2015 18:29:05 GMT", + "title": "Jeff’s Ethereum ÐΞV Update II", + "link": "https://blog.ethereum.org/en/2015/01/06/jeffs-ethereum-dev-update-2", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 31 Dec 2014 05:01:43 GMT", + "title": "On Silos", + "link": "https://blog.ethereum.org/en/2014/12/31/silos", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 26 Dec 2014 14:27:04 GMT", + "title": "Secret Sharing DAOs: The Other Crypto 2.0", + "link": "https://blog.ethereum.org/en/2014/12/26/secret-sharing-daos-crypto-2-0", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 18 Dec 2014 21:09:24 GMT", + "title": "A call to all the bug bounty hunters out there…", + "link": "https://blog.ethereum.org/en/2014/12/18/call-bug-bounty-hunters", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 17 Dec 2014 16:29:20 GMT", + "title": "Ethereum ÐΞV: What are we doing?", + "link": "https://blog.ethereum.org/en/2014/12/17/ethereum-dev", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 15 Dec 2014 23:25:29 GMT", + "title": "Gav’s Ethereum ÐΞV Update IV", + "link": "https://blog.ethereum.org/en/2014/12/15/gavs-ethereum-dev-update-iv", + "imgSrc": "https://blog.ethereum.org/images/posts/2014/12/IMG_7465.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 05 Dec 2014 19:02:19 GMT", + "title": "ÐΞVcon-0 Recap", + "link": "https://blog.ethereum.org/en/2014/12/05/devcon-0-recap", + "imgSrc": "https://blog.ethereum.org/images/posts/DEV-CON-POSTERSblog.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Dec 2014 19:23:15 GMT", + "title": "From inside Ethereum ÐΞVhub Berlin", + "link": "https://blog.ethereum.org/en/2014/12/02/inside-ethereum-devhub-berlin", + "imgSrc": "https://blog.ethereum.org/images/posts/2014/12/IMG_7465.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 25 Nov 2014 13:24:47 GMT", + "title": "Proof of Stake: How I Learned to Love Weak Subjectivity", + "link": "https://blog.ethereum.org/en/2014/11/25/proof-stake-learned-love-weak-subjectivity", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 20 Nov 2014 00:09:21 GMT", + "title": "On Bitcoin Maximalism, and Currency and Platform Network Effects", + "link": "https://blog.ethereum.org/en/2014/11/20/bitcoin-maximalism-currency-platform-network-effects", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Nov 2014 01:17:56 GMT", + "title": "Gav’s Ethereum ÐΞV Update III", + "link": "https://blog.ethereum.org/en/2014/11/18/gavs-dev-update-iii", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 13 Nov 2014 18:02:36 GMT", + "title": "Scalability, Part 3: On Metacoin History and Multichain", + "link": "https://blog.ethereum.org/en/2014/11/13/scalability-part-3-metacoin-history-multichain", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 11 Nov 2014 21:24:21 GMT", + "title": "The Search for a Stable Cryptocurrency", + "link": "https://blog.ethereum.org/en/2014/11/11/search-stable-cryptocurrency", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 03 Nov 2014 22:50:57 GMT", + "title": "Ethereum Community and Adoption Update - Week 1", + "link": "https://blog.ethereum.org/en/2014/11/03/stephans-ethereum-community-adoption-update-week-1", + "imgSrc": "https://blog.ethereum.org/images/posts/vlcsnap-2014-11-03-19h47m32s52.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 02 Nov 2014 16:48:02 GMT", + "title": "Jeff’s Ethereum ÐΞV Update I", + "link": "https://blog.ethereum.org/en/2014/11/02/jeffs-ethereum-dev-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 01 Nov 2014 15:58:57 GMT", + "title": "Gav’s Ethereum ÐΞV Update II", + "link": "https://blog.ethereum.org/en/2014/11/01/gavs-ethereum-dev-update-ii", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 23 Oct 2014 09:23:15 GMT", + "title": "An Information-Theoretic Account of Secure Brainwallets", + "link": "https://blog.ethereum.org/en/2014/10/23/information-theoretic-account-secure-brainwallets", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 21 Oct 2014 15:01:51 GMT", + "title": "Scalability, Part 2: Hypercubes", + "link": "https://blog.ethereum.org/en/2014/10/21/scalability-part-2-hypercubes", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 17 Oct 2014 13:58:46 GMT", + "title": "Gav’s ÐΞV Update I: Where Ethereum’s at", + "link": "https://blog.ethereum.org/en/2014/10/17/gavs-dev-update-ethereums", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 03 Oct 2014 09:04:27 GMT", + "title": "Slasher Ghost, and Other Developments in Proof of Stake", + "link": "https://blog.ethereum.org/en/2014/10/03/slasher-ghost-developments-proof-stake", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 17 Sep 2014 14:01:25 GMT", + "title": "Scalability, Part 1: Building on Top", + "link": "https://blog.ethereum.org/en/2014/09/17/scalability-part-1-building-top", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Sep 2014 22:40:14 GMT", + "title": "crypto renaissance", + "link": "https://blog.ethereum.org/en/2014/09/02/crypto-renaissance", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Sep 2014 21:02:19 GMT", + "title": "Software and Bounded Rationality", + "link": "https://blog.ethereum.org/en/2014/09/02/software-bounded-rationality", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 27 Aug 2014 22:40:38 GMT", + "title": "State of Ethereum: August Edition", + "link": "https://blog.ethereum.org/en/2014/08/27/state-ethereum-august-edition", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 21 Aug 2014 20:30:48 GMT", + "title": "An Introduction to Futarchy", + "link": "https://blog.ethereum.org/en/2014/08/21/introduction-futarchy", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 18 Aug 2014 11:18:13 GMT", + "title": "building the decentralized web 3.0", + "link": "https://blog.ethereum.org/en/2014/08/18/building-decentralized-web", + "imgSrc": "https://blog.ethereum.org/images/posts/CCTV.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 16 Aug 2014 01:56:58 GMT", + "title": "Secret Sharing and Erasure Coding: A Guide for the Aspiring Dropbox Decentralizer", + "link": "https://blog.ethereum.org/en/2014/08/16/secret-sharing-erasure-coding-guide-aspiring-dropbox-decentralizer", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 08 Aug 2014 17:58:31 GMT", + "title": "Announcement on planned withdrawal from exodus", + "link": "https://blog.ethereum.org/en/2014/08/08/announcement-on-planned-exodus-withdrawal", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 08 Aug 2014 17:23:58 GMT", + "title": "Ether Sale: A Statistical Overview", + "link": "https://blog.ethereum.org/en/2014/08/08/ether-sale-a-statistical-overview", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 06 Aug 2014 02:57:35 GMT", + "title": "Programming Society with Asm: Gavin Wood at Assembly 2014", + "link": "https://blog.ethereum.org/en/2014/08/06/programming-society-with-asm-gavin-wood-at-assembly-2014", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 23 Jul 2014 04:05:24 GMT", + "title": "Ether Purchase Troubleshooting", + "link": "https://blog.ethereum.org/en/2014/07/23/ether-purchase-troubleshooting", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 22 Jul 2014 22:00:44 GMT", + "title": "Launching the Ether Sale", + "link": "https://blog.ethereum.org/en/2014/07/22/launching-the-ether-sale", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 22 Jul 2014 15:27:47 GMT", + "title": "Ethereum and Oracles", + "link": "https://blog.ethereum.org/en/2014/07/22/ethereum-and-oracles", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 14 Jul 2014 13:37:18 GMT", + "title": "the ethereum project: learning to dream with open minds", + "link": "https://blog.ethereum.org/en/2014/07/14/the-ethereum-project", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 11 Jul 2014 15:52:25 GMT", + "title": "Toward a 12-second Block Time", + "link": "https://blog.ethereum.org/en/2014/07/11/toward-a-12-second-block-time", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 09 Jul 2014 08:16:56 GMT", + "title": "Background on the mechanics of the ether pre-sale", + "link": "https://blog.ethereum.org/en/2014/07/09/how-to-make-a-purchase-in-the-ether-presale", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 05 Jul 2014 16:41:50 GMT", + "title": "On Stake", + "link": "https://blog.ethereum.org/en/2014/07/05/stake", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 30 Jun 2014 11:48:37 GMT", + "title": "Advanced Contract Programming Example: SchellingCoin", + "link": "https://blog.ethereum.org/en/2014/06/30/advanced-contract-programming-example-schellingcoin", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 19 Jun 2014 21:57:10 GMT", + "title": "On Mining", + "link": "https://blog.ethereum.org/en/2014/06/19/mining", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 05 Jun 2014 09:39:47 GMT", + "title": "Ethereum Project Update", + "link": "https://blog.ethereum.org/en/2014/06/05/ethereum-project-update", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 27 May 2014 09:42:54 GMT", + "title": "What If Ethereum Lived on a Treap? Or, Blockchains Charging Rent", + "link": "https://blog.ethereum.org/en/2014/05/27/what-if-ethereum-lived-on-a-treap-or-blockchains-charging-rent", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 24 May 2014 09:45:21 GMT", + "title": "On Long-Term Cryptocurrency Distribution Models", + "link": "https://blog.ethereum.org/en/2014/05/24/on-long-term-cryptocurrency-distribution-models", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 May 2014 09:45:48 GMT", + "title": "Long-Range Attacks: The Serious Problem With Adaptive Proof of Work", + "link": "https://blog.ethereum.org/en/2014/05/15/long-range-attacks-the-serious-problem-with-adaptive-proof-of-work", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 15 May 2014 09:40:18 GMT", + "title": "The Xbox and Ethereum’s Dual Mandate", + "link": "https://blog.ethereum.org/en/2014/05/15/the-xbox-and-ethereums-dual-mandate", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 14 May 2014 09:46:51 GMT", + "title": "What is Ethereum? Project, Platform, Fuel, Stack.", + "link": "https://blog.ethereum.org/en/2014/05/14/what-is-ethereum-project-platform-fuel-stack", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 06 May 2014 09:49:11 GMT", + "title": "DAOs, DACs, DAs and More: An Incomplete Terminology Guide", + "link": "https://blog.ethereum.org/en/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 02 May 2014 09:49:42 GMT", + "title": "Serpent upgrades: More Fun Stuff", + "link": "https://blog.ethereum.org/en/2014/05/02/serpent-upgrades-more-fun-stuff", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 30 Apr 2014 09:56:24 GMT", + "title": "Decentralized Protocol Monetization and Forks", + "link": "https://blog.ethereum.org/en/2014/04/30/decentralized-protocol-monetization-and-forks", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Apr 2014 09:56:56 GMT", + "title": "The Issuance Model in Ethereum", + "link": "https://blog.ethereum.org/en/2014/04/10/the-issuance-model-in-ethereum", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 10 Apr 2014 09:50:34 GMT", + "title": "Pyethereum and Serpent Programming Guide", + "link": "https://blog.ethereum.org/en/2014/04/10/pyethereum-and-serpent-programming-guide", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Fri, 28 Mar 2014 10:03:37 GMT", + "title": "SchellingCoin: A Minimal-Trust Universal Data Feed", + "link": "https://blog.ethereum.org/en/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 20 Mar 2014 10:04:28 GMT", + "title": "The Latest EVM: “Ethereum Is A Trust-Free Closure System”", + "link": "https://blog.ethereum.org/en/2014/03/20/the-latest-evm-ethereum-is-a-trust-free-closure-system", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 20 Mar 2014 10:00:56 GMT", + "title": "The Question of Mining", + "link": "https://blog.ethereum.org/en/2014/03/20/the-question-of-mining", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 01 Mar 2014 10:05:22 GMT", + "title": "DAOs Are Not Scary, Part 2: Reducing Barriers", + "link": "https://blog.ethereum.org/en/2014/03/01/daos-are-not-scary-part-2-reducing-barriers", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 24 Feb 2014 10:05:41 GMT", + "title": "DAOs Are Not Scary, Part 1: Self-Enforcing Contracts And Factum Law", + "link": "https://blog.ethereum.org/en/2014/02/24/daos-are-not-scary-part-1-self-enforcing-contracts-and-factum-law", + "imgSrc": "https://blog.ethereum.org/images/posts/social-issues.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 18 Feb 2014 10:06:42 GMT", + "title": "Ethereum Scalability and Decentralization Updates", + "link": "https://blog.ethereum.org/en/2014/02/18/ethereum-scalability-and-decentralization-updates", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 13 Feb 2014 10:07:35 GMT", + "title": "Important Statement regarding the Ether pre-sale", + "link": "https://blog.ethereum.org/en/2014/02/13/important-statement-regarding-the-ether-pre-sale", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sun, 09 Feb 2014 10:08:53 GMT", + "title": "Why Not Just Use X? An Instructive Example from Bitcoin", + "link": "https://blog.ethereum.org/en/2014/02/09/why-not-just-use-x-an-instructive-example-from-bitcoin", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 08 Feb 2014 10:09:19 GMT", + "title": "Cryptographic Code Obfuscation: Decentralized Autonomous Organizations Are About to Take a Huge Leap Forward", + "link": "https://blog.ethereum.org/en/2014/02/08/cryptographic-code-obfuscation-decentralized-autonomous-organizations-are-about-to-take-a-huge-leap-forward", + "imgSrc": "https://blog.ethereum.org/images/posts/blackhole.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 05 Feb 2014 10:09:42 GMT", + "title": "More Thoughts on Scripting and Future-Compatibility", + "link": "https://blog.ethereum.org/en/2014/02/05/more-thoughts-on-scripting-and-future-compatibility", + "imgSrc": "https://blog.ethereum.org/images/posts/internet.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Mon, 03 Feb 2014 10:00:19 GMT", + "title": "Introducing Ethereum Script 2.0", + "link": "https://blog.ethereum.org/en/2014/02/03/introducing-ethereum-script-2-0", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 01 Feb 2014 10:10:48 GMT", + "title": "On Transaction Fees, And The Fallacy of Market-Based Solutions", + "link": "https://blog.ethereum.org/en/2014/02/01/on-transaction-fees-and-the-fallacy-of-market-based-solutions", + "imgSrc": "https://blog.ethereum.org/images/posts/minimi-family-min.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 29 Jan 2014 10:11:26 GMT", + "title": "Conference, Alpha Testnet and Ether Pre-sale Updates", + "link": "https://blog.ethereum.org/en/2014/01/29/conference-alpha-testnet-and-ether-pre-sale-updates", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Thu, 23 Jan 2014 10:12:18 GMT", + "title": "Ethereum: Now Going Public", + "link": "https://blog.ethereum.org/en/2014/01/23/ethereum-now-going-public", + "imgSrc": "https://blog.ethereum.org/images/ethereum-blog-og-image.png", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Wed, 15 Jan 2014 10:12:56 GMT", + "title": "Slasher: A Punitive Proof-of-Stake Algorithm", + "link": "https://blog.ethereum.org/en/2014/01/15/slasher-a-punitive-proof-of-stake-algorithm", + "imgSrc": "https://blog.ethereum.org/images/posts/slasher.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 31 Dec 2013 22:00:24 GMT", + "title": "Bootstrapping a Decentralized Autonomous Corporation, Part 3: Identity Corp", + "link": "https://blog.ethereum.org/en/2013/12/31/bootstrapping-a-decentralized-autonomous-corporation-part-3-identity-corp", + "imgSrc": "https://blog.ethereum.org/images/posts/anon.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 31 Dec 2013 20:00:00 GMT", + "title": "Bootstrapping An Autonomous Decentralized Corporation, Part 2: Interacting With the World", + "link": "https://blog.ethereum.org/en/2013/12/31/bootstrapping-an-autonomous-decentralized-corporation-part-2-interacting-with-the-world", + "imgSrc": "https://blog.ethereum.org/images/posts/internet.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 31 Dec 2013 18:00:37 GMT", + "title": "Bootstrapping A Decentralized Autonomous Corporation: Part I", + "link": "https://blog.ethereum.org/en/2013/12/31/bootstrapping-a-decentralized-autonomous-corporation-part-i", + "imgSrc": "https://blog.ethereum.org/images/posts/blackhole.jpg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + } + ], + [ + { + "pubDate": "Fri, 03 Oct 2025 00:00:00 GMT", + "title": "Fusaka bandwidth estimation", + "link": "https://ethpandaops.io/posts/fusaka-bandwidth-estimation/", + "imgSrc": "https://ethpandaops.io/img/blog/fusaka-bandwidth-needs/cyberpunk-blob-estimation.png", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Thu, 18 Sep 2025 00:00:00 GMT", + "title": "Fusaka-Devnet-5 BPO Analysis", + "link": "https://ethpandaops.io/posts/fusaka-devnet-5-bpo-analysis/", + "imgSrc": "https://ethpandaops.io/img/blog/fusaka-devnet-5-bpo-analysis.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Mon, 30 Jun 2025 00:00:00 GMT", + "title": "Scaling Ethereum: The Path to 45M Gas Limit and Beyond", + "link": "https://ethpandaops.io/posts/gaslimit-scaling/", + "imgSrc": "https://ethpandaops.io/img/blog/gaslimit-panda.png", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Fri, 30 May 2025 00:00:00 GMT", + "title": "EIP-7691 Retrospective", + "link": "https://ethpandaops.io/posts/eip7691-retrospective/", + "imgSrc": "https://ethpandaops.io/img/blog/eip7691-retrospective/hero.png", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Tue, 27 May 2025 00:00:00 GMT", + "title": "60M Gas Limit on Sepolia & Hoodi", + "link": "https://ethpandaops.io/posts/60m-gas-sepolia-hoodi/", + "imgSrc": "https://ethpandaops.io/img/blog/60m-gas-testnets.png", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Thu, 01 May 2025 00:00:00 GMT", + "title": "Pectra Mainnet Checklist", + "link": "https://ethpandaops.io/posts/pectra-mainnet-checklist/", + "imgSrc": "https://ethpandaops.io/img/blog/pectra-mainnet.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Wed, 02 Apr 2025 00:00:00 GMT", + "title": "Electra on Hoodi: Attestation Packing", + "link": "https://ethpandaops.io/posts/hoodi-attestation-packing/", + "imgSrc": "https://ethpandaops.io/img/blog/hoodi-attestations.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Tue, 01 Apr 2025 00:00:00 GMT", + "title": "EthPandaOps Pivots to GitChain", + "link": "https://ethpandaops.io/posts/april-fools/", + "imgSrc": "https://ethpandaops.io/img/blog/april-fools.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Mon, 27 Jan 2025 00:00:00 GMT", + "title": "Contributoor: A Lightweight Beacon Node Companion", + "link": "https://ethpandaops.io/posts/contributoor-beacon-node-companion/", + "imgSrc": "https://ethpandaops.io/img/blog/contributoor-beacon-node-companion.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Wed, 27 Nov 2024 00:00:00 GMT", + "title": "Understanding the Ethereum network limits using devnets", + "link": "https://ethpandaops.io/posts/network-limit-devnets/", + "imgSrc": "https://ethpandaops.io/img/blog/network-limit-devnets.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Wed, 16 Oct 2024 00:00:00 GMT", + "title": "Xatu Execution Layer data now available", + "link": "https://ethpandaops.io/posts/xatu-execution-layer/", + "imgSrc": "https://ethpandaops.io/img/blog/xatu-execution-layer.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Fri, 04 Oct 2024 00:00:00 GMT", + "title": "Contribute to Xatu: Join the Community Data Collection Effort", + "link": "https://ethpandaops.io/posts/contribute-to-xatu-data/", + "imgSrc": "https://ethpandaops.io/img/blog/contribute-to-xatu-data.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Thu, 22 Aug 2024 00:00:00 GMT", + "title": "Xatu Consensus Layer P2P tables now available", + "link": "https://ethpandaops.io/posts/xatu-consensus-layer-p2p/", + "imgSrc": "https://ethpandaops.io/img/blog/xatu-consensus-layer-p2p.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Mon, 17 Jun 2024 00:00:00 GMT", + "title": "Reusing the Kurtosis Ethereum-package as a base for your L2 devnet", + "link": "https://ethpandaops.io/posts/kurtosis-l2/", + "imgSrc": "https://ethpandaops.io/img/blog/kurtosis-l2.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Fri, 19 Apr 2024 00:00:00 GMT", + "title": "Kurtosis: A Deep Dive to Local Devnets", + "link": "https://ethpandaops.io/posts/kurtosis-deep-dive/", + "imgSrc": "https://ethpandaops.io/img/blog/kurtosis-deep-dive.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Thu, 18 Apr 2024 00:00:00 GMT", + "title": "Assertoor: Ethereum Testnet Testing Tool", + "link": "https://ethpandaops.io/posts/assertoor-introduction/", + "imgSrc": "https://ethpandaops.io/img/blog/assertor-introduction.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Fri, 12 Apr 2024 00:00:00 GMT", + "title": "Tracoor: Ethereum beacon data and execution trace explorer", + "link": "https://ethpandaops.io/posts/tracoor-debug-tool/", + "imgSrc": "https://ethpandaops.io/img/blog/tracoor-debug-tool.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Mon, 25 Mar 2024 00:00:00 GMT", + "title": "Open Sourcing Xatu Data", + "link": "https://ethpandaops.io/posts/open-source-xatu-data/", + "imgSrc": "https://ethpandaops.io/img/blog/open-source-xatu-data.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Mon, 18 Mar 2024 00:00:00 GMT", + "title": "Attacknet: Chaos engineering on Ethereum", + "link": "https://ethpandaops.io/posts/attacknet-introduction/", + "imgSrc": "https://ethpandaops.io/img/blog/attacknet-introduction.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Fri, 15 Mar 2024 00:00:00 GMT", + "title": "Dencun Fork Analysis", + "link": "https://ethpandaops.io/posts/dencun-fork-analysis/", + "imgSrc": "https://ethpandaops.io/img/blog/dencun-fork-analysis.jpg", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + } + ], + [ + { + "pubDate": "Mon, 27 Oct 2025 10:23:24 GMT", + "title": "Making Sense of a ZK Staking Node", + "link": "https://paragraph.com/@ethstaker/making-sense-of-a-zk-staking-node", + "imgSrc": "https://watch.protocol.berlin","description":"Without clear goals for what our network should provide, we end up optimising for our means rather than for our ends. In this talk, I'll discuss the goals of our network - scale, hardness, verifiability and censorship-resistance - and how some of the means (\\"local building\\", \\"solo staking\\") should be re-evaluated in light of their contributions to these goals, given advances in protocol research.","title":"What we want from our nodes","thumbnail_width":1280,"url":"https://watch.protocol.berlin/65a90bf47932ebe436ba9351/watch?session=6858d70d90bd41297b7bc45d","thumbnail_url":"https://storage.googleapis.com/papyrus_images/5040d0969c85a369a71fbf7bfa2d26fd43f4129f454329d478e62a8b6016925f.jpg", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Tue, 29 Jul 2025 18:31:18 GMT", + "title": "2025 Staking Survey Results", + "link": "https://paragraph.com/@ethstaker/staking-survey-2025", + "imgSrc": "https://storage.googleapis.com/papyrus_images/db4017de64f4be77f2acd1bae1dc5875.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Fri, 21 Mar 2025 16:29:35 GMT", + "title": "Now Open: 2025 Staking Landscape Survey", + "link": "https://paragraph.com/@ethstaker/2025-staking-landscape-survey", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Fri, 14 Feb 2025 14:00:01 GMT", + "title": "Ethereum Solo Staker List Handover to EthStaker", + "link": "https://paragraph.com/@ethstaker/ethereum-solo-staker-list-handover-to-ethstaker", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Sat, 14 Dec 2024 01:49:54 GMT", + "title": "Staking Bandwidth Survey - Fall 2024", + "link": "https://paragraph.com/@ethstaker/staking-bandwidth-survey-fall-2024", + "imgSrc": "https://storage.googleapis.com/papyrus_images/7eff90ba4fe4bd226b611cfbfa3f0976.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Tue, 02 Jul 2024 00:00:00 GMT", + "title": "Staking Survey 2024", + "link": "https://paragraph.com/@ethstaker/staking-survey-2024", + "imgSrc": "https://storage.googleapis.com/papyrus_images/233bc1c6de8b1aed403a65e9a4fa8a3d.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Thu, 16 May 2024 22:16:28 GMT", + "title": "Securing the Ethereum Protocol Using OVHcloud", + "link": "https://paragraph.com/@ethstaker/securing-the-ethereum-protocol-using-ovhcloud", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Tue, 30 Apr 2024 00:00:00 GMT", + "title": "Am I a solo staker?", + "link": "https://paragraph.com/@ethstaker/define-solo-staker", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Fri, 23 Feb 2024 00:00:00 GMT", + "title": "Enhancing Censorship Resistance Options For Stakers ", + "link": "https://paragraph.com/@ethstaker/enhancing-censorship-resistance-options-for-stakers", + "imgSrc": "https://storage.googleapis.com/papyrus_images/2bf032740de78bec0f2f2d67ac1804eb.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Tue, 12 Dec 2023 00:00:00 GMT", + "title": "Announcing the DVT Home Staker Program", + "link": "https://paragraph.com/@ethstaker/dvtprogram", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Fri, 15 Sep 2023 13:30:15 GMT", + "title": "Tickets are available and schedule is live for Staking Gathering", + "link": "https://paragraph.com/@ethstaker/tickets-are-available-and-schedule-is-live-for-staking-gathering", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Thu, 31 Aug 2023 00:00:00 GMT", + "title": "clientdiversity.org execution diversity data", + "link": "https://paragraph.com/@ethstaker/new-clientdiversity-data", + "imgSrc": "https://paragraph.xyz/editor/callout/tip-icon.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Tue, 22 Aug 2023 15:34:18 GMT", + "title": "EthStaker Staking Gathering 2023 in Istanbul", + "link": "https://paragraph.com/@ethstaker/ethstaker-staking-gathering-2023-in-istanbul", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Wed, 31 May 2023 21:59:57 GMT", + "title": "Execution Client Diversity", + "link": "https://paragraph.com/@ethstaker/execution-client-diversity", + "imgSrc": "https://paragraph.xyz/editor/callout/information-icon.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Sat, 27 May 2023 00:00:00 GMT", + "title": "Is staking just another crypto scam?", + "link": "https://paragraph.com/@ethstaker/catastrophic-crypto-events", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Mon, 22 May 2023 00:00:00 GMT", + "title": "Finding your best way to stake", + "link": "https://paragraph.com/@ethstaker/staking-beginners-p6", + "imgSrc": "https://storage.googleapis.com/papyrus_images/8f85021aab584d9d2f839db359485143.png", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Mon, 15 May 2023 00:00:00 GMT", + "title": "Why stake?", + "link": "https://paragraph.com/@ethstaker/staking-beginners-p5", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Fri, 12 May 2023 00:00:00 GMT", + "title": "Broad issues in Ethereum staking today", + "link": "https://paragraph.com/@ethstaker/staking-beginners-p4", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Mon, 08 May 2023 00:00:00 GMT", + "title": "How staking stays healthy long-term", + "link": "https://paragraph.com/@ethstaker/staking-beginners-p3", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + }, + { + "pubDate": "Fri, 05 May 2023 00:00:00 GMT", + "title": "What is a validator?", + "link": "https://paragraph.com/@ethstaker/staking-beginners-p2", + "imgSrc": "https://pbs.twimg.com/profile_images/1634274599671316481/zuG4QdaI_normal.jpg", + "source": "ethstaker", + "sourceUrl": "https://paragraph.com/@ethstaker", + "sourceFeedUrl": "https://raw.githubusercontent.com/eth-educators/github-actions/refs/heads/main/_data/blog_data.xml" + } + ], + [ + { + "pubDate": "Tue, 21 Oct 2025 00:00:00 GMT", + "title": "The Road to Core Solidity", + "link": "https://soliditylang.org///blog/2025/10/21/the-road-to-core-solidity", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 26 Aug 2025 00:00:00 GMT", + "title": "Solidity Summit 2025: Hola Argentina!", + "link": "https://soliditylang.org///blog/2025/08/26/solidity-summit-2025-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 07 May 2025 00:00:00 GMT", + "title": "Solidity 0.8.30 Release Announcement", + "link": "https://soliditylang.org///blog/2025/05/07/solidity-0.8.30-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 25 Apr 2025 00:00:00 GMT", + "title": "Solidity Developer Survey 2024 Results", + "link": "https://soliditylang.org///blog/2025/04/25/solidity-developer-survey-2024-results", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 27 Mar 2025 00:00:00 GMT", + "title": "The Case for EOF", + "link": "https://soliditylang.org///blog/2025/03/27/the-case-for-eof", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 12 Mar 2025 00:00:00 GMT", + "title": "Solidity 0.8.29 Release Announcement", + "link": "https://soliditylang.org///blog/2025/03/12/solidity-0.8.29-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 27 Dec 2024 00:00:00 GMT", + "title": "Solidity Developer Survey 2024 is Live!", + "link": "https://soliditylang.org///blog/2024/12/27/solidity-developer-survey-2024-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 14 Oct 2024 00:00:00 GMT", + "title": "Announcing the Winners of the Underhanded Solidity Contest 2024", + "link": "https://soliditylang.org///blog/2024/10/14/announcing-the-underhanded-contest-winners-2024", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 09 Oct 2024 00:00:00 GMT", + "title": "Solidity 0.8.28 Release Announcement", + "link": "https://soliditylang.org///blog/2024/10/09/solidity-0.8.28-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 04 Sep 2024 00:00:00 GMT", + "title": "Solidity 0.8.27 Release Announcement", + "link": "https://soliditylang.org///blog/2024/09/04/solidity-0.8.27-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 31 Jul 2024 00:00:00 GMT", + "title": "Underhanded Solidity Contest 2024 Announcement", + "link": "https://soliditylang.org///blog/2024/07/31/underhanded-solidity-contest-2024-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 12 Jul 2024 00:00:00 GMT", + "title": "A Closer Look at Via-IR", + "link": "https://soliditylang.org///blog/2024/07/12/a-closer-look-at-via-ir", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 21 May 2024 00:00:00 GMT", + "title": "Solidity 0.8.26 Release Announcement", + "link": "https://soliditylang.org///blog/2024/05/21/solidity-0.8.26-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 03 Apr 2024 00:00:00 GMT", + "title": "Solidity Developer Survey 2023 Results", + "link": "https://soliditylang.org///blog/2024/04/03/solidity-developer-survey-2023-results", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 14 Mar 2024 00:00:00 GMT", + "title": "Solidity 0.8.25 Release Announcement", + "link": "https://soliditylang.org///blog/2024/03/14/solidity-0.8.25-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 26 Jan 2024 00:00:00 GMT", + "title": "Transient Storage Opcodes in Solidity 0.8.24", + "link": "https://soliditylang.org///blog/2024/01/26/transient-storage", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 26 Jan 2024 00:00:00 GMT", + "title": "Solidity 0.8.24 Release Announcement", + "link": "https://soliditylang.org///blog/2024/01/26/solidity-0.8.24-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 08 Dec 2023 00:00:00 GMT", + "title": "Solidity Developer Survey 2023 is Live!", + "link": "https://soliditylang.org///blog/2023/12/08/solidity-developer-survey-2023-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 30 Nov 2023 00:00:00 GMT", + "title": "Solidity Summit 2023 Recap", + "link": "https://soliditylang.org///blog/2023/11/30/solidity-summit-2023-recap", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 08 Nov 2023 00:00:00 GMT", + "title": "Bug in Deduplication of Verbatim Blocks", + "link": "https://soliditylang.org///blog/2023/11/08/verbatim-invalid-deduplication-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 08 Nov 2023 00:00:00 GMT", + "title": "Solidity 0.8.23 Release Announcement", + "link": "https://soliditylang.org///blog/2023/11/08/solidity-0.8.23-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 25 Oct 2023 00:00:00 GMT", + "title": "Solidity 0.8.22 Release Announcement", + "link": "https://soliditylang.org///blog/2023/10/25/solidity-0.8.22-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 07 Aug 2023 00:00:00 GMT", + "title": "Solidity Summit 2023 Merhaba Türkiye!", + "link": "https://soliditylang.org///blog/2023/08/07/solidity-summit-2023-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 19 Jul 2023 00:00:00 GMT", + "title": "Solidity 0.8.21 Release Announcement", + "link": "https://soliditylang.org///blog/2023/07/19/solidity-0.8.21-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 19 Jul 2023 00:00:00 GMT", + "title": "Bug in Legacy Code Generation When Accessing the .selector Member on Expressions with Side Effects", + "link": "https://soliditylang.org///blog/2023/07/19/missing-side-effects-on-selector-access-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 19 Jul 2023 00:00:00 GMT", + "title": "FullInliner Non-Expression-Split Argument Evaluation Order Bug", + "link": "https://soliditylang.org///blog/2023/07/19/full-inliner-non-expression-split-argument-evaluation-order-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 10 May 2023 00:00:00 GMT", + "title": "Solidity 0.8.20 Release Announcement", + "link": "https://soliditylang.org///blog/2023/05/10/solidity-0.8.20-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 10 Mar 2023 00:00:00 GMT", + "title": "Solidity Developer Survey 2022 Results", + "link": "https://soliditylang.org///blog/2023/03/10/solidity-developer-survey-2022-results", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 22 Feb 2023 00:00:00 GMT", + "title": "Feature Deep-Dive: User-Defined Operators", + "link": "https://soliditylang.org///blog/2023/02/22/user-defined-operators", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 22 Feb 2023 00:00:00 GMT", + "title": "Solidity 0.8.19 Release Announcement", + "link": "https://soliditylang.org///blog/2023/02/22/solidity-0.8.19-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 01 Feb 2023 00:00:00 GMT", + "title": "Solidity 0.8.18 Release Announcement", + "link": "https://soliditylang.org///blog/2023/02/01/solidity-0.8.18-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 07 Dec 2022 00:00:00 GMT", + "title": "Solidity Developer Survey 2022 is Live!", + "link": "https://soliditylang.org///blog/2022/12/07/solidity-developer-survey-2022-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 05 Dec 2022 00:00:00 GMT", + "title": "Solidity Core Team Updates", + "link": "https://soliditylang.org///blog/2022/12/05/solidity-core-team-updates", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 08 Sep 2022 00:00:00 GMT", + "title": "Storage Write Removal Bug On Conditional Early Termination", + "link": "https://soliditylang.org///blog/2022/09/08/storage-write-removal-before-conditional-termination", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 08 Sep 2022 00:00:00 GMT", + "title": "Solidity 0.8.17 Release Announcement", + "link": "https://soliditylang.org///blog/2022/09/08/solidity-0.8.17-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 08 Aug 2022 00:00:00 GMT", + "title": "Solidity 0.8.16 Release Announcement", + "link": "https://soliditylang.org///blog/2022/08/08/solidity-0.8.16-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 08 Aug 2022 00:00:00 GMT", + "title": "Head Overflow Bug in Calldata Tuple ABI-Reencoding", + "link": "https://soliditylang.org///blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 15 Jun 2022 00:00:00 GMT", + "title": "Solidity 0.8.15 Release Announcement", + "link": "https://soliditylang.org///blog/2022/06/15/solidity-0.8.15-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 15 Jun 2022 00:00:00 GMT", + "title": "Optimizer Bug Regarding Memory Side Effects of Inline Assembly", + "link": "https://soliditylang.org///blog/2022/06/15/inline-assembly-memory-side-effects-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 15 Jun 2022 00:00:00 GMT", + "title": "Bug when Copying Dirty Bytes Arrays to Storage", + "link": "https://soliditylang.org///blog/2022/06/15/dirty-bytes-array-to-storage-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 18 May 2022 00:00:00 GMT", + "title": "Solidity 0.8.14 Release Announcement", + "link": "https://soliditylang.org///blog/2022/05/17/solidity-0.8.14-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 May 2022 00:00:00 GMT", + "title": "Bug Concerning Data Location during Inheritance", + "link": "https://soliditylang.org///blog/2022/05/17/data-location-inheritance-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 May 2022 00:00:00 GMT", + "title": "Size Check Bug in Nested Calldata Array ABI-Reencoding", + "link": "https://soliditylang.org///blog/2022/05/17/calldata-reencode-size-check-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 03 May 2022 00:00:00 GMT", + "title": "Solidity Summit 2022 Recap", + "link": "https://soliditylang.org///blog/2022/05/03/solidity-summit-2022-recap", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Sat, 09 Apr 2022 00:00:00 GMT", + "title": "Announcing the Winners of the Underhanded Solidity Contest 2022", + "link": "https://soliditylang.org///blog/2022/04/08/announcing-the-underhanded-contest-winners-2022", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 16 Mar 2022 00:00:00 GMT", + "title": "Solidity 0.8.13 Release Announcement", + "link": "https://soliditylang.org///blog/2022/03/16/solidity-0.8.13-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 16 Mar 2022 00:00:00 GMT", + "title": "abi.encodeCall Literals Bug", + "link": "https://soliditylang.org///blog/2022/03/16/encodecall-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 22 Feb 2022 00:00:00 GMT", + "title": "Solidity Summit 2022 Goes Amsterdam", + "link": "https://soliditylang.org///blog/2022/02/22/solidity-summit-2022-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 16 Feb 2022 00:00:00 GMT", + "title": "Solidity 0.8.12 Release Announcement", + "link": "https://soliditylang.org///blog/2022/02/16/solidity-0.8.12-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 09 Feb 2022 00:00:00 GMT", + "title": "Underhanded Solidity Contest 2022", + "link": "https://soliditylang.org///blog/2022/02/09/underhanded-solidity-contest-2022-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 07 Feb 2022 00:00:00 GMT", + "title": "Solidity Developer Survey 2021 Results", + "link": "https://soliditylang.org///blog/2022/02/07/solidity-developer-survey-2021-results", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 20 Dec 2021 00:00:00 GMT", + "title": "Solidity 0.8.11 Release Announcement", + "link": "https://soliditylang.org///blog/2021/12/20/solidity-0.8.11-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 18 Nov 2021 00:00:00 GMT", + "title": "Solidity Developer Survey 2021 is Live!", + "link": "https://soliditylang.org///blog/2021/11/18/solidity-developer-survey-2021", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 09 Nov 2021 00:00:00 GMT", + "title": "Solidity 0.8.10 Release Announcement", + "link": "https://soliditylang.org///blog/2021/11/09/solidity-0.8.10-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 29 Sep 2021 00:00:00 GMT", + "title": "User Defined Value Types Bug", + "link": "https://soliditylang.org///blog/2021/09/29/user-defined-value-types-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 29 Sep 2021 00:00:00 GMT", + "title": "Solidity 0.8.9 Release Announcement", + "link": "https://soliditylang.org///blog/2021/09/29/solidity-0.8.9-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 29 Sep 2021 00:00:00 GMT", + "title": "Signed Immutables Bug", + "link": "https://soliditylang.org///blog/2021/09/29/signed-immutables-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 27 Sep 2021 00:00:00 GMT", + "title": "User Defined Value Types in Solidity", + "link": "https://soliditylang.org///blog/2021/09/27/user-defined-value-types", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 27 Sep 2021 00:00:00 GMT", + "title": "Solidity 0.8.8 Release Announcement", + "link": "https://soliditylang.org///blog/2021/09/27/solidity-0.8.8-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 11 Aug 2021 00:00:00 GMT", + "title": "Solidity 0.8.7 Release Announcement", + "link": "https://soliditylang.org///blog/2021/08/11/solidity-0.8.7-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 22 Jun 2021 00:00:00 GMT", + "title": "Solidity 0.8.6 Release Announcement", + "link": "https://soliditylang.org///blog/2021/06/22/solidity-0.8.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 10 Jun 2021 00:00:00 GMT", + "title": "Solidity 0.8.5 Release Announcement", + "link": "https://soliditylang.org///blog/2021/06/10/solidity-0.8.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 03 May 2021 00:00:00 GMT", + "title": "What Happened with Solidity-related Domains?", + "link": "https://soliditylang.org///blog/2021/05/03/soliditylangorg-umbrella-domain", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 21 Apr 2021 00:00:00 GMT", + "title": "Solidity 0.8.4 Release Announcement", + "link": "https://soliditylang.org///blog/2021/04/21/solidity-0.8.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 21 Apr 2021 00:00:00 GMT", + "title": "Solidity ABI Decoder Bug For Multi-Dimensional Memory Arrays", + "link": "https://soliditylang.org///blog/2021/04/21/decoding-from-memory-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 21 Apr 2021 00:00:00 GMT", + "title": "Custom Errors in Solidity", + "link": "https://soliditylang.org///blog/2021/04/21/custom-errors", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 01 Apr 2021 00:00:00 GMT", + "title": "Announcing Solidity Version Collectibles & Community Governance 💎", + "link": "https://soliditylang.org///blog/2021/04/01/announcing-solidity-collectibles", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 23 Mar 2021 00:00:00 GMT", + "title": "Solidity 0.8.3 Release Announcement", + "link": "https://soliditylang.org///blog/2021/03/23/solidity-0.8.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 23 Mar 2021 00:00:00 GMT", + "title": "Solidity Optimizer Keccak Caching Bug", + "link": "https://soliditylang.org///blog/2021/03/23/keccak-optimizer-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 02 Mar 2021 00:00:00 GMT", + "title": "Solidity 0.8.2 Release Announcement", + "link": "https://soliditylang.org///blog/2021/03/02/solidity-0.8.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 02 Mar 2021 00:00:00 GMT", + "title": "Saving Gas with Simple Inlining", + "link": "https://soliditylang.org///blog/2021/03/02/saving-gas-with-simple-inliner", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 15 Feb 2021 00:00:00 GMT", + "title": "Contributing to Solidity 101", + "link": "https://soliditylang.org///blog/2021/02/15/contributing-to-solidity-101", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 10 Feb 2021 00:00:00 GMT", + "title": "An Introduction to Solidity's Fuzz Testing Approach", + "link": "https://soliditylang.org///blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 01 Feb 2021 00:00:00 GMT", + "title": "Launching the Solidity Forum 🗃️", + "link": "https://soliditylang.org///blog/2021/02/01/launching-the-solidity-forum", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 27 Jan 2021 00:00:00 GMT", + "title": "Solidity 0.8.1 Release Announcement", + "link": "https://soliditylang.org///blog/2021/01/27/solidity-0.8.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 26 Jan 2021 00:00:00 GMT", + "title": "Solidity Developer Survey 2020 Results", + "link": "https://soliditylang.org///blog/2021/01/26/solidity-developer-survey-2020-results", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 16 Dec 2020 00:00:00 GMT", + "title": "Solidity 0.8.0 Release Announcement", + "link": "https://soliditylang.org///blog/2020/12/16/solidity-v0.8.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 16 Dec 2020 00:00:00 GMT", + "title": "Solidity 0.7.6 Release Announcement", + "link": "https://soliditylang.org///blog/2020/12/16/solidity-0.7.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 09 Dec 2020 00:00:00 GMT", + "title": "Launching the Solidity Developer Survey 2020", + "link": "https://soliditylang.org///blog/2020/12/09/solidity-developer-survey-2020", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 03 Dec 2020 00:00:00 GMT", + "title": "Announcing the Winners of the Underhanded Solidity Contest 👨‍💻🏅", + "link": "https://soliditylang.org///blog/2020/12/03/solidity-underhanded-contest-winners", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 18 Nov 2020 00:00:00 GMT", + "title": "Solidity 0.7.5 Release Announcement", + "link": "https://soliditylang.org///blog/2020/11/18/solidity-0.7.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 04 Nov 2020 00:00:00 GMT", + "title": "Ask the Solidity Team Anything #1 Recap", + "link": "https://soliditylang.org///blog/2020/11/04/solidity-ama-1-recap", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 28 Oct 2020 00:00:00 GMT", + "title": "Solidity 0.8.x Preview Release", + "link": "https://soliditylang.org///blog/2020/10/28/solidity-0.8.x-preview", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 19 Oct 2020 00:00:00 GMT", + "title": "Solidity 0.7.4 Release Announcement", + "link": "https://soliditylang.org///blog/2020/10/19/solidity-0.7.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 19 Oct 2020 00:00:00 GMT", + "title": "Solidity Empty Byte Array Copy Bug", + "link": "https://soliditylang.org///blog/2020/10/19/empty-byte-array-copy-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 07 Oct 2020 00:00:00 GMT", + "title": "Solidity Dynamic Array Cleanup Bug", + "link": "https://soliditylang.org///blog/2020/10/07/solidity-dynamic-array-cleanup-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 07 Oct 2020 00:00:00 GMT", + "title": "Solidity 0.7.3 Release Announcement", + "link": "https://soliditylang.org///blog/2020/10/07/solidity-0.7.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 28 Sep 2020 00:00:00 GMT", + "title": "Solidity 0.7.2 Release Announcement", + "link": "https://soliditylang.org///blog/2020/09/28/solidity-0.7.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 21 Sep 2020 00:00:00 GMT", + "title": "The Underhanded Solidity Contest is back!", + "link": "https://soliditylang.org///blog/2020/09/21/solidity-underhanded-contest", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 18 Sep 2020 00:00:00 GMT", + "title": "Meet the Solidity team! 🧑‍💻👩‍💻", + "link": "https://soliditylang.org///blog/2020/09/18/meet-the-team", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 02 Sep 2020 00:00:00 GMT", + "title": "Solidity 0.7.1 Release Announcement", + "link": "https://soliditylang.org///blog/2020/09/02/solidity-0.7.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 28 Jul 2020 00:00:00 GMT", + "title": "Solidity 0.7.0 Release Announcement", + "link": "https://soliditylang.org///blog/2020/07/28/solidity-v0.7.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 22 Jul 2020 00:00:00 GMT", + "title": "Solidity 0.6.12 Release Announcement", + "link": "https://soliditylang.org///blog/2020/07/22/Solidity-0612-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 08 Jul 2020 00:00:00 GMT", + "title": "Solidity v0.1.0 turns 5! A walk down memory lane...", + "link": "https://soliditylang.org///blog/2020/07/08/solidity-turns-5", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 07 Jul 2020 00:00:00 GMT", + "title": "Solidity 0.6.11 Release Announcement", + "link": "https://soliditylang.org///blog/2020/07/07/Solidity-0611-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 25 Jun 2020 00:00:00 GMT", + "title": "All you need to know about Sourcify", + "link": "https://soliditylang.org///blog/2020/06/25/sourcify-faq", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 18 Jun 2020 00:00:00 GMT", + "title": "Solidity 0.6.x features: inheritance", + "link": "https://soliditylang.org///blog/2020/06/18/solidity-0.6-inheritance", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 11 Jun 2020 00:00:00 GMT", + "title": "Solidity 0.6.10 Release Announcement", + "link": "https://soliditylang.org///blog/2020/06/11/Solidity-0610-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 09 Jun 2020 00:00:00 GMT", + "title": "Wrapping up the Virtual Solidity Summit 2020", + "link": "https://soliditylang.org///blog/2020/06/09/solidity-summit-recap", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 05 Jun 2020 00:00:00 GMT", + "title": "Solidity 0.6.9 Release Announcement", + "link": "https://soliditylang.org///blog/2020/06/05/Solidity-069-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 02 Jun 2020 00:00:00 GMT", + "title": "Sourcify: Towards Safer Contract Interaction for Humans", + "link": "https://soliditylang.org///blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 26 May 2020 00:00:00 GMT", + "title": "Solidity 0.6.x features: Array Slices", + "link": "https://soliditylang.org///blog/2020/05/26/array-slices", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 14 May 2020 00:00:00 GMT", + "title": "Solidity 0.6.8 Release Announcement", + "link": "https://soliditylang.org///blog/2020/05/14/Solidity-068-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 13 May 2020 00:00:00 GMT", + "title": "Solidity 0.6.x features: Saving Storage Costs with Immutables", + "link": "https://soliditylang.org///blog/2020/05/13/immutable-keyword", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 04 May 2020 00:00:00 GMT", + "title": "Solidity 0.6.7 Release Announcement", + "link": "https://soliditylang.org///blog/2020/05/04/solidity-0.6.7-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 17 Apr 2020 00:00:00 GMT", + "title": "Solidity Summit 2020 Goes Interspace", + "link": "https://soliditylang.org///blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 09 Apr 2020 00:00:00 GMT", + "title": "Solidity 0.6.6 Release Announcement", + "link": "https://soliditylang.org///blog/2020/04/09/solidity-0.6.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 06 Apr 2020 00:00:00 GMT", + "title": "Solidity 0.6.5 Release Announcement", + "link": "https://soliditylang.org///blog/2020/04/06/solidity-0.6.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 06 Apr 2020 00:00:00 GMT", + "title": "Solidity Memory Array Creation Overflow Bug", + "link": "https://soliditylang.org///blog/2020/04/06/memory-creation-overflow-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 26 Mar 2020 00:00:00 GMT", + "title": "Solidity 0.6.x features: fallback and receive functions", + "link": "https://soliditylang.org///blog/2020/03/23/fallback-receive-split", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 Mar 2020 00:00:00 GMT", + "title": "Solidity 0.5.17 Release Announcement", + "link": "https://soliditylang.org///blog/2020/03/17/solidity-0.5.17-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 10 Mar 2020 00:00:00 GMT", + "title": "Solidity 0.6.4 Release Announcement", + "link": "https://soliditylang.org///blog/2020/03/10/solidity-0.6.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 18 Feb 2020 00:00:00 GMT", + "title": "Solidity 0.6.3 Release Announcement", + "link": "https://soliditylang.org///blog/2020/02/18/solidity-0.6.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 29 Jan 2020 00:00:00 GMT", + "title": "Solidity 0.6.x features: try/catch statement", + "link": "https://soliditylang.org///blog/2020/01/29/solidity-0.6-try-catch", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 27 Jan 2020 00:00:00 GMT", + "title": "Solidity 0.6.2 Release Announcement", + "link": "https://soliditylang.org///blog/2020/01/27/solidity-0.6.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 02 Jan 2020 00:00:00 GMT", + "title": "Solidity 0.6.1 Release Announcement", + "link": "https://soliditylang.org///blog/2020/01/02/solidity-0.6.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 02 Jan 2020 00:00:00 GMT", + "title": "Solidity 0.5.16 Release Announcement", + "link": "https://soliditylang.org///blog/2020/01/02/solidity-0.5.16-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 Dec 2019 00:00:00 GMT", + "title": "Solidity 0.6.0 Release Announcement", + "link": "https://soliditylang.org///blog/2019/12/17/solidity-0.6.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 Dec 2019 00:00:00 GMT", + "title": "Solidity 0.5.15 Release Announcement", + "link": "https://soliditylang.org///blog/2019/12/17/solidity-0.5.15-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 09 Dec 2019 00:00:00 GMT", + "title": "Solidity 0.5.14 Release Announcement", + "link": "https://soliditylang.org///blog/2019/12/09/solidity-0.5.14-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 14 Nov 2019 00:00:00 GMT", + "title": "Solidity 0.5.13 Release Announcement", + "link": "https://soliditylang.org///blog/2019/11/14/solidity-0.5.13-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 01 Oct 2019 00:00:00 GMT", + "title": "Solidity 0.5.12 Release Announcement", + "link": "https://soliditylang.org///blog/2019/10/01/solidity-0.5.12-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 12 Aug 2019 00:00:00 GMT", + "title": "Solidity 0.5.11 Release Announcement", + "link": "https://soliditylang.org///blog/2019/08/12/solidity-0.5.11-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 25 Jun 2019 00:00:00 GMT", + "title": "Solidity Storage Array Bugs", + "link": "https://soliditylang.org///blog/2019/06/25/solidity-storage-array-bugs", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 25 Jun 2019 00:00:00 GMT", + "title": "Solidity 0.5.10 Release Announcement", + "link": "https://soliditylang.org///blog/2019/06/25/solidity-0.5.10-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 28 May 2019 00:00:00 GMT", + "title": "Solidity 0.5.9 Release Announcement", + "link": "https://soliditylang.org///blog/2019/05/28/solidity-0.5.9-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 30 Apr 2019 00:00:00 GMT", + "title": "Solidity 0.5.8 Release Announcement", + "link": "https://soliditylang.org///blog/2019/04/30/solidity-0.5.8-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 29 Apr 2019 00:00:00 GMT", + "title": "Solidity 0.4.26 Release Announcement", + "link": "https://soliditylang.org///blog/2019/04/29/solidity-0.4.26-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 26 Mar 2019 00:00:00 GMT", + "title": "Solidity Optimizer and ABIEncoderV2 Bugs", + "link": "https://soliditylang.org///blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 26 Mar 2019 00:00:00 GMT", + "title": "Solidity 0.5.7 Release Announcement", + "link": "https://soliditylang.org///blog/2019/03/26/solidity-0.5.7-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 13 Mar 2019 00:00:00 GMT", + "title": "Solidity 0.5.6 Release Announcement", + "link": "https://soliditylang.org///blog/2019/03/13/solidity-0.5.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 05 Mar 2019 00:00:00 GMT", + "title": "Solidity 0.5.5 Release Announcement", + "link": "https://soliditylang.org///blog/2019/03/05/solidity-0.5.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 12 Feb 2019 00:00:00 GMT", + "title": "Solidity 0.5.4 Release Announcement", + "link": "https://soliditylang.org///blog/2019/02/12/solidity-0.5.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 22 Jan 2019 00:00:00 GMT", + "title": "Solidity 0.5.3 Release Announcement", + "link": "https://soliditylang.org///blog/2019/01/22/solidity-0.5.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 19 Dec 2018 00:00:00 GMT", + "title": "Solidity 0.5.2 Release Announcement", + "link": "https://soliditylang.org///blog/2018/12/19/solidity-0.5.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 03 Dec 2018 00:00:00 GMT", + "title": "Solidity 0.5.1 Release Announcement", + "link": "https://soliditylang.org///blog/2018/12/03/solidity-0.5.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 13 Nov 2018 00:00:00 GMT", + "title": "Solidity 0.5.0 Release Announcement", + "link": "https://soliditylang.org///blog/2018/11/13/solidity-0.5.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 13 Sep 2018 00:00:00 GMT", + "title": "Solidity Bugfix Release", + "link": "https://soliditylang.org///blog/2018/09/13/solidity-bugfix-release", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 13 Sep 2018 00:00:00 GMT", + "title": "Solidity 0.4.25 Release Announcement", + "link": "https://soliditylang.org///blog/2018/09/13/solidity-0.4.25-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 16 May 2018 00:00:00 GMT", + "title": "Solidity 0.4.24 Release Announcement", + "link": "https://soliditylang.org///blog/2018/05/16/solidity-0.4.24-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 19 Apr 2018 00:00:00 GMT", + "title": "Solidity 0.4.23 Release Announcement", + "link": "https://soliditylang.org///blog/2018/04/19/solidity-0.4.23-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 Apr 2018 00:00:00 GMT", + "title": "Solidity 0.4.22 Release Announcement", + "link": "https://soliditylang.org///blog/2018/04/17/solidity-0.4.22-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 08 Mar 2018 00:00:00 GMT", + "title": "Solidity 0.4.21 Release Announcement", + "link": "https://soliditylang.org///blog/2018/03/08/solidity-0.4.21-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 14 Feb 2018 00:00:00 GMT", + "title": "Solidity 0.4.20 Release Announcement", + "link": "https://soliditylang.org///blog/2018/02/14/solidity-0.4.20-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 30 Nov 2017 00:00:00 GMT", + "title": "Solidity 0.4.19 Release Announcement", + "link": "https://soliditylang.org///blog/2017/11/30/solidity-0.4.19-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 18 Oct 2017 00:00:00 GMT", + "title": "Solidity 0.4.18 Release Announcement", + "link": "https://soliditylang.org///blog/2017/10/18/solidity-0.4.18-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 21 Sep 2017 00:00:00 GMT", + "title": "Solidity 0.4.17 Release Announcement", + "link": "https://soliditylang.org///blog/2017/09/21/solidity-0.4.17-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 24 Aug 2017 00:00:00 GMT", + "title": "Solidity 0.4.16 Release Announcement", + "link": "https://soliditylang.org///blog/2017/08/24/solidity-0.4.16-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 08 Aug 2017 00:00:00 GMT", + "title": "Solidity 0.4.15 Release Announcement", + "link": "https://soliditylang.org///blog/2017/08/08/solidity-0.4.15-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 31 Jul 2017 00:00:00 GMT", + "title": "Solidity 0.4.14 Release Announcement", + "link": "https://soliditylang.org///blog/2017/07/31/solidity-0.4.14-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 06 Jul 2017 00:00:00 GMT", + "title": "Solidity 0.4.13 Release Announcement", + "link": "https://soliditylang.org///blog/2017/07/06/solidity-0.4.13-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 03 Jul 2017 00:00:00 GMT", + "title": "Solidity 0.4.12 Release Announcement", + "link": "https://soliditylang.org///blog/2017/07/03/solidity-0.4.12-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 03 May 2017 00:00:00 GMT", + "title": "Solidity Optimizer Bug", + "link": "https://soliditylang.org///blog/2017/05/03/solidity-optimizer-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 03 May 2017 00:00:00 GMT", + "title": "Solidity 0.4.11 Release Announcement", + "link": "https://soliditylang.org///blog/2017/05/03/solidity-0.4.11-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 15 Mar 2017 00:00:00 GMT", + "title": "Solidity 0.4.10 Release Announcement", + "link": "https://soliditylang.org///blog/2017/03/15/solidity-0.4.10-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 31 Jan 2017 00:00:00 GMT", + "title": "Solidity 0.4.9 Release Announcement", + "link": "https://soliditylang.org///blog/2017/01/31/solidity-0.4.9-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 13 Jan 2017 00:00:00 GMT", + "title": "Solidity 0.4.8 Release Announcement", + "link": "https://soliditylang.org///blog/2017/01/13/solidity-0.4.8-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 15 Dec 2016 00:00:00 GMT", + "title": "Solidity 0.4.7 Release Announcement", + "link": "https://soliditylang.org///blog/2016/12/15/solidity-0.4.7-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 22 Nov 2016 00:00:00 GMT", + "title": "Solidity 0.4.6 Release Announcement", + "link": "https://soliditylang.org///blog/2016/11/22/solidity-0.4.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 21 Nov 2016 00:00:00 GMT", + "title": "Solidity 0.4.5 Release Announcement", + "link": "https://soliditylang.org///blog/2016/11/21/solidity-0.4.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 09 Nov 2016 00:00:00 GMT", + "title": "Analysis of Storage Corruption Bug", + "link": "https://soliditylang.org///blog/2016/11/09/analysis-storage-corruption-bug", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 01 Nov 2016 00:00:00 GMT", + "title": "Solidity 0.4.4 Release Announcement", + "link": "https://soliditylang.org///blog/2016/11/01/solidity-0.4.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 01 Nov 2016 00:00:00 GMT", + "title": "Security Alert: Variables can be overwritten in storage", + "link": "https://soliditylang.org///blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 25 Oct 2016 00:00:00 GMT", + "title": "Solidity 0.4.3 Release Announcement", + "link": "https://soliditylang.org///blog/2016/10/25/solidity-0.4.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Sat, 17 Sep 2016 00:00:00 GMT", + "title": "Solidity 0.4.2 Release Announcement", + "link": "https://soliditylang.org///blog/2016/09/17/solidity-0.4.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 09 Sep 2016 00:00:00 GMT", + "title": "Solidity 0.4.1 Release Announcement", + "link": "https://soliditylang.org///blog/2016/09/09/solidity-0.4.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 08 Sep 2016 00:00:00 GMT", + "title": "Solidity 0.4.0 Release Announcement", + "link": "https://soliditylang.org///blog/2016/09/08/solidity-0.4.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 01 Sep 2016 00:00:00 GMT", + "title": "Dev Update: Formal Methods", + "link": "https://soliditylang.org///blog/2016/09/01/formal-methods-roadmap", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 10 Aug 2016 00:00:00 GMT", + "title": "Solidity 0.3.6 Release Announcement", + "link": "https://soliditylang.org///blog/2016/08/10/solidity-0.3.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 10 Jun 2016 00:00:00 GMT", + "title": "Solidity 0.3.5 Release Announcement", + "link": "https://soliditylang.org///blog/2016/06/10/solidity-0.3.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 10 Jun 2016 00:00:00 GMT", + "title": "Smart Contract Security", + "link": "https://soliditylang.org///blog/2016/06/10/smart-contract-security", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 31 May 2016 00:00:00 GMT", + "title": "Solidity 0.3.4 Release Announcement", + "link": "https://soliditylang.org///blog/2016/05/31/solidity-0.3.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 27 May 2016 00:00:00 GMT", + "title": "Solidity 0.3.3 Release Announcement", + "link": "https://soliditylang.org///blog/2016/05/27/solidity-0.3.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Mon, 18 Apr 2016 00:00:00 GMT", + "title": "Solidity 0.3.2 Release Announcement", + "link": "https://soliditylang.org///blog/2016/04/18/solidity-0.3.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Thu, 31 Mar 2016 00:00:00 GMT", + "title": "Solidity 0.3.1 Release Announcement", + "link": "https://soliditylang.org///blog/2016/03/31/solidity-0.3.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 11 Mar 2016 00:00:00 GMT", + "title": "Solidity 0.3.0 Release Announcement", + "link": "https://soliditylang.org///blog/2016/03/11/solidity-0.3.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 17 Feb 2016 00:00:00 GMT", + "title": "Solidity 0.2.2 Release Announcement", + "link": "https://soliditylang.org///blog/2016/02/17/solidity-0.2.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Sat, 30 Jan 2016 00:00:00 GMT", + "title": "Solidity 0.2.1 Release Announcement", + "link": "https://soliditylang.org///blog/2016/01/30/solidity-0.2.1-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 01 Dec 2015 00:00:00 GMT", + "title": "Solidity 0.2.0 Release Announcement", + "link": "https://soliditylang.org///blog/2015/12/01/solidity-0.2.0-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 17 Nov 2015 00:00:00 GMT", + "title": "Solidity 0.1.7 Release Announcement", + "link": "https://soliditylang.org///blog/2015/11/17/solidity-0.1.7-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 16 Oct 2015 00:00:00 GMT", + "title": "Solidity 0.1.6 Release Announcement", + "link": "https://soliditylang.org///blog/2015/10/16/solidity-0.1.6-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 07 Oct 2015 00:00:00 GMT", + "title": "Solidity 0.1.5 Release Announcement", + "link": "https://soliditylang.org///blog/2015/10/07/solidity-0.1.5-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Wed, 30 Sep 2015 00:00:00 GMT", + "title": "Solidity 0.1.4 Release Announcement", + "link": "https://soliditylang.org///blog/2015/09/30/solidity-0.1.4-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Tue, 22 Sep 2015 00:00:00 GMT", + "title": "Solidity 0.1.3 Release Announcement", + "link": "https://soliditylang.org///blog/2015/09/22/solidity-0.1.3-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + }, + { + "pubDate": "Fri, 21 Aug 2015 00:00:00 GMT", + "title": "Solidity 0.1.2 Release Announcement", + "link": "https://soliditylang.org///blog/2015/08/21/solidity-0.1.2-release-announcement", + "imgSrc": "https://soliditylang.org//assets/solidity-logo.svg", + "source": "Solidity Lang Blog", + "sourceUrl": "https://soliditylang.org/", + "sourceFeedUrl": "https://soliditylang.org/feed.xml" + } + ], + [ + { + "pubDate": "2025-05-26T17:40:14.000Z", + "title": "We're moving! 👋 ", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/fDlAW6MYVOiRxfcmv7Tc4fgwpMVJHeQuObdkXXn-pRg", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-04-02T14:46:38.000Z", + "title": "Code Optimizations in the Landscape of Post-Quantum Cryptography", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/BKI3tyauHIiUCYHgma-EHeSRXNTNDtLUQV9VNGQWLUg", + "imgSrc": "https://images.mirror-media.xyz/publication-images/1RwFEHZo4kwEKRCOsu2ll.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-03-06T15:49:24.000Z", + "title": "Circom MPC: TL;DR and Retrospective", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/qelA6kAr-CMq-dgmvFUKMMqxf6GoDaP8Cs-5sRWYfO4", + "imgSrc": "https://images.mirror-media.xyz/publication-images/oD1sACikzD-VQSxezfCxZ.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-03-03T12:43:49.000Z", + "title": "Intmax: a scalable payment L2 from plasma and validity proofs", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/__VLZrfjSScx42E786k-Ba4YptQfv8ujCWY_DuN1k4o", + "imgSrc": "https://images.mirror-media.xyz/publication-images/VGxazaqEtEKemqIn_8Ph_.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-02-04T04:14:43.000Z", + "title": "Retrospective: Summa", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/HRlshQwWxo66EMt3lwk6PSuDkitJCr_-ltCETZHNeu0", + "imgSrc": "https://images.mirror-media.xyz/publication-images/A3TCaCjmzO0gzmnkKT1iC.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-24T18:53:51.000Z", + "title": "Web2 Nullifiers using vOPRF", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/L4LSAWflNocKolhV6ZVaqt3KDxdSjFPNSv0U5SCc__0", + "imgSrc": "https://images.mirror-media.xyz/publication-images/zvPrnf-4dVybNSEImBYxq.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-23T20:04:12.000Z", + "title": "Certificate Transparency Using NewtonPIR", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/V0PIyv1d_e_WPsAVhBP7zkDvn0XACY63uSvFFxBvjrk", + "imgSrc": "https://images.mirror-media.xyz/publication-images/3_z--cM-0ToKyZyuTkA_3.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-23T20:04:01.000Z", + "title": "Lattice-Based Proof Systems", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/4OyAht_dHsVT1MgcZTwrK2qJ-bwxpINcpBmLNfF4I2E", + "imgSrc": "https://images.mirror-media.xyz/publication-images/Gp1L8tICBe3beiO15tGDQ.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-22T20:52:31.000Z", + "title": "Self-Sovereign Identity & Programmable Cryptography: Challenges Ahead", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/zRM7qQSt_igfoSxdSa0Pts9MFdAoD96DD3m43bPQJT8", + "imgSrc": "https://images.mirror-media.xyz/publication-images/Vn5YZCb6AdPfRUkKgRaYb.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-15T22:42:55.000Z", + "title": "Mopro: Comparison of Circom Provers", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/GLbuCflH0hu_DncKxiC2No5w3LZJAGw4QaCB-HYD5e0", + "imgSrc": "https://images.mirror-media.xyz/publication-images/vlBZCP5l3IeF9krO3rdhU.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-15T18:07:55.000Z", + "title": "Retrospective: Trusted Setups and P0tion Project ", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/Cf9nYvSlATGks8IcFaHQe3H5mgZ_Va767Zk5I8jPYXk", + "imgSrc": "https://images.mirror-media.xyz/publication-images/WiPFD2yXYcpk4P33sVkE1.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2025-01-14T13:00:55.000Z", + "title": "Why We Can't Build Perfectly Secure Multi-Party Applications (yet)", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/nXUhkZ84ckZi_5mYRFCCKgkLVFAmM2ECdEFCQul2jPs", + "imgSrc": "https://images.mirror-media.xyz/publication-images/d8aPFSyUGyWYzwrqkQ8CG.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2024-09-30T16:27:58.000Z", + "title": "AnonKlub: Reflections on Our Journey in Privacy-Preserving Solutions", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/7VTKFVR4PM75WtNnBzuQSBZW-UYoJOsnzBBQmB9MWbY", + "imgSrc": "https://images.mirror-media.xyz/publication-images/1vJpNlqY0-Qk26xg6b3AF.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2024-07-15T18:31:18.000Z", + "title": "Secure Multi-Party Computation", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/v_KNOV_NwQwKV0tb81uBS4m-rbs-qJGvCx7WvwP4sDg", + "imgSrc": "https://images.mirror-media.xyz/publication-images/Bx9sDGgEJsl0SMtjUpPuF.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2024-05-31T16:07:54.000Z", + "title": "The next chapter for zkEVM Community Edition", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/hqLMwLfKmQLj773QCRLTOT-Z8sSUaTEfQpBSdTbitbs", + "imgSrc": "https://images.mirror-media.xyz/publication-images/583H_gexerRtQgolWA3-p.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2024-04-17T17:06:33.000Z", + "title": "Unleashing Potential: Introducing the PSE Core Program", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/PvNKlzp8Xlaic_DeIFEW20-ai4eN1AqJO26d4YRqWwM", + "imgSrc": "https://images.mirror-media.xyz/publication-images/1NEGQ7E1BIrwiKel6foFD.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2024-02-13T20:32:58.000Z", + "title": "Advancing Anon Aadhaar: what's new in v1.0.0", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/YnqHAxpjoWl4e_K2opKPN4OAy5EU4sIJYYYHFCjkNOE", + "imgSrc": "https://images.mirror-media.xyz/publication-images/4NXt6H2rMHr4zcdPm3A_9.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-12-19T00:07:07.000Z", + "title": "Zero to Start: Applied Fully Homomorphic Encryption (FHE) Part 2", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/wQZqa9acMdGS7LTXmKX-fR05VHfkgFf9Wrjso7XxDzs", + "imgSrc": "https://images.mirror-media.xyz/publication-images/gBhp47-KpaSaZMjv85ljK.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-12-18T17:04:01.000Z", + "title": "Zero to Start: Applied Fully Homomorphic Encryption (FHE) Part 1", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/D8UHFW1t48x2liWb5wuP6LDdCRbgUH_8vOFvA0tNDJA", + "imgSrc": "https://images.mirror-media.xyz/publication-images/DGou_5fg9I1EFgu2jZAYu.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-11-06T17:45:29.000Z", + "title": "Beyond Zero-Knowledge: What’s Next in Programmable Cryptography?", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/xXcRj5QfvA_qhkiZCVg46Gn9uX8P_Ld-DXlqY51roPY", + "imgSrc": "https://images.mirror-media.xyz/publication-images/hzjlPmWyhXIc6YZk1qt9j.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-10-24T16:31:19.000Z", + "title": "UniRep Ceremony: An Invitation to the Celestial Call and UniRep v2", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/z-gW2RtgFTV18ZkRGED2XKLn_wDd-SwMSs17vWQwfLs", + "imgSrc": "https://images.mirror-media.xyz/publication-images/Pvl5-iAs8GGcgSpTIregq.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-10-18T18:17:16.000Z", + "title": "Continuing the Zero Gravity Journey", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/Jpy-PUcH1tpOWrqSdGS4gCxa72F-aZCssACJnFDD1U0", + "imgSrc": "https://images.mirror-media.xyz/publication-images/jxmdf_dkKKY-DlFjl8Jhg.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-09-14T20:01:33.000Z", + "title": "Announcing Anon Aadhaar", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/6R8kACTYp9mF3eIpLZMXs8JAQmTyb6Uy8KnZqzmDFZI", + "imgSrc": "https://images.mirror-media.xyz/publication-images/89-MGl3qaY_xetuHaMSUp.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-09-14T19:44:53.000Z", + "title": "TLSNotary Updates", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/T4MR2PgBzBmN2I3dhDJpILXkQsqZp1Bp8GSm_Oo3Vnw", + "imgSrc": "https://images.mirror-media.xyz/publication-images/fd-XpZUJJYAcqeKxGDBxA.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-09-01T19:56:38.000Z", + "title": "From CEX to CCEX with Summa Part 2", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/f2ZfkPXZpvc6DUmG5-SyLjjYf78bcOcFeiJX2tb2hS0", + "imgSrc": "https://images.mirror-media.xyz/publication-images/4L17yRoIXUz1Sb_cvPxvd.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-09-01T19:27:21.000Z", + "title": "From CEX to CCEX with Summa Part 1", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/_1Y6ExFD_Rs3oDxwx5_kWAj_Tl_L9c0Hm7E6SVJei0A", + "imgSrc": "https://images.mirror-media.xyz/publication-images/oS-OQHCnYZoh_twRY0QJL.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-08-22T17:25:45.000Z", + "title": "Bandada is live!", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/p3Mtft28FG1ctgeUARVEKLTK_KexnWC6T4CUHaQark4", + "imgSrc": "https://images.mirror-media.xyz/publication-images/HlKptusliVr3-h4vxcjdl.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-08-08T16:09:44.000Z", + "title": "p0tion V1.0 Release", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/TuLZRdgCQsydC8JJgCNH4F7GzifRBQ6fr31DHGLFVWM", + "imgSrc": "https://images.mirror-media.xyz/publication-images/EsJsK-KxkGc-Et-x0Yt3K.jpeg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-07-24T16:28:33.000Z", + "title": "Rate-Limiting Nullifier (RLN)", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/iCLmH1JVb7fDqp6Mms2NR001m2_n5OOSHsLF2QrxDnQ", + "imgSrc": "https://images.mirror-media.xyz/publication-images/yLZ9NYEcqiX5FaR6YJxNH.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-07-10T18:41:37.000Z", + "title": "The Power of Crowdsourcing Smart Contract Security for L2 Scaling Solutions", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/Zjgt8YUAeW8XX5-wc1f6uNI8vx-5q_qBTYR4KFRGpTE", + "imgSrc": "https://images.mirror-media.xyz/publication-images/SYD2vdrqKZMtBf4pEe_QO.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-06-30T17:51:40.000Z", + "title": "Learnings from the KZG Ceremony", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/naTdx-u7kyirczTLSAnWwH6ZdedfTQu1yCWQj1m_n-E", + "imgSrc": "https://images.mirror-media.xyz/publication-images/C5ZdzyMzNS4OPF9Enujxn.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-05-15T21:34:16.000Z", + "title": "zkEVM Community Edition \nPart 3: Logic and Structure", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/shl8eMBiObd6_AUBikXZrjKD4fibI6xUZd7d9Yv5ezE", + "imgSrc": "https://images.mirror-media.xyz/publication-images/jSgGVvcOHpYx1vDBbpTIH.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-05-15T21:08:58.000Z", + "title": "zkEVM Community Edition\nPart 2: Components ", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/AW854RXMqS3SU8WCA7Yz-LVnTXCOjpwhmwUq30UNi1Q", + "imgSrc": "https://images.mirror-media.xyz/publication-images/qPP1YdhNPLNa-yv7N-bfE.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-05-15T20:55:55.000Z", + "title": "zkEVM Community Edition \nPart 1: Introduction", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/I5BzurX-T6slFaPbA4i3hVrO7U2VkBR45eO-N3CSnSg", + "imgSrc": "https://images.mirror-media.xyz/publication-images/9u4GOymupzO90Am8aHuvF.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-05-01T18:34:56.000Z", + "title": "ZKML: Bridging AI/ML and Web3 with Zero-Knowledge Proofs", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/K88lOS4XegJGzMoav9K5bLuT9Zhn3Hz2KkhB3ITq-m8", + "imgSrc": "https://images.mirror-media.xyz/publication-images/opUAcKUxwGwb4HaoJ9_Hk.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-04-18T16:22:41.000Z", + "title": "The zk-ECDSA Landscape", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/djxf2g9VzUcss1e-gWIL2DSRD4stWggtTOcgsv1RlxY", + "imgSrc": "https://images.mirror-media.xyz/publication-images/VS1sf7LaMrnrhf5jVVwKe.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-02-08T18:33:33.000Z", + "title": "Semaphore v3 Announcement", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/Yi4muh-vzDZmIqJIcM9Mawu2e7jw8MRnwxvhFcyfns8", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-01-23T17:41:46.000Z", + "title": "Semaphore Community Grants: Awarded Projects", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/5w1v6rxpP-E03rWDr3RliPyFJkptQwIPzet3Vb5jdcI", + "imgSrc": "https://images.mirror-media.xyz/publication-images/94fqTRH6q3sqXu83_F-R8.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-01-18T17:34:27.000Z", + "title": "Announcing MACI v1.1.1", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/ltCt68hslI5jmMf1AnfkrP2eUwkeZ8_fgkHc_WyD9Nc", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-01-10T23:24:23.000Z", + "title": "Zkitter: An Anon-friendly Social Network", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/P4jDH1gLrVQ-DP5VyIKQrlPAJUTDhtXZkFl2vp8ewSg", + "imgSrc": "https://images.mirror-media.xyz/publication-images/iNok1tGyN1HGsAVqJ2A-3.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2023-01-04T18:25:22.000Z", + "title": "UniRep Protocol", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/FCVVfy-TQ6R7_wavKj1lCr5dd1zqRvwjnDOYRM5NtsE", + "imgSrc": "https://images.mirror-media.xyz/publication-images/7zEM_Al8nwDWCvBzfFTOX.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-11-15T16:52:45.000Z", + "title": "Devcon VI Recap", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/plfDBIpiKZVyNSJWhE9vix76JaJoJ1seDfRAddV7HEc", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-11-11T22:34:08.000Z", + "title": "RSA Verification Circuit in Halo2 and its Applications", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/mmkG4uB2PR_peGucULAa7zHag-jz1Y5biZH8W6K2LYM", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-09-21T20:32:36.000Z", + "title": "Semaphore Community Grants", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/g5WjOtK4R3rYfLKyqpSXsbNBcj36jzsjgnV2KT2rthM", + "imgSrc": "https://images.mirror-media.xyz/publication-images/R0IQbAvTIlVNbe19yJJKv.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-09-13T18:15:59.000Z", + "title": "Interep: An on-ramp for reputation", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/w7zCHj0xoxIfhoJIxI-ZeYIXwvNatP1t4w0TsqSIBe4", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-29T18:47:57.000Z", + "title": "Meet COCO! - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/tEf7iYa8l7ECZwN2T57yyiws7h9Uchip30CQvx-JBBQ", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-29T18:46:52.000Z", + "title": "A Technical Introduction to MACI 1.0 - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/IlWP_ITvmeZ2-elTJl44SCEGlBiemKt3uxXv2A6Dqy4", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-29T18:43:44.000Z", + "title": "Release Announcement: MACI 1.0 - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/V0QkCAtsYUd5y7RO7L5OAwmawhY9LTJ7jlOZ4KW1J7M", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-29T18:41:44.000Z", + "title": "A Technical Introduction to Arbitrum’s Optimistic Rollup", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/UlHGv9KIk_2MOHr7POfwZAXP01k221hZwQsLCF63cLQ", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-29T18:40:22.000Z", + "title": "Rate Limiting Nullifier: A spam-protection mechanism for anonymous environments", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/aKjLmLVyunELnGObrzPlbhXWu5lZI9QU-P3OuBK8mOY", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-29T18:39:16.000Z", + "title": "Unirep: A private and non-repudiable reputation system", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/S04tvQuLbRjf_9ZrzDTE0T2aho9_GoSuok5NEFyHNO4", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-26T17:28:57.000Z", + "title": "BLS Wallet: Bundling up data - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/e8Xy1X1phqdqGwkzaLMlyT9BY-8MpLoelYTsJc_DzfU", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-26T17:24:41.000Z", + "title": "Semaphore V2 is Live! - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/ImQNsJsJuDf_VFDm9EUr4njAuf3unhAGiPu5MzpDIjI", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-26T17:21:47.000Z", + "title": "ZKOPRU on Testnet - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/EB0KcMY0k9ucN8iQSBeOYksoupDYRBQ4ZffhRt477FE", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-26T17:11:24.000Z", + "title": "Zkopru: Wat, Y & Wen - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/kfuuBPtGtDjl_J2wBq-jrtyURGLmQpUhZfDTuZChEy8", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-26T16:51:51.000Z", + "title": "Zkopru Trusted Setup Completed - Privacy & Scaling Explorations", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/dQec_qe4VOcKoVH9OH42Ef9WuSqyAJ6S40jRrZ_Mw7g", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-26T16:43:52.000Z", + "title": "Zkopru Ceremony: Final Call and Failed Contributions", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/X7O6_Y33NY-nNfzpV5HZRvups2qimQnQ9ef0OD1U8RY", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "2022-08-10T15:39:43.000Z", + "title": "Zkopru Trusted Setup Ceremony", + "link": "https://mirror.xyz/privacy-scaling-explorations.eth/a2Ut19fwRGNJoCd-IoQadyn3sUMRgGNSfRgHEc4iGhw", + "imgSrc": "https://images.mirror-media.xyz/publication-images/QwxDvGW5rfOdVxuqozbRS.png?height=1014&width=1013", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://mirror.xyz/privacy-scaling-explorations.eth", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + } + ], + [ + { + "pubDate": "Wed, 30 Jul 2025 17:23:39 GMT", + "title": "Happy 10 years of community building with Ethereum!!", + "link": "https://medium.com/ethereum-cat-herders/happy-10-years-of-community-building-with-ethereum-7786bfff67c6?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/1*RdyIAn70mZa9N9SukJ1Vlg.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Tue, 06 May 2025 23:02:00 GMT", + "title": "It’s Pectra Time!", + "link": "https://medium.com/ethereum-cat-herders/its-pectra-time-0cf5561f662c?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/1*sCDRZdHLR2DX32DyCUipNA.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Mon, 03 Mar 2025 13:02:40 GMT", + "title": "Purr-suit of Ethereum # 7", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-7-54afcd45938a?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/0*JOyruShqjN-xL7hy.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Tue, 18 Feb 2025 02:23:01 GMT", + "title": "Purr-suit of Ethereum #6", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-6-2bc6bdbbb7ea?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/0*WbURMbEsQeXfcYhp.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Mon, 10 Feb 2025 22:01:47 GMT", + "title": "Purr-suit of Ethereum #5", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-5-3dbfe72b3855?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/0*3041ANoIXXiRjLD-.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Mon, 03 Feb 2025 14:54:05 GMT", + "title": "Purr-suit of Ethereum #4", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-4-86ef8469b479?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/0*rjxcq6dO6N6fZKcp.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Tue, 28 Jan 2025 14:02:01 GMT", + "title": "Celebrating the 50th EIP Editing Office Hour ", + "link": "https://medium.com/ethereum-cat-herders/celebrating-the-50th-eip-editing-office-hour-cccfdb646cd1?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/1*w4nwm3eOLCVlUFCG03Jgbw.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Mon, 27 Jan 2025 13:02:15 GMT", + "title": "Purr-suit of Ethereum #3", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-3-48169fae5631?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/0*76g6qPGhQT_MutqR.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Mon, 13 Jan 2025 15:47:52 GMT", + "title": "Purr-suit of Ethereum #2", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-2-378c1a79e7bb?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/0*O6O4ekeWsa7H7wi3.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + }, + { + "pubDate": "Mon, 06 Jan 2025 14:30:48 GMT", + "title": "Purr-suit of Ethereum #1", + "link": "https://medium.com/ethereum-cat-herders/purr-suit-of-ethereum-1-7a057cc3a2ed?source=rss----cb99bef2c5dc---4", + "imgSrc": "https://cdn-images-1.medium.com/max/1024/1*6Egwo3v3iF3d6_0h2O1WLA.png", + "source": "EthCatHerders - Medium", + "sourceUrl": "https://medium.com/ethereum-cat-herders?source=rss----cb99bef2c5dc---4", + "sourceFeedUrl": "https://medium.com/feed/ethereum-cat-herders" + } + ], + [ + { + "pubDate": "Wed, 08 Oct 2025 00:00:00 GMT", + "title": "Local Ethereum #9", + "link": "https://geodework.com/blog/local-ethereum-9", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Wed, 01 Oct 2025 12:00:00 GMT", + "title": "Brazil Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/brazil-ethereum-ecosystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Thu, 04 Sep 2025 00:00:00 GMT", + "title": "Local Ethereum #8", + "link": "https://geodework.com/blog/local-ethereum-8", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Thu, 28 Aug 2025 12:00:00 GMT", + "title": "India Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/india-ethereum-eocsystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Wed, 06 Aug 2025 00:00:00 GMT", + "title": "Local Ethereum #7", + "link": "https://geodework.com/blog/local-ethereum-7", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Thu, 24 Jul 2025 12:00:00 GMT", + "title": "Türkiye Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/turkiye-ethereum-ecosystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Fri, 04 Jul 2025 00:00:00 GMT", + "title": "Local Ethereum #6", + "link": "https://geodework.com/blog/local-ethereum-6", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Thu, 26 Jun 2025 12:00:00 GMT", + "title": "Poland Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/poland-ethereum-ecosystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Fri, 06 Jun 2025 00:00:00 GMT", + "title": "Local Ethereum #5", + "link": "https://geodework.com/blog/local-ethereum-5", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Wed, 21 May 2025 12:00:00 GMT", + "title": "Serbia Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/serbia-ethereum-ecosystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Tue, 06 May 2025 00:00:00 GMT", + "title": "Local Ethereum #4", + "link": "https://geodework.com/blog/local-ethereum-4", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Wed, 23 Apr 2025 12:00:00 GMT", + "title": "Argentina Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/argentina-ethereum-ecosystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Sun, 06 Apr 2025 12:00:00 GMT", + "title": "Local Ethereum #3", + "link": "https://geodework.com/blog/local-ethereum-3", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Thu, 20 Mar 2025 12:00:00 GMT", + "title": "Taiwan Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/taiwan-ethereum-ecosystem-overview", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Wed, 05 Mar 2025 12:00:00 GMT", + "title": "Local Ethereum #2", + "link": "https://geodework.com/blog/local-ethereum-2", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + }, + { + "pubDate": "Tue, 11 Feb 2025 12:00:00 GMT", + "title": "Local Ethereum #1", + "link": "https://geodework.com/blog/local-ethereum-1", + "imgSrc": "https://geodework.com/og?title=Geode%20Labs%20Blog", + "source": "Geode Labs Blog", + "sourceUrl": "https://geodework.com", + "sourceFeedUrl": "https://geodework.com/feed.xml" + } + ] + ], + "timestamp": 1762456324824 +} \ No newline at end of file diff --git a/src/data/mocks/calendarEvents.json b/src/data/mocks/calendarEvents.json new file mode 100644 index 00000000000..387eac9c6d1 --- /dev/null +++ b/src/data/mocks/calendarEvents.json @@ -0,0 +1,507 @@ +{ + "pastEvents": { + "value": [ + { + "date": "2023-08-09T10:00:00+01:00", + "title": "🤝 ethereum.org Translatathon: Team formation session", + "calendarLink": "https://www.google.com/calendar/event?eid=N2QxOXN1ZnEza2UzbnJmdDQ4NDJsaml1dDEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-10T17:00:00+01:00", + "title": "🤝 ethereum.org Translatathon: Team formation session", + "calendarLink": "https://www.google.com/calendar/event?eid=NHZlYjNtcnB0bXNsZ2lkdTk1MjdhNmRtYTAgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-16T10:00:00+01:00", + "title": "🧑‍💻 ethereum.org Translatathon: virtual coworking session", + "calendarLink": "https://www.google.com/calendar/event?eid=MjMwZzhmZWcwbmZoaDR2dDRyM3ExNDdvNmUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-17T17:00:00+01:00", + "title": "🧑‍💻 ethereum.org Translatathon: virtual coworking session", + "calendarLink": "https://www.google.com/calendar/event?eid=Nm11aW4zc2tkOTFxM21yZTA0ZWl0Mmw4N2UgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-15T18:00:00+01:00", + "title": "🌐 ethereum.org Translatathon: Crowdin & style guide workshop", + "calendarLink": "https://www.google.com/calendar/event?eid=NHF2NmxrbDVyZWVqYXJnZjZ2NWw1b2NqdWQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-31T17:00:00+01:00", + "title": "☎️ Ethereum.org Community Call - August 2023", + "calendarLink": "https://www.google.com/calendar/event?eid=MnZibjdvODJvcDlhbWwzdGVsNGFjZjFtdGYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-09T18:00:00+01:00", + "title": "QA Release Candidate bash", + "calendarLink": "https://www.google.com/calendar/event?eid=MWowYTZiYWI3cDhtcTZ2dmhrNTBtY3R0MDEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-07T17:00:00+01:00", + "title": "🌐 ethereum.org Translatathon: Kick-off call", + "calendarLink": "https://www.google.com/calendar/event?eid=MGZlbGZpZDUyNnZ0bTNxcXM2ajVsNXE1Y3MgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-24T17:00:00+01:00", + "title": "🌐 ethereum.org Translatathon: thanks for participating + next steps ✨", + "calendarLink": "https://www.google.com/calendar/event?eid=MW10am5rbjhkZzRkYnUyN3V2Y3JjMnY3amUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-09-14T17:00:00+01:00", + "title": "⚙️ Ethereum.org Office Hours: How to use Github", + "calendarLink": "https://www.google.com/calendar/event?eid=NmoyNGs4bXVtdjBvY3U0aG8zN29rbnJ2NnUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-09-26T17:00:00+01:00", + "title": "⚙️ Ethereum.org Office Hours: Introducción a Github (en español)", + "calendarLink": "https://www.google.com/calendar/event?eid=NG5hOW52dGcyOWNqMDU4N2Z1dDUyM2lyNDYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-09-28T17:00:00+01:00", + "title": "☎️ Ethereum.org Community Call - September 2023", + "calendarLink": "https://www.google.com/calendar/event?eid=Mm5kMmd0ZXQyaW82YjJvdm1qdms3bnM2MnAgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-10-20T17:00:00+01:00", + "title": "🦄 Ethereum.org Writers Cohort II - kick-off call (week 1)", + "calendarLink": "https://www.google.com/calendar/event?eid=MTNva2ZpaGdxYmhkZ3Y3ZXZ2bHRrMWU0dWcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-10-26T17:00:00+01:00", + "title": "☎️ Ethereum.org Community Call - October 2023", + "calendarLink": "https://www.google.com/calendar/event?eid=NTQ1NTZqdjg2Y2ExcDl0bWdzN3IwaGtoZ2YgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-11-01T17:00:00Z", + "title": "✍️ ethereum.org Writers Cohort II: coworking session", + "calendarLink": "https://www.google.com/calendar/event?eid=Mm84dTBjbm11YTgxbjdkcG0zYWF0YWE3djUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-11-07T16:00:00Z", + "title": "✍️ ethereum.org Writers Cohort II: coworking session", + "calendarLink": "https://www.google.com/calendar/event?eid=M3BmMHFibTVpZGQyM2oyNWJkc3RvNjEycWMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-11-02T16:00:00Z", + "title": "🌱 ethereum.org + Gitcoin Grants 19 info session", + "calendarLink": "https://www.google.com/calendar/event?eid=MWJrY2p2MXQ3MzF2ZmxrbTNxc3R1OGc0Y20gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-11-17T12:00:00Z", + "title": "(in)finite games 🎲 ethereum.org Community Gathering @ Devconnect", + "calendarLink": "https://www.google.com/calendar/event?eid=NmFnNjBtYjhrcGsxZ3BiYmhxNnI3Z280aDggY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-12-19T16:00:00Z", + "title": "☎️ Ethereum.org Community Call - December 2023", + "calendarLink": "https://www.google.com/calendar/event?eid=NzdqdXFzN2RxMzMwYXAwMnZ2MDFubTZsc2MgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-11-30T16:00:00Z", + "title": "☎️ Ethereum.org Community Call - November 2023", + "calendarLink": "https://www.google.com/calendar/event?eid=MXZwNjgyZmxjcHY5NXIxczA3NzExZHA5ZHEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-12-13T17:00:00Z", + "title": "✍️ ethereum.org Office Hours: How to create content on ethereum.org", + "calendarLink": "https://www.google.com/calendar/event?eid=MXVoajI3YnRxMHZlbjU5dW05ODUzYXN2NjIgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-01-25T17:00:00Z", + "title": "☎️ Ethereum.org Community Call - January 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=MzdkZWp2ODNqYmFsZnFrajExMnE3ZXNncXMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-08-23T17:00:00+01:00", + "title": "Release candidate QA", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzA4MjNUMTYwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2023-11-01T16:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzExMDFUMTYwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2023-11-15T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzExMTVUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2023-12-06T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzExMjlUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2023-12-20T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzEyMTNUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2023-12-27T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzEyMjdUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2024-01-10T18:15:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyNDAxMTBUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2024-02-14T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyNDAyMDdUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2023-11-01T16:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzExMDFUMTYwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2024-02-29T17:00:00Z", + "title": "☎️ Ethereum.org Community Call - February 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=Mzg1bDQ1am1tdjE4anFmNnA3bzJ1bGo0cWEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-01-24T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyNDAxMjRUMTcwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2024-02-28T15:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=N2kwMjg2ZXN0bGdwYWY5NmlqdmdzcTB0aTkgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-03-28T16:00:00Z", + "title": "☎️ Ethereum.org Community Call - March 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=MWEwaXY0YTRyZ2MwbGoxbnNqb2ExcmVma3MgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-03-21T16:00:00Z", + "title": "⚙️ ethereum.org Office Hours [S3E1]", + "calendarLink": "https://www.google.com/calendar/event?eid=NTc5OW9ra2VkNTB2Nmp1dTAxZWlndDA0cmMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-03-13T15:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MHY4anM2ZjdkYmJtcmdodm9uODM4NDlhbG0gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-04-04T16:00:00+01:00", + "title": "⚙️ ethereum.org Office Hours [S3E2]", + "calendarLink": "https://www.google.com/calendar/event?eid=M3JsbjVtOGFtNm8wNjFjMmtwczFwMnE1djkgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-04-18T16:00:00+01:00", + "title": "⚙️ ethereum.org Office Hours [S3E3]", + "calendarLink": "https://www.google.com/calendar/event?eid=NWlrYmlpN2FnYzB1MDFuN3UwdWxmcmJhOXYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-04-25T17:00:00+01:00", + "title": "☎️ Ethereum.org Community Call - April 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=NmtkZnFzcTRrZHU4ZDFuNDdrdnNyaHQ5ZzcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-03-27T14:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NTdsamJrY2xtZHU0dHJ2N2tnZGduMmNsdjcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-04-24T16:45:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MnY5Z2ppbWRjajliNzllNGM5cDJhZXJvZWYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-05-29T17:00:00+01:00", + "title": "☎️ ethereum.org Community Call - May 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=Mzh0aTByNTFibGg1YnU5YjdzOXVtOXRrN20gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-05-08T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NmV1djRtYWo1cmw4aDU1ZWdpbHAyMTg5ZWsgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-05-22T17:00:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NGNpbjQ3aXRrc2sydm5jOGc4MHQ0cm1ibGogY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-06-19T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MHRqbG8xMXY0aW04OWZvdGN2ZTBqOGY3aTUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-06-20T17:00:00+01:00", + "title": "👾 Live coding session - Implementing a visual testing component on ethereum.org", + "calendarLink": "https://www.google.com/calendar/event?eid=Njc0Z2ZrMzF2ajM3NnBtNG9lcXA2aGRnaWkgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-06-27T16:00:00+01:00", + "title": "☎️ ethereum.org Community Call - June 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=Mmo0aTVpZWJsOWlxbWQ5ZTlxYWQwY29vMGogY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-07-25T16:00:00+01:00", + "title": "☎️ ethereum.org Community Call - July 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=M3JwdjJ2ZG00aDg1Z2Rta2dwMmc5NmFibTQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-07-10T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NG00ajI5MGxza3ZhazVoc2NkcTA1NDUwZnYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-07-24T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MDhyaTBvN2NiNWQ5N3VhdGgzc2dnMXV1YmsgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-07T17:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NTlwdWdrYW1mczFzcWU5anI5MDkyaDllc2sgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-21T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=Nm0xNzJqMzdmY3FyazNwZjFocWU4c2xsNzAgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-09T13:00:00+01:00", + "title": "Translatathon kickoff", + "calendarLink": "https://www.google.com/calendar/event?eid=NjU5dDRoNW9yNG0waDM3bjY0dDJmNWx2dmsgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-06T10:30:00+01:00", + "title": "🐬 ethereum.org Translatathon: Crowdin & style guide workshop", + "calendarLink": "https://www.google.com/calendar/event?eid=MHJoczcybG42Y2R2YXFncDBwZmxvbzRoNjUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-07T16:30:00+01:00", + "title": "🐬 ethereum.org Translatathon: Crowdin & style guide workshop", + "calendarLink": "https://www.google.com/calendar/event?eid=NGRpZWo3Y3E4a2d2dWVqMjdjNnFtZzZzZTEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-15T16:00:00+01:00", + "title": "☕ Translatathon coffee break", + "calendarLink": "https://www.google.com/calendar/event?eid=NGJxazFsa2xjdm9ocmZnaGU0ZWZqbGIwNWEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-08-13T10:30:00+01:00", + "title": "☕ Translatathon coffee break", + "calendarLink": "https://www.google.com/calendar/event?eid=N292aDBqNWRnb3BoY2lldXBmcDVsM2o4MjIgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-09-26T16:00:00+01:00", + "title": "☎️ ethereum.org Community Call - September 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=M2VyNTRibmFxZWUybWZzZHZsNnJjOWxoZ2MgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-09-18T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MGlzdW85ZjV1azVsdmNqOG8yMnZwbWhnZGYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-09-05T16:00:00+01:00", + "title": "☎️ ethereum.org Community Call - August 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=NnY4NWhvN3IxajVsbGFqM3VyOWx1cDRnbDYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-09-04T17:00:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NmdwYWF1bmozODhzaTc1ZW5rZ3BlNW5jNWwgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2023-09-20T17:00:00+01:00", + "title": "Release candidate QA", + "calendarLink": "https://www.google.com/calendar/event?eid=MWdhb24xNWZ2bjA5bWhoM2Judjc5dTFvYzRfMjAyMzA5MjBUMTYwMDAwWiBjXzllNGIxYjI3NjA3NDM0NjM4MTYxMDBhMTY5ZDE0MjQzMDM1MmE3Y2ZjMzM0NGIxZTc4NWRiNTIzODVjOWZkMzZAZw" + }, + { + "date": "2024-10-02T16:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NmlycGRhNTkwNmNvdmFpMmozcW1lb20wbWkgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-10-31T15:00:00Z", + "title": "☎️ ethereum.org Community Call - October 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=NWRja2UwaGxnbm5oMzh2ZTBiNW9lZ3QwcWYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-09-24T15:15:00+01:00", + "title": "New Event", + "calendarLink": "https://www.google.com/calendar/event?eid=Xzg5MWsyZHBoNjkzM2FiOW42Y28zNGI5azg4cTNpYmExNjUxM2FiYTY4OHMzY2Q5azhwMTQ4ZTIxNjQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-10-23T17:00:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NGtrdGE3cDV0NTk4MzdsbjBuNzI2NTQ4Z2EgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-11-06T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=Mm50Y2o0dThxcDJuY3JxbmRmZzVhYXEwNjAgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-12-05T16:00:00Z", + "title": "☎️ ethereum.org Community Call - November/December 2024", + "calendarLink": "https://www.google.com/calendar/event?eid=MnMzbGxyMm5tOTdqazNsc25kZDhwZTgxczMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-11-27T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NWxkMTk4NG5pa3V2cjN2dTVqMjMxdThsamIgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-11-12T02:30:00Z", + "title": "🦄 ethereum.org @ Devcon SEA Impact Forum", + "calendarLink": "https://www.google.com/calendar/event?eid=NGlrYTltM2xsYm9pNzRvOWc3NDgxa2MzcXQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-12-04T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NjhiYmZ2MW1tbnJibmxtNG41bXBxdTF0OW0gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2024-12-18T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=N211OWdqMWVmYXRqODFrZWgwdXA2NnJrMmwgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-01-08T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=Mms5cm5uMmtnbXJpcm80NnZ0bnNqMzdpYXQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-01-29T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MjM0bGdranRyMzMwbGY4MHZybHMwaGxhdG8gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-02-26T17:00:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=M3E5MGk2NzkwNjB0ZXZtMWtrbzlsN2xmMmcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-02-12T16:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWZhMXBjN2hjYWhrNDNhN2s0OGJiMWYyYmggY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-03-12T17:30:00Z", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MTBqa2d0YjY4ZnFqZDdqanBpbzUwM2swazggY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-03-20T16:00:00Z", + "title": "☎️ ethereum.org Community Call I - March 2025", + "calendarLink": "https://www.google.com/calendar/event?eid=MHY5N2FsNnBxcmU0bTA4NmFpaTg5YjlrNHYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-03-26T17:00:00Z", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MGUxdjZoM2NsdXZwdGdtYm12bmxqa2trZG8gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-05-15T17:00:00+01:00", + "title": "☎️ ethereum.org Community Call II - May 2025", + "calendarLink": "https://www.google.com/calendar/event?eid=MThqa2JjZWdwdGw2MW1rNzJlMWZsZWgzY3QgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-04-16T17:00:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MGFkYnJjYmIxdDZlMGUwN25rOHNoYTQ3NWYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-04-30T17:00:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MGdidnExbXMxYzFtcm5sOWg3NjJvbWRzNjggY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-05-14T17:30:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NnBjY3U0ZXN2b25iZWZkcXNrOWE0ODdjODggY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-07-24T17:00:00+01:00", + "title": " ☎️ ethereum.org Community Call III - July 2025", + "calendarLink": "https://www.google.com/calendar/event?eid=MDFpM2FyOWJ1MWdtaGQ4dnJtMXRzM2V0cnIgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-06-25T17:45:00+01:00", + "title": "🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=N2VkOWhkbmU4c2M0cDEwcThvYmI3NzlvOTcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-07-30T17:45:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MHZjbTR2a2JsdnA1NWY5M2xnOTNwb2w4OTEgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-09-25T17:00:00+01:00", + "title": " ☎️ ethereum.org Community Call IV - September 2025", + "calendarLink": "https://www.google.com/calendar/event?eid=MmE0YWJzdmEyMjQ4NW5pdm4xMTIwbzhtMDYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-08-13T17:45:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=Nm5iaDljZGluaGs5aDdiZ2M1YWIybmViaGcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-08-27T17:45:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NTA2YXBsMjNwa3VldHRzM2o0MmdkcnM5cTkgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-08-25T13:00:00+01:00", + "title": "Translatathon kickoff call", + "calendarLink": "https://www.google.com/calendar/event?eid=MzBzYzQ0ODU5YnZkNHNiY251bDl0M2M2bnMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-08-20T18:00:00+01:00", + "title": "Translatathon overview #1", + "calendarLink": "https://www.google.com/calendar/event?eid=NWQxNWM3dnA5MjdhazF0a3BvbHNubmUxOHMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-08-21T13:00:00+01:00", + "title": "Translatathon overview #2", + "calendarLink": "https://www.google.com/calendar/event?eid=NWU3ZzE3czNyazViYXVqcjNqZnQ5dHYxMmMgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-09-10T17:45:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=M3NjbXNhOHNoNW5wcjVja3NuaTR1cW1zaTYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-08-29T15:00:00+01:00", + "title": "Translatathon office hours and QA", + "calendarLink": "https://www.google.com/calendar/event?eid=MTBjMHFlajcyYjYxOXZiZnV2cGJnajF1MWggY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-09-24T17:45:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=NXJ0Z21yajRwNDY1MmQzN3V2MnMzcm02M28gY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-10-22T17:45:00+01:00", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MjVqbjA1MzRnNDhjbTV2bWt2NnRiaTM0ZDUgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-11-05T17:45:00Z", + "title": " 🛠 QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MWR0NnQ3YTNnNnIyc2xtYXVmOWlmdHZxZTcgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + } + ], + "timestamp": 1762456319836 + }, + "upcomingEvents": { + "value": [ + { + "date": "2025-12-11T17:00:00Z", + "title": " ☎️ ethereum.org Community Call V - December 2025", + "calendarLink": "https://www.google.com/calendar/event?eid=NnNxcHZmZW9nbmlzMW83anBrcnYzMWZnc2cgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + } + ], + "timestamp": 1762456319836 + } +} \ No newline at end of file diff --git a/src/data/mocks/communityEvents.json b/src/data/mocks/communityEvents.json deleted file mode 100644 index 3a6cb06e812..00000000000 --- a/src/data/mocks/communityEvents.json +++ /dev/null @@ -1 +0,0 @@ -{"pastEventData":[{"date":"2024-09-18T16:30:00+01:00","title":"🛠 QA session - ethereum.org portal","calendarLink":"https://www.google.com/calendar/event?eid=MGlzdW85ZjV1azVsdmNqOG8yMnZwbWhnZGYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"},{"date":"2024-09-05T16:00:00+01:00","title":"☎️ ethereum.org Community Call - August 2024","calendarLink":"https://www.google.com/calendar/event?eid=NnY4NWhvN3IxajVsbGFqM3VyOWx1cDRnbDYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"},{"date":"2024-09-04T17:00:00+01:00","title":"🛠 QA session - ethereum.org portal","calendarLink":"https://www.google.com/calendar/event?eid=NmdwYWF1bmozODhzaTc1ZW5rZ3BlNW5jNWwgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"},{"date":"2024-09-24T15:15:00+01:00","title":"New Event","calendarLink":"https://www.google.com/calendar/event?eid=Xzg5MWsyZHBoNjkzM2FiOW42Y28zNGI5azg4cTNpYmExNjUxM2FiYTY4OHMzY2Q5azhwMTQ4ZTIxNjQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"}],"upcomingEventData":[{"date":"2024-10-31T15:00:00Z","title":"☎️ ethereum.org Community Call - October 2024","calendarLink":"https://www.google.com/calendar/event?eid=NWRja2UwaGxnbm5oMzh2ZTBiNW9lZ3QwcWYgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"},{"date":"2024-10-16T16:30:00+01:00","title":"🛠 QA session - ethereum.org portal","calendarLink":"https://www.google.com/calendar/event?eid=NGtrdGE3cDV0NTk4MzdsbjBuNzI2NTQ4Z2EgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"},{"date":"2024-10-02T16:30:00+01:00","title":"🛠 QA session - ethereum.org portal","calendarLink":"https://www.google.com/calendar/event?eid=NmlycGRhNTkwNmNvdmFpMmozcW1lb20wbWkgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc"}]} \ No newline at end of file diff --git a/src/data/mocks/communityPicks.json b/src/data/mocks/communityPicks.json index 84e4b2483cf..c79e44c0a4e 100644 --- a/src/data/mocks/communityPicks.json +++ b/src/data/mocks/communityPicks.json @@ -1,26 +1,29 @@ -[ - { - "name": "Tim Beiko", - "twitterURL": "https://x.com/TimBeiko", - "twitterHandle": "@TimBeiko", - "app1Name": "Matcha", - "app2Name": "Farcaster", - "app3Name": "Mirror" - }, - { - "name": "Trent Van Epps", - "twitterURL": "https://x.com/trent_vanepps", - "twitterHandle": "@trent_vanepps", - "app1Name": "zkp2p", - "app2Name": null, - "app3Name": null - }, - { - "name": "Jason Chaskin", - "twitterURL": "https://x.com/jchaskin22", - "twitterHandle": "@jchaskin", - "app1Name": "Aave", - "app2Name": "Farcaster", - "app3Name": "Fileverse" - } -] \ No newline at end of file +{ + "value": [ + { + "name": "Tim Beiko", + "twitterURL": "https://x.com/TimBeiko", + "twitterHandle": "@TimBeiko", + "app1Name": "Matcha", + "app2Name": "Farcaster", + "app3Name": "Mirror" + }, + { + "name": "Trent Van Epps", + "twitterURL": "https://x.com/trent_vanepps", + "twitterHandle": "@trent_vanepps", + "app1Name": "zkp2p", + "app2Name": null, + "app3Name": null + }, + { + "name": "Jason Chaskin", + "twitterURL": "https://x.com/jchaskin22", + "twitterHandle": "@jchaskin22", + "app1Name": "Aave", + "app2Name": "Farcaster", + "app3Name": "Fileverse" + } + ], + "timestamp": 1762456320181 +} \ No newline at end of file diff --git a/src/data/mocks/ethPrice.json b/src/data/mocks/ethPrice.json index d8eb75a4f2b..7d9346fc95a 100644 --- a/src/data/mocks/ethPrice.json +++ b/src/data/mocks/ethPrice.json @@ -1 +1,4 @@ -{ "value": 4000, "timestamp": 1759687080325 } +{ + "value": 3280.85, + "timestamp": 1762449885024 +} \ No newline at end of file diff --git a/src/data/mocks/ethereumMarketcap.json b/src/data/mocks/ethereumMarketcap.json new file mode 100644 index 00000000000..85f8a9d609a --- /dev/null +++ b/src/data/mocks/ethereumMarketcap.json @@ -0,0 +1,4 @@ +{ + "value": 396446832188.25806, + "timestamp": 1762449885124 +} \ No newline at end of file diff --git a/src/data/mocks/ethereumMarketcapData.json b/src/data/mocks/ethereumMarketcapData.json deleted file mode 100644 index e244f818224..00000000000 --- a/src/data/mocks/ethereumMarketcapData.json +++ /dev/null @@ -1 +0,0 @@ -{ "value": 419233099014.7839, "timestamp": 1732568502485 } diff --git a/src/data/mocks/ethereumStablecoinsData.json b/src/data/mocks/ethereumStablecoinsData.json deleted file mode 100644 index 337cc731b65..00000000000 --- a/src/data/mocks/ethereumStablecoinsData.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"tether","symbol":"usdt","name":"Tether","image":"https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661","current_price":0.9998,"market_cap":119527752495,"market_cap_rank":3,"fully_diluted_valuation":119527752495,"total_volume":49641535208,"high_24h":1.001,"low_24h":0.997043,"price_change_24h":-0.000002781420216369,"price_change_percentage_24h":-0.00028,"market_cap_change_24h":-44336733.83843994,"market_cap_change_percentage_24h":-0.03708,"circulating_supply":119632023784.447,"total_supply":119632023784.447,"max_supply":null,"ath":1.32,"ath_change_percentage":-24.4271,"ath_date":"2018-07-24T00:00:00.000Z","atl":0.572521,"atl_change_percentage":74.64887,"atl_date":"2015-03-02T00:00:00.000Z","roi":null,"last_updated":"2024-10-01T13:11:12.649Z"},{"id":"usd-coin","symbol":"usdc","name":"USDC","image":"https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694","current_price":0.999581,"market_cap":35309586606,"market_cap_rank":7,"fully_diluted_valuation":35309540001,"total_volume":7774438079,"high_24h":1.002,"low_24h":0.997063,"price_change_24h":-0.000170002231663524,"price_change_percentage_24h":-0.017,"market_cap_change_24h":-693591993.4392319,"market_cap_change_percentage_24h":-1.92647,"circulating_supply":35339998239.7757,"total_supply":35339951594.3419,"max_supply":null,"ath":1.17,"ath_change_percentage":-14.7322,"ath_date":"2019-05-08T00:40:28.300Z","atl":0.877647,"atl_change_percentage":13.93432,"atl_date":"2023-03-11T08:02:13.981Z","roi":null,"last_updated":"2024-10-01T13:11:10.525Z"},{"id":"dai","symbol":"dai","name":"Dai","image":"https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996","current_price":0.99987,"market_cap":5851938256,"market_cap_rank":22,"fully_diluted_valuation":5852300959,"total_volume":93115819,"high_24h":1.002,"low_24h":0.997201,"price_change_24h":-0.000344276117198117,"price_change_percentage_24h":-0.03442,"market_cap_change_24h":380085133,"market_cap_change_percentage_24h":6.94619,"circulating_supply":5857680087.46236,"total_supply":5858043146.42038,"max_supply":null,"ath":1.22,"ath_change_percentage":-17.96519,"ath_date":"2020-03-13T03:02:50.373Z","atl":0.88196,"atl_change_percentage":13.37787,"atl_date":"2023-03-11T07:50:50.514Z","roi":null,"last_updated":"2024-10-01T13:11:13.082Z"}] \ No newline at end of file diff --git a/src/data/mocks/ethereumStablecoinsMcap.json b/src/data/mocks/ethereumStablecoinsMcap.json new file mode 100644 index 00000000000..41fcd917827 --- /dev/null +++ b/src/data/mocks/ethereumStablecoinsMcap.json @@ -0,0 +1,4 @@ +{ + "value": 168213861923.17975, + "timestamp": 1762449885083 +} \ No newline at end of file diff --git a/src/data/mocks/frameworkGitHubData.json b/src/data/mocks/frameworkGitHubData.json new file mode 100644 index 00000000000..4f99e7e5fe6 --- /dev/null +++ b/src/data/mocks/frameworkGitHubData.json @@ -0,0 +1,80 @@ +{ + "value": { + "Kurtosis Ethereum Package": { + "starCount": 425, + "languages": [ + "Starlark", + "HTML", + "Python", + "Shell" + ] + }, + "hardhat": { + "starCount": 8293, + "languages": [ + "TypeScript", + "Solidity", + "JavaScript", + "HTML", + "Shell", + "Vyper", + "CSS" + ] + }, + "brownie": { + "starCount": 2723, + "languages": [ + "C", + "Python", + "Solidity", + "Vyper", + "Dockerfile" + ] + }, + "createethapp": { + "starCount": 2770, + "languages": [ + "JavaScript", + "TypeScript", + "Handlebars", + "HTML", + "Vue", + "CSS", + "Shell" + ] + }, + "scaffoldeth": { + "starCount": 1852, + "languages": [ + "TypeScript", + "Solidity", + "JavaScript", + "CSS" + ] + }, + "soliditytemplate": { + "starCount": 1981, + "languages": [ + "TypeScript", + "Solidity", + "JavaScript" + ] + }, + "foundry": { + "starCount": 9777, + "languages": [ + "Rust", + "Shell", + "TypeScript", + "JavaScript", + "Solidity", + "Makefile", + "Dockerfile", + "Nix", + "Python", + "Vyper" + ] + } + }, + "timestamp": 1762456320024 +} \ No newline at end of file diff --git a/src/data/mocks/frameworksListData.json b/src/data/mocks/frameworksListData.json deleted file mode 100644 index a5f36cf79eb..00000000000 --- a/src/data/mocks/frameworksListData.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"Kurtosis Ethereum Package","url":"https://github.com/kurtosis-tech/ethereum-package","githubUrl":"https://github.com/kurtosis-tech/ethereum-package","background":"#000000","name":"Kurtosis Ethereum Package","description":"page-developers-local-environment:page-local-environment-kurtosis-desc","alt":"page-developers-local-environment:page-local-environment-kurtosis-logo-alt","image":{"src":"/_next/static/media/kurtosis.2d89f1e0.png","height":500,"width":500,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAGFBMVEVMaXEAwSMAxCYAyCIAwiIAwiMAwSMAvyM0GQgYAAAACHRSTlMASRMJYVeGMThI5+sAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAtSURBVHicRYrJCQAwEISc2av/jsNCQnyJCB8TNjBttQClaoAoZa5sUdemN18ODtQAaWHwWFMAAAAASUVORK5CYII=","blurWidth":8,"blurHeight":8},"starCount":235,"languages":["Starlark","Python"]},{"id":"hardhat","url":"https://hardhat.org/","githubUrl":"https://github.com/nomiclabs/hardhat","background":"#faf8fb","name":"Hardhat","description":"page-developers-local-environment:page-local-environment-hardhat-desc","alt":"page-developers-local-environment:page-local-environment-hardhat-logo-alt","image":{"src":"/_next/static/media/hardhat.e5431960.png","height":200,"width":629,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAADCAMAAACZFr56AAAALVBMVEX59vr5+O3cw6f59tr9/P7Wk2Dm2VHz7bbev5Li4N69g2HTpHPy4tjh14Dr5HRySo1GAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAI0lEQVR4nGNgYGBg4eNlY2Zg52Rk4OJm5WFgZmRkYWLiYAQABpAAdvjWgdcAAAAASUVORK5CYII=","blurWidth":8,"blurHeight":3},"starCount":7212,"languages":["TypeScript","Solidity"]},{"id":"brownie","url":"https://github.com/eth-brownie/brownie","githubUrl":"https://github.com/eth-brownie/brownie","background":"#ffffff","name":"Brownie","description":"page-developers-local-environment:page-local-environment-brownie-desc","alt":"page-developers-local-environment:page-local-environment-brownie-logo-alt","image":{"src":"/_next/static/media/eth-diamond-black.a042df77.png","height":1303,"width":800,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAMAAAAGL8UJAAAALVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBoCg+AAAAD3RSTlMBFGnLX7GnI4A6UpOP4/dIbsMDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAK0lEQVR4nAXBhwHAMAgAIIya0fX/uQVUYHURNTNU53erfnNb13gOZ24Y4QcPHACtv+HuBAAAAABJRU5ErkJggg==","blurWidth":5,"blurHeight":8},"starCount":2640,"languages":["Python","Solidity"]},{"id":"epirus","url":"https://www.web3labs.com/epirus","githubUrl":"https://github.com/web3labs/epirus-free","background":"#ffffff","name":"Epirus","description":"page-developers-local-environment:page-local-environment-epirus-desc","alt":"page-developers-local-environment:page-local-environment-epirus-logo-alt","image":{"src":"/_next/static/media/epirus.5f7d05a1.png","height":105,"width":105,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAASFBMVEVMaXE+MuxJOv2Khvpyetx1b+hIOP1LPf+Wkv9IOf1HOfyTkP8eEqcaEZ4UCp4PA5qPi/+QjP9vZ/xgVfyem/9BM/YgFLNFPNK67oEUAAAAFHRSTlMA9LqdCxiR/brL2NPbOpSlfPf9/SnJx9EAAAAJcEhZcwAACxMAAAsTAQCanBgAAAA+SURBVHicHYtJFsAgCMW+FQS0s2jvf9M+ySbZBE8fIiIbmr/VrBawujKC2zXM15eXj32etCKNZIVaRrzk+gNNUgH0EjhMjQAAAABJRU5ErkJggg==","blurWidth":8,"blurHeight":8},"starCount":245,"languages":["HTML","Shell"]},{"id":"createethapp","url":"https://github.com/PaulRBerg/create-eth-app","githubUrl":"https://github.com/PaulRBerg/create-eth-app","background":"#ffffff","name":"Create Eth App","description":"page-developers-local-environment:page-local-environment-eth-app-desc","alt":"page-developers-local-environment:page-local-environment-eth-app-logo-alt","image":{"src":"/_next/static/media/eth-diamond-black.a042df77.png","height":1303,"width":800,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAMAAAAGL8UJAAAALVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBoCg+AAAAD3RSTlMBFGnLX7GnI4A6UpOP4/dIbsMDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAK0lEQVR4nAXBhwHAMAgAIIya0fX/uQVUYHURNTNU53erfnNb13gOZ24Y4QcPHACtv+HuBAAAAABJRU5ErkJggg==","blurWidth":5,"blurHeight":8},"starCount":2743,"languages":["JavaScript","TypeScript"]},{"id":"scaffoldeth","url":"https://scaffoldeth.io/","githubUrl":"https://github.com/scaffold-eth/scaffold-eth-2","background":"#ffffff","name":"Scaffold-ETH-2","description":"page-developers-local-environment:page-local-environment-scaffold-eth-desc","alt":"page-local-environment-scaffold-eth-logo-alt","image":{"src":"/_next/static/media/scaffoldeth.cd548199.png","height":100,"width":100,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAMFBMVEUAAAAAAAAAAAAAAAAXFxeGhoYMDAx1dXVeXl4tLS1JSUmVlZWhoaG7u7vR0dHp6emgnumOAAAAA3RSTlP3hItveKZsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOElEQVR4nC2LSQ7AIAzEBhwStsL/f4to65Mly8q8JInW3ZCwZ41iCGohPgnb/UoMv0ltzupI6d8PK9kBO0fyA1cAAAAASUVORK5CYII=","blurWidth":8,"blurHeight":8},"starCount":1320,"languages":["TypeScript","JavaScript"]},{"id":"soliditytemplate","url":"https://github.com/paulrberg/solidity-template","githubUrl":"https://github.com/paulrberg/solidity-template","background":"#ffffff","name":"Solidity template","description":"page-developers-local-environment:page-local-environment-solidity-template-desc","alt":"page-developers-local-environment:page-local-environment-solidity-template-logo-alt","image":{"src":"/_next/static/media/eth-diamond-black.a042df77.png","height":1303,"width":800,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAMAAAAGL8UJAAAALVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBoCg+AAAAD3RSTlMBFGnLX7GnI4A6UpOP4/dIbsMDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAK0lEQVR4nAXBhwHAMAgAIIya0fX/uQVUYHURNTNU53erfnNb13gOZ24Y4QcPHACtv+HuBAAAAABJRU5ErkJggg==","blurWidth":5,"blurHeight":8},"starCount":1955,"languages":["TypeScript","Solidity"]},{"id":"foundry","url":"https://getfoundry.sh/","githubUrl":"https://github.com/foundry-rs/foundry","background":"#ffffff","name":"Foundry","description":"page-developers-local-environment:page-local-environment-foundry-desc","alt":"page-developers-local-environment:page-local-environment-foundry-logo-alt","image":{"src":"/_next/static/media/foundry.1018b0c1.png","height":200,"width":200,"blurDataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAATlBMVEV1dXXCwsKjo6Ofn5/z8/N4eHjo6OhxcXGJiYnKysqNjY2Li4uWlpaZmZmxsbGysrLR0dHT09O9vb1CQkK0tLShoaFwcHBUVFT////W1tYM2FdSAAAAFnRSTlMCX6uk/f78qP7+XKVf/F+k+177+aWoKC52FAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAEFJREFUeJwVy0cSgDAMALFNtdMIbRz4/0cZdBfQRTpAMzNrUFeKUVdFLKvmJMx46ijlxpWx58sOCI+lN/xt897BB1iEAl23XQdDAAAAAElFTkSuQmCC","blurWidth":8,"blurHeight":8},"starCount":8167,"languages":["Rust","Shell"]}] \ No newline at end of file diff --git a/src/data/mocks/gfissues.json b/src/data/mocks/gfissues.json index d5598104d06..5b4ca635e68 100644 --- a/src/data/mocks/gfissues.json +++ b/src/data/mocks/gfissues.json @@ -1,92 +1,1254 @@ -[ - { - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13992", - "html_url": "https://github.com/ethereum/ethereum-org-website/issues/13992", - "title": "Bug report ...... PAGE NOT FOUND broken link", - "user": { - "login": "Xcertik-Realist", - "id": 63165931, - "avatar_url": "https://avatars.githubusercontent.com/u/63165931?v=4" +{ + "value": [ + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/16082", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/16082/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/16082/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/16082/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/16082", + "id": 3331482343, + "node_id": "I_kwDOBvEA_s7GkmLn", + "number": 16082, + "title": "Suggest a wallet: io.finnet MPC wallet for Business", + "user": { + "login": "cbarlow1993", + "id": 7342008, + "node_id": "MDQ6VXNlcjczNDIwMDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/7342008?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cbarlow1993", + "html_url": "https://github.com/cbarlow1993", + "followers_url": "https://api.github.com/users/cbarlow1993/followers", + "following_url": "https://api.github.com/users/cbarlow1993/following{/other_user}", + "gists_url": "https://api.github.com/users/cbarlow1993/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cbarlow1993/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cbarlow1993/subscriptions", + "organizations_url": "https://api.github.com/users/cbarlow1993/orgs", + "repos_url": "https://api.github.com/users/cbarlow1993/repos", + "events_url": "https://api.github.com/users/cbarlow1993/events{/privacy}", + "received_events_url": "https://api.github.com/users/cbarlow1993/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + }, + { + "id": 3982036190, + "node_id": "LA_kwDOBvEA_s7tWQze", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/wallet%20%F0%9F%91%9B", + "name": "wallet 👛", + "color": "0983DF", + "default": false, + "description": "This issue relates to adding or changing a wallet" + }, + { + "id": 5018762711, + "node_id": "LA_kwDOBvEA_s8AAAABKyQ91w", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/dev%20required", + "name": "dev required", + "color": "90AE07", + "default": false, + "description": "This requires developer resources" + }, + { + "id": 6799206342, + "node_id": "LA_kwDOBvEA_s8AAAABlUOnxg", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/product%20%F0%9F%A7%B0", + "name": "product 🧰", + "color": "fef2c0", + "default": false, + "description": "This involves a product listing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2025-08-18T17:07:22Z", + "updated_at": "2025-11-05T03:35:28Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "### Wallet name\n\nio.finnet MPC wallet for Business\n\n### What type of wallet?\n\nEOA\n\n### Wallet description\n\nio.finnet is an advanced MPC-powered self-custody wallet designed for businesses, offering multi-chain support, seamless asset management capabilities, and the highest level of security. \nBy distributing weighted signing powers among team members, it eliminates single points of failure while ensuring accessibility through mobile signatures and scalability with a virtual signer.\n\n### Wallet logo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### Background color for brand logo\n\n#FFFFFF\n\n### URL to the project\n\nhttps://www.iofinnet.com/our-solution-vault\n\n### When did the wallet go live to users?\n\nMay 2024\n\n### What are the fees users may be paying for using your wallet product?\n\n\"Freetier. Custom, depending on service integration and transaction policies. \nView prices: https://www.iofinnet.com/io-vault-prices \"\n\n### Does the wallet have an active development team?\n\nYes, 25 tech, active development with GitHub and regular updates. https://github.com/IoFinnet\n\n### Is the wallet globally accessible?\n\nYes\n\n### Is the wallet available in multiple languages?\n\nOnly English (currently)\n\n### What social links are there for the project?\n\n[Twitter](https://twitter.com/iofinnet), [LinkedIn](https://www.linkedin.com/company/iofinnet/)\n\n### Does the wallet have a mobile app? If yes, which operating systems are supported (iOS, Android)?\n\n\"Yes, iOS with Secure Enclave support ([App store](https://apps.apple.com/us/app/io-finnet/id1641136546))\nalso available on Android ([Google play](https://play.google.com/store/apps/details?id=com.iofinnet.vault))\"\n\n### Does the wallet have a desktop app? If yes, which operating systems are supported (Windows, Mac, Linux)?\n\n\"No, but it has a comprehensive dashboard and API.\nview tech doc: https://docs.iofinnet.com/reference/core-introduction \"\n\n### Does the wallet have a browser extension? If yes, which browsers are supported (Chromium, Firefox, Safari)?\n\nNo\n\n### Is it a hardware wallet?\n\nNo. It is a MPC wallet.\n\n### What is the availability of your source code?\n\nOpen source\n\n### What license is the wallet software released under?\n\nGPLv3 for public libraries; other proprietary licenses for the main application.\n\n### Who holds the private keys?\n\nUsers hold all key shares; io.finnet does not store any private keys.\n\n### Please describe the measures taken to ensure the wallet's security and provide documentation wherever possible\n\n\"SOC 2 compliance, audits by Kudelski/NCC, trustless MPC, encrypted communications/storage, proactive refresh of keys.\nView our Security[ one pager ](https://drive.google.com/file/d/166NN9d93m-sH44UWbxSWdm-S9LKM1T8F/view?usp=sharing)\"\n\n### Has the wallet's smart contract code or security modules been audited?\n\nYes, audits by Kudelski Security and NCC Group. View our Security one pager \n\n### Does the wallet have an internal security team?\n\nYes. View our Security one pager \n\n### Any other security testing that should be noted?\n\nRegular penetration tests, mock attacks, and automated vulnerability checks.\n\n### Scam protection?\n\n\"Yes, through a built-in policy enforcement and secure UI review. \nTransaction simulation, validation and risks detection with [Blockaid](https://www.blockaid.io/blog/io-finnet-strengthens-institutional-defi-security-through-strategic-blockaid-integration) integration\"\n\n### Does the wallet support connecting to Ethereum applications?\n\nYes, through WalletConnect. View Guides here\n\n### Does the wallet support connecting to a hardware wallet?\n\nNo\n\n### Does the wallet support importing Ethereum RPC endpoints?\n\nNo\n\n### Does the wallet support viewing and interacting with NFTs?\n\nYes\n\n### Does the wallet support staking directly?\n\nYes, supports staking for selected tokens (ex: Eth) with Kiln integration\n\n### Does the wallet support swaps directly?\n\nPlanned via integrations.\n\n### Does the wallet support bridging directly?\n\nPlanned via development.\n\n### Does the wallet support multi-chain networks?\n\n\"Yes, supports Ethereum, Bitcoin, Tron, BNB Chain, Polygon, Avalanche, Bittensor and more. view the full list here\"\n\n### Which Ethereum Layer 2 networks does the wallet support?\n\n\"Optimism, Arbitrum, zkEVM. View tech documentation\"\n\n### Does the wallet allow the user to customize gas fees?\n\nYes. view here Gas fee documentation \n\n### Does the wallet support sending transactions to ENS addresses?\n\nNo\n\n### Does the wallet support importing or automatically querying and displaying ERC-20 tokens?\n\nYesYes, with automatic detection. \n\n### Does the wallet support EIP-1559 (type 2) transactions?\n\nYes\n\n### Does the wallet have any recovery options?\n\n\"Yes, open-source disaster recovery tools are available.\nview [here](https://support.iofinnet.com/helpcenter/iov/disaster-recovery) our disaster recovery information\"\n\n### Does the wallet have fiat on-ramps through credit/debit cards, wire transfers, or bank transfers (ACH)?\n\nNo\n\n### Does the wallet support withdrawals to fiat?\n\nNo\n\n### Is the wallet a multi-signature wallet?\n\nYes, based on MPC with configurable thresholds.\n\n### Does the wallet support social recovery?\n\nNo\n\n### Does the wallet support bundled transactions?\n\nNo\n\n### Who can the ethereum.org team can contact regarding the wallet in future?\n\nClementine Drouot, Marketing\nMail: clementine@iofinnet.com\nTelegram: @ClementineDrouot\nhttps://calendly.com/clementinedrouot/30min \n\nChris Barlow, Tech\nMail: chris@iofinnet.com\nTelegram: @chrisbarlow\n\n### Does the wallet have a dedicated support team?\n\nYes, available via email and website. Response inf. 24hours (working days)\n\n### What educational resources/documentation do you provide to users?\n\n\"Developer and user documentation on the official website.\n[Help Center](https://support.iofinnet.com/helpcenter) and [Tech Documentation](https://docs.iofinnet.com/reference/core-introduction)\"\n\n### Does the wallet have any integrated tools not mentioned above?\n\n_No response_\n\n### Would you like to work on this issue?\n\n- [ ] Yes\n- [ ] No", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/16082/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/16082/timeline", + "performed_via_github_app": null, + "state_reason": null }, - "labels": [ - { - "id": 796509427, - "node_id": "MDU6TGFiZWw3OTY1MDk0Mjc=", - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/bug%20%F0%9F%90%9B", - "name": "bug 🐛", - "color": "ee0701", - "default": false, - "description": "Something isn't working" - }, - { - "id": 2847180148, - "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", - "name": "good first issue", - "color": "6C5DF6", - "default": true, - "description": "Good item to try if you're new to contributing" - }, - { - "id": 7537785110, - "node_id": "LA_kwDOBvEA_s8AAAABwUl5Fg", - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/hacktoberfest", - "name": "hacktoberfest", - "color": "F2B767", - "default": false, - "description": "Track hacktoberfest activity" - }, - { - "id": 7538280799, - "node_id": "LA_kwDOBvEA_s8AAAABwVEJXw", - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/hacktoberfest-beginner", - "name": "hacktoberfest-beginner", - "color": "F5D720", - "default": false, - "description": "GFI for hacktoberfest participants" - } - ] - }, - { - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13930", - "html_url": "https://github.com/ethereum/ethereum-org-website/issues/13930", - "title": "Bug in \"Merkle patricia trie\" page on mobile", - "user": { - "login": "UNOFFICIALbgd", - "id": 71248977, - "avatar_url": "https://avatars.githubusercontent.com/u/71248977?v=4" + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13655", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13655/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13655/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13655/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/13655", + "id": 2468290961, + "node_id": "I_kwDOBvEA_s6THyGR", + "number": 13655, + "title": "Content request: best design practices for wallets (UX/UI)", + "user": { + "login": "konopkja", + "id": 100724231, + "node_id": "U_kgDOBgDuBw", + "avatar_url": "https://avatars.githubusercontent.com/u/100724231?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/konopkja", + "html_url": "https://github.com/konopkja", + "followers_url": "https://api.github.com/users/konopkja/followers", + "following_url": "https://api.github.com/users/konopkja/following{/other_user}", + "gists_url": "https://api.github.com/users/konopkja/gists{/gist_id}", + "starred_url": "https://api.github.com/users/konopkja/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/konopkja/subscriptions", + "organizations_url": "https://api.github.com/users/konopkja/orgs", + "repos_url": "https://api.github.com/users/konopkja/repos", + "events_url": "https://api.github.com/users/konopkja/events{/privacy}", + "received_events_url": "https://api.github.com/users/konopkja/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 1553318847, + "node_id": "MDU6TGFiZWwxNTUzMzE4ODQ3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/content%20%F0%9F%96%8B%EF%B8%8F", + "name": "content 🖋️", + "color": "70e855", + "default": false, + "description": "This involves copy additions or edits" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + }, + { + "id": 5132676379, + "node_id": "LA_kwDOBvEA_s8AAAABMe5tGw", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/design", + "name": "design", + "color": "800284", + "default": false, + "description": "All the issues related to design should use this tag" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 16, + "created_at": "2024-08-15T15:22:42Z", + "updated_at": "2025-10-29T08:07:56Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "This is a content request for anyone to write a beginner friendly article about designing a crypto wallet interface.\r\n\r\nWhoever wants to write the article, please first comment on this issue and we will assign it to you.\r\n\r\n**Where will the article live?**\r\nIt will be added to design documentation: https://ethereum.org/en/developers/docs/design-and-ux/\r\n\r\n**Describe the solution you'd like**\r\n\r\n- focus on practical tips how to handle different steps in the process\r\n- describe common UX issues in wallets to fix or avoid\r\n- guidelines to follow \r\n\r\nIf this is too broad it can be split into multiple articles", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13655/reactions", + "total_count": 3, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 3, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13655/timeline", + "performed_via_github_app": null, + "state_reason": null }, - "labels": [ - { - "id": 796509427, - "node_id": "MDU6TGFiZWw3OTY1MDk0Mjc=", - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/bug%20%F0%9F%90%9B", - "name": "bug 🐛", - "color": "ee0701", - "default": false, - "description": "Something isn't working" - } - ] - }, - { - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13711", - "html_url": "https://github.com/ethereum/ethereum-org-website/issues/13711", - "title": "Remove Atom Editor from IDE List on Ethereum.org", - "user": { - "login": "Shiva-Sai-ssb", - "id": 112751524, - "avatar_url": "https://avatars.githubusercontent.com/u/112751524?v=4" + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13054", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13054/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13054/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13054/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/13054", + "id": 2319785331, + "node_id": "I_kwDOBvEA_s6KRR1z", + "number": 13054, + "title": "Create stories for Staking components", + "user": { + "login": "corwintines", + "id": 15589226, + "node_id": "MDQ6VXNlcjE1NTg5MjI2", + "avatar_url": "https://avatars.githubusercontent.com/u/15589226?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/corwintines", + "html_url": "https://github.com/corwintines", + "followers_url": "https://api.github.com/users/corwintines/followers", + "following_url": "https://api.github.com/users/corwintines/following{/other_user}", + "gists_url": "https://api.github.com/users/corwintines/gists{/gist_id}", + "starred_url": "https://api.github.com/users/corwintines/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/corwintines/subscriptions", + "organizations_url": "https://api.github.com/users/corwintines/orgs", + "repos_url": "https://api.github.com/users/corwintines/repos", + "events_url": "https://api.github.com/users/corwintines/events{/privacy}", + "received_events_url": "https://api.github.com/users/corwintines/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509429, + "node_id": "MDU6TGFiZWw3OTY1MDk0Mjk=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/feature%20%E2%9C%A8", + "name": "feature ✨", + "color": "1d76db", + "default": false, + "description": "This is enhancing something existing or creating something new" + }, + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/milestones/6", + "html_url": "https://github.com/ethereum/ethereum-org-website/milestone/6", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/milestones/6/labels", + "id": 11152376, + "node_id": "MI_kwDOBvEA_s4Aqiv4", + "number": 6, + "title": "Implementation of visual testing epic (13043)", + "description": "", + "creator": { + "login": "wackerow", + "id": 54227730, + "node_id": "MDQ6VXNlcjU0MjI3NzMw", + "avatar_url": "https://avatars.githubusercontent.com/u/54227730?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wackerow", + "html_url": "https://github.com/wackerow", + "followers_url": "https://api.github.com/users/wackerow/followers", + "following_url": "https://api.github.com/users/wackerow/following{/other_user}", + "gists_url": "https://api.github.com/users/wackerow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wackerow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wackerow/subscriptions", + "organizations_url": "https://api.github.com/users/wackerow/orgs", + "repos_url": "https://api.github.com/users/wackerow/repos", + "events_url": "https://api.github.com/users/wackerow/events{/privacy}", + "received_events_url": "https://api.github.com/users/wackerow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "open_issues": 3, + "closed_issues": 7, + "state": "open", + "created_at": "2024-06-06T20:51:37Z", + "updated_at": "2025-10-06T21:33:38Z", + "due_on": null, + "closed_at": null + }, + "comments": 7, + "created_at": "2024-05-27T21:14:22Z", + "updated_at": "2025-05-28T08:08:19Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Create stories for the following Staking components:\r\n- [ ] StakingConsiderations\r\n- [ ] StakingProductsCardGrid\r\n- [ ] StakingCommunityuCallout\r\n- [ ] StakingComparison\r\n- [ ] StakingGuides\r\n- [ ] StakingHierarchy\r\n- [ ] StakingHowSoloWorks\r\n- [ ] StakingLaunchpadWidget\r\n- [ ] StakingStatsBox\r\n- [ ] WithdrawalCredentials\r\n- [ ] WithdrawalsTabComparison", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13054/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13054/timeline", + "performed_via_github_app": null, + "state_reason": null }, - "labels": [ - { - "id": 796509427, - "node_id": "MDU6TGFiZWw3OTY1MDk0Mjc=", - "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/bug%20%F0%9F%90%9B", - "name": "bug 🐛", - "color": "ee0701", - "default": false, - "description": "Something isn't working" - } - ] - } -] + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13050", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13050/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13050/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13050/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/13050", + "id": 2319784466, + "node_id": "I_kwDOBvEA_s6KRRoS", + "number": 13050, + "title": "Create stories for Header components", + "user": { + "login": "corwintines", + "id": 15589226, + "node_id": "MDQ6VXNlcjE1NTg5MjI2", + "avatar_url": "https://avatars.githubusercontent.com/u/15589226?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/corwintines", + "html_url": "https://github.com/corwintines", + "followers_url": "https://api.github.com/users/corwintines/followers", + "following_url": "https://api.github.com/users/corwintines/following{/other_user}", + "gists_url": "https://api.github.com/users/corwintines/gists{/gist_id}", + "starred_url": "https://api.github.com/users/corwintines/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/corwintines/subscriptions", + "organizations_url": "https://api.github.com/users/corwintines/orgs", + "repos_url": "https://api.github.com/users/corwintines/repos", + "events_url": "https://api.github.com/users/corwintines/events{/privacy}", + "received_events_url": "https://api.github.com/users/corwintines/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509429, + "node_id": "MDU6TGFiZWw3OTY1MDk0Mjk=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/feature%20%E2%9C%A8", + "name": "feature ✨", + "color": "1d76db", + "default": false, + "description": "This is enhancing something existing or creating something new" + }, + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/milestones/6", + "html_url": "https://github.com/ethereum/ethereum-org-website/milestone/6", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/milestones/6/labels", + "id": 11152376, + "node_id": "MI_kwDOBvEA_s4Aqiv4", + "number": 6, + "title": "Implementation of visual testing epic (13043)", + "description": "", + "creator": { + "login": "wackerow", + "id": 54227730, + "node_id": "MDQ6VXNlcjU0MjI3NzMw", + "avatar_url": "https://avatars.githubusercontent.com/u/54227730?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wackerow", + "html_url": "https://github.com/wackerow", + "followers_url": "https://api.github.com/users/wackerow/followers", + "following_url": "https://api.github.com/users/wackerow/following{/other_user}", + "gists_url": "https://api.github.com/users/wackerow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wackerow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wackerow/subscriptions", + "organizations_url": "https://api.github.com/users/wackerow/orgs", + "repos_url": "https://api.github.com/users/wackerow/repos", + "events_url": "https://api.github.com/users/wackerow/events{/privacy}", + "received_events_url": "https://api.github.com/users/wackerow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "open_issues": 3, + "closed_issues": 7, + "state": "open", + "created_at": "2024-06-06T20:51:37Z", + "updated_at": "2025-10-06T21:33:38Z", + "due_on": null, + "closed_at": null + }, + "comments": 8, + "created_at": "2024-05-27T21:13:17Z", + "updated_at": "2025-09-19T08:07:34Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Create stories for the following header components:\r\n- [ ] LanguagePicker\r\n- [ ] Nav\r\n- [ ] Search", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13050/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/13050/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12937", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12937/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12937/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12937/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/12937", + "id": 2287097537, + "node_id": "I_kwDOBvEA_s6IUlbB", + "number": 12937, + "title": "Add event listing: European Blockchain Convention", + "user": { + "login": "Tatianavyto", + "id": 169032511, + "node_id": "U_kgDOChM7Pw", + "avatar_url": "https://avatars.githubusercontent.com/u/169032511?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Tatianavyto", + "html_url": "https://github.com/Tatianavyto", + "followers_url": "https://api.github.com/users/Tatianavyto/followers", + "following_url": "https://api.github.com/users/Tatianavyto/following{/other_user}", + "gists_url": "https://api.github.com/users/Tatianavyto/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Tatianavyto/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Tatianavyto/subscriptions", + "organizations_url": "https://api.github.com/users/Tatianavyto/orgs", + "repos_url": "https://api.github.com/users/Tatianavyto/repos", + "events_url": "https://api.github.com/users/Tatianavyto/events{/privacy}", + "received_events_url": "https://api.github.com/users/Tatianavyto/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 1632703486, + "node_id": "MDU6TGFiZWwxNjMyNzAzNDg2", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/low%20priority", + "name": "low priority", + "color": "0e8a16", + "default": false, + "description": "This has a low priority" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + }, + { + "id": 5222559533, + "node_id": "LA_kwDOBvEA_s8AAAABN0nvLQ", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/event%20%F0%9F%93%85", + "name": "event 📅", + "color": "6D289B", + "default": false, + "description": "This issue or pull request is related to an event listing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 12, + "created_at": "2024-05-09T07:41:43Z", + "updated_at": "2025-07-27T08:07:43Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "### Event/Meetup Name\r\n\r\nEuropean Blockchain Convention\r\n\r\n### Website\r\n\r\nhttps://eblockchainconvention.com/\r\n\r\n### Location (City/Country, or Remote)\r\n\r\nBarcelona/Spain\r\n\r\n### Description\r\n\r\nReady to be part of the most influential blockchain event in Europe? With 6.000 attendees and 300 speakers, EBC is back bigger and better than ever! Join us in Barcelona for a 2-day extravaganza and meet the whole Web3 ecosystem in one go. Experience an unforgettable event featuring 3 stages, a buzzing exhibition area, startup competitions, parties, and so much more.\r\n\r\n### Start date: (yyyy-mm-dd)\r\n\r\n2024-09-25\r\n\r\n### End date: (yyyy-mm-dd)\r\n\r\n2024-09-26\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Would you like to work on this issue?\r\n\r\n- [ ] Yes\r\n```[tasklist]\r\n### Tasks\r\n```\r\n", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12937/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12937/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12195", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12195/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12195/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12195/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/12195", + "id": 2137188006, + "node_id": "I_kwDOBvEA_s5_Yuam", + "number": 12195, + "title": "Documentation request: interacting with smart contracts", + "user": { + "login": "wackerow", + "id": 54227730, + "node_id": "MDQ6VXNlcjU0MjI3NzMw", + "avatar_url": "https://avatars.githubusercontent.com/u/54227730?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wackerow", + "html_url": "https://github.com/wackerow", + "followers_url": "https://api.github.com/users/wackerow/followers", + "following_url": "https://api.github.com/users/wackerow/following{/other_user}", + "gists_url": "https://api.github.com/users/wackerow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wackerow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wackerow/subscriptions", + "organizations_url": "https://api.github.com/users/wackerow/orgs", + "repos_url": "https://api.github.com/users/wackerow/repos", + "events_url": "https://api.github.com/users/wackerow/events{/privacy}", + "received_events_url": "https://api.github.com/users/wackerow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509429, + "node_id": "MDU6TGFiZWw3OTY1MDk0Mjk=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/feature%20%E2%9C%A8", + "name": "feature ✨", + "color": "1d76db", + "default": false, + "description": "This is enhancing something existing or creating something new" + }, + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 1553318847, + "node_id": "MDU6TGFiZWwxNTUzMzE4ODQ3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/content%20%F0%9F%96%8B%EF%B8%8F", + "name": "content 🖋️", + "color": "70e855", + "default": false, + "description": "This involves copy additions or edits" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 15, + "created_at": "2024-02-15T18:39:08Z", + "updated_at": "2025-01-24T08:07:10Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "_Re-posting issue from #6327 to bring to surface. Still think this is a good idea and help welcomed_\r\n\r\n---\r\n\r\n**Is your feature request related to a problem? Please describe.**\r\n\r\nIn our [smart contract docs](https://ethereum.org/en/developers/docs/smart-contracts/) we explain how to write, compile & deploy smart contracts but often developers don't want/need to deploy their own smart contracts, they simply want to interact with existing contracts that are already deployed.\r\n\r\n**Describe the solution you'd like**\r\n\r\nCreate a new \"Interacting with smart contracts\" documentation page: (within /smart-contracts/)\r\n- Explain the different ways to interact with smart contracts (i.e. CRUD)\r\n - querying data (which doesn't create a transaction)\r\n - mutating data, by triggering a tx from an EOA (or from another contract)\r\n- Explain contract ABIs & how they are consumed by other developer tools/libraries to understand the interface of a smart contract & how to interact with the contract\r\n- List different approaches/tools/projects that allow developer to write programs that interact with contracts\r\n - e.g. https://ethereum.org/en/developers/docs/apis/javascript/\r\n - e.g. https://ethereum.org/en/developers/docs/apis/backend/\r\n- Link to tutorials that demonstrate different approaches?\r\n - e.g. https://ethereum.org/en/developers/tutorials/calling-a-smart-contract-from-javascript/\r\n- ...anything else? \r\n\r\n**Describe alternatives you've considered**\r\n\r\nConsidered adding a section on ABIs in the \"[Compiling smart contracts](https://ethereum.org/en/developers/docs/smart-contracts/compiling/)\" page but this topic seems to warrant a dedicated page. Often people who want to interact with a smart contract won't be the person compiling/deploying the contract.\r\n\r\n**Additional context**\r\n\r\nThis came up in discussions on #6308 & the value of having greater explanation of contract ABI & metadata.\r\n\r\n**Want to contribute?**\r\n\r\nWe love contributions from the Ethereum community! Please comment on an issue if you'd like to give any input or if you're interested in helping out with a PR.", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12195/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/12195/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11833", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11833/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11833/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11833/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/11833", + "id": 2055907032, + "node_id": "I_kwDOBvEA_s56iqbY", + "number": 11833, + "title": "Suggest a developer tool", + "user": { + "login": "ricardo-jtg", + "id": 35004742, + "node_id": "MDQ6VXNlcjM1MDA0NzQy", + "avatar_url": "https://avatars.githubusercontent.com/u/35004742?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ricardo-jtg", + "html_url": "https://github.com/ricardo-jtg", + "followers_url": "https://api.github.com/users/ricardo-jtg/followers", + "following_url": "https://api.github.com/users/ricardo-jtg/following{/other_user}", + "gists_url": "https://api.github.com/users/ricardo-jtg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ricardo-jtg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ricardo-jtg/subscriptions", + "organizations_url": "https://api.github.com/users/ricardo-jtg/orgs", + "repos_url": "https://api.github.com/users/ricardo-jtg/repos", + "events_url": "https://api.github.com/users/ricardo-jtg/events{/privacy}", + "received_events_url": "https://api.github.com/users/ricardo-jtg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + }, + { + "id": 6799206342, + "node_id": "LA_kwDOBvEA_s8AAAABlUOnxg", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/product%20%F0%9F%A7%B0", + "name": "product 🧰", + "color": "fef2c0", + "default": false, + "description": "This involves a product listing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 11, + "created_at": "2023-12-25T23:18:01Z", + "updated_at": "2025-08-26T08:09:10Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "### Dev tool name\n\nStylus\n\n### Dev tool description\n\n\"Stylus is an upgrade to Arbitrum Nitro, the tech stack powering Arbitrum One, Arbitrum Nova, and Arbitrum Orbit chains. This upgrade adds a second, coequal virtual machine to the EVM, where EVM contracts continue to behave exactly as they would in Ethereum. We call this paradigm EVM+ since everything is entirely additive.\"\r\n\r\nDocumentation:\r\nhttps://docs.arbitrum.io/stylus/stylus-gentle-introduction\n\n### When did the dev tool go live?\n\nStill in alpha. Mainnet launch in 2024\n\n### Where do you think this page should be shown?\n\nETHEREUM FOR RUST DEVELOPERS\r\n\n\n### Is the product open source?\n\nYes\n\n### GitHub URL\n\nhttps://github.com/OffchainLabs/stylus\n\n### Documentation URL\n\nhttps://docs.arbitrum.io/stylus/stylus-gentle-introduction\n\n### Additional context\n\n_No response_\n\n### Would you like to work on this issue?\n\n- [X] Yes\n- [ ] No", + "closed_by": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11833/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11833/timeline", + "performed_via_github_app": null, + "state_reason": "reopened" + }, + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11937", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11937/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11937/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11937/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/11937", + "id": 2083833136, + "node_id": "I_kwDOBvEA_s58NMUw", + "number": 11937, + "title": "Update Comments in `.env.example`", + "user": { + "login": "TylerAPfledderer", + "id": 65234762, + "node_id": "MDQ6VXNlcjY1MjM0NzYy", + "avatar_url": "https://avatars.githubusercontent.com/u/65234762?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TylerAPfledderer", + "html_url": "https://github.com/TylerAPfledderer", + "followers_url": "https://api.github.com/users/TylerAPfledderer/followers", + "following_url": "https://api.github.com/users/TylerAPfledderer/following{/other_user}", + "gists_url": "https://api.github.com/users/TylerAPfledderer/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TylerAPfledderer/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TylerAPfledderer/subscriptions", + "organizations_url": "https://api.github.com/users/TylerAPfledderer/orgs", + "repos_url": "https://api.github.com/users/TylerAPfledderer/repos", + "events_url": "https://api.github.com/users/TylerAPfledderer/events{/privacy}", + "received_events_url": "https://api.github.com/users/TylerAPfledderer/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 1632703487, + "node_id": "MDU6TGFiZWwxNjMyNzAzNDg3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/refactor%20%E2%99%BB%EF%B8%8F", + "name": "refactor ♻️", + "color": "338A54", + "default": false, + "description": "Changes which don't affect functionality" + }, + { + "id": 1632703488, + "node_id": "MDU6TGFiZWwxNjMyNzAzNDg4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/tooling%20%F0%9F%94%A7", + "name": "tooling 🔧", + "color": "c416e2", + "default": false, + "description": "Changes related to tooling of the project" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 8, + "created_at": "2023-10-28T18:02:24Z", + "updated_at": "2024-11-24T08:06:34Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Add comments for the set of env variables for the Algolia search in [.env.example](https://github.com/ethereum/ethereum-org-fork/blob/dev/.env.example). Either clearly define a set of keys available to use for the project when testing the functionality with content in the project or supply the [test keys provided by the DocSearch docs](https://docsearch.algolia.com/docs/docsearch-v3/#testing).\r\n\r\nSecondly, update comment to state that `.env.example` file name needs to be converted to `.env.local` when in use, per NextJS requirement.", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11937/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/11937/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/7631", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/7631/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/7631/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/7631/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/7631", + "id": 1355850267, + "node_id": "I_kwDOBvEA_s5Q0KIb", + "number": 7631, + "title": "Add resource for risk assessment to DeFi dapps page", + "user": { + "login": "emmanuel-awosika", + "id": 102589267, + "node_id": "U_kgDOBh1jUw", + "avatar_url": "https://avatars.githubusercontent.com/u/102589267?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/emmanuel-awosika", + "html_url": "https://github.com/emmanuel-awosika", + "followers_url": "https://api.github.com/users/emmanuel-awosika/followers", + "following_url": "https://api.github.com/users/emmanuel-awosika/following{/other_user}", + "gists_url": "https://api.github.com/users/emmanuel-awosika/gists{/gist_id}", + "starred_url": "https://api.github.com/users/emmanuel-awosika/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/emmanuel-awosika/subscriptions", + "organizations_url": "https://api.github.com/users/emmanuel-awosika/orgs", + "repos_url": "https://api.github.com/users/emmanuel-awosika/repos", + "events_url": "https://api.github.com/users/emmanuel-awosika/events{/privacy}", + "received_events_url": "https://api.github.com/users/emmanuel-awosika/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509429, + "node_id": "MDU6TGFiZWw3OTY1MDk0Mjk=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/feature%20%E2%9C%A8", + "name": "feature ✨", + "color": "1d76db", + "default": false, + "description": "This is enhancing something existing or creating something new" + }, + { + "id": 1553318847, + "node_id": "MDU6TGFiZWwxNTUzMzE4ODQ3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/content%20%F0%9F%96%8B%EF%B8%8F", + "name": "content 🖋️", + "color": "70e855", + "default": false, + "description": "This involves copy additions or edits" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2022-08-30T14:21:22Z", + "updated_at": "2025-10-28T08:08:11Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Is your feature request related to a problem? Please describe.**\r\n\r\nThe [DeFi dapps page](https://ethereum.org/en/dapps/?category=finance) has a disclaimer warning users of the risks of using DeFi protocols, but doesn't highlight resources for users who want to learning about those risks.\r\n\r\n\r\n**Describe the solution you'd like**\r\n\r\nI suggest adding a link to a risk assessment resource specifically for DeFi apps, such as [DeFi Safety](https://www.defisafety.com/). Asking users to DYOR has limited effectiveness if they don't know where to start. Similar to how we direct users to L2Beat on the [Layer 2 page](https://ethereum.org/en/layer-2/) page, I feel linking out to DeFi Safety would have similar benefits.\r\n\r\n**Describe alternatives you've considered**\r\n\r\nWe could add the resource to the [DeFi use-case page](https://ethereum.org/en/defi/), but, again, like putting L2Beat on the L2 page, it helps to have users see this info before picking a DeFi dapp to use. A better alternative might be to put the resource on *both* pages for more exposure. \r\n\r\n**Additional context**\r\n\r\nI could help edit the page to add the link and a brief text explaining why users should consider using it for research. That's if I know what file to edit, though. \r\n\r\n**Want to contribute?**\r\n\r\nWe love contributions from the Ethereum community! Please comment on an issue if you're interested in helping out with a PR.\r\n", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/7631/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/7631/timeline", + "performed_via_github_app": null, + "state_reason": null + }, + { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/6251", + "repository_url": "https://api.github.com/repos/ethereum/ethereum-org-website", + "labels_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/6251/labels{/name}", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/6251/comments", + "events_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/6251/events", + "html_url": "https://github.com/ethereum/ethereum-org-website/issues/6251", + "id": 1227829602, + "node_id": "I_kwDOBvEA_s5JLzFi", + "number": 6251, + "title": "Create new documentation page on authentication", + "user": { + "login": "samajammin", + "id": 8097623, + "node_id": "MDQ6VXNlcjgwOTc2MjM=", + "avatar_url": "https://avatars.githubusercontent.com/u/8097623?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/samajammin", + "html_url": "https://github.com/samajammin", + "followers_url": "https://api.github.com/users/samajammin/followers", + "following_url": "https://api.github.com/users/samajammin/following{/other_user}", + "gists_url": "https://api.github.com/users/samajammin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/samajammin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/samajammin/subscriptions", + "organizations_url": "https://api.github.com/users/samajammin/orgs", + "repos_url": "https://api.github.com/users/samajammin/repos", + "events_url": "https://api.github.com/users/samajammin/events{/privacy}", + "received_events_url": "https://api.github.com/users/samajammin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 796509429, + "node_id": "MDU6TGFiZWw3OTY1MDk0Mjk=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/feature%20%E2%9C%A8", + "name": "feature ✨", + "color": "1d76db", + "default": false, + "description": "This is enhancing something existing or creating something new" + }, + { + "id": 796509431, + "node_id": "MDU6TGFiZWw3OTY1MDk0MzE=", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/help%20wanted", + "name": "help wanted", + "color": "206699", + "default": true, + "description": "Extra attention is needed or someone is needed to help" + }, + { + "id": 1553318847, + "node_id": "MDU6TGFiZWwxNTUzMzE4ODQ3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/content%20%F0%9F%96%8B%EF%B8%8F", + "name": "content 🖋️", + "color": "70e855", + "default": false, + "description": "This involves copy additions or edits" + }, + { + "id": 2110684893, + "node_id": "MDU6TGFiZWwyMTEwNjg0ODkz", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/Status:%20Stale", + "name": "Status: Stale", + "color": "eacc8f", + "default": false, + "description": "This issue is stale because it has been open 30 days with no activity." + }, + { + "id": 2847180148, + "node_id": "MDU6TGFiZWwyODQ3MTgwMTQ4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/labels/good%20first%20issue", + "name": "good first issue", + "color": "6C5DF6", + "default": true, + "description": "Good item to try if you're new to contributing" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 14, + "created_at": "2022-05-06T12:52:30Z", + "updated_at": "2025-11-06T10:22:38Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Is your feature request related to a problem? Please describe.**\r\n\r\nUser authentication is a big topic for software application developers. I often see this as a common questions for devs new to the space - \"how does authentication work on Ethereum\"? They often (reasonably) bring mental models from web2 & want to understand how Ethereum users \"sign in\".\r\n\r\nThere's some existing resources when Googling \"ethereum authentication\" but the 1st result is this:\r\nhttps://moralis.io/ethereum-authentication-full-tutorial-to-ethereum-login-programming/\r\nWhich I don't think is a great neutral resource, as it just pushes the user to create an account & use Moralis vs. actually explaining how things work & what options a developer has when adding authentication.\r\n\r\n**Describe the solution you'd like**\r\n\r\nCreate a new documentation page (perhaps under the \"Ethereum stack\" section) that covers how authentication works in an Ethereum context. This could be a fairly simple resource, explaining that this is typically handled by connecting an Ethereum wallet to an application via a client library like ethers.js, web3.js or Wallet Connect.\r\n\r\nAs part of this explanation it may be worth getting into how wallets & accounts work (i.e. the public-private key cryptography that allows users to sign messages proving control of an account).\r\n\r\nThis could also be a useful page to list emerging standards & best practices, like Sign in with Ethereum:\r\n- https://eips.ethereum.org/EIPS/eip-4361\r\n- https://auth0.com/blog/sign-in-with-ethereum-siwe-now-available-on-auth0/\r\n\r\n**Describe alternatives you've considered**\r\n\r\nPerhaps we should also/instead add a page covering \"Ethereum wallets\", which we have an existing page on but not for developers who want to learn how wallets work & how they add wallet support to a software application.\r\n\r\n**Want to contribute?**\r\n\r\nWe love contributions from the Ethereum community! Please comment on an issue if you're interested in helping out with a PR.\r\n", + "closed_by": null, + "reactions": { + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/6251/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/ethereum/ethereum-org-website/issues/6251/timeline", + "performed_via_github_app": null, + "state_reason": null + } + ], + "timestamp": 1762456319833 +} \ No newline at end of file diff --git a/src/data/mocks/growThePie.json b/src/data/mocks/growThePie.json new file mode 100644 index 00000000000..fa8f0a21db6 --- /dev/null +++ b/src/data/mocks/growThePie.json @@ -0,0 +1,19751 @@ +{ + "value": [ + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 1.8905160926041666 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 22826 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 14903 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 20001 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-11-03", + "value": 966 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 1481098.2446373363 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-11-01", + "value": 36804 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-11-01", + "value": 78170 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 1287 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 4845 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-11-01", + "value": 2.3215526192361113 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-11-01", + "value": 63542 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-11-01", + "value": 1729 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-11-01", + "value": 5767 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 0.010967096388888889 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-11-03", + "value": 19924 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 4420 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 0.35828332537037033 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-11-03", + "value": 299946 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-11-03", + "value": 1.9958344809722224 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 23087 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 11376 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-11-03", + "value": 40457 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-11-03", + "value": 0.3703355553472222 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 26299069.954933 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 1023081 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 23033 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 3.259596416435185 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 14038 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 75556 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-11-03", + "value": 99111 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-11-03", + "value": 4381 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-11-03", + "value": 15493 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-11-03", + "value": 0.13324469113425924 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 451142 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 0.4472120089351852 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-11-03", + "value": 69211 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-11-01", + "value": 0.44258518024305554 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-11-03", + "value": 40025 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-11-01", + "value": 722968 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-11-03", + "value": 955217 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-11-03", + "value": 694421 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-11-03", + "value": 2.7804244640972224 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-11-03", + "value": 58228 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-11-03", + "value": 5972 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-11-03", + "value": 1419 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 857 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 89641005.68735796 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 86 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 266094 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 364093 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-11-03", + "value": 199011.857027 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 135.7304087822513 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 38.045776820385804 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 10.94156651727375 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 3.760956546345738 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 2172.781462477346 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 0.000011821694601315956 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 169076.51794923356 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 0.0024968810384387655 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 0.00023628041200250927 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 37.90357112455026 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 0.4957634975163053 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": 0.00048118690430273093 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 0.000006917390111278563 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 31.706680675344387 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 26537.28397965286 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 0.04053076990544761 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 0.002556174275964725 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 271.8849899954977 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 0.00000292375068344327 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 0.000011196565310501668 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 36.12368692584468 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 0.0002018753398782197 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 0.0064925945641239645 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 405.0617763651366 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 0.011534484522511868 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 0.0009617871001840705 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 4069.611798022711 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 0.6834729043036585 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": 8.06836906725778e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 7.967514453917053e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 1.245936145050233e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 8.06836906725778e-9 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 179.24411899416995 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 18.845613474839045 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": 3.2280474251502045 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 12.876955711631629 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 649.0033095970122 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 157.27333049640967 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 54.86885659512938 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 5.153997100199503 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 101.45917364465366 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 5.046777619986008 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 50.432512268945715 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 54.86885659512938 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 649.0033113322157 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 4363.221226499781 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 918.1263289155103 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 121.27651538309914 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 2253.8104802467133 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 26524.407023861557 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 164713.2967227338 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 4.4018123277894565 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 0.000008530708077118531 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 7.76533993217001e-8 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 36.27938586760886 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 358.524600388502 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 50.15005455090146 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 36.27938618735815 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 45.27880977686833 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 234.59511937715808 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 18.845613560565468 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 4.99023958608587 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 4580.798343727376 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 19.850594900059633 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 188.53639325188445 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 11.961925785964333 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 2021.7889888577395 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 12.876955791306774 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 202.41688103165544 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 135.11943934769795 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 52.427434997829195 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 358.5246004377332 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": -2.075769191802107 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 2117.3210473594845 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 5259.891155455149 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 19.057957563984793 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 534.7594682183482 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 137177.00448624336 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 26.122733561631303 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 2.694435487552883 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 32.357031023049046 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 1.5531422203488259 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 5.88174146449744 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 7.964724262674981 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 1035346.7030288593 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 0.16379092533526635 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 86.42607270145746 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 0.0035091202661473577 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 82935.58877671811 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 0.004703254211456106 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 10.028486361973384 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 0.0006888809413705873 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 146.96362368094393 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 0.00022555583972839032 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 1157.4095410487143 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 0.00180291226871713 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 312.2570995515335 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 14.414631982128675 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 557.5590243356562 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 33357949.680157945 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 50906504.17214765 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-11-03", + "value": 999607908.7268926 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 216174364.35562456 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 43910655.387936994 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 84092944.30470768 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 52071510.24520016 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 203658793.089648 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 35292813.47418819 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 581.385736787618 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 18.30262333579354 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 1690869131.1648972 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 471549372393.21094 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 121206780.16093011 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 4645281456.925835 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 796680148.0969791 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 543577585.1165887 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 15607589.49039616 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 3517487404.8097973 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 1909993252.4773583 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 7950109005.767552 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 649510.0220823762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-11-03", + "value": 4331703625.659163 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-11-03", + "value": 43555867.50133015 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-11-03", + "value": 175100863.196779 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 103851637.9420824 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-11-02", + "value": 111885501.666743 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-11-03", + "value": 123999433.2871 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 2105260.6711366274 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-11-03", + "value": 6401739.4637147775 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 696521272.2795368 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-11-03", + "value": 15645361.32497712 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-11-03", + "value": 101705.32985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 675589599.7980387 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-11-01", + "value": 32358607.829387 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-11-02", + "value": 28907880.191668 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-11-03", + "value": 30623570.382785 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 3894801.3205351112 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 42305204.00463387 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 28135179.697022 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 166391 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 63446 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 66209728.91476418 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 156693657.72952813 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 64693184.62637957 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 4325198.6015691655 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 2024896494.2768447 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 438826792.5946672 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 303132422.9901465 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 81119726.03839993 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 1580971.282841399 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 0.21311766993383274 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 116111989.59561025 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 149463.57638073363 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 0.004834284768802031 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 148.05403414133994 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 0.022176845401312557 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 14544.852621138098 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 0.00011432383007026447 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 272360.52203519247 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 0.004097070688080619 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 12.91206458894847 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 0.0007406679660396937 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 255.6329138395867 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 0.00012699082970517894 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 3.48045807326999 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 0.0000461039151103093 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 37.61226567073777 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 0.0003452940438171715 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 3110.3754338765166 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 0.0005110433463807631 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 7.8911746606992805 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 0.0015871197633864844 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 430.7382052293215 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 0.00011228308590891604 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 2104.8747976531326 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 0.00017600332678841522 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 31.2212350694115 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 0.000012803490255354487 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 4315.188055338587 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 0.02859819267082789 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 66.43858748752207 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 0.002463359704572519 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 30895.631371630087 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 0.03899408015437196 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 764.0069676188357 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 5085.522574028847 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 1466.1572368373731 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 23408.72546716346 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 1099 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 2396 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 1797600.8951507835 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 0.0010358991608389715 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 366.4530737499698 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 0.000060154232444144126 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 909.5851962725299 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 0.013972137143387634 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 1152.8811068796258 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 51.061324751407085 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 151857.72230525344 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 107210.17775301065 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 280.8661680285961 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 0.00017830931278366326 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 14968.330107437698 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 29877.497872620494 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 305.11019509584565 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 38560.47820555705 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 36017072.74051814 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 4776.696558988391 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 309257.8752976736 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 283.28231712198675 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 3505558.525427274 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 103.01417984784621 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 126654.07942179508 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 1760 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 0.00006869986536061707 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 235.1228594850536 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 0.0008657513163523191 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 73 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 35036178.66341267 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 28 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 772.7131248988131 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 7096 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 0.006785927432836575 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 484.2776917959269 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 0.0010935812309492126 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 2507.522019573895 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 0.011972089943310121 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 2108.481531867069 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 0.001170883635243229 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 7186.32681597006 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 0.003962047680848022 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 0.3469960881945929 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 9.02006937187307e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 0.0000032733626748950756 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 47708099.14217405 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 0.29976428525895343 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 1.752763480216244e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 6.549800373439657e-7 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 2026122064.979022 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 267737908.6189713 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 92764306.99426986 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 1197031938.2806013 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 1.4350110364343523e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 0.7232330006838745 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 2.8290217575420076e-7 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 134970753.40784088 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 2.1012661604931587e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 1.1787590656425038e-8 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 22.306018720052712 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 17184943931.73714 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 41625154.88939748 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-11-03", + "value": 15175002461.711143 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-11-03", + "value": 220928648.5497589 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-11-03", + "value": 70894481.75283554 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 202365734.20567346 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 42674762.5625 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-11-02", + "value": 29075084.875 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-11-03", + "value": 29236012.5 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-11-03", + "value": 1399714468.8937764 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 89535110.37573242 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 21401865.640527874 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-11-03", + "value": 223375791.66615105 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 2057331589.7414238 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-11-03", + "value": 99242896.97707507 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 679.3291920160282 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-11-03", + "value": 128259819.14141428 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 3013718082.947442 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 13645440.375 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-11-03", + "value": 61602362.696876526 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 17161243.532892175 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 21.25250441487382 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 197726777.67168903 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 103709032.28292847 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 1370.1833630492874 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 2517.512810281187 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 747682606.8254681 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 29.638106118513548 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 13.199099924644456 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 43.83068095876383 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 229.46636364384383 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 66.05176229100373 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-11-03", + "value": 41566605.0635376 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 29770931.03732407 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 518119465.27169394 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 107.92853694966684 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 4.426266122666125 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 22.306018720052712 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 1120.4734737329636 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 5530.572200461941 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 9.56143570473674 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 144.34938707172284 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 4.405054237378005 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 55.98598829646368 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 21.25250446817423 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 679.3291921062289 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 639760279.3355364 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 703865679.8415375 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-11-03", + "value": 12329675.84375 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 165.28212521208155 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 112.10909191409142 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 36.860073541977414 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 74.36408355928461 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 678343626.9206842 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 650862225.2291548 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-11-03", + "value": 1019552620.3389462 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 263.98504717725274 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 1806490721.457632 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 255926843.59885404 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 8389804.127485616 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 43.830680973113935 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 66.05176229100373 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 278.76756528320635 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 135254066.9510093 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 84554920.8367243 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 229.466363926746 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 1280885978.6153777 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 376.26267861534365 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 3077753964.514202 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 8421314890.2801695 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 29.638106270214713 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 5530.572216640666 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 1005587936.5460776 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 107.92853697067949 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 4.426266134453717 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 22.653014808247303 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 14.883986663936865 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 5.263824716238426 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 1439919 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 440728 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 2557544 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 1.8918710153125 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 3077688 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 207058 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 1120.4734737329636 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 1368181 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 3215 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 470 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 3306 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 0.002390129050925926 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 1567986 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 37606 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 205658 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 8.098609147037036 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-11-02", + "value": 12501508 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-11-02", + "value": 579328 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-11-02", + "value": 3340070 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 2566.450671492953 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 679.3291921062289 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 21.25250446817423 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 1370.18336632265 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 2517.5128173506664 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 165.28212521208155 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 36.860073541977414 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 14.559338592011164 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": 43.830680973113935 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 66.7749952916876 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 278.76756528320635 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 229.466363926746 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 376.26267861534365 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 29.638106270214713 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 5530.572216640666 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 107.92853697067949 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 4.426266134453717 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 230.25600416630087 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 222.10368667824696 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 213.87035501687936 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 148093.39301441095 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 592.8626165258503 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 598.7248424067541 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 168.45731182924575 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 30858.771298088108 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 356.37412167003686 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 1840.8897504758797 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 6956.860452043315 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 266829.9498185518 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": -76.707301901268 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 47.17659166616466 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 12.143001245950897 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-11-03", + "value": 89.35622273124508 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 53.831815251481814 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 26.907409758464325 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 84.79451513409599 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 11.38302984130633 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 21.87852200067959 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 11.410947431149397 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 9.970417080687914 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 84.79451513409599 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 11.38302984130633 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 21.87852200067959 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-11-03", + "value": 89.35622273124508 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 12.143001245950897 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 18.30262333579354 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 72.34813545219389 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 84.79451513409599 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 11.38302984130633 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 36329.43677080598 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 0.0027385823769126533 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 121.00364938972831 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 0.027308769721242916 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 3516.1401145351024 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 0.00004325790794487702 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 0.7356540122794603 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 0.000039568378379449224 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 44.83176209273314 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 0.00036451859884791167 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 781.2382767685583 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 0.007489609017075678 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 218.2589461645532 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 0.004538376916145395 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 414.66241382746915 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 0.0010417825685354904 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 1408.3992487758221 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 0.0009949420403034535 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 4509.200836566372 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 0.000007667491036639135 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 3.050051683082969e-7 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 60.71077477981716 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 233.32477271725134 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 55.603546025389576 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 212.52095543857806 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 260.24493865950484 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 12.505408893862617 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 7.6625479541375 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 4281.317244437119 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-11-02", + "value": 25.0351207266088 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-11-02", + "value": 0.02898433726851852 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-11-02", + "value": 4999 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-11-02", + "value": 1182 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-11-02", + "value": 7482 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 8.518590460199889 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-11-02", + "value": 1.4049816994212965 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-11-02", + "value": 290686 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-11-02", + "value": 983 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-11-02", + "value": 4658 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 16390 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 148 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 381 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 0.14666186341435186 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-11-02", + "value": 10599 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-11-02", + "value": 30 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-11-02", + "value": 51 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-11-02", + "value": 0.4396324740509259 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 15506 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 0.12560059733796297 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 29928859.163807288 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 192499036.7739392 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 79843184.50273761 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 4235965.433648355 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 190385491.81200358 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 1940783802.080593 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 468407616.2303818 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 3495572197.6762657 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 211193243.25264415 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 1593375538.806283 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 458793317252.3975 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 113389967.91301082 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-10-31", + "value": 948415067.7292581 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 14989424.436493844 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 1812621005.1897137 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 342753144.1422985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 7899203904.533126 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-10-31", + "value": 4290152714.572231 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 104072461.72431639 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-10-31", + "value": 175337659.59731847 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 1542544.7305400001 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 2106338.9139726274 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 2107301.7252026275 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-10-30", + "value": 6405258.943714777 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-10-31", + "value": 6406758.943714777 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-10-30", + "value": 15542432.221992122 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 401970.89965911966 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 0.04715480243141357 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 7.714718523566025 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 0.000029106869547219743 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 0.00025415728937566685 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": 0.9672789328999963 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 5.205743840173688 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 4002.439013785621 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 681.1195603556724 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-10-30", + "value": 101706.42985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-10-31", + "value": 101706.42985 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 0.0000037572450390134816 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 1.3111099734293892e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 0.000001735203622527126 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 12.59576869103205 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 40404083.009496875 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-10-30", + "value": 621271.485115 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-10-31", + "value": 622030.780376 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 2.3599979521728994e-7 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 67634038.15451515 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 58057845.407978155 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 23258928.55929 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 316.85811316379795 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-10-30", + "value": 199011.857027 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-10-31", + "value": 199011.857027 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 7.384110226602863 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 11.504678499536688 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 179.24411959677627 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": 3.228047433218573 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 12.876955791306774 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 179.24411959677627 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 33.36907672829953 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 234.59511937715808 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 46.061063574855076 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 12.698752946077947 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 7.964724262674981 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 61991 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 64114315.00488235 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 133375509.06639507 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 60273712.79936252 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 5833337890.774983 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 131666820.9182711 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 55635553.08541698 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-10-31", + "value": 967182206.7344918 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 895236131.985403 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 78760011.86220054 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 2898405294.5213265 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 238536653.15150267 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 101770210.28208737 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 8476412.211459002 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 126552675.39233917 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-10-31", + "value": 362591151.41117126 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-10-31", + "value": 66567752.2226384 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 16820999319.638239 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 40496495.81800539 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-10-31", + "value": 14712782762.073956 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-10-31", + "value": 215931859.6652298 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 85524364.69213867 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 20805482.524761796 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-10-31", + "value": 215004921.74712753 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 2045769606.049556 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-10-31", + "value": 94239032.1494677 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 17232303.70558837 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 16915924.153289624 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 730275253.1201563 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 1922749 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 58329 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 415820 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 9.847230494120371 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-11-02", + "value": 1840 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-11-02", + "value": 431 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-11-02", + "value": 1168 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-11-02", + "value": 0.02551321722222222 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 1613405 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 495786 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 2387896 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 1.8756643959259258 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 3477439 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 241560 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 1329189 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 6.300540421875 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 4180 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 630 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-10-30", + "value": 12039651 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 3364 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 0.003727898773148148 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-10-30", + "value": 790487 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-10-30", + "value": 3354654 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 1724077 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 52313 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-10-30", + "value": 25.02286729048611 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-10-30", + "value": 310650 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-10-30", + "value": 1121 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-10-30", + "value": 5360 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-10-30", + "value": 12638 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 20440 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-10-30", + "value": 25 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-10-30", + "value": 40 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 112 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 367 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-10-30", + "value": 0.5955518286342593 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 0.19428398832175928 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 19408 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 29 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 0.21032800085648148 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 1970224 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 57602 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 449335 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 30908 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 378 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 1333 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 1.507142862638889 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-11-02", + "value": 85060 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 134723 + }, + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 2.0379230045949073 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-11-02", + "value": 4.388838916064815 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 3558652 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-11-02", + "value": 721351 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-11-02", + "value": 60473 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 71889 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 91118 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 10439 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-11-02", + "value": 22108 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-11-02", + "value": 976 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-11-02", + "value": 243 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 187699 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-11-02", + "value": 1.106262531134259 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-11-02", + "value": 121118 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-11-02", + "value": 16798 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 57249 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-11-02", + "value": 109486 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-11-02", + "value": 0.2866827674768519 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 4275 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-11-02", + "value": 9760 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-11-02", + "value": 1.9248243860416667 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 42899 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 23353 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 11127 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 0.05282426039351852 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-11-02", + "value": 53625 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 35794 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 0.3456054076273148 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 4118 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-11-02", + "value": 284956 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-11-02", + "value": 1940 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-11-02", + "value": 0.27049459928240743 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 745614 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 755652 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 7222 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-11-02", + "value": 7450 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-11-02", + "value": 43284 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 6483 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 22575 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 3.021154396886574 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 70727 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 14068 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 48860 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 46901 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 3.350434263472222 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 68833 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 0.2372744108101852 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 0.045341405338155186 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 25526 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 34000 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 3045 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 3889 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 19984 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 0.06037821451891064 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-11-02", + "value": 2054 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-11-01", + "value": 14484 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-11-02", + "value": 13773 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 123709 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-11-01", + "value": 0.028808992256944443 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-11-02", + "value": 0.03705953947916667 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 396210 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 412972 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 383304 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 295257 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-11-01", + "value": 15622 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-11-02", + "value": 28050 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-11-01", + "value": 2094 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 146217 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-11-01", + "value": 181007 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-11-02", + "value": 173301 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-11-02", + "value": 36696 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 0.4173699578472222 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-11-02", + "value": 78357 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-11-01", + "value": 1290600 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-11-02", + "value": 1486832 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 0.3033921696412037 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-11-02", + "value": 0.40617710346064817 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-11-02", + "value": 56490 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-11-02", + "value": 1467 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-11-02", + "value": 715945 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-11-01", + "value": 951009 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-11-02", + "value": 954494 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-11-02", + "value": 5920 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-11-02", + "value": 2.725195514097222 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 1603 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 40 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 24 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 99 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 101 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 339924 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 447953.97486466955 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 0.05512274864283822 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 0.000019107983771447394 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 141757.80282997072 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": 0.0004989115966740353 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 0.000006981714385575164 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 9527.503495903808 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 0.02940346499332917 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 23.690756995011277 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 0.0024394934946033284 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 25757.56419255822 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 0.03916282547473168 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 681.5090596248697 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 0.0005002459699195901 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 102.40876620350453 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 0.0002545448784459551 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 870.5055548411742 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 0.006965061956632138 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 195.6938944222653 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 0.002277180997431256 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 323.44850905170625 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 5382.576384155843 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 1961.5337247216037 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 0.003924785975275881 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 4.185466453639971e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": 9.135694037847073e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 6.2427242591955e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 8.120616922530733e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 1.7966864941099237e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 3.1974929132464746e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 0.6934703810858294 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 1.4249573000311595 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 0.000003696910853982114 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 1.7941480488723347e-7 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": 3.2920837992908374 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 188.53639262761203 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 11.961925777843716 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 3.4024849091539364 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 6.9924043798178115 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 135.1194390401296 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 5.603332600121095 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 101.45917348429482 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 65.02657299242259 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 52.120626384560644 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 5.046777619986008 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 19.850594900059633 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 188.53639325188445 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 11.961925785964333 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 122.6852287006946 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 12.271140280947645 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 11.846454107408915 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 6.9924043798178115 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 15.578726978634878 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 202.41688103165544 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 135.11943934769795 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 57.461777293452066 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 655.2730783878255 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 52.120626384560644 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 6.974660335488796 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 5.603332600121095 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 129.02242772483268 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 45.27880977686833 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 146.74959140652157 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 4580.798343727376 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 11.846454107408915 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 57.461777293452066 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 9.003137153953887 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 5.803079959691204 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 65.02657337459912 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 655.2730783878255 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": -2.6712670497633906 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 218.931033971001 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 25741.985465579586 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 49.98133120567533 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 1954.559064386115 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 281.73212981110873 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 46.44725732451427 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": -622.4285088510348 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 19.95256176932499 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 3582.100164727119 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": -52.97937808132537 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 24134.890906019387 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 2219.9199296336046 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 1404.700321752224 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-11-02", + "value": 122.87496399603192 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 5.88174146449744 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 5.773710533338021 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 10.491357204828775 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 32.357031023049046 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 1.5531422203488259 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 1.6512171627559997 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 5.773710533338021 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 32.357031023049046 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 10.491357204828775 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 12.49325968320827 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 21.478087764710967 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 1.5531422203488259 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 5.88174146449744 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 4.193197618863197 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-11-02", + "value": 122.87496399603192 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-10-30", + "value": 0.02558938019675926 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 32315 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 469 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-10-30", + "value": 761646 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 1314 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 1.1216005671527778 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-10-30", + "value": 63616 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-10-30", + "value": 86289 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 9.56143570473674 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 44514554.865630396 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 5861855822.87975 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 8905557084.238571 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 7280937151.443215 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 1089169016.2712908 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 48369327.885785416 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 4664782461.575131 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 2027068722.1815386 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 186186412.30952522 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-11-03", + "value": 57801844.862348884 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 8947793419.831657 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 77277402.13484362 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 40879017.599424735 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 43.641355135336276 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 26715141.471305564 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 9059573428.408041 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 757280273.2874264 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 47650647.2296451 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 30468877.723561134 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 42070278.31835659 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 4133249877.2826505 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 658357437.177291 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 465021177.66477114 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 110702234.33341382 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 52920599.03743604 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 3497989.100247061 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 30464111.405087244 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 19837641.635571018 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 39707517.3797141 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 7892339565.701685 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 7927045780.74369 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 649542.1975863762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 649510.0220823762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-11-05", + "value": 4425986688.35166 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-11-05", + "value": 42041850.85579712 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-11-05", + "value": 175113507.22751832 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 103868660.5505974 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 103616447.41649598 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-10-31", + "value": 639288.589989 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-11-05", + "value": 629726.591602 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-10-31", + "value": 95520551.676252 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-11-05", + "value": 118037369.571182 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-10-31", + "value": 163051128.16612124 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-11-03", + "value": 157473647.5285282 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-11-05", + "value": 125368172.4659052 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 1547544.7338400001 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 1547544.7338400001 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 2073158.0411366276 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-11-04", + "value": 6401739.4637147775 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-11-05", + "value": 6396563.186914777 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 695513656.562753 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-11-05", + "value": 15745556.71497712 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-11-01", + "value": 101706.42985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-11-05", + "value": 101705.32985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-10-30", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-10-31", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-11-03", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-11-05", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 640560762.846179 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 648773556.9585164 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-11-05", + "value": 36151322.273204 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 3909987.9088711115 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 3903351.9866511114 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 3877788.160655111 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 32840736.90092587 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 28135179.697022 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 28135179.697022 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 150781790.4876349 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 147505826.73579592 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 147362945.4249289 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-11-05", + "value": 498086.662688 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 1478154.8242173365 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 28484658.191312 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 21953131.294547 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 31300885.572761 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 88574387.35405897 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 88802739.35870595 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 88709717.29708697 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 90752039.47083496 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 173692576163.38333 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 173981041108.77664 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 173478052560.44565 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 244155.17305869638 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 0.003988958024596844 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 68640 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 170085 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 1408666118.3423464 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 54501251.00933957 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 42899115.08082776 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 36666333.25284496 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 9.26976491917373e-8 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 162340275.55252746 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 1712718164.3838143 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 150.95111512252694 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 1348841885.2604263 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 93877443.84506267 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 6781238.965676856 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 47259337.22765763 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 824730200.7753563 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 217061357.47569275 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 1713676697.3636174 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 81296556.65572967 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 160041385.24061444 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 1042785753.3425064 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 79004633.41615525 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 5083316520.760549 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 68367009.49831614 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 70727271.39803754 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 212224617.2890963 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 12.890278439698196 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 51.027541459717256 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 5999 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 58637.47855535511 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 1232 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 203.4578815346834 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 32234.89564818512 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 79297.97284025185 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 1487800.964295236 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 3 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 3736.4492495273985 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 20018.024327231822 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 1520 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 8863.923741951998 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 3757.9386673164763 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 3366.92487465217 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 185262.85576503404 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 102.95729426718512 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 35236.12162829538 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 1320887.5333548833 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 26427823.4686741 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 225.73386027211126 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 92992.67793185177 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 112.8387723652092 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 2369 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 21071.505338942952 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 359 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 12179 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 66 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 1206 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 95603.78072208972 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 10223.134678121522 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 16855 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 6733 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 176 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 271117496.268683 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 15839460765.461067 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-10-30", + "value": 225116443.10923004 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-11-05", + "value": 354530874.2377725 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-11-05", + "value": 66418140.94807938 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 199685552.54412377 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 193795009.3518213 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 40808327.875 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 87194639.72998047 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 76808470.49804688 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 21108584.83484021 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 18555859.76870525 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-11-05", + "value": 149129766.64818573 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 1884784582.3699074 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-11-05", + "value": 84609255.07666007 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-11-03", + "value": 1922112.564819336 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-11-05", + "value": 117417174.0174172 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 2635294950.2122264 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 13569381.9765625 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 11950598.15625 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 12095094.375 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 15215989.172949282 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 1341888.3095321655 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 224067962.20289612 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 195363968.06370735 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 160819416.7672186 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 151731017.24634743 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 105357568.21131897 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 104885143.37141418 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 98780091.49617004 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 94479898.42364502 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-11-02", + "value": 41308587.1338501 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-11-05", + "value": 36804619.3147583 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 28215778.44745493 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 29165679.04885471 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 25069732.650704026 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 532216898.7428138 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 510897910.81748366 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 450028862.79825246 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 697698342.5799999 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 654906804.0400009 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 706360052.1299992 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 127267589.96607639 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 397489340792.3503 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-11-05", + "value": 836374762.5597936 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 180954200.36950874 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 73703421.69394162 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 473163400.2724147 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 3053066089.761111 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 111833399.00028864 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-11-05", + "value": 851206692.9965968 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 7055704884.183623 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 606316008.6633005 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 1490205722.2851057 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 2560173140.303469 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 7904347286.123082 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 123331495.35181762 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 1613463 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 491454 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 2529915 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 1.8826646331712962 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 3564141 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 243085 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 1209519 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 6.767219845983797 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 4340 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 392 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 3098 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 0.003829766574074074 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 2030164 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 38500 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 7.0388383025 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 8.301224004930555 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-11-04", + "value": 13902323 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-11-04", + "value": 547771 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-11-04", + "value": 2902426 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-11-04", + "value": 25.069681621516207 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-10-30", + "value": 5741 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-11-04", + "value": 6392 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-10-30", + "value": 1287 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-11-04", + "value": 1014 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-10-30", + "value": 8089 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-11-04", + "value": 6959 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-10-30", + "value": 0.030105375034722222 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-11-04", + "value": 0.02982155554398148 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-11-04", + "value": 141166 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-11-04", + "value": 964 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-11-04", + "value": 4421 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-11-04", + "value": 0.8676849058680556 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 10040 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 130 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 407 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 0.09856844298611112 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-11-04", + "value": 0.840496586087963 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-11-04", + "value": 18653 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-11-04", + "value": 33 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-11-04", + "value": 52 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 23012 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 26 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 24 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 52 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 59 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 62 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 0.26168752667824074 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 1778646 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 66780 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 408306 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 10.689939070868057 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 10.418896212523148 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-10-30", + "value": 1846 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-11-04", + "value": 2035 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-10-30", + "value": 469 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-11-04", + "value": 479 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-10-30", + "value": 1661 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-11-04", + "value": 0.02630842638888889 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 34236 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 502 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 1406 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 0.6743009950462963 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-11-04", + "value": 832593 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-11-04", + "value": 50304 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-11-04", + "value": 86401 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-10-30", + "value": 4.792690459224537 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-11-04", + "value": 4.595384226400463 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 2828369 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 72949 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 133527 + }, + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 2.0383987934375 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-11-03", + "value": 24590 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-11-04", + "value": 27368 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-11-03", + "value": 276 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-11-04", + "value": 301 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-11-04", + "value": 979 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-11-03", + "value": 1.0958832722916665 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-11-04", + "value": 1.0923147310185186 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 56610 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 76833 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 9799 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 7968 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 147249 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-11-03", + "value": 187436 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 190215 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 2889 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 7376 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 8154 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 547 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 967 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 5117 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 0.02081982701388889 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-11-03", + "value": 156371 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-11-04", + "value": 181677 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-11-04", + "value": 22889 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-11-03", + "value": 107950 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-11-04", + "value": 107805 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-11-03", + "value": 0.4324160086574074 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-11-04", + "value": 0.4532710731712963 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 86626 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 93613 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 4320 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 34086 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 0.3718492554861111 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-11-04", + "value": 313533 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-11-03", + "value": 2588 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-11-04", + "value": 2574 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-11-03", + "value": 9654 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-11-04", + "value": 9434 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-11-04", + "value": 2.0062807539583334 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 42950 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 45102 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 11010 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 21032 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-11-03", + "value": 0.06834702047453704 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 0.06717272873842592 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-11-03", + "value": 55080 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-11-04", + "value": 46423 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-11-03", + "value": 5387 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-11-04", + "value": 6172 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-11-04", + "value": 39798 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 3.4966424922337964 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-11-04", + "value": 0.36538354495370373 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 1279381 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 7533 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 7069 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 22094 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 81209 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 12923 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 45760 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 43078 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 0.22714366517361112 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 0.2187174000810185 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 0.20847317792824074 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 69875 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 5105 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 4669 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 19165 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 52593 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 19617 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 0.14593390792205532 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 0.09504817840152698 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-11-04", + "value": 40325 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-11-04", + "value": 2973 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 75077 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 3386409 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 135168 + }, + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 2.0567927482175925 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-10-30", + "value": 46739 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-10-30", + "value": 287 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-10-30", + "value": 1120 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-10-30", + "value": 2.8009001314699074 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 95803 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 75334 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 22424.428524253806 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 2614.4221072262844 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 496.2296669737149 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 0.028138902260411134 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 0.0018845220662187941 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 551.8840565373015 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 0.013747742942087922 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 56.95065099491856 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 0.00008107020277427873 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 0.011852122773425473 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 1348.524135451492 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 0.004204409395348663 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 0.2824577180442586 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 6.026063147108153e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 0.000003683714752269878 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 0.0000012783322240936546 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 2.9651256322172324e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 8.572642133961386e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 7.973991328321493e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 2.975211093551306e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 0.0000079180956933801 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 12.559828193880353 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 1.3352471513188768 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 233.32477151616888 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 50.15005455090146 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 22.060308655588813 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 4.99023958608587 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 12.271140251195533 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 129.02242743285856 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 316.85811320565267 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 47.55177158713502 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 2042.8741733925985 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 33.36907672829953 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 4363.221218581685 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 7.384110226602863 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 129.02242772483268 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 2042.8741733925985 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 73.34446417881139 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 18.845613560565468 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 5.673712490389528 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 12.271140280947645 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 101.45917364465366 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 17.64254631101806 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 8.753829175068446 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 364.26144715001976 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": -15.845090911790635 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 6.518138725972844 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 1993.5373428805694 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": -696.3918195862682 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 23.85254664489704 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": -2.260768500318577 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": -49.6631127549557 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 21775.42521292159 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 2485.399679501452 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 198.54052581668628 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": -3.384323204958928 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 3968.1526243780577 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 1343.477357831506 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 394.610725804892 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": -3.789959984039032 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 16.682640703129717 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 12.698752946077947 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 21.478087764710967 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 1.9187485652010208 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 4.193197618863197 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 4.193197618863197 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 7.964724262674981 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 4.4018123277894565 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 1.6512171627559997 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-11-04", + "value": 14830 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-11-04", + "value": 0.06262778861111111 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 368558 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 134216 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 400675 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 0.3830751696412037 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-11-03", + "value": 190418 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-11-04", + "value": 170529 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-11-04", + "value": 33821 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-11-04", + "value": 64680 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-11-04", + "value": 0.4190533692013889 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-11-03", + "value": 1467579 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-11-04", + "value": 1595414 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-11-04", + "value": 689243 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-11-04", + "value": 955509 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-11-04", + "value": 3.064031138298611 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-11-04", + "value": 57541 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-11-04", + "value": 1286 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-11-04", + "value": 5877 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 360 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 661 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 9 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 13 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 88 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-10-30", + "value": 180393 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 3799 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 442141 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-10-30", + "value": 0.44569359511574075 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 106374 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 12968 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-10-30", + "value": 296127 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-10-30", + "value": 2461 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-10-30", + "value": 27490 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-10-30", + "value": 110312 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 37349 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-10-30", + "value": 1.872858747638889 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 44421 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 12304 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-10-30", + "value": 9977 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 982134 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-10-30", + "value": 67429 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 23333 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 0.056897673310185186 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-10-30", + "value": 15039 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-10-30", + "value": 42366 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-10-30", + "value": 0.3117646197916667 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 3.0141739172337965 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 16028 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 25339 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 85084 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 51040 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 8717 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 0.2632539252430556 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 48518 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 3998 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-10-30", + "value": 21172 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-10-30", + "value": 2522 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-10-30", + "value": 15196 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-10-30", + "value": 0.043299158900462965 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 21440 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 0.10739253548246216 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-10-30", + "value": 215590 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-10-30", + "value": 39645 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 320980 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 120485 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-10-30", + "value": 76118 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-10-30", + "value": 0.5343528617708334 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-10-30", + "value": 1379215 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-10-30", + "value": 683901 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-10-30", + "value": 953245 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-10-30", + "value": 2.6171415878125 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-10-30", + "value": 61886 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-10-30", + "value": 1643 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-10-30", + "value": 5438 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 312 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 13 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 88 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 325335 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 45598516.079682946 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 613740872.5477568 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 7983770672.337097 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 96636827.09958078 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 90003290.69116835 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 1652898369.7948744 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 1436540551.6199281 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 31751135.377678804 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 44547831.42199005 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 188316656.71587303 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 38635652.24801668 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 74952315.30188853 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 44024884.11309115 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 3986471858.7233734 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 668702741.5222048 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 3115388007.3652587 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 378025515.8756559 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 276417647.79897463 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 7914022851.923751 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 649542.1975863762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 649510.0220823762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-11-04", + "value": 4340153003.895175 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-10-31", + "value": 43716418.92778569 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-11-04", + "value": 42942303.376400344 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-11-04", + "value": 174722838.71816975 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 103614376.94620498 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-11-03", + "value": 629596.0461479999 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-11-04", + "value": 629596.0461479999 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-11-04", + "value": 125595938.032646 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-11-04", + "value": 139775262.4928612 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 1517482.636039 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 2105260.6711366274 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 697182432.9955329 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 697039186.9392838 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 696411144.026655 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-10-31", + "value": 15581423.822395122 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-11-04", + "value": 101705.32985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-11-04", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 653673750.7135804 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 3894792.874414111 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 149312815.1454549 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 149919523.9258179 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-11-03", + "value": 617382.361223 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-11-04", + "value": 567473.749194 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 1480216.7370113365 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 59393014.447679155 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 64835705.67750316 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 31144904.427449 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 89518318.90635496 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-11-02", + "value": 199011.857027 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-11-04", + "value": 199011.857027 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 68329 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-11-03", + "value": 169039 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 56438335.37768802 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-11-04", + "value": 867232076.5581788 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 40868310.243524775 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 74219632.24252316 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 1094541162.9048474 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 124289282.40273373 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 5188719906.987159 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 230301473.19745502 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 82645021.76518455 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 548165231.309301 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 218745627.4758227 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 71003752.08613187 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 7639151464.159877 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 165088447.1346339 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 362.9897315496445 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 23913.99240645432 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 186075.53701624737 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 18191 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 8 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 298.20059771405664 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 2639127.8849495323 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 132806.20294480686 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 1993 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 3575368.899620245 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 34632.59207156877 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 5745.177803023925 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 104.95666062100932 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 237391.353598247 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 13543.087418918376 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 2590 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 52.027165059071145 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 42148900.62840679 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 45703.521051280695 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 217223.4970926441 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 130901.38727910715 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 1906.8380672537485 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 11382.47835711837 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 1798.9896122462958 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 1845 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 197 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 4 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 4108 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 434149656995.1001 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 111655658.79711473 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 3700404.8764532986 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 171895906.36127242 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 1770476834.3197074 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 31304983.213994697 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 20028407.88975663 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 84151004.23923354 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 114975147.2809975 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 2608181355.689103 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-11-04", + "value": 883314144.8935658 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 16341815732.916832 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-11-04", + "value": 14289773675.281244 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-11-04", + "value": 201223568.88609314 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-11-02", + "value": 374917748.1574977 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-11-03", + "value": 386122223.7259372 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-11-04", + "value": 363211670.2607408 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 196005019.5554086 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 37902772.625 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-10-31", + "value": 28197173.625 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-11-04", + "value": 26561564.1875 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-10-31", + "value": 309155241.49 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-11-03", + "value": 353950329.48 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-11-04", + "value": 342009361.43 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-10-31", + "value": 1357689349.5886416 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-11-04", + "value": 1247556795.1691446 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 81580030.77783203 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 19804718.640765578 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-11-04", + "value": 155655577.3144455 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-11-04", + "value": 89416745.12305182 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-10-31", + "value": 1905508.7042236328 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-11-04", + "value": 1830929.9302978516 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-10-31", + "value": 126804417.23403275 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-11-04", + "value": 123995947.56464984 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 2881498736.3825207 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 16178303.74375114 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 1462362.9790649414 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 698814850.4036341 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 693849071.0678902 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-10-30", + "value": 44918777.00053978 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-10-31", + "value": 42343501.9934082 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-11-04", + "value": 39068341.36981201 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 26246515.42134571 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 604184937.4799995 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 625709131.6434588 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-11-04", + "value": 11369764.90625 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 135009604.35327238 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 482075936.41862 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 1058508729.3009251 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 98354998.69431809 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 1514906485.870822 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 1770943889.653548 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 618160353.2868502 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 7120142.538012973 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 858485425.7933208 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 1582508 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 487402 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 2564504 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-11-03", + "value": 1.8836763945601853 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 3129266 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 228990 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 1317470 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 6.552908772650462 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 3988 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 511 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 3209 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-11-03", + "value": 0.003206908125 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 1778028 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 38720 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 205102 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-11-03", + "value": 519504 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-11-03", + "value": 3056288 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 9.222836415023147 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-11-03", + "value": 13133316 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 11.520936394737566 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 0.0002507966019519824 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 2232.7786723913246 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 27447.197171581738 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 0.405167597754671 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 56.12366336275142 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 0.0028336140291135873 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 0.00005999610779230837 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 690.0795780282272 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 1532.8970033373907 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 0.009775131984387047 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 272.9083573052892 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 0.004882796184323319 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 1.3383509370710431 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 4.096014342261038 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 63.19270518561803 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 16.608129023018375 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 4.1588008147144695 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 4981.657951027214 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 216.7973216473166 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 336.4391380278755 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 2418.085071376732 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 65.13023772711668 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 28.41674941309576 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 122.76072317788773 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 1042.1368625469952 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 7.22595522049726 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 71.53389168452439 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 260.24493865950484 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 31.687150516906094 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 31.84408524202763 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 226.73008715167967 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 25.423160149118974 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 14.883986663936865 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 230.46233563662042 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 367.24307730285904 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 79.90550058128719 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 295.519822211936 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 581.385736787618 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 2566.450671492953 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 77.63187316738345 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 69.22625206937772 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 1105.3295677326132 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 28.41674941309576 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 71.53389168452439 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 7.22595522049726 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 491.2122898890782 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 34.708628026250395 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 4.405054237378005 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 5255.570960562939 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 230.46233563662042 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 77.63187316738345 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 69.22625206937772 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 41.71877152278451 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 122.76587518311239 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 1105.3295677326132 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 32.553339146268996 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 75.4295723500335 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 314643.39155463193 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 5982.290925475879 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": -333.6719991016288 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 3934.658085356813 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": -65.13667793801555 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 235.41176351566116 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 14068.354091976747 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 3.936395514085843 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": -204.1212752967534 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 8.518590460199889 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-10-30", + "value": 121.17345954055405 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 53.831815251481814 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 24790.163984407212 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 0.0023388521324002893 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 47.32227552342241 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 0.01269888019145503 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 2305.857440611369 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 0.0019859905634526387 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 4.946108446836755 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 0.0002535088445868463 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 0.00003780914781103863 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 1607.1172027838793 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 0.0001702789472640309 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 4.482399212126698 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 283.95760734560014 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 0.000009998981759512372 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 640.256730248842 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 0.013835606715702258 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 0.0001587026045655832 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 8.932678614783804e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 1.8880434344883945e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 2.8422159228857558e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 0.0000010785194350236132 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 3.075683659408517e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 1.2688463941454269e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 0.3068086132685486 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 15.059652223241809 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 1.369718948465582 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 4.9231240092842576e-8 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 19.850594810732847 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 47.55177158713502 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 122.68522852102595 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 4580.798335196668 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 11.846454078986756 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 15.57872690098148 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 2021.7889851608286 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 7.578179853922727 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 54.86885658201829 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 57.4617772807636 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 655.273076650521 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 6.974660335488796 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": 3.292083808426532 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 146.74959140652157 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 2021.7889888577395 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 7.578179853922727 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 65.02657337459912 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 4363.221226499781 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 358.5246004377332 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 36.27938618735815 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 122.6852287006946 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 7.6858747609036415 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-11-01", + "value": 3.228047433218573 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 15.578726978634878 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 64.26930575893994 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": -7.015817339127577 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 132.15543150042825 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": -21.588052781857048 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 49.14169281206715 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 315.31726409694835 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 0.00011970255142296347 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 2011.3972973502525 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 12.495195229367903 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 0.000009829864623196699 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 0.03213159181264294 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 0.013926628738939068 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 103.33567422014606 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 0.0007540518640413022 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 3079.2899958403095 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 0.0010992941508582716 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 0.004794798299633718 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 0.4693546818081906 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 13.665013989303802 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 148.36560011622112 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 30.80393927498353 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 13.843817253199934 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 29.745667307347336 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 23.826712451961786 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 13.302022109688748 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 0.0051520052246579115 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 0.36117924975745835 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 3.032006031746757 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 76.2935222303124 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 489.228309524533 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 28.455166180865735 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 367.24307730285904 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 295.519822211936 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 28.455166180865735 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": -4.85550030196348 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 18.30262333579354 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 454.1013023813854 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 0.06560431631222703 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 19726.572672306196 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 0.0002687494607858634 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 607282.0626826948 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 0.0054601663540687915 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 27.504526446635996 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 0.001456704807184206 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 854.3913376366014 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 363993.45590002433 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 0.014443313366088562 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 2885569.7332830597 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 0.0008118958320634815 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 5.004653932318273 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-11-04", + "value": 0.372386999625251 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 0.0003172551137676318 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 398.6160087282159 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 0.006050911931047954 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 68.67140643939368 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 0.0005808777516323753 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 9710.350620643992 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 0.0007193899496848585 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 29.839311369923205 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 0.003099916735054825 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 901.8959724322447 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 0.00020414709381738982 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 2453.16195485707 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 0.00017192012525468894 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 14.206435168812927 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 0.000027191928653893324 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 5602.5219312928875 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-11-04", + "value": 0.026512682166810773 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 111.94719260486228 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 0.0046126605873069585 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 31043.29445963884 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 0.028560986056235794 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 1003.8709343192995 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 0.003018190657107645 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 823.1295789439877 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 0.012866616740814745 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 109.49307004766143 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 0.00007587042450447513 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 24403.33939995693 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 0.00015279713419024307 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 590.7045997308029 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 0.0019839909163867618 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 2217.723573967985 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 0.008518506318470715 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 399.6251492492168 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 0.00471483288318881 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 363.91999268326066 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 0.0009572070124054427 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 1975.5979308314465 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 0.010277604738341216 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 2238.182890046026 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 0.0010367221848954912 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 6.786683886079115e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 0.0000013993405926442674 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 0.22895218003535406 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 9.911012629183676e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 9.439059646841597e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 0.000012450119674184075 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 8.967106664499514e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 7.364681640557739e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 7.4191008824175e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 9.993826860882094e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 0.38196520365893893 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 5.012140672472888e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 0.0000014701335399955785 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 0.0000032847927571008746 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 0.000005772456927025977 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 1.2642580322863324 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 9.472096355605545e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 2.4069602099446054e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 1.0382965611525753e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 7.456857121004857e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 9.39186434860738e-8 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 234.25161358322472 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 334.8572901129893 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 15.243263382113838 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 0.5991309271302538 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 7.220880629833818e-8 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 174.44537892457015 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 8.675388612741402 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 2637.426291960859 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 6145.315566486967 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 45.445370837282226 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 99.32487166136124 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 112.10909191409142 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 2707.823834077418 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 46.91902040149743 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 585.0885025456769 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 2664.2310175912567 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 98.91200000892984 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 12.57663867028723 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 677.1330922985036 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 43.09207552107233 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 23.055588047825065 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 528.5730289310725 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 135.49799119448397 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 146.43750870134704 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 1403.398677760636 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 214.55763959736657 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 334.8572915123298 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 174.44537892457015 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 45.44537092695329 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 99.32487240327134 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 234.2516142618931 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 12.57663867028723 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 179.48607369259912 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 2707.8238373622107 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 585.0885030468909 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 2664.231023363713 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 98.9120001127595 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 43.0920755956409 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 23.055588047825065 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 528.5730298782822 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 135.49799119448397 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 234.2516142618931 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 334.8572915123298 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": 174.6743311046055 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 8.675388622652417 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 2637.426291960859 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 46.91902041093648 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 6145.315578937087 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 45.44537092695329 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 99.32487240327134 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 12.958603873946167 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 585.0885030468909 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 179.48607369259912 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 98.9120001127595 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 2707.8238373622107 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 677.1330937686372 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 2664.231023363713 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 43.0920755956409 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 24.319846080111397 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 528.5730298782822 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 150.7412545765978 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 147.03663962847727 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 1403.3986778545545 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 214.55763966957537 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 332.9231816312536 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-11-04", + "value": 2118.30466334474 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 21.16392274727079 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": -2525.479099355997 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-11-04", + "value": -65.18126105694405 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 6761.209816220111 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": -165.2796385237862 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-11-04", + "value": 802.5711000289733 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 31.440603285864203 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-11-04", + "value": 361285.63206266216 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-11-04", + "value": 55.712802565447504 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 19049.43957853756 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-11-04", + "value": 7046.119597280278 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-11-04", + "value": 30944.38245952608 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-11-04", + "value": 808.945966709648 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 576.0238042610964 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-11-04", + "value": 547.6125241351621 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-11-04", + "value": 374.2961626481045 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": -580.2690989105669 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 789.3132946497242 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 43.45806919964652 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 23874.766370078647 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-11-04", + "value": 2102.6848988515417 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 1828.5612912029694 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 126.42210967095738 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-11-04", + "value": 118.92062493973751 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 37.23228918413045 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 195.81621050208898 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 38.62738352386524 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 26.71602046944806 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 58.03572687597911 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 14.768287412448489 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 126.42210967095738 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 195.81621050208898 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 37.23228918413045 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 26.71602046944806 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 14.768287412448489 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 126.42210967095738 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-11-04", + "value": 38.62738352386524 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-11-04", + "value": 26.71602046944806 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 101.49379607562562 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-11-04", + "value": 14.768287412448489 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-11-04", + "value": 37.23228918413045 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 167.854277466343 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 0.004196915390594749 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 1505.1068130597505 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 0.008330103946050143 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 13.946895648795767 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 0.0000070694793702055175 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 1.3602386673667084 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 0.000001722013243721223 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 0.0000013760730831522274 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 1.5170116670877434e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-11-03", + "value": 0.00001617872442791415 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": 1120.4734737329636 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 55.98598829646368 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 144.34938633525465 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 263.98504545523946 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-11-03", + "value": 36.860073366701066 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 74.36408290430458 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 376.2626772392706 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-03", + "value": 1370.18336632265 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 122.76587518311239 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 2517.5128173506664 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 31.687150516906094 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 157.27333073240945 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 11.504678507605057 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 243.33821617469803 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 69.93288394525945 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-11-03", + "value": 144.34938707172284 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-11-03", + "value": 112.40885619935038 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 263.98504717725274 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 260.24493865950484 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 491.2122898890782 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 243.33821617469803 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 23.6590310937955 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 14.959250862490467 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-03", + "value": -1054.0348862454414 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 1156.1682556259059 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 0.5701427709961581 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-11-03", + "value": 2052.495543570605 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 153.29493887433185 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-11-03", + "value": -30.918616384165468 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-11-03", + "value": 2440.7470242822073 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-11-03", + "value": 14168.589942522754 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-11-03", + "value": 225.994807569372 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 112.25499565469353 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 161.35636069654052 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-11-03", + "value": 3.4649085262455643 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 1943789875.065285 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 767374491.9916008 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 141059644.7787825 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 1716227511.3088846 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 88134557.30986646 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 228895371.34134296 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 607826104.323535 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 46.31444393392284 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 21.87852200067959 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 11.77788433191151 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 1625905841.9743328 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 48768943.119487934 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 41819990.075698696 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 4743274043.2272415 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 448675724.40232944 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 14872086.15053707 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 44981644.54763784 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 11.410947431149397 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 64656724.81876563 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 138275905.7626917 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 464417354244.41925 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 114598338.69244552 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-11-01", + "value": 972200639.6121619 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 4145941.9757194477 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 1942523579.06615 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 27355906.492404524 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 1814659161.972622 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 7912261513.771576 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 649542.1975863762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-11-01", + "value": 4324582220.868423 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-11-01", + "value": 43553268.773123845 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-11-01", + "value": 175085920.33061153 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-11-01", + "value": 634440.664989 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-11-01", + "value": 155335583.8040952 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-11-01", + "value": 6407220.747826777 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 696325088.7900149 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-11-01", + "value": 15583328.334075121 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 39857687.04136787 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 41175231.08021087 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 28214654.708588 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-11-01", + "value": 199011.857027 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-11-03", + "value": 25.17154378602921 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 8.518590460199889 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 46246 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 31445571.12089751 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 5742492547.054223 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 132276050.43043226 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 240665618.72963113 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 127598916.62737843 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 1940168468.3428223 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-11-01", + "value": 111.02583095116788 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 1712859771.2976146 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 7992354385.519369 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 91237257.33177754 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 8302956.039211495 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 90147805.94470082 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 4.4018123277894565 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 900398020.022876 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 1.6512171627559997 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 45196378.74803304 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 60390600.17503972 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 185832871.79652005 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 80496563.70573646 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 143710849.77504078 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 699938093.8452907 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 55060498.18381625 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 77717261.43780135 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 2950862605.6758294 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-11-01", + "value": 989820508.9479326 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 606850598.2148961 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 16953697279.036312 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-11-01", + "value": 14952215328.4222 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 12.143001245950897 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 199843854.92560792 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 41071293.75 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 21.478087764710967 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 2055156810.4613457 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-11-01", + "value": 1874371.1180419922 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-11-01", + "value": 127985537.4347192 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 2929148481.8900523 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 14202811.25 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-11-01", + "value": 60192772.56000519 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 103425544.90394592 + }, + { + "metric_key": "tvl", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 104349648.47128296 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 695403102.8728905 + }, + { + "metric_key": "tvl", + "origin_key": "swell", + "date": "2025-11-01", + "value": 42767423.48700905 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 513562660.1987293 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 648781783.2399998 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 470014972.7063862 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 470166645.2173515 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-10-31", + "value": 11995270.15625 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-11-01", + "value": 12134842.859375 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 312977006.64600605 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 1639228 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 538798 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 2431643 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 1.8782904128125 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 3209225 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 232467 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 1326699 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 5.660705197048611 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 3881 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 619 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 3570 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 0.002603203009259259 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 1652397 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 38137 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 203123 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-10-31", + "value": 24.96109884640046 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 9.49878006650463 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-10-31", + "value": 5407 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-10-31", + "value": 11913421 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-10-31", + "value": 712112 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-10-31", + "value": 3347566 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-10-31", + "value": 1124 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-10-31", + "value": 7493 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-10-31", + "value": 0.029385737361111112 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-10-31", + "value": 356793 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-10-31", + "value": 1118 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-10-31", + "value": 5090 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-10-31", + "value": 1.5861565922453704 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 58.092328265834354 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 15553 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 122 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 383 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-10-31", + "value": 12434 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-10-31", + "value": 35 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-10-31", + "value": 44 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-10-31", + "value": 0.5294159942824075 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 0.13959154506944443 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 16925 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 27 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 56 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 0.17367983064814815 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 1914104 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 53150 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 440401 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 10.499377402650463 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 27421 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-10-31", + "value": 1858 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-10-31", + "value": 464 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-10-31", + "value": 1555 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-10-31", + "value": 0.025512784872685185 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-11-03", + "value": 11.410947431149397 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-11-03", + "value": 53.831815251481814 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 26.907409758464325 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 43.641355135336276 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 7.652926513605681 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 0.00035719463988184914 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 65.66315205655609 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 0.00007057302006208898 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 0.0006222377879606161 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 199.03904512699913 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 0.0000641849245217961 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 1389.4930283431572 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 0.00015589808472094726 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 12.285570988804631 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 0.002196909096910678 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 0.2727738927077986 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 12.915496447206907 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 128.48048012605292 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 394.1137429926829 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 14.309406765917148 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 5255.570960562939 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 2105.3194513844046 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 75.15708716021635 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 12.915496447206907 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 85.22847107838815 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 6.347406411097473 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 10.996500351423963 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 135.7304087822513 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 212.52095543857806 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 13.795740427369903 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 12.890278447672186 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 128.48048030546772 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 71.89507093428185 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 394.1137430355431 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 8.997795105456376 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 4281.317244437119 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 35548.53066262349 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 9.918808048574785 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 17.853707190037678 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 4.977315276305533 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 9.970417080687914 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 50.16874676979151 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 455 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 1331 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 1.3672361477083332 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-10-31", + "value": 705578 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-10-31", + "value": 61214 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 75859 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 137966 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-10-31", + "value": 85672 + }, + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 1.962973787048611 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-10-31", + "value": 4.533555015162037 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 4221908 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-10-31", + "value": 22914 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-10-31", + "value": 236 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 0.0021968457322573006 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 64.75637005747997 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 0.018618807164449996 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 0.000035167428920187816 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 25.436469878198164 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 0.0017264523814538128 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 1.9409944099926475 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 0.00006262795230904844 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 1346.4823538063304 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 154.64559211139866 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 0.00003317357128538085 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 1152.7214482926684 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 0.00011452912822895516 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 145.79629425878548 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 0.004545664035156556 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 0.0010477123454401274 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 2259.484192737103 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 0.1713205147520716 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 14.309406731030935 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 2042.8741697088838 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 33.369076431786965 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 73.34446369470925 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 5.153997100199503 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 73.34446417881139 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 316.85811320565267 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 47.55177158713502 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 5.325317614951575 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 157.27333073240945 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-11-01", + "value": 11.504678507605057 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 47.97981214005609 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-11-01", + "value": 111.02583095116788 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-10-31", + "value": 1002 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 62497 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-10-31", + "value": 1.0949556196990742 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 43549 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 184143 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 3936 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-10-31", + "value": 144664 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-10-31", + "value": 23077 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-10-31", + "value": 114894 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-10-31", + "value": 0.33953788549768515 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 60834 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 6063 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 38219 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 1.7316020914583334 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 0.326007460462963 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-10-31", + "value": 284068 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-10-31", + "value": 9988 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-10-31", + "value": 2475 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 23253 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-10-31", + "value": 64985 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-10-31", + "value": 8558 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-10-31", + "value": 1.885736871400463 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 41696 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 12279 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 0.049494924849537034 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 3.4947240603009257 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 81136 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-10-31", + "value": 43101 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-10-31", + "value": 0.30727196476851854 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 15472 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 50067 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 0.28817342530092593 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 907384 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 7222 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 25361 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 0.0630112217029809 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-10-31", + "value": 0.030388857453703705 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 35027 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 4162 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 20894 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-10-31", + "value": 16164 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-10-31", + "value": 2245 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-10-31", + "value": 14679 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 387299 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 172343 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 391460 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-10-31", + "value": 43267 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-10-31", + "value": 236122 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-10-31", + "value": 78252 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-10-31", + "value": 0.5903837128703704 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-10-31", + "value": 1318946 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-10-31", + "value": 705279 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-10-31", + "value": 1556 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-10-31", + "value": 950036 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-10-31", + "value": 2.4334355652893516 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-10-31", + "value": 53806 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-10-31", + "value": 5565 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 202 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 9 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 80 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 210211 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 193676115.39260048 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 1601013254.2932687 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 3448289946.354677 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 518557454.9311132 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-11-04", + "value": 56361888.09509061 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 82739367.9529017 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 756365426.9804331 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 100802718.14148231 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-11-01", + "value": 592307845.5417981 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 209018902.60801142 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 1042872403.9025239 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 236712369.9733781 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-11-06", + "value": 1492060816.1005743 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-11-06", + "value": 108230949.49848606 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-11-06", + "value": 829786023.8259587 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-11-06", + "value": 43663755.6731165 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-06", + "value": 1780069665.7533398 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-11-06", + "value": 492827251.70624495 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-11-06", + "value": 20904002.799966767 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-11-06", + "value": 3374059646.429856 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-11-06", + "value": 1681351388.1069012 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-11-06", + "value": 56519745.54255685 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-11-06", + "value": 132115817.25721237 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-11-06", + "value": 30555081.91911333 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-11-06", + "value": 46237700.958271205 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-11-06", + "value": 195682966.6731109 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-11-06", + "value": 37787580.26672703 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-11-06", + "value": 75691065.00614776 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-11-06", + "value": 706476677.3791329 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-11-06", + "value": 168591261.9077989 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-11-06", + "value": 298417512.9469768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 1522153.25466 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-11-01", + "value": 2106338.9139726274 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-11-04", + "value": 15645560.71497712 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-11-04", + "value": 32132176.505695 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 3903350.784457111 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 32313585.484735873 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 27809695.212819 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 28214654.708588 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 147249162.0103079 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 1502631.7679813365 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 1482610.3243453363 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 1482450.8781213365 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 57456510.82058516 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 57637729.664693154 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 4301.901162659672 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 139.71843656283033 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 0.028374919015848665 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 0.00009297926642891679 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 319898.9625151949 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 0.006199427816807679 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 0.0001347395014120137 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 3.227239918754904 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 0.00006414699087463112 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 14191.11996715986 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 373.4525276074229 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 0.0011067747438422793 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 0.012752630224499618 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 1757.6679576123524 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zora", + "date": "2025-11-05", + "value": 199011.857027 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 1.4350646466872234 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 0.24625342266353561 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 273.91300953572517 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 0.35858566015446314 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 173553748577.35733 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 66.06168332808724 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 265.77415490458867 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 67851 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 171168 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-11-06", + "value": 413918683595.6081 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-11-06", + "value": 3726920.29550272 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-11-06", + "value": 30471979.107775453 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-11-06", + "value": 41233506.63432827 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-11-06", + "value": 552392301.7668016 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-11-06", + "value": 99090864.51684152 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-11-06", + "value": 537467397.3155986 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-11-06", + "value": 1599772813.716362 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-11-06", + "value": 2706967260.1903844 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-11-06", + "value": 220406037.14869785 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-11-06", + "value": 1598996525.6684022 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-11-06", + "value": 81356923.18291937 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-11-06", + "value": 892130389.0201689 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-11-06", + "value": 73575961.56870592 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-06", + "value": 1779862839.4339347 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-11-06", + "value": 666563165.5156424 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-11-06", + "value": 115274682.89735179 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-11-06", + "value": 1084593286.0714555 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-11-06", + "value": 120443835.6589432 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-11-06", + "value": 83371672.64376405 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-11-06", + "value": 225046734.2620482 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 1 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 4401 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-11-06", + "value": 4071974748.635322 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-11-06", + "value": 54523093.37547325 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-11-06", + "value": 7400671647.102695 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-11-06", + "value": 844207843.4851449 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-11-06", + "value": 7225091.576614581 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-11-06", + "value": 5356164997.839373 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-11-06", + "value": 7782570031.407555 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-11-06", + "value": 49805799.431588344 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-11-06", + "value": 72810677.8523 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-11-06", + "value": 160289029.7985113 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 38378749.902984045 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 35197267.099833764 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-11-05", + "value": 13717496658.856932 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-11-01", + "value": 217137695.7357216 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-11-05", + "value": 189497637.09769058 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-11-01", + "value": 367412481.58945113 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-11-01", + "value": 70634434.8651326 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-11-04", + "value": 68225233.69801834 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 36250675.0625 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-11-01", + "value": 28601438.875 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-11-05", + "value": 24661188.625 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-11-01", + "value": 336926713.48 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-11-05", + "value": 421087921.41999996 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-10-30", + "value": 1404644956.914373 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-11-01", + "value": 1365136510.3568687 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-11-05", + "value": 1123947670.110583 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-11-01", + "value": 215280942.2162571 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-11-04", + "value": 1927836982.4569092 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-11-05", + "value": 1724291.5615234375 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 2747306375.286519 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 13569638.734375 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-10-30", + "value": 65000751.2875061 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-10-31", + "value": 60990764.44812775 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-11-04", + "value": 66518601.90750122 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-11-05", + "value": 72923928.16750336 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 1579946.5892181396 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 1542261.78515625 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 1560094.8718719482 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 1570258.709060669 + }, + { + "metric_key": "tvl", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 1584990.2259368896 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 203930541.7912264 + }, + { + "metric_key": "tvl", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 188880137.4834442 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 729893086.5311718 + }, + { + "metric_key": "tvl", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 674066442.3726959 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 28473553.69740987 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-11-04", + "value": 492456659.09872246 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 685828135.5599995 + }, + { + "metric_key": "tvl", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 642988069.7200003 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 697083287.4790065 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-11-05", + "value": 10426758.15625 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 1575751 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 506202 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 2550810 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 1.8713579052314815 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 3038161 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 279497 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 1105385 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 6.154331302708333 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 3451 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 313 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 2768 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 0.0025073885879629628 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 1701662 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 35946 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 200484 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 198923 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 192675 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 7.741670981122685 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-11-05", + "value": 12291060 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-11-05", + "value": 665565 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-11-05", + "value": 2830037 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-11-05", + "value": 25.037485509594905 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-11-05", + "value": 5715 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-11-05", + "value": 1104 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-11-05", + "value": 6552 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-11-05", + "value": 0.03033929596064815 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-11-05", + "value": 57301 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-11-05", + "value": 1036 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-11-05", + "value": 4311 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-11-05", + "value": 0.42496028761574073 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 13725 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 127 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 403 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 0.13618840223379627 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-11-05", + "value": 12723 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-11-05", + "value": 30 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-11-05", + "value": 51 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-11-05", + "value": 0.5879935376157408 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 15787 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 32 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 62 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 0.1591390968865741 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 1734690 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 63018 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 388217 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 10.029422345462963 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-11-05", + "value": 1874 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-11-05", + "value": 504 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-11-04", + "value": 998 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-11-05", + "value": 1006 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 2588488 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-11-05", + "value": 0.025666772337962964 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 75455 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 135230 + }, + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 1.8656369201967593 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-11-05", + "value": 47031 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-11-05", + "value": 269 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-11-05", + "value": 969 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-11-05", + "value": 4.2261151074074075 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 28113 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 438 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 1417 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 0.8671990828819445 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-11-05", + "value": 799082 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-11-05", + "value": 68302 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-11-05", + "value": 92292 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-11-05", + "value": 4.6981972218171295 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 87516 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 15571 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 160830 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 4580 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 4744 + }, + { + "metric_key": "txcount", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 4930 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 1279 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 683 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 844 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 5088 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 0.007761966423611111 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 0.004778479155092593 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 0.0033805957175925927 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-10-30", + "value": 7.584540880651724 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 34.708628026250395 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 243.03084748215576 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 198.86728813914903 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 3046.7366566940404 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 15613.90953916731 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 17.332642455797732 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-10-30", + "value": 121.17345954055405 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 43.641355135336276 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 0.00934594693287037 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-11-05", + "value": 156416 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-11-05", + "value": 20849 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-11-05", + "value": 103967 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-11-05", + "value": 0.37090445594907406 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 69018 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 4211 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 34867 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 30915 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 0.28073294703703705 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-11-05", + "value": 295354 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-11-05", + "value": 2452 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-11-05", + "value": 8824 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-11-05", + "value": 2.075251165011574 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 17.332642455797732 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 44068 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 11034 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 18895 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 0.06418362840277778 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-11-05", + "value": 70581 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-11-05", + "value": 5763 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-11-05", + "value": 36776 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-11-05", + "value": 0.3647174827546296 + }, + { + "metric_key": "txcount", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 981960 + }, + { + "metric_key": "daa", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 7368 + }, + { + "metric_key": "aa_last7d", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 21205 + }, + { + "metric_key": "gas_per_second", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 2.1416779550462963 + }, + { + "metric_key": "txcount", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 76196 + }, + { + "metric_key": "daa", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 13717 + }, + { + "metric_key": "aa_last7d", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 40809 + }, + { + "metric_key": "gas_per_second", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 0.24967844876157408 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 660398.069268624 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-10-31", + "value": 0.08124162413646191 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 0.0021517992510849157 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 4.7548495355106954 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 0.0001784908741213559 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 1413.5096105837304 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 0.000007583520733259734 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 16014.74430413839 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 0.39510197997995083 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 34.0186726426081 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 0.0023954460796559037 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 21962.11348087966 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 0.03158167135094661 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 587.6370975327922 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 0.001039581308890285 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 282.9273279574409 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 0.000006494774837907257 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 760.9463926617706 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 0.01358693214085464 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 226.358672050435 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 0.0005311144940828697 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 10037.742876579086 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 0.000018554273303262456 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 131.17947382793974 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 0.0000012010824438284245 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 0.34162911404830515 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 55.603546025389576 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 135.73040863722431 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 212.52095475580506 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 23.659031001097855 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 7.6625479541375 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 4281.317236769629 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 6.0746325183896746 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 150.95111547537607 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 780.9061081824912 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 22.060308758752328 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 3.4024849171279277 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 394.1137430355431 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 23.6590310937955 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 38.045776820385804 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 150.95111547537607 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 780.9061081824912 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 55.94517513943788 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 22.060308758752328 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 14.309406765917148 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 2105.3194513844046 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 79.90550058128719 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 75.15708716021635 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 3.4024849171279277 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 85.22847107838815 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 60.71077479227651 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 170.4134969109971 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 451.90668875054087 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 3303.619159096524 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 43.602843297803766 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": -691.8098408006741 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 81830.2592089855 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 366.83264962622746 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 239873.85581425927 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 21938.454449785862 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 160.99326830661334 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-10-31", + "value": 35.83396698727677 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 45.19143149348597 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": -51.20979843578005 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 6.107861588898525 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 13.344716448699751 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-10-31", + "value": 137.27092352582062 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 10.94156651727375 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 9.918808048574785 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 6.107861588898525 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 17.853707190037678 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 3.760956546345738 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 10.94156651727375 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-10-31", + "value": 6.107861588898525 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 13.344716448699751 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-10-31", + "value": 9.918808048574785 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 17.853707190037678 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-10-31", + "value": 137.27092352582062 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 3.760956546345738 + }, + { + "metric_key": "txcount", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 47578 + }, + { + "metric_key": "daa", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 4988 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 20760 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 0.0781173596281118 + }, + { + "metric_key": "txcount", + "origin_key": "metis", + "date": "2025-11-05", + "value": 51219 + }, + { + "metric_key": "daa", + "origin_key": "metis", + "date": "2025-11-05", + "value": 6724 + }, + { + "metric_key": "aa_last7d", + "origin_key": "metis", + "date": "2025-11-05", + "value": 19128 + }, + { + "metric_key": "gas_per_second", + "origin_key": "metis", + "date": "2025-11-05", + "value": 0.05434557444444444 + }, + { + "metric_key": "txcount", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 303168 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 212741 + }, + { + "metric_key": "txcount", + "origin_key": "celo", + "date": "2025-11-05", + "value": 1406287 + }, + { + "metric_key": "daa", + "origin_key": "celo", + "date": "2025-11-05", + "value": 727888 + }, + { + "metric_key": "aa_last7d", + "origin_key": "celo", + "date": "2025-11-05", + "value": 958075 + }, + { + "metric_key": "gas_per_second", + "origin_key": "celo", + "date": "2025-11-05", + "value": 2.5835998451736115 + }, + { + "metric_key": "txcount", + "origin_key": "imx", + "date": "2025-11-05", + "value": 75202 + }, + { + "metric_key": "daa", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 119645 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 413019 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-11-03", + "value": 390337 + }, + { + "metric_key": "aa_last7d", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 378219 + }, + { + "metric_key": "daa", + "origin_key": "imx", + "date": "2025-11-05", + "value": 1985 + }, + { + "metric_key": "aa_last7d", + "origin_key": "imx", + "date": "2025-11-05", + "value": 6565 + }, + { + "metric_key": "txcount", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 327 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 0.34252742761574073 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 0.40161417662037036 + }, + { + "metric_key": "gas_per_second", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 0.3133968539236111 + }, + { + "metric_key": "daa", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 16 + }, + { + "metric_key": "txcount", + "origin_key": "plume", + "date": "2025-11-05", + "value": 155958 + }, + { + "metric_key": "daa", + "origin_key": "plume", + "date": "2025-11-05", + "value": 33892 + }, + { + "metric_key": "aa_last7d", + "origin_key": "plume", + "date": "2025-11-05", + "value": 61814 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-11-03", + "value": 0.4461180974884259 + }, + { + "metric_key": "gas_per_second", + "origin_key": "plume", + "date": "2025-11-05", + "value": 0.3901919769097222 + }, + { + "metric_key": "aa_last7d", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 89 + }, + { + "metric_key": "txcount", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 246773 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 84.11990065899957 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 2.851479242165732 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 0.000034613282570446095 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 28.955698923278877 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 0.001777744816393152 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 3.131812909927813 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 0.00008894207073430017 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 1399.3604800067044 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 0.00027031749438449646 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": 1.2163146166244252 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 168.43481768778642 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 0.00004825679154516535 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 3717.219604074817 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 0.00001620931905137974 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 37.96918766904022 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 0.001079291192073338 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 2227.605804394508 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 0.012146349127596429 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 0.0010179587905700847 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 6212.7532611125 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 0.1997473595701087 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 2.9197410562139084e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 4.84102144035467e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 3.8217653391660275e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 0.0000017373044828639182 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 780.9061063898383 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 45.27880977686833 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 234.59511809882588 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 146.74959121771724 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 202.416879953136 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 649.0033113322157 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-11-02", + "value": 3.292083808426532 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 22.034312558730605 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 5.773710533338021 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 10.491357204828775 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 12.49325968320827 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 0.0004667854708757515 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 4.975197008374163 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 0.0014880505813099395 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 0.00008212820880091433 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 15857.247755342007 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 0.00008555347252604618 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 189.81152687740624 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 1.9839803645451852 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 0.8661886293629 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 1688311365.2709625 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 145838336.5837792 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-11-02", + "value": 32469149.128638826 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 467387016348.6048 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 114621323.50494976 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 43475585.855201386 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 83453130.06737751 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 49696990.06041715 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 4695374263.087928 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 63156693.75529463 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 15745406.694954975 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 46506388.39114833 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 3516976878.2192116 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 1972556906.0435205 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 319356234.653202 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 67067714.44337063 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 4299315.826831598 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 787852303.2448002 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 31591550.11617144 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 524784095.8309035 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 7942080767.215334 + }, + { + "metric_key": "stables_mcap", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 649542.1975863762 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-11-02", + "value": 4330696534.490217 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-11-02", + "value": 43572427.02134275 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-11-02", + "value": 174959662.5156499 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 103859240.1462014 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-11-02", + "value": 630855.324988 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-11-01", + "value": 111050304.762636 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-11-02", + "value": 149711658.5951242 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 1547544.7338400001 + }, + { + "metric_key": "stables_mcap", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 2105260.6711366274 + }, + { + "metric_key": "stables_mcap", + "origin_key": "manta", + "date": "2025-11-02", + "value": 6401758.943714777 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 696615656.2115029 + }, + { + "metric_key": "stables_mcap", + "origin_key": "metis", + "date": "2025-11-02", + "value": 15643303.334075121 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mint", + "date": "2025-11-02", + "value": 101705.32985 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-11-01", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "mode", + "date": "2025-11-02", + "value": 1653965.1397326768 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 642955798.604845 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 661361646.4988422 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-10-31", + "value": 32067714.312849 + }, + { + "metric_key": "stables_mcap", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 3903350.784457111 + }, + { + "metric_key": "stables_mcap", + "origin_key": "redstone", + "date": "2025-11-02", + "value": 35223.184679 + }, + { + "metric_key": "stables_mcap", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 41086713.982549876 + }, + { + "metric_key": "stables_mcap", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 28242864.081478 + }, + { + "metric_key": "stables_mcap", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 148688395.3350139 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 567.1747958931467 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-11-04", + "value": 0.00011552363163713192 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 7346.298319267002 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-11-04", + "value": 0.0030915092668311554 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-11-01", + "value": 605336.1289370001 + }, + { + "metric_key": "stables_mcap", + "origin_key": "swell", + "date": "2025-11-02", + "value": 620427.693978 + }, + { + "metric_key": "stables_mcap", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 57460740.39365616 + }, + { + "metric_key": "stables_mcap", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 25913393.34563 + }, + { + "metric_key": "stables_mcap", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 1482792.4637513363 + }, + { + "metric_key": "stables_mcap", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 89113841.72898796 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 173584060147.1516 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 173677263690.99384 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-04", + "value": 195.81621050208898 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-11-04", + "value": 118.92062493973751 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 164521 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-11-03", + "value": 5.3300409924704514e-8 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 162987 + }, + { + "metric_key": "daa", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 50178 + }, + { + "metric_key": "aa_last7d", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 163020 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 50202483.92161634 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 377278296.32073784 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 8334917.907557553 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 5857409352.7679405 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 58435731.10189595 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 8972832610.539228 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 1785516876.251968 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-11-02", + "value": 713341648.5891804 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 137056905.56745988 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 3065680543.3525786 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 92032246.00020823 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 248672607.19069666 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 635093260.1107657 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 1094340761.9330397 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 1075338468.9411669 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 8687787860.705328 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-11-02", + "value": 1029597961.659908 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 181.6870309730889 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 893.7211356045965 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 54715.275433101946 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 262972.441580611 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 449 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-11-02", + "value": 107.12835754009058 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-11-02", + "value": 3451157.142361775 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 75637.80549311776 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-11-02", + "value": 76004.04292833351 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-11-02", + "value": 24202.89915872203 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 102537.0741598061 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-11-02", + "value": 322 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 4049.353619165198 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-11-02", + "value": 4356.060780672357 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-11-02", + "value": 33091105.630896516 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-11-02", + "value": 2158 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 470.7146558457498 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-11-02", + "value": 5454 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-11-02", + "value": 229.06970621121695 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 120151.40796618199 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 1268123.6479300584 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 48.97245005560532 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-11-01", + "value": 3425501.0207558167 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 100204.88693733426 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-11-01", + "value": 23815.12429278887 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 7381.307895434286 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-11-01", + "value": 230.21235925193383 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-11-01", + "value": 2189 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 36737.14370620222 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-11-01", + "value": 76140.83419234233 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 7361.233153244253 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 22562.122644123712 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 87051.51158621116 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 301 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 49.032081160794256 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-11-01", + "value": 20555.22387035036 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 4100.747645754562 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 33596615.07000144 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-11-01", + "value": 47045.956282739906 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 103.22908734721925 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 8671 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-11-01", + "value": 346692.7514448888 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 1366486.3277171708 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 190.90178042583392 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 1209241.242852516 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-11-01", + "value": 32 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 189.90096614530594 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-11-01", + "value": 418.8263373431518 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-11-01", + "value": 830.555650402827 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-11-01", + "value": 3500.9515310766137 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-11-01", + "value": 410 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "derive", + "date": "2025-11-01", + "value": 1507 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 14689.562542154492 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-10-31", + "value": 1030.556620958826 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-10-31", + "value": 333280.2193908722 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 111701.23794884153 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 94865.59621898821 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 1221.3032245307172 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 2281 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-10-31", + "value": 3652456.8044734267 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 260.21283212959463 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 4795.077680050398 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-31", + "value": 49.03227894626487 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 104.22942136872182 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "gravity", + "date": "2025-10-31", + "value": 89 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 86555.2187968814 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 20608.24072504194 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-10-31", + "value": 84874.64219461824 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 1 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-10-31", + "value": 22038.150342855835 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-10-31", + "value": 663 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 22695.27982709078 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-10-31", + "value": 3668.754376865593 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 7793.564966803873 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 503 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 5238 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-10-30", + "value": 9.970417080687914 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-11-02", + "value": 1009391032.676549 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-11-02", + "value": 230759833.73300013 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-11-02", + "value": 110810325.22600988 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-11-02", + "value": 248469994.49191713 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 2027161499.2028425 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-11-02", + "value": 1155395444.3017833 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 80048591.65088274 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-11-02", + "value": 94300196.96724866 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 127640494.52694453 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-11-02", + "value": 166401759.36604375 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 83714762.88579099 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-11-02", + "value": 17112693934.62522 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 40968566.810113244 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-11-02", + "value": 41235969.095289536 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-11-02", + "value": 15310126554.624737 + }, + { + "metric_key": "tvl", + "origin_key": "blast", + "date": "2025-11-02", + "value": 220464316.17259598 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-11-02", + "value": 70601273.42030075 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-11-02", + "value": 199562572.28368115 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-11-02", + "value": 42154783.0625 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-11-02", + "value": 340141857.48 + }, + { + "metric_key": "tvl", + "origin_key": "linea", + "date": "2025-11-02", + "value": 1403055846.2663722 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-11-02", + "value": 89304659.234375 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-11-02", + "value": 21244844.559761196 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-11-02", + "value": 220596315.25271606 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-11-02", + "value": 2055247125.1376402 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-11-01", + "value": 94572337.15066382 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-11-02", + "value": 97522882.90036389 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-11-02", + "value": 1942633.1928710938 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-11-02", + "value": 129240922.2939018 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-11-02", + "value": 2985240548.2717304 + }, + { + "metric_key": "tvl", + "origin_key": "orderly", + "date": "2025-11-02", + "value": 14038894.28125 + }, + { + "metric_key": "tvl", + "origin_key": "plume", + "date": "2025-11-02", + "value": 59373635.617500305 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 16976239.086271502 + }, + { + "metric_key": "tvl", + "origin_key": "polygon_zkevm", + "date": "2025-11-02", + "value": 17056548.492530458 + }, + { + "metric_key": "tvl", + "origin_key": "unichain", + "date": "2025-11-02", + "value": 515081962.93690515 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-11-02", + "value": 12214373.0625 + }, + { + "metric_key": "txcount", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 1360364 + }, + { + "metric_key": "daa", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 450186 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 2493406 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ethereum", + "date": "2025-11-01", + "value": 1.8912623741666668 + }, + { + "metric_key": "txcount", + "origin_key": "base", + "date": "2025-11-01", + "value": 12499514 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 3245047 + }, + { + "metric_key": "daa", + "origin_key": "base", + "date": "2025-11-01", + "value": 620801 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 252021 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 1356600 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum", + "date": "2025-11-01", + "value": 5.232677205081019 + }, + { + "metric_key": "txcount", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 3016 + }, + { + "metric_key": "daa", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 468 + }, + { + "metric_key": "aa_last7d", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 3463 + }, + { + "metric_key": "gas_per_second", + "origin_key": "arbitrum_nova", + "date": "2025-11-01", + "value": 0.001998729895833333 + }, + { + "metric_key": "txcount", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 1569684 + }, + { + "metric_key": "daa", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 32762 + }, + { + "metric_key": "aa_last7d", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 204987 + }, + { + "metric_key": "gas_per_second", + "origin_key": "optimism", + "date": "2025-11-01", + "value": 8.009815714293982 + }, + { + "metric_key": "aa_last7d", + "origin_key": "base", + "date": "2025-11-01", + "value": 3358690 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-10-30", + "value": 1.6017432984606481 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-11-01", + "value": 1.2876647701388888 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-11-01", + "value": 5030 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-11-01", + "value": 1283 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-11-01", + "value": 25.032613849826387 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-11-01", + "value": 7626 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-11-01", + "value": 0.028749652824074073 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-11-01", + "value": 272586 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-11-01", + "value": 919 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-11-01", + "value": 4862 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-11-01", + "value": 10602 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-11-01", + "value": 35 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-11-01", + "value": 49 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 0.10670540039351852 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-11-01", + "value": 0.4509123110648148 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 1945864 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 56782 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 431344 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 12927 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 29 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 2267 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 108 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 374 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-11-01", + "value": 0.038926798425925925 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-11-01", + "value": 56 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 30288 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-11-01", + "value": 10.10361248627315 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 416 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-11-01", + "value": 1695 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 1326 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-11-01", + "value": 389 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-11-01", + "value": 1.513654834872685 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-11-01", + "value": 1404 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-11-01", + "value": 0.02528663866898148 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-11-01", + "value": 695170 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-11-01", + "value": 58881 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 0.0003184033367866586 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": 2.3902590047951446 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 3.3690113362158315e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-10-31", + "value": 1.4502696728384707e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-10-31", + "value": 6.827730074875277e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 0.8802439801629967 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 7.973991328321493e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-10-31", + "value": 4.2860203389728e-8 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-10-31", + "value": 2105.3194476271597 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 85.22847107838815 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 12.505408893862617 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-10-31", + "value": 38.04577651538063 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": 12.890278447672186 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": 60.71077479227651 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 25.065237087742968 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": -1.5925568755867776 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 9886.79176110371 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 116.87006706202258 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-10-31", + "value": -1.0122259123327828 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 207.77024079722457 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 1715.8774751383164 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 3082.188757179094 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-10-31", + "value": -5.237351934066505 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 1729.2512081992568 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-10-31", + "value": -48.42520380347188 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-10-31", + "value": 1395.8938398819596 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 918374.1253329309 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ethereum", + "date": "2025-11-05", + "value": 0.16418654310817699 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 59700.60714194014 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 0.00326265434202301 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 494.26780991904957 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 0.12214672997948757 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 13526.805911584415 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 0.0000810374498055336 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 463416.50412047724 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 0.004884884324215474 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 8.705537758547297 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 0.000606521179948073 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 59.52731289211591 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 0.00031863220248131574 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 2.4292863190448815 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 0.00013180853813077735 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 90.06636005224868 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 0.00405723140052475 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 8.157720975646729 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 0.0002604578820003739 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 1394.1136162006483 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 0.0003653755863222304 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 5.0317110446878255 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 0.0014971072253120517 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 463.19698037609345 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 0.0001087016762130007 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 879.8543056541376 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 0.00018226403380281486 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 5.578595952013136 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 0.000014529590039457417 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 6462.046013609021 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "zksync_era", + "date": "2025-11-05", + "value": 0.024113076179984295 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 55.47116869003392 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 0.003285139222394592 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 21231.173027644345 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 0.022835473736869442 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 456.58166852261314 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 0.0010005649677998578 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 345.1819926591013 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 0.000013894025238082933 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 657.1905119153784 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 0.011780419316337222 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 88.1728444259516 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 0.00064748310890412 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 9258.867567822417 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 0.00005294310988924882 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 145.9540881967042 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 0.0006435765920462402 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 975.7566682198516 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 0.006937686803105328 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 278.27557449910637 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 0.0023477818397583125 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 288.10181490361396 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 0.0009216608839148858 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 1745.3216122756905 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 0.010136138860047482 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 1508.3338655495243 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 0.0009014676724608316 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 2807.0225401022103 + }, + { + "metric_key": "txcosts_median_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 0.0010066973041324447 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 6.913772770676044e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-10-31", + "value": 3.528491162782263e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-10-31", + "value": 0.000001792652925498275 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 0.32797730205527353 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-10-31", + "value": 1.0316351281015925e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-10-31", + "value": 3.488621206140653e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 0.0000067245082410787905 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 1.0154603756930443e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 11.976451942191868 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 3.05502334304248e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 7.3458835688432994e-9 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 6.330423193150254e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 0.0000014117059776124143 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 0.5287766009005576 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 2.9297112115739736e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 4.01863042295545e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 3.1111977468042207e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 5.271751737640485e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 2.6790869486369683e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 2.1605539908362646e-8 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 0.0000032226823327313693 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 0.2250440662647903 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 7.47230746829031e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 2.8645427842227598 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 1.2011883183838763 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 1.6333788170722153e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 6.978589390401132e-7 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 3.426638629466317e-7 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-10-31", + "value": 6.0746325183896746 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 3.5529326514071595 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 82.01688055709697 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 3900.074821107496 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 104.89834100013945 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 25.57537693780468 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 78.59223541863034 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 14.57261550707443 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 243.48448472898048 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 813.7607745426836 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "blast", + "date": "2025-10-31", + "value": 75.15708682331521 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 44.88926289510241 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 43.45464340085444 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 105.5030980828435 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 308.98673019856693 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "scroll", + "date": "2025-11-03", + "value": 165.2821251121433 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 15.343884791935842 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 614.6458942664146 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 21.819950223941355 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-11-04", + "value": 179.4860736685295 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 71.28150723638525 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 1897.9423462968268 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 6.977839910266632 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-11-03", + "value": 278.7675645359756 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 8.756024042421394 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 163.33604210765984 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 160.62779948946448 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 178.16782672322302 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 3.5529326583209326 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 82.01688055709697 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 3900.074827832004 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 104.89834110168547 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 25.57537693780468 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 78.59223572413266 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 14.572615514420312 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mint", + "date": "2025-11-04", + "value": 8.675388622652417 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-04", + "value": 2637.426291960859 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 243.48448536202278 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 813.7607759543896 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": 46.91902041093648 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 6145.315578937087 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 44.88926289510241 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 43.45464369382556 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 134899 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-11-01", + "value": 85280 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-11-01", + "value": 4.342951057916666 + }, + { + "metric_key": "gas_per_second", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 1.9988373566782407 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 4399258 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-11-01", + "value": 73727 + }, + { + "metric_key": "txcount", + "origin_key": "swell", + "date": "2025-11-01", + "value": 22028 + }, + { + "metric_key": "daa", + "origin_key": "swell", + "date": "2025-11-01", + "value": 211 + }, + { + "metric_key": "aa_last7d", + "origin_key": "swell", + "date": "2025-11-01", + "value": 999 + }, + { + "metric_key": "gas_per_second", + "origin_key": "swell", + "date": "2025-11-01", + "value": 1.1088321285532408 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 105.50309812302979 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 308.98673019856693 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 128.48048030546772 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 15.343884823047818 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 614.6458943191323 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-11-03", + "value": 13.199099924644456 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "optimism", + "date": "2025-11-04", + "value": 677.1330937686372 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 21.819950250732223 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 71.2815072579908 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 1897.942349519509 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 6.977839910266632 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 8.756024042421394 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 163.3360422709977 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 160.6278001873234 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 178.16782706588685 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "plume", + "date": "2025-11-04", + "value": 146.43750870134704 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "taiko", + "date": "2025-11-04", + "value": 1403.3986778545545 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "scroll", + "date": "2025-11-04", + "value": 214.55763966957537 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 3.5529326583209326 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 82.34485785915224 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-10-31", + "value": 233.32477271725134 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 3900.074827832004 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 104.89834110168547 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 37.55182887999655 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 78.59223572413266 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": 14.572615514420312 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 243.48448536202278 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 813.7607759543896 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 45.41803949600297 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 43.45464369382556 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 105.50309812302979 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": 308.98673019856693 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 15.343884823047818 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "ink", + "date": "2025-11-03", + "value": 74.36408355928461 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 614.6458943191323 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 21.819950250732223 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": 71.2815072579908 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": 1897.942349519509 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 7.202883976531423 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 9.95721236080527 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 163.3360422709977 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 160.6278001873234 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 178.16782706588685 + }, + { + "metric_key": "profit_usd", + "origin_key": "mint", + "date": "2025-11-05", + "value": 1.4787783863668928 + }, + { + "metric_key": "profit_usd", + "origin_key": "manta", + "date": "2025-11-05", + "value": 5.827986566799357 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-11-05", + "value": 459516.42929264525 + }, + { + "metric_key": "profit_usd", + "origin_key": "linea", + "date": "2025-11-05", + "value": 21126.27468654266 + }, + { + "metric_key": "profit_usd", + "origin_key": "celo", + "date": "2025-11-05", + "value": 1482.7584886117197 + }, + { + "metric_key": "profit_usd", + "origin_key": "blast", + "date": "2025-11-05", + "value": 266.58975693496865 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-11-05", + "value": -5.867077755873014 + }, + { + "metric_key": "profit_usd", + "origin_key": "optimism", + "date": "2025-11-05", + "value": 13283.321426222394 + }, + { + "metric_key": "profit_usd", + "origin_key": "arbitrum", + "date": "2025-11-05", + "value": 58886.846365985744 + }, + { + "metric_key": "profit_usd", + "origin_key": "zora", + "date": "2025-11-04", + "value": -19.41449396430049 + }, + { + "metric_key": "profit_usd", + "origin_key": "base", + "date": "2025-11-04", + "value": 601136.7471037577 + }, + { + "metric_key": "profit_usd", + "origin_key": "plume", + "date": "2025-11-05", + "value": 1699.9035727796877 + }, + { + "metric_key": "profit_usd", + "origin_key": "ink", + "date": "2025-11-05", + "value": 419.7423366822679 + }, + { + "metric_key": "profit_usd", + "origin_key": "scroll", + "date": "2025-11-05", + "value": 351.0785703995833 + }, + { + "metric_key": "profit_usd", + "origin_key": "polygon_zkevm", + "date": "2025-11-05", + "value": -253.515561508533 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-10-31", + "value": 4380.720356260905 + }, + { + "metric_key": "profit_usd", + "origin_key": "lisk", + "date": "2025-11-05", + "value": 130.61020337365636 + }, + { + "metric_key": "profit_usd", + "origin_key": "taiko", + "date": "2025-11-05", + "value": 42.54461759624607 + }, + { + "metric_key": "profit_usd", + "origin_key": "mode", + "date": "2025-11-05", + "value": 37.70736264138368 + }, + { + "metric_key": "profit_usd", + "origin_key": "swell", + "date": "2025-11-05", + "value": -65.70291130597766 + }, + { + "metric_key": "profit_usd", + "origin_key": "worldchain", + "date": "2025-11-05", + "value": -503.8287333188607 + }, + { + "metric_key": "profit_usd", + "origin_key": "orderly", + "date": "2025-11-05", + "value": 0.9548369991153063 + }, + { + "metric_key": "profit_usd", + "origin_key": "derive", + "date": "2025-11-05", + "value": 80.10914769144341 + }, + { + "metric_key": "profit_usd", + "origin_key": "starknet", + "date": "2025-11-05", + "value": 2643.686497831213 + }, + { + "metric_key": "profit_usd", + "origin_key": "soneium", + "date": "2025-11-05", + "value": 719.2265054668143 + }, + { + "metric_key": "profit_usd", + "origin_key": "unichain", + "date": "2025-11-05", + "value": 9080.69974075653 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 39.460960386902805 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "imx", + "date": "2025-11-05", + "value": 101.28160575228019 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 13.03351925530396 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 17.26972383171059 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 25.626030793783666 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 15.446062667706274 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 6.848106871056146 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 10.064526803991692 + }, + { + "metric_key": "costs_l1_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 39.17573334105823 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 25.626030793783666 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 15.446062667706274 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 6.848106871056146 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 10.064526803991692 + }, + { + "metric_key": "rent_paid_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 39.17573334105823 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "imx", + "date": "2025-11-05", + "value": 101.28160575228019 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "mantle", + "date": "2025-11-05", + "value": 52.49447964220677 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "fraxtal", + "date": "2025-11-05", + "value": 17.26972383171059 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "metis", + "date": "2025-11-05", + "value": 25.626030793783666 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "loopring", + "date": "2025-11-05", + "value": 15.446062667706274 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "redstone", + "date": "2025-11-05", + "value": 6.848106871056146 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "gravity", + "date": "2025-11-05", + "value": 10.064526803991692 + }, + { + "metric_key": "costs_total_usd", + "origin_key": "arbitrum_nova", + "date": "2025-11-05", + "value": 39.17573334105823 + }, + { + "metric_key": "fees_paid_usd", + "origin_key": "plume", + "date": "2025-10-31", + "value": 3095.984497606464 + }, + { + "metric_key": "costs_blobs_usd", + "origin_key": "starknet", + "date": "2025-11-01", + "value": 1.6035883521174828e-7 + }, + { + "metric_key": "txcount", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 49768 + }, + { + "metric_key": "daa", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 6027 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zksync_era", + "date": "2025-11-01", + "value": 184494 + }, + { + "metric_key": "daa", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 794 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-10-31", + "value": 4366 + }, + { + "metric_key": "aa_last7d", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 4296 + }, + { + "metric_key": "txcount", + "origin_key": "linea", + "date": "2025-11-01", + "value": 126592 + }, + { + "metric_key": "gas_per_second", + "origin_key": "polygon_zkevm", + "date": "2025-11-01", + "value": 0.004368051631944444 + }, + { + "metric_key": "daa", + "origin_key": "linea", + "date": "2025-11-01", + "value": 16422 + }, + { + "metric_key": "aa_last7d", + "origin_key": "linea", + "date": "2025-11-01", + "value": 105907 + }, + { + "metric_key": "gas_per_second", + "origin_key": "linea", + "date": "2025-11-01", + "value": 0.3119205026157408 + }, + { + "metric_key": "txcount", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 49367 + }, + { + "metric_key": "daa", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 2948 + }, + { + "metric_key": "aa_last7d", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 36827 + }, + { + "metric_key": "gas_per_second", + "origin_key": "scroll", + "date": "2025-11-01", + "value": 0.3876367634606481 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-11-02", + "value": 199060104.2400245 + }, + { + "metric_key": "txcount", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 38912 + }, + { + "metric_key": "daa", + "origin_key": "manta", + "date": "2025-11-01", + "value": 8837 + }, + { + "metric_key": "daa", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 10910 + }, + { + "metric_key": "aa_last7d", + "origin_key": "manta", + "date": "2025-11-01", + "value": 43757 + }, + { + "metric_key": "txcount", + "origin_key": "blast", + "date": "2025-11-01", + "value": 272648 + }, + { + "metric_key": "gas_per_second", + "origin_key": "manta", + "date": "2025-11-01", + "value": 0.2275901975 + }, + { + "metric_key": "daa", + "origin_key": "blast", + "date": "2025-11-01", + "value": 1779 + }, + { + "metric_key": "aa_last7d", + "origin_key": "blast", + "date": "2025-11-01", + "value": 9845 + }, + { + "metric_key": "gas_per_second", + "origin_key": "blast", + "date": "2025-11-01", + "value": 1.8565907003703703 + }, + { + "metric_key": "aa_last7d", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 23228 + }, + { + "metric_key": "gas_per_second", + "origin_key": "taiko", + "date": "2025-11-01", + "value": 0.05034353148148148 + }, + { + "metric_key": "txcount", + "origin_key": "manta", + "date": "2025-11-01", + "value": 52298 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 1747920971.7374227 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 69460767.2055713 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 146032823.69628924 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "derive", + "date": "2025-10-30", + "value": 34198594.842503056 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 43925236.78495631 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 85005803.64932227 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 50693449.53808212 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 5150171489.644994 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 64813915.242909245 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 4637770.553730338 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 363569806.98586696 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 231481925.27433786 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 470349941761.83514 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 126448673.11806999 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 51499806.986900255 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "imx", + "date": "2025-10-30", + "value": 1029974476.9406081 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 217306972.54816398 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 2053169835.726109 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 29007626.45101636 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 505942088.13225037 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 208996698.90408614 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 47571839.66321888 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 3776809422.6598353 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 1944188760.1472201 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 16264247.556008745 + }, + { + "metric_key": "stables_mcap", + "origin_key": "base", + "date": "2025-10-30", + "value": 4263563494.7823577 + }, + { + "metric_key": "stables_mcap", + "origin_key": "blast", + "date": "2025-10-30", + "value": 43819145.135823265 + }, + { + "metric_key": "stables_mcap", + "origin_key": "celo", + "date": "2025-10-30", + "value": 174806394.30699974 + }, + { + "metric_key": "stables_mcap", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 104191569.48426941 + }, + { + "metric_key": "stables_mcap", + "origin_key": "imx", + "date": "2025-10-30", + "value": 574600.589989 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ink", + "date": "2025-10-30", + "value": 120462805.016586 + }, + { + "metric_key": "stables_mcap", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 1542544.7305400001 + }, + { + "metric_key": "stables_mcap", + "origin_key": "linea", + "date": "2025-10-30", + "value": 170658259.0130142 + }, + { + "metric_key": "stables_mcap", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 645392854.1647404 + }, + { + "metric_key": "stables_mcap", + "origin_key": "plume", + "date": "2025-10-30", + "value": 32428386.010786 + }, + { + "metric_key": "stables_mcap", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 173586943803.37976 + }, + { + "metric_key": "market_cap_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 834787839.7186146 + }, + { + "metric_key": "fdv_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 250193371.8177496 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zora", + "date": "2025-10-30", + "value": 814920294.5550393 + }, + { + "metric_key": "fdv_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 1011941574.7455994 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 9853716193.95179 + }, + { + "metric_key": "fdv_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 113080429.39656784 + }, + { + "metric_key": "fdv_usd", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 672534051.8659513 + }, + { + "metric_key": "fdv_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 2053479678.6159556 + }, + { + "metric_key": "fdv_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 254552821.0074363 + }, + { + "metric_key": "fdv_usd", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 93784991.79213265 + }, + { + "metric_key": "fdv_usd", + "origin_key": "plume", + "date": "2025-10-30", + "value": 667240299.5160036 + }, + { + "metric_key": "fdv_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 96833676.99142867 + }, + { + "metric_key": "fdv_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 1177151251.5416112 + }, + { + "metric_key": "fdv_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 8609727670.426664 + }, + { + "metric_key": "fdv_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 1890381461.8034904 + }, + { + "metric_key": "fdv_usd", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 140951232.1173801 + }, + { + "metric_key": "fdv_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 152760741.7266339 + }, + { + "metric_key": "fdv_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 9263230.49304697 + }, + { + "metric_key": "fdv_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 61225254.61260121 + }, + { + "metric_key": "fdv_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 6292371540.7812805 + }, + { + "metric_key": "fdv_usd", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 82086984.65253562 + }, + { + "metric_key": "fdv_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 84554252.4744858 + }, + { + "metric_key": "fdv_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 142422829.40700644 + }, + { + "metric_key": "fdv_usd", + "origin_key": "imx", + "date": "2025-10-30", + "value": 1049651385.2254405 + }, + { + "metric_key": "fdv_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 3172768075.562919 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 50.028039464415485 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 22705.687694605796 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ink", + "date": "2025-10-30", + "value": 29164.53120434888 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "unichain", + "date": "2025-10-30", + "value": 116657.40696233256 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "linea", + "date": "2025-10-30", + "value": 448580.1767756503 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "starknet", + "date": "2025-10-30", + "value": 105114.05542758912 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "manta", + "date": "2025-10-30", + "value": 854.3787353857858 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "ethereum", + "date": "2025-10-30", + "value": 41728580.62782032 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mint", + "date": "2025-10-30", + "value": 2 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 833 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 107.76956793822558 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mode", + "date": "2025-10-30", + "value": 348.202689629943 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "scroll", + "date": "2025-10-30", + "value": 8497.070849038062 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "worldchain", + "date": "2025-10-30", + "value": 10062 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "swell", + "date": "2025-10-30", + "value": 2217 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 118667.41709185918 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 2186453.644597042 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "base", + "date": "2025-10-30", + "value": 4567070.325543418 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "polygon_zkevm", + "date": "2025-10-30", + "value": 222.88657066556038 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 93993.51827029655 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "blast", + "date": "2025-10-30", + "value": 808 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "soneium", + "date": "2025-10-30", + "value": 7853.655473750204 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "metis", + "date": "2025-10-30", + "value": 5193.39831988626 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "celo", + "date": "2025-10-30", + "value": 21468.87792028478 + }, + { + "metric_key": "app_fees_usd", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 1296.295329783126 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum_nova", + "date": "2025-10-30", + "value": 41498033.063673384 + }, + { + "metric_key": "tvl", + "origin_key": "arbitrum", + "date": "2025-10-30", + "value": 17257178120.301514 + }, + { + "metric_key": "tvl", + "origin_key": "base", + "date": "2025-10-30", + "value": 15086924355.120634 + }, + { + "metric_key": "tvl", + "origin_key": "celo", + "date": "2025-10-30", + "value": 375297886.1083966 + }, + { + "metric_key": "tvl", + "origin_key": "fraxtal", + "date": "2025-10-30", + "value": 204637844.89747858 + }, + { + "metric_key": "tvl", + "origin_key": "derive", + "date": "2025-10-30", + "value": 67695601.2703946 + }, + { + "metric_key": "tvl", + "origin_key": "gravity", + "date": "2025-10-30", + "value": 43027336.1875 + }, + { + "metric_key": "tvl", + "origin_key": "imx", + "date": "2025-10-30", + "value": 32426389.25 + }, + { + "metric_key": "tvl", + "origin_key": "ink", + "date": "2025-10-30", + "value": 338125001.54 + }, + { + "metric_key": "tvl", + "origin_key": "lisk", + "date": "2025-10-30", + "value": 89289645.74682617 + }, + { + "metric_key": "tvl", + "origin_key": "loopring", + "date": "2025-10-30", + "value": 21428816.74190989 + }, + { + "metric_key": "tvl", + "origin_key": "manta", + "date": "2025-10-30", + "value": 221236385.72974396 + }, + { + "metric_key": "tvl", + "origin_key": "mantle", + "date": "2025-10-30", + "value": 2117720828.9552944 + }, + { + "metric_key": "tvl", + "origin_key": "metis", + "date": "2025-10-30", + "value": 99201872.03440672 + }, + { + "metric_key": "tvl", + "origin_key": "mint", + "date": "2025-10-30", + "value": 1954526.3372802734 + }, + { + "metric_key": "tvl", + "origin_key": "mode", + "date": "2025-10-30", + "value": 129315628.1385448 + }, + { + "metric_key": "tvl", + "origin_key": "optimism", + "date": "2025-10-30", + "value": 3025812128.2102895 + }, + { + "metric_key": "tvl", + "origin_key": "taiko", + "date": "2025-10-30", + "value": 30497160.043905377 + }, + { + "metric_key": "tvl", + "origin_key": "zksync_era", + "date": "2025-10-30", + "value": 495756125.87750643 + }, + { + "metric_key": "tvl", + "origin_key": "zora", + "date": "2025-10-30", + "value": 12320014.1875 + }, + { + "metric_key": "gas_per_second", + "origin_key": "base", + "date": "2025-11-03", + "value": 25.008344876238425 + }, + { + "metric_key": "txcount", + "origin_key": "zora", + "date": "2025-11-03", + "value": 5714 + }, + { + "metric_key": "daa", + "origin_key": "zora", + "date": "2025-11-03", + "value": 1220 + }, + { + "metric_key": "aa_last7d", + "origin_key": "zora", + "date": "2025-11-03", + "value": 7154 + }, + { + "metric_key": "gas_per_second", + "origin_key": "zora", + "date": "2025-11-03", + "value": 0.029149644953703705 + }, + { + "metric_key": "txcount", + "origin_key": "mode", + "date": "2025-11-03", + "value": 243471 + }, + { + "metric_key": "daa", + "origin_key": "mode", + "date": "2025-11-03", + "value": 1235 + }, + { + "metric_key": "gas_per_second", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 0.1840932777199074 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mode", + "date": "2025-11-03", + "value": 4673 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mode", + "date": "2025-11-03", + "value": 1.3747823929398149 + }, + { + "metric_key": "txcount", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 20229 + }, + { + "metric_key": "daa", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 143 + }, + { + "metric_key": "aa_last7d", + "origin_key": "redstone", + "date": "2025-11-03", + "value": 395 + }, + { + "metric_key": "txcount", + "origin_key": "derive", + "date": "2025-11-03", + "value": 12990 + }, + { + "metric_key": "daa", + "origin_key": "derive", + "date": "2025-11-03", + "value": 33 + }, + { + "metric_key": "aa_last7d", + "origin_key": "derive", + "date": "2025-11-03", + "value": 50 + }, + { + "metric_key": "gas_per_second", + "origin_key": "derive", + "date": "2025-11-03", + "value": 0.5853688126157407 + }, + { + "metric_key": "txcount", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 24699 + }, + { + "metric_key": "daa", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 28 + }, + { + "metric_key": "aa_last7d", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 62 + }, + { + "metric_key": "gas_per_second", + "origin_key": "orderly", + "date": "2025-11-03", + "value": 0.2179526471412037 + }, + { + "metric_key": "txcount", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 2028588 + }, + { + "metric_key": "daa", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 69159 + }, + { + "metric_key": "aa_last7d", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 419635 + }, + { + "metric_key": "gas_per_second", + "origin_key": "worldchain", + "date": "2025-11-03", + "value": 10.611701767199074 + }, + { + "metric_key": "txcount", + "origin_key": "mint", + "date": "2025-11-03", + "value": 1893 + }, + { + "metric_key": "daa", + "origin_key": "mint", + "date": "2025-11-03", + "value": 457 + }, + { + "metric_key": "aa_last7d", + "origin_key": "mint", + "date": "2025-11-03", + "value": 1005 + }, + { + "metric_key": "gas_per_second", + "origin_key": "mint", + "date": "2025-11-03", + "value": 0.025631544351851852 + }, + { + "metric_key": "gas_per_second", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 0.9458835340162037 + }, + { + "metric_key": "txcount", + "origin_key": "ink", + "date": "2025-11-03", + "value": 785428 + }, + { + "metric_key": "daa", + "origin_key": "ink", + "date": "2025-11-03", + "value": 56270 + }, + { + "metric_key": "aa_last7d", + "origin_key": "ink", + "date": "2025-11-03", + "value": 85219 + }, + { + "metric_key": "gas_per_second", + "origin_key": "ink", + "date": "2025-11-03", + "value": 4.594417315127315 + }, + { + "metric_key": "txcount", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 3274395 + }, + { + "metric_key": "daa", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 74128 + }, + { + "metric_key": "aa_last7d", + "origin_key": "soneium", + "date": "2025-11-03", + "value": 133256 + }, + { + "metric_key": "txcount", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 30592 + }, + { + "metric_key": "daa", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 466 + }, + { + "metric_key": "aa_last7d", + "origin_key": "fraxtal", + "date": "2025-11-03", + "value": 1347 + } + ], + "timestamp": 1762449885098 +} \ No newline at end of file diff --git a/src/data/mocks/growThePieBlockspace.json b/src/data/mocks/growThePieBlockspace.json new file mode 100644 index 00000000000..b07f8aee5c6 --- /dev/null +++ b/src/data/mocks/growThePieBlockspace.json @@ -0,0 +1,54 @@ +{ + "value": { + "arbitrum": { + "nft": 0.0011931330734446012, + "defi": 0.30724698622190927, + "social": 0.0010530625060113602, + "token_transfers": 0.09275118437377541, + "unlabeled": 0.2535931202218142 + }, + "base": { + "nft": 0.009621881825410676, + "defi": 0.22435923907182193, + "social": 0.002218259430476889, + "token_transfers": 0.04235514342859865, + "unlabeled": 0.2972060149460583 + }, + "optimism": { + "nft": 0.00007714326154248541, + "defi": 0.11433537079352597, + "social": 0.0006887754241014888, + "token_transfers": 0.061577810693058066, + "unlabeled": 0.1989198054532141 + }, + "zksync_era": { + "nft": 0.0002989924484917186, + "defi": 0.08264144370026745, + "social": 0.0001965886944194499, + "token_transfers": 0.4678859874051187, + "unlabeled": 0.19170741143319409 + }, + "linea": { + "nft": 0.0002246742238050097, + "defi": 0.2842617219737186, + "social": 0.020438755425607056, + "token_transfers": 0.3455833364540083, + "unlabeled": 0.1488744401394946 + }, + "scroll": { + "nft": 0.00036615780837575017, + "defi": 0.07972670169031183, + "social": 0.00007894928080757642, + "token_transfers": 0.07399036553369931, + "unlabeled": 0.18660668990641163 + }, + "unichain": { + "nft": 0.000033388310777878366, + "defi": 0.054910815827179195, + "social": 0, + "token_transfers": 0.0007683093914454001, + "unlabeled": 0.12147030201762585 + } + }, + "timestamp": 1762449886110 +} \ No newline at end of file diff --git a/src/data/mocks/growThePieBlockspaceData.json b/src/data/mocks/growThePieBlockspaceData.json deleted file mode 100644 index cf0a3b797d9..00000000000 --- a/src/data/mocks/growThePieBlockspaceData.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "arbitrum": { - "nft": 0.009984110324308348, - "defi": 0.2689309579893618, - "social": 0.013193695696229522, - "token_transfers": 0.07476154340049304, - "unlabeled": 0.38455596099648726 - }, - "base": { - "nft": 0.002593480219368002, - "defi": 0.16181484824754763, - "social": 0.002398326678753112, - "token_transfers": 0.013594959061503868, - "unlabeled": 0.39771564417346245 - }, - "optimism": { - "nft": 0.006050200017338907, - "defi": 0.11765117644545392, - "social": 0.0015029766506283954, - "token_transfers": 0.05259639266672885, - "unlabeled": 0.6267918657739237 - }, - "zksync_era": { - "nft": 0.038278961109126736, - "defi": 0.2259351484816336, - "social": 0.06337112937904162, - "token_transfers": 0.12729344240157583, - "unlabeled": 0.36825569044252693 - }, - "linea": { - "nft": 0.0038632595191378104, - "defi": 0.2517927233961308, - "social": 0.03613045257699356, - "token_transfers": 0.10803153398456405, - "unlabeled": 0.45033652616056297 - }, - "scroll": { - "nft": 0.0013058170066607409, - "defi": 0.2478282405353744, - "social": 0.005091328390763437, - "token_transfers": 0.11046016886464602, - "unlabeled": 0.4692471830612916 - }, - "mode": { - "nft": 0.0001816884900918849, - "defi": 0.34959814229232583, - "social": 0.0026860360526779923, - "token_transfers": 0.03147479525602267, - "unlabeled": 0.30152985600916654 - }, - "ink": { - "nft": 0.006050200017338907, - "defi": 0.11765117644545392, - "social": 0.0015029766506283954, - "token_transfers": 0.05259639266672885, - "unlabeled": 0.6267918657739237 - }, - "unichain": { - "nft": 0.006050200017338907, - "defi": 0.11765117644545392, - "social": 0.0015029766506283954, - "token_transfers": 0.05259639266672885, - "unlabeled": 0.6267918657739237 - } -} diff --git a/src/data/mocks/growThePieData.json b/src/data/mocks/growThePieData.json deleted file mode 100644 index 8f5bfd2cbe9..00000000000 --- a/src/data/mocks/growThePieData.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "txCount": { "value": 20113689, "timestamp": 1732561036299 }, - "txCostsMedianUsd": { - "value": 0.10252370826740381, - "timestamp": 1732561036299 - }, - "dailyTxCosts": { - "ethereum": 1.5642321147439395, - "arbitrum": 0.010201116846622714, - "gravity": 0.004178700263687191, - "optimism": 0.0027902374152419173, - "base": 0.007764349788577658, - "zksync_era": 0.019537763079284804, - "polygon_zkevm": 0.07562885045422585, - "zora": 0.009432662720468029, - "linea": 0.05821396831420389, - "mantle": 0.010820152133569856, - "scroll": 0.035543140792205316, - "starknet": 0.025402769983550386, - "metis": 0.0069948957204748925, - "blast": 0.007134756036862854, - "manta": 0.0003705215201380192, - "mode": 0.004033647940964035, - "taiko": 0.011915191008957854, - "redstone": 0.0018557582938633012, - "derive": 0.03414083342479006, - "orderly": 0.0010056552980039267, - "worldchain": 0.006684175070209207, - "ink": 0.000084959363439004, - "unichain": 0.000060453342918528 - }, - "activeAddresses": { - "mantle": 32493, - "scroll": 22191, - "loopring": 351, - "rhino": 1559, - "starknet": 9365, - "metis": 22629, - "blast": 22010, - "manta": 110254, - "mode": 2099, - "taiko": 147292, - "redstone": 316, - "derive": 26, - "orderly": 10, - "gravity": 67650, - "worldchain": 25225, - "ethereum": 395400, - "arbitrum": 412248, - "imx": 3349, - "optimism": 59747, - "base": 1026819, - "zksync_era": 47007, - "polygon_zkevm": 2708, - "zora": 18101, - "linea": 77067, - "ink": 92296, - "unichain": 49158 - } -} diff --git a/src/data/mocks/growThePieMasterData.json b/src/data/mocks/growThePieMaster.json similarity index 68% rename from src/data/mocks/growThePieMasterData.json rename to src/data/mocks/growThePieMaster.json index 7cbdbf5e5f2..73b6ccde48b 100644 --- a/src/data/mocks/growThePieMasterData.json +++ b/src/data/mocks/growThePieMaster.json @@ -1,32 +1,40 @@ { - "launchDates": { + "value": { "ethereum": "2015-07-30", "all-l2s": null, "arbitrum": "2021-08-31", + "arbitrum-nova": "2022-08-09", "base": "2023-07-13", "blast": "2024-02-29", + "celo": "2020-05-22", "derive": "2023-12-15", + "fraxtal": "2024-02-03", "gravity": "2024-08-13", "immutable-x": "2021-03-26", + "ink": "2024-12-07", "linea": "2023-07-12", + "lisk": "2024-11-12", "loopring": "2019-12-04", "manta": "2023-09-12", "mantle": "2023-07-14", "metis": "2021-11-19", + "mint": "2024-05-14", "mode": "2024-01-31", "multiple": null, "optimism": "2021-12-16", "orderly": "2024-01-22", + "plume": "2025-02-20", "polygon-zkevm": "2023-03-24", "redstone": "2024-05-01", - "rhino-fi": "2022-07-13", "scroll": "2023-10-17", + "soneium": "2025-01-14", "starknet": "2021-11-29", + "swell": "2024-12-19", "taiko": "2024-05-27", + "unichain": "2025-02-12", "worldchain": "2024-10-17", "zksync-era": "2023-03-24", - "zora": "2023-06-21", - "ink": "2024-12-07", - "unichain": "2025-02-12" - } -} + "zora": "2023-06-21" + }, + "timestamp": 1762449885126 +} \ No newline at end of file diff --git a/src/data/mocks/l2beatData.json b/src/data/mocks/l2beatData.json index cc0ad0ad4c0..aa42e7b2325 100644 --- a/src/data/mocks/l2beatData.json +++ b/src/data/mocks/l2beatData.json @@ -1,8810 +1,17634 @@ { - "success": true, - "data": { + "value": { "chart": { - "types": ["timestamp", "native", "canonical", "external", "ethPrice"], - "data": [ - [1728518400, 12951959828.64, 14204896668.91, 7959907185.79, 2367.4463], - [1728540000, 13095797476.8, 14349993739.95, 8021137975.78, 2402.3308], - [1728561600, 13064721409.03, 14380101166.75, 8013415842.96, 2403.682], - [1728583200, 12773905140.3, 14084207609.29, 7910627060.18, 2345.8108], - [1728604800, 13028933205.11, 14291035037.03, 7988387880.45, 2383.5962], - [1728626400, 13065020190.76, 14405682133.06, 8025243608.47, 2405.225], - [1728648000, 13190400893.25, 14562683977.4, 8040207494.94, 2420.7122], - [1728669600, 13502604881.53, 14712192165.01, 8096222950.38, 2450.921], - [1728691200, 13417493226, 14664999489.02, 8093424933.46, 2437.9148], - [1728712800, 13477041742.8, 14709922139.83, 8116234911.27, 2446.363], - [1728734400, 13580677817.47, 14786962819.99, 8142265642.5, 2451.5427], - [1728756000, 13643907767.66, 14903686702.72, 8183052244.73, 2478.5085], - [1728777600, 13684965650.04, 14918744980.27, 8175083772.69, 2476.3105], - [1728799200, 13628318378.86, 14864141443.55, 8141600458.7, 2465.5098], - [1728820800, 13614314832.66, 14808842661.52, 8124397606.39, 2462.736], - [1728842400, 13579954580.97, 14710820749.11, 8090682796.86, 2445.1328], - [1728864000, 13829234183.53, 14849911944.53, 8148869484.35, 2467.7925], - [1728885600, 14004408200.93, 15206416135.99, 8269536339.64, 2529.2527], - [1728907200, 14033277259.84, 15304451823.56, 8296490080.84, 2539.4517], - [1728928800, 14207287727.94, 15681487420.25, 8400270427.24, 2631.7126], - [1728950400, 14274296190.56, 15750937243.39, 8415911387.3, 2625.893], - [1728972000, 14127853680.68, 15593838551.28, 8356411055.92, 2594.3372], - [1728993600, 13924892899.65, 15557077617.47, 8324396882.55, 2590.1865], - [1729015200, 14006028781.24, 15570011070.52, 8338150056.36, 2590.4836], - [1729036800, 14015343997.39, 15601125157.87, 8356558139.41, 2600.089], - [1729058400, 14047792173.57, 15675240723.4, 8379319170.5, 2616.56], - [1729080000, 14029665899.67, 15773256455.53, 8404997351.78, 2631.1611], - [1729101600, 13864183328.73, 15701919597.24, 8352450670.63, 2620.2869], - [1729123200, 13877517952.48, 15687524825.03, 8350147873.82, 2611.7002], - [1729144800, 13842060193.89, 15758485421.69, 8347937830.48, 2627.3882], - [1729166400, 13620757198.87, 15599308611.8, 8304198137.42, 2600.8545], - [1729188000, 13574174352.9, 15530165656.94, 8275435535.99, 2588.0361], - [1729209600, 13578140211.93, 15637417380.41, 8303291974.57, 2605.282], - [1729231200, 13745401904.01, 15767697156.13, 8327575771.38, 2626.0825], - [1729252800, 13799766404.6, 15758395820.84, 8307245114.85, 2623.7876], - [1729274400, 13884956371.8, 15969623954.58, 8331341677.23, 2650.39], - [1729296000, 13896776504.28, 15890193486.23, 8326447994.61, 2638.784], - [1729317600, 13944666490.25, 15949886918.59, 8300945494.82, 2644.0955], - [1729339200, 13750249108.56, 15882600704.8, 8203677556.43, 2634.3792], - [1729360800, 13816587457.65, 15911460235.98, 8196434544.09, 2639.9966], - [1729382400, 13867845228.16, 15969250986.06, 8220501043.46, 2649.884], - [1729404000, 13819076698.44, 15895580380.84, 8195023290, 2640.5793], - [1729425600, 13932209844.88, 16006781822.46, 8227217964.6, 2652.1733], - [1729447200, 14205131946.54, 16202545761.86, 8293342761.45, 2700.5435], - [1729468800, 14333872204.65, 16421310869.68, 8367793376.13, 2747.2358], - [1729490400, 14496731623.14, 16481337758.54, 8320219427.96, 2734.4548], - [1729512000, 14300995213.79, 16397478539.74, 8274064383.97, 2708.1453], - [1729533600, 14091466558.24, 16211844951.57, 8240630674.67, 2668.5422], - [1729555200, 14071934707.83, 16196929292.67, 8225906889.04, 2665.8013], - [1729576800, 14166694399.73, 16167300699.65, 8230059776.36, 2650.3704], - [1729598400, 14058547153.36, 16053935900.83, 8191994289.32, 2637.4436], - [1729620000, 13956776854.66, 16052886375.15, 8182368565.4, 2623.069], - [1729641600, 14188599069.07, 16098473349.65, 8165911808.76, 2619.4949], - [1729663200, 14087743989.91, 16050112531.08, 8114275980.75, 2616.9429], - [1729684800, 13919739174.24, 15832137489.85, 8034850777.7, 2578.4756], - [1729706400, 13719908669.58, 15390768737.24, 7890588140.49, 2474.3438], - [1729728000, 13887503772.61, 15640123559.44, 7953159578.28, 2520.1948], - [1729749600, 14036728692.52, 15832510825.41, 8008936395.73, 2557.3833], - [1729771200, 13881590318.64, 15680084503.08, 7963403536.19, 2527.0159], - [1729792800, 13909174864.25, 15669957097.36, 7969115436.84, 2520.8865], - [1729814400, 13976032364.85, 15784653035.87, 7994553728.93, 2536.0872], - [1729836000, 13772811770.3, 15608433568.59, 7867937204.12, 2492.5723], - [1729857600, 13914626681.42, 15872907219.78, 7932245048.07, 2544.3616], - [1729879200, 13622893411.02, 15472091073.26, 7843607902.72, 2458.0056], - [1729900800, 13117871342.29, 15184126738.5, 7670923500.28, 2429.0076], - [1729922400, 13314509072.1, 15396730500.3, 7711792179.32, 2463.8987], - [1729944000, 13313960529.28, 15440685481.31, 7715829031.8, 2473.0496], - [1729965600, 13223176277.33, 15460516089.8, 7698032062.57, 2475.2563], - [1729987200, 13290860176.57, 15471100900.85, 7704398359.37, 2476.5178], - [1730008800, 13380162799.09, 15476100285.57, 7711903283.46, 2477.3728], - [1730030400, 13307256932, 15422649802.53, 7703152940.48, 2466.738], - [1730052000, 13445491806.37, 15564958683.98, 7708074844.43, 2491.597], - [1730073600, 13499956120.1, 15638378775.45, 7800059233.71, 2504.548], - [1730095200, 13310301044.14, 15476441142.36, 7749334602.1, 2483.3093], - [1730116800, 13539194436.81, 15642683616.53, 7760494423.71, 2518.512], - [1730138400, 13337101340.73, 15536771717.88, 7718297991.16, 2508.1716], - [1730160000, 13661417715.38, 15844719421.5, 7801616117.79, 2567.0889], - [1730181600, 13917431376, 16151006990.49, 7930768913.48, 2617.615], - [1730203200, 14026877447.77, 15989019893.36, 7892192221.36, 2621.3145], - [1730224800, 14207384498.67, 16215971894.92, 7974648589.75, 2654.824], - [1730246400, 14130708578.98, 16114685352.98, 7939885276.11, 2634.8196], - [1730268000, 14198767100.71, 16245893588.06, 7989185395.66, 2667.4897], - [1730289600, 14150871673.54, 16188608242.77, 7967315519.38, 2664.247], - [1730311200, 14314723349.67, 16262049559.29, 7981624475.84, 2673.8374], - [1730332800, 14257892244.58, 16228378874.29, 7963803361.93, 2659.292], - [1730354400, 14134675536.17, 16156222980.69, 7938579506.18, 2648.538], - [1730376000, 14006735793.73, 16086268806.48, 7916486590.46, 2637.4705], - [1730397600, 13716100838.27, 15566421670.72, 7753744228.1, 2533.3086], - [1730419200, 13643097393.57, 15529118987.07, 7737502169.43, 2524.1892], - [1730440800, 13642544808.23, 15424728039.69, 7731067398.83, 2508.583], - [1730462400, 13627525114.38, 15491858876.06, 7734722333.06, 2515.5898], - [1730484000, 13571568591.14, 15435681290.31, 7724786836.94, 2505.493], - [1730505600, 13436363934.3, 15455615636.02, 7739035382.82, 2511.9712], - [1730527200, 13421820281.25, 15461125197.1, 7732243634.41, 2511.6636], - [1730548800, 13356619090.66, 15410516412.38, 7719343486.51, 2501.452], - [1730570400, 13114253774.69, 15294254497.51, 7674744847.99, 2481.641], - [1730592000, 13148725614.25, 15343808471.67, 7691201434.35, 2495.211], - [1730613600, 12939699657.92, 15079726280.44, 7607871393.5, 2444.1428], - [1730635200, 12844538785.63, 15110474865.93, 7602555647.91, 2455.5056], - [1730656800, 12786732211.08, 15014392454.97, 7580893712.59, 2447.496], - [1730678400, 12870819200.59, 15092592347.63, 7596096474.08, 2455.0935], - [1730700000, 12829982545.42, 15132933982.9, 7611057226.46, 2469.1675], - [1730721600, 12858861481.33, 15014437255.74, 7625759106.06, 2465.7195], - [1730743200, 12649940332.85, 14756314956.47, 7439052319.96, 2423.2554], - [1730764800, 12613174379.33, 14671996089.14, 7401430085.06, 2403.1309], - [1730786400, 12791724993, 14625845554.46, 7444874656.94, 2426.5466], - [1730808000, 12811657717.14, 14671603525.6, 7464061125, 2437.2532], - [1730829600, 13025495424.09, 14817857161.52, 7502610506.19, 2454.4302], - [1730851200, 13041376489.29, 14738322521.53, 7486483441.16, 2429.8835], - [1730872800, 13661872381.87, 15630944893.67, 7769672699.95, 2596.2], - [1730894400, 13782001986.52, 15783565895.35, 7823472561.17, 2632.2576], - [1730916000, 13869674715.62, 15916875383.5, 7859451889.51, 2662.7754], - [1730937600, 14168521592.17, 16213817377.6, 7965612458.15, 2717.5369], - [1730959200, 14436062299.81, 16742403930.19, 8114888653.54, 2830.3967], - [1730980800, 14194731770.95, 16638150170.69, 8089228688.27, 2803.5923], - [1731002400, 14250801406.12, 16899147395.07, 8146670589.05, 2863.1216], - [1731024000, 14288993562.58, 17072568168.93, 8210550855.16, 2900.4697], - [1731045600, 14224947764.37, 17131350284.53, 8243404625.99, 2921.8801], - [1731067200, 14170905898.92, 17147462607.42, 8249667108.79, 2916.8357], - [1731088800, 14100823490.19, 17111046170.05, 8253816867.59, 2920.2454], - [1731110400, 14237204512.32, 17357339761.06, 8332214539.47, 2969.0496], - [1731114000, 14303149659.88, 17430869478.49, 8353255592.89, 2985.7795] - ] - } - }, - "projects": { - "arbitrum": { - "id": "arbitrum", - "name": "Arbitrum One", - "slug": "arbitrum", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "Nitro" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "WasmVM" - }, - { - "category": "Other", - "name": "Governance" - }, - { - "category": "Other", - "name": "L3HostChain" - }, - { - "category": "VM", - "name": "EVM" - } + "types": [ + "timestamp", + "native", + "canonical", + "external", + "ethPrice" ], - "tvs": { - "breakdown": { - "total": 14519913133.67, - "ether": 4387357086.39, - "stablecoin": 4802469953.21, - "associated": 2367575309.09 - }, - "associatedTokens": ["ARB"], - "change7d": 0.0773180163756924 - }, - "stage": "Stage 1", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "warning", - "description": "Fraud proofs allow 14 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "7d", - "sentiment": "warning", - "warning": { - "value": "The Security Council can upgrade with no delay.", - "sentiment": "bad" - }, - "description": "Non-emergency upgrades are initiated on L2 and go through a 8d delay. Since there is a 1d delay to force a tx (forcing the inclusion in the following state update), users have only 7d to exit. \n \n If users post a tx after that time, they would only be able to self propose a state root 12d 17h after the last state root was proposed and then wait for the 6d 8h challenge window, while the upgrade would be confirmed just after the 6d 8h challenge window and the 3d L1 timelock." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "base": { - "id": "base", - "name": "Base", - "slug": "base", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Other", - "name": "L3HostChain" - } - ], - "tvs": { - "breakdown": { - "total": 8612500120.84, - "ether": 2758347738.64, - "stablecoin": 3582063074.24, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.089218876103043 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "good", - "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." - } - ] - }, - "optimism": { - "id": "optimism", - "name": "OP Mainnet", - "slug": "optimism", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Other", - "name": "L3HostChain" - }, - { - "category": "Other", - "name": "Governance" - } + "data": [ + [ + 1759860000, + 12402142902.47348, + 24609384720.84026, + 21296756711.074024, + 4479.022 + ], + [ + 1759881600, + 12309039942.562931, + 24497525513.88835, + 21234315829.83149, + 4454.3286 + ], + [ + 1759903200, + 12252941796.114105, + 24257922314.947674, + 21293932960.71846, + 4436.4395 + ], + [ + 1759924800, + 12392980441.348637, + 24523295984.06583, + 21393205001.125374, + 4488.339 + ], + [ + 1759946400, + 12777097216.0952, + 24928764463.99851, + 21517606719.708244, + 4534.9277 + ], + [ + 1759968000, + 12717044132.246098, + 24839150410.18888, + 21498946103.946075, + 4527.578 + ], + [ + 1759989600, + 12543003880.030003, + 24520376900.487656, + 21371664567.01666, + 4454.838 + ], + [ + 1760011200, + 12356345614.179768, + 24138353001.762444, + 21246103563.514496, + 4373.977 + ], + [ + 1760032800, + 12320337121.909767, + 23860880716.91825, + 21161965913.446175, + 4320.6567 + ], + [ + 1760054400, + 12456864915.523598, + 24059732581.67727, + 21201685345.180244, + 4368.6494 + ], + [ + 1760076000, + 12613794700.765549, + 24228515374.18396, + 21223525144.979126, + 4368.2144 + ], + [ + 1760097600, + 12613480375.196877, + 24125123674.2681, + 21245063442.453575, + 4346.098 + ], + [ + 1760119200, + 12069241096.616879, + 23034403836.592846, + 20867697920.41333, + 4095.0056 + ], + [ + 1760140800, + 10287205225.833284, + 20871356201.411823, + 20418214889.264526, + 3835.6328 + ], + [ + 1760162400, + 10198342586.191095, + 20926917407.681076, + 20484646693.00686, + 3797.6367 + ], + [ + 1760184000, + 10380863487.519066, + 21030000927.108818, + 20614250588.43763, + 3838.1624 + ], + [ + 1760205600, + 10301621318.630394, + 20848506361.927174, + 20594143461.257217, + 3830.0144 + ], + [ + 1760227200, + 9985854992.26055, + 20433655112.522495, + 20537281080.251053, + 3747.457 + ], + [ + 1760248800, + 10129129468.623674, + 20646623173.58381, + 20600367631.191902, + 3813.2107 + ], + [ + 1760270400, + 10111979177.730392, + 20751271317.88664, + 20604398880.667057, + 3823.4917 + ], + [ + 1760292000, + 10792149831.66469, + 22243819620.55903, + 20980617737.879784, + 4132.346 + ], + [ + 1760313600, + 10768388639.182346, + 22314809464.603893, + 21001236054.268414, + 4159.7295 + ], + [ + 1760335200, + 10754201285.726486, + 22165452088.54268, + 20973819132.224674, + 4132.77 + ], + [ + 1760356800, + 10755769566.720081, + 22040897352.00934, + 20999290879.878197, + 4077.7185 + ], + [ + 1760378400, + 10896696398.457111, + 22316692731.39094, + 21138036788.285027, + 4220.1006 + ], + [ + 1760400000, + 11089473267.286644, + 22421899898.774567, + 21177502028.748005, + 4246.2173 + ], + [ + 1760421600, + 10594022060.683205, + 21624291138.566875, + 20922935310.18893, + 4072.188 + ], + [ + 1760443200, + 10442308013.226955, + 21160225419.11242, + 20727504659.648434, + 3974.7117 + ], + [ + 1760464800, + 10725546203.073986, + 21749996973.204254, + 20848732900.42522, + 4115.9604 + ], + [ + 1760486400, + 10733280399.63094, + 21792369191.944675, + 20862474827.502243, + 4128.8887 + ], + [ + 1760508000, + 10767742406.596643, + 21724424782.794827, + 20772235002.15217, + 4112.159 + ], + [ + 1760529600, + 10719311009.099298, + 21706838143.997696, + 20773983677.113235, + 4102.7036 + ], + [ + 1760551200, + 10432766223.471252, + 21264286738.16948, + 20574890623.679573, + 3994.4353 + ], + [ + 1760572800, + 10295738457.101173, + 21160133355.537365, + 20477171202.302002, + 3983.1545 + ], + [ + 1760594400, + 10336194357.849533, + 21283353001.961334, + 20483687961.799538, + 3992.559 + ], + [ + 1760616000, + 10447955452.898127, + 21572997962.102913, + 20552549891.0481, + 4062.4043 + ], + [ + 1760637600, + 10129551467.870705, + 20967514600.935524, + 20095616920.888283, + 3921.066 + ], + [ + 1760659200, + 9980692355.58844, + 20840966651.327564, + 20002670248.528713, + 3893.756 + ], + [ + 1760680800, + 10010854443.617111, + 20857330403.381096, + 19948490098.917515, + 3900.6013 + ], + [ + 1760702400, + 9725917234.800549, + 20338395572.56125, + 19759512228.63151, + 3776.2131 + ], + [ + 1760724000, + 9821425102.267189, + 20560584776.85864, + 19790948115.288357, + 3818.5122 + ], + [ + 1760745600, + 9805253595.16469, + 20610475094.438824, + 19813578527.92665, + 3831.2441 + ], + [ + 1760767200, + 9845921542.972113, + 20763357221.67695, + 19816830934.246704, + 3866.7307 + ], + [ + 1760788800, + 9922174404.587425, + 20835643245.828773, + 19821491863.58687, + 3876.7144 + ], + [ + 1760810400, + 9896886785.079456, + 20851833184.67357, + 19756193942.57224, + 3889.0261 + ], + [ + 1760832000, + 9897136627.052269, + 20877770150.54408, + 19740310913.158485, + 3889.499 + ], + [ + 1760853600, + 9869705385.710548, + 20912310958.098557, + 19705071196.370323, + 3897.6855 + ], + [ + 1760875200, + 9997149689.820236, + 21120354393.826817, + 19748517673.73962, + 3923.7783 + ], + [ + 1760896800, + 10147681864.128363, + 21493732756.387238, + 19829061615.861183, + 3995.3928 + ], + [ + 1760918400, + 10086211429.061644, + 21426685726.889362, + 19785043635.476646, + 3982.356 + ], + [ + 1760940000, + 10313119243.782425, + 21827650940.14129, + 19898238271.94149, + 4066.6938 + ], + [ + 1760961600, + 10295668338.114613, + 21738041313.89712, + 19839885871.590202, + 4039.0063 + ], + [ + 1760983200, + 10168190355.945862, + 21435384629.097347, + 19768397713.317284, + 3951.366 + ], + [ + 1761004800, + 10252024829.025549, + 21545849262.642967, + 19832947394.177845, + 3980.0732 + ], + [ + 1761026400, + 9928044535.93055, + 20970116367.608414, + 19674204425.172974, + 3865.2278 + ], + [ + 1761048000, + 10054753675.24055, + 21144305256.89537, + 19689764042.573685, + 3893.592 + ], + [ + 1761069600, + 10429289471.056019, + 21747013664.15164, + 19921930395.55833, + 4019.7668 + ], + [ + 1761091200, + 9985107156.982502, + 21015811204.176525, + 19717264079.282772, + 3877.4873 + ], + [ + 1761112800, + 9902267235.080627, + 20944416523.10579, + 19691644254.831787, + 3862.2031 + ], + [ + 1761134400, + 9857684376.8968, + 20900883557.148613, + 19640982814.0191, + 3829.5112 + ], + [ + 1761156000, + 9812593027.361643, + 20802044843.01282, + 19575200953.717506, + 3801.3188 + ], + [ + 1761177600, + 9724203725.023909, + 20728137160.46405, + 19560185799.198635, + 3805.8818 + ], + [ + 1761199200, + 9824868213.659924, + 20957145858.942917, + 19590847957.491108, + 3848.5916 + ], + [ + 1761220800, + 9874343254.396095, + 21050578769.50338, + 19661583319.45554, + 3865.7864 + ], + [ + 1761242400, + 10128144727.237112, + 21255806010.239662, + 19731703250.849686, + 3917.679 + ], + [ + 1761264000, + 9996665501.877972, + 20965469240.799633, + 19653348634.53531, + 3855.842 + ], + [ + 1761285600, + 10183030684.139847, + 21441683729.077545, + 19792633584.523056, + 3978.1533 + ], + [ + 1761307200, + 10146847720.596643, + 21401110438.07422, + 19771443606.61406, + 3948.3591 + ], + [ + 1761328800, + 10128085077.95266, + 21177540234.94987, + 19693218017.013195, + 3891.921 + ], + [ + 1761350400, + 10297026482.657269, + 21392500274.299286, + 19760083331.870224, + 3933.2322 + ], + [ + 1761372000, + 10298891404.09383, + 21376793636.81854, + 19745687992.797974, + 3929.427 + ], + [ + 1761393600, + 10315703503.93633, + 21473734562.41848, + 19737974047.77394, + 3942.565 + ], + [ + 1761415200, + 10443392866.733128, + 21552610386.326378, + 19690195005.824036, + 3934.0847 + ], + [ + 1761436800, + 10513442049.04016, + 21621775001.958267, + 19702877290.7464, + 3954.0042 + ], + [ + 1761458400, + 10445347487.360863, + 21565996860.329216, + 19711651450.88515, + 3945.5764 + ], + [ + 1761480000, + 10696477862.964378, + 22055146621.016655, + 19808551033.69016, + 4042.5542 + ], + [ + 1761501600, + 10710000995.686644, + 22092352726.518444, + 19852010704.270416, + 4062.3645 + ], + [ + 1761523200, + 10877660054.174612, + 22549454204.058617, + 19965681959.066216, + 4161.591 + ], + [ + 1761544800, + 11079210303.741018, + 22834620221.028263, + 20092612719.22319, + 4231.91 + ], + [ + 1761566400, + 10869805339.963596, + 22457781832.992897, + 19654560649.443832, + 4160.4536 + ], + [ + 1761588000, + 10928864159.27086, + 22637658423.44664, + 19391745176.01718, + 4221.457 + ], + [ + 1761609600, + 10691132827.686329, + 22215582204.302002, + 19327396367.614967, + 4123.206 + ], + [ + 1761631200, + 10568655549.282265, + 22012141878.11412, + 19255974183.599663, + 4074.3713 + ], + [ + 1761652800, + 10702409599.580074, + 22246655832.055508, + 19292572254.158894, + 4110.3604 + ], + [ + 1761674400, + 10754715470.252264, + 22298219516.228123, + 19308947557.033394, + 4141.283 + ], + [ + 1761696000, + 10533361791.888044, + 21702647962.02584, + 19077575649.23832, + 3982.3127 + ], + [ + 1761717600, + 10541858132.052816, + 21801503128.09233, + 19088514730.94429, + 4027.104 + ], + [ + 1761739200, + 10626606179.958595, + 21863044154.855003, + 19059398781.289856, + 4013.4922 + ], + [ + 1761760800, + 10601002515.064373, + 21855868635.254467, + 19065741548.692493, + 4007.2078 + ], + [ + 1761782400, + 10443309181.712189, + 21443359033.67887, + 18874938504.65747, + 3897.3594 + ], + [ + 1761804000, + 10461490971.185156, + 21487957348.137794, + 18880290444.953125, + 3921.5718 + ], + [ + 1761825600, + 10343712169.634377, + 21281916350.368492, + 18836197713.872887, + 3884.4504 + ], + [ + 1761847200, + 9870291894.932344, + 20575487061.493656, + 18662881859.14531, + 3762.883 + ], + [ + 1761868800, + 9965064475.299221, + 20702361824.407135, + 18675084798.14042, + 3802.2954 + ], + [ + 1761890400, + 10130724703.493746, + 20906951802.40969, + 18749461032.259766, + 3848.1704 + ], + [ + 1761912000, + 10209519761.08031, + 21057693150.861874, + 18827847107.57739, + 3873.2192 + ], + [ + 1761933600, + 10040712403.681566, + 20816829680.208847, + 18825277835.872917, + 3827.3625 + ], + [ + 1761955200, + 10127472572.184221, + 20903950759.535686, + 18817237670.990814, + 3847.298 + ], + [ + 1761976800, + 10224666562.133125, + 21169160343.12101, + 18849907193.419746, + 3855.8171 + ], + [ + 1761998400, + 10335044347.127344, + 21345193270.136955, + 18897046439.426476, + 3874.0298 + ], + [ + 1762020000, + 10411196675.559063, + 21319260666.610855, + 18911344355.604187, + 3864.9404 + ], + [ + 1762041600, + 10503161108.8125, + 21396455492.910446, + 18913069080.929314, + 3872.926 + ], + [ + 1762063200, + 10544830922.519688, + 21407724798.871502, + 18948258814.984367, + 3899.6619 + ], + [ + 1762084800, + 10669565571.63336, + 21400143730.839607, + 18979861998.288586, + 3891.2358 + ], + [ + 1762106400, + 10410483382.37922, + 21173509914.616814, + 18917724612.472916, + 3853.776 + ], + [ + 1762128000, + 10512126022.217968, + 21419230898.910774, + 18983503994.923523, + 3910.0947 + ], + [ + 1762149600, + 9938091770.260235, + 20529459816.658646, + 18731221507.487946, + 3730.704 + ], + [ + 1762171200, + 9829650230.666407, + 20425025995.942043, + 18648462841.72573, + 3713.365 + ], + [ + 1762192800, + 9685601407.825, + 20220489899.188313, + 18613694947.32462, + 3669.936 + ], + [ + 1762214400, + 9506874399.873438, + 19881698673.10956, + 18528453867.75865, + 3600.7156 + ], + [ + 1762236000, + 9349105533.047188, + 19451770274.95487, + 18432786455.159306, + 3509.6707 + ], + [ + 1762257600, + 9402533738.208906, + 19606833636.576237, + 18442904341.815994, + 3526.1672 + ], + [ + 1762279200, + 9140965570.429296, + 19005796470.116264, + 18311457177.15489, + 3370.467 + ], + [ + 1762300800, + 9211557807.419922, + 18870359102.818794, + 18373912382.06725, + 3296.7437 + ], + [ + 1762322400, + 9258366088.58211, + 18970355619.259975, + 18428920255.69262, + 3326.3865 + ], + [ + 1762344000, + 9298415201.170078, + 18938249728.198463, + 18612343323.733574, + 3321.0867 + ], + [ + 1762365600, + 9702204414.736563, + 19385080023.092747, + 18654374358.441296, + 3434.2227 + ], + [ + 1762387200, + 9700010346.599531, + 19406991497.58055, + 18649844238.077023, + 3425.9697 + ], + [ + 1762408800, + 9495713252.97336, + 19160436192.170395, + 18569524876.548756, + 3383.7422 + ], + [ + 1762430400, + 9449780365.718634, + 19216408031.754482, + 18546368236.65502, + 3398.9805 + ], + [ + 1762444800, + 9258329980.341211, + 18807431311.894146, + 18451540759.48387, + 3297.205 + ] ], - "tvs": { - "breakdown": { - "total": 6196279162.59, - "ether": 1680718678.59, - "stablecoin": 1191671605.42, - "associated": 2002120935.2 - }, - "associatedTokens": ["OP"], - "change7d": 0.0699202061201485 - }, - "stage": "Stage 1", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "good", - "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." - } - ] + "syncedUntil": 1762444800 }, - "mantle": { - "id": "mantle", - "name": "Mantle", - "slug": "mantle", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + "projects": { + "arbitrum": { + "id": "arbitrum", + "name": "Arbitrum One", + "slug": "arbitrum", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "WasmVM", + "type": "VM", + "name": "WasmVM", + "description": "This project uses a WebAssembly Virtual Machine to run its smart contracts", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "WasmVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "Nitro", + "type": "Stack", + "name": "Built on Arbitrum Nitro", + "description": "The project is built on Arbitrum Nitro", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Governance", + "type": "Other", + "name": "Governance", + "description": "This project features token voting", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Governance" + } + }, + { + "id": "L3HostChain", + "type": "Other", + "name": "L3 Host Chain", + "description": "This project serves as a host chain for L3s", + "action": { + "type": "selfScalingFilter", + "id": "hostChain" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "10d", + "sentiment": "warning", + "warning": { + "value": "The Security Council can upgrade with no delay.", + "sentiment": "bad" + }, + "description": "Non-emergency upgrades are initiated on L2 and go through a 8d delay on L2 and a 3d delay on L1. Since there is a 1d delay to force a tx (forcing the inclusion in the following state update), users have 10d to exit." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 15869066240, + "native": 2374086802.4521484, + "canonical": 4588843065.852615, + "external": 8906135767.217407, + "ether": 3556765385.8215246, + "stablecoin": 8578385047.508033, + "btc": 981821287.125, + "other": 2746584161.497606, + "rwaRestricted": 0, + "rwaPublic": 5509753.570007324, + "associated": 1419313792 + }, + "change7d": -0.05569855396455692, + "associatedTokens": [ + { + "symbol": "ARB", + "icon": "https://coin-images.coingecko.com/coins/images/16547/large/arb.jpg?1721358242" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 1775655355.27, - "ether": 1000829476.79, - "stablecoin": 346033277.24, - "associated": 206593370.7 - }, - "associatedTokens": ["MNT"], - "change7d": 0.153636009521903 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely fully on data that is NOT published on chain. Mantle DA contracts are forked from EigenDA with significant modifications, most importantly removal of slashing conditions. DA fraud proof mechanism is not live yet." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "blast": { - "id": "blast", - "name": "Blast", - "slug": "blast", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "base": { + "id": "base", + "name": "Base Chain", + "slug": "base", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "L3HostChain", + "type": "Other", + "name": "L3 Host Chain", + "description": "This project serves as a host chain for L3s", + "action": { + "type": "selfScalingFilter", + "id": "hostChain" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable. Upgrades need to be approved by 3 parties: Base multisig, the Op Foundation Operations multisig, and the Base Security Council." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 13711469568, + "native": 5075399795.671875, + "canonical": 3346415049.932264, + "external": 5289657278.9375, + "ether": 3237309671.819375, + "stablecoin": 4462433866.16249, + "btc": 2568803126.110042, + "other": 3442925460.449732, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.06432788707569026, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 1464031435.75, - "ether": 1056445834.33, - "stablecoin": 197270866.46, - "associated": 186283266.53 - }, - "associatedTokens": ["BLAST"], - "change7d": 0.115509463493146 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "scroll": { - "id": "scroll", - "name": "Scroll", - "slug": "scroll", - "type": "layer2", - "category": "ZK Rollup", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" + }, + "polygon-pos": { + "id": "polygon-pos", + "name": "Polygon PoS", + "slug": "polygon-pos", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone. In Polygon PoS, the sequencers network corresponds to the PoS validators network, which is composed of 104 members." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "PoS network", + "sentiment": "warning", + "description": "Data is guaranteed to be available by an external proof of stake network of validators. On Ethereum, DA is attested via signed block headers." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "warning", + "description": "The PoS network is composed of 104 validators. Blocks are included in the chain only if signed by 2/3+1 of the network stake. It's currently not possible to join the set if the validator cap is reached. The current validator cap is set to 105. In the event of a failure in reaching consensus, withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 3471824896, + "native": 0, + "canonical": 2588594929.078147, + "external": 883230208, + "ether": 424920952.9550781, + "stablecoin": 2055891150.0072067, + "btc": 260360567.98999023, + "other": 729789400.4383717, + "rwaRestricted": 0, + "rwaPublic": 863065.6875, + "associated": 433281502.13000107 + }, + "change7d": -0.038196636068016154, + "associatedTokens": [ + { + "symbol": "POL", + "icon": "/images/custom-tokens/polygon-ecosystem-token.png" + }, + { + "symbol": "MATIC", + "icon": "https://assets.coingecko.com/coins/images/4713/large/polygon.png?1698233745" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 1085270515.25, - "ether": 777698458.3, - "stablecoin": 52022651.78, - "associated": 135038048.13 - }, - "associatedTokens": ["SCR"], - "change7d": 0.0759531710709884 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "linea": { - "id": "linea", - "name": "Linea", - "slug": "linea", - "type": "layer2", - "category": "ZK Rollup", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Other", - "name": "L3HostChain" + }, + "optimism": { + "id": "optimism", + "name": "OP Mainnet", + "slug": "op-mainnet", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Governance", + "type": "Other", + "name": "Governance", + "description": "This project features token voting", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Governance" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 2638499584, + "native": 733722598.4375, + "canonical": 1295169920.1263912, + "external": 609607026.1394348, + "ether": 796533930.378067, + "stablecoin": 603839410.8571961, + "btc": 111672013.125, + "other": 1126454190.3430629, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 673804416 + }, + "change7d": -0.0838518680494259, + "associatedTokens": [ + { + "symbol": "OP", + "icon": "/images/custom-tokens/optimism.png" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 949499632.91, - "ether": 765004713.99, - "stablecoin": 46144671.61, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.149576490782338 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1. Unlike most ZK rollups, transaction data is posted instead of state diffs." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "zksync2": { - "id": "zksync2", - "name": "ZKsync Era", - "slug": "zksync-era", - "type": "layer2", - "category": "ZK Rollup", - "provider": "ZK Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Stack", - "name": "ZKStack" - }, - { - "category": "Other", - "name": "L3HostChain" - }, - { - "category": "Infra", - "name": "ElasticChain" + }, + "mantle": { + "id": "mantle", + "name": "Mantle", + "slug": "mantle", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EigenDA", + "type": "DA", + "name": "EigenDA", + "description": "This project is posting its data to EigenDA", + "action": { + "type": "publicDaHighlight", + "slug": "eigenda" + } + }, + { + "id": "OPSuccinct", + "type": "Stack", + "name": "Built on the OP Succinct stack", + "description": "The project is built on the OP Succinct stack" + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on EigenDA. Sequencer transaction data roots are not checked against the ServiceManager DA bridge data roots onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1880226944, + "native": 59504957.8125, + "canonical": 1430329125.053906, + "external": 390392881, + "ether": 572364697.2399902, + "stablecoin": 703243989.8496094, + "btc": 37074357, + "other": 539052999.7768064, + "rwaRestricted": 0, + "rwaPublic": 28490920, + "associated": 427158048 + }, + "change7d": -0.08341698841217005, + "associatedTokens": [ + { + "symbol": "MNT", + "icon": "https://assets.coingecko.com/coins/images/30980/large/token-logo.png?1696529819" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 917340067.71, - "ether": 308914649.32, - "stablecoin": 62102151.46, - "associated": 507685862.92 - }, - "associatedTokens": ["ZK"], - "change7d": 0.0939873183552358 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Enqueue via L1", - "sentiment": "warning", - "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencer cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencer censors or is down, it is so for everyone." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain (SD)", - "sentiment": "good", - "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 21h." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "warning", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." - } - ] - }, - "starknet": { - "id": "starknet", - "name": "Starknet", - "slug": "starknet", - "type": "layer2", - "category": "ZK Rollup", - "provider": "Starknet", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "CairoVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Infra", - "name": "SHARP" - }, - { - "category": "Other", - "name": "Governance" + }, + "lighter": { + "id": "lighter", + "name": "Lighter", + "slug": "lighter", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a transaction by submitting a request through L1. If the sequencer censors or is down for for more than 14d, users can use the exit hatch to withdraw their funds." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a zero knowledge proof of funds." + } + ], + "tvs": { + "breakdown": { + "total": 1176220288, + "native": 0, + "canonical": 1176220288, + "external": 0, + "ether": 0, + "stablecoin": 1176220288, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.018003347842126205, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 710326532.1, - "ether": 254598315.88, - "stablecoin": 78045589.92, - "associated": 337840813.07 - }, - "associatedTokens": ["STRK"], - "change7d": 0.130915571108154 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "Onchain (SD)", - "sentiment": "good", - "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "mantapacific": { - "id": "mantapacific", - "name": "Manta Pacific", - "slug": "mantapacific", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "linea": { + "id": "linea", + "name": "Linea", + "slug": "linea", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "L3HostChain", + "type": "Other", + "name": "L3 Host Chain", + "description": "This project serves as a host chain for L3s", + "action": { + "type": "selfScalingFilter", + "id": "hostChain" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Eventually (after 6 months of no finalized blocks) the Operator role becomes public, theoretically allowing anyone to post data." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1. Unlike most ZK rollups, transaction data is posted instead of state diffs." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. Eventually (after 6 months of no finalized blocks) the Operator role becomes public, theoretically allowing anyone to propose state with valid proofs." + } + ], + "tvs": { + "breakdown": { + "total": 1087436672, + "native": 14261040.15625, + "canonical": 569528996.6727321, + "external": 503646645.0352478, + "ether": 780724910.55, + "stablecoin": 87785596.81344604, + "btc": 21871946.278320312, + "other": 197054228.2224636, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 182378928 + }, + "change7d": -0.19395706821820813, + "associatedTokens": [ + { + "symbol": "LINEA", + "icon": "https://coin-images.coingecko.com/coins/images/68507/large/linea-logo.jpeg?1756025484" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 555645039.27, - "ether": 182838295.49, - "stablecoin": 27547813.67, - "associated": 276141427.33 - }, - "associatedTokens": ["MANTA"], - "change7d": 0.136510657414638 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "mode": { - "id": "mode", - "name": "Mode Network", - "shortName": "Mode", - "slug": "mode", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "zksync2": { + "id": "zksync2", + "name": "ZKsync Era", + "slug": "zksync-era", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + }, + { + "id": "Governance", + "type": "Other", + "name": "Governance", + "description": "This project features token voting", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Governance" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 721764928, + "native": 490831439.2578125, + "canonical": 199265553.81096458, + "external": 31667996.911132812, + "ether": 166806803.87982178, + "stablecoin": 58207985.557724, + "btc": 2954718.5, + "other": 493795482.0423641, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 489076704 + }, + "change7d": 0.5410399608644796, + "associatedTokens": [ + { + "symbol": "ZK", + "icon": "https://coin-images.coingecko.com/coins/images/38043/large/ZKTokenBlack.png?1718614502" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 344647264.2, - "ether": 49719116.99, - "stablecoin": 6679047.66, - "associated": 14317558.32 - }, - "associatedTokens": ["MODE"], - "change7d": 0.0989409975685549 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "metis": { - "id": "metis", - "name": "Metis Andromeda", - "shortName": "Metis", - "slug": "metis", - "type": "layer2", - "category": "Optimium", - "provider": "OVM", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "Fork", - "name": "OVM" + }, + "starknet": { + "id": "starknet", + "name": "Starknet", + "slug": "starknet", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "SN Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "CairoVM", + "type": "VM", + "name": "CairoVM", + "description": "This project uses the Cairo Virtual Machine to run its smart contracts and supports the Cairo programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "CairoVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "SNStack", + "type": "Stack", + "name": "Built on the SN Stack", + "description": "The project is built on the SN Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "SN Stack" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + }, + { + "id": "Governance", + "type": "Other", + "name": "Governance", + "description": "This project features token voting", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Governance" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Log via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 map, but can't force them. When users “complain” that their transaction is stuck on L1 and not picked up by the sequencer, the Security Council minority can bypass the sequencer by posting a state root that includes it." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "7d", + "sentiment": "warning", + "warning": { + "value": "The Security Council can upgrade with no delay.", + "sentiment": "bad" + }, + "description": "Standard upgrades are initiated on L1 and go through a 8d delay. In case users are censored, the Security Council minority can be alerted to enforce censorship resistance by submitting a new state root. This process is assumed to take 1d." + }, + { + "name": "Proposer Failure", + "value": "Security Council minority", + "sentiment": "warning", + "description": "Only the whitelisted proposer can update state roots on L1, so in the event of failure the withdrawals are frozen. The Security Council minority can be alerted to enforce censorship resistance because they are a permissioned Operator." + } + ], + "tvs": { + "breakdown": { + "total": 673150336, + "native": 3012747.25, + "canonical": 641645744.5178127, + "external": 28491912.15625, + "ether": 92887279.8675003, + "stablecoin": 144606350.06640625, + "btc": 122072469, + "other": 310571557.7401562, + "rwaRestricted": 0, + "rwaPublic": 3012747.25, + "associated": 272498368 + }, + "change7d": -0.03302177214137847, + "associatedTokens": [ + { + "symbol": "STRK", + "icon": "https://assets.coingecko.com/coins/images/26433/large/starknet.png?1696525507" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 326151746.16, - "ether": 12768832.2, - "stablecoin": 29328309.8, - "associated": 283798367.6 - }, - "associatedTokens": ["Metis"], - "change7d": 0.127963261958407 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Enqueue via L1", - "sentiment": "warning", - "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencer cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencer censors or is down, it is so for everyone." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External (MEMO)", - "sentiment": "bad", - "description": "Transaction data is kept in MEMO decentralized storage." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "fuel": { - "id": "fuel", - "name": "Fuel Ignition", - "slug": "fuel", - "type": "layer2", - "category": "Optimistic Rollup", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "FuelVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" + }, + "worldchain": { + "id": "worldchain", + "name": "World Chain", + "slug": "world", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Identity" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Alchemy", + "type": "RaaS", + "name": "Alchemy", + "description": "This project was deployed via the rollup-as-a-service provider Alchemy", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Alchemy" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 635493376, + "native": 0, + "canonical": 611000755.7200003, + "external": 24492652, + "ether": 26248218, + "stablecoin": 26832151.25, + "btc": 9566752, + "other": 572846286.4700003, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 572846272 + }, + "change7d": -0.013713923933199479, + "associatedTokens": [ + { + "symbol": "WLD", + "icon": "https://assets.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 312221249.25, - "ether": 189034104.91, - "stablecoin": 34625689.56, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.158758063821449 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "worldchain": { - "id": "worldchain", - "name": "World Chain", - "slug": "world", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "Identity"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Alchemy" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "katana": { + "id": "katana", + "name": "Katana", + "slug": "katana", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "Agglayer CDK", + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPSuccinct", + "type": "Stack", + "name": "Built on the OP Succinct stack", + "description": "The project is built on the OP Succinct stack" + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The Security Council can remove the delay on upgrades.", + "sentiment": "bad" + }, + "description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 505573344, + "native": 65324147.35000038, + "canonical": 199822252.15843824, + "external": 240426938.34000015, + "ether": 254807740.92000008, + "stablecoin": 95862252.9610939, + "btc": 54617730.80124998, + "other": 100285582.33609489, + "rwaRestricted": 0, + "rwaPublic": 30.829999923706055, + "associated": 0 + }, + "change7d": -0.10860188117487957, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 220075918.87, - "ether": 5006542.39, - "stablecoin": 9032698.38, - "associated": 203996074.86 - }, - "associatedTokens": ["WLD"], - "change7d": 0.648866305013397 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "real": { - "id": "real", - "name": "Re.al", - "slug": "real", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "RWA"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "unichain": { + "id": "unichain", + "name": "Unichain", + "slug": "unichain", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 432773216, + "native": 0, + "canonical": 238936917.98626304, + "external": 193836336.3125, + "ether": 274357671.6700072, + "stablecoin": 112475888.765625, + "btc": 37759688.5, + "other": 8180005.363130808, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 3043405.25 + }, + "change7d": -0.15408025945229176, + "associatedTokens": [ + { + "symbol": "UNI", + "icon": "https://assets.coingecko.com/coins/images/12504/large/uni.jpg?1696512319" + } + ] + } + }, + "ink": { + "id": "ink", + "name": "Ink", + "slug": "ink", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 428729376, + "native": 0, + "canonical": 125405473.41, + "external": 303323904, + "ether": 125405472, + "stablecoin": 124662129, + "btc": 178661776, + "other": 0.4099999964237213, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.2915594447538914, + "associatedTokens": [] + } + }, + "celo": { + "id": "celo", + "name": "Celo", + "slug": "celo", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EigenDA", + "type": "DA", + "name": "EigenDA", + "description": "This project is posting its data to EigenDA", + "action": { + "type": "publicDaHighlight", + "slug": "eigenda" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "MigratedFromL1", + "type": "Other", + "name": "Migrated from L1 to Ethereum L2", + "description": "This project has migrated from being a standalone L1 blockchain to an Ethereum L2", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Migrated from L1 to Ethereum L2" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Although the OP stack fraud proof system is deployed, it assumes by default that data was made available. During a potential data withholding attack, it is impossible to prove a malicious state root." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on EigenDA. The sequencer is publishing data to EigenDA v2. Sequencer transaction data roots are not checked against the DACert Verifier onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 356159040, + "native": 299926164.328125, + "canonical": 10091658.475740965, + "external": 46141210.953125, + "ether": 9013126, + "stablecoin": 209949897.625, + "btc": 1013446.375, + "other": 136166600.11734253, + "rwaRestricted": 0, + "rwaPublic": 15963.6396484375, + "associated": 129205936 + }, + "change7d": -0.01836214561388827, + "associatedTokens": [ + { + "symbol": "CELO", + "icon": "https://coin-images.coingecko.com/coins/images/11090/large/InjXBNx9_400x400.jpg?1696511031" + } + ] + } + }, + "edgex": { + "id": "edgex", + "name": "EdgeX", + "slug": "edgex", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "SN Stack", + "StarkEx" + ], + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "CairoVM", + "type": "VM", + "name": "CairoVM", + "description": "This project uses the Cairo Virtual Machine to run its smart contracts and supports the Cairo programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "CairoVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "StarkEx", + "type": "Stack", + "name": "StarkEx", + "description": "This project was deployed utilizing the StarkEx technology from StarkWare", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "StarkEx" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a trade or a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for 7d, users can use the exit hatch to withdraw their funds. Users are required to find a counterparty for the trade by out of system means." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/5 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. Positions will be closed using the average price from the last batch state update." + } + ], + "tvs": { + "breakdown": { + "total": 284501984, + "native": 0, + "canonical": 284501984, + "external": 0, + "ether": 0, + "stablecoin": 284501984, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.21835979783642046, + "associatedTokens": [] + } + }, + "bob": { + "id": "bob", + "name": "BOB", + "slug": "bob", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Bitcoin DApps" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPKailua", + "type": "Stack", + "name": "Built on the OP Kailua stack", + "description": "The project is built on the OP Kailua stack" + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (1R, ZK)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Single round proofs (1R) prove the validity of a state proposal, only requiring a single transaction to resolve. A fault proof eliminates a state proposal by proving that any intermediate state transition in the proposal results in a different state root. For either, a ZK proof is used." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "The primary whitelisted proposer has an optimistic advantage, letting them win by default if no conflicting proposals are made. This privilege is dropped after 1mo of inactivity, and anyone can leverage the source available zk prover to prove a fault or a conflicting valid proposal to win against the privileged proposer and/or supply a bond and make a counter proposal at any time." + } + ], + "tvs": { + "breakdown": { + "total": 261780672, + "native": 0, + "canonical": 16219680.283218384, + "external": 245560989.4453125, + "ether": 5377060.16796875, + "stablecoin": 2232214.732788086, + "btc": 253079591.4140625, + "other": 1091803.4137115479, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.0030120551673472606, + "associatedTokens": [] + } + }, + "fraxtal": { + "id": "fraxtal", + "name": "Fraxtal", + "slug": "fraxtal", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published on chain. Fraxtal uses a separate data availability module developed by the Frax Core Team, and data availability attestations are not published on chain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 190519776, + "native": 0, + "canonical": 189569081.84225643, + "external": 950685.48046875, + "ether": 10518363.575390339, + "stablecoin": 129972674.05046844, + "btc": 20012.059218406677, + "other": 50008717.63764799, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 41023340 + }, + "change7d": -0.04065647453106114, + "associatedTokens": [ + { + "symbol": "FRAX", + "icon": "https://coin-images.coingecko.com/coins/images/13423/large/frax.png?1745921071" + }, + { + "symbol": "FPIS", + "icon": "https://assets.coingecko.com/coins/images/24944/large/FPIS_icon.png?1696524099" + } + ] + } + }, + "blast": { + "id": "blast", + "name": "Blast", + "slug": "blast", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 190235984, + "native": 56286080.515625, + "canonical": 451208.3230857849, + "external": 133498678.39208984, + "ether": 92073525.26311874, + "stablecoin": 41074153.48776245, + "btc": 150750.21875, + "other": 56937538.26116943, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 55789212 + }, + "change7d": -0.11389354081828629, + "associatedTokens": [ + { + "symbol": "BLAST", + "icon": "https://coin-images.coingecko.com/coins/images/35494/large/Blast.jpg?1719385662" + } + ] + } + }, + "scroll": { + "id": "scroll", + "name": "Scroll", + "slug": "scroll", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "L3HostChain", + "type": "Other", + "name": "L3 Host Chain", + "description": "This project serves as a host chain for L3s", + "action": { + "type": "selfScalingFilter", + "id": "hostChain" + } + } + ], + "stage": "Stage 1", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 7d delay on this operation. Proposing new blocks requires creating ZK proofs." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 148432032, + "native": 28102842, + "canonical": 97879247.20923042, + "external": 22449946.813293457, + "ether": 86403269.39794922, + "stablecoin": 32443598.929382324, + "btc": 1383488.86328125, + "other": 28201678.831911087, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 28102842 + }, + "change7d": -0.31682450199521517, + "associatedTokens": [ + { + "symbol": "SCR", + "icon": "https://coin-images.coingecko.com/coins/images/50571/large/scroll.jpg?1728376125" + } + ] + } + }, + "mantapacific": { + "id": "mantapacific", + "name": "Manta Pacific", + "slug": "mantapacific", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 147321792, + "native": 41316544, + "canonical": 43516715.10383034, + "external": 62488521.77812576, + "ether": 40072068.95019531, + "stablecoin": 38077872.224048615, + "btc": 17005334.789978027, + "other": 52166504.917734146, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 41316544 + }, + "change7d": -0.3115657932474978, + "associatedTokens": [ + { + "symbol": "MANTA", + "icon": "https://assets.coingecko.com/coins/images/34289/large/manta.jpg?1704468717" + } + ] + } + }, + "abstract": { + "id": "abstract", + "name": "Abstract", + "slug": "abstract", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 139397024, + "native": 6630356.125, + "canonical": 68406817.5, + "external": 64359856, + "ether": 63138008, + "stablecoin": 23736408, + "btc": 0, + "other": 52522613.625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.16608528289288294, + "associatedTokens": [] + } + }, + "paradex": { + "id": "paradex", + "name": "Paradex", + "slug": "paradex", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "SN Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "CairoVM", + "type": "VM", + "name": "CairoVM", + "description": "This project uses the Cairo Virtual Machine to run its smart contracts and supports the Cairo programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "CairoVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "SNStack", + "type": "Stack", + "name": "Built on the SN Stack", + "description": "The project is built on the SN Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "SN Stack" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 128756288, + "native": 0, + "canonical": 128756288, + "external": 0, + "ether": 0, + "stablecoin": 128756288, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.11213966361625038, + "associatedTokens": [] + } + }, + "mode": { + "id": "mode", + "name": "Mode Network", + "shortName": "Mode", + "slug": "mode", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 118116328, + "native": 4485698.5, + "canonical": 10488745.552108416, + "external": 103141893.4482727, + "ether": 11155864.696044922, + "stablecoin": 1669866.0065460205, + "btc": 100682104.54498291, + "other": 4608502.252807269, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 4485698.5 + }, + "change7d": -0.06016379947772377, + "associatedTokens": [ + { + "symbol": "MODE", + "icon": "https://assets.coingecko.com/coins/images/34979/large/MODE.jpg?1714561871" + } + ] + } + }, + "soneium": { + "id": "soneium", + "name": "Soneium", + "slug": "soneium", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 94729528, + "native": 2486739.25, + "canonical": 21306095.0413208, + "external": 70936692.06173706, + "ether": 22929294.950317383, + "stablecoin": 29808453.78515625, + "btc": 31525522.59249878, + "other": 10466255.02508545, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.07908617517627814, + "associatedTokens": [] + } + }, + "metis": { + "id": "metis", + "name": "Metis Andromeda", + "shortName": "Metis", + "slug": "metis", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OVM" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OVM", + "type": "Fork", + "name": "Fork of OVM", + "description": "The project is fork of the Optimistic Virtual Machine", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OVM" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. The single address acting as a sequencer on L1 is not trustlessly linkable to the claim of multiple decentralized sequencers being used." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve.Anyone can submit challenge requests. However, permissioned actors are needed to create the challenge and to delete successfully disputed state roots. Additionally, the current permissioned actors (GameCreator and Security Council minority) can collude and finalize malicious state roots." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Security Council minority", + "sentiment": "warning", + "description": "Only the whitelisted proposer can update state roots on L1, so in the event of failure the withdrawals are frozen. The Security Council minority can be alerted to enforce censorship resistance because they own the proposer registry, controlling the active whitelisted proposer." + } + ], + "tvs": { + "breakdown": { + "total": 90241992, + "native": 0, + "canonical": 90241996.89424053, + "external": 0, + "ether": 15880818, + "stablecoin": 15133413.582519531, + "btc": 57052.01171875, + "other": 59170713.30000225, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 59162588 + }, + "change7d": -0.026240596480075595, + "associatedTokens": [ + { + "symbol": "Metis", + "icon": "https://assets.coingecko.com/coins/images/15595/large/Metis_Black_Bg.png?1702968192" + } + ] + } + }, + "plumenetwork": { + "id": "plumenetwork", + "name": "Plume Network", + "slug": "plumenetwork", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "RWA" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CelestiaBlobstream", + "type": "DA", + "name": "Celestia with Blobstream", + "description": "This project utilizes Celestia and has Blobstream enabled, facilitating the bridging of data availability commitments between Celestia and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 9 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are checked against the Blobstream bridge data roots, signed off by Celestia validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 78417480, + "native": 646009.28125, + "canonical": 48507156.91999817, + "external": 29264317, + "ether": 646094.7312469482, + "stablecoin": 25262363.47000122, + "btc": 0, + "other": 48506920, + "rwaRestricted": 0, + "rwaPublic": 4002105, + "associated": 48506920 + }, + "change7d": 0.2762341101956969, + "associatedTokens": [ + { + "symbol": "PLUME", + "icon": "https://coin-images.coingecko.com/coins/images/53623/large/plume-token.png?1736896935" + } + ] + } + }, + "lisk": { + "id": "lisk", + "name": "Lisk", + "slug": "lisk", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "MigratedFromL1", + "type": "Other", + "name": "Migrated from L1 to Ethereum L2", + "description": "This project has migrated from being a standalone L1 blockchain to an Ethereum L2", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Migrated from L1 to Ethereum L2" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 77677656, + "native": 0, + "canonical": 43537856.75756836, + "external": 34139800.07421875, + "ether": 24807557.5, + "stablecoin": 3690022.26171875, + "btc": 11606551.25, + "other": 37573525.82006836, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 37570228 + }, + "change7d": -0.09286688779209562, + "associatedTokens": [ + { + "symbol": "LSK", + "icon": "https://coin-images.coingecko.com/coins/images/385/large/Lisk_Symbol_-_Blue.png?1696501687" + } + ] + } + }, + "sophon": { + "id": "sophon", + "name": "Sophon", + "slug": "sophon", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Validium", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Gaming", + "Social", + "AI" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "AvailVector", + "type": "DA", + "name": "Avail with Vector", + "description": "This project utilizes Avail and has Vector enabled, facilitating the bridging of data availability commitments between Avail and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "avail" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. The Operator actively uses a TransactionFilterer contract, which requires accounts that enqueue or force transactions from L1 OR their targets on L2, to be whitelisted." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Avail. Transaction data is checked against the Vector bridge data roots, signed off by Avail validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 72266480, + "native": 0, + "canonical": 72266468.37289047, + "external": 0, + "ether": 2865501.890625, + "stablecoin": 8005305.909999847, + "btc": 76692.3671875, + "other": 61318968.205078125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 43206380 + }, + "change7d": -0.09754185751541111, + "associatedTokens": [ + { + "symbol": "SOPH", + "icon": "https://coin-images.coingecko.com/coins/images/38680/large/sophon_logo_200.png?1747898236" + } + ] + } + }, + "sxnetwork": { + "id": "sxnetwork", + "name": "SX Network", + "slug": "sxnetwork", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Betting" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 4d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 6 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 69559160, + "native": 0, + "canonical": 69559159.17999268, + "external": 0, + "ether": 470.17999267578125, + "stablecoin": 5579013, + "btc": 0, + "other": 63979676, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 63979676 + }, + "change7d": -0.059938585516457255, + "associatedTokens": [ + { + "symbol": "SX", + "icon": "https://coin-images.coingecko.com/coins/images/34934/large/sx-ntework.jpeg?1706699134" + } + ] + } + }, + "lyra": { + "id": "lyra", + "name": "Derive", + "slug": "derive", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 65639684, + "native": 0, + "canonical": 177349.34062576294, + "external": 65462336.53849915, + "ether": 27743903.234375, + "stablecoin": 15187819.526318816, + "btc": 22707793.718437195, + "other": 169.39999389648438, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.004811254359278205, + "associatedTokens": [ + { + "symbol": "LYRA" + } + ] + } + }, + "apechain": { + "id": "apechain", + "name": "ApeChain", + "slug": "apechain", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Espresso", + "type": "DA", + "name": "Espresso", + "description": "This project is posting its data to Espresso", + "action": { + "type": "publicDaHighlight", + "slug": "espresso" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "EspressoPreconfs", + "type": "Other", + "name": "Espresso Preconfs", + "description": "The project integrates with Espresso preconfirmations. The chain batch poster publishes blocks to Espresso Network and runs in a Trusted Execution Environment (TEE) programmed to verify that only Espresso-validated batches reach the host chain.", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Espresso Preconfs" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 4d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/7 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 59549928, + "native": 0, + "canonical": 0, + "external": 59549928, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 59549928, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 59549928 + }, + "change7d": -0.0853553276741923, + "associatedTokens": [ + { + "symbol": "APE", + "icon": "https://coin-images.coingecko.com/coins/images/24383/large/apecoin.jpg?1696523566" + } + ] + } + }, + "cronoszkevm": { + "id": "cronoszkevm", + "name": "Cronos zkEVM", + "slug": "cronoszkevm", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 57097720, + "native": 0, + "canonical": 52104708.453125, + "external": 4993009.875, + "ether": 10744015.125, + "stablecoin": 5777739.25, + "btc": 1074339.75, + "other": 39501624.203125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 17379462 + }, + "change7d": -0.1449963758977223, + "associatedTokens": [ + { + "symbol": "zkCRO", + "icon": "https://coin-images.coingecko.com/coins/images/39734/large/Screenshot_2024-08-16_at_10.42.41%E2%80%AFAM.png?1723776225" + } + ] + } + }, + "zksync": { + "id": "zksync", + "name": "ZKsync Lite", + "slug": "zksync-lite", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "ZKsync Lite" + ], + "purposes": [ + "Payments", + "Exchange", + "NFT" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "EthereumCalldata", + "type": "DA", + "name": "Ethereum with calldata", + "description": "This project is posting its data to Ethereum as calldata", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a transaction by submitting a request through L1. If the sequencer censors or is down for for more than 14d, users can use the exit hatch to withdraw their funds." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "7d", + "sentiment": "warning", + "warning": { + "value": "The Security Council can upgrade with no delay.", + "sentiment": "bad" + }, + "description": "Users have 7d to exit funds in case of an unwanted upgrade. There is a 21d delay before an upgrade is applied, and withdrawals can take up to 14d to be processed." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a zero knowledge proof of funds." + } + ], + "tvs": { + "breakdown": { + "total": 52450616, + "native": 0, + "canonical": 52450621.45923634, + "external": 0, + "ether": 42714073.78437805, + "stablecoin": 8838169.134803772, + "btc": 522582.56872558594, + "other": 375795.97132892907, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.10633442484767996, + "associatedTokens": [] + } + }, + "zircuit": { + "id": "zircuit", + "name": "Zircuit", + "slug": "zircuit", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. The L2 code has been modified to allow the sequencer to explicitly censor selected L1->L2 transactions." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "warning", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds after 1mo with no new state proposals have passed. The escape of ETH and ERC-20 balances is permissionless while the escape of DeFi contract balances is trusted." + } + ], + "tvs": { + "breakdown": { + "total": 48669296, + "native": 0, + "canonical": 37722109.92898941, + "external": 10947194.912656188, + "ether": 21058738.884803772, + "stablecoin": 936069.5031260252, + "btc": 295218.6837158203, + "other": 26379277.76999998, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 26379276 + }, + "change7d": -0.1309609229239218, + "associatedTokens": [ + { + "symbol": "ZRC", + "icon": "https://coin-images.coingecko.com/coins/images/35960/large/zircuit_token_icon_2.png?1732502352" + } + ] + } + }, + "corn": { + "id": "corn", + "name": "Corn", + "slug": "corn", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Bitcoin DApps" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 44683996, + "native": 0, + "canonical": 0, + "external": 44683986.57997942, + "ether": 5624.25, + "stablecoin": 57798.30078125, + "btc": 5410808.02919817, + "other": 39209756, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 39209756 + }, + "change7d": -0.19310062327221955, + "associatedTokens": [ + { + "symbol": "CORN", + "icon": "https://coin-images.coingecko.com/coins/images/54471/large/corn.jpg?1739933588" + } + ] + } + }, + "educhain": { + "id": "educhain", + "name": "EDU Chain", + "slug": "edu-chain", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 5d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 43320956, + "native": 26645.869140625, + "canonical": 43294306.93191069, + "external": 0, + "ether": 69.0199966430664, + "stablecoin": 577584.6218749881, + "btc": 1653.2900390625, + "other": 42741645.869140625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 42715000 + }, + "change7d": -0.11132971352462329, + "associatedTokens": [ + { + "symbol": "EDU", + "icon": "https://coin-images.coingecko.com/coins/images/29948/large/EDU_Logo.png?1696528874" + } + ] + } + }, + "galxegravity": { + "id": "galxegravity", + "name": "Gravity", + "slug": "galxegravity", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CelestiaBlobstream", + "type": "DA", + "name": "Celestia with Blobstream", + "description": "This project utilizes Celestia and has Blobstream enabled, facilitating the bridging of data availability commitments between Celestia and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2y 9mo delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 9 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are checked against the Blobstream bridge data roots, signed off by Celestia validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 38040680, + "native": 0, + "canonical": 30941546, + "external": 7099132.1875, + "ether": 5331154.75, + "stablecoin": 1767977.4375, + "btc": 0, + "other": 30941546, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 30941546 + }, + "change7d": -0.059489443427471755, + "associatedTokens": [ + { + "symbol": "G", + "icon": "https://coin-images.coingecko.com/coins/images/39200/large/gravity.jpg?1721020647" + } + ] + } + }, + "swell": { + "id": "swell", + "name": "Swellchain", + "slug": "swell", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Restaking" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "AltLayer", + "type": "RaaS", + "name": "AltLayer", + "description": "This project was deployed via the rollup-as-a-service provider AltLayer", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "AltLayer" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 36890096, + "native": 0, + "canonical": 6320527, + "external": 30569569.239084244, + "ether": 26611127.0625, + "stablecoin": 6463349.364999771, + "btc": 1483.1900024414062, + "other": 3814136.6215820312, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12743065161388722, + "associatedTokens": [ + { + "symbol": "WLD" + } + ] + } + }, + "nova": { + "id": "nova", + "name": "Arbitrum Nova", + "slug": "nova", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimium", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "WasmVM", + "type": "VM", + "name": "WasmVM", + "description": "This project uses a WebAssembly Virtual Machine to run its smart contracts", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "WasmVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Nitro", + "type": "Stack", + "name": "Built on Arbitrum Nitro", + "description": "The project is built on Arbitrum Nitro", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Governance", + "type": "Other", + "name": "Governance", + "description": "This project features token voting", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Governance" + } + }, + { + "id": "L3HostChain", + "type": "Other", + "name": "L3 Host Chain", + "description": "This project serves as a host chain for L3s", + "action": { + "type": "selfScalingFilter", + "id": "hostChain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "good", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "warning", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/6 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "7d", + "sentiment": "warning", + "warning": { + "value": "The Security Council can upgrade with no delay.", + "sentiment": "bad" + }, + "description": "Non-emergency upgrades are initiated on L2 and go through a 8d delay. Since there is a 1d delay to force a tx (forcing the inclusion in the following state update), users have only 7d to exit. \n \n If users post a tx after that time, they would only be able to self propose a state root 28d after the last state root was proposed and then wait for the 6d 8h challenge window, while the upgrade would be confirmed just after the 6d 8h challenge window and the 3d L1 timelock." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 28d of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 35180300, + "native": 0, + "canonical": 35101648.40048013, + "external": 78657.2734375, + "ether": 34447952.37000001, + "stablecoin": 641148.1435546875, + "btc": 27776.9609375, + "other": 63428.199425429106, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 41150.26953125 + }, + "change7d": -0.12388891982451633, + "associatedTokens": [ + { + "symbol": "ARB", + "icon": "https://coin-images.coingecko.com/coins/images/16547/large/arb.jpg?1721358242" + } + ] + } + }, + "aevo": { + "id": "aevo", + "name": "Aevo", + "slug": "aevo", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EigenDA", + "type": "DA", + "name": "EigenDA", + "description": "This project is posting its data to EigenDA", + "action": { + "type": "publicDaHighlight", + "slug": "eigenda" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on EigenDA. The sequencer is publishing data to EigenDA v2. Sequencer transaction data roots are not checked against the DACert Verifier onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 30473400, + "native": 0, + "canonical": 26631228.390625, + "external": 3842170.25, + "ether": 7377343.015625, + "stablecoin": 22485884.375, + "btc": 610171.25, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.039973536847576985, + "associatedTokens": [ + { + "symbol": "AEVO" + } + ] + } + }, + "immutablezkevm": { + "id": "immutablezkevm", + "name": "Immutable zkEVM", + "slug": "immutablezkevm", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 29981258, + "native": 759946.8125, + "canonical": 29221313.86328125, + "external": 0, + "ether": 2219822.5, + "stablecoin": 2880875.19140625, + "btc": 0, + "other": 24880562.984375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 19371746 + }, + "change7d": -0.19379855425481174, + "associatedTokens": [ + { + "symbol": "IMX", + "icon": "https://assets.coingecko.com/coins/images/17233/large/immutableX-symbol-BLK-RGB.png?1696516787" + } + ] + } + }, + "morph": { + "id": "morph", + "name": "Morph", + "slug": "morph", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "Fraud proofs (1R, ZK)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Single round proofs (1R) only require a single transaction to resolve. ZK proofs are used to prove the correctness of the state transition. The system currently operates with a single whitelisted challenger." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 29162880, + "native": 0, + "canonical": 26042399.550860167, + "external": 3120478.510424614, + "ether": 8807125.120117188, + "stablecoin": 5897903.265307426, + "btc": 25872.630859375, + "other": 14431977.045000792, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.08684413248520506, + "associatedTokens": [] + } + }, + "ethereal": { + "id": "ethereal", + "name": "Ethereal", + "slug": "ethereal", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 28117536, + "native": 0, + "canonical": 0, + "external": 28117536, + "ether": 0, + "stablecoin": 28117536, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 1.996185921743038, + "associatedTokens": [] + } + }, + "fuel": { + "id": "fuel", + "name": "Fuel Ignition", + "slug": "fuel", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "FuelVM", + "type": "VM", + "name": "FuelVM", + "description": "This project uses the Fuel Virtual Machine to run its smart contracts and supports the Sway programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "FuelVM" + } + }, + { + "id": "EigenDA", + "type": "DA", + "name": "EigenDA", + "description": "This project is posting its data to EigenDA", + "action": { + "type": "publicDaHighlight", + "slug": "eigenda" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on EigenDA. The sequencer is publishing data to EigenDA v2. Sequencer transaction data roots are not checked against the DACert Verifier onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 26741734, + "native": 0, + "canonical": 26741737.241622925, + "external": 0, + "ether": 8356295.771484375, + "stablecoin": 10672640.0546875, + "btc": 61241.790451049805, + "other": 7651559.625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 6444327 + }, + "change7d": -0.09034264373372103, + "associatedTokens": [ + { + "symbol": "FUEL", + "icon": "https://coin-images.coingecko.com/coins/images/29577/large/fuel.png?1696528516" + } + ] + } + }, + "taiko": { + "id": "taiko", + "name": "Taiko Alethia", + "slug": "taiko", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Taiko" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Multi-proofs", + "sentiment": "bad", + "description": "A multi-proof system is used. There are four verifiers available: SGX (Geth), SGX (Reth), SP1 and RISC0. Two of them must be used to prove a block, and SGX (Geth) is mandatory. A block can be proved without providing a ZK proof as SGX (Geth) + SGX (Reth) is a valid combination." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can be a Proposer and propose new roots to the L1 bridge. Proofs can only be submitted for blocks sequenced by whitelisted operators. Provers are required to submit two valid proofs for blocks, one of which must be SGX (Geth), and the other can be either SGX (Reth), SP1, or RISC0. If the initial proposer fails to prove the block within the proving window, they forfeit half of their liveness bond." + } + ], + "tvs": { + "breakdown": { + "total": 25390796, + "native": 0, + "canonical": 24870702.102748036, + "external": 520094.64453125, + "ether": 7278608.246643066, + "stablecoin": 1477308.9049987793, + "btc": 177406.83874988556, + "other": 16457472.756887555, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 16296351 + }, + "change7d": -0.12086419214487865, + "associatedTokens": [ + { + "symbol": "TAIKO", + "icon": "https://coin-images.coingecko.com/coins/images/38058/large/icon.png?1717626867" + } + ] + } + }, + "immutablex": { + "id": "immutablex", + "name": "Immutable X", + "slug": "immutablex", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "StarkEx" + ], + "purposes": [ + "NFT", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "StarkEx", + "type": "Stack", + "name": "StarkEx", + "description": "This project was deployed utilizing the StarkEx technology from StarkWare", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "StarkEx" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/7 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "1d", + "sentiment": "bad", + "description": "Users have 1d to exit funds in case of an unwanted regular upgrade. There is a 8d delay before a regular upgrade is applied, and withdrawals can take up to 7d to be processed." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. NFTs will be minted on L1 to exit." + } + ], + "tvs": { + "breakdown": { + "total": 24273486, + "native": 0, + "canonical": 24273485.8125, + "external": 0, + "ether": 17581038, + "stablecoin": 628216.5625, + "btc": 0, + "other": 6064231.25, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 5144384 + }, + "change7d": -0.13044908380335596, + "associatedTokens": [ + { + "symbol": "IMX", + "icon": "https://assets.coingecko.com/coins/images/17233/large/immutableX-symbol-BLK-RGB.png?1696516787" + } + ] + } + }, + "zklinknova": { + "id": "zklinknova", + "name": "zkLink Nova", + "slug": "zklinknova", + "type": "layer3", + "hostChain": "Linea", + "category": "Other", + "purposes": [ + "Universal", + "Interoperability" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Linea", + "type": "L3ParentChain", + "name": "Built on top of Linea", + "description": "The project has Linea as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Linea" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "Validity proofs", + "sentiment": "good", + "description": "Zero knowledge cryptography is used to ensure state correctness. Proofs are first verified on Linea and finally on Ethereum." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is ultimately NOT published on Ethereum." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 22476242, + "native": 0, + "canonical": 20993998.066218853, + "external": 1482243.5688044764, + "ether": 18790233.082489014, + "stablecoin": 439793.6118421741, + "btc": 242802.17013168335, + "other": 3003412.7705604583, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2612757 + }, + "change7d": -0.1290396281152405, + "associatedTokens": [ + { + "symbol": "ZKL", + "icon": "https://coin-images.coingecko.com/coins/images/34982/large/Logo1.png?1714980729" + } + ] + } + }, + "hashkey": { + "id": "hashkey", + "name": "HashKey Chain", + "slug": "hashkey", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 19758386, + "native": 0, + "canonical": 19758385.417503357, + "external": 0, + "ether": 139599.8125, + "stablecoin": 2075118.375, + "btc": 101.2300033569336, + "other": 17543566, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 17543566 + }, + "change7d": -0.06097748062870223, + "associatedTokens": [ + { + "symbol": "HSK", + "icon": "https://coin-images.coingecko.com/coins/images/29779/large/HSKlogo.jpg?1719445510" + } + ] + } + }, + "loopring": { + "id": "loopring", + "name": "Loopring", + "slug": "loopring", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "Loopring" + ], + "purposes": [ + "NFT", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "EthereumCalldata", + "type": "DA", + "name": "Ethereum with calldata", + "description": "This project is posting its data to Ethereum as calldata", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1 with a 0.02 ETH fee. If the sequencer is down for more than 15d, users can use the exit hatch to withdraw their funds. The sequencer can censor individual deposits, but in such case after 15d users can get their funds back." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds." + } + ], + "tvs": { + "breakdown": { + "total": 18457314, + "native": 0, + "canonical": 18457316.46283567, + "external": 0, + "ether": 11612475.713867188, + "stablecoin": 2096769.4054603577, + "btc": 1145102.1899414062, + "other": 3602969.153566718, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2984985.25 + }, + "change7d": -0.10739659043581828, + "associatedTokens": [ + { + "symbol": "LRC", + "icon": "https://assets.coingecko.com/coins/images/913/large/LRC.png?1696502034" + } + ] + } + }, + "sorare": { + "id": "sorare", + "name": "Sorare", + "slug": "sorare", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "StarkEx" + ], + "purposes": [ + "NFT", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "StarkEx", + "type": "Stack", + "name": "StarkEx", + "description": "This project was deployed utilizing the StarkEx technology from StarkWare", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "StarkEx" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/4 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "1d", + "sentiment": "bad", + "description": "Users have 1d to exit funds in case of an unwanted regular upgrade. There is a 8d delay before a regular upgrade is applied, and withdrawals can take up to 7d to be processed." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. NFTs will be minted on L1 to exit." + } + ], + "tvs": { + "breakdown": { + "total": 15533135, + "native": 0, + "canonical": 15533135, + "external": 0, + "ether": 15533135, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.11109489061119948, + "associatedTokens": [] + } + }, + "polygonzkevm": { + "id": "polygonzkevm", + "name": "Polygon zkEVM", + "slug": "polygonzkevm", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumCalldata", + "type": "DA", + "name": "Ethereum with calldata", + "description": "This project is posting its data to Ethereum as calldata", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "CDKErigon", + "type": "Stack", + "name": "Built on the CDK Erigon stack", + "description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Agglayer CDK" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1. Unlike most ZK rollups transactions are posted instead of state diffs." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The Security Council can remove the delay on upgrades.", + "sentiment": "bad" + }, + "description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 15182202, + "native": 0, + "canonical": 12954842.927206257, + "external": 2227358.169921875, + "ether": 9305057.347259521, + "stablecoin": 3987118.126131106, + "btc": 985365.5, + "other": 893271.9639703538, + "rwaRestricted": 0, + "rwaPublic": 11388.159767150879, + "associated": 456389.84375 + }, + "change7d": -0.09712427619850961, + "associatedTokens": [ + { + "symbol": "POL", + "icon": "/images/custom-tokens/polygon-ecosystem-token.png" + }, + { + "symbol": "MATIC", + "icon": "https://assets.coingecko.com/coins/images/4713/large/polygon.png?1698233745" + } + ] + } + }, + "lumia": { + "id": "lumia", + "name": "Lumia Prism", + "slug": "lumia", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Restaking", + "RWA", + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. 'Pessimistic' proofs only validate the bridge accounting." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 14972758, + "native": 0, + "canonical": 14972758.180002362, + "external": 0, + "ether": 570.25, + "stablecoin": 747.8000024408102, + "btc": 0, + "other": 14971440.12999992, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 14971436 + }, + "change7d": 0.09860089560936292, + "associatedTokens": [ + { + "symbol": "LUMIA", + "icon": "https://coin-images.coingecko.com/coins/images/50867/large/lumia.jpg?1729321993" + } + ] + } + }, + "xlayer": { + "id": "xlayer", + "name": "X Layer", + "slug": "xlayer", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. 'Pessimistic' proofs only validate the bridge accounting." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 14516654, + "native": 0, + "canonical": 14516654.535856921, + "external": 0, + "ether": 2880718.859998703, + "stablecoin": 11567970.286640167, + "btc": 51081.7890625, + "other": 16883.600155550987, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 16857.41015625 + }, + "change7d": -0.08110543934993097, + "associatedTokens": [ + { + "symbol": "OKB", + "icon": "https://assets.coingecko.com/coins/images/4463/large/WeChat_Image_20220118095654.png?1696505053" + } + ] + } + }, + "silicon": { + "id": "silicon", + "name": "Silicon", + "slug": "silicon", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "CDKErigon", + "type": "Stack", + "name": "Built on the CDK Erigon stack", + "description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Agglayer CDK" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + }, + { + "id": "Nodeinfra", + "type": "RaaS", + "name": "Nodeinfra", + "description": "This project was deployed via the rollup-as-a-service provider Nodeinfra", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Nodeinfra" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/3 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The Security Council can remove the delay on upgrades.", + "sentiment": "bad" + }, + "description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 13815071, + "native": 0, + "canonical": 13815071.096660264, + "external": 0, + "ether": 3032935.75, + "stablecoin": 6482566.707519531, + "btc": 4212653.5, + "other": 86915.13914073259, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.049821884645737, + "associatedTokens": [] + } + }, + "eclipse": { + "id": "eclipse", + "name": "Eclipse", + "slug": "eclipse", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "SolanaVM", + "type": "VM", + "name": "SolanaVM", + "description": "This project uses the Solana Virtual Machine to run its smart contracts", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "SolanaVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 13678654, + "native": 0, + "canonical": 13678654, + "external": 0, + "ether": 13678654, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.13693561044910396, + "associatedTokens": [] + } + }, + "orderly": { + "id": "orderly", + "name": "Orderly Network", + "shortName": "Orderly", + "slug": "orderly", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 11340045, + "native": 0, + "canonical": 431702.21875, + "external": 10908342.546875, + "ether": 431702.21875, + "stablecoin": 10908342.546875, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1592133025866619, + "associatedTokens": [] + } + }, + "karak": { + "id": "karak", + "name": "K2", + "slug": "k2", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 10978789, + "native": 0, + "canonical": 10978789.375, + "external": 0, + "ether": 9919246, + "stablecoin": 1059543.375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.11969499599649569, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 189431953.3, - "ether": 2519399.8, - "stablecoin": 7424.34, - "associated": 22292598.52 - }, - "associatedTokens": ["RWA"], - "change7d": 0.333235994666568 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "fraxtal": { - "id": "fraxtal", - "name": "Fraxtal", - "slug": "fraxtal", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "rss3": { + "id": "rss3", + "name": "RSS3 Value Sublayer", + "shortName": "RSS3 VSL", + "slug": "rss3", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "AI", + "Information" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "NearDA", + "type": "DA", + "name": "NearDA", + "description": "This project is posting its data to NearDA", + "action": { + "type": "publicDaHighlight", + "slug": "near" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published on chain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 10541651, + "native": 0, + "canonical": 10541651.138641357, + "external": 0, + "ether": 3102.139892578125, + "stablecoin": 95807.9987487793, + "btc": 0, + "other": 10442741, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 10442741 + }, + "change7d": -0.20021966995185303, + "associatedTokens": [ + { + "symbol": "RSS3", + "icon": "https://assets.coingecko.com/coins/images/23575/large/RSS3.png?1696522783" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 187895720.91, - "ether": 34838247, - "stablecoin": 77661341.14, - "associated": 44254537.02 - }, - "associatedTokens": ["FXS", "FPIS"], - "change7d": 0.0730025391630083 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely fully on data that is NOT published on chain. Fraxtal uses a separate data availability module developed by the Frax Core Team, and data availability attestations are not published on chain." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "zircuit": { - "id": "zircuit", - "name": "Zircuit", - "slug": "zircuit", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "zora": { + "id": "zora", + "name": "Zora", + "slug": "zora", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "NFT" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 10428209, + "native": 0, + "canonical": 10428209.34375, + "external": 0, + "ether": 10229232, + "stablecoin": 198977.34375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12325200400329839, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 174337451.03, - "ether": 172258887.46, - "stablecoin": 1884006.88, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.184385867907863 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "galxegravity": { - "id": "galxegravity", - "name": "Gravity", - "slug": "galxegravity", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "hemi": { + "id": "hemi", + "name": "Hemi", + "slug": "hemi", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Bitcoin DApps" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 9391618, + "native": 0, + "canonical": 9391618.526895761, + "external": 0, + "ether": 9028050.529999971, + "stablecoin": 51.21000146865845, + "btc": 358318.6569530964, + "other": 24.18999981880188, + "rwaRestricted": 0, + "rwaPublic": 5173.93994140625, + "associated": 0 + }, + "change7d": -0.20083048254545166, + "associatedTokens": [ + { + "symbol": "hemi" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 137851764.81, - "ether": 1724633.49, - "stablecoin": 1760072.07, - "associated": 134367059.25 - }, - "associatedTokens": ["G"], - "change7d": 0.042906591654984 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1000d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "lisk": { - "id": "lisk", - "name": "Lisk", - "slug": "lisk", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Other", - "name": "MigratedFromL1" - }, - { - "category": "VM", - "name": "EVM" + }, + "bobanetwork": { + "id": "bobanetwork", + "name": "Boba Network", + "shortName": "Boba", + "slug": "bobanetwork", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 8859503, + "native": 0, + "canonical": 8788933.244490147, + "external": 70570.1484375, + "ether": 4704495, + "stablecoin": 1700088.3359680176, + "btc": 783704.5, + "other": 1671215.556959629, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1519785.125 + }, + "change7d": -0.10081814914650578, + "associatedTokens": [ + { + "symbol": "BOBA", + "icon": "https://assets.coingecko.com/coins/images/20285/large/Boba-200x200---white.png?1696519690" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 136736279.37, - "ether": 1545831.78, - "stablecoin": 247367.27, - "associated": 134778471.42 - }, - "associatedTokens": ["LSK"], - "change7d": 0.0689482145956715 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "taiko": { - "id": "taiko", - "name": "Taiko", - "slug": "taiko", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "Taiko", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Other", - "name": "BasedSequencing" + }, + "cyber": { + "id": "cyber", + "name": "Cyber", + "slug": "cyber", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "AltLayer", + "type": "RaaS", + "name": "AltLayer", + "description": "This project was deployed via the rollup-as-a-service provider AltLayer", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "AltLayer" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain. A custom data availability (DA) provider without attestations is used, but data unavailability can be challenged." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 7176565.5, + "native": 0, + "canonical": 1123240.2451171875, + "external": 6053325, + "ether": 1096308.375, + "stablecoin": 19983.0703125, + "btc": 0, + "other": 6060273.7998046875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 6053325 + }, + "change7d": -0.11963247061210591, + "associatedTokens": [ + { + "symbol": "CYBER", + "icon": "https://coin-images.coingecko.com/coins/images/31274/large/token.png?1715826754" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 121266589.86, - "ether": 24635937.92, - "stablecoin": 12668572.04, - "associated": 82427826.75 - }, - "associatedTokens": ["TAIKO"], - "change7d": 0.192005765023217 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "The system uses a based (or L1-sequenced) rollup sequencing mechanism. Users can propose L2 blocks directly on the Taiko L1 contract. The TaikoAdmin multisig can pause block proposals without delay." - }, - { - "name": "State Validation", - "value": "SGX proofs", - "sentiment": "bad", - "description": "Taiko uses a multi-tier proof system to validate the state. However, current tier proofs include either SGX (secure-enclave) execution verification, or approval by a minimum number of Guardians. State validation through the Zk-proof tier is not yet active. \n Each proof goes through a cooldown window allowing for contestation. Contested blocks require proof from a higher level tier. If no contestation is made, or the block has been proven by the highest tier, the proof is considered valid.\n The system allows for an invalid state to be proven by either a compromised SGX instance or compromised Guardians (the highest tier). This can lead to a state being proven as valid when it is not." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Provers can examine the proposed blocks on the TaikoL1 contract, and generate SGX proofs for them. Currently, any prover providing a valid SGX attestation can register a SGX instance and create proofs for proposed blocks." - } - ] - }, - "bob": { - "id": "bob", - "name": "BOB", - "slug": "bob", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "Bitcoin DApps"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "lightlink": { + "id": "lightlink", + "name": "LightLink", + "slug": "lightlink", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 4344151.5, + "native": 0, + "canonical": 4344151.927113116, + "external": 0, + "ether": 963373.6875, + "stablecoin": 41996.519609451294, + "btc": 149.41000366210938, + "other": 3338632.3100000024, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 3338626.75 + }, + "change7d": 0.03493855981314575, + "associatedTokens": [ + { + "symbol": "LL", + "icon": "https://coin-images.coingecko.com/coins/images/35357/large/lightlink-ticker-200.png?1708362303" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 116691306.39, - "ether": 13503783.95, - "stablecoin": 3350833.27, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0973637660327704 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "immutablex": { - "id": "immutablex", - "name": "Immutable X", - "slug": "immutablex", - "type": "layer2", - "category": "Validium", - "provider": "StarkEx", - "purposes": ["NFT", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "reya": { + "id": "reya", + "name": "Reya", + "slug": "reya", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 4340257.5, + "native": 0, + "canonical": 334598.4375, + "external": 4005659.2300109863, + "ether": 334598.4375, + "stablecoin": 4005659.2300109863, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.7566205106718378, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 93659353.37, - "ether": 17602310.27, - "stablecoin": 724926.01, - "associated": 69921463.66 - }, - "associatedTokens": ["IMX"], - "change7d": 0.0658218658810521 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/7 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. NFTs will be minted on L1 to exit." - } - ] - }, - "apex": { - "id": "apex", - "name": "ApeX", - "slug": "apex", - "type": "layer2", - "category": "Validium", - "provider": "StarkEx", - "purposes": ["Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "zeronetwork": { + "id": "zeronetwork", + "name": "ZERO Network", + "slug": "zeronetwork", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 4053166.5, + "native": 0, + "canonical": 4053166.5625, + "external": 0, + "ether": 3108020.25, + "stablecoin": 890099.84375, + "btc": 55046.46875, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1377307400936182, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 79877798.36, - "ether": 0, - "stablecoin": 79877798.36, - "associated": 0 - }, - "associatedTokens": ["APEX"], - "change7d": 0.00525909245244316 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a trade or a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for 7d, users can use the exit hatch to withdraw their funds. Users are required to find a counterparty for the trade by out of system means." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 3/5 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. Positions will be closed using the average price from the last batch state update." - } - ] - }, - "zklinknova": { - "id": "zklinknova", - "name": "zkLink Nova", - "slug": "zklinknova", - "type": "layer3", - "category": "Validium", - "provider": "zkLink Nexus", - "purposes": ["Universal", "Interoperability"], - "isArchived": false, - "hostChain": "Linea", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Linea" + }, + "aztec": { + "id": "aztec", + "name": "Zk.Money v1 (Aztec v1)", + "shortName": "Zk.Money v1", + "slug": "aztecv1", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "purposes": [ + "Payments", + "Privacy" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [], + "stage": "Stage 2", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. Proposing new blocks requires creating ZK proofs." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "∞", + "sentiment": "good", + "description": "Users can exit funds at any time because contracts are not upgradeable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 3983507.25, + "native": 0, + "canonical": 3983507.315448761, + "external": 0, + "ether": 3824991.25, + "stablecoin": 154034.49562454224, + "btc": 4481.56982421875, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12095730190543497, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 69966371.85, - "ether": 28367222.4, - "stablecoin": 953767.02, - "associated": 22181034.2 - }, - "associatedTokens": ["ZKL"], - "change7d": -0.0308046828380348 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." - }, - { - "name": "State Validation", - "value": "ZK proofs", - "sentiment": "good", - "description": "Zero knowledge cryptography is used to ensure state correctness. Proofs are first verified on Linea and finally on Ethereum." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely fully on data that is ultimately NOT published on Ethereum." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "polygonzkevm": { - "id": "polygonzkevm", - "name": "Polygon zkEVM", - "slug": "polygonzkevm", - "type": "layer2", - "category": "ZK Rollup", - "provider": "Polygon", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "VM", - "name": "EVM" + }, + "intmax": { + "id": "intmax", + "name": "INTMAX", + "slug": "intmax", + "type": "layer3", + "hostChain": "Scroll", + "category": "ZK Rollup", + "purposes": [ + "Payments" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "Scroll", + "type": "L3ParentChain", + "name": "Built on top of Scroll", + "description": "The project has Scroll as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Scroll" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 7d delay on this operation. Proposing new blocks requires creating ZK proofs." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Self custodied", + "sentiment": "good", + "description": "All data required for payments and withdrawals is self custodied by users." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge." + } + ], + "tvs": { + "breakdown": { + "total": 2957068.75, + "native": 0, + "canonical": 2957068.600013733, + "external": 0, + "ether": 2955892.2799987793, + "stablecoin": 725.6000137329102, + "btc": 450.7200012207031, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.02516994227389735, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 68526117.51, - "ether": 17993896.25, - "stablecoin": 5856976.29, - "associated": 42624874.8 - }, - "associatedTokens": ["POL", "MATIC"], - "change7d": 0.126307660946599 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1. Unlike most ZK rollups transactions are posted instead of state diffs." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "rss3": { - "id": "rss3", - "name": "RSS3 Value Sublayer", - "shortName": "RSS3 VSL", - "slug": "rss3", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "AI", "Information"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "NearDA" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "polynomial": { + "id": "polynomial", + "name": "Polynomial", + "slug": "polynomial", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 2918425, + "native": 0, + "canonical": 67798.203125, + "external": 2850626.5546875, + "ether": 356350.8505859375, + "stablecoin": 1795479.251953125, + "btc": 37092.9990234375, + "other": 729501.65625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12594161732959241, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 64173669.52, - "ether": 2866.64, - "stablecoin": 144812.67, - "associated": 64025990.21 - }, - "associatedTokens": ["RSS3"], - "change7d": 0.0440296843574286 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely fully on data that is NOT published on chain." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "cronoszkevm": { - "id": "cronoszkevm", - "name": "Cronos zkEVM", - "slug": "cronoszkevm", - "type": "layer2", - "category": "Validium", - "provider": "ZK Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "Stack", - "name": "ZKStack" - }, - { - "category": "Infra", - "name": "ElasticChain" + }, + "prom": { + "id": "prom", + "name": "Prom", + "slug": "prom", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Gaming", + "NFT" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 2438648, + "native": 0, + "canonical": 2438647.9700000286, + "external": 0, + "ether": 0, + "stablecoin": 1.9700000286102295, + "btc": 0, + "other": 2438646, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2438646 + }, + "change7d": 0.011885877320484628, + "associatedTokens": [ + { + "symbol": "PROM", + "icon": "https://coin-images.coingecko.com/coins/images/8825/large/Ticker.png?1696508978" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 58625520.92, - "ether": 12940092.08, - "stablecoin": 5714221.45, - "associated": 15429120.66 - }, - "associatedTokens": ["zkCRO"], - "change7d": 0.319012461370929 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Enqueue via L1", - "sentiment": "warning", - "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencer cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencer censors or is down, it is so for everyone." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 21h." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "warning", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." - } - ] - }, - "zksync": { - "id": "zksync", - "name": "ZKsync Lite", - "slug": "zksync-lite", - "type": "layer2", - "category": "ZK Rollup", - "provider": "ZKsync Lite", - "purposes": ["Payments", "Exchange", "NFT"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" + }, + "lens": { + "id": "lens", + "name": "Lens", + "slug": "lens", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Validium", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "AvailVector", + "type": "DA", + "name": "Avail with Vector", + "description": "This project utilizes Avail and has Vector enabled, facilitating the bridging of data availability commitments between Avail and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "avail" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Avail. Transaction data is checked against the Vector bridge data roots, signed off by Avail validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 2272473, + "native": 0, + "canonical": 2272472.84375, + "external": 0, + "ether": 1265965, + "stablecoin": 1006507.84375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.09775266277792449, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 56413482.52, - "ether": 45450022.15, - "stablecoin": 9946459.21, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.14804580827824 - }, - "stage": "Stage 1", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 14d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "7d", - "sentiment": "warning", - "warning": { - "value": "The Security Council can upgrade with no delay.", - "sentiment": "bad" - }, - "description": "Users have 7d to exit funds in case of an unwanted upgrade. There is a 21d delay before an upgrade is applied, and withdrawals can take up to 14d to be processed." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a zero knowledge proof of funds." - } - ] - }, - "degate3": { - "id": "degate3", - "name": "DeGate V1", - "slug": "degate3", - "type": "layer2", - "category": "ZK Rollup", - "provider": "Loopring", - "purposes": ["Exchange", "NFT"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Fork", - "name": "LoopringFork" + }, + "pepeunchained2": { + "id": "pepeunchained2", + "name": "Pepe Unchained", + "slug": "pepe-unchained", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 9 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 2115707.75, + "native": 0, + "canonical": 2115707.75, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 2115707.75, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2115707.75 + }, + "change7d": 0.05435539201487072, + "associatedTokens": [ + { + "symbol": "PEPU", + "icon": "https://coin-images.coingecko.com/coins/images/66717/large/pepu.jpg?1750303081" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 52278697.77, - "ether": 1915110.08, - "stablecoin": 23386060.13, - "associated": 24835003.76 - }, - "associatedTokens": ["DG"], - "change7d": 0.0297117256993806 - }, - "stage": "Stage 2", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1 with a 0.01 ETH fee. If the sequencer is down for more than 15d, users can use the exit hatch to withdraw their funds. The sequencer can censor individual deposits, but in such case after 15d users can get their funds back." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "30d", - "sentiment": "good", - "description": "Users have 30d to exit funds in case of an unwanted regular upgrade. There is a 45d delay before a regular upgrade is applied, and withdrawals can take up to 15d to be processed." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds." - } - ] - }, - "aevo": { - "id": "aevo", - "name": "Aevo", - "slug": "aevo", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "lasernet": { + "id": "lasernet", + "name": "Lasernet", + "slug": "lasernet", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 9 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 2011554.75, + "native": 0, + "canonical": 2011554.75, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 2011554.75, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2011554.75 + }, + "change7d": -0.16701728769949087, + "associatedTokens": [ + { + "symbol": "DIA", + "icon": "https://coin-images.coingecko.com/coins/images/11955/large/Token_Logo.png?1696511815" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 51753680.28, - "ether": 10188636.1, - "stablecoin": 40925920.42, - "associated": 0 - }, - "associatedTokens": ["AEVO"], - "change7d": 0.0388037272728785 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "loopring": { - "id": "loopring", - "name": "Loopring", - "slug": "loopring", - "type": "layer2", - "category": "ZK Rollup", - "provider": "Loopring", - "purposes": ["NFT", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" + }, + "sanko": { + "id": "sanko", + "name": "Sanko", + "slug": "sanko", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs only allow 3 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/3 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 1847919.625, + "native": 51617.640625, + "canonical": 1796301.969320327, + "external": 0, + "ether": 31165.470703125, + "stablecoin": 60313.05859375, + "btc": 588.9600219726562, + "other": 1755852.1206264794, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1704186.75 + }, + "change7d": -0.1925781134365674, + "associatedTokens": [ + { + "symbol": "DMT", + "icon": "https://assets.coingecko.com/coins/images/30505/large/dmt.png?1696529391" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 49655027.89, - "ether": 22434322.19, - "stablecoin": 4143569.12, - "associated": 17833076.49 - }, - "associatedTokens": ["LRC"], - "change7d": 0.152076774282583 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1 with a 0.02 ETH fee. If the sequencer is down for more than 15d, users can use the exit hatch to withdraw their funds. The sequencer can censor individual deposits, but in such case after 15d users can get their funds back." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds." - } - ] - }, - "lyra": { - "id": "lyra", - "name": "Derive", - "slug": "derive", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "mint": { + "id": "mint", + "name": "Mint", + "slug": "mint", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "NFT" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1701909.25, + "native": 509159.537109375, + "canonical": 1192749.7872314453, + "external": 0, + "ether": 1089480.75, + "stablecoin": 101670.947265625, + "btc": 1598.0899658203125, + "other": 509159.537109375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.11082078308630339, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 49507158.23, - "ether": 16889885.65, - "stablecoin": 13143190.79, - "associated": 0 - }, - "associatedTokens": ["LYRA"], - "change7d": 0.0194042535747454 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "dydx": { - "id": "dydx", - "name": "dYdX v3", - "slug": "dydx", - "type": "layer2", - "category": "ZK Rollup", - "provider": "StarkEx", - "purposes": ["Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Other", - "name": "Governance" + }, + "rari": { + "id": "rari", + "name": "RARI Chain", + "slug": "rari", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "NFT" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CelestiaBlobstream", + "type": "DA", + "name": "Celestia with Blobstream", + "description": "This project utilizes Celestia and has Blobstream enabled, facilitating the bridging of data availability commitments between Celestia and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "Espresso", + "type": "DA", + "name": "Espresso", + "description": "This project is posting its data to Espresso", + "action": { + "type": "publicDaHighlight", + "slug": "espresso" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "EspressoPreconfs", + "type": "Other", + "name": "Espresso Preconfs", + "description": "The project integrates with Espresso preconfirmations. The chain batch poster publishes blocks to Espresso Network and runs in a Trusted Execution Environment (TEE) programmed to verify that only Espresso-validated batches reach the host chain.", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Espresso Preconfs" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are checked against the Blobstream bridge data roots, signed off by Celestia validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 1553955.75, + "native": 0, + "canonical": 1492054.3699906543, + "external": 61901.37109375, + "ether": 1491395.3099975586, + "stablecoin": 62502.52108669281, + "btc": 0, + "other": 57.910000152885914, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1602097508828283, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 43166829.84, - "ether": 0, - "stablecoin": 43166829.84, - "associated": 0 - }, - "associatedTokens": ["DYDX"], - "change7d": -0.197678222284933 - }, - "stage": "Stage 1", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a trade or a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for 14d, users can use the exit hatch to withdraw their funds. Users are required to find a counterparty for the trade by out of system means." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "9d", - "sentiment": "warning", - "description": "There is a 9d exit window (or 2d if shortened by the Priority Controller)." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. Positions will be closed using the average price from the last batch state update." - } - ] - }, - "nova": { - "id": "nova", - "name": "Arbitrum Nova", - "slug": "nova", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "Nitro" - }, - { - "category": "VM", - "name": "WasmVM" - }, - { - "category": "Other", - "name": "Governance" - }, - { - "category": "Other", - "name": "L3HostChain" - }, - { - "category": "VM", - "name": "EVM" + }, + "superseed": { + "id": "superseed", + "name": "Superseed", + "slug": "superseed", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1436292.375, + "native": 721657.375, + "canonical": 515341.53125, + "external": 199293.4609375, + "ether": 515341.53125, + "stablecoin": 199293.4609375, + "btc": 0, + "other": 721657.375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 721657.375 + }, + "change7d": -0.21539529287937953, + "associatedTokens": [ + { + "symbol": "SUPR", + "icon": "https://coin-images.coingecko.com/coins/images/55519/large/Small.png?1746469855" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 42252636.93, - "ether": 41282992.87, - "stablecoin": 757525.55, - "associated": 137088.11 - }, - "associatedTokens": ["ARB"], - "change7d": 0.181607712725109 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "warning", - "description": "Fraud proofs allow 13 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "warning", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/6 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "2d", - "sentiment": "bad", - "warning": { - "value": "The Security Council can upgrade with no delay.", - "sentiment": "bad" - }, - "description": "Non-emergency upgrades are initiated on L2 and go through a 3d delay. Since there is a 1d delay to force a tx (forcing the inclusion in the following state update), users have only 2d to exit. \n \n If users post a tx after that time, they would only be able to self propose a state root 12d 17h after the last state root was proposed and then wait for the 6d 8h challenge window, while the upgrade would be confirmed just after the 6d 8h challenge window and the 3d L1 timelock." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "kinto": { - "id": "kinto", - "name": "Kinto", - "slug": "kinto", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "Arbitrum", - "purposes": ["Universal", "RWA"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "facet": { + "id": "facet", + "name": "Facet Bluebird", + "slug": "facet", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumCalldata", + "type": "DA", + "name": "Ethereum with calldata", + "description": "This project is posting its data to Ethereum as calldata", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "BasedSequencing", + "type": "Other", + "name": "Based Sequencing", + "description": "This project is ordering its transactions through Ethereum block proposers", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Based Sequencing" + } + } + ], + "stage": "Stage 2", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "Users can self sequence transactions by sending them on L1. There is no privileged operator." + }, + { + "name": "State Validation", + "value": "Fraud proofs (1R, ZK)", + "sentiment": "good", + "description": "Actors watching the chain can challenge state proposals, and challenged proposals must provide ZK proofs. SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "∞", + "sentiment": "good", + "description": "Users can exit funds at any time because contracts are not upgradeable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can propose blocks if accompanied by a validity proof. Only the whitelisted proposers can propose state roots for recent blocks optimistically. Anyone can propose optimistically for L2 blocks that are older than 14d." + } + ], + "tvs": { + "breakdown": { + "total": 1430415.125, + "native": 0, + "canonical": 178.0500030517578, + "external": 1430237.109375, + "ether": 1430415.1593780518, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12519745191377474, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 39999828.32, - "ether": 27088916.2, - "stablecoin": 11195958.26, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.116694796352584 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "warning", - "description": "Fraud proofs allow 5 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "xlayer": { - "id": "xlayer", - "name": "X Layer", - "slug": "xlayer", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "VM", - "name": "EVM" + }, + "shape": { + "id": "shape", + "name": "Shape", + "slug": "shape", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Alchemy", + "type": "RaaS", + "name": "Alchemy", + "description": "This project was deployed via the rollup-as-a-service provider Alchemy", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Alchemy" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1368204.375, + "native": 0, + "canonical": 1368204.375, + "external": 0, + "ether": 1368204.375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1485578791865555, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 29748921.51, - "ether": 11556721.19, - "stablecoin": 6714961.52, - "associated": 7585767.08 - }, - "associatedTokens": ["OKB"], - "change7d": 0.054826351006249 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "karak": { - "id": "karak", - "name": "Karak", - "slug": "karak", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "redstone": { + "id": "redstone", + "name": "Redstone", + "slug": "redstone", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain. A custom data availability (DA) provider without attestations is used, but data unavailability can be challenged." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1342074.125, + "native": 0, + "canonical": 1342074.0731277466, + "external": 0, + "ether": 1306776.625, + "stablecoin": 35217.078125, + "btc": 0, + "other": 80.37000274658203, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12245398205380198, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 29708868.67, - "ether": 24636329.46, - "stablecoin": 5072539.21, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.130841457092655 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "reya": { - "id": "reya", - "name": "Reya", - "slug": "reya", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "winr": { + "id": "winr", + "name": "WINR", + "slug": "winr", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CelestiaBlobstream", + "type": "DA", + "name": "Celestia with Blobstream", + "description": "This project utilizes Celestia and has Blobstream enabled, facilitating the bridging of data availability commitments between Celestia and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 15 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 1h challenge period." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are checked against the Blobstream bridge data roots, signed off by Celestia validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 6d 9h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 1291672.25, + "native": 0, + "canonical": 1262811.25, + "external": 28860.899475097656, + "ether": 7886.579833984375, + "stablecoin": 20974.31964111328, + "btc": 0, + "other": 1262811.25, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1262811.25 + }, + "change7d": -0.12869702093242952, + "associatedTokens": [ + { + "symbol": "WINR", + "icon": "https://assets.coingecko.com/coins/images/29340/large/WINR.png?1696528290" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 28116918.2, - "ether": 384280.19, - "stablecoin": 27732638.01, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0120905632803772 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "sanko": { - "id": "sanko", - "name": "Sanko", - "slug": "sanko", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming", "Social"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "ancient": { + "id": "ancient", + "name": "Ancient8", + "slug": "ancient8", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1206409.125, + "native": 0, + "canonical": 1206409.09375, + "external": 0, + "ether": 488136.53125, + "stablecoin": 0, + "btc": 0, + "other": 718272.5625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 718272.5625 + }, + "change7d": -0.153777460025862, + "associatedTokens": [ + { + "symbol": "A8", + "icon": "https://coin-images.coingecko.com/coins/images/39170/large/A8_Token-04_200x200.png?1720798300" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 26478275.82, - "ether": 134830.61, - "stablecoin": 164891.89, - "associated": 25445806.84 - }, - "associatedTokens": ["DMT"], - "change7d": 0.403519605464031 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "Fraud proofs only allow 3 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/3 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 25d 10h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "cyber": { - "id": "cyber", - "name": "Cyber", - "slug": "cyber", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Social"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "AltLayer" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "shibarium": { + "id": "shibarium", + "name": "Shibarium", + "slug": "shibarium", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 9/12 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1189732.5, + "native": 0, + "canonical": 1189732.4501030892, + "external": 0, + "ether": 6613.870078086853, + "stablecoin": 38.95000058412552, + "btc": 0.10999999940395355, + "other": 1183079.5200244188, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1181610.5200244188 + }, + "change7d": -0.08968669095288484, + "associatedTokens": [ + { + "symbol": "SHIB", + "icon": "https://assets.coingecko.com/coins/images/11939/large/shiba.png?1696511800" + }, + { + "symbol": "BONE", + "icon": "https://coin-images.coingecko.com/coins/images/16916/large/bone_icon.png?1696516487" + }, + { + "symbol": "LEASH", + "icon": "https://coin-images.coingecko.com/coins/images/15802/large/Leash.png?1696515425" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 24735455, - "ether": 1547203.07, - "stablecoin": 16557.48, - "associated": 23114679.3 - }, - "associatedTokens": ["CYBER"], - "change7d": 0.071924973076988 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely on data that is NOT published onchain. Cyber uses a custom data availability system without attestations, but allowing data challenges." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "zora": { - "id": "zora", - "name": "Zora", - "slug": "zora", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "NFT"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "superposition": { + "id": "superposition", + "name": "Superposition", + "slug": "superposition", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 15 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 1167101.75, + "native": 0, + "canonical": 914970.9743366241, + "external": 252130.6875, + "ether": 824385.8125, + "stablecoin": 252165.71750068665, + "btc": 61601.421875, + "other": 28948.7099609375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12754137720014724, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 24484494.96, - "ether": 24196533.6, - "stablecoin": 287961.36, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.227443278573365 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "sorare": { - "id": "sorare", - "name": "Sorare", - "slug": "sorare", - "type": "layer2", - "category": "Validium", - "provider": "StarkEx", - "purposes": ["NFT", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "xai": { + "id": "xai", + "name": "Xai", + "slug": "xai", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 3/5 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 1134452, + "native": 0, + "canonical": 1134451.9565623403, + "external": 0, + "ether": 49258.7890625, + "stablecoin": 89587.36750030518, + "btc": 0, + "other": 995605.7999995351, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 995586.5 + }, + "change7d": -0.09292948797521017, + "associatedTokens": [ + { + "symbol": "XAI", + "icon": "https://assets.coingecko.com/coins/images/34258/large/2024-01-09_16.31.28.jpg?1704789138" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 20899022.43, - "ether": 20899022.43, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.203376639210819 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/4 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. NFTs will be minted on L1 to exit." - } - ] - }, - "kroma": { - "id": "kroma", - "name": "Kroma", - "slug": "kroma", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "Infra", - "name": "Superchain" + }, + "ternoa": { + "id": "ternoa", + "name": "Ternoa", + "slug": "ternoa", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal", + "Payments" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "CDKErigon", + "type": "Stack", + "name": "Built on the CDK Erigon stack", + "description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Agglayer CDK" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + }, + { + "id": "Zeeve", + "type": "RaaS", + "name": "Zeeve", + "description": "This project was deployed via the rollup-as-a-service provider Zeeve", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Zeeve" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The Security Council can remove the delay on upgrades.", + "sentiment": "bad" + }, + "description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 968329.375, + "native": 0, + "canonical": 369862.3700841591, + "external": 598466.904296875, + "ether": 23917.58984375, + "stablecoin": 540809.8726558685, + "btc": 43584.941875457764, + "other": 360016.8700059578, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 359623.5 + }, + "change7d": -0.058702168969281376, + "associatedTokens": [ + { + "symbol": "CAPS", + "icon": "https://coin-images.coingecko.com/coins/images/15921/large/e55393fa-7b4d-40f5-9f36-9a8a6bdcb570.png?1696515534" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 19107377.14, - "ether": 5810355.5, - "stablecoin": 645832.11, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0553655572348464 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT, ZK)", - "sentiment": "bad", - "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. ZK proofs are used to adjudicate the correctness of the last step. The challenge protocol can be subject to delay attacks and can fail under certain conditions. The current system doesn't use posted L2 txs batches on L1 as inputs to prove a fault, meaning that DA is not enforced." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." - } - ] - }, - "orderly": { - "id": "orderly", - "name": "Orderly Network", - "shortName": "Orderly", - "slug": "orderly", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "brine": { + "id": "brine", + "name": "tanX", + "slug": "tanx", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "StarkEx" + ], + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "StarkEx", + "type": "Stack", + "name": "StarkEx", + "description": "This project was deployed utilizing the StarkEx technology from StarkWare", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "StarkEx" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/4 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds." + } + ], + "tvs": { + "breakdown": { + "total": 943035.0625, + "native": 0, + "canonical": 943035.0815698281, + "external": 0, + "ether": 136990.859375, + "stablecoin": 607431.828125, + "btc": 132297.875, + "other": 66314.5190698281, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.026025920380321144, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 18170986.93, - "ether": 629742.57, - "stablecoin": 17541244.36, - "associated": 0 - }, - "associatedTokens": [], - "change7d": -0.0326205153974277 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "sxnetwork": { - "id": "sxnetwork", - "name": "SX Network", - "slug": "sxnetwork", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Betting"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "soon": { + "id": "soon", + "name": "Soon Alpha Mainnet", + "shortName": "Soon", + "slug": "soon", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "SolanaVM", + "type": "VM", + "name": "SolanaVM", + "description": "This project uses the Solana Virtual Machine to run its smart contracts", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "SolanaVM" + } + }, + { + "id": "EigenDA", + "type": "DA", + "name": "EigenDA", + "description": "This project is posting its data to EigenDA", + "action": { + "type": "publicDaHighlight", + "slug": "eigenda" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on EigenDA. The sequencer is publishing data to EigenDA v2. Sequencer transaction data roots are not checked against the DACert Verifier onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 884739.375, + "native": 0, + "canonical": 884739.5000963211, + "external": 0, + "ether": 789514.7600045204, + "stablecoin": 94784.49010324478, + "btc": 22.420000076293945, + "other": 417.82998847961426, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1192925039170677, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 18089436.85, - "ether": 0, - "stablecoin": 0, - "associated": 18089436.85 - }, - "associatedTokens": ["SX"], - "change7d": 0.369323332768177 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 4d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "zkfair": { - "id": "zkfair", - "name": "ZKFair", - "slug": "zkfair", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "PolygonCDK" + }, + "metal": { + "id": "metal", + "name": "Metal", + "slug": "metal", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 843774.375, + "native": 0, + "canonical": 843774.4000244141, + "external": 0, + "ether": 843211, + "stablecoin": 563.4000244140625, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.10315403641767018, + "associatedTokens": [ + { + "symbol": "MTL" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 16104367.07, - "ether": 1458252.13, - "stablecoin": 7634176.19, - "associated": 6912540.91 - }, - "associatedTokens": ["ZKF"], - "change7d": 0.000822836103314683 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 3/5 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The ZkFair Owner can upgrade with no delay.", - "sentiment": "bad" - }, - "description": "Even though there is a 1d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "paradex": { - "id": "paradex", - "name": "Paradex", - "slug": "paradex", - "type": "layer2", - "category": "ZK Rollup", - "provider": "Starknet", - "purposes": ["Universal", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "CairoVM" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "Fork", - "name": "StarknetFork" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "fluence": { + "id": "fluence", + "name": "Fluence", + "slug": "fluence", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1mo 10d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 6 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 783328.4375, + "native": 0, + "canonical": 783328.4296875, + "external": 0, + "ether": 0, + "stablecoin": 72993.7421875, + "btc": 0, + "other": 710334.6875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 710334.6875 + }, + "change7d": -0.15747003610846066, + "associatedTokens": [ + { + "symbol": "FLT", + "icon": "https://coin-images.coingecko.com/coins/images/36339/large/IMG_3928.png?1727165842" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 13897955.03, - "ether": 0, - "stablecoin": 13897955.03, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.00218541088320001 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "Onchain (SD)", - "sentiment": "good", - "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "thebinaryholdings": { - "id": "thebinaryholdings", - "name": "The Binary Holdings", - "shortName": "Binary", - "slug": "thebinaryholdings", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "dbk": { + "id": "dbk", + "name": "DeBank Chain", + "slug": "dbk", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 727355.5625, + "native": 0, + "canonical": 727355.5625, + "external": 0, + "ether": 727355.5625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1291291702529873, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 13758922.67, - "ether": 0, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.31478608861962 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "silicon": { - "id": "silicon", - "name": "Silicon", - "slug": "silicon", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "VM", - "name": "EVM" + }, + "moonchain": { + "id": "moonchain", + "name": "MXCzkEVM Moonchain", + "shortName": "Moonchain", + "slug": "moonchain", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Taiko" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 576306.875, + "native": 0, + "canonical": 576306.8499996364, + "external": 0, + "ether": 25.229999631643295, + "stablecoin": 1.8700000047683716, + "btc": 0, + "other": 576279.75, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 576279.75 + }, + "change7d": -0.3269803728306747, + "associatedTokens": [ + { + "symbol": "MXC", + "icon": "https://assets.coingecko.com/coins/images/4604/large/M_1-modified.png?1712206949" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 13201491.75, - "ether": 1619201.13, - "stablecoin": 7206378.44, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.039085095985163 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/3 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "bobanetwork": { - "id": "bobanetwork", - "name": "Boba Network", - "shortName": "Boba", - "slug": "bobanetwork", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "degen": { + "id": "degen", + "name": "Degen Chain", + "slug": "degen", + "type": "layer3", + "hostChain": "Base Chain", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Base", + "type": "L3ParentChain", + "name": "Built on top of Base", + "description": "The project has Base as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Base" + } + }, + { + "id": "Alchemy", + "type": "RaaS", + "name": "Alchemy", + "description": "This project was deployed via the rollup-as-a-service provider Alchemy", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Alchemy" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 4d 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/3 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 6d 15h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 558640.125, + "native": 0, + "canonical": 554357.875, + "external": 4282.230041503906, + "ether": 3514.820068359375, + "stablecoin": 767.4099731445312, + "btc": 0, + "other": 554357.875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 554357.875 + }, + "change7d": -0.16181132750655747, + "associatedTokens": [ + { + "symbol": "DEGEN", + "icon": "https://assets.coingecko.com/coins/images/34515/large/android-chrome-512x512.png?1706198225" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 12577575.33, - "ether": 5237949.65, - "stablecoin": 1776192.08, - "associated": 4589644.46 - }, - "associatedTokens": ["BOBA"], - "change7d": 0.0929612214701909 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "deversifi": { - "id": "deversifi", - "name": "rhino.fi", - "slug": "rhinofi", - "type": "layer2", - "category": "Validium", - "provider": "StarkEx", - "purposes": ["Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "alienx": { + "id": "alienx", + "name": "AlienX", + "slug": "alienx", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming", + "AI", + "NFT" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 503810.0625, + "native": 0, + "canonical": 503810.0477294922, + "external": 0, + "ether": 471348.4375, + "stablecoin": 31112.490234375, + "btc": 0, + "other": 1349.1199951171875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.11850958397190936, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 11873190.92, - "ether": 5498677.81, - "stablecoin": 4252326.88, - "associated": 0 - }, - "associatedTokens": ["DVF"], - "change7d": 0.0419237423124115 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 4/7 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable. Users can be explicitly censored from withdrawing (Blocklist on L1)." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds." - } - ] - }, - "winr": { - "id": "winr", - "name": "WINR", - "slug": "winr", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "funki": { + "id": "funki", + "name": "Funki", + "slug": "funki", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "AltLayer", + "type": "RaaS", + "name": "AltLayer", + "description": "This project was deployed via the rollup-as-a-service provider AltLayer", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "AltLayer" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain. A custom data availability (DA) provider without attestations is used, but data unavailability can be challenged." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 485378.5, + "native": 0, + "canonical": 485378.515001297, + "external": 0, + "ether": 188474.5, + "stablecoin": 66.39000129699707, + "btc": 0, + "other": 296837.625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.2413036548364882, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 7275493.91, - "ether": 412051.47, - "stablecoin": 2051745.9, - "associated": 4787659.44 - }, - "associatedTokens": ["WINR"], - "change7d": 0.160963349188553 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 1h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 19d 3h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "brine": { - "id": "brine", - "name": "tanX", - "slug": "tanx", - "type": "layer2", - "category": "Validium", - "provider": "StarkEx", - "purposes": ["Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "b3": { + "id": "b3", + "name": "B3", + "slug": "b3", + "type": "layer3", + "hostChain": "Base Chain", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Base", + "type": "L3ParentChain", + "name": "Built on top of Base", + "description": "The project has Base as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Base" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 477806.25, + "native": 0, + "canonical": 477806.240234375, + "external": 0, + "ether": 464715.75, + "stablecoin": 13090.490234375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1228431497972875, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 6326832.99, - "ether": 190488.45, - "stablecoin": 5936545.38, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 3.96725138262346 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/4 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds." - } - ] - }, - "morph": { - "id": "morph", - "name": "Morph", - "slug": "morph", - "type": "layer2", - "category": "Optimistic Rollup", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "breakdown": { - "total": 5359541.9, - "ether": 2742640.8, - "stablecoin": 2096820.41, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 1.82814812957365 - }, - "stage": "UnderReview", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "degen": { - "id": "degen", - "name": "Degen Chain", - "slug": "degen", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Social"], - "isArchived": false, - "hostChain": "Base", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Base" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "everclear": { + "id": "everclear", + "name": "Everclear Hub", + "slug": "everclear", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Interoperability" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 4d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 6 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 415091.875, + "native": 0, + "canonical": 192116.8125, + "external": 222975.078125, + "ether": 192116.8125, + "stablecoin": 0, + "btc": 0, + "other": 222975.078125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 222975.078125 + }, + "change7d": -0.13950125570674943, + "associatedTokens": [ + { + "symbol": "NEXT" + }, + { + "symbol": "CLEAR", + "icon": "https://coin-images.coingecko.com/coins/images/52496/large/photo_2024-06-03_12-14-59_%281%29.png?1733450397" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 3943546.63, - "ether": 0, - "stablecoin": 0, - "associated": 3943546.63 - }, - "associatedTokens": ["DEGEN"], - "change7d": -0.0369610374110584 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1000d 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 6d 15h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "shape": { - "id": "shape", - "name": "Shape", - "slug": "shape", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Alchemy" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "river": { + "id": "river", + "name": "Towns", + "slug": "towns", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 396871.21875, + "native": 0, + "canonical": 396871.21875, + "external": 0, + "ether": 396871.21875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12534346952829467, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 3836315.09, - "ether": 3836315.09, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0796164999344473 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "astarzkevm": { - "id": "astarzkevm", - "name": "Astar zkEVM", - "slug": "astarzkevm", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "VM", - "name": "EVM" + }, + "zkfair": { + "id": "zkfair", + "name": "ZKFair", + "slug": "zkfair", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "CDKErigon", + "type": "Stack", + "name": "Built on the CDK Erigon stack", + "description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Agglayer CDK" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." + }, + { + "name": "State Validation", + "value": "Validity proofs (SN)", + "sentiment": "good", + "description": "SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 3/5 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The ZkFair Owner can upgrade with no delay.", + "sentiment": "bad" + }, + "description": "Even though there is a 1d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." + } + ], + "tvs": { + "breakdown": { + "total": 274644.53125, + "native": 236990.71875, + "canonical": 37653.81964492798, + "external": 0, + "ether": 10364.7900390625, + "stablecoin": 25106.409576416016, + "btc": 2159.530029296875, + "other": 237013.8087501526, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 236990.71875 + }, + "change7d": -0.9493457922142019, + "associatedTokens": [ + { + "symbol": "ZKF", + "icon": "https://assets.coingecko.com/coins/images/34288/large/r8A3J3kf_400x400.jpg?1704455147" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 3716293.75, - "ether": 2035537.14, - "stablecoin": 1676918.14, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0701604665166837 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 3/5 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "xai": { - "id": "xai", - "name": "Xai", - "slug": "xai", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "ham": { + "id": "ham", + "name": "Ham", + "slug": "ham", + "type": "layer3", + "hostChain": "Base Chain", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Base", + "type": "L3ParentChain", + "name": "Built on top of Base", + "description": "The project has Base as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Base" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 263085.6875, + "native": 0, + "canonical": 263085.67390823364, + "external": 0, + "ether": 241803.09375, + "stablecoin": 77.80000305175781, + "btc": 0, + "other": 21204.780155181885, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.14825621893693175, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 2682737.32, - "ether": 215598.46, - "stablecoin": 130247.06, - "associated": 2336835.36 - }, - "associatedTokens": ["XAI"], - "change7d": 0.172507890170786 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/7 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 25d 10h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "mint": { - "id": "mint", - "name": "Mint", - "slug": "mint", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "NFT"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "wirex": { + "id": "wirex", + "name": "Wirex Pay Chain", + "slug": "wirex", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal", + "Payments" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "CDKErigon", + "type": "Stack", + "name": "Built on the CDK Erigon stack", + "description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Agglayer CDK" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + }, + { + "id": "Zeeve", + "type": "RaaS", + "name": "Zeeve", + "description": "This project was deployed via the rollup-as-a-service provider Zeeve", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Zeeve" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The Security Council can remove the delay on upgrades.", + "sentiment": "bad" + }, + "description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 259949.703125, + "native": 0, + "canonical": 259949.68579101562, + "external": 0, + "ether": 3155.929931640625, + "stablecoin": 256793.755859375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.004912945559602866, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 2474608.79, - "ether": 1823743.75, - "stablecoin": 340795.63, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.113352480744416 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "polynomial": { - "id": "polynomial", - "name": "Polynomial", - "slug": "polynomial", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "penchain": { + "id": "penchain", + "name": "Pentagon Chain", + "slug": "penchain", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "CDKErigon", + "type": "Stack", + "name": "Built on the CDK Erigon stack", + "description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Agglayer CDK" + } + }, + { + "id": "Agglayer", + "type": "Infra", + "name": "Part of the Agglayer", + "description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Agglayer" + } + }, + { + "id": "Zeeve", + "type": "RaaS", + "name": "Zeeve", + "description": "This project was deployed via the rollup-as-a-service provider Zeeve", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Zeeve" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "warning": { + "value": "The Security Council can remove the delay on upgrades.", + "sentiment": "bad" + }, + "description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 233314, + "native": 0, + "canonical": 233314.0025024414, + "external": 0, + "ether": 165.19000244140625, + "stablecoin": 0, + "btc": 0, + "other": 233148.8125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 233148.8125 + }, + "change7d": 0.005060607820831731, + "associatedTokens": [ + { + "symbol": "PC", + "icon": "https://coin-images.coingecko.com/coins/images/66638/large/pentagon-chain-token-fcp.png?1750094674" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 2359746.22, - "ether": 55973.27, - "stablecoin": 2170728.42, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.08117353978076 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "redstone": { - "id": "redstone", - "name": "Redstone", - "slug": "redstone", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "oevnetwork": { + "id": "oevnetwork", + "name": "OEV Network", + "slug": "oev", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Oracles" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 180412.265625, + "native": 0, + "canonical": 180412.265625, + "external": 0, + "ether": 180412.265625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12486361030458826, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 2072912, - "ether": 2046926.19, - "stablecoin": 25749.9, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.18667240361929 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely on data that is NOT published onchain. Redstone uses a custom data availability provider without attestations, relying though on DA challenges." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "zkspace": { - "id": "zkspace", - "name": "ZKSpace", - "slug": "zkspace", - "type": "layer2", - "category": "ZK Rollup", - "provider": "ZKsync Lite", - "purposes": ["NFT", "Exchange", "Payments"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Fork", - "name": "ZKsyncLiteFork" + }, + "myria": { + "id": "myria", + "name": "Myria", + "slug": "myria", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "StarkEx" + ], + "purposes": [ + "NFT", + "Exchange", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "AppChain", + "type": "VM", + "name": "Application-specific chain", + "description": "This project is built to operate a specific application", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "AppChain" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "StarkEx", + "type": "Stack", + "name": "StarkEx", + "description": "This project was deployed utilizing the StarkEx technology from StarkWare", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "StarkEx" + } + }, + { + "id": "SHARP", + "type": "Infra", + "name": "Uses SHARP", + "description": "The project uses a shared prover contract - SHARP", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "SHARP" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Force via L1", + "sentiment": "good", + "description": "Users can force the sequencer to include a transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST)", + "sentiment": "good", + "description": "STARKs are zero knowledge proofs that ensure state correctness." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/5 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "1d", + "sentiment": "bad", + "description": "Users have 1d to exit funds in case of an unwanted regular upgrade. There is a 8d delay before a regular upgrade is applied, and withdrawals can take up to 7d to be processed." + }, + { + "name": "Proposer Failure", + "value": "Use escape hatch", + "sentiment": "good", + "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. NFTs will be minted on L1 to exit." + } + ], + "tvs": { + "breakdown": { + "total": 174241.953125, + "native": 0, + "canonical": 174241.953125, + "external": 0, + "ether": 174241.953125, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12655133980147548, + "associatedTokens": [ + { + "symbol": "MYRIA" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 1935240.99, - "ether": 134024.79, - "stablecoin": 23011.72, - "associated": 1707170.46 - }, - "associatedTokens": ["ZKS"], - "change7d": -0.0139578514429549 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 3d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "5d", - "sentiment": "bad", - "description": "Users have 5d to exit funds in case of an unwanted regular upgrade. There is a 8d delay before a regular upgrade is applied, and withdrawals can take up to 3d to be processed." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a zero knowledge proof of funds." - } - ] - }, - "ancient": { - "id": "ancient", - "name": "Ancient8", - "slug": "ancient8", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "swan": { + "id": "swan", + "name": "Swan Chain", + "slug": "swan", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "AI", + "Storage" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 172813.046875, + "native": 0, + "canonical": 172813.046875, + "external": 0, + "ether": 172813.046875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1253428036422951, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 1510795.21, - "ether": 624177.06, - "stablecoin": 0, - "associated": 886618.15 - }, - "associatedTokens": ["A8"], - "change7d": 0.100651648600796 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "hychain": { - "id": "hychain", - "name": "HYCHAIN", - "slug": "hychain", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "onyx": { + "id": "onyx", + "name": "Onyx", + "slug": "onyx", + "type": "layer3", + "hostChain": "Base Chain", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs only allow 4 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 1mo 3d challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 1mo 9d of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 155427.5625, + "native": 0, + "canonical": 155427.55615234375, + "external": 0, + "ether": 14613.91943359375, + "stablecoin": 0, + "btc": 18350.41015625, + "other": 122463.2265625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 122463.2265625 + }, + "change7d": -0.2195269456562854, + "associatedTokens": [ + { + "symbol": "XCN", + "icon": "https://coin-images.coingecko.com/coins/images/24210/large/onyxlogo.jpg?1696523397" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 1488688.94, - "ether": 0, - "stablecoin": 0, - "associated": 1488688.94 - }, - "associatedTokens": ["TOPIA"], - "change7d": 0.374977337920098 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "xchain": { - "id": "xchain", - "name": "XCHAIN", - "slug": "xchain", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "arenaz": { + "id": "arenaz", + "name": "Arena-Z", + "slug": "arenaz", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 104858.5859375, + "native": 0, + "canonical": 104858.5869140625, + "external": 0, + "ether": 76706.296875, + "stablecoin": 5170.0498046875, + "btc": 0, + "other": 22982.240234375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.11854971638325784, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 1194423.32, - "ether": 28089.82, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": -0.000614588273841865 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "termstructure": { - "id": "termstructure", - "name": "Term Structure", - "slug": "termstructure", - "type": "layer2", - "category": "ZK Rollup", - "provider": "ZKsync Lite", - "purposes": ["Payments", "Exchange", "Lending"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Fork", - "name": "ZKsyncLiteFork" + }, + "appchain": { + "id": "appchain", + "name": "Appchain", + "slug": "appchain", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Espresso", + "type": "DA", + "name": "Espresso", + "description": "This project is posting its data to Espresso", + "action": { + "type": "publicDaHighlight", + "slug": "espresso" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "EspressoPreconfs", + "type": "Other", + "name": "Espresso Preconfs", + "description": "The project integrates with Espresso preconfirmations. The chain batch poster publishes blocks to Espresso Network and runs in a Trusted Execution Environment (TEE) programmed to verify that only Espresso-validated batches reach the host chain.", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Espresso Preconfs" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 3d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 89820.296875, + "native": 0, + "canonical": 89820.296875, + "external": 0, + "ether": 89820.296875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1253434684059277, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 1151246.5, - "ether": 232267.11, - "stablecoin": 588043.05, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0617048699750415 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 14d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (SN)", - "sentiment": "good", - "description": "SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a zero knowledge proof of funds." - } - ] - }, - "alienx": { - "id": "alienx", - "name": "AlienX", - "slug": "alienx", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming", "AI", "NFT"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "powerloom": { + "id": "powerloom", + "name": "Powerloom", + "slug": "powerloom", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Information" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 10 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 80555.7578125, + "native": 0, + "canonical": 80555.75625038147, + "external": 0, + "ether": 0, + "stablecoin": 9.100000381469727, + "btc": 0, + "other": 80546.65625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 80546.65625 + }, + "change7d": -0.35846131064780795, + "associatedTokens": [ + { + "symbol": "POWER", + "icon": "https://coin-images.coingecko.com/coins/images/53319/large/powerloom-200px.png?1736086027" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 1059826.93, - "ether": 1024524.05, - "stablecoin": 21837.56, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.182202016057215 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "fluence": { - "id": "fluence", - "name": "Fluence", - "slug": "fluence", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "form": { + "id": "form", + "name": "Form", + "slug": "form", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 75768.1328125, + "native": 0, + "canonical": 62702, + "external": 13066.1298828125, + "ether": 62702, + "stablecoin": 13066.1298828125, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.10606470502079501, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 878846.76, - "ether": 0, - "stablecoin": 2034.38, - "associated": 876812.38 - }, - "associatedTokens": ["FLT"], - "change7d": -0.0442062518831686 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 40d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "popapex": { - "id": "popapex", - "name": "Proof of Play Apex", - "shortName": "PoP Apex", - "slug": "popapex", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "soonbase": { + "id": "soonbase", + "name": "soonBase", + "slug": "soonbase", + "type": "layer2", + "hostChain": "Ethereum", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 57759.546875, + "native": 0, + "canonical": 57759.54846191406, + "external": 0, + "ether": 56923.1484375, + "stablecoin": 836.4000244140625, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12395182199633692, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 838083.3, - "ether": 838083.3, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.19048371904013 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1001d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 24d 16h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "dbk": { - "id": "dbk", - "name": "DeBank Chain", - "slug": "dbk", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "xchain": { + "id": "xchain", + "name": "XCHAIN", + "slug": "xchain", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow 9 WHITELISTED actors watching the chain to prove that the state is incorrect. There are fewer than 5 Challengers external to the Operator among these. Interactive proofs (INT) require multiple transactions over time to resolve. There is a 5d 14h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 11d 23h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 56854.7578125, + "native": 0, + "canonical": 53448.48828125, + "external": 3406.27001953125, + "ether": 53448.48828125, + "stablecoin": 3406.27001953125, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.11872548006902062, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 802894.82, - "ether": 802894.82, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.181637050442997 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "rari": { - "id": "rari", - "name": "RARI Chain", - "slug": "rari", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "NFT"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "r0ar": { + "id": "r0ar", + "name": "R0ar", + "slug": "r0ar", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Zeeve", + "type": "RaaS", + "name": "Zeeve", + "description": "This project was deployed via the rollup-as-a-service provider Zeeve", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Zeeve" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 49883.51953125, + "native": 0, + "canonical": 49883.5185546875, + "external": 0, + "ether": 33685.328125, + "stablecoin": 16198.1904296875, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.07967110203175043, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 731356.58, - "ether": 637547.3, - "stablecoin": 93684.72, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.513099368987276 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 25d 10h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "swan": { - "id": "swan", - "name": "Swan Chain", - "slug": "swan", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "AI", "Storage"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "gasp": { + "id": "gasp", + "name": "Gasp", + "slug": "gasp", + "type": "layer2", + "hostChain": "Ethereum", + "purposes": [ + "Universal", + "Interoperability" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 48023.23046875, + "native": 0, + "canonical": 48023.230132102966, + "external": 0, + "ether": 9195.000268936157, + "stablecoin": 37634.919921875, + "btc": 12.119999885559082, + "other": 1181.18994140625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.033876321176290136, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 710064.73, - "ether": 710064.73, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.189566233725809 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "publicgoodsnetwork": { - "id": "publicgoodsnetwork", - "name": "Public Goods Network", - "shortName": "PGN", - "slug": "publicgoodsnetwork", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "optopia": { + "id": "optopia", + "name": "Optopia", + "slug": "optopia", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "AI" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 39505.33984375, + "native": 0, + "canonical": 39505.339431762695, + "external": 0, + "ether": 37593.109375, + "stablecoin": 366.0600128173828, + "btc": 0, + "other": 1546.1700439453125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1546.1700439453125 + }, + "change7d": -0.1260792158450701, + "associatedTokens": [ + { + "symbol": "OPAI", + "icon": "https://coin-images.coingecko.com/coins/images/39332/large/OPAI.jpg?1721777150" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 664698.4, - "ether": 582092.55, - "stablecoin": 82605.85, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.159333476702434 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "optopia": { - "id": "optopia", - "name": "Optopia", - "slug": "optopia", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "AI"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "hpp": { + "id": "hpp", + "name": "HPP", + "slug": "hpp", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "AI" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 38514.8515625, + "native": 0, + "canonical": 38514.8515625, + "external": 0, + "ether": 38514.8515625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.003427127278556541, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 650784.65, - "ether": 324752.69, - "stablecoin": 58821.64, - "associated": 267210.32 - }, - "associatedTokens": ["OPAI"], - "change7d": 0.126418538918653 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "alephzero": { - "id": "alephzero", - "name": "Aleph Zero EVM", - "slug": "aleph-zero", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Privacy"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "syndicateframe": { + "id": "syndicateframe", + "name": "Syndicate Frame Chain", + "shortName": "Frame Chain", + "slug": "syndicateframe", + "type": "layer3", + "hostChain": "Base Chain", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Base", + "type": "L3ParentChain", + "name": "Built on top of Base", + "description": "The project has Base as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Base" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 1d delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 28042.33984375, + "native": 0, + "canonical": 28042.33984375, + "external": 0, + "ether": 28042.33984375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1250860125915365, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 372801.69, - "ether": 0, - "stablecoin": 0, - "associated": 372801.69 - }, - "associatedTokens": ["AZERO"], - "change7d": 0.0414324536760904 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 4d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "Fraud proofs only allow 2 WHITELISTED actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "superlumio": { - "id": "superlumio", - "name": "SuperLumio", - "slug": "superlumio", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "race": { + "id": "race", + "name": "Race Network", + "slug": "race", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "RWA" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 27812.5, + "native": 0, + "canonical": 27812.500888824463, + "external": 0, + "ether": 23714.380859375, + "stablecoin": 4093.030029296875, + "btc": 5.090000152587891, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.08803795913910528, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 255793.38, - "ether": 249607.66, - "stablecoin": 5366.71, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.174674105604649 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "ebichain": { - "id": "ebichain", - "name": "Ebi Chain", - "slug": "ebichain", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Conduit" + }, + "muster": { + "id": "muster", + "name": "Muster", + "slug": "muster", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "AltLayer", + "type": "RaaS", + "name": "AltLayer", + "description": "This project was deployed via the rollup-as-a-service provider AltLayer", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "AltLayer" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 1d challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 28d of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 25078.33984375, + "native": 0, + "canonical": 25078.33984375, + "external": 0, + "ether": 25078.33984375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12534365219165955, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 238658.39, - "ether": 238658.39, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186449576646522 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "honeypot": { - "id": "honeypot", - "name": "Honeypot (Cartesi)", - "shortName": "Honeypot", - "slug": "cartesi-honeypot", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "Cartesi Rollups", - "purposes": ["Bug bounty"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "CartesiVM" - }, - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Stack", - "name": "Cartesi" + }, + "deri": { + "id": "deri", + "name": "Deri", + "slug": "deri", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 1d challenge period." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 7d 8h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 19015.900390625, + "native": 0, + "canonical": 19015.900390625, + "external": 0, + "ether": 19015.900390625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12534380246423804, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 230490.19, - "ether": 0, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0660027137283037 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is no delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "∞", - "sentiment": "good", - "description": "Users can exit funds at any time because contracts are not upgradeable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "metal": { - "id": "metal", - "name": "Metal", - "slug": "metal", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "molten": { + "id": "molten", + "name": "Molten Network", + "shortName": "Molten", + "slug": "molten", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CelestiaBlobstream", + "type": "DA", + "name": "Celestia with Blobstream", + "description": "This project utilizes Celestia and has Blobstream enabled, facilitating the bridging of data availability commitments between Celestia and Ethereum.", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "Espresso", + "type": "DA", + "name": "Espresso", + "description": "This project is posting its data to Espresso", + "action": { + "type": "publicDaHighlight", + "slug": "espresso" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "EspressoPreconfs", + "type": "Other", + "name": "Espresso Preconfs", + "description": "The project integrates with Espresso preconfirmations. The chain batch poster publishes blocks to Espresso Network and runs in a Trusted Execution Environment (TEE) programmed to verify that only Espresso-validated batches reach the host chain.", + "action": { + "type": "scalingFilter", + "id": "other", + "value": "Espresso Preconfs" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "warning", + "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are checked against the Blobstream bridge data roots, signed off by Celestia validators." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 15480.849609375, + "native": 0, + "canonical": 15480.849941253662, + "external": 0, + "ether": 26.40999984741211, + "stablecoin": 8808.2998046875, + "btc": 0, + "other": 6646.14013671875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 6646.14013671875 + }, + "change7d": -0.09463048902457805, + "associatedTokens": [ + { + "symbol": "MOLTEN", + "icon": "https://assets.coingecko.com/coins/images/36726/large/moltenmesh.png?1712147407" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 187656.73, - "ether": 187544.95, - "stablecoin": 111.78, - "associated": 0 - }, - "associatedTokens": ["MTL"], - "change7d": 0.192628491975515 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "popboss": { - "id": "popboss", - "name": "Proof of Play Boss", - "shortName": "PoP Boss", - "slug": "popboss", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "ethernity": { + "id": "ethernity", + "name": "Epic Chain", + "slug": "epicchain", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal", + "AI" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 12768.900390625, + "native": 0, + "canonical": 12768.900272369385, + "external": 0, + "ether": 12716.2802734375, + "stablecoin": 23.649999618530273, + "btc": 0, + "other": 28.969999313354492, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1.0399999618530273 + }, + "change7d": -0.1251349062323902, + "associatedTokens": [ + { + "symbol": "ERN", + "icon": "https://coin-images.coingecko.com/coins/images/14238/large/logo_black.png?1715198164" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 172103.01, - "ether": 172103.01, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.239890476575737 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 5d 14h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 24d 16h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "myria": { - "id": "myria", - "name": "Myria", - "slug": "myria", - "type": "layer2", - "category": "Validium", - "provider": "StarkEx", - "purposes": ["NFT", "Exchange", "Gaming"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "StarkEx" - }, - { - "category": "Infra", - "name": "SHARP" + }, + "huddle01": { + "id": "huddle01", + "name": "Huddle01", + "slug": "huddle01", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Information" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 10013.76953125, + "native": 0, + "canonical": 10013.76953125, + "external": 0, + "ether": 10013.76953125, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.125344039504653, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 165657.93, - "ether": 165657.93, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": ["MYRIA"], - "change7d": 0.186764849055967 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Force via L1", - "sentiment": "good", - "description": "Users can force the sequencer to include a withdrawal transaction by submitting a request through L1. If the sequencer censors or is down for for more than 7d, users can use the exit hatch to withdraw their funds." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST)", - "sentiment": "good", - "description": "STARKs are zero knowledge proofs that ensure state correctness." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/5 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Use escape hatch", - "sentiment": "good", - "description": "Users are able to trustlessly exit by submitting a Merkle proof of funds. NFTs will be minted on L1 to exit." - } - ] - }, - "ham": { - "id": "ham", - "name": "Ham", - "slug": "ham", - "type": "layer3", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Social"], - "isArchived": false, - "hostChain": "Base", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "L3ParentChain", - "name": "Base" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "VM", - "name": "EVM" + }, + "cheese": { + "id": "cheese", + "name": "CheeseChain", + "slug": "cheese", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 8041.419921875, + "native": 0, + "canonical": 8041.419921875, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 8041.419921875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 8041.419921875 + }, + "change7d": -0.24677595336502434, + "associatedTokens": [ + { + "symbol": "CHEESE", + "icon": "https://coin-images.coingecko.com/coins/images/37156/large/cheese_icon_500x500.png?1713499473" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 158456.43, - "ether": 158347.83, - "stablecoin": 81.44, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.191572043492833 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "cheese": { - "id": "cheese", - "name": "CheeseChain", - "slug": "cheese", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" - }, - { - "category": "RaaS", - "name": "Caldera" + }, + "rufus": { + "id": "rufus", + "name": "Rufus", + "slug": "rufus", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 4369.81982421875, + "native": 0, + "canonical": 4369.81982421875, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 4369.81982421875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 4369.81982421875 + }, + "change7d": -0.14371661463553909, + "associatedTokens": [ + { + "symbol": "ELON", + "icon": "https://assets.coingecko.com/coins/images/14962/large/6GxcPRo3_400x400.jpg?1696514622" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 115431.53, - "ether": 0, - "stablecoin": 0, - "associated": 115431.53 - }, - "associatedTokens": ["CHEESE"], - "change7d": -0.187586603260365 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "parallel": { - "id": "parallel", - "name": "Parallel", - "slug": "parallel", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "VM", - "name": "EVM" + }, + "automata": { + "id": "automata", + "name": "Automata", + "slug": "automata", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "AltLayer", + "type": "RaaS", + "name": "AltLayer", + "description": "This project was deployed via the rollup-as-a-service provider AltLayer", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "AltLayer" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. More details in project overview." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain. A custom data availability (DA) provider without attestations is used, but data unavailability can be challenged." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 4360.490234375, + "native": 0, + "canonical": 4360.490234375, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 4360.490234375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 4360.490234375 + }, + "change7d": -0.08764136639392472, + "associatedTokens": [ + { + "symbol": "ATA", + "icon": "https://coin-images.coingecko.com/coins/images/15985/large/ATA_Icon_%28Profile_2%29.png?1720487988" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 78548.03, - "ether": 78548.03, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186404445827988 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d challenge period." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 8h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "edgeless": { - "id": "edgeless", - "name": "Edgeless", - "slug": "edgeless", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "t3rn": { + "id": "t3rn", + "name": "t3rn", + "slug": "t3rn", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [], + "purposes": [ + "Interoperability" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumCalldata", + "type": "DA", + "name": "Ethereum with calldata", + "description": "This project is posting its data to Ethereum as calldata", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 3959.83984375, + "native": 0, + "canonical": 3959.8399047851562, + "external": 0, + "ether": 585.1699829101562, + "stablecoin": 0, + "btc": 0, + "other": 3374.669921875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.020815964158112044, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 61505.01, - "ether": 61505.01, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.187286185245571 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "everclear": { - "id": "everclear", - "name": "Everclear Hub", - "slug": "everclear", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Interoperability"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "rarimo": { + "id": "rarimo", + "name": "Rarimo", + "slug": "rarimo", + "type": "layer2", + "hostChain": "Ethereum", + "purposes": [ + "Universal", + "Privacy" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 3738.31005859375, + "native": 0, + "canonical": 3738.31005859375, + "external": 0, + "ether": 3738.31005859375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12534300262086617, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 59513.86, - "ether": 59513.86, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": ["NEXT"], - "change7d": 0.186449476698276 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 4d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "river": { - "id": "river", - "name": "River", - "slug": "river", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "phala": { + "id": "phala", + "name": "Phala", + "slug": "phala", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPSuccinct", + "type": "Stack", + "name": "Built on the OP Succinct stack", + "description": "The project is built on the OP Succinct stack" + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 3344.4599609375, + "native": 0, + "canonical": 3344.45991211012, + "external": 0, + "ether": 3344.409912109375, + "stablecoin": 0, + "btc": 0, + "other": 0.05000000074505806, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0.05000000074505806 + }, + "change7d": -0.12534096862992827, + "associatedTokens": [ + { + "symbol": "PHA", + "icon": "https://assets.coingecko.com/coins/images/12451/large/phala.png?1696512270" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 59061.73, - "ether": 59061.73, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.18644952022118 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "hypr": { - "id": "hypr", - "name": "Hypr", - "slug": "hypr", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "jovay": { + "id": "jovay", + "name": "Jovay", + "slug": "jovay", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal", + "RWA" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "TEE attestations", + "sentiment": "bad", + "description": "State roots are accepted when attested by a permissioned TEE through the TEEVerifierProxy. There is no challenge mechanism and no validity proofs can be submitted." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 2106.8701171875, + "native": 0, + "canonical": 2106.8701171875, + "external": 0, + "ether": 2106.8701171875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.09434130970168086, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 58268.16, - "ether": 58268.16, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186449733829403 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "oevnetwork": { - "id": "oevnetwork", - "name": "OEV Network", - "slug": "oev", - "type": "layer2", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Oracles"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "dodochain": { + "id": "dodochain", + "name": "Birdlayer", + "slug": "dodochain", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Interoperability" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 1699.1199951171875, + "native": 0, + "canonical": 1699.1199951171875, + "external": 0, + "ether": 1699.1199951171875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12534167541114005, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 55514.85, - "ether": 55514.85, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.192865222088619 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "molten": { - "id": "molten", - "name": "Molten Network", - "shortName": "Molten", - "slug": "molten", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "settlus": { + "id": "settlus", + "name": "Settlus", + "slug": "settlus", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + }, + { + "id": "Alchemy", + "type": "RaaS", + "name": "Alchemy", + "description": "This project was deployed via the rollup-as-a-service provider Alchemy", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Alchemy" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1331.3599853515625, + "native": 0, + "canonical": 1331.3599853515625, + "external": 0, + "ether": 1331.3599853515625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.12534246690692852, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 49359.4, - "ether": 21.18, - "stablecoin": 35317.94, - "associated": 14020.28 - }, - "associatedTokens": ["MOLTEN"], - "change7d": 0.0350861998642376 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 25d 10h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "wirex": { - "id": "wirex", - "name": "Pay Chain", - "slug": "wirex", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal", "Payments"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gateway" - }, - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "VM", - "name": "EVM" + }, + "forknet": { + "id": "forknet", + "name": "Forknet", + "slug": "forknet", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring." + }, + { + "name": "State Validation", + "value": "None", + "sentiment": "bad", + "description": "Currently the system permits invalid state roots. 'Pessimistic' proofs only validate the bridge accounting." + }, + { + "name": "Data Availability", + "value": "Onchain", + "sentiment": "good", + "description": "All of the data needed for proof construction is published on Ethereum L1." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 1079.4100341796875, + "native": 0, + "canonical": 1079.4100189208984, + "external": 0, + "ether": 831.9800148010254, + "stablecoin": 116.03000259399414, + "btc": 46.400001525878906, + "other": 35.52000045776367, + "rwaRestricted": 0, + "rwaPublic": 49.47999954223633, + "associated": 0 + }, + "change7d": 0.7863634972456146, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 40374.61, - "ether": 1654.05, - "stablecoin": 38720.56, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.026423902039953 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "xterio": { - "id": "xterio", - "name": "Xterio Chain", - "slug": "xterio", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "CustomDA" - }, - { - "category": "RaaS", - "name": "AltLayer" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "wonder": { + "id": "wonder", + "name": "Wonder", + "slug": "wonder", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 649.6799926757812, + "native": 0, + "canonical": 649.6799926757812, + "external": 0, + "ether": 649.6799926757812, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1253399835065887, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 22983.01, - "ether": 22983.01, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186450118835965 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation rely on data that is NOT published onchain. Xterio uses a custom data availability provider without attestations, relying though on DA challenges." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "syndicateframe": { - "id": "syndicateframe", - "name": "Syndicate Frame Chain", - "shortName": "Frame Chain", - "slug": "syndicateframe", - "type": "layer3", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "Social"], - "isArchived": false, - "hostChain": "Base", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "L3ParentChain", - "name": "Base" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "reddiozkvm": { + "id": "reddiozkvm", + "name": "Reddio", + "slug": "reddiozkvm", + "type": "layer2", + "hostChain": "Ethereum", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 317.80999755859375, + "native": 0, + "canonical": 317.80999183654785, + "external": 0, + "ether": 153.64999389648438, + "stablecoin": 21.989999771118164, + "btc": 0, + "other": 142.1699981689453, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 142.1699981689453 + }, + "change7d": -0.061427567681954565, + "associatedTokens": [ + { + "symbol": "RDO", + "icon": "https://coin-images.coingecko.com/coins/images/55332/large/reddio.png?1745470527" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 18786.69, - "ether": 18786.69, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186449358926589 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "deri": { - "id": "deri", - "name": "Deri", - "slug": "deri", - "type": "layer3", - "category": "Optimistic Rollup", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "forta": { + "id": "forta", + "name": "Forta", + "slug": "forta", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 309.9599914550781, + "native": 0, + "canonical": 309.9599914550781, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 309.9599914550781, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.08325691377382527, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 17037.6, - "ether": 17037.6, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186450002263208 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 1d challenge period." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 20d 2h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "lambda": { - "id": "lambda", - "name": "Lambda Chain", - "slug": "lambda", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "Storage"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "earnm": { + "id": "earnm", + "name": "Earnm", + "slug": "earnm", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Social" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Alchemy", + "type": "RaaS", + "name": "Alchemy", + "description": "This project was deployed via the rollup-as-a-service provider Alchemy", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Alchemy" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 5d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 2/3 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 54.2400016784668, + "native": 0, + "canonical": 54.2400016784668, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 54.2400016784668, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 54.2400016784668 + }, + "change7d": -0.16579507107294145, + "associatedTokens": [ + { + "symbol": "EARNM", + "icon": "https://coin-images.coingecko.com/coins/images/52925/large/earnm.jpg?1734706204" + } + ] } - ], - "tvs": { - "breakdown": { - "total": 14647.21, - "ether": 14637.21, - "stablecoin": 10, - "associated": 0 - }, - "associatedTokens": ["LAMB"], - "change7d": 0.186299958613328 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "ethernity": { - "id": "ethernity", - "name": "Ethernity", - "slug": "ethernity", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal", "AI"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Infra", - "name": "Superchain" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "DA", - "name": "EthereumBlobs" - }, - { - "category": "VM", - "name": "EVM" + }, + "kontos": { + "id": "kontos", + "name": "Kontos", + "slug": "kontos", + "type": "layer2", + "hostChain": "Ethereum", + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 19.170000076293945, + "native": 0, + "canonical": 19.169999983161688, + "external": 0, + "ether": 8.009999990463257, + "stablecoin": 7.54999996162951, + "btc": 0, + "other": 3.610000031068921, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.07969282807675548, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 10776.49, - "ether": 10680.13, - "stablecoin": 23.64, - "associated": 33.13 - }, - "associatedTokens": ["ERN"], - "change7d": 0.18546333382102 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "hook": { - "id": "hook", - "name": "Hook", - "slug": "hook", - "type": "layer3", - "category": "Optimistic Rollup", - "provider": "Arbitrum", - "purposes": ["Universal", "NFT", "Exchange"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "breakdown": { - "total": 7489.72, - "ether": 7028.35, - "stablecoin": 461.37, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.173051080531636 - }, - "stage": "UnderReview", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "l3x": { - "id": "l3x", - "name": "L3X", - "slug": "l3x", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "silentdata": { + "id": "silentdata", + "name": "Silent Data", + "slug": "silentdata", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Enterprise" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Superchain", + "type": "Infra", + "name": "Part of the Superchain", + "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Superchain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. Only one entity is currently allowed to propose and submit challenges, as only permissioned games are currently allowed." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Cannot withdraw", + "sentiment": "bad", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." + } + ], + "tvs": { + "breakdown": { + "total": 5.139999866485596, + "native": 0, + "canonical": 5.139999866485596, + "external": 0, + "ether": 5.139999866485596, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.1258503798559335, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 5710.42, - "ether": 5708.4, - "stablecoin": 2.02, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.182335427286543 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 1d challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 20d 2h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "funki": { - "id": "funki", - "name": "Funki", - "slug": "funki", - "type": "layer2", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "breakdown": { - "total": 4315.41, - "ether": 3612.79, - "stablecoin": 6, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.154346779370854 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "stack": { - "id": "stack", - "name": "Stack", - "slug": "stack", - "type": "layer3", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Universal", "Social"], - "isArchived": false, - "hostChain": "Base", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "L3ParentChain", - "name": "Base" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" + }, + "codex": { + "id": "codex", + "name": "Codex", + "slug": "codex", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 3271.86, - "ether": 3271.86, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.184761118473939 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 1d delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "External", - "sentiment": "bad", - "description": "Proof construction and state derivation fully rely on data that is posted on Celestia. Sequencer tx roots are not checked against the Blobstream bridge data roots onchain, but L2 nodes can verify data availability by running a Celestia light client." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "race": { - "id": "race", - "name": "Race Network", - "slug": "race", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["RWA"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "Infra", - "name": "Superchain" + }, + "grvt": { + "id": "grvt", + "name": "GRVT", + "slug": "grvt", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "No mechanism", + "sentiment": "bad", + "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. The Operator actively uses a TransactionFilterer contract, which requires accounts that enqueue or force transactions from L1 to be whitelisted." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 3071.48, - "ether": 0, - "stablecoin": 3067.67, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.498063697995415 - }, - "stage": "UnderReview", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "clique": { - "id": "clique", - "name": "Clique", - "slug": "clique", - "type": "layer3", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["AI", "Gaming"], - "isArchived": false, - "hostChain": "Base", - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "L3ParentChain", - "name": "Base" - }, - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" - }, - { - "category": "RaaS", - "name": "Conduit" + }, + "layerai": { + "id": "layerai", + "name": "LayerAI", + "slug": "layerai", + "type": "layer2", + "hostChain": "Ethereum", + "purposes": [ + "AI" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 1926.77, - "ether": 1926.77, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.191990992495809 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "kontos": { - "id": "kontos", - "name": "Kontos", - "slug": "kontos", - "type": "layer2", - "category": "ZK Rollup", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "breakdown": { - "total": 1553.1, - "ether": 1385.3, - "stablecoin": 154.2, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0866158259287764 - }, - "stage": "UnderReview", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "donatuz": { - "id": "donatuz", - "name": "Donatuz", - "slug": "donatuz", - "type": "layer3", - "category": "Optimium", - "provider": "OP Stack", - "purposes": ["Social"], - "isArchived": false, - "hostChain": "Base", - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "L3ParentChain", - "name": "Base" - }, - { - "category": "DA", - "name": "EigenDA" - }, - { - "category": "Stack", - "name": "OPStack" - }, - { - "category": "VM", - "name": "EVM" - }, - { - "category": "RaaS", - "name": "Conduit" - }, - { - "category": "Infra", - "name": "Superchain" + }, + "logx": { + "id": "logx", + "name": "LogX", + "slug": "logx", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 1490.81, - "ether": 1490.81, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186449985276913 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "nal": { - "id": "nal", - "name": "Nal", - "slug": "nal", - "type": "layer2", - "category": "Optimistic Rollup", - "provider": "OP Stack", - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "breakdown": { - "total": 1012.94, - "ether": 0, - "stablecoin": 1012.94, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.000651993519579452 - }, - "stage": "UnderReview", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "fuelv1": { - "id": "fuelv1", - "name": "Fuel v1", - "slug": "fuelv1", - "type": "layer2", - "category": "Optimistic Rollup", - "purposes": ["Payments"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "DA", - "name": "EthereumCalldata" + }, + "openzk": { + "id": "openzk", + "name": "OpenZK", + "slug": "openzk", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 768.03, - "ether": 750.02, - "stablecoin": 18.01, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.181293835363603 - }, - "stage": "Stage 2", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1." - }, - { - "name": "State Validation", - "value": "Fraud proofs (1R)", - "sentiment": "good", - "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Single round proofs (1R) only require a single transaction to resolve." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "∞", - "sentiment": "good", - "description": "Users can exit funds at any time because contracts are not upgradeable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." - } - ] - }, - "pmon": { - "id": "pmon", - "name": "PMON Chain", - "slug": "pmon", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Gaming", "NFT"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": true, - "badges": [ - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "DA", - "name": "Celestia" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" - }, - { - "category": "RaaS", - "name": "AltLayer" + }, + "sischain": { + "id": "sischain", + "name": "SIS Chain", + "slug": "sischain", + "type": "layer2", + "hostChain": "Ethereum", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 598.57, - "ether": 0, - "stablecoin": 0, - "associated": 598.57 - }, - "associatedTokens": ["PMON"], - "change7d": 0.12148464579469 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "bugbuster": { - "id": "bugbuster", - "name": "Bug Buster", - "slug": "bugbuster", - "type": "layer3", - "category": "Optimistic Rollup", - "provider": "Cartesi Rollups", - "purposes": ["Bug bounty"], - "isArchived": false, - "hostChain": "OP Mainnet", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "Stack", - "name": "Cartesi" - }, - { - "category": "VM", - "name": "AppChain" - }, - { - "category": "VM", - "name": "CartesiVM" - }, - { - "category": "DA", - "name": "EthereumCalldata" - }, - { - "category": "L3ParentChain", - "name": "Optimism" + }, + "sxt": { + "id": "sxt", + "name": "Space and Time", + "slug": "sxt", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "EthereumBlobs", + "type": "DA", + "name": "Ethereum with blobs", + "description": "This project is posting its data to Ethereum as blobs", + "action": { + "type": "publicDaHighlight", + "slug": "ethereum" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Stage 0", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "Onchain (SD)", + "sentiment": "good", + "description": "All of the data (SD = state diffs) needed for proof construction is published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 520.03, - "ether": 0, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.0660066006600659 - }, - "stage": "Stage 0", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "None", - "sentiment": "bad", - "description": "Currently the system permits invalid state roots. More details in project overview." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on the base chain, which ultimately gets published on Ethereum." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Cannot withdraw", - "sentiment": "bad", - "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen." - } - ] - }, - "gpt": { - "id": "gpt", - "name": "GPT Protocol", - "slug": "gpt", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal", "AI"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "RaaS", - "name": "Gateway" - }, - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "VM", - "name": "EVM" + }, + "zkcandy": { + "id": "zkcandy", + "name": "zkCandy", + "slug": "zkcandy", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "ZK Stack" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "CustomDA", + "type": "DA", + "name": "Custom DA solution", + "description": "This project is using a custom DA solution", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "ZKStack", + "type": "Stack", + "name": "Built on the ZK Stack", + "description": "The project is built on the ZK Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "ZK Stack" + } + }, + { + "id": "ElasticChain", + "type": "Infra", + "name": "Part of the Elastic Chain", + "description": "The project is part of the Elastic Chain, meaning it's based on the ZK stack and uses the shared contracts", + "action": { + "type": "scalingFilter", + "id": "infrastructure", + "value": "Elastic Chain" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Enqueue via L1", + "sentiment": "warning", + "description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone." + }, + { + "name": "State Validation", + "value": "Validity proofs (ST, SN)", + "sentiment": "good", + "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." + }, + { + "name": "Data Availability", + "value": "External", + "sentiment": "bad", + "description": "Proof construction and state derivation rely fully on data that is NOT published onchain." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted standard upgrade because the central operator can censor withdrawal transactions by implementing a TransactionFilterer with no delay. The standard upgrade delay is 4d 3h." + }, + { + "name": "Proposer Failure", + "value": "Replace proposer", + "sentiment": "warning", + "description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 247.28, - "ether": 14.96, - "stablecoin": 0, - "associated": 232.32 - }, - "associatedTokens": ["GPT"], - "change7d": 1.87936655798789 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "witness": { - "id": "witness", - "name": "Witness Chain", - "slug": "witness", - "type": "layer2", - "category": "Validium", - "provider": "Polygon", - "purposes": ["Universal", "IoT", "Oracles"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "PolygonCDK" - }, - { - "category": "Infra", - "name": "AggLayer" - }, - { - "category": "VM", - "name": "EVM" + }, + "bitlazer": { + "id": "bitlazer", + "name": "Bitlazer", + "slug": "bitlazer", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Bitcoin DApps" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Arbitrum", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum", + "description": "The project has Arbitrum as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 29.85, - "ether": 29.85, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0.186406995230525 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "No mechanism", - "sentiment": "bad", - "description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled." - }, - { - "name": "State Validation", - "value": "ZK proofs (ST, SN)", - "sentiment": "good", - "description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "warning": { - "value": "The Security Council can remove the delay on upgrades.", - "sentiment": "bad" - }, - "description": "Even though there is a 10d Timelock for upgrades, forced transactions are disabled. Even if they were to be enabled, user withdrawals can be censored up to 15d." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "If the Proposer fails, users can leverage the source available prover to submit proofs to the L1 bridge. There is a 5d delay for proving and a 5d delay for finalizing state proven in this way. These delays can only be lowered except during the emergency state." - } - ] - }, - "apechain": { - "id": "apechain", - "name": "ApeChain", - "slug": "apechain", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Arbitrum" - }, - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "chainbounty": { + "id": "chainbounty", + "name": "Chainbounty", + "slug": "chainbounty", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "associatedTokens": [] - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 4d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 5/7 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 25d 10h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "dodochain": { - "id": "dodochain", - "name": "DODOchain", - "slug": "dodochain", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Interoperability"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "associatedTokens": [] - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "inevm": { - "id": "inevm", - "name": "inEVM", - "slug": "inevm", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Interoperability"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "RaaS", - "name": "Caldera" - }, - { - "category": "DA", - "name": "DAC" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "flynet": { + "id": "flynet", + "name": "Flynet", + "slug": "flynet", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 0, - "ether": 0, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 25d 10h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "muster": { - "id": "muster", - "name": "Muster", - "slug": "muster", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Gaming"], - "isArchived": false, - "hostChain": "Arbitrum One", - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "associatedTokens": [] - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "playblock": { - "id": "playblock", - "name": "PlayBlock", - "slug": "playblock", - "type": "layer3", - "category": "Optimium", - "provider": "Arbitrum", - "purposes": ["Universal", "Gaming"], - "isArchived": false, - "hostChain": "Arbitrum Nova", - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "category": "DA", - "name": "DAC" - }, - { - "category": "L3ParentChain", - "name": "Nova" - }, - { - "category": "RaaS", - "name": "Gelato" - }, - { - "category": "Stack", - "name": "Orbit" - }, - { - "category": "VM", - "name": "EVM" + }, + "inevm": { + "id": "inevm", + "name": "inEVM", + "slug": "inevm", + "type": "layer3", + "hostChain": "Arbitrum One", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Interoperability" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Caldera", + "type": "RaaS", + "name": "Caldera", + "description": "This project was deployed via the rollup-as-a-service provider Caldera", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Caldera" + } + } + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 6d 8h challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/1 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 12d 17h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 0, - "ether": 0, - "stablecoin": 0, - "associated": 0 - }, - "associatedTokens": [], - "change7d": 0 - }, - "stage": "NotApplicable", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There is a 2d delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "bad", - "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 30m challenge period." - }, - { - "name": "Data Availability", - "value": "External (DAC)", - "sentiment": "bad", - "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can become a Proposer after 19d 2h of inactivity from the currently whitelisted Proposers." - } - ] - }, - "teva": { - "id": "teva", - "name": "Teva Chain", - "slug": "teva", - "type": "layer3", - "category": "ZK Rollup", - "provider": "ZK Stack", - "purposes": ["Gaming"], - "isArchived": false, - "hostChain": "ZKsync Era", - "isUpcoming": false, - "isUnderReview": true, - "badges": [], - "tvs": { - "associatedTokens": [] - }, - "stage": "UnderReview", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "State Validation", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Data Availability", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Exit Window", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - }, - { - "name": "Proposer Failure", - "value": "Under Review", - "sentiment": "UnderReview", - "description": "This risk is currently under review." - } - ] - }, - "ink": { - "id": "ink", - "name": "Ink", - "slug": "ink", - "type": "layer2", - "hostChain": "Ethereum", - "category": "Optimistic Rollup", - "providers": ["OP Stack"], - "purposes": ["Universal"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "id": "EVM", - "type": "VM", - "name": "EVM", - "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", - "action": { - "type": "scalingFilter", - "id": "vm", - "value": "EVM" - } - }, - { - "id": "EthereumBlobs", - "type": "DA", - "name": "Ethereum with blobs", - "description": "This project is posting its data to Ethereum as blobs", - "action": { - "type": "publicDaHighlight", - "slug": "ethereum" - } - }, - { - "id": "OPStack", - "type": "Stack", - "name": "Built on OP Stack", - "description": "The project is built on the OP Stack", - "action": { - "type": "scalingFilter", - "id": "stack", - "value": "OP Stack" - } - }, - { - "id": "Superchain", - "type": "Infra", - "name": "Part of the Superchain", - "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", - "action": { - "type": "scalingFilter", - "id": "infrastructure", - "value": "Superchain" - } - }, - { - "id": "Gelato", - "type": "RaaS", - "name": "Gelato", - "description": "This project was deployed via the rollup-as-a-service provider Gelato", - "action": { - "type": "scalingFilter", - "id": "raas", - "value": "Gelato" + }, + "perennial": { + "id": "perennial", + "name": "Perennial", + "slug": "perennial", + "type": "layer3", + "hostChain": "Base Chain", + "providers": [ + "OP Stack" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Celestia", + "type": "DA", + "name": "Celestia", + "description": "This project is posting its data to Celestia", + "action": { + "type": "publicDaHighlight", + "slug": "celestia" + } + }, + { + "id": "OPStack", + "type": "Stack", + "name": "Built on OP Stack", + "description": "The project is built on the OP Stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "OP Stack" + } + }, + { + "id": "Base", + "type": "L3ParentChain", + "name": "Built on top of Base", + "description": "The project has Base as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Base" + } + }, + { + "id": "Conduit", + "type": "RaaS", + "name": "Conduit", + "description": "This project was deployed via the rollup-as-a-service provider Conduit", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Conduit" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "stage": "Stage 1", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "good", - "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + }, + "skynet": { + "id": "skynet", + "name": "Skynet", + "slug": "skynet", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Zeeve", + "type": "RaaS", + "name": "Zeeve", + "description": "This project was deployed via the rollup-as-a-service provider Zeeve", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Zeeve" + } + } + ], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 102760330, - "native": 0, - "canonical": 28028614, - "external": 74731710, - "ether": 28028612, - "stablecoin": 69044360, - "btc": 5687351, - "other": 0.7, - "associated": 0 - }, - "change7d": 0.00299159143196492, - "associatedTokens": [] - } - }, - "unichain": { - "id": "unichain", - "name": "Unichain", - "slug": "unichain", - "type": "layer2", - "hostChain": "Ethereum", - "category": "Optimistic Rollup", - "providers": ["OP Stack"], - "purposes": ["Universal", "Exchange"], - "isArchived": false, - "isUpcoming": false, - "isUnderReview": false, - "badges": [ - { - "id": "EVM", - "type": "VM", - "name": "EVM", - "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", - "action": { - "type": "scalingFilter", - "id": "vm", - "value": "EVM" - } - }, - { - "id": "EthereumBlobs", - "type": "DA", - "name": "Ethereum with blobs", - "description": "This project is posting its data to Ethereum as blobs", - "action": { - "type": "publicDaHighlight", - "slug": "ethereum" - } - }, - { - "id": "OPStack", - "type": "Stack", - "name": "Built on OP Stack", - "description": "The project is built on the OP Stack", - "action": { - "type": "scalingFilter", - "id": "stack", - "value": "OP Stack" - } - }, - { - "id": "Superchain", - "type": "Infra", - "name": "Part of the Superchain", - "description": "The project is part of the Superchain, meaning it's included in the Superchain registry or uses the Superchain config", - "action": { - "type": "scalingFilter", - "id": "infrastructure", - "value": "Superchain" + }, + "unite": { + "id": "unite", + "name": "Unite", + "slug": "unite", + "type": "layer3", + "hostChain": "Base Chain", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "stage": "Stage 1", - "risks": [ - { - "name": "Sequencer Failure", - "value": "Self sequence", - "sentiment": "good", - "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation." - }, - { - "name": "State Validation", - "value": "Fraud proofs (INT)", - "sentiment": "good", - "description": "Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve." - }, - { - "name": "Data Availability", - "value": "Onchain", - "sentiment": "good", - "description": "All of the data needed for proof construction is published on Ethereum L1." - }, - { - "name": "Exit Window", - "value": "None", - "sentiment": "bad", - "description": "There is no exit window for users to exit in case of unwanted regular upgrades as they are initiated by the Security Council with instant upgrade power and without proper notice." - }, - { - "name": "Proposer Failure", - "value": "Self propose", - "sentiment": "good", - "description": "Anyone can be a Proposer and propose new roots to the L1 bridge." + }, + "vemphorizon": { + "id": "vemphorizon", + "name": "VEMP Horizon", + "slug": "vemphorizon", + "type": "layer3", + "hostChain": "Arbitrum One", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "badges": [], + "stage": "Under review", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "State Validation", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Data Availability", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Exit Window", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + }, + { + "name": "Proposer Failure", + "value": "Under Review", + "sentiment": "UnderReview", + "description": "This risk is currently under review." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] } - ], - "tvs": { - "breakdown": { - "total": 777191100, - "native": 0, - "canonical": 419098200, - "external": 358092930, - "ether": 499260000, - "stablecoin": 171902140, - "btc": 95350096, - "other": 10678896, - "associated": 4971530 - }, - "change7d": 0.00821442117542293, - "associatedTokens": [ - { - "symbol": "UNI", - "icon": "https://assets.coingecko.com/coins/images/12504/large/uni.jpg?1696512319" + }, + "playblock": { + "id": "playblock", + "name": "PlayBlock", + "slug": "playblock", + "type": "layer3", + "hostChain": "Arbitrum Nova", + "category": "Other", + "providers": [ + "Arbitrum" + ], + "purposes": [ + "Universal", + "Gaming" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": false, + "badges": [ + { + "id": "EVM", + "type": "VM", + "name": "EVM", + "description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "EVM" + } + }, + { + "id": "DAC", + "type": "DA", + "name": "Data Availability Committee", + "description": "There is a Data Availability Committee that provides/attests to data availability", + "action": { + "type": "selfDaHighlight" + } + }, + { + "id": "Orbit", + "type": "Stack", + "name": "Built on Arbitrum Orbit", + "description": "The project is built on Arbitrum Orbit", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Arbitrum" + } + }, + { + "id": "Nova", + "type": "L3ParentChain", + "name": "Built on top of Arbitrum Nova", + "description": "The project has Arbitrum Nova as its host chain", + "action": { + "type": "scalingFilter", + "id": "hostChain", + "value": "Arbitrum Nova" + } + }, + { + "id": "Gelato", + "type": "RaaS", + "name": "Gelato", + "description": "This project was deployed via the rollup-as-a-service provider Gelato", + "action": { + "type": "scalingFilter", + "id": "raas", + "value": "Gelato" + } } - ] + ], + "stage": "Not applicable", + "risks": [ + { + "name": "Sequencer Failure", + "value": "Self sequence", + "sentiment": "good", + "description": "In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 2d delay on this operation." + }, + { + "name": "State Validation", + "value": "Fraud proofs (INT)", + "sentiment": "bad", + "description": "No actor outside of the single Proposer can submit fraud proofs. Interactive proofs (INT) require multiple transactions over time to resolve. The challenge protocol can be subject to delay attacks. There is a 30m challenge period." + }, + { + "name": "Data Availability", + "value": "External (DAC)", + "sentiment": "bad", + "description": "Proof construction relies fully on data that is NOT published onchain. There exists a Data Availability Committee (DAC) with a threshold of 1/2 that is tasked with protecting and supplying the data." + }, + { + "name": "Exit Window", + "value": "None", + "sentiment": "bad", + "description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable." + }, + { + "name": "Proposer Failure", + "value": "Self propose", + "sentiment": "good", + "description": "Anyone can become a Proposer after 1mo 4d of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [] + } } } - } -} + }, + "timestamp": 1762449892364 +} \ No newline at end of file diff --git a/src/data/mocks/rssData.json b/src/data/mocks/rssData.json deleted file mode 100644 index db3821f07a0..00000000000 --- a/src/data/mocks/rssData.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - [ - { - "pubDate": "Sat, 28 Sep 2024 00:00:00 +0000", - "title": "Making Ethereum alignment legible", - "link": "https://vitalik.ca/general/2024/09/28/alignment.html", - "imgSrc": "http://vitalik.ca/images/icon.png", - "source": "Vitalik Buterin's website", - "sourceUrl": "https://vitalik.ca/", - "sourceFeedUrl": "https://vitalik.eth.limo/feed.xml" - } - ], - [ - { - "pubDate": "Fri, 13 Sep 2024 00:00:00 GMT", - "title": "4844 Data Challenge: Insights and Winners", - "link": "https://blog.ethereum.org/en/2024/09/13/4844-data-challenge", - "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_84404ba6ed463992c8eaee78610b3264.jpeg", - "source": "Ethereum Foundation Blog", - "sourceUrl": "https://blog.ethereum.org", - "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" - }, - { - "pubDate": "Tue, 31 Dec 2013 18:00:37 GMT", - "title": "Bootstrapping A Decentralized Autonomous Corporation: Part I", - "link": "https://blog.ethereum.org/en/2013/12/31/bootstrapping-a-decentralized-autonomous-corporation-part-i", - "imgSrc": "https://blog.ethereum.org/images/posts/blackhole.jpg", - "source": "Ethereum Foundation Blog", - "sourceUrl": "https://blog.ethereum.org", - "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" - } - ], - [ - { - "pubDate": "Thu, 22 Aug 2024 00:00:00 +0000", - "title": "Xatu Consensus Layer P2P tables now available", - "link": "https://ethpandaops.io/posts/xatu-consensus-layer-p2p/", - "imgSrc": "https://ethpandaops.io/posts/xatu-consensus-layer-p2p/featured.png", - "source": "Posts 🤓 on ethPandaOps", - "sourceUrl": "https://ethpandaops.io/posts/", - "sourceFeedUrl": "https://ethpandaops.io/posts/index.xml" - } - ], - [ - { - "pubDate": "Tue, 02 Jul 2024 00:00:00 GMT", - "title": "Staking Survey 2024", - "link": "https://paragraph.xyz/@ethstaker/staking-survey-2024", - "imgSrc": "https://storage.googleapis.com/papyrus_images/9a642b5e66cd993febd6e331cfa62de9.jpg", - "source": "ethstaker", - "sourceUrl": "https://paragraph.xyz/@ethstaker", - "sourceFeedUrl": "https://paragraph.xyz/api/blogs/rss/@ethstaker" - } - ], - [ - { - "pubDate": "Thu, 27 Dec 2024 12:00:00 GMT", - "title": "Solidity Developer Survey 2024 is Live!", - "link": "https://soliditylang.org/blog/2024/12/27/solidity-developer-survey-2024-announcement/", - "imgSrc": "/images/solidity-banner.png", - "source": "Solidity", - "sourceUrl": "https://soliditylang.org/blog", - "sourceFeedUrl": "https://soliditylang.org/feed.xml" - } - ] -] diff --git a/src/data/mocks/stablecoinsData.json b/src/data/mocks/stablecoinsData.json new file mode 100644 index 00000000000..a8b0490a3de --- /dev/null +++ b/src/data/mocks/stablecoinsData.json @@ -0,0 +1,7013 @@ +{ + "value": [ + { + "id": "tether", + "symbol": "usdt", + "name": "Tether", + "image": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "current_price": 0.999605, + "market_cap": 183389056002, + "market_cap_rank": 3, + "fully_diluted_valuation": 183389056002, + "total_volume": 107379685489, + "high_24h": 1, + "low_24h": 0.999522, + "price_change_24h": -0.000250476735270011, + "price_change_percentage_24h": -0.02505, + "market_cap_change_24h": -11786151.449645996, + "market_cap_change_percentage_24h": -0.00643, + "circulating_supply": 183459247850.0191, + "total_supply": 183459247850.0191, + "max_supply": null, + "ath": 1.32, + "ath_change_percentage": -24.44874, + "ath_date": "2018-07-24T00:00:00.000Z", + "atl": 0.572521, + "atl_change_percentage": 74.59888, + "atl_date": "2015-03-02T00:00:00.000Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.506Z" + }, + { + "id": "usd-coin", + "symbol": "usdc", + "name": "USDC", + "image": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "current_price": 0.999799, + "market_cap": 74975920345, + "market_cap_rank": 7, + "fully_diluted_valuation": 75093495564, + "total_volume": 8872411673, + "high_24h": 0.999905, + "low_24h": 0.999701, + "price_change_24h": 0.00009556, + "price_change_percentage_24h": 0.00956, + "market_cap_change_24h": -36668294.30636597, + "market_cap_change_percentage_24h": -0.04888, + "circulating_supply": 74983825635.78719, + "total_supply": 75101413251.56743, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -14.7395, + "ath_date": "2019-05-08T00:40:28.300Z", + "atl": 0.877647, + "atl_change_percentage": 13.92456, + "atl_date": "2023-03-11T08:02:13.981Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.050Z" + }, + { + "id": "usds", + "symbol": "usds", + "name": "USDS", + "image": "https://coin-images.coingecko.com/coins/images/39926/large/usds.webp?1726666683", + "current_price": 1, + "market_cap": 9285994119, + "market_cap_rank": 20, + "fully_diluted_valuation": 9285994119, + "total_volume": 12213362, + "high_24h": 1.001, + "low_24h": 0.998008, + "price_change_24h": 0.00018353, + "price_change_percentage_24h": 0.01836, + "market_cap_change_24h": -38806402.51999092, + "market_cap_change_percentage_24h": -0.41616, + "circulating_supply": 9285205533.316942, + "total_supply": 9285205533.316942, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -5.42233, + "ath_date": "2024-10-29T05:40:51.197Z", + "atl": 0.948265, + "atl_change_percentage": 5.45475, + "atl_date": "2024-10-03T13:19:28.826Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.371Z" + }, + { + "id": "ethena-usde", + "symbol": "usde", + "name": "Ethena USDe", + "image": "https://coin-images.coingecko.com/coins/images/33613/large/usde.png?1733810059", + "current_price": 0.998107, + "market_cap": 8842515685, + "market_cap_rank": 22, + "fully_diluted_valuation": 8842515685, + "total_volume": 297498303, + "high_24h": 1.002, + "low_24h": 0.996364, + "price_change_24h": -0.001149787109839595, + "price_change_percentage_24h": -0.11506, + "market_cap_change_24h": -140295389.477314, + "market_cap_change_percentage_24h": -1.56182, + "circulating_supply": 8860626000.139448, + "total_supply": 8860626000.139448, + "max_supply": null, + "ath": 1.032, + "ath_change_percentage": -3.15866, + "ath_date": "2023-12-20T15:38:34.596Z", + "atl": 0.929486, + "atl_change_percentage": 7.53063, + "atl_date": "2024-10-04T07:57:15.809Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.521Z" + }, + { + "id": "dai", + "symbol": "dai", + "name": "Dai", + "image": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "current_price": 0.999832, + "market_cap": 4576443638, + "market_cap_rank": 37, + "fully_diluted_valuation": 4576443638, + "total_volume": 144429743, + "high_24h": 1.002, + "low_24h": 0.998216, + "price_change_24h": 0.00105751, + "price_change_percentage_24h": 0.10588, + "market_cap_change_24h": -65416626.23267174, + "market_cap_change_percentage_24h": -1.40928, + "circulating_supply": 4577344117.342696, + "total_supply": 4577344117.342696, + "max_supply": null, + "ath": 1.22, + "ath_change_percentage": -17.94151, + "ath_date": "2020-03-13T03:02:50.373Z", + "atl": 0.88196, + "atl_change_percentage": 13.4106, + "atl_date": "2023-03-11T07:50:50.514Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.036Z" + }, + { + "id": "usd1-wlfi", + "symbol": "usd1", + "name": "USD1", + "image": "https://coin-images.coingecko.com/coins/images/54977/large/USD1_1000x1000_transparent.png?1749297002", + "current_price": 0.998951, + "market_cap": 2938563714, + "market_cap_rank": 49, + "fully_diluted_valuation": 2938563714, + "total_volume": 377649501, + "high_24h": 1, + "low_24h": 0.997989, + "price_change_24h": -0.000184039113994783, + "price_change_percentage_24h": -0.01842, + "market_cap_change_24h": -24692626.000195026, + "market_cap_change_percentage_24h": -0.83329, + "circulating_supply": 2941817939.045891, + "total_supply": 2941817939.045891, + "max_supply": null, + "ath": 1.025, + "ath_change_percentage": -2.53013, + "ath_date": "2025-05-12T12:36:39.412Z", + "atl": 0.989633, + "atl_change_percentage": 0.93609, + "atl_date": "2025-10-01T08:51:32.103Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.676Z" + }, + { + "id": "paypal-usd", + "symbol": "pyusd", + "name": "PayPal USD", + "image": "https://coin-images.coingecko.com/coins/images/31212/large/PYUSD_Logo_%282%29.png?1696530039", + "current_price": 0.999555, + "market_cap": 2768070878, + "market_cap_rank": 52, + "fully_diluted_valuation": 2768070878, + "total_volume": 269362726, + "high_24h": 1.002, + "low_24h": 0.998328, + "price_change_24h": -0.000695123561596289, + "price_change_percentage_24h": -0.06949, + "market_cap_change_24h": -26257863.490787983, + "market_cap_change_percentage_24h": -0.93968, + "circulating_supply": 2768921414.197759, + "total_supply": 2768921414.197759, + "max_supply": null, + "ath": 1.021, + "ath_change_percentage": -1.98792, + "ath_date": "2023-10-23T22:44:57.056Z", + "atl": 0.959426, + "atl_change_percentage": 4.27545, + "atl_date": "2024-12-05T22:31:13.430Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.665Z" + }, + { + "id": "c1usd", + "symbol": "c1usd", + "name": "Currency One USD", + "image": "https://coin-images.coingecko.com/coins/images/69700/large/C1USD.webp?1759327591", + "current_price": 0.999716, + "market_cap": 2549275397, + "market_cap_rank": 53, + "fully_diluted_valuation": 2549275397, + "total_volume": 198418, + "high_24h": 1.009, + "low_24h": 0.998135, + "price_change_24h": -0.001119129313123857, + "price_change_percentage_24h": -0.11182, + "market_cap_change_24h": -2853779.748465538, + "market_cap_change_percentage_24h": -0.11182, + "circulating_supply": 2550000000, + "total_supply": 2550000000, + "max_supply": 2550000000, + "ath": 1.033, + "ath_change_percentage": -3.2361, + "ath_date": "2025-10-12T19:41:09.216Z", + "atl": 0.963687, + "atl_change_percentage": 3.73253, + "atl_date": "2025-11-03T08:44:26.287Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.092Z" + }, + { + "id": "falcon-finance", + "symbol": "usdf", + "name": "Falcon USD", + "image": "https://coin-images.coingecko.com/coins/images/54558/large/ff_200_X_200.png?1740741076", + "current_price": 0.997615, + "market_cap": 2105756140, + "market_cap_rank": 60, + "fully_diluted_valuation": 2105756140, + "total_volume": 7031692, + "high_24h": 1.001, + "low_24h": 0.995917, + "price_change_24h": -0.001389297063642769, + "price_change_percentage_24h": -0.13907, + "market_cap_change_24h": -3063634.1462733746, + "market_cap_change_percentage_24h": -0.14528, + "circulating_supply": 2109296868.539598, + "total_supply": 2109296868.539598, + "max_supply": null, + "ath": 1.075, + "ath_change_percentage": -7.09406, + "ath_date": "2025-05-08T21:25:42.071Z", + "atl": 0.943422, + "atl_change_percentage": 5.82226, + "atl_date": "2025-07-08T10:16:34.749Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.756Z" + }, + { + "id": "tether-gold", + "symbol": "xaut", + "name": "Tether Gold", + "image": "https://coin-images.coingecko.com/coins/images/10481/large/Tether_Gold.png?1696510471", + "current_price": 3969.72, + "market_cap": 2073171505, + "market_cap_rank": 61, + "fully_diluted_valuation": 2073171505, + "total_volume": 270620177, + "high_24h": 4020.63, + "low_24h": 3954.49, + "price_change_24h": -11.66935542948022, + "price_change_percentage_24h": -0.2931, + "market_cap_change_24h": -5627845.429091454, + "market_cap_change_percentage_24h": -0.27073, + "circulating_supply": 522089.3, + "total_supply": 522089.3, + "max_supply": null, + "ath": 4392.88, + "ath_change_percentage": -9.57546, + "ath_date": "2025-10-17T05:01:31.881Z", + "atl": 1447.84, + "atl_change_percentage": 174.3562, + "atl_date": "2020-03-19T13:45:41.821Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.859Z" + }, + { + "id": "usdtb", + "symbol": "usdtb", + "name": "USDtb", + "image": "https://coin-images.coingecko.com/coins/images/52804/large/76357aa8-4ef7-446c-bad3-a3f944eeec7a.jpeg?1758277468", + "current_price": 0.999192, + "market_cap": 1831916420, + "market_cap_rank": 67, + "fully_diluted_valuation": 1831916420, + "total_volume": 2667151, + "high_24h": 1.007, + "low_24h": 0.997685, + "price_change_24h": -0.000586884988328484, + "price_change_percentage_24h": -0.0587, + "market_cap_change_24h": 882216, + "market_cap_change_percentage_24h": 0.04818, + "circulating_supply": 1833577333.746182, + "total_supply": 1833577333.746182, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -5.36499, + "ath_date": "2025-09-20T13:20:33.315Z", + "atl": 0.900502, + "atl_change_percentage": 11.08328, + "atl_date": "2025-07-17T08:05:52.672Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.418Z" + }, + { + "id": "pax-gold", + "symbol": "paxg", + "name": "PAX Gold", + "image": "https://coin-images.coingecko.com/coins/images/9519/large/paxgold.png?1696509604", + "current_price": 3967.72, + "market_cap": 1321536572, + "market_cap_rank": 82, + "fully_diluted_valuation": 1321536572, + "total_volume": 154580291, + "high_24h": 4013.54, + "low_24h": 3962.57, + "price_change_24h": -9.412016215519543, + "price_change_percentage_24h": -0.23665, + "market_cap_change_24h": -3206508.859973669, + "market_cap_change_percentage_24h": -0.24205, + "circulating_supply": 332951.91, + "total_supply": 332951.91, + "max_supply": null, + "ath": 4448.72, + "ath_change_percentage": -10.72075, + "ath_date": "2025-10-16T23:50:09.513Z", + "atl": 1399.64, + "atl_change_percentage": 183.77147, + "atl_date": "2019-11-18T03:09:35.959Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.317Z" + }, + { + "id": "bfusd", + "symbol": "bfusd", + "name": "BFUSD", + "image": "https://coin-images.coingecko.com/coins/images/68227/large/bfusd.png?1755132827", + "current_price": 0.999356, + "market_cap": 1319097624, + "market_cap_rank": 83, + "fully_diluted_valuation": 1319097624, + "total_volume": 25711041, + "high_24h": 1, + "low_24h": 0.999325, + "price_change_24h": -0.000257971491915754, + "price_change_percentage_24h": -0.02581, + "market_cap_change_24h": -393377.4761958122, + "market_cap_change_percentage_24h": -0.02981, + "circulating_supply": 1320000000, + "total_supply": 1320000000, + "max_supply": null, + "ath": 1.007, + "ath_change_percentage": -0.74719, + "ath_date": "2025-10-10T21:40:40.468Z", + "atl": 0.997772, + "atl_change_percentage": 0.16326, + "atl_date": "2025-09-23T22:06:02.878Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.565Z" + }, + { + "id": "global-dollar", + "symbol": "usdg", + "name": "Global Dollar", + "image": "https://coin-images.coingecko.com/coins/images/51281/large/GDN_USDG_Token_200x200.png?1730484111", + "current_price": 0.999843, + "market_cap": 1043026261, + "market_cap_rank": 104, + "fully_diluted_valuation": 1043026261, + "total_volume": 29806321, + "high_24h": 1, + "low_24h": 0.999741, + "price_change_24h": 0.00009383, + "price_change_percentage_24h": 0.00939, + "market_cap_change_24h": 26397604, + "market_cap_change_percentage_24h": 2.59658, + "circulating_supply": 1043214229.066615, + "total_supply": 1043214229.066615, + "max_supply": null, + "ath": 1.65, + "ath_change_percentage": -39.56797, + "ath_date": "2025-01-30T00:11:05.728Z", + "atl": 0.907561, + "atl_change_percentage": 10.1697, + "atl_date": "2024-11-11T23:55:50.604Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.746Z" + }, + { + "id": "ripple-usd", + "symbol": "rlusd", + "name": "Ripple USD", + "image": "https://coin-images.coingecko.com/coins/images/39651/large/RLUSD_200x200_%281%29.png?1727376633", + "current_price": 1, + "market_cap": 1025623132, + "market_cap_rank": 107, + "fully_diluted_valuation": 1025623132, + "total_volume": 191674098, + "high_24h": 1.004, + "low_24h": 0.999195, + "price_change_24h": 0.00071401, + "price_change_percentage_24h": 0.07143, + "market_cap_change_24h": 521602, + "market_cap_change_percentage_24h": 0.05088, + "circulating_supply": 1025198082.539998, + "total_supply": 1025198082.539998, + "max_supply": null, + "ath": 1.073, + "ath_change_percentage": -6.79124, + "ath_date": "2024-12-26T10:45:52.337Z", + "atl": 0.962292, + "atl_change_percentage": 3.91445, + "atl_date": "2024-12-18T04:40:40.880Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.523Z" + }, + { + "id": "first-digital-usd", + "symbol": "fdusd", + "name": "First Digital USD", + "image": "https://coin-images.coingecko.com/coins/images/31079/large/FDUSD_icon_black.png?1731097953", + "current_price": 0.998943, + "market_cap": 983394071, + "market_cap_rank": 112, + "fully_diluted_valuation": 983394071, + "total_volume": 4190487213, + "high_24h": 1.009, + "low_24h": 0.992717, + "price_change_24h": 0.00129355, + "price_change_percentage_24h": 0.12966, + "market_cap_change_24h": -5661629.731018066, + "market_cap_change_percentage_24h": -0.57243, + "circulating_supply": 986111333.672824, + "total_supply": 986111333.672824, + "max_supply": null, + "ath": 1.15, + "ath_change_percentage": -13.36815, + "ath_date": "2025-02-03T02:30:49.959Z", + "atl": 0.940377, + "atl_change_percentage": 6.06603, + "atl_date": "2024-12-05T22:30:51.394Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.452Z" + }, + { + "id": "usual-usd", + "symbol": "usd0", + "name": "Usual USD", + "image": "https://coin-images.coingecko.com/coins/images/38272/large/USD0LOGO.png?1716962811", + "current_price": 0.998009, + "market_cap": 546420820, + "market_cap_rank": 153, + "fully_diluted_valuation": 546420820, + "total_volume": 2897634, + "high_24h": 1.001, + "low_24h": 0.997473, + "price_change_24h": -0.000268708248759908, + "price_change_percentage_24h": -0.02692, + "market_cap_change_24h": 6230004, + "market_cap_change_percentage_24h": 1.1533, + "circulating_supply": 547293899.5761116, + "total_supply": 547293899.5761116, + "max_supply": null, + "ath": 1.33, + "ath_change_percentage": -24.62379, + "ath_date": "2024-07-12T08:28:59.311Z", + "atl": 0.962885, + "atl_change_percentage": 3.77795, + "atl_date": "2025-04-10T08:30:51.088Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.657Z" + }, + { + "id": "true-usd", + "symbol": "tusd", + "name": "TrueUSD", + "image": "https://coin-images.coingecko.com/coins/images/3449/large/tusd.png?1696504140", + "current_price": 0.998827, + "market_cap": 493228880, + "market_cap_rank": 164, + "fully_diluted_valuation": 493228880, + "total_volume": 17886302, + "high_24h": 1.006, + "low_24h": 0.995368, + "price_change_24h": 0.00078076, + "price_change_percentage_24h": 0.07823, + "market_cap_change_24h": -595766.7018722296, + "market_cap_change_percentage_24h": -0.12064, + "circulating_supply": 494515083, + "total_supply": 494515083, + "max_supply": null, + "ath": 1.62, + "ath_change_percentage": -38.32224, + "ath_date": "2018-08-26T20:41:09.375Z", + "atl": 0.88355, + "atl_change_percentage": 12.98314, + "atl_date": "2020-03-12T10:47:51.380Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.131Z" + }, + { + "id": "usdx-money-usdx", + "symbol": "usdx", + "name": "Stables Labs USDX", + "image": "https://coin-images.coingecko.com/coins/images/50360/large/USDX200px.png?1731906044", + "current_price": 0.706424, + "market_cap": 483624043, + "market_cap_rank": 149, + "fully_diluted_valuation": 483624043, + "total_volume": 6387613, + "high_24h": 1, + "low_24h": 0.37361, + "price_change_24h": -0.29220535407559733, + "price_change_percentage_24h": -29.26065, + "market_cap_change_24h": -200005518.20087445, + "market_cap_change_percentage_24h": -29.25642, + "circulating_supply": 684568141.1582386, + "total_supply": 684568141.1582386, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -23.18752, + "ath_date": "2024-12-06T21:42:23.559Z", + "atl": 0.37361, + "atl_change_percentage": 117.37315, + "atl_date": "2025-11-06T16:15:31.829Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.400Z" + }, + { + "id": "gho", + "symbol": "gho", + "name": "GHO", + "image": "https://coin-images.coingecko.com/coins/images/30663/large/gho-token-logo.png?1720517092", + "current_price": 0.998886, + "market_cap": 427764918, + "market_cap_rank": 184, + "fully_diluted_valuation": 427764918, + "total_volume": 20397101, + "high_24h": 0.999863, + "low_24h": 0.998904, + "price_change_24h": -0.000225608335500782, + "price_change_percentage_24h": -0.02258, + "market_cap_change_24h": 28554, + "market_cap_change_percentage_24h": 0.00668, + "circulating_supply": 428118221.663633, + "total_supply": 428118221.663633, + "max_supply": null, + "ath": 1.03, + "ath_change_percentage": -2.97116, + "ath_date": "2024-02-28T17:15:58.387Z", + "atl": 0.917065, + "atl_change_percentage": 8.96105, + "atl_date": "2023-10-24T04:41:04.568Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.599Z" + }, + { + "id": "usdd", + "symbol": "usdd", + "name": "USDD", + "image": "https://coin-images.coingecko.com/coins/images/25380/large/UUSD.jpg?1696524513", + "current_price": 0.999485, + "market_cap": 426172866, + "market_cap_rank": 185, + "fully_diluted_valuation": 426172866, + "total_volume": 4989671, + "high_24h": 1.001, + "low_24h": 0.998637, + "price_change_24h": -0.000063006224986784, + "price_change_percentage_24h": -0.0063, + "market_cap_change_24h": 9684779, + "market_cap_change_percentage_24h": 2.32534, + "circulating_supply": 426482086, + "total_supply": 426482086, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -4.97561, + "ath_date": "2023-10-23T22:45:25.398Z", + "atl": 0.928067, + "atl_change_percentage": 7.69532, + "atl_date": "2022-06-19T16:15:11.558Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.317Z" + }, + { + "id": "usdb", + "symbol": "usdb", + "name": "USDB", + "image": "https://coin-images.coingecko.com/coins/images/35595/large/65c67f0ebf2f6a1bd0feb13c_usdb-icon-yellow.png?1709255427", + "current_price": 0.999059, + "market_cap": 405521316, + "market_cap_rank": 192, + "fully_diluted_valuation": 405521316, + "total_volume": 786734, + "high_24h": 1.006, + "low_24h": 0.972984, + "price_change_24h": 0.0009686, + "price_change_percentage_24h": 0.09705, + "market_cap_change_24h": 830027, + "market_cap_change_percentage_24h": 0.2051, + "circulating_supply": 406046631.5607005, + "total_supply": 406046631.5607005, + "max_supply": null, + "ath": 1.088, + "ath_change_percentage": -8.21095, + "ath_date": "2025-03-02T16:57:39.891Z", + "atl": 0.831432, + "atl_change_percentage": 20.12051, + "atl_date": "2025-10-10T21:28:37.488Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.291Z" + }, + { + "id": "binance-peg-busd", + "symbol": "busd", + "name": "Binance-Peg BUSD", + "image": "https://coin-images.coingecko.com/coins/images/31273/large/new_binance-peg-busd.png?1696530096", + "current_price": 0.999637, + "market_cap": 312734449, + "market_cap_rank": 226, + "fully_diluted_valuation": 312734449, + "total_volume": 4399614, + "high_24h": 1.003, + "low_24h": 0.993485, + "price_change_24h": -0.000363678240014487, + "price_change_percentage_24h": -0.03637, + "market_cap_change_24h": 278876, + "market_cap_change_percentage_24h": 0.08925, + "circulating_supply": 312477997.5095268, + "total_supply": 312477997.5095268, + "max_supply": null, + "ath": 1.15, + "ath_change_percentage": -12.87141, + "ath_date": "2025-09-21T07:13:14.819Z", + "atl": 0.896883, + "atl_change_percentage": 11.4162, + "atl_date": "2025-10-10T21:20:16.934Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.883Z" + }, + { + "id": "satoshi-stablecoin", + "symbol": "satusd", + "name": "Satoshi Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/37760/large/Instagram_post_-_25.png?1715475306", + "current_price": 0.996239, + "market_cap": 297447841, + "market_cap_rank": 232, + "fully_diluted_valuation": 297447841, + "total_volume": 1935771, + "high_24h": 0.999356, + "low_24h": 0.995413, + "price_change_24h": -0.001785836434947119, + "price_change_percentage_24h": -0.17894, + "market_cap_change_24h": 9799426, + "market_cap_change_percentage_24h": 3.40674, + "circulating_supply": 298549997.3166802, + "total_supply": 298549997.3166802, + "max_supply": null, + "ath": 1.68, + "ath_change_percentage": -40.63283, + "ath_date": "2025-02-22T13:29:49.609Z", + "atl": 0.635574, + "atl_change_percentage": 56.75694, + "atl_date": "2024-07-21T00:10:02.714Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.660Z" + }, + { + "id": "frax", + "symbol": "frax", + "name": "Legacy Frax Dollar", + "image": "https://coin-images.coingecko.com/coins/images/13422/large/LFRAX.png?1751911193", + "current_price": 0.994454, + "market_cap": 289226885, + "market_cap_rank": 241, + "fully_diluted_valuation": 289226885, + "total_volume": 4161613, + "high_24h": 0.999796, + "low_24h": 0.991228, + "price_change_24h": -0.000587873058153998, + "price_change_percentage_24h": -0.05908, + "market_cap_change_24h": -192286.0901004672, + "market_cap_change_percentage_24h": -0.06644, + "circulating_supply": 290811186.274506, + "total_supply": 290811186.274506, + "max_supply": null, + "ath": 1.14, + "ath_change_percentage": -12.81331, + "ath_date": "2021-02-07T12:55:35.766Z", + "atl": 0.874536, + "atl_change_percentage": 13.69701, + "atl_date": "2023-03-11T07:50:39.316Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.261Z" + }, + { + "id": "euro-coin", + "symbol": "eurc", + "name": "EURC", + "image": "https://coin-images.coingecko.com/coins/images/26045/large/euro.png?1696525125", + "current_price": 1.15, + "market_cap": 280961003, + "market_cap_rank": 244, + "fully_diluted_valuation": 280961003, + "total_volume": 29601419, + "high_24h": 1.15, + "low_24h": 1.15, + "price_change_24h": 0.00591195, + "price_change_percentage_24h": 0.51498, + "market_cap_change_24h": 1791689, + "market_cap_change_percentage_24h": 0.64179, + "circulating_supply": 243507491.6131233, + "total_supply": 243507491.6131233, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -14.69007, + "ath_date": "2023-03-14T09:50:50.729Z", + "atl": 0.052848, + "atl_change_percentage": 2082.47702, + "atl_date": "2022-12-09T03:16:34.877Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.624Z" + }, + { + "id": "usx", + "symbol": "usx", + "name": "USX", + "image": "https://coin-images.coingecko.com/coins/images/68429/large/Solstice_Icons_for_DEX_512x512_USX.png?1755718377", + "current_price": 1, + "market_cap": 274897247, + "market_cap_rank": 247, + "fully_diluted_valuation": 274897247, + "total_volume": 10710639, + "high_24h": 1.006, + "low_24h": 1, + "price_change_24h": 0.00009298, + "price_change_percentage_24h": 0.00929, + "market_cap_change_24h": 1480397, + "market_cap_change_percentage_24h": 0.54144, + "circulating_supply": 274783573.346065, + "total_supply": 274783573.346065, + "max_supply": null, + "ath": 1.017, + "ath_change_percentage": -1.69293, + "ath_date": "2025-09-30T09:52:46.381Z", + "atl": 0.999188, + "atl_change_percentage": 0.10741, + "atl_date": "2025-09-30T09:57:49.385Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.382Z" + }, + { + "id": "resolv-usr", + "symbol": "usr", + "name": "Resolv USR", + "image": "https://coin-images.coingecko.com/coins/images/40008/large/USR_LOGO.png?1725222638", + "current_price": 0.996754, + "market_cap": 247459691, + "market_cap_rank": 265, + "fully_diluted_valuation": 247459691, + "total_volume": 5434693, + "high_24h": 1.002, + "low_24h": 0.99676, + "price_change_24h": -0.002584079576560594, + "price_change_percentage_24h": -0.25858, + "market_cap_change_24h": -12663890.982156247, + "market_cap_change_percentage_24h": -4.86841, + "circulating_supply": 247762957.5998437, + "total_supply": 247762957.5998437, + "max_supply": null, + "ath": 1.022, + "ath_change_percentage": -2.27323, + "ath_date": "2025-01-30T14:52:41.281Z", + "atl": 0.959194, + "atl_change_percentage": 4.11307, + "atl_date": "2025-03-05T06:15:52.738Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.483Z" + }, + { + "id": "crvusd", + "symbol": "crvusd", + "name": "crvUSD", + "image": "https://coin-images.coingecko.com/coins/images/30118/large/crvusd.jpg?1746670973", + "current_price": 0.997188, + "market_cap": 242071903, + "market_cap_rank": 267, + "fully_diluted_valuation": 242071903, + "total_volume": 43092395, + "high_24h": 1.005, + "low_24h": 0.990062, + "price_change_24h": -0.001934426774832243, + "price_change_percentage_24h": -0.19361, + "market_cap_change_24h": -1483275.9099768102, + "market_cap_change_percentage_24h": -0.60901, + "circulating_supply": 242634809.2001877, + "total_supply": 242634809.2001877, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -9.55309, + "ath_date": "2024-06-13T03:27:06.616Z", + "atl": 0.949016, + "atl_change_percentage": 5.42523, + "atl_date": "2023-08-08T06:24:06.210Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.738Z" + }, + { + "id": "ibc-bridged-usdc", + "symbol": "usdc.n", + "name": "Noble USDC", + "image": "https://coin-images.coingecko.com/coins/images/38604/large/usdc.png?1718098770", + "current_price": 0.996819, + "market_cap": 240874391, + "market_cap_rank": 266, + "fully_diluted_valuation": 240874391, + "total_volume": 708463, + "high_24h": 1.007, + "low_24h": 0.991095, + "price_change_24h": -0.001962295345095177, + "price_change_percentage_24h": -0.19647, + "market_cap_change_24h": -8646859.431563675, + "market_cap_change_percentage_24h": -3.46538, + "circulating_supply": 242345675.690836, + "total_supply": 242345675.690836, + "max_supply": null, + "ath": 1.083, + "ath_change_percentage": -7.58826, + "ath_date": "2025-08-22T14:55:54.937Z", + "atl": 0.617446, + "atl_change_percentage": 62.09024, + "atl_date": "2025-10-10T21:30:08.932Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.150Z" + }, + { + "id": "usda-2", + "symbol": "usda", + "name": "USDa", + "image": "https://coin-images.coingecko.com/coins/images/51599/large/SUSDA.png?1731604761", + "current_price": 0.992473, + "market_cap": 221067247, + "market_cap_rank": 278, + "fully_diluted_valuation": 221067247, + "total_volume": 494.71, + "high_24h": 0.994034, + "low_24h": 0.988844, + "price_change_24h": -0.000957061217177979, + "price_change_percentage_24h": -0.09634, + "market_cap_change_24h": -206129.8151474297, + "market_cap_change_percentage_24h": -0.09316, + "circulating_supply": 222738814.6769284, + "total_supply": 222738814.6769284, + "max_supply": null, + "ath": 1.021, + "ath_change_percentage": -2.83642, + "ath_date": "2025-01-13T15:25:59.380Z", + "atl": 0.737813, + "atl_change_percentage": 34.51947, + "atl_date": "2024-12-06T09:52:06.910Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.271Z" + }, + { + "id": "cap-usd", + "symbol": "cusd", + "name": "Cap USD", + "image": "https://coin-images.coingecko.com/coins/images/68272/large/cUSD_ab_500%C3%97500.png?1755232868", + "current_price": 0.998116, + "market_cap": 220942455, + "market_cap_rank": 280, + "fully_diluted_valuation": 220942455, + "total_volume": 73537, + "high_24h": 1.011, + "low_24h": 0.98782, + "price_change_24h": -0.004993763628374115, + "price_change_percentage_24h": -0.49783, + "market_cap_change_24h": 19805758, + "market_cap_change_percentage_24h": 9.84691, + "circulating_supply": 221359418.6727036, + "total_supply": 221359418.6727036, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -14.40858, + "ath_date": "2025-10-10T21:42:31.469Z", + "atl": 0.947752, + "atl_change_percentage": 5.68893, + "atl_date": "2025-10-02T15:05:38.504Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.116Z" + }, + { + "id": "openeden-open-dollar", + "symbol": "usdo", + "name": "OpenEden OpenDollar", + "image": "https://coin-images.coingecko.com/coins/images/53750/large/USDO_LOGO-white.png?1737181887", + "current_price": 1.002, + "market_cap": 219989024, + "market_cap_rank": 281, + "fully_diluted_valuation": 219989024, + "total_volume": 2697.77, + "high_24h": 1.01, + "low_24h": 0.993933, + "price_change_24h": 0.002427, + "price_change_percentage_24h": 0.24285, + "market_cap_change_24h": 1553100, + "market_cap_change_percentage_24h": 0.71101, + "circulating_supply": 219592248.5802125, + "total_supply": 219592248.5802125, + "max_supply": null, + "ath": 2.97, + "ath_change_percentage": -66.2643, + "ath_date": "2025-04-21T03:25:39.728Z", + "atl": 0.969341, + "atl_change_percentage": 3.34931, + "atl_date": "2025-07-17T08:20:59.666Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.260Z" + }, + { + "id": "standx-dusd", + "symbol": "dusd", + "name": "StandX DUSD", + "image": "https://coin-images.coingecko.com/coins/images/55984/large/output-onlinepngtools.png?1747932126", + "current_price": 0.998239, + "market_cap": 205436349, + "market_cap_rank": 288, + "fully_diluted_valuation": 205436349, + "total_volume": 18979190, + "high_24h": 1.005, + "low_24h": 0.993701, + "price_change_24h": -0.000349932918984996, + "price_change_percentage_24h": -0.03504, + "market_cap_change_24h": -2593408.4128020406, + "market_cap_change_percentage_24h": -1.24665, + "circulating_supply": 205562077.126454, + "total_supply": 205562077.126454, + "max_supply": null, + "ath": 1.026, + "ath_change_percentage": -2.3176, + "ath_date": "2025-06-21T06:45:15.035Z", + "atl": 0.975398, + "atl_change_percentage": 2.77723, + "atl_date": "2025-09-23T13:41:51.219Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.227Z" + }, + { + "id": "reservoir-srusd", + "symbol": "srusd", + "name": "Reservoir srUSD", + "image": "https://coin-images.coingecko.com/coins/images/54118/large/srUSD.png?1738313910", + "current_price": 1.12, + "market_cap": 189641442, + "market_cap_rank": 306, + "fully_diluted_valuation": 189641442, + "total_volume": 200.89, + "high_24h": 1.13, + "low_24h": 1.091, + "price_change_24h": 0.02587103, + "price_change_percentage_24h": 2.37125, + "market_cap_change_24h": 2858419, + "market_cap_change_percentage_24h": 1.53034, + "circulating_supply": 169792701.6442028, + "total_supply": 169792701.6442028, + "max_supply": null, + "ath": 1.3, + "ath_change_percentage": -13.9702, + "ath_date": "2025-07-19T03:25:09.761Z", + "atl": 1.05364e-10, + "atl_change_percentage": 1062937368402.489, + "atl_date": "2025-03-28T14:05:20.939Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.388Z" + }, + { + "id": "astherus-usdf", + "symbol": "usdf", + "name": "Aster USDF", + "image": "https://coin-images.coingecko.com/coins/images/54133/large/USDF_LOGO.png?1738393978", + "current_price": 0.997739, + "market_cap": 168938467, + "market_cap_rank": 332, + "fully_diluted_valuation": 168938467, + "total_volume": 1088447, + "high_24h": 0.999631, + "low_24h": 0.99575, + "price_change_24h": -0.000022093239564369, + "price_change_percentage_24h": -0.00221, + "market_cap_change_24h": -2181025.3605303466, + "market_cap_change_percentage_24h": -1.27456, + "circulating_supply": 169323953.3611535, + "total_supply": 169323953.3611535, + "max_supply": null, + "ath": 1.046, + "ath_change_percentage": -4.63999, + "ath_date": "2025-10-10T22:42:58.541Z", + "atl": 0.798494, + "atl_change_percentage": 24.95233, + "atl_date": "2025-10-10T21:23:15.100Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.115Z" + }, + { + "id": "gusd", + "symbol": "gusd", + "name": "GUSD", + "image": "https://coin-images.coingecko.com/coins/images/68725/large/gusd-logo.jpeg?1757681286", + "current_price": 1.001, + "market_cap": 149925381, + "market_cap_rank": 363, + "fully_diluted_valuation": 320289218, + "total_volume": 9706351, + "high_24h": 1.004, + "low_24h": 0.997577, + "price_change_24h": 0.00170641, + "price_change_percentage_24h": 0.17078, + "market_cap_change_24h": 152366, + "market_cap_change_percentage_24h": 0.10173, + "circulating_supply": 149790000, + "total_supply": 320000000, + "max_supply": 320000000, + "ath": 1.019, + "ath_change_percentage": -1.98374, + "ath_date": "2025-10-10T21:28:05.850Z", + "atl": 0.98989, + "atl_change_percentage": 0.94623, + "atl_date": "2025-10-22T15:26:04.065Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.818Z" + }, + { + "id": "stasis-eurs", + "symbol": "eurs", + "name": "STASIS EURO", + "image": "https://coin-images.coingecko.com/coins/images/5164/large/EURS_300x300.png?1696505680", + "current_price": 1.15, + "market_cap": 142368095, + "market_cap_rank": 378, + "fully_diluted_valuation": 142368095, + "total_volume": 6758.31, + "high_24h": 1.16, + "low_24h": 1.056, + "price_change_24h": -0.003267306216975019, + "price_change_percentage_24h": -0.28407, + "market_cap_change_24h": -377209.2390000224, + "market_cap_change_percentage_24h": -0.26425, + "circulating_supply": 124125940, + "total_supply": 124125940, + "max_supply": 124125940, + "ath": 1.79, + "ath_change_percentage": -36.03719, + "ath_date": "2023-03-14T12:00:06.279Z", + "atl": 0.929636, + "atl_change_percentage": 23.37784, + "atl_date": "2022-11-10T13:44:54.149Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.280Z" + }, + { + "id": "agora-dollar", + "symbol": "ausd", + "name": "AUSD", + "image": "https://coin-images.coingecko.com/coins/images/39284/large/Circle_Agora_White_on_Olive_1080px.png?1722961274", + "current_price": 0.999804, + "market_cap": 137353130, + "market_cap_rank": 385, + "fully_diluted_valuation": 137353130, + "total_volume": 24548256, + "high_24h": 1.001, + "low_24h": 0.998778, + "price_change_24h": -0.000297183625826758, + "price_change_percentage_24h": -0.02972, + "market_cap_change_24h": 4209.23, + "market_cap_change_percentage_24h": 0.00306, + "circulating_supply": 137366573, + "total_supply": 137366573, + "max_supply": null, + "ath": 1.022, + "ath_change_percentage": -2.11713, + "ath_date": "2024-10-05T21:15:26.099Z", + "atl": 0.950515, + "atl_change_percentage": 5.2079, + "atl_date": "2024-12-05T22:30:43.844Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.769Z" + }, + { + "id": "dola-usd", + "symbol": "dola", + "name": "DOLA", + "image": "https://coin-images.coingecko.com/coins/images/14287/large/dola.png?1696513984", + "current_price": 0.995396, + "market_cap": 123209839, + "market_cap_rank": 413, + "fully_diluted_valuation": 195467009, + "total_volume": 4197846, + "high_24h": 0.996118, + "low_24h": 0.994636, + "price_change_24h": -0.000430760858174728, + "price_change_percentage_24h": -0.04326, + "market_cap_change_24h": -232559.562247172, + "market_cap_change_percentage_24h": -0.1884, + "circulating_supply": 123784088.8860431, + "total_supply": 196378030.9162333, + "max_supply": null, + "ath": 1.87, + "ath_change_percentage": -46.82926, + "ath_date": "2021-11-13T13:09:22.404Z", + "atl": 0.088407, + "atl_change_percentage": 1025.94878, + "atl_date": "2024-02-10T23:55:20.725Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.153Z" + }, + { + "id": "gaib-ai-dollar-alpha-usdc", + "symbol": "aidausdc", + "name": "Gaib AI Dollar Alpha USDC", + "image": "https://coin-images.coingecko.com/coins/images/69615/large/aidausdc.png?1759224686", + "current_price": 0.987913, + "market_cap": 113622673, + "market_cap_rank": 432, + "fully_diluted_valuation": 113622673, + "total_volume": 631852, + "high_24h": 1.002, + "low_24h": 0.977329, + "price_change_24h": -0.007553751691455779, + "price_change_percentage_24h": -0.75881, + "market_cap_change_24h": -649002.274569422, + "market_cap_change_percentage_24h": -0.56795, + "circulating_supply": 114772921.187424, + "total_supply": 114772921.187424, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -12.16597, + "ath_date": "2025-10-03T12:47:28.057Z", + "atl": 0.926229, + "atl_change_percentage": 6.80917, + "atl_date": "2025-10-11T18:35:14.953Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.779Z" + }, + { + "id": "anzen-usdz", + "symbol": "usdz", + "name": "Anzen USDz", + "image": "https://coin-images.coingecko.com/coins/images/38039/large/usdz-image-200x200.png?1716334412", + "current_price": 0.984082, + "market_cap": 113068371, + "market_cap_rank": 434, + "fully_diluted_valuation": 113068371, + "total_volume": 62966, + "high_24h": 0.989482, + "low_24h": 0.980838, + "price_change_24h": -0.000130051692498467, + "price_change_percentage_24h": -0.01321, + "market_cap_change_24h": -26725.842292010784, + "market_cap_change_percentage_24h": -0.02363, + "circulating_supply": 115094571.873643, + "total_supply": 115094571.873643, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -6.3938, + "ath_date": "2025-05-27T15:36:13.247Z", + "atl": 0.821209, + "atl_change_percentage": 19.85987, + "atl_date": "2025-03-07T06:41:18.272Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.939Z" + }, + { + "id": "usda-3", + "symbol": "usda", + "name": "USDA", + "image": "https://coin-images.coingecko.com/coins/images/68094/large/IMG_0632.jpeg?1754724345", + "current_price": 0.992052, + "market_cap": 110117775, + "market_cap_rank": 443, + "fully_diluted_valuation": 110117775, + "total_volume": 32495597, + "high_24h": 1.018, + "low_24h": 0.955375, + "price_change_24h": -0.004822166542718054, + "price_change_percentage_24h": -0.48373, + "market_cap_change_24h": -746373.1641359925, + "market_cap_change_percentage_24h": -0.67323, + "circulating_supply": 111000000, + "total_supply": 111000000, + "max_supply": 61000000, + "ath": 1.17, + "ath_change_percentage": -15.75654, + "ath_date": "2025-08-10T03:45:39.652Z", + "atl": 0.590562, + "atl_change_percentage": 67.11448, + "atl_date": "2025-10-09T15:07:59.514Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.275Z" + }, + { + "id": "frax-usd", + "symbol": "frxusd", + "name": "Frax USD", + "image": "https://coin-images.coingecko.com/coins/images/53963/large/frxUSD.png?1737792154", + "current_price": 0.99866, + "market_cap": 107392922, + "market_cap_rank": 448, + "fully_diluted_valuation": 108286178, + "total_volume": 5027746, + "high_24h": 1.001, + "low_24h": 0.998063, + "price_change_24h": -0.001355206506920781, + "price_change_percentage_24h": -0.13552, + "market_cap_change_24h": -1052595.7216275185, + "market_cap_change_percentage_24h": -0.97062, + "circulating_supply": 107349358.1420336, + "total_supply": 108242252.2490953, + "max_supply": null, + "ath": 1.007, + "ath_change_percentage": -0.60042, + "ath_date": "2025-05-30T08:10:31.092Z", + "atl": 0.97622, + "atl_change_percentage": 2.49143, + "atl_date": "2025-02-17T17:32:23.025Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.504Z" + }, + { + "id": "f-x-protocol-fxusd", + "symbol": "fxusd", + "name": "f(x) Protocol fxUSD", + "image": "https://coin-images.coingecko.com/coins/images/36202/large/fxUSD.jpg?1710833113", + "current_price": 0.998927, + "market_cap": 93378640, + "market_cap_rank": 480, + "fully_diluted_valuation": 93378640, + "total_volume": 4929894, + "high_24h": 0.999958, + "low_24h": 0.998281, + "price_change_24h": -0.000212204614895461, + "price_change_percentage_24h": -0.02124, + "market_cap_change_24h": -328101.3820062876, + "market_cap_change_percentage_24h": -0.35014, + "circulating_supply": 93472029.1964884, + "total_supply": 93472029.1964884, + "max_supply": null, + "ath": 1.031, + "ath_change_percentage": -3.09696, + "ath_date": "2025-01-20T06:50:59.438Z", + "atl": 0.953062, + "atl_change_percentage": 4.81252, + "atl_date": "2024-12-05T15:45:54.718Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.408Z" + }, + { + "id": "yu", + "symbol": "yu", + "name": "Yala Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/56070/large/YU.png?1748275951", + "current_price": 0.999508, + "market_cap": 91063349, + "market_cap_rank": 490, + "fully_diluted_valuation": 91063349, + "total_volume": 275061, + "high_24h": 1.003, + "low_24h": 0.999084, + "price_change_24h": 0.00013455, + "price_change_percentage_24h": 0.01346, + "market_cap_change_24h": -109732.14084358513, + "market_cap_change_percentage_24h": -0.12036, + "circulating_supply": 91097290.43394935, + "total_supply": 91097290.43394935, + "max_supply": null, + "ath": 1.008, + "ath_change_percentage": -0.78877, + "ath_date": "2025-08-28T14:46:31.932Z", + "atl": 0.109976, + "atl_change_percentage": 808.89034, + "atl_date": "2025-09-14T13:51:59.413Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.238Z" + }, + { + "id": "mnee-usd-stablecoin", + "symbol": "mnee", + "name": "MNEE USD Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/39459/large/MNEE_logo_no_BG.png?1725666891", + "current_price": 0.998677, + "market_cap": 88648710, + "market_cap_rank": 503, + "fully_diluted_valuation": 88648710, + "total_volume": 96842, + "high_24h": 1.012, + "low_24h": 0.996823, + "price_change_24h": -0.001117828282608313, + "price_change_percentage_24h": -0.11181, + "market_cap_change_24h": 224770, + "market_cap_change_percentage_24h": 0.2542, + "circulating_supply": 88560251.6933, + "total_supply": 88560251.6933, + "max_supply": 88560251.6933, + "ath": 1.045, + "ath_change_percentage": -4.30674, + "ath_date": "2024-08-08T23:11:28.286Z", + "atl": 0.584655, + "atl_change_percentage": 71.11321, + "atl_date": "2024-08-08T06:50:34.888Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.813Z" + }, + { + "id": "cash-4", + "symbol": "cash", + "name": "CASH", + "image": "https://coin-images.coingecko.com/coins/images/69679/large/cash.jpg?1759283906", + "current_price": 1, + "market_cap": 86704760, + "market_cap_rank": 508, + "fully_diluted_valuation": 86704760, + "total_volume": 7684189, + "high_24h": 1.029, + "low_24h": 0.999404, + "price_change_24h": 0.00052694, + "price_change_percentage_24h": 0.05272, + "market_cap_change_24h": 1034622, + "market_cap_change_percentage_24h": 1.20768, + "circulating_supply": 86715997.560886, + "total_supply": 86715997.560886, + "max_supply": null, + "ath": 1.029, + "ath_change_percentage": -2.79646, + "ath_date": "2025-11-06T04:31:36.378Z", + "atl": 0.997122, + "atl_change_percentage": 0.2893, + "atl_date": "2025-10-11T16:52:50.095Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.142Z" + }, + { + "id": "avant-usd", + "symbol": "avusd", + "name": "Avant USD", + "image": "https://coin-images.coingecko.com/coins/images/53527/large/token-avusd.png?1736579003", + "current_price": 0.995633, + "market_cap": 82353590, + "market_cap_rank": 526, + "fully_diluted_valuation": 82353590, + "total_volume": 12715020, + "high_24h": 1, + "low_24h": 0.993915, + "price_change_24h": -0.002739090115394194, + "price_change_percentage_24h": -0.27436, + "market_cap_change_24h": -12358567.435909912, + "market_cap_change_percentage_24h": -13.04855, + "circulating_supply": 82714851.96382947, + "total_supply": 82714851.96382947, + "max_supply": null, + "ath": 1.059, + "ath_change_percentage": -5.96099, + "ath_date": "2025-10-10T21:48:29.498Z", + "atl": 0.967857, + "atl_change_percentage": 2.86291, + "atl_date": "2025-02-03T02:55:43.866Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.274Z" + }, + { + "id": "pleasing-gold", + "symbol": "pgold", + "name": "Pleasing Gold", + "image": "https://coin-images.coingecko.com/coins/images/70395/large/%E9%BB%84%E9%87%91.png?1761795141", + "current_price": 3992.14, + "market_cap": 77567504, + "market_cap_rank": 541, + "fully_diluted_valuation": 77567504, + "total_volume": 5, + "high_24h": 4026.12, + "low_24h": 3970.69, + "price_change_24h": 9.03, + "price_change_percentage_24h": 0.22661, + "market_cap_change_24h": -96873.2504530698, + "market_cap_change_percentage_24h": -0.12473, + "circulating_supply": 19505, + "total_supply": 19505, + "max_supply": null, + "ath": 4036.48, + "ath_change_percentage": -1.20661, + "ath_date": "2025-10-31T04:12:51.456Z", + "atl": 3855.69, + "atl_change_percentage": 3.42572, + "atl_date": "2025-11-04T20:20:10.994Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.736Z" + }, + { + "id": "susda", + "symbol": "susda", + "name": "sUSDa", + "image": "https://coin-images.coingecko.com/coins/images/51821/large/USDA.png?1732035172", + "current_price": 1.009, + "market_cap": 77425450, + "market_cap_rank": 542, + "fully_diluted_valuation": 77425450, + "total_volume": 0, + "high_24h": 1.009, + "low_24h": 1.009, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 76721715.90673625, + "total_supply": 76721715.90673625, + "max_supply": null, + "ath": 1.071, + "ath_change_percentage": -5.74165, + "ath_date": "2025-01-13T15:26:06.529Z", + "atl": 0.984449, + "atl_change_percentage": 2.51144, + "atl_date": "2025-01-19T23:11:28.586Z", + "roi": null, + "last_updated": "2025-11-05T19:34:07.492Z" + }, + { + "id": "societe-generale-forge-eurcv", + "symbol": "eurcv", + "name": "EUR CoinVertible", + "image": "https://coin-images.coingecko.com/coins/images/33415/large/eurcv_%281%29.png?1701752017", + "current_price": 1.15, + "market_cap": 75833422, + "market_cap_rank": 547, + "fully_diluted_valuation": 75833422, + "total_volume": 42057962, + "high_24h": 1.16, + "low_24h": 1.15, + "price_change_24h": 0.00629051, + "price_change_percentage_24h": 0.54812, + "market_cap_change_24h": 366980, + "market_cap_change_percentage_24h": 0.48628, + "circulating_supply": 65755949, + "total_supply": 65755949, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -3.19826, + "ath_date": "2025-09-17T18:11:18.793Z", + "atl": 0.988513, + "atl_change_percentage": 16.69148, + "atl_date": "2025-02-04T22:15:33.361Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.963Z" + }, + { + "id": "felix-feusd", + "symbol": "feusd", + "name": "Felix feUSD", + "image": "https://coin-images.coingecko.com/coins/images/55068/large/feusd.jpg?1743581333", + "current_price": 0.995688, + "market_cap": 75531560, + "market_cap_rank": 551, + "fully_diluted_valuation": 9026879253, + "total_volume": 3102593, + "high_24h": 1.001, + "low_24h": 0.989983, + "price_change_24h": 0.00037594, + "price_change_percentage_24h": 0.03777, + "market_cap_change_24h": -1832672.7851492167, + "market_cap_change_percentage_24h": -2.36889, + "circulating_supply": 75004069.29685502, + "total_supply": 8924123397.058271, + "max_supply": null, + "ath": 1.067, + "ath_change_percentage": -6.46835, + "ath_date": "2025-04-02T15:35:18.907Z", + "atl": 0.705908, + "atl_change_percentage": 41.38238, + "atl_date": "2025-10-10T21:28:16.651Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.707Z" + }, + { + "id": "usdx", + "symbol": "usdx", + "name": "USDX", + "image": "https://coin-images.coingecko.com/coins/images/13056/large/USDX_coin.png?1696512841", + "current_price": 0.660697, + "market_cap": 73486901, + "market_cap_rank": 555, + "fully_diluted_valuation": 73486901, + "total_volume": 13554.28, + "high_24h": 0.695819, + "low_24h": 0.649004, + "price_change_24h": -0.028806169627468736, + "price_change_percentage_24h": -4.17781, + "market_cap_change_24h": -3452321.9389906973, + "market_cap_change_percentage_24h": -4.48708, + "circulating_supply": 111568045, + "total_supply": 111568045, + "max_supply": null, + "ath": 3.89, + "ath_change_percentage": -82.9825, + "ath_date": "2020-11-21T11:14:14.148Z", + "atl": 0.100156, + "atl_change_percentage": 560.27818, + "atl_date": "2023-04-10T20:50:38.522Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.416Z" + }, + { + "id": "pleasing-usd", + "symbol": "pusd", + "name": "Pleasing USD", + "image": "https://coin-images.coingecko.com/coins/images/70448/large/%E7%BE%8E%E5%85%83_%281%29.png?1762079129", + "current_price": 0.998765, + "market_cap": 69931238, + "market_cap_rank": 577, + "fully_diluted_valuation": 69931238, + "total_volume": 5.98, + "high_24h": 1.013, + "low_24h": 0.999372, + "price_change_24h": -0.003735627011826947, + "price_change_percentage_24h": -0.37263, + "market_cap_change_24h": -204076.76560223103, + "market_cap_change_percentage_24h": -0.29098, + "circulating_supply": 70000000, + "total_supply": 70000000, + "max_supply": null, + "ath": 1.013, + "ath_change_percentage": -1.13996, + "ath_date": "2025-11-05T23:45:38.432Z", + "atl": 0.988078, + "atl_change_percentage": 1.38611, + "atl_date": "2025-11-03T15:36:32.586Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.781Z" + }, + { + "id": "paxos-standard", + "symbol": "usdp", + "name": "Pax Dollar", + "image": "https://coin-images.coingecko.com/coins/images/6013/large/Pax_Dollar.png?1696506427", + "current_price": 0.999673, + "market_cap": 57712091, + "market_cap_rank": 638, + "fully_diluted_valuation": 57712091, + "total_volume": 7668403, + "high_24h": 1, + "low_24h": 0.999117, + "price_change_24h": -0.000174117801537643, + "price_change_percentage_24h": -0.01741, + "market_cap_change_24h": 9442.16, + "market_cap_change_percentage_24h": 0.01636, + "circulating_supply": 57711456.22150643, + "total_supply": 57711456.22150643, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -15.60492, + "ath_date": "2024-04-16T16:20:21.365Z", + "atl": 0.863529, + "atl_change_percentage": 15.77525, + "atl_date": "2021-05-19T13:14:42.046Z", + "roi": { + "times": -0.0003267339109233, + "currency": "usd", + "percentage": -0.03267339109233 + }, + "last_updated": "2025-11-06T17:24:37.642Z" + }, + { + "id": "straitsx-xusd", + "symbol": "xusd", + "name": "StraitsX XUSD", + "image": "https://coin-images.coingecko.com/coins/images/39180/large/XUSD_Logo_200px.png?1720850024", + "current_price": 0.999629, + "market_cap": 57305307, + "market_cap_rank": 640, + "fully_diluted_valuation": 57305307, + "total_volume": 27563124, + "high_24h": 1, + "low_24h": 0.99955, + "price_change_24h": -0.00015636581393319, + "price_change_percentage_24h": -0.01564, + "market_cap_change_24h": -503945.31069972366, + "market_cap_change_percentage_24h": -0.87174, + "circulating_supply": 57323153.451, + "total_supply": 57323153.451, + "max_supply": null, + "ath": 1.77, + "ath_change_percentage": -43.56282, + "ath_date": "2025-03-17T07:07:33.401Z", + "atl": 0.936389, + "atl_change_percentage": 6.74597, + "atl_date": "2025-03-04T02:16:12.068Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.389Z" + }, + { + "id": "resupply-usd", + "symbol": "reusd", + "name": "Resupply USD", + "image": "https://coin-images.coingecko.com/coins/images/54836/large/reusd-icon-black-200px.png?1741970002", + "current_price": 0.988684, + "market_cap": 56424124, + "market_cap_rank": 645, + "fully_diluted_valuation": 56424124, + "total_volume": 1304816, + "high_24h": 0.99004, + "low_24h": 0.988426, + "price_change_24h": -0.000539963374189711, + "price_change_percentage_24h": -0.05458, + "market_cap_change_24h": -450541.2057018429, + "market_cap_change_percentage_24h": -0.79217, + "circulating_supply": 57071500.77327268, + "total_supply": 57071500.77327268, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -16.56017, + "ath_date": "2025-09-15T01:51:30.324Z", + "atl": 0.969015, + "atl_change_percentage": 2.03336, + "atl_date": "2025-06-26T01:56:28.715Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.407Z" + }, + { + "id": "magic-internet-money", + "symbol": "mim", + "name": "Magic Internet Money (Ethereum)", + "image": "https://coin-images.coingecko.com/coins/images/16786/large/mimlogopng.png?1696516358", + "current_price": 0.998625, + "market_cap": 55417808, + "market_cap_rank": 653, + "fully_diluted_valuation": 182104409, + "total_volume": 36568, + "high_24h": 1.001, + "low_24h": 0.991791, + "price_change_24h": -0.001539595990389442, + "price_change_percentage_24h": -0.15393, + "market_cap_change_24h": -53239.4435390532, + "market_cap_change_percentage_24h": -0.09598, + "circulating_supply": 55611860.7491842, + "total_supply": 174903370.2303547, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -16.23103, + "ath_date": "2024-08-23T06:51:52.217Z", + "atl": 0.249464, + "atl_change_percentage": 300.30662, + "atl_date": "2024-08-15T06:21:56.523Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.085Z" + }, + { + "id": "binance-usd", + "symbol": "busd", + "name": "BUSD", + "image": "https://coin-images.coingecko.com/coins/images/9576/large/BUSDLOGO.jpg?1696509654", + "current_price": 0.992812, + "market_cap": 54630720, + "market_cap_rank": 659, + "fully_diluted_valuation": 54630720, + "total_volume": 59914, + "high_24h": 0.999685, + "low_24h": 0.992808, + "price_change_24h": -0.003033683017305999, + "price_change_percentage_24h": -0.30463, + "market_cap_change_24h": -166932.17041897774, + "market_cap_change_percentage_24h": -0.30463, + "circulating_supply": 55026240.20594552, + "total_supply": 55026240.20594552, + "max_supply": null, + "ath": 2.58, + "ath_change_percentage": -61.51998, + "ath_date": "2024-11-10T16:17:12.600Z", + "atl": 0.112189, + "atl_change_percentage": 784.94494, + "atl_date": "2025-06-21T12:06:15.589Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.583Z" + }, + { + "id": "reservoir-rusd", + "symbol": "rusd", + "name": "Reservoir rUSD", + "image": "https://coin-images.coingecko.com/coins/images/54117/large/rusd_bera2.png?1738311629", + "current_price": 1.009, + "market_cap": 49598454, + "market_cap_rank": 695, + "fully_diluted_valuation": 49598454, + "total_volume": 32635, + "high_24h": 1.019, + "low_24h": 0.994365, + "price_change_24h": 0.01378416, + "price_change_percentage_24h": 1.38554, + "market_cap_change_24h": -8311273.804921962, + "market_cap_change_percentage_24h": -14.35212, + "circulating_supply": 49162686.79798671, + "total_supply": 49162686.79798671, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -49.42368, + "ath_date": "2025-06-21T18:36:43.818Z", + "atl": 0.971575, + "atl_change_percentage": 4.05091, + "atl_date": "2025-07-14T15:20:30.765Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.346Z" + }, + { + "id": "usd", + "symbol": "usd+", + "name": "Overnight.fi USD+", + "image": "https://coin-images.coingecko.com/coins/images/25757/large/USD__logo.png?1696524843", + "current_price": 0.999837, + "market_cap": 48077446, + "market_cap_rank": 706, + "fully_diluted_valuation": 48077446, + "total_volume": 1259229, + "high_24h": 1.002, + "low_24h": 0.999202, + "price_change_24h": 0.00004909, + "price_change_percentage_24h": 0.00491, + "market_cap_change_24h": 6870.89, + "market_cap_change_percentage_24h": 0.01429, + "circulating_supply": 48085096.3705041, + "total_supply": 48085096.3705041, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -20.20744, + "ath_date": "2024-01-10T19:50:04.578Z", + "atl": 0.736532, + "atl_change_percentage": 35.75118, + "atl_date": "2023-07-26T02:40:40.793Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.236Z" + }, + { + "id": "gemini-dollar", + "symbol": "gusd", + "name": "Gemini Dollar", + "image": "https://coin-images.coingecko.com/coins/images/5992/large/gemini-dollar-gusd.png?1696506408", + "current_price": 0.999215, + "market_cap": 47998880, + "market_cap_rank": 708, + "fully_diluted_valuation": 47998880, + "total_volume": 598394, + "high_24h": 1, + "low_24h": 0.998669, + "price_change_24h": 0.00029832, + "price_change_percentage_24h": 0.02986, + "market_cap_change_24h": -317365.60565472394, + "market_cap_change_percentage_24h": -0.65685, + "circulating_supply": 48034791.42, + "total_supply": 48034791.42, + "max_supply": null, + "ath": 3.3, + "ath_change_percentage": -69.75531, + "ath_date": "2018-10-11T17:36:21.529Z", + "atl": 0.78261, + "atl_change_percentage": 27.68092, + "atl_date": "2018-09-29T00:00:00.000Z", + "roi": { + "times": -0.0007846346372982, + "currency": "usd", + "percentage": -0.07846346372982 + }, + "last_updated": "2025-11-06T17:24:32.455Z" + }, + { + "id": "mountain-protocol-usdm", + "symbol": "usdm", + "name": "Mountain Protocol USD", + "image": "https://coin-images.coingecko.com/coins/images/31719/large/usdm.png?1696530540", + "current_price": 0.992154, + "market_cap": 47626384, + "market_cap_rank": 716, + "fully_diluted_valuation": 47626384, + "total_volume": 233.6, + "high_24h": 1.002, + "low_24h": 0.983342, + "price_change_24h": -0.009343663554567505, + "price_change_percentage_24h": -0.93297, + "market_cap_change_24h": -425296.24968566746, + "market_cap_change_percentage_24h": -0.88508, + "circulating_supply": 48000500.64, + "total_supply": 48000500.64, + "max_supply": null, + "ath": 1.16, + "ath_change_percentage": -14.62332, + "ath_date": "2024-08-20T13:41:35.347Z", + "atl": 0.542481, + "atl_change_percentage": 82.426, + "atl_date": "2024-08-14T03:06:23.109Z", + "roi": null, + "last_updated": "2025-11-06T17:24:35.118Z" + }, + { + "id": "honey-3", + "symbol": "honey", + "name": "Honey", + "image": "https://coin-images.coingecko.com/coins/images/54194/large/honey.png?1738725085", + "current_price": 1, + "market_cap": 46866473, + "market_cap_rank": 728, + "fully_diluted_valuation": 46886409, + "total_volume": 6634368, + "high_24h": 1.003, + "low_24h": 0.997673, + "price_change_24h": 0.00078191, + "price_change_percentage_24h": 0.07825, + "market_cap_change_24h": -3157900.261332318, + "market_cap_change_percentage_24h": -6.31272, + "circulating_supply": 46888207.21185721, + "total_supply": 46908152.36706038, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -9.94148, + "ath_date": "2025-02-06T14:11:19.994Z", + "atl": 0.916153, + "atl_change_percentage": 9.05773, + "atl_date": "2025-02-06T14:06:00.806Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.017Z" + }, + { + "id": "liquity-bold-2", + "symbol": "bold", + "name": "BOLD", + "image": "https://coin-images.coingecko.com/coins/images/56069/large/BOLD_logo.png?1748265087", + "current_price": 0.999147, + "market_cap": 46614651, + "market_cap_rank": 731, + "fully_diluted_valuation": 46614651, + "total_volume": 1241199, + "high_24h": 1.008, + "low_24h": 0.997135, + "price_change_24h": -0.002453465256347931, + "price_change_percentage_24h": -0.24495, + "market_cap_change_24h": -162862.22053092718, + "market_cap_change_percentage_24h": -0.34816, + "circulating_supply": 46562595.41692227, + "total_supply": 46562595.41692227, + "max_supply": null, + "ath": 1.013, + "ath_change_percentage": -0.98041, + "ath_date": "2025-06-28T18:02:28.815Z", + "atl": 0.982941, + "atl_change_percentage": 2.08323, + "atl_date": "2025-10-01T08:51:54.108Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.910Z" + }, + { + "id": "noble-dollar-usdn", + "symbol": "usdn", + "name": "Noble Dollar (USDN)", + "image": "https://coin-images.coingecko.com/coins/images/55257/large/USDN.png?1745046774", + "current_price": 0.999936, + "market_cap": 46326501, + "market_cap_rank": 736, + "fully_diluted_valuation": 46326501, + "total_volume": 219811, + "high_24h": 0.99999, + "low_24h": 0.999586, + "price_change_24h": 0.00023689, + "price_change_percentage_24h": 0.0237, + "market_cap_change_24h": 15521.83, + "market_cap_change_percentage_24h": 0.03352, + "circulating_supply": 46329487.740151, + "total_supply": 46329487.740151, + "max_supply": null, + "ath": 1.015, + "ath_change_percentage": -1.44374, + "ath_date": "2025-07-24T10:16:18.759Z", + "atl": 0.981095, + "atl_change_percentage": 1.91252, + "atl_date": "2025-06-04T05:11:05.658Z", + "roi": null, + "last_updated": "2025-11-06T17:24:35.963Z" + }, + { + "id": "nusd", + "symbol": "susd", + "name": "Synthetix sUSD", + "image": "https://coin-images.coingecko.com/coins/images/5013/large/sUSD.png?1696505546", + "current_price": 0.975154, + "market_cap": 42673498, + "market_cap_rank": 764, + "fully_diluted_valuation": 42673498, + "total_volume": 110161, + "high_24h": 0.988546, + "low_24h": 0.974475, + "price_change_24h": -0.013392310900928295, + "price_change_percentage_24h": -1.35475, + "market_cap_change_24h": -526684.8757960573, + "market_cap_change_percentage_24h": -1.21917, + "circulating_supply": 43721474.72639401, + "total_supply": 43721474.72639401, + "max_supply": 43721474.72639401, + "ath": 2.45, + "ath_change_percentage": -60.07647, + "ath_date": "2020-02-18T03:23:56.261Z", + "atl": 0.429697, + "atl_change_percentage": 128.03938, + "atl_date": "2020-03-18T08:09:20.698Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.100Z" + }, + { + "id": "aegis-yusd", + "symbol": "yusd", + "name": "Aegis YUSD", + "image": "https://coin-images.coingecko.com/coins/images/55085/large/LOGO_YUSD_BLACK.png?1756548564", + "current_price": 0.998067, + "market_cap": 40259142, + "market_cap_rank": 797, + "fully_diluted_valuation": 40259142, + "total_volume": 93069, + "high_24h": 1.006, + "low_24h": 0.995352, + "price_change_24h": -0.002547287892260885, + "price_change_percentage_24h": -0.25457, + "market_cap_change_24h": -49948.009797513485, + "market_cap_change_percentage_24h": -0.12391, + "circulating_supply": 40273449.21997516, + "total_supply": 40273449.21997516, + "max_supply": null, + "ath": 1.12, + "ath_change_percentage": -10.83676, + "ath_date": "2025-09-18T22:42:48.200Z", + "atl": 0.930746, + "atl_change_percentage": 7.52463, + "atl_date": "2025-10-10T21:32:07.340Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.581Z" + }, + { + "id": "helio-protocol-hay", + "symbol": "lisusd", + "name": "Lista USD", + "image": "https://coin-images.coingecko.com/coins/images/26947/large/Coingecko_profile_lisUSD_200x200_%281%29.png?1707363097", + "current_price": 0.99886, + "market_cap": 37556952, + "market_cap_rank": 826, + "fully_diluted_valuation": 38581336, + "total_volume": 951083, + "high_24h": 0.999692, + "low_24h": 0.998644, + "price_change_24h": -0.000831224757079196, + "price_change_percentage_24h": -0.08315, + "market_cap_change_24h": -15029.55092471838, + "market_cap_change_percentage_24h": -0.04, + "circulating_supply": 37599049.8493389, + "total_supply": 38624581.9692841, + "max_supply": 44000000, + "ath": 2, + "ath_change_percentage": -50.0896, + "ath_date": "2022-08-25T12:10:21.873Z", + "atl": 0.208609, + "atl_change_percentage": 378.82639, + "atl_date": "2022-12-02T02:43:06.227Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.936Z" + }, + { + "id": "unity-2", + "symbol": "uty", + "name": "Unity", + "image": "https://coin-images.coingecko.com/coins/images/66299/large/UTY_token.jpg?1749148591", + "current_price": 0.99982, + "market_cap": 37486172, + "market_cap_rank": 829, + "fully_diluted_valuation": 37486172, + "total_volume": 1411077, + "high_24h": 1, + "low_24h": 0.999162, + "price_change_24h": 0.00043517, + "price_change_percentage_24h": 0.04354, + "market_cap_change_24h": 19944.75, + "market_cap_change_percentage_24h": 0.05323, + "circulating_supply": 37489280.4274, + "total_supply": 37489280.4274, + "max_supply": null, + "ath": 1.009, + "ath_change_percentage": -0.95176, + "ath_date": "2025-10-06T21:21:53.853Z", + "atl": 0.995814, + "atl_change_percentage": 0.40244, + "atl_date": "2025-06-15T04:06:08.439Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.206Z" + }, + { + "id": "liquity-usd", + "symbol": "lusd", + "name": "Liquity USD", + "image": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "current_price": 0.999645, + "market_cap": 37396106, + "market_cap_rank": 830, + "fully_diluted_valuation": 37396106, + "total_volume": 92809, + "high_24h": 1.005, + "low_24h": 0.99669, + "price_change_24h": -0.000260541841550332, + "price_change_percentage_24h": -0.02606, + "market_cap_change_24h": -9042.589322306216, + "market_cap_change_percentage_24h": -0.02417, + "circulating_supply": 37409391.19721926, + "total_supply": 37409391.19721926, + "max_supply": null, + "ath": 1.16, + "ath_change_percentage": -13.65939, + "ath_date": "2021-04-05T14:47:52.665Z", + "atl": 0.896722, + "atl_change_percentage": 11.52892, + "atl_date": "2022-01-27T09:42:06.510Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.251Z" + }, + { + "id": "trevee-plasma-usd", + "symbol": "plusd", + "name": "Trevee Plasma USD", + "image": "https://coin-images.coingecko.com/coins/images/70358/large/plUSD.png?1761654752", + "current_price": 0.922767, + "market_cap": 36968939, + "market_cap_rank": 838, + "fully_diluted_valuation": 36968939, + "total_volume": 79946, + "high_24h": 0.993053, + "low_24h": 0.922767, + "price_change_24h": -0.06783228080773895, + "price_change_percentage_24h": -6.8476, + "market_cap_change_24h": -2717574.7883882523, + "market_cap_change_percentage_24h": -6.8476, + "circulating_supply": 40063149.22670561, + "total_supply": 40063149.22670561, + "max_supply": null, + "ath": 1.001, + "ath_change_percentage": -5.49626, + "ath_date": "2025-10-29T19:15:36.915Z", + "atl": 0.755922, + "atl_change_percentage": 25.13651, + "atl_date": "2025-10-30T20:19:15.308Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.095Z" + }, + { + "id": "terrausd", + "symbol": "ustc", + "name": "TerraClassicUSD", + "image": "https://coin-images.coingecko.com/coins/images/12681/large/UST.png?1696512486", + "current_price": 0.00657743, + "market_cap": 36765202, + "market_cap_rank": 840, + "fully_diluted_valuation": 40067260, + "total_volume": 3711289, + "high_24h": 0.00689631, + "low_24h": 0.00654098, + "price_change_24h": -0.000193629622091043, + "price_change_percentage_24h": -2.85967, + "market_cap_change_24h": -893135.0885066092, + "market_cap_change_percentage_24h": -2.37168, + "circulating_supply": 5587184953.228422, + "total_supply": 6088996687.053747, + "max_supply": null, + "ath": 1.092, + "ath_change_percentage": -99.39716, + "ath_date": "2021-01-11T22:30:57.984Z", + "atl": 0.00432796, + "atl_change_percentage": 52.09087, + "atl_date": "2025-10-10T21:31:08.815Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.973Z" + }, + { + "id": "hylo-usd", + "symbol": "hyusd", + "name": "Hylo USD", + "image": "https://coin-images.coingecko.com/coins/images/69284/large/hyusd.png?1758096429", + "current_price": 0.998795, + "market_cap": 36444645, + "market_cap_rank": 846, + "fully_diluted_valuation": 36444645, + "total_volume": 1604473, + "high_24h": 1, + "low_24h": 0.998258, + "price_change_24h": -0.000543694905349335, + "price_change_percentage_24h": -0.05441, + "market_cap_change_24h": -506981.86775984615, + "market_cap_change_percentage_24h": -1.37202, + "circulating_supply": 36491563.258588, + "total_supply": 36491563.258588, + "max_supply": null, + "ath": 1.005, + "ath_change_percentage": -0.6171, + "ath_date": "2025-11-03T15:30:18.893Z", + "atl": 0.986187, + "atl_change_percentage": 1.28831, + "atl_date": "2025-10-10T21:40:07.790Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.099Z" + }, + { + "id": "celo-dollar", + "symbol": "cusd", + "name": "Celo Dollar", + "image": "https://coin-images.coingecko.com/coins/images/13161/large/icon-celo-dollar-color-1000-circle-cropped.png?1696512945", + "current_price": 0.999802, + "market_cap": 35546772, + "market_cap_rank": 855, + "fully_diluted_valuation": 35547273, + "total_volume": 2675559, + "high_24h": 1, + "low_24h": 0.999625, + "price_change_24h": 0.0000107, + "price_change_percentage_24h": 0.00107, + "market_cap_change_24h": -6051.779372923076, + "market_cap_change_percentage_24h": -0.01702, + "circulating_supply": 35553466.1769185, + "total_supply": 35553967.1844835, + "max_supply": null, + "ath": 1.14, + "ath_change_percentage": -12.42382, + "ath_date": "2021-09-10T07:19:08.038Z", + "atl": 0.498806, + "atl_change_percentage": 100.44095, + "atl_date": "2025-10-10T21:23:39.132Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.229Z" + }, + { + "id": "bucket-protocol-buck-stablecoin", + "symbol": "buck", + "name": "Bucket Protocol BUCK Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/33846/large/buck-icon.png?1703121631", + "current_price": 0.991399, + "market_cap": 34878554, + "market_cap_rank": 865, + "fully_diluted_valuation": 34878554, + "total_volume": 1844239, + "high_24h": 1.007, + "low_24h": 0.989673, + "price_change_24h": -0.009207611478720401, + "price_change_percentage_24h": -0.9202, + "market_cap_change_24h": 813807, + "market_cap_change_percentage_24h": 2.389, + "circulating_supply": 35242519.60927572, + "total_supply": 35242519.60927572, + "max_supply": null, + "ath": 1.23, + "ath_change_percentage": -18.76269, + "ath_date": "2025-10-10T21:53:23.049Z", + "atl": 0.000978, + "atl_change_percentage": 101849.68563, + "atl_date": "2024-09-22T18:21:13.316Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.013Z" + }, + { + "id": "xtusd", + "symbol": "xtusd", + "name": "XT Stablecoin XTUSD", + "image": "https://coin-images.coingecko.com/coins/images/26504/large/xt_%E6%96%B0logo_%E7%BB%BF.png?1758773481", + "current_price": 0.998606, + "market_cap": 32787058, + "market_cap_rank": 900, + "fully_diluted_valuation": 32787058, + "total_volume": 4726183, + "high_24h": 1.006, + "low_24h": 0.997861, + "price_change_24h": -0.001381712830412551, + "price_change_percentage_24h": -0.13817, + "market_cap_change_24h": -1190.7137804739177, + "market_cap_change_percentage_24h": -0.00363, + "circulating_supply": 32800030, + "total_supply": 32800030, + "max_supply": 32800030, + "ath": 42.29, + "ath_change_percentage": -97.63531, + "ath_date": "2023-03-07T16:04:32.521Z", + "atl": 0.933136, + "atl_change_percentage": 7.1711, + "atl_date": "2023-03-09T01:40:31.883Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.378Z" + }, + { + "id": "hive_dollar", + "symbol": "hbd", + "name": "Hive Dollar", + "image": "https://coin-images.coingecko.com/coins/images/10855/large/w_q7vezk_400x400.jpg?1696510810", + "current_price": 0.929985, + "market_cap": 32265869, + "market_cap_rank": 914, + "fully_diluted_valuation": 32265869, + "total_volume": 3252.64, + "high_24h": 1.02, + "low_24h": 0.898763, + "price_change_24h": -0.05467513522089351, + "price_change_percentage_24h": -5.55269, + "market_cap_change_24h": -1944818.7289668806, + "market_cap_change_percentage_24h": -5.68483, + "circulating_supply": 34744238.651, + "total_supply": 34744238.651, + "max_supply": null, + "ath": 3.97, + "ath_change_percentage": -76.60138, + "ath_date": "2021-02-01T02:39:07.394Z", + "atl": 0.424305, + "atl_change_percentage": 119.18986, + "atl_date": "2020-04-06T08:34:42.260Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.961Z" + }, + { + "id": "mimatic", + "symbol": "mimatic", + "name": "MAI", + "image": "https://coin-images.coingecko.com/coins/images/15264/large/mimatic-red.png?1696514916", + "current_price": 0.998424, + "market_cap": 27522078, + "market_cap_rank": 1015, + "fully_diluted_valuation": 301920966, + "total_volume": 19318.64, + "high_24h": 0.99943, + "low_24h": 0.997481, + "price_change_24h": -0.000445586988572111, + "price_change_percentage_24h": -0.04461, + "market_cap_change_24h": -11639.388473182917, + "market_cap_change_percentage_24h": -0.04227, + "circulating_supply": 27563986.7347571, + "total_supply": 302380709.3825437, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -26.26891, + "ath_date": "2021-05-29T21:51:31.732Z", + "atl": 0.655895, + "atl_change_percentage": 52.22304, + "atl_date": "2023-10-30T02:44:25.051Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.675Z" + }, + { + "id": "metamask-usd", + "symbol": "musd", + "name": "MetaMask USD", + "image": "https://coin-images.coingecko.com/coins/images/68451/large/MetaMask-mUSD-Icon-200x200.png?1755878384", + "current_price": 0.998701, + "market_cap": 26194207, + "market_cap_rank": 1037, + "fully_diluted_valuation": 26194207, + "total_volume": 15668626, + "high_24h": 1.01, + "low_24h": 0.995059, + "price_change_24h": -0.002999762921328974, + "price_change_percentage_24h": -0.29947, + "market_cap_change_24h": -9019871.993498627, + "market_cap_change_percentage_24h": -25.61439, + "circulating_supply": 26228283.250521, + "total_supply": 26228283.250521, + "max_supply": null, + "ath": 1.085, + "ath_change_percentage": -7.89409, + "ath_date": "2025-10-10T22:16:10.736Z", + "atl": 0.925488, + "atl_change_percentage": 8.00003, + "atl_date": "2025-10-10T21:31:15.906Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.391Z" + }, + { + "id": "plume-usd", + "symbol": "pusd", + "name": "Plume USD", + "image": "https://coin-images.coingecko.com/coins/images/55542/large/pUSD-token.png?1746610746", + "current_price": 1.002, + "market_cap": 24822110, + "market_cap_rank": 1068, + "fully_diluted_valuation": 24822110, + "total_volume": 1456745, + "high_24h": 1.007, + "low_24h": 0.997828, + "price_change_24h": 0.00138567, + "price_change_percentage_24h": 0.13847, + "market_cap_change_24h": 2080444, + "market_cap_change_percentage_24h": 9.14816, + "circulating_supply": 24782562.944369, + "total_supply": 24782562.944369, + "max_supply": null, + "ath": 1.014, + "ath_change_percentage": -1.31648, + "ath_date": "2025-10-05T08:57:48.811Z", + "atl": 0.975238, + "atl_change_percentage": 2.62993, + "atl_date": "2025-09-22T11:25:53.072Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.775Z" + }, + { + "id": "monerium-eur-money-2", + "symbol": "eure", + "name": "Monerium EUR emoney", + "image": "https://coin-images.coingecko.com/coins/images/54303/large/eure.jpg?1739167959", + "current_price": 1.14, + "market_cap": 24467395, + "market_cap_rank": 1080, + "fully_diluted_valuation": 24467395, + "total_volume": 95407, + "high_24h": 1.16, + "low_24h": 1.13, + "price_change_24h": -0.007867535889106936, + "price_change_percentage_24h": -0.68298, + "market_cap_change_24h": -50707.765958528966, + "market_cap_change_percentage_24h": -0.20682, + "circulating_supply": 21384477.81132126, + "total_supply": 21384477.81132126, + "max_supply": null, + "ath": 1.22, + "ath_change_percentage": -6.1678, + "ath_date": "2025-08-22T18:56:04.460Z", + "atl": 1.037, + "atl_change_percentage": 10.08221, + "atl_date": "2025-03-02T17:11:14.047Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.926Z" + }, + { + "id": "gyroscope-gyd", + "symbol": "gyd", + "name": "Gyroscope GYD", + "image": "https://coin-images.coingecko.com/coins/images/33428/large/GYD-gradient_resized_transparent.png?1702316822", + "current_price": 0.998399, + "market_cap": 24170206, + "market_cap_rank": 1085, + "fully_diluted_valuation": 24170206, + "total_volume": 1812.2, + "high_24h": 1.001, + "low_24h": 0.994599, + "price_change_24h": -0.001314129398786279, + "price_change_percentage_24h": -0.13145, + "market_cap_change_24h": -31813.70605392009, + "market_cap_change_percentage_24h": -0.13145, + "circulating_supply": 24208960.0029494, + "total_supply": 24208960.0029494, + "max_supply": null, + "ath": 1.049, + "ath_change_percentage": -4.71001, + "ath_date": "2025-08-05T15:28:15.524Z", + "atl": 0.911594, + "atl_change_percentage": 9.64872, + "atl_date": "2025-11-04T17:47:20.401Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.155Z" + }, + { + "id": "usdh-2", + "symbol": "usdh", + "name": "USDH", + "image": "https://coin-images.coingecko.com/coins/images/69484/large/usdh.png?1758728903", + "current_price": 0.999215, + "market_cap": 21390410, + "market_cap_rank": 1157, + "fully_diluted_valuation": 100164467652, + "total_volume": 2963759, + "high_24h": 1.003, + "low_24h": 0.99708, + "price_change_24h": -0.000268843834473564, + "price_change_percentage_24h": -0.0269, + "market_cap_change_24h": -1279568.8982011229, + "market_cap_change_percentage_24h": -5.64433, + "circulating_supply": 21359849.11, + "total_supply": 100021675257.1178, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -10.01663, + "ath_date": "2025-10-10T22:36:29.145Z", + "atl": 0.716867, + "atl_change_percentage": 39.62989, + "atl_date": "2025-10-10T21:25:21.930Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.475Z" + }, + { + "id": "staked-yusd", + "symbol": "syusd", + "name": "Staked YUSD", + "image": "https://coin-images.coingecko.com/coins/images/69737/large/sYUSD.png?1759476764", + "current_price": 1.018, + "market_cap": 20706406, + "market_cap_rank": 1177, + "fully_diluted_valuation": 20706406, + "total_volume": 203.36, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 20340531.07370618, + "total_supply": 20340531.07370618, + "max_supply": null, + "ath": 1.018, + "ath_change_percentage": -0.00939, + "ath_date": "2025-11-04T21:08:15.933Z", + "atl": 0.994824, + "atl_change_percentage": 2.3284, + "atl_date": "2025-11-03T02:45:22.052Z", + "roi": null, + "last_updated": "2025-11-04T23:00:44.654Z" + }, + { + "id": "electronic-usd", + "symbol": "eusd", + "name": "Electronic USD", + "image": "https://coin-images.coingecko.com/coins/images/28445/large/0xa0d69e286b938e21cbf7e51d71f6a4c8918f482f.png?1696527441", + "current_price": 0.99575, + "market_cap": 20651849, + "market_cap_rank": 1179, + "fully_diluted_valuation": 20651849, + "total_volume": 1704415, + "high_24h": 1.005, + "low_24h": 0.992302, + "price_change_24h": -0.00290042876712393, + "price_change_percentage_24h": -0.29043, + "market_cap_change_24h": -33099.7816099748, + "market_cap_change_percentage_24h": -0.16002, + "circulating_supply": 20712340.05943529, + "total_supply": 20712340.05943529, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -11.824, + "ath_date": "2024-04-13T20:29:40.804Z", + "atl": 0.867067, + "atl_change_percentage": 15.02369, + "atl_date": "2024-03-05T11:43:37.511Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.306Z" + }, + { + "id": "allunity-eur", + "symbol": "eurau", + "name": "AllUnity EUR", + "image": "https://coin-images.coingecko.com/coins/images/68076/large/EURAU_Full_Colour.png?1754717091", + "current_price": 1.15, + "market_cap": 20347571, + "market_cap_rank": 1190, + "fully_diluted_valuation": 20347571, + "total_volume": 3140214, + "high_24h": 1.16, + "low_24h": 1.15, + "price_change_24h": 0.00610013, + "price_change_percentage_24h": 0.53132, + "market_cap_change_24h": 104239, + "market_cap_change_percentage_24h": 0.51493, + "circulating_supply": 17630279.33, + "total_supply": 17630279.33, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -3.15985, + "ath_date": "2025-09-17T18:08:52.037Z", + "atl": 1.1, + "atl_change_percentage": 4.682, + "atl_date": "2025-10-10T21:26:08.559Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.725Z" + }, + { + "id": "metronome-synth-usd", + "symbol": "msusd", + "name": "Metronome Synth USD", + "image": "https://coin-images.coingecko.com/coins/images/67504/large/metronome_msusd.png?1753015705", + "current_price": 0.995935, + "market_cap": 19864570, + "market_cap_rank": 1213, + "fully_diluted_valuation": 19864570, + "total_volume": 2869325, + "high_24h": 0.998556, + "low_24h": 0.99527, + "price_change_24h": -0.000442208806656241, + "price_change_percentage_24h": -0.04438, + "market_cap_change_24h": 827053, + "market_cap_change_percentage_24h": 4.34433, + "circulating_supply": 19927094.89939966, + "total_supply": 19927094.89939966, + "max_supply": null, + "ath": 3.43, + "ath_change_percentage": -70.92014, + "ath_date": "2025-10-16T10:48:38.387Z", + "atl": 0.427862, + "atl_change_percentage": 133.24165, + "atl_date": "2025-10-09T03:53:06.683Z", + "roi": null, + "last_updated": "2025-11-06T17:24:34.486Z" + }, + { + "id": "ageur", + "symbol": "eura", + "name": "EURA", + "image": "https://coin-images.coingecko.com/coins/images/19479/large/agEUR-4.png?1710726218", + "current_price": 1.15, + "market_cap": 18538004, + "market_cap_rank": 1267, + "fully_diluted_valuation": 18538004, + "total_volume": 68905, + "high_24h": 1.16, + "low_24h": 1.13, + "price_change_24h": -0.01413197412509759, + "price_change_percentage_24h": -1.21549, + "market_cap_change_24h": -290005.55354296416, + "market_cap_change_percentage_24h": -1.54029, + "circulating_supply": 16135212.22379621, + "total_supply": 16135212.22379621, + "max_supply": null, + "ath": 1.21, + "ath_change_percentage": -4.87328, + "ath_date": "2025-08-22T21:09:21.583Z", + "atl": 0.640182, + "atl_change_percentage": 79.40646, + "atl_date": "2023-03-15T02:32:40.142Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.585Z" + }, + { + "id": "web-3-dollar", + "symbol": "usd3", + "name": "Web 3 Dollar", + "image": "https://coin-images.coingecko.com/coins/images/38073/large/usd3%28200_x_200_px%29.png?1716449060", + "current_price": 1.062, + "market_cap": 18442496, + "market_cap_rank": 1276, + "fully_diluted_valuation": 18442496, + "total_volume": 652862, + "high_24h": 1.068, + "low_24h": 1.062, + "price_change_24h": -0.005317557530179373, + "price_change_percentage_24h": -0.49824, + "market_cap_change_24h": -8906323.885309428, + "market_cap_change_percentage_24h": -32.56566, + "circulating_supply": 17352332.32184548, + "total_supply": 17352332.32184548, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -9.04564, + "ath_date": "2025-06-03T02:16:05.754Z", + "atl": 0.939075, + "atl_change_percentage": 13.1721, + "atl_date": "2024-05-29T20:57:17.890Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.025Z" + }, + { + "id": "noon-usn", + "symbol": "usn", + "name": "Noon USN", + "image": "https://coin-images.coingecko.com/coins/images/53948/large/Copy_of_USN.png?1748952392", + "current_price": 1, + "market_cap": 18306257, + "market_cap_rank": 1277, + "fully_diluted_valuation": 18306257, + "total_volume": 324982, + "high_24h": 1.006, + "low_24h": 0.994527, + "price_change_24h": -0.000063565980320535, + "price_change_percentage_24h": -0.00636, + "market_cap_change_24h": -1993272.441617459, + "market_cap_change_percentage_24h": -9.8193, + "circulating_supply": 18304448.866327, + "total_supply": 18304448.866327, + "max_supply": null, + "ath": 1.12, + "ath_change_percentage": -10.31021, + "ath_date": "2025-10-07T20:15:48.287Z", + "atl": 0.988079, + "atl_change_percentage": 1.21232, + "atl_date": "2025-02-03T01:56:21.551Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.047Z" + }, + { + "id": "frankencoin", + "symbol": "zchf", + "name": "Frankencoin", + "image": "https://coin-images.coingecko.com/coins/images/37150/large/Coin_Logo_Frankencoin_1024px.png?1728679791", + "current_price": 1.23, + "market_cap": 17887427, + "market_cap_rank": 1293, + "fully_diluted_valuation": 17887427, + "total_volume": 677628, + "high_24h": 1.24, + "low_24h": 1.22, + "price_change_24h": -0.005135749698778724, + "price_change_percentage_24h": -0.41454, + "market_cap_change_24h": -47176.02661141008, + "market_cap_change_percentage_24h": -0.26304, + "circulating_supply": 14510723.16889149, + "total_supply": 14510723.16889149, + "max_supply": null, + "ath": 1.31, + "ath_change_percentage": -5.767, + "ath_date": "2025-07-10T21:56:16.354Z", + "atl": 0.981646, + "atl_change_percentage": 26.03238, + "atl_date": "2025-02-03T02:12:08.670Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.279Z" + }, + { + "id": "wemix-dollar", + "symbol": "wemix$", + "name": "WEMIX Dollar", + "image": "https://coin-images.coingecko.com/coins/images/28637/large/wemix_dollar.png?1696527620", + "current_price": 1.043, + "market_cap": 15113269, + "market_cap_rank": 1398, + "fully_diluted_valuation": 15113269, + "total_volume": 70966, + "high_24h": 1.048, + "low_24h": 0.991061, + "price_change_24h": 0.01253319, + "price_change_percentage_24h": 1.21605, + "market_cap_change_24h": 160299, + "market_cap_change_percentage_24h": 1.07202, + "circulating_supply": 14539841.004882, + "total_supply": 14539841.004882, + "max_supply": null, + "ath": 1.54, + "ath_change_percentage": -32.24276, + "ath_date": "2025-08-05T15:44:08.296Z", + "atl": 0.479572, + "atl_change_percentage": 117.16666, + "atl_date": "2025-05-02T06:11:54.507Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.762Z" + }, + { + "id": "xsgd", + "symbol": "xsgd", + "name": "XSGD", + "image": "https://coin-images.coingecko.com/coins/images/12832/large/StraitsX_Singapore_Dollar_%28XSGD%29_Token_Logo.png?1696512623", + "current_price": 0.76718, + "market_cap": 15035285, + "market_cap_rank": 1406, + "fully_diluted_valuation": 15035285, + "total_volume": 1609525, + "high_24h": 0.767902, + "low_24h": 0.764381, + "price_change_24h": 0.00243913, + "price_change_percentage_24h": 0.31895, + "market_cap_change_24h": -452836.3161941841, + "market_cap_change_percentage_24h": -2.92377, + "circulating_supply": 19602760.486569, + "total_supply": 19602760.486569, + "max_supply": null, + "ath": 1.36, + "ath_change_percentage": -43.45064, + "ath_date": "2021-11-14T11:25:59.333Z", + "atl": 0.620483, + "atl_change_percentage": 23.61311, + "atl_date": "2021-05-19T13:21:15.750Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.275Z" + }, + { + "id": "token-dforce-usd", + "symbol": "usx", + "name": "dForce USD", + "image": "https://coin-images.coingecko.com/coins/images/17422/large/usx_32.png?1696516969", + "current_price": 0.937747, + "market_cap": 14517575, + "market_cap_rank": 1426, + "fully_diluted_valuation": 126422942, + "total_volume": 9173.96, + "high_24h": 0.955601, + "low_24h": 0.935714, + "price_change_24h": -0.013107843618844872, + "price_change_percentage_24h": -1.37853, + "market_cap_change_24h": -141786.52559550107, + "market_cap_change_percentage_24h": -0.96721, + "circulating_supply": 15453332.51134857, + "total_supply": 134571773.1095259, + "max_supply": null, + "ath": 2.71, + "ath_change_percentage": -65.38677, + "ath_date": "2022-09-12T07:44:30.756Z", + "atl": 0.331253, + "atl_change_percentage": 183.14315, + "atl_date": "2022-06-14T21:54:04.120Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.956Z" + }, + { + "id": "stablr-euro", + "symbol": "eurr", + "name": "StablR Euro", + "image": "https://coin-images.coingecko.com/coins/images/53720/large/stablreuro-logo.png?1737125898", + "current_price": 1.16, + "market_cap": 13746442, + "market_cap_rank": 1464, + "fully_diluted_valuation": 13746442, + "total_volume": 5344611, + "high_24h": 1.16, + "low_24h": 1.14, + "price_change_24h": 0.01343993, + "price_change_percentage_24h": 1.1755, + "market_cap_change_24h": 159339, + "market_cap_change_percentage_24h": 1.17272, + "circulating_supply": 11883541.95, + "total_supply": 11883541.95, + "max_supply": null, + "ath": 1.5, + "ath_change_percentage": -22.7932, + "ath_date": "2025-02-16T06:45:52.930Z", + "atl": 1.013, + "atl_change_percentage": 14.18447, + "atl_date": "2025-02-03T01:55:45.484Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.200Z" + }, + { + "id": "alchemix-usd", + "symbol": "alusd", + "name": "Alchemix USD", + "image": "https://coin-images.coingecko.com/coins/images/14114/large/Alchemix_USD.png?1696513835", + "current_price": 0.989203, + "market_cap": 13592162, + "market_cap_rank": 1474, + "fully_diluted_valuation": 13592162, + "total_volume": 197152, + "high_24h": 0.99131, + "low_24h": 0.988513, + "price_change_24h": -0.001645019763803712, + "price_change_percentage_24h": -0.16602, + "market_cap_change_24h": -21988.905354317278, + "market_cap_change_percentage_24h": -0.16152, + "circulating_supply": 13739916.34780042, + "total_supply": 13739916.34780042, + "max_supply": null, + "ath": 2.13, + "ath_change_percentage": -53.49859, + "ath_date": "2021-03-21T19:53:32.860Z", + "atl": 0.060239, + "atl_change_percentage": 1542.19704, + "atl_date": "2021-03-19T22:40:28.697Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.726Z" + }, + { + "id": "usdm-2", + "symbol": "usdm", + "name": "USDM", + "image": "https://coin-images.coingecko.com/coins/images/38755/large/USDM_Logo_01.jpg?1744966625", + "current_price": 1.017, + "market_cap": 13436643, + "market_cap_rank": 1478, + "fully_diluted_valuation": 13436643, + "total_volume": 528273, + "high_24h": 1.042, + "low_24h": 1.012, + "price_change_24h": -0.012728841947911018, + "price_change_percentage_24h": -1.23614, + "market_cap_change_24h": -122549.37003942393, + "market_cap_change_percentage_24h": -0.90381, + "circulating_supply": 13199684.31, + "total_supply": 13199684.31, + "max_supply": null, + "ath": 1.41, + "ath_change_percentage": -27.56271, + "ath_date": "2025-03-02T16:41:52.531Z", + "atl": 0.529334, + "atl_change_percentage": 92.2842, + "atl_date": "2025-10-10T21:27:48.867Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.334Z" + }, + { + "id": "vcred", + "symbol": "vcred", + "name": "VCRED", + "image": "https://coin-images.coingecko.com/coins/images/69495/large/vcred.jpg?1758767359", + "current_price": 0.994794, + "market_cap": 12516733, + "market_cap_rank": 1509, + "fully_diluted_valuation": 993391510, + "total_volume": 13141.64, + "high_24h": 1.003, + "low_24h": 0.992064, + "price_change_24h": -0.007919665872541448, + "price_change_percentage_24h": -0.78982, + "market_cap_change_24h": -117510.74338924699, + "market_cap_change_percentage_24h": -0.9301, + "circulating_supply": 12600000, + "total_supply": 1000000000, + "max_supply": null, + "ath": 1.004, + "ath_change_percentage": -0.90328, + "ath_date": "2025-10-23T18:07:12.163Z", + "atl": 0.983628, + "atl_change_percentage": 1.12406, + "atl_date": "2025-11-04T22:42:11.996Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.471Z" + }, + { + "id": "lift-dollar", + "symbol": "usdl", + "name": "Lift Dollar", + "image": "https://coin-images.coingecko.com/coins/images/38484/large/USDL-Token-200px.png?1725022887", + "current_price": 0.999629, + "market_cap": 12413062, + "market_cap_rank": 1519, + "fully_diluted_valuation": 12413062, + "total_volume": 331033, + "high_24h": 1.008, + "low_24h": 0.990688, + "price_change_24h": -0.007394279053344444, + "price_change_percentage_24h": -0.73427, + "market_cap_change_24h": -72969.25165560469, + "market_cap_change_percentage_24h": -0.58441, + "circulating_supply": 12417266.5062517, + "total_supply": 12417266.5062517, + "max_supply": null, + "ath": 1.094, + "ath_change_percentage": -8.5499, + "ath_date": "2025-10-10T21:35:42.657Z", + "atl": 0.911731, + "atl_change_percentage": 9.72786, + "atl_date": "2025-07-17T08:06:20.701Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.811Z" + }, + { + "id": "relend-network-usdc-hyperevm", + "symbol": "rusdc-hyper", + "name": "Relend Network USDC (HyperEVM)", + "image": "https://coin-images.coingecko.com/coins/images/66543/large/rUSDC-hyper.png?1749710631", + "current_price": 0.999243, + "market_cap": 11914053, + "market_cap_rank": 1549, + "fully_diluted_valuation": 11914053, + "total_volume": 999.24, + "high_24h": 1.01, + "low_24h": 0.994317, + "price_change_24h": -0.005434570674905492, + "price_change_percentage_24h": -0.54093, + "market_cap_change_24h": -26406.43987033516, + "market_cap_change_percentage_24h": -0.22115, + "circulating_supply": 11917309.772936, + "total_supply": 11917309.772936, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -19.73163, + "ath_date": "2025-10-10T22:21:21.116Z", + "atl": 0.70585, + "atl_change_percentage": 42.25159, + "atl_date": "2025-10-10T21:21:19.451Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.313Z" + }, + { + "id": "yusd-stablecoin", + "symbol": "yusd", + "name": "YUSD Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/25024/large/1_oJ0F2Zf6CuAhLP0zOboo6w.png?1696524176", + "current_price": 0.995573, + "market_cap": 11789014, + "market_cap_rank": 1554, + "fully_diluted_valuation": 11789014, + "total_volume": 23.05, + "high_24h": 0.996176, + "low_24h": 0.995573, + "price_change_24h": -0.000506626662363452, + "price_change_percentage_24h": -0.05086, + "market_cap_change_24h": -5999.4128710161895, + "market_cap_change_percentage_24h": -0.05086, + "circulating_supply": 11841434.44106298, + "total_supply": 11841434.44106298, + "max_supply": null, + "ath": 4.17, + "ath_change_percentage": -76.14537, + "ath_date": "2023-04-23T12:46:10.492Z", + "atl": 0.076939, + "atl_change_percentage": 1193.97445, + "atl_date": "2024-02-26T03:50:44.907Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.397Z" + }, + { + "id": "byusd", + "symbol": "byusd", + "name": "BYUSD", + "image": "https://coin-images.coingecko.com/coins/images/67819/large/byusd.png?1753942382", + "current_price": 0.999328, + "market_cap": 11475623, + "market_cap_rank": 1578, + "fully_diluted_valuation": 11475623, + "total_volume": 1.2, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 11483336.420254, + "total_supply": 11483336.420254, + "max_supply": null, + "ath": 1.5, + "ath_change_percentage": -33.37493, + "ath_date": "2025-08-28T11:57:07.905Z", + "atl": 0.502942, + "atl_change_percentage": 98.69669, + "atl_date": "2025-10-17T19:26:54.586Z", + "roi": null, + "last_updated": "2025-11-04T16:23:08.534Z" + }, + { + "id": "nest-alpha-vault-lp", + "symbol": "inalpha", + "name": "Nest Alpha Vault (LP)", + "image": "https://coin-images.coingecko.com/coins/images/66319/large/nALPHA.png?1749197870", + "current_price": 1.016, + "market_cap": 11122343, + "market_cap_rank": 1605, + "fully_diluted_valuation": 11122343, + "total_volume": 0, + "high_24h": 1.016, + "low_24h": 1.016, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 10943891.713999, + "total_supply": 10943891.713999, + "max_supply": null, + "ath": 1.018, + "ath_change_percentage": -0.18043, + "ath_date": "2025-09-24T16:00:10.174Z", + "atl": 1, + "atl_change_percentage": 1.6306, + "atl_date": "2025-07-10T07:25:11.007Z", + "roi": null, + "last_updated": "2025-11-06T17:20:04.751Z" + }, + { + "id": "rupiah-token", + "symbol": "idrt", + "name": "Rupiah Token", + "image": "https://coin-images.coingecko.com/coins/images/9441/large/57421944_1371636006308255_3647136573922738176_n.jpg?1696509533", + "current_price": 0.00005981, + "market_cap": 10406980, + "market_cap_rank": 1661, + "fully_diluted_valuation": 10406980, + "total_volume": 1828.82, + "high_24h": 0.00006051, + "low_24h": 0.00005901, + "price_change_24h": -2.7181034613e-8, + "price_change_percentage_24h": -0.04542, + "market_cap_change_24h": 3523.59, + "market_cap_change_percentage_24h": 0.03387, + "circulating_supply": 173856905811, + "total_supply": 173856905811, + "max_supply": null, + "ath": 0.00026862, + "ath_change_percentage": -77.71516, + "ath_date": "2020-04-16T07:49:07.030Z", + "atl": 6.7512e-8, + "atl_change_percentage": 88567.991, + "atl_date": "2020-05-27T14:35:44.312Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.575Z" + }, + { + "id": "anzens-usda", + "symbol": "usda", + "name": "Anzens USDA", + "image": "https://coin-images.coingecko.com/coins/images/67347/large/usda.jpg?1752476144", + "current_price": 1.033, + "market_cap": 10400923, + "market_cap_rank": 1658, + "fully_diluted_valuation": 10400923, + "total_volume": 238411, + "high_24h": 1.043, + "low_24h": 1.003, + "price_change_24h": 0.00415077, + "price_change_percentage_24h": 0.40363, + "market_cap_change_24h": 58129, + "market_cap_change_percentage_24h": 0.56202, + "circulating_supply": 10081677, + "total_supply": 10081677, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -6.84464, + "ath_date": "2025-09-08T20:47:33.025Z", + "atl": 0.529751, + "atl_change_percentage": 95.1948, + "atl_date": "2025-10-10T21:27:24.758Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.007Z" + }, + { + "id": "defi-money", + "symbol": "money", + "name": "Defi.money", + "image": "https://coin-images.coingecko.com/coins/images/39230/large/Token_2x-1.png?1725438128", + "current_price": 0.987902, + "market_cap": 9909865, + "market_cap_rank": 1695, + "fully_diluted_valuation": 9909865, + "total_volume": 15.29, + "high_24h": 0.997394, + "low_24h": 0.987902, + "price_change_24h": -0.000425470032383468, + "price_change_percentage_24h": -0.04305, + "market_cap_change_24h": -4268.038389554247, + "market_cap_change_percentage_24h": -0.04305, + "circulating_supply": 10031228.20573519, + "total_supply": 10031228.20573519, + "max_supply": null, + "ath": 1.056, + "ath_change_percentage": -6.3833, + "ath_date": "2025-03-05T05:17:37.806Z", + "atl": 0.957772, + "atl_change_percentage": 3.1915, + "atl_date": "2024-08-05T06:26:49.059Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.024Z" + }, + { + "id": "origin-dollar", + "symbol": "ousd", + "name": "Origin Dollar", + "image": "https://coin-images.coingecko.com/coins/images/12589/large/ousd-logo-200x200.png?1696512399", + "current_price": 0.995494, + "market_cap": 9554599, + "market_cap_rank": 1723, + "fully_diluted_valuation": 9554599, + "total_volume": 144275, + "high_24h": 1.009, + "low_24h": 0.991402, + "price_change_24h": -0.004073552650165402, + "price_change_percentage_24h": -0.40753, + "market_cap_change_24h": -16864.74154366553, + "market_cap_change_percentage_24h": -0.1762, + "circulating_supply": 9573585.467486978, + "total_supply": 9573585.467486978, + "max_supply": 9573585.467486978, + "ath": 7.46, + "ath_change_percentage": -86.65061, + "ath_date": "2021-05-18T18:43:44.666Z", + "atl": 0.145538, + "atl_change_percentage": 584.64078, + "atl_date": "2020-11-17T05:38:41.319Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.386Z" + }, + { + "id": "iusd", + "symbol": "iusd", + "name": "Indigo Protocol iUSD", + "image": "https://coin-images.coingecko.com/coins/images/28494/large/iUSD_200x200.png?1714842669", + "current_price": 1.002, + "market_cap": 9545376, + "market_cap_rank": 1722, + "fully_diluted_valuation": 9545376, + "total_volume": 404762, + "high_24h": 1.019, + "low_24h": 0.995595, + "price_change_24h": -0.01590499488352548, + "price_change_percentage_24h": -1.56325, + "market_cap_change_24h": -136162.1389307473, + "market_cap_change_percentage_24h": -1.40641, + "circulating_supply": 9522411.050995, + "total_supply": 9522411.050995, + "max_supply": null, + "ath": 1.33, + "ath_change_percentage": -24.5156, + "ath_date": "2025-03-02T16:42:49.518Z", + "atl": 8.1944e-7, + "atl_change_percentage": 122441791.02687, + "atl_date": "2024-01-11T00:22:11.353Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.374Z" + }, + { + "id": "elixir-deusd", + "symbol": "deusd", + "name": "Elixir deUSD", + "image": "https://coin-images.coingecko.com/coins/images/39494/large/deUSD_Logo_%281%29.png?1723689002", + "current_price": 0.111462, + "market_cap": 9166008, + "market_cap_rank": 1801, + "fully_diluted_valuation": 9166008, + "total_volume": 6411607, + "high_24h": 1.003, + "low_24h": 0.081597, + "price_change_24h": -0.8853680217712503, + "price_change_percentage_24h": -88.81833, + "market_cap_change_24h": -94179583.31718062, + "market_cap_change_percentage_24h": -91.13072, + "circulating_supply": 91244422.20138915, + "total_supply": 91244422.20138915, + "max_supply": null, + "ath": 1.04, + "ath_change_percentage": -92.15628, + "ath_date": "2025-01-20T07:11:00.260Z", + "atl": 0.081859, + "atl_change_percentage": -0.31964, + "atl_date": "2025-11-06T16:57:31.676Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.396Z" + }, + { + "id": "usd-coinvertible", + "symbol": "usdcv", + "name": "USD CoinVertible", + "image": "https://coin-images.coingecko.com/coins/images/69726/large/usd-coinvertible.png?1759401966", + "current_price": 1, + "market_cap": 8899061, + "market_cap_rank": 1770, + "fully_diluted_valuation": 8899061, + "total_volume": 10497125, + "high_24h": 1.001, + "low_24h": 0.999209, + "price_change_24h": 0.00027535, + "price_change_percentage_24h": 0.02754, + "market_cap_change_24h": -403.7881152909249, + "market_cap_change_percentage_24h": -0.00454, + "circulating_supply": 8900300, + "total_supply": 8900300, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -11.72366, + "ath_date": "2025-10-10T21:26:30.938Z", + "atl": 0.978779, + "atl_change_percentage": 2.15511, + "atl_date": "2025-10-10T21:17:49.442Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.283Z" + }, + { + "id": "zedxion-usdz", + "symbol": "usdz", + "name": "Zedxion USDZ", + "image": "https://coin-images.coingecko.com/coins/images/25909/large/20475.png?1696524990", + "current_price": 0.987889, + "market_cap": 8630564, + "market_cap_rank": 1785, + "fully_diluted_valuation": 85937195548, + "total_volume": 72200, + "high_24h": 0.996661, + "low_24h": 0.985767, + "price_change_24h": -0.006421475435041124, + "price_change_percentage_24h": -0.64582, + "market_cap_change_24h": -57049.76927149482, + "market_cap_change_percentage_24h": -0.65668, + "circulating_supply": 8737300.386192651, + "total_supply": 87000000000, + "max_supply": 87000000000, + "ath": 2.75, + "ath_change_percentage": -64.14025, + "ath_date": "2023-02-27T08:04:52.907Z", + "atl": 0.907801, + "atl_change_percentage": 8.81952, + "atl_date": "2025-02-28T21:27:06.572Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.281Z" + }, + { + "id": "bitcoin-usd-btcfi", + "symbol": "btcusd", + "name": "Bitcoin USD (BTCFi)", + "image": "https://coin-images.coingecko.com/coins/images/37181/large/BtcUSD_Logo.png?1713514017", + "current_price": 0.997251, + "market_cap": 8484170, + "market_cap_rank": 1803, + "fully_diluted_valuation": 8484170, + "total_volume": 23817, + "high_24h": 1.007, + "low_24h": 0.994296, + "price_change_24h": -0.003346822557236728, + "price_change_percentage_24h": -0.33448, + "market_cap_change_24h": -27722.626446681097, + "market_cap_change_percentage_24h": -0.32569, + "circulating_supply": 8507197.367, + "total_supply": 8507197.367, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -15.38814, + "ath_date": "2025-06-14T14:37:18.687Z", + "atl": 0.90361, + "atl_change_percentage": 10.36178, + "atl_date": "2025-11-04T23:03:39.348Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.735Z" + }, + { + "id": "jpycoin", + "symbol": "jpyc", + "name": "JPY Coin", + "image": "https://coin-images.coingecko.com/coins/images/70314/large/JPYC_400x400.jpg?1761556080", + "current_price": 0.00647429, + "market_cap": 7768101, + "market_cap_rank": 1871, + "fully_diluted_valuation": 7768101, + "total_volume": 72846, + "high_24h": 0.0064743, + "low_24h": 0.00643375, + "price_change_24h": 0.00002244, + "price_change_percentage_24h": 0.34786, + "market_cap_change_24h": 31523, + "market_cap_change_percentage_24h": 0.40745, + "circulating_supply": 1200000000, + "total_supply": 1200000000, + "max_supply": 1200000000, + "ath": 0.00671645, + "ath_change_percentage": -3.6214, + "ath_date": "2025-10-28T13:47:54.979Z", + "atl": 0.00639444, + "atl_change_percentage": 1.23198, + "atl_date": "2025-10-31T11:21:42.236Z", + "roi": null, + "last_updated": "2025-11-06T17:24:33.460Z" + }, + { + "id": "schuman-europ", + "symbol": "europ", + "name": "EURØP", + "image": "https://coin-images.coingecko.com/coins/images/52132/large/europ-symbol-rgb.jpg?1732634862", + "current_price": 1.16, + "market_cap": 7756605, + "market_cap_rank": 1872, + "fully_diluted_valuation": 7756605, + "total_volume": 192374, + "high_24h": 1.16, + "low_24h": 1.15, + "price_change_24h": 0.00381783, + "price_change_percentage_24h": 0.33143, + "market_cap_change_24h": 25623, + "market_cap_change_percentage_24h": 0.33143, + "circulating_supply": 6711377.322036, + "total_supply": 6711377.322036, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -2.88527, + "ath_date": "2025-09-17T18:16:58.636Z", + "atl": 0.929365, + "atl_change_percentage": 24.35799, + "atl_date": "2025-02-12T14:28:05.798Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.665Z" + }, + { + "id": "stablr-usd", + "symbol": "usdr", + "name": "StablR USD", + "image": "https://coin-images.coingecko.com/coins/images/53721/large/stablrusd-logo.png?1737126629", + "current_price": 0.999697, + "market_cap": 6999566, + "market_cap_rank": 1934, + "fully_diluted_valuation": 6999566, + "total_volume": 60716238, + "high_24h": 1.001, + "low_24h": 0.999364, + "price_change_24h": 0.00013715, + "price_change_percentage_24h": 0.01372, + "market_cap_change_24h": -299.11123866960406, + "market_cap_change_percentage_24h": -0.00427, + "circulating_supply": 7003147.68, + "total_supply": 7003147.68, + "max_supply": null, + "ath": 1.053, + "ath_change_percentage": -5.02557, + "ath_date": "2025-03-04T20:26:03.971Z", + "atl": 0.877334, + "atl_change_percentage": 13.94395, + "atl_date": "2025-03-10T00:20:22.509Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.267Z" + }, + { + "id": "bilira", + "symbol": "tryb", + "name": "BiLira", + "image": "https://coin-images.coingecko.com/coins/images/10119/large/JBs9jiXO_400x400.jpg?1696510144", + "current_price": 0.02372948, + "market_cap": 6976251, + "market_cap_rank": 1938, + "fully_diluted_valuation": 6976251, + "total_volume": 179.56, + "high_24h": 0.02374694, + "low_24h": 0.02370976, + "price_change_24h": -0.000004306559339438, + "price_change_percentage_24h": -0.01815, + "market_cap_change_24h": 2531612, + "market_cap_change_percentage_24h": 56.9588, + "circulating_supply": 293990902.707635, + "total_supply": 293990902.707635, + "max_supply": null, + "ath": 0.192677, + "ath_change_percentage": -87.6843, + "ath_date": "2023-09-20T16:54:03.571Z", + "atl": 0.00006956, + "atl_change_percentage": 34015.88044, + "atl_date": "2024-08-23T23:31:07.932Z", + "roi": null, + "last_updated": "2025-11-06T17:01:11.387Z" + }, + { + "id": "celo-euro", + "symbol": "ceur", + "name": "Celo Euro", + "image": "https://coin-images.coingecko.com/coins/images/16756/large/CEUR.png?1696516329", + "current_price": 1.15, + "market_cap": 6931826, + "market_cap_rank": 1949, + "fully_diluted_valuation": 12629208, + "total_volume": 628687, + "high_24h": 1.15, + "low_24h": 1.15, + "price_change_24h": -0.001097931655932749, + "price_change_percentage_24h": -0.09559, + "market_cap_change_24h": -7463.61414541956, + "market_cap_change_percentage_24h": -0.10756, + "circulating_supply": 6040806.92936527, + "total_supply": 11005846, + "max_supply": null, + "ath": 19.98, + "ath_change_percentage": -94.25659, + "ath_date": "2022-10-31T22:18:55.837Z", + "atl": 0.236339, + "atl_change_percentage": 385.55189, + "atl_date": "2024-01-08T22:25:25.873Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.183Z" + }, + { + "id": "quantoz-usdq", + "symbol": "usdq", + "name": "Quantoz USDQ", + "image": "https://coin-images.coingecko.com/coins/images/51852/large/exchange-logo_USDQ.png?1749836750", + "current_price": 0.999596, + "market_cap": 6659194, + "market_cap_rank": 1979, + "fully_diluted_valuation": 50981561, + "total_volume": 12854633, + "high_24h": 1.001, + "low_24h": 0.998997, + "price_change_24h": 0.00002804, + "price_change_percentage_24h": 0.00281, + "market_cap_change_24h": 251.04, + "market_cap_change_percentage_24h": 0.00377, + "circulating_supply": 6661603, + "total_supply": 51000000, + "max_supply": null, + "ath": 1.043, + "ath_change_percentage": -4.19427, + "ath_date": "2025-03-02T16:45:57.727Z", + "atl": 0.938182, + "atl_change_percentage": 6.52822, + "atl_date": "2025-01-13T20:15:49.270Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.197Z" + }, + { + "id": "freedom-dollar", + "symbol": "fusd", + "name": "Freedom Dollar", + "image": "https://coin-images.coingecko.com/coins/images/55500/large/logo-color.png?1747131624", + "current_price": 0.999411, + "market_cap": 6396530, + "market_cap_rank": 2007, + "fully_diluted_valuation": 6396530, + "total_volume": 395632, + "high_24h": 1, + "low_24h": 0.99805, + "price_change_24h": -0.000483432621742885, + "price_change_percentage_24h": -0.04835, + "market_cap_change_24h": 98593, + "market_cap_change_percentage_24h": 1.56547, + "circulating_supply": 6400000, + "total_supply": 6400000, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -5.48792, + "ath_date": "2025-06-18T12:14:41.112Z", + "atl": 0.988659, + "atl_change_percentage": 1.09138, + "atl_date": "2025-05-27T14:57:22.484Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.333Z" + }, + { + "id": "gyen", + "symbol": "gyen", + "name": "GYEN", + "image": "https://coin-images.coingecko.com/coins/images/14191/large/icon_gyen_200_200.png?1696513909", + "current_price": 0.00589092, + "market_cap": 6396245, + "market_cap_rank": 2004, + "fully_diluted_valuation": 6396245, + "total_volume": 771.43, + "high_24h": 0.00596117, + "low_24h": 0.00568902, + "price_change_24h": 0.0001432, + "price_change_percentage_24h": 2.49146, + "market_cap_change_24h": 164103, + "market_cap_change_percentage_24h": 2.63317, + "circulating_supply": 1085781048.057572, + "total_supply": 1085781048.057572, + "max_supply": null, + "ath": 0.060753, + "ath_change_percentage": -90.21385, + "ath_date": "2021-11-17T16:38:28.459Z", + "atl": 0.0022112, + "atl_change_percentage": 168.87651, + "atl_date": "2025-05-23T20:10:53.020Z", + "roi": null, + "last_updated": "2025-11-06T17:24:32.771Z" + }, + { + "id": "orby-network-usc-stablecoin", + "symbol": "usc", + "name": "Orby Network USC Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/35639/large/Orbit_Icons_200_200.png?1709294875", + "current_price": 1.004, + "market_cap": 6293442, + "market_cap_rank": 2014, + "fully_diluted_valuation": 6293442, + "total_volume": 215960, + "high_24h": 1.029, + "low_24h": 0.99798, + "price_change_24h": -0.020761592716977084, + "price_change_percentage_24h": -2.02658, + "market_cap_change_24h": -697552.5316559914, + "market_cap_change_percentage_24h": -9.97787, + "circulating_supply": 6286903.394167687, + "total_supply": 6286903.394167687, + "max_supply": null, + "ath": 1.24, + "ath_change_percentage": -18.75298, + "ath_date": "2024-09-04T08:22:04.003Z", + "atl": 0.685765, + "atl_change_percentage": 46.8634, + "atl_date": "2025-10-10T21:23:44.133Z", + "roi": null, + "last_updated": "2025-11-06T17:24:43.139Z" + }, + { + "id": "balanced-dollars", + "symbol": "bnusd", + "name": "Balanced Dollars", + "image": "https://coin-images.coingecko.com/coins/images/18949/large/bnUSD.png?1715223751", + "current_price": 0.999802, + "market_cap": 5947908, + "market_cap_rank": 2056, + "fully_diluted_valuation": 5947908, + "total_volume": 45228, + "high_24h": 1.011, + "low_24h": 0.981064, + "price_change_24h": -0.004391342063896686, + "price_change_percentage_24h": -0.4373, + "market_cap_change_24h": 5309.69, + "market_cap_change_percentage_24h": 0.08935, + "circulating_supply": 5935827.422410711, + "total_supply": 5935827.422410711, + "max_supply": null, + "ath": 1.85, + "ath_change_percentage": -46.0054, + "ath_date": "2023-01-21T11:40:07.335Z", + "atl": 0.708204, + "atl_change_percentage": 41.17428, + "atl_date": "2023-08-17T21:49:23.180Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.364Z" + }, + { + "id": "relend-network-usdc-swell", + "symbol": "rusdc", + "name": "Relend Network USDC (Swell)", + "image": "https://coin-images.coingecko.com/coins/images/55341/large/rUSDC-_200x200.png?1745506753", + "current_price": 0.986045, + "market_cap": 5938025, + "market_cap_rank": 2057, + "fully_diluted_valuation": 5938025, + "total_volume": 608.06, + "high_24h": 1.013, + "low_24h": 0.977265, + "price_change_24h": -0.019582038038924, + "price_change_percentage_24h": -1.94725, + "market_cap_change_24h": -139685.2963321479, + "market_cap_change_percentage_24h": -2.29832, + "circulating_supply": 6021802, + "total_supply": 6021802, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -6.28202, + "ath_date": "2025-07-10T21:46:28.589Z", + "atl": 0.890992, + "atl_change_percentage": 10.66221, + "atl_date": "2025-10-10T21:22:04.709Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.326Z" + }, + { + "id": "cnh-tether", + "symbol": "cnht", + "name": "CNH Tether", + "image": "https://coin-images.coingecko.com/coins/images/5251/large/cny-tether-logo.png?1696505755", + "current_price": 0.285555, + "market_cap": 5854871, + "market_cap_rank": 2068, + "fully_diluted_valuation": null, + "total_volume": 2, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 20503468.9, + "total_supply": null, + "max_supply": null, + "ath": 0.432049, + "ath_change_percentage": -33.90678, + "ath_date": "2021-04-14T11:55:31.249Z", + "atl": 0.060707, + "atl_change_percentage": 370.38254, + "atl_date": "2025-09-22T15:55:47.326Z", + "roi": null, + "last_updated": "2025-11-01T02:38:57.580Z" + }, + { + "id": "husd", + "symbol": "husd", + "name": "HUSD", + "image": "https://coin-images.coingecko.com/coins/images/9567/large/HUSD.jpg?1696509647", + "current_price": 0.02997842, + "market_cap": 5630457, + "market_cap_rank": 2092, + "fully_diluted_valuation": 5630457, + "total_volume": 1.75, + "high_24h": 0.02997842, + "low_24h": 0.02986267, + "price_change_24h": 0.00011575, + "price_change_percentage_24h": 0.3876, + "market_cap_change_24h": 21739, + "market_cap_change_percentage_24h": 0.3876, + "circulating_supply": 187817004.8973786, + "total_supply": 187817004.8973786, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -97.61093, + "ath_date": "2020-03-13T02:40:09.956Z", + "atl": 0.00724195, + "atl_change_percentage": 313.95498, + "atl_date": "2025-10-26T01:35:35.556Z", + "roi": null, + "last_updated": "2025-11-05T19:09:29.833Z" + }, + { + "id": "quantoz-eurq", + "symbol": "eurq", + "name": "Quantoz EURQ", + "image": "https://coin-images.coingecko.com/coins/images/51853/large/exchange-logo_EURQ.png?1749836767", + "current_price": 1.15, + "market_cap": 5447807, + "market_cap_rank": 2117, + "fully_diluted_valuation": 17210460, + "total_volume": 11410494, + "high_24h": 1.15, + "low_24h": 1.14, + "price_change_24h": 0.0006016, + "price_change_percentage_24h": 0.05247, + "market_cap_change_24h": 4337.8, + "market_cap_change_percentage_24h": 0.07969, + "circulating_supply": 4748107.408356, + "total_supply": 15000000, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -3.48147, + "ath_date": "2025-09-17T18:12:05.006Z", + "atl": 0.763698, + "atl_change_percentage": 50.15628, + "atl_date": "2025-03-08T16:36:29.716Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.454Z" + }, + { + "id": "hermetica-usdh", + "symbol": "usdh", + "name": "Hermetica USDh", + "image": "https://coin-images.coingecko.com/coins/images/54325/large/USDh.png?1758177140", + "current_price": 1, + "market_cap": 5120831, + "market_cap_rank": 2171, + "fully_diluted_valuation": 5120831, + "total_volume": 17018.04, + "high_24h": 1.013, + "low_24h": 0.982619, + "price_change_24h": -0.007445667934925515, + "price_change_percentage_24h": -0.73872, + "market_cap_change_24h": -93002.86187901068, + "market_cap_change_percentage_24h": -1.78377, + "circulating_supply": 5118446.03723561, + "total_supply": 5118446.03723561, + "max_supply": null, + "ath": 1.042, + "ath_change_percentage": -4.16515, + "ath_date": "2025-11-05T02:06:41.030Z", + "atl": 0.874612, + "atl_change_percentage": 14.12497, + "atl_date": "2025-11-03T15:37:26.865Z", + "roi": null, + "last_updated": "2025-11-06T17:24:35.182Z" + }, + { + "id": "vnx-swiss-franc", + "symbol": "vchf", + "name": "VNX Swiss Franc", + "image": "https://coin-images.coingecko.com/coins/images/29547/large/VNXCHF_%282%29.png?1696528488", + "current_price": 1.24, + "market_cap": 5060759, + "market_cap_rank": 2177, + "fully_diluted_valuation": 5060759, + "total_volume": 869134, + "high_24h": 1.26, + "low_24h": 1.23, + "price_change_24h": 0.00558009, + "price_change_percentage_24h": 0.45084, + "market_cap_change_24h": 29519, + "market_cap_change_percentage_24h": 0.58671, + "circulating_supply": 4069871.44582, + "total_supply": 4069871.44582, + "max_supply": null, + "ath": 1.28, + "ath_change_percentage": -3.50464, + "ath_date": "2025-09-05T15:13:32.320Z", + "atl": 0.0112707, + "atl_change_percentage": 10894.40397, + "atl_date": "2023-11-26T14:24:40.720Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.602Z" + }, + { + "id": "meta-usd", + "symbol": "musd", + "name": "Meta USD", + "image": "https://coin-images.coingecko.com/coins/images/53815/large/musd_%281%29.png?1737454744", + "current_price": 1.005, + "market_cap": 5059580, + "market_cap_rank": 2178, + "fully_diluted_valuation": 5059580, + "total_volume": 9200.35, + "high_24h": 1.009, + "low_24h": 0.994685, + "price_change_24h": 0.00586448, + "price_change_percentage_24h": 0.58712, + "market_cap_change_24h": 28949, + "market_cap_change_percentage_24h": 0.57546, + "circulating_supply": 5037096.486207606, + "total_supply": 5037096.486207606, + "max_supply": null, + "ath": 1.089, + "ath_change_percentage": -7.66166, + "ath_date": "2025-10-10T21:48:41.755Z", + "atl": 0.00096541, + "atl_change_percentage": 104102.80327, + "atl_date": "2025-01-24T00:01:56.268Z", + "roi": null, + "last_updated": "2025-11-06T17:24:35.339Z" + }, + { + "id": "tether-eurt", + "symbol": "eurt", + "name": "Euro Tether", + "image": "https://coin-images.coingecko.com/coins/images/17385/large/Tether_new.png?1696516934", + "current_price": 1.15, + "market_cap": 4770756, + "market_cap_rank": 2228, + "fully_diluted_valuation": 57405987, + "total_volume": 490673, + "high_24h": 1.17, + "low_24h": 1.15, + "price_change_24h": -0.006915346494972274, + "price_change_percentage_24h": -0.59887, + "market_cap_change_24h": -27226.09412842896, + "market_cap_change_percentage_24h": -0.56745, + "circulating_supply": 4155281.738213, + "total_supply": 50000050, + "max_supply": 50000050, + "ath": 1.31, + "ath_change_percentage": -12.19784, + "ath_date": "2021-09-02T00:28:44.121Z", + "atl": 0.944541, + "atl_change_percentage": 21.51137, + "atl_date": "2022-09-27T16:30:27.333Z", + "roi": null, + "last_updated": "2025-11-06T17:24:39.804Z" + }, + { + "id": "nectar", + "symbol": "nect", + "name": "Nectar", + "image": "https://coin-images.coingecko.com/coins/images/54231/large/NECT_%281%29.png?1738861282", + "current_price": 0.991477, + "market_cap": 4697806, + "market_cap_rank": 2241, + "fully_diluted_valuation": 4697806, + "total_volume": 198744, + "high_24h": 1.005, + "low_24h": 0.986853, + "price_change_24h": -0.01003363627288445, + "price_change_percentage_24h": -1.00185, + "market_cap_change_24h": -20365.162987674586, + "market_cap_change_percentage_24h": -0.43163, + "circulating_supply": 4717559.53766, + "total_supply": 4717559.53766, + "max_supply": null, + "ath": 1.035, + "ath_change_percentage": -3.85471, + "ath_date": "2025-02-07T14:13:27.015Z", + "atl": 0.924306, + "atl_change_percentage": 7.65705, + "atl_date": "2025-11-04T15:03:00.855Z", + "roi": null, + "last_updated": "2025-11-06T17:24:35.577Z" + }, + { + "id": "astera-usd", + "symbol": "asusd", + "name": "Astera USD", + "image": "https://coin-images.coingecko.com/coins/images/67887/large/asusd_logo_mark_svg-2_big.png?1754125730", + "current_price": 0.37498, + "market_cap": 4499756, + "market_cap_rank": 2286, + "fully_diluted_valuation": 4499756, + "total_volume": 1069.4, + "high_24h": 0.447489, + "low_24h": 0.374943, + "price_change_24h": -0.07246655072893238, + "price_change_percentage_24h": -16.19559, + "market_cap_change_24h": -1008817.060652256, + "market_cap_change_percentage_24h": -18.31358, + "circulating_supply": 12000000, + "total_supply": 12000000, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -81.25358, + "ath_date": "2025-10-10T21:57:31.732Z", + "atl": 0.374943, + "atl_change_percentage": 0, + "atl_date": "2025-11-06T17:06:51.200Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.099Z" + }, + { + "id": "smardex-usdn", + "symbol": "usdn", + "name": "SMARDEX USDN", + "image": "https://coin-images.coingecko.com/coins/images/52939/large/USDN.png?1734769447", + "current_price": 0.99559, + "market_cap": 4311628, + "market_cap_rank": 2321, + "fully_diluted_valuation": 4311628, + "total_volume": 46878, + "high_24h": 1.01, + "low_24h": 0.979518, + "price_change_24h": -0.00318909655005728, + "price_change_percentage_24h": -0.3193, + "market_cap_change_24h": -29374.327861788683, + "market_cap_change_percentage_24h": -0.67667, + "circulating_supply": 4330725.300568594, + "total_supply": 4330725.300568594, + "max_supply": null, + "ath": 1.054, + "ath_change_percentage": -5.55592, + "ath_date": "2025-10-10T21:40:10.552Z", + "atl": 0.95378, + "atl_change_percentage": 4.38267, + "atl_date": "2025-02-03T07:57:38.623Z", + "roi": null, + "last_updated": "2025-11-06T17:24:38.915Z" + }, + { + "id": "pinto", + "symbol": "pinto", + "name": "Pinto", + "image": "https://coin-images.coingecko.com/coins/images/54217/large/pinto.png?1738829146", + "current_price": 0.383151, + "market_cap": 4097136, + "market_cap_rank": 2368, + "fully_diluted_valuation": 4097136, + "total_volume": 166026, + "high_24h": 0.397668, + "low_24h": 0.381275, + "price_change_24h": -0.011923898347935113, + "price_change_percentage_24h": -3.01814, + "market_cap_change_24h": -127933.60649089701, + "market_cap_change_percentage_24h": -3.02796, + "circulating_supply": 10694389.219448, + "total_supply": 10694389.219448, + "max_supply": null, + "ath": 1.023, + "ath_change_percentage": -62.5126, + "ath_date": "2025-07-26T02:42:16.318Z", + "atl": 0.343824, + "atl_change_percentage": 11.51538, + "atl_date": "2025-07-18T21:06:32.256Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.679Z" + }, + { + "id": "liquid-loans-usdl", + "symbol": "usdl", + "name": "Liquid Loans USDL", + "image": "https://coin-images.coingecko.com/coins/images/34292/large/usdl.png?1742888809", + "current_price": 0.993469, + "market_cap": 4053382, + "market_cap_rank": 2378, + "fully_diluted_valuation": 4053382, + "total_volume": 274783, + "high_24h": 1.004, + "low_24h": 0.984905, + "price_change_24h": -0.004230150489718643, + "price_change_percentage_24h": -0.42399, + "market_cap_change_24h": 34403, + "market_cap_change_percentage_24h": 0.85601, + "circulating_supply": 4093524.351178545, + "total_supply": 4093524.351178545, + "max_supply": null, + "ath": 1.15, + "ath_change_percentage": -13.99866, + "ath_date": "2025-05-23T05:29:49.903Z", + "atl": 0.862517, + "atl_change_percentage": 15.03914, + "atl_date": "2024-12-21T23:31:42.836Z", + "roi": null, + "last_updated": "2025-11-06T17:24:36.280Z" + }, + { + "id": "djed", + "symbol": "djed", + "name": "Djed", + "image": "https://coin-images.coingecko.com/coins/images/28650/large/256_Djed__No_Background_%284%29_%283%29.png?1696527635", + "current_price": 0.995587, + "market_cap": 4007394, + "market_cap_rank": 2391, + "fully_diluted_valuation": 4007394, + "total_volume": 256357, + "high_24h": 1.031, + "low_24h": 0.987105, + "price_change_24h": -0.016577172526459516, + "price_change_percentage_24h": -1.63779, + "market_cap_change_24h": -38725.00552753126, + "market_cap_change_percentage_24h": -0.95709, + "circulating_supply": 4019107.3, + "total_supply": 4019107.3, + "max_supply": null, + "ath": 1.28, + "ath_change_percentage": -22.13418, + "ath_date": "2025-03-02T16:42:49.164Z", + "atl": 0.492089, + "atl_change_percentage": 103.24478, + "atl_date": "2025-10-10T21:25:20.523Z", + "roi": null, + "last_updated": "2025-11-06T17:24:44.039Z" + }, + { + "id": "pht-stablecoin", + "symbol": "pht", + "name": "PHT Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/68174/large/PHT_200_x_200_logo.png?1754996743", + "current_price": 0.01690009, + "market_cap": 3802713, + "market_cap_rank": 2427, + "fully_diluted_valuation": 3802713, + "total_volume": 2364.17, + "high_24h": 0.0170578, + "low_24h": 0.01689042, + "price_change_24h": -0.000025077912040962, + "price_change_percentage_24h": -0.14817, + "market_cap_change_24h": -5519.003529223613, + "market_cap_change_percentage_24h": -0.14492, + "circulating_supply": 225011399.7613014, + "total_supply": 225011399.7613014, + "max_supply": null, + "ath": 0.01817267, + "ath_change_percentage": -7.00392, + "ath_date": "2025-08-16T07:09:56.107Z", + "atl": 0.01686847, + "atl_change_percentage": 0.18615, + "atl_date": "2025-10-28T20:25:11.664Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.706Z" + }, + { + "id": "novatti-australian-digital-dollar", + "symbol": "audd", + "name": "Australian Digital Dollar", + "image": "https://coin-images.coingecko.com/coins/images/33263/large/AUDD-Logo-Blue_512.png?1701319895", + "current_price": 0.647442, + "market_cap": 3802355, + "market_cap_rank": 2431, + "fully_diluted_valuation": 3802355, + "total_volume": 695718, + "high_24h": 0.653423, + "low_24h": 0.64625, + "price_change_24h": -0.001667942571581205, + "price_change_percentage_24h": -0.25696, + "market_cap_change_24h": -9578.145930327475, + "market_cap_change_percentage_24h": -0.25127, + "circulating_supply": 5872949.144638, + "total_supply": 5872949.144638, + "max_supply": null, + "ath": 2.87, + "ath_change_percentage": -77.43846, + "ath_date": "2025-10-04T02:11:11.718Z", + "atl": 0.36464, + "atl_change_percentage": 77.57073, + "atl_date": "2024-12-18T18:34:11.402Z", + "roi": null, + "last_updated": "2025-11-06T17:24:37.073Z" + }, + { + "id": "zarp-stablecoin", + "symbol": "zarp", + "name": "ZARP Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/27333/large/zarp_coin.png?1696526381", + "current_price": 0.056931, + "market_cap": 3644202, + "market_cap_rank": 2467, + "fully_diluted_valuation": 3644202, + "total_volume": 31970, + "high_24h": 0.057423, + "low_24h": 0.056297, + "price_change_24h": -0.000002567697662131, + "price_change_percentage_24h": -0.00451, + "market_cap_change_24h": 9579.63, + "market_cap_change_percentage_24h": 0.26357, + "circulating_supply": 64007240.83270886, + "total_supply": 64007240.83270886, + "max_supply": null, + "ath": 0.060594, + "ath_change_percentage": -6.08924, + "ath_date": "2025-10-10T21:45:39.867Z", + "atl": 0.04593778, + "atl_change_percentage": 23.87248, + "atl_date": "2024-12-15T04:10:04.771Z", + "roi": null, + "last_updated": "2025-11-06T17:24:41.266Z" + }, + { + "id": "good-game-us-dollar", + "symbol": "ggusd", + "name": "Good Game US Dollar", + "image": "https://coin-images.coingecko.com/coins/images/66714/large/ggusd-removebg-preview.png?1750296491", + "current_price": 1.001, + "market_cap": 3482823, + "market_cap_rank": 2515, + "fully_diluted_valuation": 3482823, + "total_volume": 169183, + "high_24h": 1.004, + "low_24h": 0.998039, + "price_change_24h": 0.00252331, + "price_change_percentage_24h": 0.25267, + "market_cap_change_24h": 5062.07, + "market_cap_change_percentage_24h": 0.14556, + "circulating_supply": 3479857.357308, + "total_supply": 3479857.357308, + "max_supply": null, + "ath": 1.008, + "ath_change_percentage": -0.90587, + "ath_date": "2025-10-04T15:16:50.226Z", + "atl": 0.981982, + "atl_change_percentage": 1.72422, + "atl_date": "2025-10-17T08:25:27.097Z", + "roi": null, + "last_updated": "2025-11-06T17:24:36.841Z" + }, + { + "id": "hydrated-dollar", + "symbol": "hollar", + "name": "Hydrated Dollar", + "image": "https://coin-images.coingecko.com/coins/images/69496/large/hollar-logo.png?1758770868", + "current_price": 0.997577, + "market_cap": 3456224, + "market_cap_rank": 2530, + "fully_diluted_valuation": 3456224, + "total_volume": 91398, + "high_24h": 0.997734, + "low_24h": 0.99723, + "price_change_24h": 0.00000669, + "price_change_percentage_24h": 0.00067, + "market_cap_change_24h": -13.773339476902038, + "market_cap_change_percentage_24h": -0.0004, + "circulating_supply": 3464592, + "total_supply": 3464592, + "max_supply": null, + "ath": 1.019, + "ath_change_percentage": -2.12763, + "ath_date": "2025-10-01T12:14:21.672Z", + "atl": 0.976486, + "atl_change_percentage": 2.15139, + "atl_date": "2025-10-01T08:18:44.031Z", + "roi": null, + "last_updated": "2025-11-06T17:24:36.852Z" + }, + { + "id": "ylds", + "symbol": "ylds", + "name": "YLDS", + "image": "https://coin-images.coingecko.com/coins/images/66486/large/Frame_5589.png?1749524968", + "current_price": 0.999962, + "market_cap": 3416029, + "market_cap_rank": 2542, + "fully_diluted_valuation": 3416029, + "total_volume": 9999.62, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 3416159, + "total_supply": 3416159, + "max_supply": null, + "ath": 1, + "ath_change_percentage": -0.01411, + "ath_date": "2025-08-27T20:28:23.402Z", + "atl": 0.999943, + "atl_change_percentage": 0.00195, + "atl_date": "2025-08-28T01:01:26.565Z", + "roi": null, + "last_updated": "2025-08-28T01:17:21.133Z" + }, + { + "id": "brla-digital-brla", + "symbol": "brla", + "name": "BRLA Digital BRLA", + "image": "https://coin-images.coingecko.com/coins/images/40062/large/IconGreen400.png?1725459580", + "current_price": 0.185973, + "market_cap": 3387814, + "market_cap_rank": 2553, + "fully_diluted_valuation": 3387814, + "total_volume": 556543, + "high_24h": 0.18702, + "low_24h": 0.184813, + "price_change_24h": 0.0011485, + "price_change_percentage_24h": 0.6214, + "market_cap_change_24h": -125618.67421595007, + "market_cap_change_percentage_24h": -3.57538, + "circulating_supply": 18215466.18594794, + "total_supply": 18215466.18594794, + "max_supply": null, + "ath": 0.188948, + "ath_change_percentage": -1.56535, + "ath_date": "2025-09-23T19:08:42.188Z", + "atl": 0.075673, + "atl_change_percentage": 145.78176, + "atl_date": "2024-11-04T22:10:31.830Z", + "roi": null, + "last_updated": "2025-11-06T17:23:05.402Z" + }, + { + "id": "worldwide-usd", + "symbol": "wusd", + "name": "Worldwide USD", + "image": "https://coin-images.coingecko.com/coins/images/35358/large/WUSD-logo.png?1755754866", + "current_price": 0.999123, + "market_cap": 3356157, + "market_cap_rank": 2560, + "fully_diluted_valuation": 3356157, + "total_volume": 497138, + "high_24h": 1.001, + "low_24h": 0.998913, + "price_change_24h": -0.000993717975869779, + "price_change_percentage_24h": -0.09936, + "market_cap_change_24h": 33769, + "market_cap_change_percentage_24h": 1.01639, + "circulating_supply": 3359271.880670061, + "total_supply": 3359271.880670061, + "max_supply": null, + "ath": 1.074, + "ath_change_percentage": -6.97372, + "ath_date": "2024-03-14T09:40:40.874Z", + "atl": 0.95219, + "atl_change_percentage": 4.92899, + "atl_date": "2024-12-05T22:30:21.449Z", + "roi": null, + "last_updated": "2025-11-06T17:24:40.954Z" + }, + { + "id": "glo-dollar", + "symbol": "usdglo", + "name": "Glo Dollar", + "image": "https://coin-images.coingecko.com/coins/images/29319/large/GLO_logo_pine_on_cyan_1_3.png?1716971065", + "current_price": 0.999807, + "market_cap": 3253387, + "market_cap_rank": 2591, + "fully_diluted_valuation": 3253387, + "total_volume": 31553, + "high_24h": 1.002, + "low_24h": 0.998431, + "price_change_24h": -0.000327520317460972, + "price_change_percentage_24h": -0.03275, + "market_cap_change_24h": 1785.32, + "market_cap_change_percentage_24h": 0.05491, + "circulating_supply": 3254004, + "total_supply": 3254004, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -11.16473, + "ath_date": "2024-03-11T13:20:56.566Z", + "atl": 0.771263, + "atl_change_percentage": 29.64976, + "atl_date": "2025-10-10T21:30:21.451Z", + "roi": null, + "last_updated": "2025-11-06T17:23:02.935Z" + }, + { + "id": "fei-usd", + "symbol": "fei", + "name": "Fei USD", + "image": "https://coin-images.coingecko.com/coins/images/14570/large/ZqsF51Re_400x400.png?1696514251", + "current_price": 0.997123, + "market_cap": 3231881, + "market_cap_rank": 2596, + "fully_diluted_valuation": 3486797, + "total_volume": 8261.79, + "high_24h": 1.024, + "low_24h": 0.979709, + "price_change_24h": -0.02299349891046809, + "price_change_percentage_24h": -2.25401, + "market_cap_change_24h": -61863.96493247384, + "market_cap_change_percentage_24h": -1.87823, + "circulating_supply": 3241206.2798827323, + "total_supply": 3496857.766327664, + "max_supply": 3496857.766327664, + "ath": 5.55, + "ath_change_percentage": -81.97103, + "ath_date": "2024-03-16T13:26:58.463Z", + "atl": 0.15544, + "atl_change_percentage": 543.90336, + "atl_date": "2023-12-30T14:09:50.453Z", + "roi": null, + "last_updated": "2025-11-06T17:23:42.823Z" + }, + { + "id": "last-usd", + "symbol": "usdxl", + "name": "Last USD", + "image": "https://coin-images.coingecko.com/coins/images/55083/large/usdxl.jpg?1743648438", + "current_price": 0.987111, + "market_cap": 3205013, + "market_cap_rank": 2607, + "fully_diluted_valuation": 88149038466, + "total_volume": 106604, + "high_24h": 0.996597, + "low_24h": 0.978889, + "price_change_24h": -0.002364235082967681, + "price_change_percentage_24h": -0.23894, + "market_cap_change_24h": -81589.76043062052, + "market_cap_change_percentage_24h": -2.4825, + "circulating_supply": 3199710.131246918, + "total_supply": 88001732073.90877, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -10.90489, + "ath_date": "2025-10-10T22:36:55.377Z", + "atl": 0.816078, + "atl_change_percentage": 21.16003, + "atl_date": "2025-10-10T21:35:29.984Z", + "roi": null, + "last_updated": "2025-11-06T17:23:01.111Z" + }, + { + "id": "vnx-euro", + "symbol": "veur", + "name": "VNX EURO", + "image": "https://coin-images.coingecko.com/coins/images/29351/large/VNXEUR_%281%29.png?1696528300", + "current_price": 1.15, + "market_cap": 3184701, + "market_cap_rank": 2611, + "fully_diluted_valuation": 3184701, + "total_volume": 124257, + "high_24h": 1.18, + "low_24h": 1.15, + "price_change_24h": 0.00043745, + "price_change_percentage_24h": 0.03798, + "market_cap_change_24h": 288.77, + "market_cap_change_percentage_24h": 0.00907, + "circulating_supply": 2764082.75105, + "total_supply": 2764082.75105, + "max_supply": null, + "ath": 1.2, + "ath_change_percentage": -4.12417, + "ath_date": "2025-07-14T00:50:20.573Z", + "atl": 1.003, + "atl_change_percentage": 14.85264, + "atl_date": "2025-01-19T23:09:25.137Z", + "roi": null, + "last_updated": "2025-11-06T17:24:18.159Z" + }, + { + "id": "decentralized-euro", + "symbol": "deuro", + "name": "Decentralized Euro", + "image": "https://coin-images.coingecko.com/coins/images/55108/large/dEuro_CoinLogo_200px.png?1743753944", + "current_price": 1.14, + "market_cap": 3062913, + "market_cap_rank": 2648, + "fully_diluted_valuation": 3062913, + "total_volume": 11716.45, + "high_24h": 1.16, + "low_24h": 1.14, + "price_change_24h": -0.009075399228867909, + "price_change_percentage_24h": -0.78884, + "market_cap_change_24h": -26803.833552330732, + "market_cap_change_percentage_24h": -0.86752, + "circulating_supply": 2683497.681624738, + "total_supply": 2683497.681624738, + "max_supply": null, + "ath": 2.3, + "ath_change_percentage": -49.98037, + "ath_date": "2025-07-28T09:34:46.909Z", + "atl": 0.860143, + "atl_change_percentage": 33.75529, + "atl_date": "2025-06-22T18:32:44.468Z", + "roi": null, + "last_updated": "2025-11-06T17:22:03.511Z" + }, + { + "id": "superreturn-ssuperusd", + "symbol": "ssuperusd", + "name": "SuperReturn sSuperUSD", + "image": "https://coin-images.coingecko.com/coins/images/67821/large/sSuperUSD_200x200.png?1753943152", + "current_price": 1.036, + "market_cap": 2984266, + "market_cap_rank": 2664, + "fully_diluted_valuation": 2984266, + "total_volume": 28495, + "high_24h": 1.053, + "low_24h": 1.014, + "price_change_24h": -0.008454679854449365, + "price_change_percentage_24h": -0.80942, + "market_cap_change_24h": -45069.71986932587, + "market_cap_change_percentage_24h": -1.48778, + "circulating_supply": 2880347.34146, + "total_supply": 2880347.34146, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -5.61126, + "ath_date": "2025-10-14T16:21:34.007Z", + "atl": 0.938938, + "atl_change_percentage": 11.1881, + "atl_date": "2025-10-10T21:25:15.859Z", + "roi": null, + "last_updated": "2025-11-06T17:23:05.129Z" + }, + { + "id": "musd", + "symbol": "musd", + "name": "mStable USD", + "image": "https://coin-images.coingecko.com/coins/images/11576/large/mStable_USD.png?1696511474", + "current_price": 0.999928, + "market_cap": 2875743, + "market_cap_rank": 2714, + "fully_diluted_valuation": 2875743, + "total_volume": 237.1, + "high_24h": 1.01, + "low_24h": 0.997557, + "price_change_24h": -0.001318118059672191, + "price_change_percentage_24h": -0.13165, + "market_cap_change_24h": -7649.8113848106, + "market_cap_change_percentage_24h": -0.26531, + "circulating_supply": 2875948.71330722, + "total_supply": 2875948.71330722, + "max_supply": null, + "ath": 2.71, + "ath_change_percentage": -63.10819, + "ath_date": "2022-07-25T07:15:35.139Z", + "atl": 0.472562, + "atl_change_percentage": 111.59743, + "atl_date": "2023-06-19T11:31:37.482Z", + "roi": null, + "last_updated": "2025-11-06T11:46:45.192Z" + }, + { + "id": "par-stablecoin", + "symbol": "par", + "name": "Parallel", + "image": "https://coin-images.coingecko.com/coins/images/14153/large/par_round_200.png?1696513872", + "current_price": 1.16, + "market_cap": 2593894, + "market_cap_rank": 2813, + "fully_diluted_valuation": 2593894, + "total_volume": 452.48, + "high_24h": 1.22, + "low_24h": 1.16, + "price_change_24h": -0.026812094093878747, + "price_change_percentage_24h": -2.26389, + "market_cap_change_24h": -70820.93794649094, + "market_cap_change_percentage_24h": -2.65773, + "circulating_supply": 2240894, + "total_supply": 2240894, + "max_supply": null, + "ath": 5.6, + "ath_change_percentage": -79.34562, + "ath_date": "2023-05-29T09:51:15.002Z", + "atl": 0.623886, + "atl_change_percentage": 85.53489, + "atl_date": "2024-06-09T08:40:08.384Z", + "roi": null, + "last_updated": "2025-11-06T17:21:52.125Z" + }, + { + "id": "soulpeg-usd", + "symbol": "spusd", + "name": "SoulPeg USD", + "image": "https://coin-images.coingecko.com/coins/images/68527/large/spusd.png?1756049627", + "current_price": 0.999312, + "market_cap": 2324210, + "market_cap_rank": 2923, + "fully_diluted_valuation": 2324210, + "total_volume": 358.88, + "high_24h": 1.004, + "low_24h": 0.998277, + "price_change_24h": -0.003769032418937779, + "price_change_percentage_24h": -0.37575, + "market_cap_change_24h": 96382, + "market_cap_change_percentage_24h": 4.32628, + "circulating_supply": 2325810.921386071, + "total_supply": 2325810.921386071, + "max_supply": null, + "ath": 1.014, + "ath_change_percentage": -0.96682, + "ath_date": "2025-10-13T07:13:21.694Z", + "atl": 0.97149, + "atl_change_percentage": 3.39329, + "atl_date": "2025-08-27T17:22:49.750Z", + "roi": null, + "last_updated": "2025-11-06T17:15:43.685Z" + }, + { + "id": "rai", + "symbol": "rai", + "name": "Rai Reflex Index", + "image": "https://coin-images.coingecko.com/coins/images/14004/large/RAI-logo-coin.png?1696513733", + "current_price": 3.86, + "market_cap": 2322294, + "market_cap_rank": 2925, + "fully_diluted_valuation": 2322294, + "total_volume": 11675.13, + "high_24h": 4.01, + "low_24h": 3.74, + "price_change_24h": -0.04496119197828241, + "price_change_percentage_24h": -1.1522, + "market_cap_change_24h": -25998.159097800963, + "market_cap_change_percentage_24h": -1.10711, + "circulating_supply": 601785.7304329684, + "total_supply": 601785.7304329684, + "max_supply": null, + "ath": 5.8, + "ath_change_percentage": -33.43219, + "ath_date": "2025-08-24T19:21:09.399Z", + "atl": 2.44, + "atl_change_percentage": 58.47185, + "atl_date": "2023-10-08T05:56:39.127Z", + "roi": null, + "last_updated": "2025-11-06T17:24:09.033Z" + }, + { + "id": "vai", + "symbol": "vai", + "name": "Vai", + "image": "https://coin-images.coingecko.com/coins/images/13861/large/VAI.png?1709766684", + "current_price": 0.999709, + "market_cap": 2276138, + "market_cap_rank": 2945, + "fully_diluted_valuation": 2276138, + "total_volume": 84982, + "high_24h": 1.002, + "low_24h": 0.996029, + "price_change_24h": 0.00117971, + "price_change_percentage_24h": 0.11814, + "market_cap_change_24h": 29025, + "market_cap_change_percentage_24h": 1.29165, + "circulating_supply": 2276731.569309833, + "total_supply": 2276731.569309833, + "max_supply": 2276731.569309833, + "ath": 4.76, + "ath_change_percentage": -79.01382, + "ath_date": "2023-12-19T15:50:55.633Z", + "atl": 0.579175, + "atl_change_percentage": 72.61444, + "atl_date": "2021-02-20T12:41:31.556Z", + "roi": null, + "last_updated": "2025-11-06T17:24:11.290Z" + }, + { + "id": "main-street-usd", + "symbol": "msusd", + "name": "Main Street USD", + "image": "https://coin-images.coingecko.com/coins/images/66996/large/msUSD.png?1751389184", + "current_price": 1.001, + "market_cap": 2213111, + "market_cap_rank": 2970, + "fully_diluted_valuation": 2213111, + "total_volume": 2193.64, + "high_24h": 1.001, + "low_24h": 0.99012, + "price_change_24h": 0.00897445, + "price_change_percentage_24h": 0.90454, + "market_cap_change_24h": -236397.0934650018, + "market_cap_change_percentage_24h": -9.6508, + "circulating_supply": 2210614.722152559, + "total_supply": 2210614.722152559, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -50.03418, + "ath_date": "2025-08-17T23:12:53.419Z", + "atl": 0.979364, + "atl_change_percentage": 2.22235, + "atl_date": "2025-08-06T18:44:51.978Z", + "roi": null, + "last_updated": "2025-11-06T17:24:13.142Z" + }, + { + "id": "rome-stablecoin", + "symbol": "rome", + "name": "ROME Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/55694/large/Logo.png?1747039329", + "current_price": 0.993802, + "market_cap": 2082029, + "market_cap_rank": 3034, + "fully_diluted_valuation": 2082029, + "total_volume": 212.97, + "high_24h": 1.033, + "low_24h": 0.972716, + "price_change_24h": -0.008512253860100127, + "price_change_percentage_24h": -0.84926, + "market_cap_change_24h": -21685.23275300907, + "market_cap_change_percentage_24h": -1.03081, + "circulating_supply": 2095015.24994, + "total_supply": 2095015.24994, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -26.50971, + "ath_date": "2025-08-23T09:26:48.993Z", + "atl": 0.569602, + "atl_change_percentage": 73.75139, + "atl_date": "2025-08-25T05:45:24.139Z", + "roi": null, + "last_updated": "2025-11-06T17:20:45.762Z" + }, + { + "id": "usdbr", + "symbol": "usdbr", + "name": "USDbr", + "image": "https://coin-images.coingecko.com/coins/images/55096/large/USDbr.png?1743699568", + "current_price": 0.929808, + "market_cap": 2038112, + "market_cap_rank": 3051, + "fully_diluted_valuation": 2038112, + "total_volume": 1.29, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 2191970.743083579, + "total_supply": 2191970.743083579, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -22.00948, + "ath_date": "2025-10-23T00:51:27.596Z", + "atl": 0.844613, + "atl_change_percentage": 10.08688, + "atl_date": "2025-08-16T19:08:48.102Z", + "roi": null, + "last_updated": "2025-11-03T21:02:48.660Z" + }, + { + "id": "mxnb", + "symbol": "mxnb", + "name": "MXNB", + "image": "https://coin-images.coingecko.com/coins/images/39136/large/MNXB_Logo.png?1746088156", + "current_price": 0.053884, + "market_cap": 1955206, + "market_cap_rank": 3115, + "fully_diluted_valuation": 1955206, + "total_volume": 17874.86, + "high_24h": 0.05438, + "low_24h": 0.053797, + "price_change_24h": -0.000098367978983431, + "price_change_percentage_24h": -0.18222, + "market_cap_change_24h": -910.9961387740914, + "market_cap_change_percentage_24h": -0.04657, + "circulating_supply": 36260494.21821, + "total_supply": 36260494.21821, + "max_supply": null, + "ath": 0.063759, + "ath_change_percentage": -15.32478, + "ath_date": "2025-08-17T18:23:21.686Z", + "atl": 0.04638506, + "atl_change_percentage": 16.39043, + "atl_date": "2025-08-21T18:39:37.272Z", + "roi": null, + "last_updated": "2025-11-06T17:23:00.871Z" + }, + { + "id": "level-usd", + "symbol": "lvlusd", + "name": "Level USD", + "image": "https://coin-images.coingecko.com/coins/images/53150/large/lvlusd-logo.png?1735406507", + "current_price": 0.997506, + "market_cap": 1889173, + "market_cap_rank": 3153, + "fully_diluted_valuation": 1889173, + "total_volume": 451.08, + "high_24h": 1.007, + "low_24h": 0.993282, + "price_change_24h": -0.001327151486988476, + "price_change_percentage_24h": -0.13287, + "market_cap_change_24h": -9114.828167874366, + "market_cap_change_percentage_24h": -0.48016, + "circulating_supply": 1893896.422058605, + "total_supply": 1893896.422058605, + "max_supply": null, + "ath": 1.08, + "ath_change_percentage": -7.21332, + "ath_date": "2025-10-10T21:40:32.247Z", + "atl": 0.874306, + "atl_change_percentage": 14.5708, + "atl_date": "2025-07-17T08:05:40.562Z", + "roi": null, + "last_updated": "2025-11-06T17:23:59.055Z" + }, + { + "id": "parallel-usdp", + "symbol": "usdp", + "name": "Parallel USDp", + "image": "https://coin-images.coingecko.com/coins/images/69613/large/usdp.png?1759221769", + "current_price": 1.11, + "market_cap": 1631586, + "market_cap_rank": 3306, + "fully_diluted_valuation": 1631586, + "total_volume": 187389, + "high_24h": 1.24, + "low_24h": 0.999149, + "price_change_24h": 0.107489, + "price_change_percentage_24h": 10.7576, + "market_cap_change_24h": 205474, + "market_cap_change_percentage_24h": 14.40797, + "circulating_supply": 1632375.8386101, + "total_supply": 1632375.8386101, + "max_supply": null, + "ath": 2.25, + "ath_change_percentage": -55.62807, + "ath_date": "2025-11-04T14:02:08.362Z", + "atl": 0.983657, + "atl_change_percentage": 1.60257, + "atl_date": "2025-10-02T17:49:44.886Z", + "roi": null, + "last_updated": "2025-11-06T17:23:09.748Z" + }, + { + "id": "dtrinity-usd", + "symbol": "dusd", + "name": "dTRINITY USD", + "image": "https://coin-images.coingecko.com/coins/images/53290/large/dUSD_Logo.png?1735997462", + "current_price": 0.998039, + "market_cap": 1618148, + "market_cap_rank": 3313, + "fully_diluted_valuation": 1618148, + "total_volume": 252472, + "high_24h": 1.006, + "low_24h": 0.993752, + "price_change_24h": -0.0001057696534984, + "price_change_percentage_24h": -0.0106, + "market_cap_change_24h": -14684.680689933477, + "market_cap_change_percentage_24h": -0.89934, + "circulating_supply": 1621327.855780624, + "total_supply": 1621327.855780624, + "max_supply": null, + "ath": 1.12, + "ath_change_percentage": -11.15579, + "ath_date": "2025-10-13T16:50:37.159Z", + "atl": 0.944639, + "atl_change_percentage": 5.67602, + "atl_date": "2025-11-04T19:00:41.262Z", + "roi": null, + "last_updated": "2025-11-06T17:24:11.356Z" + }, + { + "id": "silk-bcec1136-561c-4706-a42c-8b67d0d7f7d2", + "symbol": "silk", + "name": "Silk", + "image": "https://coin-images.coingecko.com/coins/images/30033/large/silk-icon.png?1696528956", + "current_price": 1.42, + "market_cap": 1606255, + "market_cap_rank": 3324, + "fully_diluted_valuation": 1606255, + "total_volume": 294475, + "high_24h": 1.43, + "low_24h": 1.39, + "price_change_24h": -0.000513267468392531, + "price_change_percentage_24h": -0.03624, + "market_cap_change_24h": -582.3102357087191, + "market_cap_change_percentage_24h": -0.03624, + "circulating_supply": 1134516.156911173, + "total_supply": 1134516.156911173, + "max_supply": null, + "ath": 2.03, + "ath_change_percentage": -31.43121, + "ath_date": "2023-11-02T17:39:19.361Z", + "atl": 0.00000112, + "atl_change_percentage": 124408277.23067, + "atl_date": "2024-09-18T20:01:24.007Z", + "roi": null, + "last_updated": "2025-11-06T17:24:01.567Z" + }, + { + "id": "stable-coin-2", + "symbol": "sbc", + "name": "Stable Coin", + "image": "https://coin-images.coingecko.com/coins/images/68416/large/sbc-mark.png?1755691990", + "current_price": 0.999958, + "market_cap": 1567099, + "market_cap_rank": 3355, + "fully_diluted_valuation": 1567099, + "total_volume": 318.65, + "high_24h": 1, + "low_24h": 0.999542, + "price_change_24h": 0.00008679, + "price_change_percentage_24h": 0.00868, + "market_cap_change_24h": 136.02, + "market_cap_change_percentage_24h": 0.00868, + "circulating_supply": 1567165.248857, + "total_supply": 1567165.248857, + "max_supply": null, + "ath": 1.005, + "ath_change_percentage": -0.45867, + "ath_date": "2025-10-22T23:30:56.579Z", + "atl": 0.997888, + "atl_change_percentage": 0.20755, + "atl_date": "2025-10-31T13:27:07.194Z", + "roi": null, + "last_updated": "2025-11-06T17:24:18.264Z" + }, + { + "id": "vusd", + "symbol": "vusd", + "name": "VUSD", + "image": "https://coin-images.coingecko.com/coins/images/67026/large/vusd.jpg?1751514327", + "current_price": 0.980025, + "market_cap": 1539477, + "market_cap_rank": 3381, + "fully_diluted_valuation": 1539477, + "total_volume": 53596, + "high_24h": 1.006, + "low_24h": 0.975056, + "price_change_24h": -0.020982081205671688, + "price_change_percentage_24h": -2.0961, + "market_cap_change_24h": -21656.78462811513, + "market_cap_change_percentage_24h": -1.38725, + "circulating_supply": 1570730.22031238, + "total_supply": 1570730.22031238, + "max_supply": null, + "ath": 1.044, + "ath_change_percentage": -6.2212, + "ath_date": "2025-09-13T12:20:19.722Z", + "atl": 0.956466, + "atl_change_percentage": 2.32725, + "atl_date": "2025-11-04T21:46:04.472Z", + "roi": null, + "last_updated": "2025-11-06T17:23:09.909Z" + }, + { + "id": "sigma-bnb-usd", + "symbol": "bnbusd", + "name": "Sigma bnb USD", + "image": "https://coin-images.coingecko.com/coins/images/69606/large/bnbusd.png?1759217994", + "current_price": 1.007, + "market_cap": 1478503, + "market_cap_rank": 3430, + "fully_diluted_valuation": 1478503, + "total_volume": 27923, + "high_24h": 1.008, + "low_24h": 0.998825, + "price_change_24h": 0.0072202, + "price_change_percentage_24h": 0.72213, + "market_cap_change_24h": 10687.77, + "market_cap_change_percentage_24h": 0.72814, + "circulating_supply": 1468096.80737746, + "total_supply": 1468096.80737746, + "max_supply": null, + "ath": 1.009, + "ath_change_percentage": -0.14911, + "ath_date": "2025-10-10T21:39:42.226Z", + "atl": 0.998475, + "atl_change_percentage": 0.88, + "atl_date": "2025-10-19T07:16:40.047Z", + "roi": null, + "last_updated": "2025-11-06T17:24:11.313Z" + }, + { + "id": "inter-stable-token", + "symbol": "ist", + "name": "Inter Stable Token", + "image": "https://coin-images.coingecko.com/coins/images/28273/large/Copy_of_07-Inter-Protocol-logo-symbol-color_200x200.png?1696527274", + "current_price": 1.005, + "market_cap": 1412555, + "market_cap_rank": 3471, + "fully_diluted_valuation": 1412555, + "total_volume": 3623.24, + "high_24h": 1.008, + "low_24h": 0.985822, + "price_change_24h": 0.00551478, + "price_change_percentage_24h": 0.5518, + "market_cap_change_24h": 9623.28, + "market_cap_change_percentage_24h": 0.68594, + "circulating_supply": 1405609.521103, + "total_supply": 1405609.521103, + "max_supply": 5000000, + "ath": 1.16, + "ath_change_percentage": -14.64114, + "ath_date": "2024-02-10T20:39:59.155Z", + "atl": 0.000001, + "atl_change_percentage": 98819250.04069, + "atl_date": "2024-09-18T20:51:04.957Z", + "roi": null, + "last_updated": "2025-11-06T17:22:22.590Z" + }, + { + "id": "solomon-usdv", + "symbol": "usdv", + "name": "Solomon USDv", + "image": "https://coin-images.coingecko.com/coins/images/55255/large/USDv_200x200.png?1744990609", + "current_price": 1.001, + "market_cap": 1411493, + "market_cap_rank": 3472, + "fully_diluted_valuation": 1411493, + "total_volume": 1106.93, + "high_24h": 1.001, + "low_24h": 0.999444, + "price_change_24h": 0.00042515, + "price_change_percentage_24h": 0.04251, + "market_cap_change_24h": 683.21, + "market_cap_change_percentage_24h": 0.04843, + "circulating_supply": 1410670.93016236, + "total_supply": 1410670.93016236, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -9.97796, + "ath_date": "2025-09-04T14:29:19.631Z", + "atl": 0.998144, + "atl_change_percentage": 0.2468, + "atl_date": "2025-11-01T22:09:07.969Z", + "roi": null, + "last_updated": "2025-11-06T17:22:54.639Z" + }, + { + "id": "gold-token", + "symbol": "gldt", + "name": "Gold Token", + "image": "https://coin-images.coingecko.com/coins/images/53968/large/gldt_200x200.png?1737793227", + "current_price": 1.29, + "market_cap": 1268817, + "market_cap_rank": 3592, + "fully_diluted_valuation": 1268817, + "total_volume": 59942, + "high_24h": 1.34, + "low_24h": 1.099, + "price_change_24h": -0.045199446597092185, + "price_change_percentage_24h": -3.39107, + "market_cap_change_24h": -36874.517948305234, + "market_cap_change_percentage_24h": -2.82414, + "circulating_supply": 983099.9, + "total_supply": 983099.9, + "max_supply": null, + "ath": 1.52, + "ath_change_percentage": -15.66432, + "ath_date": "2025-10-10T23:17:40.308Z", + "atl": 0.734321, + "atl_change_percentage": 74.97523, + "atl_date": "2025-02-03T02:13:53.905Z", + "roi": null, + "last_updated": "2025-11-06T17:24:06.742Z" + }, + { + "id": "high-yield-usd-base", + "symbol": "hyusd", + "name": "High Yield USD (Base)", + "image": "https://coin-images.coingecko.com/coins/images/33636/large/hyusdlogo.png?1702536133", + "current_price": 1.1, + "market_cap": 1167003, + "market_cap_rank": 3687, + "fully_diluted_valuation": 1167003, + "total_volume": 39710, + "high_24h": 1.1, + "low_24h": 1.1, + "price_change_24h": -0.00004401347832772, + "price_change_percentage_24h": -0.00399, + "market_cap_change_24h": -760.5065841958858, + "market_cap_change_percentage_24h": -0.06513, + "circulating_supply": 1057836.691508905, + "total_supply": 1057836.691508905, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -6.33568, + "ath_date": "2024-08-16T11:31:25.063Z", + "atl": 0.984413, + "atl_change_percentage": 12.05062, + "atl_date": "2024-05-23T16:12:16.066Z", + "roi": null, + "last_updated": "2025-11-06T17:24:22.192Z" + }, + { + "id": "convertible-jpy-token", + "symbol": "cjpy", + "name": "Convertible JPY Token", + "image": "https://coin-images.coingecko.com/coins/images/31356/large/CJPY_logo.png?1696530173", + "current_price": 0.005337, + "market_cap": 1138221, + "market_cap_rank": 3715, + "fully_diluted_valuation": 1138221, + "total_volume": 6774.25, + "high_24h": 0.00557165, + "low_24h": 0.00529763, + "price_change_24h": -0.000208289292970671, + "price_change_percentage_24h": -3.75615, + "market_cap_change_24h": -35946.53229729645, + "market_cap_change_percentage_24h": -3.06145, + "circulating_supply": 212623613.256298, + "total_supply": 212623613.256298, + "max_supply": null, + "ath": 0.00736362, + "ath_change_percentage": -27.38325, + "ath_date": "2023-11-10T00:24:25.497Z", + "atl": 0.00134328, + "atl_change_percentage": 298.07196, + "atl_date": "2025-09-02T07:30:07.329Z", + "roi": null, + "last_updated": "2025-11-06T17:23:55.804Z" + }, + { + "id": "sperax-usd", + "symbol": "usds", + "name": "Sperax USD", + "image": "https://coin-images.coingecko.com/coins/images/21973/large/USDs_logo_1000X1000.png?1696521321", + "current_price": 0.996587, + "market_cap": 1132351, + "market_cap_rank": 3732, + "fully_diluted_valuation": 1132351, + "total_volume": 108806, + "high_24h": 1.005, + "low_24h": 0.989924, + "price_change_24h": -0.004922709822753224, + "price_change_percentage_24h": -0.49153, + "market_cap_change_24h": -2087.579545518616, + "market_cap_change_percentage_24h": -0.18402, + "circulating_supply": 1136228.36, + "total_supply": 1136228.36, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -50.28934, + "ath_date": "2022-12-01T08:47:39.621Z", + "atl": 0.833019, + "atl_change_percentage": 19.63556, + "atl_date": "2025-07-25T08:25:06.318Z", + "roi": null, + "last_updated": "2025-11-06T17:22:58.312Z" + }, + { + "id": "idrx", + "symbol": "idrx", + "name": "IDRX", + "image": "https://coin-images.coingecko.com/coins/images/34883/large/IDRX_BLUE_COIN_200x200.png?1734983273", + "current_price": 0.00005958, + "market_cap": 1104276, + "market_cap_rank": 3770, + "fully_diluted_valuation": 1104276, + "total_volume": 63191, + "high_24h": 0.00005972, + "low_24h": 0.00005894, + "price_change_24h": 4.0174e-8, + "price_change_percentage_24h": 0.06747, + "market_cap_change_24h": 744.58, + "market_cap_change_percentage_24h": 0.06747, + "circulating_supply": 18534124233.14, + "total_supply": 18534124233.14, + "max_supply": null, + "ath": 0.00009733, + "ath_change_percentage": -38.79157, + "ath_date": "2024-10-24T02:51:33.707Z", + "atl": 0.00005696, + "atl_change_percentage": 4.59346, + "atl_date": "2025-03-12T00:11:47.221Z", + "roi": null, + "last_updated": "2025-11-06T17:24:17.648Z" + }, + { + "id": "blox-myrc", + "symbol": "myrc", + "name": "Blox MYRC", + "image": "https://coin-images.coingecko.com/coins/images/38632/large/myrc-token-trans-200x200.png?1718172187", + "current_price": 0.239829, + "market_cap": 912467, + "market_cap_rank": 4003, + "fully_diluted_valuation": 912467, + "total_volume": 36002, + "high_24h": 0.240819, + "low_24h": 0.235865, + "price_change_24h": 0.00306779, + "price_change_percentage_24h": 1.29573, + "market_cap_change_24h": 11365.29, + "market_cap_change_percentage_24h": 1.26127, + "circulating_supply": 3810798.66, + "total_supply": 3810798.66, + "max_supply": null, + "ath": 0.270468, + "ath_change_percentage": -11.35899, + "ath_date": "2025-02-03T02:22:38.796Z", + "atl": 0.199544, + "atl_change_percentage": 20.14717, + "atl_date": "2024-07-05T05:00:35.677Z", + "roi": null, + "last_updated": "2025-11-06T17:22:55.896Z" + }, + { + "id": "osmosis-allusdt", + "symbol": "usdt", + "name": "Osmosis allUSDT", + "image": "https://coin-images.coingecko.com/coins/images/50160/large/allUSDT.png?1726126824", + "current_price": 0.999528, + "market_cap": 896460, + "market_cap_rank": 4033, + "fully_diluted_valuation": 896460, + "total_volume": 23568, + "high_24h": 1.007, + "low_24h": 0.99457, + "price_change_24h": -0.000015812088847267, + "price_change_percentage_24h": -0.00158, + "market_cap_change_24h": -14.181595904752612, + "market_cap_change_percentage_24h": -0.00158, + "circulating_supply": 896883.140592, + "total_supply": 896883.140592, + "max_supply": null, + "ath": 1.096, + "ath_change_percentage": -8.847, + "ath_date": "2025-02-03T02:21:56.087Z", + "atl": 0.668834, + "atl_change_percentage": 49.4294, + "atl_date": "2025-10-10T21:36:58.110Z", + "roi": null, + "last_updated": "2025-11-06T17:15:55.888Z" + }, + { + "id": "chain-key-usdt", + "symbol": "ckusdt", + "name": "Chain-key USDT", + "image": "https://coin-images.coingecko.com/coins/images/39797/large/Untitled_drawing.png?1724121838", + "current_price": 1.004, + "market_cap": 872780, + "market_cap_rank": 4076, + "fully_diluted_valuation": 872780, + "total_volume": 1114839, + "high_24h": 1.053, + "low_24h": 0.856086, + "price_change_24h": -0.02859265474316719, + "price_change_percentage_24h": -2.76804, + "market_cap_change_24h": -26298.5700621102, + "market_cap_change_percentage_24h": -2.92506, + "circulating_supply": 868553, + "total_supply": 868553, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -20.16528, + "ath_date": "2025-10-10T23:14:31.518Z", + "atl": 0.592966, + "atl_change_percentage": 67.97457, + "atl_date": "2025-10-10T21:25:22.094Z", + "roi": null, + "last_updated": "2025-11-06T17:24:06.778Z" + }, + { + "id": "threshold-usd", + "symbol": "thusd", + "name": "Threshold USD", + "image": "https://coin-images.coingecko.com/coins/images/32274/large/thusd.png?1697180081", + "current_price": 1.007, + "market_cap": 843785, + "market_cap_rank": 4115, + "fully_diluted_valuation": 202206438, + "total_volume": 12809.53, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 837632.2955594762, + "total_supply": 200732106.7340528, + "max_supply": null, + "ath": 1.022, + "ath_change_percentage": -1.38753, + "ath_date": "2024-11-12T03:02:34.212Z", + "atl": 0.904712, + "atl_change_percentage": 11.34429, + "atl_date": "2025-04-09T12:24:41.448Z", + "roi": null, + "last_updated": "2025-11-04T15:50:51.590Z" + }, + { + "id": "metal-dollar", + "symbol": "xmd", + "name": "Metal Dollar", + "image": "https://coin-images.coingecko.com/coins/images/30898/large/icon-token-metal-dollar-200x.png?1696529744", + "current_price": 0.996866, + "market_cap": 836273, + "market_cap_rank": 4126, + "fully_diluted_valuation": 836273, + "total_volume": 3483977, + "high_24h": 1.018, + "low_24h": 0.992123, + "price_change_24h": -0.010509439324508318, + "price_change_percentage_24h": -1.04325, + "market_cap_change_24h": -3350.9076856280444, + "market_cap_change_percentage_24h": -0.3991, + "circulating_supply": 836560.774787, + "total_supply": 836560.774787, + "max_supply": null, + "ath": 1.086, + "ath_change_percentage": -7.14655, + "ath_date": "2024-08-15T08:55:28.608Z", + "atl": 0.909529, + "atl_change_percentage": 10.84657, + "atl_date": "2025-03-12T11:28:47.469Z", + "roi": null, + "last_updated": "2025-11-06T17:22:32.374Z" + }, + { + "id": "klaytn-dai", + "symbol": "kdai", + "name": "Klaytn Dai", + "image": "https://coin-images.coingecko.com/coins/images/27010/large/download_%284%29.png?1696526062", + "current_price": 0.088509, + "market_cap": 813986, + "market_cap_rank": 4163, + "fully_diluted_valuation": 813986, + "total_volume": 1205.11, + "high_24h": 0.093641, + "low_24h": 0.087865, + "price_change_24h": -0.003966446355391465, + "price_change_percentage_24h": -4.28917, + "market_cap_change_24h": -37925.3920073997, + "market_cap_change_percentage_24h": -4.4518, + "circulating_supply": 9212251.15427459, + "total_supply": 9212251.15427459, + "max_supply": null, + "ath": 1.92, + "ath_change_percentage": -95.38998, + "ath_date": "2022-11-30T02:02:08.082Z", + "atl": 0.03520941, + "atl_change_percentage": 150.80477, + "atl_date": "2025-10-10T21:25:12.870Z", + "roi": null, + "last_updated": "2025-11-06T17:21:51.626Z" + }, + { + "id": "eusd-new", + "symbol": "eusd", + "name": "eUSD", + "image": "https://coin-images.coingecko.com/coins/images/31603/large/eusd.png?1696530419", + "current_price": 1.33, + "market_cap": 804545, + "market_cap_rank": 4179, + "fully_diluted_valuation": 804545, + "total_volume": 17.28, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 603260.5813906488, + "total_supply": 603260.5813906488, + "max_supply": null, + "ath": 1.89, + "ath_change_percentage": -29.6038, + "ath_date": "2023-10-17T01:08:42.748Z", + "atl": 0.738736, + "atl_change_percentage": 80.53274, + "atl_date": "2024-03-07T09:49:35.216Z", + "roi": null, + "last_updated": "2025-11-05T05:01:16.584Z" + }, + { + "id": "hyperstable", + "symbol": "ush", + "name": "Hyperstable USD", + "image": "https://coin-images.coingecko.com/coins/images/55951/large/ushlogo.png?1747851688", + "current_price": 0.997514, + "market_cap": 788218, + "market_cap_rank": 4212, + "fully_diluted_valuation": 788218, + "total_volume": 535384, + "high_24h": 1.007, + "low_24h": 0.982406, + "price_change_24h": -0.002008433575865221, + "price_change_percentage_24h": -0.20094, + "market_cap_change_24h": -283.1751333337743, + "market_cap_change_percentage_24h": -0.03591, + "circulating_supply": 789814.6578991085, + "total_supply": 789814.6578991085, + "max_supply": null, + "ath": 1.053, + "ath_change_percentage": -5.17363, + "ath_date": "2025-08-22T14:20:37.419Z", + "atl": 0.700729, + "atl_change_percentage": 42.43492, + "atl_date": "2025-10-10T21:25:41.713Z", + "roi": null, + "last_updated": "2025-11-06T17:23:06.522Z" + }, + { + "id": "staked-usd-coin", + "symbol": "susd", + "name": "Staked USD Coin", + "image": "https://coin-images.coingecko.com/coins/images/70016/large/susd-200x200.png?1760353281", + "current_price": 0.998769, + "market_cap": 705054, + "market_cap_rank": 4359, + "fully_diluted_valuation": 705054, + "total_volume": 364.64, + "high_24h": 1.004, + "low_24h": 0.996362, + "price_change_24h": -0.00012999837381622, + "price_change_percentage_24h": -0.01301, + "market_cap_change_24h": 27374, + "market_cap_change_percentage_24h": 4.03932, + "circulating_supply": 705922.986821, + "total_supply": 705922.986821, + "max_supply": 1000000000, + "ath": 1.006, + "ath_change_percentage": -0.72774, + "ath_date": "2025-10-13T22:10:17.895Z", + "atl": 0.987027, + "atl_change_percentage": 1.20471, + "atl_date": "2025-10-17T09:52:16.372Z", + "roi": null, + "last_updated": "2025-11-06T17:15:46.073Z" + }, + { + "id": "jasset-jusd", + "symbol": "jusd", + "name": "jAsset jUSD", + "image": "https://coin-images.coingecko.com/coins/images/54933/large/jusd_200px.png?1742628333", + "current_price": 0.974829, + "market_cap": 677047, + "market_cap_rank": 4414, + "fully_diluted_valuation": 677047, + "total_volume": 0.958257, + "high_24h": 0.981337, + "low_24h": 0.969187, + "price_change_24h": 0.00155361, + "price_change_percentage_24h": 0.15963, + "market_cap_change_24h": 126.1, + "market_cap_change_percentage_24h": 0.01863, + "circulating_supply": 694529.7803563867, + "total_supply": 694529.7803563867, + "max_supply": null, + "ath": 1.062, + "ath_change_percentage": -8.19376, + "ath_date": "2025-08-22T14:58:08.427Z", + "atl": 0.35345, + "atl_change_percentage": 175.80392, + "atl_date": "2025-10-10T21:27:01.743Z", + "roi": null, + "last_updated": "2025-11-06T17:02:59.226Z" + }, + { + "id": "cad-coin", + "symbol": "cadc", + "name": "CAD Coin", + "image": "https://coin-images.coingecko.com/coins/images/14149/large/cadc_2.png?1696513868", + "current_price": 0.708207, + "market_cap": 589108, + "market_cap_rank": 4588, + "fully_diluted_valuation": 589108, + "total_volume": 172270, + "high_24h": 0.71251, + "low_24h": 0.707066, + "price_change_24h": -0.000795086330341421, + "price_change_percentage_24h": -0.11214, + "market_cap_change_24h": -634.8646719849203, + "market_cap_change_percentage_24h": -0.10765, + "circulating_supply": 831966.0510675104, + "total_supply": 831966.0510675104, + "max_supply": null, + "ath": 1.48, + "ath_change_percentage": -52.22462, + "ath_date": "2022-09-13T12:28:03.928Z", + "atl": 0.481646, + "atl_change_percentage": 47.01482, + "atl_date": "2022-01-20T10:53:42.657Z", + "roi": null, + "last_updated": "2025-11-06T17:24:17.534Z" + }, + { + "id": "hela-usd", + "symbol": "hlusd", + "name": "HeLa USD", + "image": "https://coin-images.coingecko.com/coins/images/38325/large/Hela_Logo_HLUSD_Thumbnail-05_%282%29.png?1717073533", + "current_price": 0.999967, + "market_cap": 560447, + "market_cap_rank": 4655, + "fully_diluted_valuation": 1799941, + "total_volume": 2051451, + "high_24h": 1, + "low_24h": 0.999772, + "price_change_24h": -0.000173805123950821, + "price_change_percentage_24h": -0.01738, + "market_cap_change_24h": -97.41176675248425, + "market_cap_change_percentage_24h": -0.01738, + "circulating_supply": 560465.44853435, + "total_supply": 1800000, + "max_supply": null, + "ath": 1.015, + "ath_change_percentage": -1.52181, + "ath_date": "2025-04-02T20:16:04.402Z", + "atl": 0.943098, + "atl_change_percentage": 6.01345, + "atl_date": "2025-03-03T22:01:17.394Z", + "roi": null, + "last_updated": "2025-11-06T17:16:00.848Z" + }, + { + "id": "usk", + "symbol": "usk", + "name": "USK", + "image": "https://coin-images.coingecko.com/coins/images/27274/large/usk.png?1696526326", + "current_price": 0.314985, + "market_cap": 520667, + "market_cap_rank": 4755, + "fully_diluted_valuation": 520667, + "total_volume": 352.84, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 1652987.648549, + "total_supply": 1652987.648549, + "max_supply": null, + "ath": 1.94, + "ath_change_percentage": -83.8041, + "ath_date": "2022-11-06T22:08:24.148Z", + "atl": 0.314985, + "atl_change_percentage": 0, + "atl_date": "2025-10-10T21:29:31.661Z", + "roi": null, + "last_updated": "2025-10-11T05:03:12.811Z" + }, + { + "id": "vnx-british-pound", + "symbol": "vgbp", + "name": "VNX British Pound", + "image": "https://coin-images.coingecko.com/coins/images/55301/large/VGBP_2.png?1747482092", + "current_price": 1.31, + "market_cap": 510352, + "market_cap_rank": 4785, + "fully_diluted_valuation": 510352, + "total_volume": 34692, + "high_24h": 1.32, + "low_24h": 1.31, + "price_change_24h": 0.00110138, + "price_change_percentage_24h": 0.08383, + "market_cap_change_24h": 446.56, + "market_cap_change_percentage_24h": 0.08758, + "circulating_supply": 388109.611369733, + "total_supply": 388109.611369733, + "max_supply": null, + "ath": 1.63, + "ath_change_percentage": -19.21729, + "ath_date": "2025-07-10T13:15:50.787Z", + "atl": 1.31, + "atl_change_percentage": 0.22498, + "atl_date": "2025-11-04T23:13:50.634Z", + "roi": null, + "last_updated": "2025-11-06T17:24:18.479Z" + }, + { + "id": "liquity-bold", + "symbol": "bold", + "name": "Legacy BOLD", + "image": "https://coin-images.coingecko.com/coins/images/53755/large/BOLD_logo.png?1737183873", + "current_price": 0.999529, + "market_cap": 476288, + "market_cap_rank": 4890, + "fully_diluted_valuation": 476288, + "total_volume": 591.24, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 476512.9107013042, + "total_supply": 476512.9107013042, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -5.00612, + "ath_date": "2025-04-24T01:31:11.951Z", + "atl": 0.756197, + "atl_change_percentage": 32.17829, + "atl_date": "2025-07-21T15:45:01.630Z", + "roi": null, + "last_updated": "2025-11-05T10:39:24.877Z" + }, + { + "id": "seur", + "symbol": "seur", + "name": "sEUR", + "image": "https://coin-images.coingecko.com/coins/images/13637/large/sEUR.png?1696513385", + "current_price": 0.470487, + "market_cap": 468181, + "market_cap_rank": 4911, + "fully_diluted_valuation": 468181, + "total_volume": 1838.95, + "high_24h": 0.480531, + "low_24h": 0.470487, + "price_change_24h": -0.003917120832779175, + "price_change_percentage_24h": -0.82569, + "market_cap_change_24h": -3852.190533486835, + "market_cap_change_percentage_24h": -0.81608, + "circulating_supply": 995003.8666365609, + "total_supply": 995003.8666365609, + "max_supply": 995003.8666365609, + "ath": 1.86, + "ath_change_percentage": -74.73886, + "ath_date": "2023-10-04T14:11:40.327Z", + "atl": 0.106881, + "atl_change_percentage": 340.23949, + "atl_date": "2024-04-18T21:52:43.568Z", + "roi": null, + "last_updated": "2025-11-06T17:23:58.960Z" + }, + { + "id": "uncap-usd", + "symbol": "usdu", + "name": "Uncap USD", + "image": "https://coin-images.coingecko.com/coins/images/69976/large/USDU-icon.png?1760258869", + "current_price": 1.001, + "market_cap": 459578, + "market_cap_rank": 4942, + "fully_diluted_valuation": 459578, + "total_volume": 53.52, + "high_24h": 1.001, + "low_24h": 1.001, + "price_change_24h": -0.000102187611871418, + "price_change_percentage_24h": -0.01021, + "market_cap_change_24h": 9.48, + "market_cap_change_percentage_24h": 0.00206, + "circulating_supply": 459076.351380697, + "total_supply": 459076.351380697, + "max_supply": null, + "ath": 1.004, + "ath_change_percentage": -0.24032, + "ath_date": "2025-11-01T23:35:27.431Z", + "atl": 1, + "atl_change_percentage": 0.09357, + "atl_date": "2025-10-22T08:03:58.164Z", + "roi": null, + "last_updated": "2025-11-06T17:24:07.269Z" + }, + { + "id": "defi-dollar", + "symbol": "usdfi", + "name": "DeFi Dollar", + "image": "https://coin-images.coingecko.com/coins/images/67875/large/USDFI.png?1754112926", + "current_price": 0.997752, + "market_cap": 448452, + "market_cap_rank": 4977, + "fully_diluted_valuation": 448452, + "total_volume": 146856, + "high_24h": 1.003, + "low_24h": 0.996878, + "price_change_24h": -0.003563352133538422, + "price_change_percentage_24h": -0.35587, + "market_cap_change_24h": -15250.97809759673, + "market_cap_change_percentage_24h": -3.28895, + "circulating_supply": 449419.3395816914, + "total_supply": 449419.3395816914, + "max_supply": null, + "ath": 1.006, + "ath_change_percentage": -0.99407, + "ath_date": "2025-10-02T13:39:01.386Z", + "atl": 0.982826, + "atl_change_percentage": 1.39014, + "atl_date": "2025-08-17T18:50:20.683Z", + "roi": null, + "last_updated": "2025-11-06T17:24:03.017Z" + }, + { + "id": "compliant-naira", + "symbol": "cngn", + "name": "Compliant Naira", + "image": "https://coin-images.coingecko.com/coins/images/69200/large/cNGN_Logo_Icon_Purple.png?1757836603", + "current_price": 0.00068477, + "market_cap": 447292, + "market_cap_rank": 4982, + "fully_diluted_valuation": 447292, + "total_volume": 665.65, + "high_24h": 0.00068817, + "low_24h": 0.00068315, + "price_change_24h": -0.000003017473184601, + "price_change_percentage_24h": -0.43872, + "market_cap_change_24h": -1971.0242655979819, + "market_cap_change_percentage_24h": -0.43872, + "circulating_supply": 653203572.995, + "total_supply": 653203572.995, + "max_supply": null, + "ath": 0.00070882, + "ath_change_percentage": -3.39377, + "ath_date": "2025-10-10T22:32:43.345Z", + "atl": 0.00064906, + "atl_change_percentage": 5.5022, + "atl_date": "2025-09-23T14:05:10.276Z", + "roi": null, + "last_updated": "2025-11-06T17:08:39.986Z" + }, + { + "id": "bread-3", + "symbol": "bread", + "name": "Bread", + "image": "https://coin-images.coingecko.com/coins/images/55143/large/Transparent_pg_-_201.png?1759485140", + "current_price": 0.998521, + "market_cap": 432551, + "market_cap_rank": 5029, + "fully_diluted_valuation": 432551, + "total_volume": 474.69, + "high_24h": 0.999227, + "low_24h": 0.998144, + "price_change_24h": -0.000578318297590141, + "price_change_percentage_24h": -0.05788, + "market_cap_change_24h": -240.5320326195797, + "market_cap_change_percentage_24h": -0.05558, + "circulating_supply": 433192.2782363359, + "total_supply": 433192.2782363359, + "max_supply": null, + "ath": 1.027, + "ath_change_percentage": -2.76853, + "ath_date": "2025-06-11T22:03:33.140Z", + "atl": 0.98195, + "atl_change_percentage": 1.68438, + "atl_date": "2025-08-18T21:47:41.588Z", + "roi": null, + "last_updated": "2025-11-06T17:09:59.263Z" + }, + { + "id": "opus-cash", + "symbol": "cash", + "name": "Opus CASH", + "image": "https://coin-images.coingecko.com/coins/images/39904/large/CASH_no_margin_2x.png?1724736369", + "current_price": 0.998, + "market_cap": 347978, + "market_cap_rank": 5310, + "fully_diluted_valuation": 347978, + "total_volume": 26774, + "high_24h": 1, + "low_24h": 0.995301, + "price_change_24h": -0.001470882410804397, + "price_change_percentage_24h": -0.14717, + "market_cap_change_24h": -462.5690859472961, + "market_cap_change_percentage_24h": -0.13275, + "circulating_supply": 348664.692021634, + "total_supply": 348664.692021634, + "max_supply": null, + "ath": 1.091, + "ath_change_percentage": -8.51651, + "ath_date": "2025-03-08T04:31:15.478Z", + "atl": 0.944728, + "atl_change_percentage": 5.60292, + "atl_date": "2025-02-03T02:06:50.414Z", + "roi": null, + "last_updated": "2025-11-06T17:24:07.102Z" + }, + { + "id": "bob", + "symbol": "bob", + "name": "BOB", + "image": "https://coin-images.coingecko.com/coins/images/27266/large/Bob-logo.png?1696526318", + "current_price": 0.999787, + "market_cap": 341466, + "market_cap_rank": 5337, + "fully_diluted_valuation": 341466, + "total_volume": 44.84, + "high_24h": 1.004, + "low_24h": 0.996087, + "price_change_24h": 0.00000926, + "price_change_percentage_24h": 0.00093, + "market_cap_change_24h": 34.68, + "market_cap_change_percentage_24h": 0.01016, + "circulating_supply": 341507.1906610738, + "total_supply": 341507.1906610738, + "max_supply": null, + "ath": 1.079, + "ath_change_percentage": -7.36515, + "ath_date": "2024-09-03T17:25:15.891Z", + "atl": 0.784062, + "atl_change_percentage": 27.49293, + "atl_date": "2025-10-10T21:35:26.036Z", + "roi": null, + "last_updated": "2025-11-06T17:24:02.545Z" + }, + { + "id": "jigsaw-usd", + "symbol": "jusd", + "name": "Jigsaw USD", + "image": "https://coin-images.coingecko.com/coins/images/55405/large/Group_48095621.png?1745834144", + "current_price": 0.992887, + "market_cap": 317822, + "market_cap_rank": 5448, + "fully_diluted_valuation": 317822, + "total_volume": 4019.98, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 320098.517196514, + "total_supply": 320098.517196514, + "max_supply": null, + "ath": 1.007, + "ath_change_percentage": -1.39102, + "ath_date": "2025-04-29T14:05:07.732Z", + "atl": 0.989972, + "atl_change_percentage": 0.29443, + "atl_date": "2025-11-04T11:17:15.247Z", + "roi": null, + "last_updated": "2025-11-05T11:31:17.332Z" + }, + { + "id": "uxd-stablecoin", + "symbol": "uxd", + "name": "UXD Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/22850/large/UXD-White.png?1696522151", + "current_price": 1.012, + "market_cap": 304426, + "market_cap_rank": 5503, + "fully_diluted_valuation": 9106790, + "total_volume": 103.96, + "high_24h": 1.018, + "low_24h": 1.005, + "price_change_24h": 0.00267448, + "price_change_percentage_24h": 0.26502, + "market_cap_change_24h": 813.68, + "market_cap_change_percentage_24h": 0.268, + "circulating_supply": 300855.108937, + "total_supply": 8999954.586342, + "max_supply": null, + "ath": 18.92, + "ath_change_percentage": -94.65118, + "ath_date": "2025-09-17T16:29:23.281Z", + "atl": 0.052523, + "atl_change_percentage": 1826.47737, + "atl_date": "2022-10-17T09:38:06.199Z", + "roi": null, + "last_updated": "2025-11-06T17:23:56.676Z" + }, + { + "id": "usdfc", + "symbol": "usdfc", + "name": "USDFC", + "image": "https://coin-images.coingecko.com/coins/images/55028/large/Symbol_Color_Light_Background_%283%29.png?1743319942", + "current_price": 1.046, + "market_cap": 289749, + "market_cap_rank": 5575, + "fully_diluted_valuation": 289749, + "total_volume": 202455, + "high_24h": 1.038, + "low_24h": 0.970417, + "price_change_24h": 0.056868, + "price_change_percentage_24h": 5.74827, + "market_cap_change_24h": 50737, + "market_cap_change_percentage_24h": 21.22756, + "circulating_supply": 279272.9025872336, + "total_supply": 279272.9025872336, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -7.93826, + "ath_date": "2025-04-20T07:06:44.704Z", + "atl": 0.268025, + "atl_change_percentage": 279.80623, + "atl_date": "2025-10-10T21:25:29.738Z", + "roi": null, + "last_updated": "2025-11-06T17:24:10.436Z" + }, + { + "id": "tor", + "symbol": "tor", + "name": "TOR", + "image": "https://coin-images.coingecko.com/coins/images/23609/large/tor.png?1696522816", + "current_price": 0.01617271, + "market_cap": 276076, + "market_cap_rank": 5655, + "fully_diluted_valuation": 276076, + "total_volume": 1.46, + "high_24h": 0.01628972, + "low_24h": 0.01617271, + "price_change_24h": -0.000062329788519565, + "price_change_percentage_24h": -0.38392, + "market_cap_change_24h": -1409.496333480347, + "market_cap_change_percentage_24h": -0.50795, + "circulating_supply": 17070481.49032999, + "total_supply": 17070481.49032999, + "max_supply": null, + "ath": 20.14, + "ath_change_percentage": -99.91971, + "ath_date": "2024-02-27T10:24:31.893Z", + "atl": 0.00097142, + "atl_change_percentage": 1564.8443, + "atl_date": "2025-11-01T01:02:35.654Z", + "roi": null, + "last_updated": "2025-11-06T06:02:44.054Z" + }, + { + "id": "move-dollar", + "symbol": "mod", + "name": "Move Dollar", + "image": "https://coin-images.coingecko.com/coins/images/29701/large/MOD_Logomark.png?1728418078", + "current_price": 0.996773, + "market_cap": 267722, + "market_cap_rank": 5705, + "fully_diluted_valuation": 267722, + "total_volume": 1682.48, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 268588.2509372975, + "total_supply": 268588.2509372975, + "max_supply": null, + "ath": 1.14, + "ath_change_percentage": -12.41943, + "ath_date": "2024-02-28T10:13:18.255Z", + "atl": 0.837272, + "atl_change_percentage": 19.05012, + "atl_date": "2024-01-03T12:12:48.845Z", + "roi": null, + "last_updated": "2025-11-04T15:32:02.444Z" + }, + { + "id": "prisma-mkusd", + "symbol": "mkusd", + "name": "Prisma mkUSD", + "image": "https://coin-images.coingecko.com/coins/images/31519/large/mkUSD_200.png?1696530329", + "current_price": 0.957997, + "market_cap": 267515, + "market_cap_rank": 5706, + "fully_diluted_valuation": 267515, + "total_volume": 1.18, + "high_24h": 1.018, + "low_24h": 0.948226, + "price_change_24h": -0.040931685590216205, + "price_change_percentage_24h": -4.09756, + "market_cap_change_24h": -11411.496698274568, + "market_cap_change_percentage_24h": -4.09122, + "circulating_supply": 279243.7258940283, + "total_supply": 279243.7258940283, + "max_supply": null, + "ath": 1.49, + "ath_change_percentage": -36.28624, + "ath_date": "2025-04-10T22:16:23.596Z", + "atl": 0.875577, + "atl_change_percentage": 8.29736, + "atl_date": "2025-07-17T08:07:33.528Z", + "roi": null, + "last_updated": "2025-11-06T17:23:55.914Z" + }, + { + "id": "grai", + "symbol": "grai", + "name": "Grai", + "image": "https://coin-images.coingecko.com/coins/images/30427/large/GRAI_Token.png?1696529315", + "current_price": 0.985311, + "market_cap": 252257, + "market_cap_rank": 5777, + "fully_diluted_valuation": 252257, + "total_volume": 3016.15, + "high_24h": 1.005, + "low_24h": 0.978971, + "price_change_24h": -0.016595768873605143, + "price_change_percentage_24h": -1.65642, + "market_cap_change_24h": -4248.946334209904, + "market_cap_change_percentage_24h": -1.65647, + "circulating_supply": 256017.2186090116, + "total_supply": 256017.2186090116, + "max_supply": null, + "ath": 1.74, + "ath_change_percentage": -43.84086, + "ath_date": "2023-07-27T06:19:34.197Z", + "atl": 0.680901, + "atl_change_percentage": 43.77578, + "atl_date": "2025-04-09T01:32:01.471Z", + "roi": null, + "last_updated": "2025-11-06T17:21:22.048Z" + }, + { + "id": "usd-wink", + "symbol": "usdw", + "name": "USD WINK", + "image": "https://coin-images.coingecko.com/coins/images/53736/large/USDW200.png?1737147609", + "current_price": 0.963763, + "market_cap": 245525, + "market_cap_rank": 5816, + "fully_diluted_valuation": 632558, + "total_volume": 3396.55, + "high_24h": 0.986537, + "low_24h": 0.805888, + "price_change_24h": 0.09127, + "price_change_percentage_24h": 10.46086, + "market_cap_change_24h": 28089, + "market_cap_change_percentage_24h": 12.91821, + "circulating_supply": 254753.96303698744, + "total_supply": 656334.5057158859, + "max_supply": null, + "ath": 1.066, + "ath_change_percentage": -9.55366, + "ath_date": "2025-03-01T03:47:00.807Z", + "atl": 0.392838, + "atl_change_percentage": 145.33081, + "atl_date": "2025-05-13T17:49:50.368Z", + "roi": null, + "last_updated": "2025-11-06T17:24:05.785Z" + }, + { + "id": "bai-stablecoin", + "symbol": "bai", + "name": "BAI Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/25385/large/BAI_Token_Logo.png?1696524518", + "current_price": 1.015, + "market_cap": 235825, + "market_cap_rank": 5872, + "fully_diluted_valuation": 235825, + "total_volume": 23.27, + "high_24h": 1.024, + "low_24h": 1.014, + "price_change_24h": 0.00002467, + "price_change_percentage_24h": 0.00243, + "market_cap_change_24h": 28.88, + "market_cap_change_percentage_24h": 0.01225, + "circulating_supply": 232346.6672308294, + "total_supply": 232346.6672308294, + "max_supply": null, + "ath": 1.45, + "ath_change_percentage": -30.21192, + "ath_date": "2025-10-10T21:53:11.182Z", + "atl": 0.814914, + "atl_change_percentage": 24.5494, + "atl_date": "2025-07-01T23:35:15.644Z", + "roi": null, + "last_updated": "2025-11-06T17:21:19.798Z" + }, + { + "id": "auro-usda", + "symbol": "usda", + "name": "AURO USDA", + "image": "https://coin-images.coingecko.com/coins/images/67408/large/usda.jpeg?1752681482", + "current_price": 0.999003, + "market_cap": 230566, + "market_cap_rank": 5906, + "fully_diluted_valuation": 10095781, + "total_volume": 407.58, + "high_24h": 1.03, + "low_24h": 0.998981, + "price_change_24h": -0.022348657444652864, + "price_change_percentage_24h": -2.18814, + "market_cap_change_24h": -5097.637124361587, + "market_cap_change_percentage_24h": -2.1631, + "circulating_supply": 230795.6468761, + "total_supply": 10105851.6668761, + "max_supply": null, + "ath": 1.03, + "ath_change_percentage": -2.79383, + "ath_date": "2025-11-05T22:57:43.276Z", + "atl": 0.953424, + "atl_change_percentage": 5.02807, + "atl_date": "2025-10-09T16:26:37.632Z", + "roi": null, + "last_updated": "2025-11-06T17:23:06.491Z" + }, + { + "id": "ebusd-stablecoin", + "symbol": "ebusd", + "name": "ebUSD Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/66485/large/0x09fd37d9aa613789c517e76df1c53aece2b60df4.png?1749505950", + "current_price": 0.98852, + "market_cap": 218453, + "market_cap_rank": 5992, + "fully_diluted_valuation": 218453, + "total_volume": 135637, + "high_24h": 0.990244, + "low_24h": 0.981104, + "price_change_24h": 0.0068293, + "price_change_percentage_24h": 0.69567, + "market_cap_change_24h": -190597.15421515465, + "market_cap_change_percentage_24h": -46.59506, + "circulating_supply": 220935.5562130087, + "total_supply": 220935.5562130087, + "max_supply": null, + "ath": 1.013, + "ath_change_percentage": -2.34745, + "ath_date": "2025-09-17T19:34:17.837Z", + "atl": 0.954662, + "atl_change_percentage": 3.5765, + "atl_date": "2025-08-02T01:43:10.648Z", + "roi": null, + "last_updated": "2025-11-06T17:24:01.181Z" + }, + { + "id": "quill-usdq", + "symbol": "usdq", + "name": "Quill USDQ", + "image": "https://coin-images.coingecko.com/coins/images/66132/large/image_%289%29.png?1748439949", + "current_price": 0.999275, + "market_cap": 205825, + "market_cap_rank": 6072, + "fully_diluted_valuation": 205825, + "total_volume": 5012.29, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 205974.5462321719, + "total_supply": 205974.5462321719, + "max_supply": null, + "ath": 1.018, + "ath_change_percentage": -1.86368, + "ath_date": "2025-11-02T05:37:05.758Z", + "atl": 0.918602, + "atl_change_percentage": 8.78213, + "atl_date": "2025-11-04T14:50:18.837Z", + "roi": null, + "last_updated": "2025-11-05T03:26:31.486Z" + }, + { + "id": "sei-fastusd", + "symbol": "fastusd", + "name": "Sei fastUSD", + "image": "https://coin-images.coingecko.com/coins/images/50766/large/2024-10-16_14.54.03.jpg?1729120051", + "current_price": 0.37645, + "market_cap": 202402, + "market_cap_rank": 6282, + "fully_diluted_valuation": 202402, + "total_volume": 9210.65, + "high_24h": 1.012, + "low_24h": 0.222444, + "price_change_24h": -0.6359396962604631, + "price_change_percentage_24h": -62.81572, + "market_cap_change_24h": -12692761.734887263, + "market_cap_change_percentage_24h": -98.43041, + "circulating_supply": 537659.5668907859, + "total_supply": 537659.5668907859, + "max_supply": null, + "ath": 1.082, + "ath_change_percentage": -68.56456, + "ath_date": "2025-08-22T14:50:09.027Z", + "atl": 0.222444, + "atl_change_percentage": 52.94182, + "atl_date": "2025-11-06T16:45:07.032Z", + "roi": null, + "last_updated": "2025-11-06T17:24:26.880Z" + }, + { + "id": "diversified-usd", + "symbol": "dfiusd", + "name": "Diversified USD", + "image": "https://coin-images.coingecko.com/coins/images/70162/large/DfiUSD_coin.png?1760945515", + "current_price": 1, + "market_cap": 186002, + "market_cap_rank": 6247, + "fully_diluted_valuation": 186002, + "total_volume": 51329, + "high_24h": 1.006, + "low_24h": 0.998979, + "price_change_24h": -0.001252827035523874, + "price_change_percentage_24h": -0.12512, + "market_cap_change_24h": -233.01665262819733, + "market_cap_change_percentage_24h": -0.12512, + "circulating_supply": 185992.67578125, + "total_supply": 185992.67578125, + "max_supply": null, + "ath": 1.018, + "ath_change_percentage": -1.58831, + "ath_date": "2025-11-04T22:00:16.448Z", + "atl": 0.979874, + "atl_change_percentage": 2.19929, + "atl_date": "2025-11-04T20:20:16.172Z", + "roi": null, + "last_updated": "2025-11-06T17:23:45.087Z" + }, + { + "id": "vnst-stablecoin", + "symbol": "vnst", + "name": "VNST Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/34238/large/VNST__Logo.jpg?1706356454", + "current_price": 0.00003602, + "market_cap": 182389, + "market_cap_rank": 6294, + "fully_diluted_valuation": 182389, + "total_volume": 9336.13, + "high_24h": 0.00003649, + "low_24h": 0.00003538, + "price_change_24h": 3.56468e-7, + "price_change_percentage_24h": 0.9996, + "market_cap_change_24h": 1805.12, + "market_cap_change_percentage_24h": 0.9996, + "circulating_supply": 5063903095.39684, + "total_supply": 5063903095.39684, + "max_supply": null, + "ath": 0.00004081, + "ath_change_percentage": -12.13767, + "ath_date": "2024-02-06T23:58:12.199Z", + "atl": 0.00002948, + "atl_change_percentage": 21.61594, + "atl_date": "2025-10-10T23:30:28.530Z", + "roi": null, + "last_updated": "2025-11-06T17:21:57.051Z" + }, + { + "id": "eusd-27a558b0-8b5b-4225-a614-63539da936f4", + "symbol": "eusd", + "name": "eUSD (OLD)", + "image": "https://coin-images.coingecko.com/coins/images/30047/large/ethereum-eth-logo-colored_4_%281%29_%281%29.png?1696528969", + "current_price": 1.059, + "market_cap": 165602, + "market_cap_rank": 6436, + "fully_diluted_valuation": 165602, + "total_volume": 57.72, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 156449.7783415494, + "total_supply": 156449.7783415494, + "max_supply": null, + "ath": 1.42, + "ath_change_percentage": -25.42099, + "ath_date": "2025-04-16T08:59:07.258Z", + "atl": 0.131362, + "atl_change_percentage": 705.78756, + "atl_date": "2024-10-07T07:36:47.621Z", + "roi": null, + "last_updated": "2025-11-05T16:58:08.168Z" + }, + { + "id": "dephaser-jpy", + "symbol": "jpyt", + "name": "Dephaser JPY", + "image": "https://coin-images.coingecko.com/coins/images/68576/large/JPYT_Logo_200x200_px.png?1756110424", + "current_price": 0.00650932, + "market_cap": 163632, + "market_cap_rank": 6470, + "fully_diluted_valuation": 163632, + "total_volume": 19930.21, + "high_24h": 0.0065965, + "low_24h": 0.00641726, + "price_change_24h": -0.000005699286419645, + "price_change_percentage_24h": -0.08748, + "market_cap_change_24h": 876.07, + "market_cap_change_percentage_24h": 0.53827, + "circulating_supply": 25138085.16154, + "total_supply": 25138085.16154, + "max_supply": null, + "ath": 0.00682267, + "ath_change_percentage": -4.81544, + "ath_date": "2025-08-29T12:34:20.634Z", + "atl": 0.00631154, + "atl_change_percentage": 2.8929, + "atl_date": "2025-10-10T21:21:03.198Z", + "roi": null, + "last_updated": "2025-11-06T17:21:44.145Z" + }, + { + "id": "puso", + "symbol": "puso", + "name": "PUSO", + "image": "https://coin-images.coingecko.com/coins/images/50608/large/PUSO_transparent.png?1728473971", + "current_price": 0.01696043, + "market_cap": 162612, + "market_cap_rank": 6468, + "fully_diluted_valuation": 162612, + "total_volume": 180810, + "high_24h": 0.01704807, + "low_24h": 0.01695691, + "price_change_24h": -0.000079471491961101, + "price_change_percentage_24h": -0.46638, + "market_cap_change_24h": 6398.61, + "market_cap_change_percentage_24h": 4.09606, + "circulating_supply": 9587110.395835083, + "total_supply": 9587110.395835083, + "max_supply": null, + "ath": 0.01932156, + "ath_change_percentage": -12.19482, + "ath_date": "2025-08-25T20:39:19.021Z", + "atl": 0.00810846, + "atl_change_percentage": 109.22994, + "atl_date": "2025-10-10T21:25:10.847Z", + "roi": null, + "last_updated": "2025-11-06T17:21:43.249Z" + }, + { + "id": "straitsx-indonesia-rupiah", + "symbol": "xidr", + "name": "XIDR", + "image": "https://coin-images.coingecko.com/coins/images/21126/large/XIDR_Logo_256_X_256.png?1696520505", + "current_price": 0.00005948, + "market_cap": 125713, + "market_cap_rank": 6873, + "fully_diluted_valuation": 4108610, + "total_volume": 43.06, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 2113675181.787745, + "total_supply": 69080004683.32, + "max_supply": 113902104683, + "ath": 0.00129983, + "ath_change_percentage": -95.42433, + "ath_date": "2023-09-28T16:21:36.319Z", + "atl": 0.00000999, + "atl_change_percentage": 495.3358, + "atl_date": "2023-09-27T17:00:49.578Z", + "roi": null, + "last_updated": "2025-11-02T09:02:57.343Z" + }, + { + "id": "ccop", + "symbol": "ccop", + "name": "cCOP", + "image": "https://coin-images.coingecko.com/coins/images/53448/large/cCOP-Transparent.png?1736399829", + "current_price": 0.00026161, + "market_cap": 116527, + "market_cap_rank": 6997, + "fully_diluted_valuation": 116527, + "total_volume": 20145, + "high_24h": 0.00026232, + "low_24h": 0.00025915, + "price_change_24h": 0.00000245, + "price_change_percentage_24h": 0.9456, + "market_cap_change_24h": -9202.21950337784, + "market_cap_change_percentage_24h": -7.31908, + "circulating_supply": 445416742.4997391, + "total_supply": 445416742.4997391, + "max_supply": null, + "ath": 0.00049869, + "ath_change_percentage": -47.39705, + "ath_date": "2025-08-13T02:45:18.236Z", + "atl": 0.00012509, + "atl_change_percentage": 109.70195, + "atl_date": "2025-10-10T21:28:02.372Z", + "roi": null, + "last_updated": "2025-11-06T17:21:45.270Z" + }, + { + "id": "ynusd-max", + "symbol": "ynusdx", + "name": "ynUSD Max", + "image": "https://coin-images.coingecko.com/coins/images/66745/large/ynUSDx.png?1750359980", + "current_price": 1.036, + "market_cap": 109165, + "market_cap_rank": 7098, + "fully_diluted_valuation": 109165, + "total_volume": 50.34, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 105411.5140762664, + "total_supply": 105411.5140762664, + "max_supply": null, + "ath": 1.038, + "ath_change_percentage": -0.26769, + "ath_date": "2025-11-04T20:10:18.008Z", + "atl": 0.997125, + "atl_change_percentage": 3.85976, + "atl_date": "2025-08-16T09:57:08.941Z", + "roi": null, + "last_updated": "2025-11-04T21:57:59.410Z" + }, + { + "id": "fusd-by-the-fedz", + "symbol": "fusd", + "name": "The Fedz FUSD", + "image": "https://coin-images.coingecko.com/coins/images/67744/large/photo_2025-05-01_15-48-42.jpg?1753688528", + "current_price": 0.989976, + "market_cap": 108897, + "market_cap_rank": 7105, + "fully_diluted_valuation": 108897, + "total_volume": 447.3, + "high_24h": 1.005, + "low_24h": 0.985565, + "price_change_24h": -0.014679116610675225, + "price_change_percentage_24h": -1.46111, + "market_cap_change_24h": -952.3145749055693, + "market_cap_change_percentage_24h": -0.86693, + "circulating_supply": 110000, + "total_supply": 110000, + "max_supply": 110000, + "ath": 9.12, + "ath_change_percentage": -89.18963, + "ath_date": "2025-10-07T05:26:12.633Z", + "atl": 0.137781, + "atl_change_percentage": 615.31156, + "atl_date": "2025-10-07T02:33:40.951Z", + "roi": null, + "last_updated": "2025-11-06T17:10:41.431Z" + }, + { + "id": "sumer-money-suusd", + "symbol": "suusd", + "name": "Sumer.Money suUSD", + "image": "https://coin-images.coingecko.com/coins/images/33266/large/Sumer_Money_Logo.jpg?1701321416", + "current_price": 1.008, + "market_cap": 103838, + "market_cap_rank": 7198, + "fully_diluted_valuation": 103838, + "total_volume": 514.56, + "high_24h": 1.035, + "low_24h": 0.966269, + "price_change_24h": 0.04155999, + "price_change_percentage_24h": 4.30108, + "market_cap_change_24h": 4281.96, + "market_cap_change_percentage_24h": 4.30108, + "circulating_supply": 103030.9295415311, + "total_supply": 103030.9295415311, + "max_supply": null, + "ath": 1.61, + "ath_change_percentage": -37.12517, + "ath_date": "2024-11-07T22:09:25.676Z", + "atl": 0.70707, + "atl_change_percentage": 43.45378, + "atl_date": "2023-12-11T19:50:39.760Z", + "roi": null, + "last_updated": "2025-11-06T17:21:41.894Z" + }, + { + "id": "kei-stablecoin", + "symbol": "kei", + "name": "KEI Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/55084/large/kei.jpg?1743648809", + "current_price": 1, + "market_cap": 102782, + "market_cap_rank": 7217, + "fully_diluted_valuation": 102782, + "total_volume": 7229.21, + "high_24h": 1.019, + "low_24h": 0.977125, + "price_change_24h": -0.01840928011182963, + "price_change_percentage_24h": -1.80703, + "market_cap_change_24h": -1191.7547094487672, + "market_cap_change_percentage_24h": -1.14621, + "circulating_supply": 102746.077351678, + "total_supply": 102746.077351678, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -15.65452, + "ath_date": "2025-10-17T13:39:12.000Z", + "atl": 0.669361, + "atl_change_percentage": 48.13927, + "atl_date": "2025-10-10T21:25:39.922Z", + "roi": null, + "last_updated": "2025-11-06T17:08:28.986Z" + }, + { + "id": "basis-cash", + "symbol": "bac", + "name": "Basis Cash", + "image": "https://coin-images.coingecko.com/coins/images/13246/large/BAC.png?1696513021", + "current_price": 0.00179766, + "market_cap": 98110, + "market_cap_rank": 7300, + "fully_diluted_valuation": 98110, + "total_volume": 10990.91, + "high_24h": 0.00194719, + "low_24h": 0.00164083, + "price_change_24h": 0.00014613, + "price_change_percentage_24h": 8.84833, + "market_cap_change_24h": 7706.47, + "market_cap_change_percentage_24h": 8.52454, + "circulating_supply": 54575249.82699095, + "total_supply": 54575249.82699095, + "max_supply": 54575249.82699095, + "ath": 1010.99, + "ath_change_percentage": -99.99982, + "ath_date": "2020-11-30T10:46:21.320Z", + "atl": 0.00130316, + "atl_change_percentage": 37.94916, + "atl_date": "2024-10-27T10:09:37.938Z", + "roi": null, + "last_updated": "2025-11-06T17:24:06.516Z" + }, + { + "id": "davos-protocol", + "symbol": "dusd", + "name": "Davos.xyz USD", + "image": "https://coin-images.coingecko.com/coins/images/28775/large/dusd_logo_200x200.png?1696527754", + "current_price": 0.64798, + "market_cap": 88103, + "market_cap_rank": 7464, + "fully_diluted_valuation": 88103, + "total_volume": 46.73, + "high_24h": 0.647985, + "low_24h": 0.647917, + "price_change_24h": 3.52997e-7, + "price_change_percentage_24h": 0.00005, + "market_cap_change_24h": 24607, + "market_cap_change_percentage_24h": 38.75324, + "circulating_supply": 135966.2028536734, + "total_supply": 135966.2028536734, + "max_supply": null, + "ath": 4.04, + "ath_change_percentage": -83.95792, + "ath_date": "2025-02-23T07:25:02.428Z", + "atl": 0.330302, + "atl_change_percentage": 96.15911, + "atl_date": "2025-09-28T20:59:54.668Z", + "roi": null, + "last_updated": "2025-11-06T17:22:44.227Z" + }, + { + "id": "one-cash", + "symbol": "onc", + "name": "One Cash", + "image": "https://coin-images.coingecko.com/coins/images/13529/large/onc_logo.png?1696513290", + "current_price": 0.055677, + "market_cap": 85557, + "market_cap_rank": 7524, + "fully_diluted_valuation": 85557, + "total_volume": 9765.66, + "high_24h": 0.055868, + "low_24h": 0.052921, + "price_change_24h": 0.00275667, + "price_change_percentage_24h": 5.20906, + "market_cap_change_24h": 4242.52, + "market_cap_change_percentage_24h": 5.21743, + "circulating_supply": 1531947.149491639, + "total_supply": 1531947.149491639, + "max_supply": 1531947.149491639, + "ath": 1634.01, + "ath_change_percentage": -99.99658, + "ath_date": "2020-12-31T10:39:07.639Z", + "atl": 0.03781224, + "atl_change_percentage": 47.69959, + "atl_date": "2025-04-28T00:01:07.877Z", + "roi": null, + "last_updated": "2025-11-06T17:24:06.901Z" + }, + { + "id": "real-mxn", + "symbol": "mxne", + "name": "Real MXN", + "image": "https://coin-images.coingecko.com/coins/images/54735/large/mxne-logo-200.png?1741253834", + "current_price": 0.053734, + "market_cap": 76792, + "market_cap_rank": 7686, + "fully_diluted_valuation": 76792, + "total_volume": 21165, + "high_24h": 0.054146, + "low_24h": 0.053624, + "price_change_24h": -0.000010439976414416, + "price_change_percentage_24h": -0.01943, + "market_cap_change_24h": -9.142441482559661, + "market_cap_change_percentage_24h": -0.0119, + "circulating_supply": 1428994.67, + "total_supply": 1428994.67, + "max_supply": null, + "ath": 0.067991, + "ath_change_percentage": -20.96648, + "ath_date": "2025-08-26T21:42:07.159Z", + "atl": 0.02496541, + "atl_change_percentage": 115.23916, + "atl_date": "2025-03-22T06:45:19.104Z", + "roi": null, + "last_updated": "2025-11-06T17:24:17.240Z" + }, + { + "id": "aexys-dollar", + "symbol": "axd", + "name": "Aesyx Dollar", + "image": "https://coin-images.coingecko.com/coins/images/67499/large/axd.jpg?1753012191", + "current_price": 1.021, + "market_cap": 75630, + "market_cap_rank": 7707, + "fully_diluted_valuation": 75630, + "total_volume": 8028.11, + "high_24h": 1.03, + "low_24h": 1.02, + "price_change_24h": 0.00020992, + "price_change_percentage_24h": 0.02057, + "market_cap_change_24h": -5528.93472879511, + "market_cap_change_percentage_24h": -6.81252, + "circulating_supply": 74094.00642259233, + "total_supply": 74094.00642259233, + "max_supply": null, + "ath": 1.072, + "ath_change_percentage": -4.80913, + "ath_date": "2025-08-21T01:10:25.754Z", + "atl": 0.952838, + "atl_change_percentage": 7.11431, + "atl_date": "2025-10-16T16:06:59.841Z", + "roi": null, + "last_updated": "2025-11-06T17:23:10.811Z" + }, + { + "id": "zasset-zusd", + "symbol": "zusd", + "name": "Zasset zUSD", + "image": "https://coin-images.coingecko.com/coins/images/17664/large/zUSD_200x200.png?1699583794", + "current_price": 0.89206, + "market_cap": 74183, + "market_cap_rank": 7736, + "fully_diluted_valuation": 74183, + "total_volume": 204.08, + "high_24h": 0.908671, + "low_24h": 0.89206, + "price_change_24h": -0.01639590366238164, + "price_change_percentage_24h": -1.80481, + "market_cap_change_24h": -1303.6762538218463, + "market_cap_change_percentage_24h": -1.72703, + "circulating_supply": 83159.33410118755, + "total_supply": 83159.33410118755, + "max_supply": null, + "ath": 1.36, + "ath_change_percentage": -34.23232, + "ath_date": "2021-08-13T00:49:02.684Z", + "atl": 0.178833, + "atl_change_percentage": 398.82345, + "atl_date": "2024-11-05T04:21:23.914Z", + "roi": null, + "last_updated": "2025-11-06T13:07:42.666Z" + }, + { + "id": "autonomous-secure-dollar", + "symbol": "ussd", + "name": "Autonomous Secure Dollar", + "image": "https://coin-images.coingecko.com/coins/images/39227/large/Avatar_1.png?1721189801", + "current_price": 0.993885, + "market_cap": 71169, + "market_cap_rank": 7813, + "fully_diluted_valuation": 71169, + "total_volume": 52.39, + "high_24h": 1.008, + "low_24h": 0.979998, + "price_change_24h": -0.011071383797670031, + "price_change_percentage_24h": -1.10168, + "market_cap_change_24h": -792.7911645796412, + "market_cap_change_percentage_24h": -1.10168, + "circulating_supply": 71607.233483, + "total_supply": 71607.233483, + "max_supply": null, + "ath": 1.092, + "ath_change_percentage": -10.2864, + "ath_date": "2025-02-03T02:28:35.751Z", + "atl": 0.645416, + "atl_change_percentage": 51.83983, + "atl_date": "2024-10-12T11:50:29.717Z", + "roi": null, + "last_updated": "2025-11-06T17:22:57.251Z" + }, + { + "id": "bookusd", + "symbol": "bud", + "name": "BOOKUSD", + "image": "https://coin-images.coingecko.com/coins/images/66421/large/blue200x200.png?1749374858", + "current_price": 0.977664, + "market_cap": 67760, + "market_cap_rank": 7881, + "fully_diluted_valuation": 67760, + "total_volume": 59.25, + "high_24h": 0.997673, + "low_24h": 0.976887, + "price_change_24h": -0.000075125844423485, + "price_change_percentage_24h": -0.00768, + "market_cap_change_24h": 43.67, + "market_cap_change_percentage_24h": 0.06449, + "circulating_supply": 69308.19306031878, + "total_supply": 69308.19306031878, + "max_supply": null, + "ath": 1.9, + "ath_change_percentage": -48.50068, + "ath_date": "2025-07-30T15:34:29.671Z", + "atl": 0.859142, + "atl_change_percentage": 13.80647, + "atl_date": "2025-06-22T16:54:01.968Z", + "roi": null, + "last_updated": "2025-11-06T17:08:42.144Z" + }, + { + "id": "e-money-eur", + "symbol": "eeur", + "name": "e-Money EUR", + "image": "https://coin-images.coingecko.com/coins/images/18817/large/Currencies-Countries-Square-EEUR.png?1696518279", + "current_price": 0.133064, + "market_cap": 63987, + "market_cap_rank": 7976, + "fully_diluted_valuation": 63987, + "total_volume": 87.21, + "high_24h": 0.136897, + "low_24h": 0.132551, + "price_change_24h": -0.002516382828290531, + "price_change_percentage_24h": -1.85601, + "market_cap_change_24h": -1210.0611896668343, + "market_cap_change_percentage_24h": -1.85601, + "circulating_supply": 480873.250311, + "total_supply": 480873.250311, + "max_supply": null, + "ath": 3.11, + "ath_change_percentage": -95.72419, + "ath_date": "2023-04-26T18:11:13.891Z", + "atl": 3.28068e-7, + "atl_change_percentage": 40559768.94794, + "atl_date": "2024-09-18T20:51:02.282Z", + "roi": null, + "last_updated": "2025-11-06T17:15:53.456Z" + }, + { + "id": "solid-2", + "symbol": "solid", + "name": "Solid", + "image": "https://coin-images.coingecko.com/coins/images/68475/large/IMG_7008_2.png?1755845964", + "current_price": 0.966814, + "market_cap": 62016, + "market_cap_rank": 8025, + "fully_diluted_valuation": 62016, + "total_volume": 2285.41, + "high_24h": 1.096, + "low_24h": 0.957236, + "price_change_24h": -0.03795371533917946, + "price_change_percentage_24h": -3.77736, + "market_cap_change_24h": -2207.144371982242, + "market_cap_change_percentage_24h": -3.43666, + "circulating_supply": 64145.038682, + "total_supply": 64145.038682, + "max_supply": null, + "ath": 1.096, + "ath_change_percentage": -12.13856, + "ath_date": "2025-11-05T22:05:05.880Z", + "atl": 0.342748, + "atl_change_percentage": 180.95152, + "atl_date": "2025-10-10T21:26:59.377Z", + "roi": null, + "last_updated": "2025-11-06T17:22:47.641Z" + }, + { + "id": "dorol", + "symbol": "drl", + "name": "Dorol", + "image": "https://coin-images.coingecko.com/coins/images/68638/large/Dorol_200x200_logo.png?1756151165", + "current_price": 3849.84, + "market_cap": 51427, + "market_cap_rank": 8326, + "fully_diluted_valuation": 38498411746, + "total_volume": 6349.86, + "high_24h": 3883.04, + "low_24h": 3837.11, + "price_change_24h": 7.61, + "price_change_percentage_24h": 0.19816, + "market_cap_change_24h": 137.92, + "market_cap_change_percentage_24h": 0.2689, + "circulating_supply": 13.358119237848147, + "total_supply": 9999998, + "max_supply": null, + "ath": 4469.59, + "ath_change_percentage": -13.86597, + "ath_date": "2025-10-01T12:33:40.552Z", + "atl": 3321.49, + "atl_change_percentage": 15.90725, + "atl_date": "2025-09-22T06:06:55.352Z", + "roi": null, + "last_updated": "2025-11-06T15:52:29.665Z" + }, + { + "id": "mead-2", + "symbol": "mead", + "name": "Mead", + "image": "https://coin-images.coingecko.com/coins/images/55743/large/MEAD.jpg?1747287719", + "current_price": 0.994943, + "market_cap": 49818, + "market_cap_rank": 8382, + "fully_diluted_valuation": 49818, + "total_volume": 0.096844, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 50070.99971275834, + "total_supply": 50070.99971275834, + "max_supply": null, + "ath": 1.53, + "ath_change_percentage": -35.17085, + "ath_date": "2025-08-28T11:54:47.200Z", + "atl": 0.993687, + "atl_change_percentage": 0.12647, + "atl_date": "2025-11-02T20:34:50.753Z", + "roi": null, + "last_updated": "2025-11-04T12:01:22.828Z" + }, + { + "id": "celo-japanese-yen", + "symbol": "cjpy", + "name": "Celo Japanese Yen", + "image": "https://coin-images.coingecko.com/coins/images/66416/large/cJPY_transparent.png?1749373382", + "current_price": 0.00651718, + "market_cap": 34449, + "market_cap_rank": 9025, + "fully_diluted_valuation": 34449, + "total_volume": 728.36, + "high_24h": 0.00651749, + "low_24h": 0.00650162, + "price_change_24h": 0.00001367, + "price_change_percentage_24h": 0.21024, + "market_cap_change_24h": -285.16921556409216, + "market_cap_change_percentage_24h": -0.821, + "circulating_supply": 5285665.25617875, + "total_supply": 5285665.25617875, + "max_supply": null, + "ath": 0.00726235, + "ath_change_percentage": -10.29146, + "ath_date": "2025-10-10T23:40:31.775Z", + "atl": 0.00388634, + "atl_change_percentage": 67.63733, + "atl_date": "2025-10-10T21:30:52.558Z", + "roi": null, + "last_updated": "2025-11-06T17:22:51.955Z" + }, + { + "id": "coin98-dollar", + "symbol": "cusd", + "name": "Coin98 Dollar", + "image": "https://coin-images.coingecko.com/coins/images/26588/large/CUSD-01.png?1696525663", + "current_price": 0.818211, + "market_cap": 30693, + "market_cap_rank": 9233, + "fully_diluted_valuation": 30693, + "total_volume": 11.04, + "high_24h": 0.823998, + "low_24h": 0.818291, + "price_change_24h": -0.004720707192383822, + "price_change_percentage_24h": -0.57365, + "market_cap_change_24h": -177.08316820070104, + "market_cap_change_percentage_24h": -0.57365, + "circulating_supply": 37512, + "total_supply": 37512, + "max_supply": null, + "ath": 1.27, + "ath_change_percentage": -35.77924, + "ath_date": "2025-01-20T07:32:45.782Z", + "atl": 0.446195, + "atl_change_percentage": 83.393, + "atl_date": "2023-10-09T14:03:20.658Z", + "roi": null, + "last_updated": "2025-11-06T17:07:36.165Z" + }, + { + "id": "cghs", + "symbol": "cghs", + "name": "cGHS", + "image": "https://coin-images.coingecko.com/coins/images/54946/large/cGHS.png?1742636054", + "current_price": 0.092337, + "market_cap": 30256, + "market_cap_rank": 9252, + "fully_diluted_valuation": 30256, + "total_volume": 168358, + "high_24h": 0.09325, + "low_24h": 0.089944, + "price_change_24h": 0.00076447, + "price_change_percentage_24h": 0.83482, + "market_cap_change_24h": 128.66, + "market_cap_change_percentage_24h": 0.42705, + "circulating_supply": 329002.4841040469, + "total_supply": 329002.4841040469, + "max_supply": null, + "ath": 0.099394, + "ath_change_percentage": -7.5127, + "ath_date": "2025-06-24T06:11:41.254Z", + "atl": 0.04693655, + "atl_change_percentage": 95.85429, + "atl_date": "2025-10-10T21:30:01.423Z", + "roi": null, + "last_updated": "2025-11-06T17:24:00.205Z" + }, + { + "id": "knox-dollar", + "symbol": "knox", + "name": "KNOX Dollar", + "image": "https://coin-images.coingecko.com/coins/images/38074/large/knox%28200_x_200_px%29.png?1716449113", + "current_price": 1.081, + "market_cap": 28796, + "market_cap_rank": 9363, + "fully_diluted_valuation": 28796, + "total_volume": 699.86, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 26643.89607241731, + "total_supply": 26643.89607241731, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -2.40382, + "ath_date": "2024-12-25T19:31:11.131Z", + "atl": 0.978369, + "atl_change_percentage": 10.46627, + "atl_date": "2024-06-11T04:26:10.722Z", + "roi": null, + "last_updated": "2025-11-02T06:17:08.144Z" + }, + { + "id": "open-dollar", + "symbol": "od", + "name": "Open Dollar", + "image": "https://coin-images.coingecko.com/coins/images/38630/large/OD_Token_200_x_200.png?1718170821", + "current_price": 2.19, + "market_cap": 23646, + "market_cap_rank": 9731, + "fully_diluted_valuation": 23646, + "total_volume": 2.02, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 10781.9634708327, + "total_supply": 10781.9634708327, + "max_supply": null, + "ath": 2.19, + "ath_change_percentage": -0.03772, + "ath_date": "2025-10-14T01:11:39.765Z", + "atl": 0.878488, + "atl_change_percentage": 149.64963, + "atl_date": "2024-08-04T17:46:43.187Z", + "roi": null, + "last_updated": "2025-10-27T06:35:30.181Z" + }, + { + "id": "turbo-usd", + "symbol": "tusd", + "name": "Turbo USD", + "image": "https://coin-images.coingecko.com/coins/images/66816/large/photo_2025-04-23_14-18-31_%282%29.jpg?1750583909", + "current_price": 0.991438, + "market_cap": 14006.7, + "market_cap_rank": 10753, + "fully_diluted_valuation": 14006.7, + "total_volume": 5.03, + "high_24h": 0.991438, + "low_24h": 0.991336, + "price_change_24h": 0.00010106, + "price_change_percentage_24h": 0.01019, + "market_cap_change_24h": 1.43, + "market_cap_change_percentage_24h": 0.01019, + "circulating_supply": 14127.654848, + "total_supply": 14127.654848, + "max_supply": null, + "ath": 1.01, + "ath_change_percentage": -1.86219, + "ath_date": "2025-07-08T18:09:35.497Z", + "atl": 0.94709, + "atl_change_percentage": 4.68257, + "atl_date": "2025-07-29T19:19:22.393Z", + "roi": null, + "last_updated": "2025-11-06T03:41:45.632Z" + }, + { + "id": "krwo", + "symbol": "krwo", + "name": "KRWO", + "image": "https://coin-images.coingecko.com/coins/images/54799/large/KRWO-Common.png?1741696516", + "current_price": 0.00066689, + "market_cap": 13537.77, + "market_cap_rank": 10820, + "fully_diluted_valuation": 13537.77, + "total_volume": 222.74, + "high_24h": 0.00067818, + "low_24h": 0.00066734, + "price_change_24h": -0.000004321951006522, + "price_change_percentage_24h": -0.64391, + "market_cap_change_24h": -87.7356054323991, + "market_cap_change_percentage_24h": -0.64391, + "circulating_supply": 20300000, + "total_supply": 20300000, + "max_supply": null, + "ath": 0.00076113, + "ath_change_percentage": -11.76045, + "ath_date": "2025-08-08T05:26:31.542Z", + "atl": 0.00039112, + "atl_change_percentage": 71.718, + "atl_date": "2025-10-10T21:34:12.083Z", + "roi": null, + "last_updated": "2025-11-06T17:11:09.784Z" + }, + { + "id": "celo-nigerian-naira", + "symbol": "cngn", + "name": "Celo Nigerian Naira", + "image": "https://coin-images.coingecko.com/coins/images/66417/large/cNGN_transparent.png?1749373455", + "current_price": 0.00069439, + "market_cap": 10931.09, + "market_cap_rank": 11242, + "fully_diluted_valuation": 10931.09, + "total_volume": 1.39, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 15741914.67638027, + "total_supply": 15741914.67638027, + "max_supply": null, + "ath": 0.0007, + "ath_change_percentage": -0.80131, + "ath_date": "2025-10-03T16:36:06.492Z", + "atl": 0.00063308, + "atl_change_percentage": 9.68468, + "atl_date": "2025-06-10T03:08:30.002Z", + "roi": null, + "last_updated": "2025-11-04T11:08:10.610Z" + }, + { + "id": "parabol-usd", + "symbol": "parausd", + "name": "Parabol USD", + "image": "https://coin-images.coingecko.com/coins/images/54918/large/logo.png?1742536896", + "current_price": 0.999752, + "market_cap": 2031.77, + "market_cap_rank": 12784, + "fully_diluted_valuation": 2031.77, + "total_volume": 21001, + "high_24h": null, + "low_24h": null, + "price_change_24h": null, + "price_change_percentage_24h": null, + "market_cap_change_24h": null, + "market_cap_change_percentage_24h": null, + "circulating_supply": 2032.270265402797, + "total_supply": 2032.270265402797, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -14.41148, + "ath_date": "2025-04-16T12:47:59.208Z", + "atl": 0.981726, + "atl_change_percentage": 1.83615, + "atl_date": "2025-03-28T04:45:11.505Z", + "roi": null, + "last_updated": "2025-10-31T19:32:34.372Z" + }, + { + "id": "rif-us-dollar", + "symbol": "usdrif", + "name": "RIF US Dollar", + "image": "https://coin-images.coingecko.com/coins/images/39869/large/USDRIF.webp?1724500201", + "current_price": 0.992218, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": null, + "total_volume": 75772, + "high_24h": 1.001, + "low_24h": 0.983305, + "price_change_24h": -0.007950636507266129, + "price_change_percentage_24h": -0.79493, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": null, + "max_supply": null, + "ath": 1.014, + "ath_change_percentage": -2.32464, + "ath_date": "2025-08-22T14:20:32.245Z", + "atl": 0.924765, + "atl_change_percentage": 7.05251, + "atl_date": "2025-10-10T21:25:32.382Z", + "roi": null, + "last_updated": "2025-11-06T17:23:42.741Z" + }, + { + "id": "monerium-gbp-emoney", + "symbol": "gbpe", + "name": "Monerium GBP emoney", + "image": "https://coin-images.coingecko.com/coins/images/39004/large/gbp.png?1719840784", + "current_price": 1.35, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 456988, + "total_volume": 20340, + "high_24h": 1.35, + "low_24h": 1.35, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 337405.43, + "max_supply": null, + "ath": 2.03, + "ath_change_percentage": -33.35122, + "ath_date": "2024-08-05T18:59:09.650Z", + "atl": 1.21, + "atl_change_percentage": 12.09161, + "atl_date": "2025-01-13T08:30:27.476Z", + "roi": null, + "last_updated": "2025-11-06T17:22:23.417Z" + }, + { + "id": "mezo-usd", + "symbol": "musd", + "name": "Mezo USD", + "image": "https://coin-images.coingecko.com/coins/images/66938/large/37163_%281%29.png?1757476797", + "current_price": 0.989964, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 49562833, + "total_volume": 344776, + "high_24h": 0.99768, + "low_24h": 0.98609, + "price_change_24h": -0.004424632264721895, + "price_change_percentage_24h": -0.44496, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 50000000, + "max_supply": null, + "ath": 1.055, + "ath_change_percentage": -6.01178, + "ath_date": "2025-10-08T16:47:20.268Z", + "atl": 0.963531, + "atl_change_percentage": 2.88124, + "atl_date": "2025-11-04T21:36:56.656Z", + "roi": null, + "last_updated": "2025-11-06T17:24:19.037Z" + }, + { + "id": "magic-internet-money-optimism", + "symbol": "mim", + "name": "Magic Internet Money (Optimism)", + "image": "https://coin-images.coingecko.com/coins/images/37659/large/mim.png?1715165153", + "current_price": 0.996976, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 18152055, + "total_volume": 2.43, + "high_24h": 0.997782, + "low_24h": 0.996853, + "price_change_24h": 0.00007647, + "price_change_percentage_24h": 0.00767, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 18207114.873991407, + "max_supply": null, + "ath": 1.79, + "ath_change_percentage": -44.24915, + "ath_date": "2025-03-02T18:28:48.749Z", + "atl": 0.890696, + "atl_change_percentage": 11.94317, + "atl_date": "2024-08-05T01:26:41.750Z", + "roi": null, + "last_updated": "2025-11-06T17:07:36.461Z" + }, + { + "id": "monerium-eur-money", + "symbol": "eure", + "name": "Monerium EUR emoney [OLD]", + "image": "https://coin-images.coingecko.com/coins/images/23354/large/eur.png?1696522569", + "current_price": 1.14, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 25179270, + "total_volume": 705699, + "high_24h": 1.16, + "low_24h": 1.12, + "price_change_24h": -0.006869685989132623, + "price_change_percentage_24h": -0.59749, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 22409791.65826667, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -4.33445, + "ath_date": "2023-07-27T06:18:54.954Z", + "atl": 0.951958, + "atl_change_percentage": 20.05691, + "atl_date": "2022-09-06T17:31:09.870Z", + "roi": null, + "last_updated": "2025-11-06T17:23:05.445Z" + }, + { + "id": "mapped-usdt", + "symbol": "usdt", + "name": "Mapped USDT", + "image": "https://coin-images.coingecko.com/coins/images/37016/large/usdt.png?1713151897", + "current_price": 0.999414, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 1216343, + "total_volume": 3338.39, + "high_24h": 1.02, + "low_24h": 0.999427, + "price_change_24h": -0.000300559311873339, + "price_change_percentage_24h": -0.03006, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 1216863.917, + "max_supply": null, + "ath": 1.26, + "ath_change_percentage": -20.95854, + "ath_date": "2025-04-11T05:50:52.353Z", + "atl": 0.868761, + "atl_change_percentage": 15.0422, + "atl_date": "2024-06-18T23:03:00.690Z", + "roi": null, + "last_updated": "2025-11-06T17:24:06.871Z" + }, + { + "id": "matic-dai-stablecoin", + "symbol": "dai-matic", + "name": "Matic DAI Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/19344/large/io1v25anp7t7nz954gdam2m27eqp4arr93jly4maa.png?1696518785", + "current_price": 0.945689, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 333312, + "total_volume": 2829.09, + "high_24h": 1.055, + "low_24h": 0.925729, + "price_change_24h": 0.0054606, + "price_change_percentage_24h": 0.58077, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 352062, + "max_supply": 9496266827, + "ath": 1.28, + "ath_change_percentage": -26.06356, + "ath_date": "2021-11-11T00:10:49.691Z", + "atl": 0.249613, + "atl_change_percentage": 279.28514, + "atl_date": "2025-10-10T21:27:58.651Z", + "roi": null, + "last_updated": "2025-11-06T17:24:42.870Z" + }, + { + "id": "rzusd", + "symbol": "rzusd", + "name": "RZUSD", + "image": "https://coin-images.coingecko.com/coins/images/54532/large/IMG_9110.jpeg?1740210003", + "current_price": 0.999089, + "market_cap": 0, + "market_cap_rank": null, + "fully_diluted_valuation": 9993860330150, + "total_volume": 775870, + "high_24h": 1.002, + "low_24h": 0.998361, + "price_change_24h": -0.001097911468909474, + "price_change_percentage_24h": -0.10977, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 0, + "total_supply": 10000000000000, + "max_supply": 10000000000000, + "ath": 1.023, + "ath_change_percentage": -2.24207, + "ath_date": "2025-03-10T19:09:32.150Z", + "atl": 0.971071, + "atl_change_percentage": 2.95132, + "atl_date": "2025-03-13T13:09:45.063Z", + "roi": null, + "last_updated": "2025-11-06T17:24:26.090Z" + } + ], + "timestamp": 1762449885430 +} \ No newline at end of file diff --git a/src/data/mocks/totalValueLocked.json b/src/data/mocks/totalValueLocked.json index 0691e30c7ae..b8717a8c9a9 100644 --- a/src/data/mocks/totalValueLocked.json +++ b/src/data/mocks/totalValueLocked.json @@ -1 +1,4 @@ -{"value":103172102624.0864,"timestamp":1727788459237} \ No newline at end of file +{ + "value": 154330183646, + "timestamp": 1762449885068 +} \ No newline at end of file diff --git a/src/data/networks/networks-data.ts b/src/data/networks/networks-data.ts new file mode 100644 index 00000000000..166f7aea346 --- /dev/null +++ b/src/data/networks/networks-data.ts @@ -0,0 +1,167 @@ +import { ChainName, NonEVMChainName } from "@/lib/types" + +/** + * Network data without images (for use in ts-node scripts and data derivation). + * This file contains the pure data structure that can be imported without image dependencies. + */ +export interface RollupData { + l2beatID: string + growthepieID: string + name: string + chainName: ChainName | NonEVMChainName + canExpand?: boolean + networkType: "optimistic" | "zk" + description: string + website: string + applicationsLink: string + blockExplorerLink: string + bridgeLink: string + l2BeatLink: string + growthepieLink: string + feeToken: string[] +} + +export type RollupsData = RollupData[] + +export const layer2DataRaw: RollupsData = [ + { + l2beatID: "arbitrum", + growthepieID: "arbitrum", + name: "Arbitrum One", + chainName: "Arbitrum One", + networkType: "optimistic", + description: "page-layer-2-arbitrum-description", + website: "https://arbitrum.io/rollup", + applicationsLink: "https://portal.arbitrum.io/projects", + blockExplorerLink: "https://arbiscan.io/", + bridgeLink: "https://bridge.arbitrum.io/", + l2BeatLink: "https://l2beat.com/scaling/projects/arbitrum", + growthepieLink: "https://www.growthepie.com/chains/arbitrum", + feeToken: ["ETH"], + }, + { + l2beatID: "base", + growthepieID: "base", + name: "Base", + chainName: "Base", + networkType: "optimistic", + description: "page-layer-2-base-description", + website: "https://base.org/", + applicationsLink: "https://base.org/ecosystem", + blockExplorerLink: "https://basescan.org/", + bridgeLink: "https://bridge.base.org/deposit", + l2BeatLink: "https://l2beat.com/scaling/projects/base", + growthepieLink: "https://www.growthepie.com/chains/base", + feeToken: ["ETH"], + }, + { + l2beatID: "optimism", + growthepieID: "optimism", + name: "Optimism", + chainName: "OP Mainnet", + networkType: "optimistic", + description: "page-layer-2-optimism-description", + website: "https://optimism.io/", + applicationsLink: "https://optimism.io/apps", + blockExplorerLink: "https://optimistic.etherscan.io/", + bridgeLink: "https://app.optimism.io/", + l2BeatLink: "https://l2beat.com/scaling/projects/optimism", + growthepieLink: "https://www.growthepie.com/chains/optimism", + feeToken: ["ETH"], + }, + { + l2beatID: "zksync2", + growthepieID: "zksync_era", + name: "ZKSync Era", + chainName: "zkSync Mainnet", + networkType: "zk", + description: "page-layer-2-zksync2-description", + website: "https://zksync.io/", + applicationsLink: "https://zksync.io/ecosystem", + blockExplorerLink: "https://explorer.zksync.io/", + bridgeLink: "https://portal.zksync.io/bridge/", + l2BeatLink: "https://l2beat.com/scaling/projects/zksync-era", + growthepieLink: "https://www.growthepie.com/chains/zksync-era", + feeToken: ["ETH"], + }, + { + l2beatID: "linea", + growthepieID: "linea", + name: "Linea", + chainName: "Linea", + networkType: "zk", + description: "page-layer-2-linea-description", + website: "https://linea.build/", + applicationsLink: "https://linea.build/apps", + blockExplorerLink: "https://lineascan.build/", + bridgeLink: "https://bridge.linea.build/", + l2BeatLink: "https://l2beat.com/scaling/projects/linea", + growthepieLink: "https://www.growthepie.com/chains/linea", + feeToken: ["ETH"], + }, + { + l2beatID: "scroll", + growthepieID: "scroll", + name: "Scroll", + chainName: "Scroll", + networkType: "zk", + description: "page-layer-2-scroll-description", + website: "https://scroll.io/", + applicationsLink: "https://scroll.io/ecosystem", + blockExplorerLink: "https://scrollscan.com", + bridgeLink: "https://scroll.io/bridge", + l2BeatLink: "https://l2beat.com/scaling/projects/scroll", + growthepieLink: "https://www.growthepie.com/chains/scroll", + feeToken: ["ETH"], + }, + { + l2beatID: "starknet", + growthepieID: "starknet", + name: "Starknet", + chainName: "Starknet", + networkType: "zk", + description: "page-layer-2-starknet-description", + website: "https://starknet.io", + applicationsLink: "https://www.starknet-ecosystem.com/", + blockExplorerLink: "https://starkscan.co/", + bridgeLink: "https://starkgate.starknet.io/", + l2BeatLink: "https://l2beat.com/scaling/projects/starknet", + growthepieLink: "https://www.growthepie.com/chains/starknet", + feeToken: ["ETH", "STRK"], + }, + { + l2beatID: "unichain", + growthepieID: "unichain", + name: "Unichain", + chainName: "Unichain", + networkType: "optimistic", + description: "page-layer-2-unichain-description", + website: "https://www.unichain.org/", + applicationsLink: "https://www.unichain.org/explore", + blockExplorerLink: "https://uniscan.xyz/", + bridgeLink: "https://www.unichain.org/bridge", + l2BeatLink: "https://l2beat.com/scaling/projects/unichain", + growthepieLink: "https://www.growthepie.com/chains/unichain", + feeToken: ["ETH"], + }, + { + l2beatID: "ink", + growthepieID: "ink", + name: "Ink", + chainName: "Ink", + networkType: "optimistic", + description: "page-layer-2-ink-description", + website: "https://inkonchain.com/", + applicationsLink: "https://inkonchain.com/apps", + blockExplorerLink: "https://explorer.inkonchain.com/", + bridgeLink: "https://inkonchain.com/bridge", + l2BeatLink: "https://l2beat.com/scaling/projects/ink", + growthepieLink: "https://www.growthepie.com/chains/ink", + feeToken: ["ETH"], + }, +] + +// Automatically derive GROWTHEPIE_IDS from the data +export const GROWTHEPIE_IDS: string[] = layer2DataRaw.map( + (network) => network.growthepieID +) diff --git a/src/data/networks/networks.ts b/src/data/networks/networks.ts index 52ddcc12f29..1c0a95c14bc 100644 --- a/src/data/networks/networks.ts +++ b/src/data/networks/networks.ts @@ -1,6 +1,6 @@ import { StaticImageData } from "next/image" -import { ChainName, NonEVMChainName } from "@/lib/types" +import { layer2DataRaw, type RollupData } from "./networks-data" import ArbitrumLogo from "@/public/images/layer-2/arbitrum.jpg" import BaseLogo from "@/public/images/layer-2/base.png" @@ -13,22 +13,21 @@ import StarknetLogo from "@/public/images/layer-2/starknet.png" import UnichainLogo from "@/public/images/layer-2/unichain.png" import ZkSyncEraLogo from "@/public/images/layer-2/zksyncEra.jpg" -export interface Rollup { - l2beatID: string - growthepieID: string - name: string - chainName: ChainName | NonEVMChainName - canExpand?: boolean +// Map of growthepieID to logo for easy lookup +const logoMap: Record = { + arbitrum: ArbitrumLogo, + base: BaseLogo, + optimism: OptimismLogo, + zksync_era: ZkSyncEraLogo, + linea: LineaLogo, + scroll: ScrollLogo, + starknet: StarknetLogo, + unichain: UnichainLogo, + ink: InkLogo, +} + +export interface Rollup extends RollupData { logo: StaticImageData - networkType: "optimistic" | "zk" - description: string - website: string - applicationsLink: string - blockExplorerLink: string - bridgeLink: string - l2BeatLink: string - growthepieLink: string - feeToken: string[] } export type Rollups = Rollup[] @@ -42,149 +41,11 @@ export const ethereumNetworkData = { canExpand: false, } -export const layer2Data: Rollups = [ - { - l2beatID: "arbitrum", - growthepieID: "arbitrum", - name: "Arbitrum One", - chainName: "Arbitrum One", - logo: ArbitrumLogo, - networkType: "optimistic", - description: "page-layer-2-arbitrum-description", - website: "https://arbitrum.io/rollup", - applicationsLink: "https://portal.arbitrum.io/projects", - blockExplorerLink: "https://arbiscan.io/", - bridgeLink: "https://bridge.arbitrum.io/", - l2BeatLink: "https://l2beat.com/scaling/projects/arbitrum", - growthepieLink: "https://www.growthepie.com/chains/arbitrum", - feeToken: ["ETH"], - }, - { - l2beatID: "base", - growthepieID: "base", - name: "Base", - chainName: "Base", - logo: BaseLogo, - networkType: "optimistic", - description: "page-layer-2-base-description", - website: "https://base.org/", - applicationsLink: "https://base.org/ecosystem", - blockExplorerLink: "https://basescan.org/", - bridgeLink: "https://bridge.base.org/deposit", - l2BeatLink: "https://l2beat.com/scaling/projects/base", - growthepieLink: "https://www.growthepie.com/chains/base", - feeToken: ["ETH"], - }, - { - l2beatID: "optimism", - growthepieID: "optimism", - name: "Optimism", - chainName: "OP Mainnet", - logo: OptimismLogo, - networkType: "optimistic", - description: "page-layer-2-optimism-description", - website: "https://optimism.io/", - applicationsLink: "https://optimism.io/apps", - blockExplorerLink: "https://optimistic.etherscan.io/", - bridgeLink: "https://app.optimism.io/", - l2BeatLink: "https://l2beat.com/scaling/projects/optimism", - growthepieLink: "https://www.growthepie.com/chains/optimism", - feeToken: ["ETH"], - }, - { - l2beatID: "zksync2", - growthepieID: "zksync_era", - name: "ZKSync Era", - chainName: "zkSync Mainnet", - logo: ZkSyncEraLogo, - networkType: "zk", - description: "page-layer-2-zksync2-description", - website: "https://zksync.io/", - applicationsLink: "https://zksync.io/ecosystem", - blockExplorerLink: "https://explorer.zksync.io/", - bridgeLink: "https://portal.zksync.io/bridge/", - l2BeatLink: "https://l2beat.com/scaling/projects/zksync-era", - growthepieLink: "https://www.growthepie.com/chains/zksync-era", - feeToken: ["ETH"], - }, - { - l2beatID: "linea", - growthepieID: "linea", - name: "Linea", - chainName: "Linea", - logo: LineaLogo, - networkType: "zk", - description: "page-layer-2-linea-description", - website: "https://linea.build/", - applicationsLink: "https://linea.build/apps", - blockExplorerLink: "https://lineascan.build/", - bridgeLink: "https://bridge.linea.build/", - l2BeatLink: "https://l2beat.com/scaling/projects/linea", - growthepieLink: "https://www.growthepie.com/chains/linea", - feeToken: ["ETH"], - }, - { - l2beatID: "scroll", - growthepieID: "scroll", - name: "Scroll", - chainName: "Scroll", - logo: ScrollLogo, - networkType: "zk", - description: "page-layer-2-scroll-description", - website: "https://scroll.io/", - applicationsLink: "https://scroll.io/ecosystem", - blockExplorerLink: "https://scrollscan.com", - bridgeLink: "https://scroll.io/bridge", - l2BeatLink: "https://l2beat.com/scaling/projects/scroll", - growthepieLink: "https://www.growthepie.com/chains/scroll", - feeToken: ["ETH"], - }, - { - l2beatID: "starknet", - growthepieID: "starknet", - name: "Starknet", - chainName: "Starknet", - logo: StarknetLogo, - networkType: "zk", - description: "page-layer-2-starknet-description", - website: "https://starknet.io", - applicationsLink: "https://www.starknet-ecosystem.com/", - blockExplorerLink: "https://starkscan.co/", - bridgeLink: "https://starkgate.starknet.io/", - l2BeatLink: "https://l2beat.com/scaling/projects/starknet", - growthepieLink: "https://www.growthepie.com/chains/starknet", - feeToken: ["ETH", "STRK"], - }, - { - l2beatID: "unichain", - growthepieID: "unichain", - name: "Unichain", - chainName: "Unichain", - logo: UnichainLogo, - networkType: "optimistic", - description: "page-layer-2-unichain-description", - website: "https://www.unichain.org/", - applicationsLink: "https://www.unichain.org/explore", - blockExplorerLink: "https://uniscan.xyz/", - bridgeLink: "https://www.unichain.org/bridge", - l2BeatLink: "https://l2beat.com/scaling/projects/unichain", - growthepieLink: "https://www.growthepie.com/chains/unichain", - feeToken: ["ETH"], - }, - { - l2beatID: "ink", - growthepieID: "ink", - name: "Ink", - chainName: "Ink", - logo: InkLogo, - networkType: "optimistic", - description: "page-layer-2-ink-description", - website: "https://inkonchain.com/", - applicationsLink: "https://inkonchain.com/apps", - blockExplorerLink: "https://explorer.inkonchain.com/", - bridgeLink: "https://inkonchain.com/bridge", - l2BeatLink: "https://l2beat.com/scaling/projects/ink", - growthepieLink: "https://www.growthepie.com/chains/ink", - feeToken: ["ETH"], - }, -] +// Re-export GROWTHEPIE_IDS from networks-data (auto-derived, no manual sync needed) +export { GROWTHEPIE_IDS } from "./networks-data" + +// Combine data with logos to create the full layer2Data array +export const layer2Data: Rollups = layer2DataRaw.map((network) => ({ + ...network, + logo: logoMap[network.growthepieID], +})) diff --git a/src/lib/api/__tests__/fetchBeaconchainEpoch.test.ts b/src/lib/api/__tests__/fetchBeaconchainEpoch.test.ts new file mode 100644 index 00000000000..81d52425bae --- /dev/null +++ b/src/lib/api/__tests__/fetchBeaconchainEpoch.test.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchBeaconchainEpoch } from "../fetchBeaconchainEpoch" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchBeaconchainEpoch", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return object with raw values on success", async () => { + const mockData = await loadMockDataFile<{ + totalEthStaked: { value: number; timestamp: number } + validatorscount: { value: number; timestamp: number } + }>("beaconchainEpoch.json") + + // Convert back to gwei for API response + const eligibleether = mockData.totalEthStaked.value * 1e9 + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + data: { + eligibleether, + validatorscount: mockData.validatorscount.value, + }, + }), + }) + + const result = await fetchBeaconchainEpoch() + + expect(result).toHaveProperty("totalEthStaked") + expect(result).toHaveProperty("validatorscount") + expect(typeof result.totalEthStaked).toBe("number") + expect(typeof result.validatorscount).toBe("number") + expect(result.totalEthStaked).toBe(mockData.totalEthStaked.value) + expect(result.validatorscount).toBe(mockData.validatorscount.value) + }) + + it("should convert gwei to ETH correctly", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + data: { + eligibleether: 1000000000000000000, // 1 ETH in gwei + validatorscount: 1000, + }, + }), + }) + + const result = await fetchBeaconchainEpoch() + + expect(result.totalEthStaked).toBe(1000000000) // 1 ETH * 1e9 + }) + + it("should throw error on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + }) + + await expect(fetchBeaconchainEpoch()).rejects.toThrow( + "Failed to fetch Beaconcha.in epoch data" + ) + }) + + it("should handle network errors", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + await expect(fetchBeaconchainEpoch()).rejects.toThrow("Network error") + }) +}) diff --git a/src/lib/api/__tests__/fetchBeaconchainEthstore.test.ts b/src/lib/api/__tests__/fetchBeaconchainEthstore.test.ts new file mode 100644 index 00000000000..0e976441a1b --- /dev/null +++ b/src/lib/api/__tests__/fetchBeaconchainEthstore.test.ts @@ -0,0 +1,58 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchBeaconchainEthstore } from "../fetchBeaconchainEthstore" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchBeaconchainEthstore", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return number on success", async () => { + const mockData = await loadMockDataFile<{ + value: number + timestamp: number + }>("beaconchainApr.json") + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + data: { + apr: mockData.value, + }, + }), + }) + + const result = await fetchBeaconchainEthstore() + + expect(typeof result).toBe("number") + expect(result).toBe(mockData.value) + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + }) + + const result = await fetchBeaconchainEthstore() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(typeof result.error).toBe("string") + expect(result.error).toContain("status 500") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchBeaconchainEthstore() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchCommunityPicks.test.ts b/src/lib/api/__tests__/fetchCommunityPicks.test.ts new file mode 100644 index 00000000000..7dc736f80ea --- /dev/null +++ b/src/lib/api/__tests__/fetchCommunityPicks.test.ts @@ -0,0 +1,127 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchCommunityPicks } from "../fetchCommunityPicks" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchCommunityPicks", () => { + beforeEach(() => { + vi.clearAllMocks() + process.env.GOOGLE_API_KEY = "test-key" + process.env.GOOGLE_SHEET_ID_DAPPS = "test-sheet-id" + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ + value: Array<{ + name: string + twitterURL: string + twitterHandle: string + }> + }>("communityPicks.json") + + // Convert mock data back to Google Sheets format + const headerRow = [ + "Name", + "Twitter URL", + "Twitter Handle", + "App 1", + "App 2", + "App 3", + ] + const dataRows = mockData.value.map((pick) => [ + pick.name, + pick.twitterURL, + pick.twitterHandle, + "", // app1Name + "", // app2Name + "", // app3Name + ]) + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + values: [headerRow, ...dataRows], + }), + }) + + const result = await fetchCommunityPicks() + + expect(Array.isArray(result)).toBe(true) + if (Array.isArray(result)) { + expect(result.length).toBeGreaterThan(0) + expect(result[0]).toHaveProperty("name") + expect(result[0]).toHaveProperty("twitterURL") + } + }) + + it("should return error when Google Sheets ID is not set", async () => { + delete process.env.GOOGLE_SHEET_ID_DAPPS + + const result = await fetchCommunityPicks() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toBe("Google Sheets ID not set") + } + }) + + it("should return error when Google API key is not set", async () => { + delete process.env.GOOGLE_API_KEY + + const result = await fetchCommunityPicks() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toBe("Google API key not set") + } + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 400, + statusText: "Bad Request", + }) + + const result = await fetchCommunityPicks() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Failed to fetch community picks") + } + }) + + it("should filter out empty rows", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + values: [ + ["Name", "Twitter URL"], + ["John Doe", "https://twitter.com/john"], + ["", ""], // Empty row + ["Jane Doe", "https://twitter.com/jane"], + ], + }), + }) + + const result = await fetchCommunityPicks() + + if (Array.isArray(result)) { + expect(result).toHaveLength(2) + expect(result[0].name).toBe("John Doe") + expect(result[1].name).toBe("Jane Doe") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchCommunityPicks() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchEthPrice.test.ts b/src/lib/api/__tests__/fetchEthPrice.test.ts new file mode 100644 index 00000000000..889080547d7 --- /dev/null +++ b/src/lib/api/__tests__/fetchEthPrice.test.ts @@ -0,0 +1,51 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchEthPrice } from "../fetchEthPrice" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchEthPrice", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return number on success", async () => { + const mockData = await loadMockDataFile<{ + value: number + timestamp: number + }>("ethPrice.json") + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + ethereum: { + usd: mockData.value, + }, + }), + }) + + const result = await fetchEthPrice() + + expect(typeof result).toBe("number") + expect(result).toBe(mockData.value) + }) + + it("should throw error when USD price is missing", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + ethereum: {}, + }), + }) + + await expect(fetchEthPrice()).rejects.toThrow( + "Unable to fetch ETH price from CoinGecko" + ) + }) + + it("should handle network errors", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + await expect(fetchEthPrice()).rejects.toThrow("Network error") + }) +}) diff --git a/src/lib/api/__tests__/fetchEthereumMarketcap.test.ts b/src/lib/api/__tests__/fetchEthereumMarketcap.test.ts new file mode 100644 index 00000000000..271496d4b0c --- /dev/null +++ b/src/lib/api/__tests__/fetchEthereumMarketcap.test.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchEthereumMarketcap } from "../fetchEthereumMarketcap" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchEthereumMarketcap", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return number on success", async () => { + const mockData = await loadMockDataFile<{ + value: number + timestamp: number + }>("ethereumMarketcap.json") + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + ethereum: { + usd_market_cap: mockData.value, + }, + }), + }) + + const result = await fetchEthereumMarketcap() + + expect(typeof result).toBe("number") + expect(result).toBe(mockData.value) + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + }) + + const result = await fetchEthereumMarketcap() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("status 500") + } + }) + + it("should return error when market cap is missing", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + ethereum: {}, + }), + }) + + const result = await fetchEthereumMarketcap() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Unable to fetch ETH market cap") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchEthereumMarketcap() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchEthereumStablecoinsMcap.test.ts b/src/lib/api/__tests__/fetchEthereumStablecoinsMcap.test.ts new file mode 100644 index 00000000000..aafe6cd784a --- /dev/null +++ b/src/lib/api/__tests__/fetchEthereumStablecoinsMcap.test.ts @@ -0,0 +1,77 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchEthereumStablecoinsMcap } from "../fetchEthereumStablecoinsMcap" + +describe("fetchEthereumStablecoinsMcap", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => [ + { + gecko_id: "ethereum", + totalCirculatingUSD: { + usdt: 50000000000, + usdc: 30000000000, + }, + }, + { + gecko_id: "other", + totalCirculatingUSD: {}, + }, + ], + }) + + const result = await fetchEthereumStablecoinsMcap() + + expect(typeof result).toBe("number") + expect(result).toBe(80000000000) // Sum of usdt + usdc + }) + + it("should return error when Ethereum data not found", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => [ + { + gecko_id: "other", + totalCirculatingUSD: {}, + }, + ], + }) + + const result = await fetchEthereumStablecoinsMcap() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Ethereum stablecoin data not found") + } + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + }) + + const result = await fetchEthereumStablecoinsMcap() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("500") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchEthereumStablecoinsMcap() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchFrameworkGitHubData.test.ts b/src/lib/api/__tests__/fetchFrameworkGitHubData.test.ts new file mode 100644 index 00000000000..b30d3ab61da --- /dev/null +++ b/src/lib/api/__tests__/fetchFrameworkGitHubData.test.ts @@ -0,0 +1,180 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchFrameworkGitHubData } from "../fetchFrameworkGitHubData" + +import { loadMockDataFile } from "./testHelpers" + +// Mock frameworksListData - use actual frameworks from mock data +vi.mock("@/data/frameworks/frameworks-data", () => ({ + frameworksListData: [ + { + id: "hardhat", + githubUrl: "https://github.com/nomicfoundation/hardhat", + }, + { + id: "foundry", + githubUrl: "https://github.com/foundry-rs/foundry", + }, + ], +})) + +describe("fetchFrameworkGitHubData", () => { + beforeEach(() => { + vi.clearAllMocks() + process.env.GITHUB_TOKEN_READ_ONLY = "test-token" + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ + value: Record< + string, + { + starCount: number + languages: string[] + } + > + }>("frameworkGitHubData.json") + + // Create fetch mocks based on actual frameworks in mock data + const frameworks = Object.keys(mockData.value) + const fetchMocks: Array> = [] + + frameworks.forEach((frameworkId) => { + const frameworkData = mockData.value[frameworkId] + // Mock repo info endpoint + fetchMocks.push( + Promise.resolve({ + ok: true, + json: async () => ({ + stargazers_count: frameworkData.starCount, + }), + } as Response) + ) + // Mock languages endpoint + const languagesObj = frameworkData.languages.reduce( + (acc, lang) => { + acc[lang] = 10000 // dummy byte count + return acc + }, + {} as Record + ) + fetchMocks.push( + Promise.resolve({ + ok: true, + json: async () => languagesObj, + } as Response) + ) + }) + + let callCount = 0 + global.fetch = vi.fn().mockImplementation(() => { + return ( + fetchMocks[callCount++] || Promise.resolve({ ok: false } as Response) + ) + }) + + const result = await fetchFrameworkGitHubData() + + expect(typeof result === "object" && !("error" in result)).toBe(true) + if (typeof result === "object" && !("error" in result)) { + expect(Object.keys(result).length).toBeGreaterThan(0) + const firstKey = Object.keys(result)[0] + expect(result[firstKey]).toHaveProperty("starCount") + expect(result[firstKey]).toHaveProperty("languages") + } + }) + + it("should filter out null repo data", async () => { + const mockData = await loadMockDataFile<{ + value: Record< + string, + { + starCount: number + languages: string[] + } + > + }>("frameworkGitHubData.json") + + // Mock first framework to fail, second to succeed + const frameworks = Object.keys(mockData.value) + const fetchMocks: Array> = [] + + // First framework fails + fetchMocks.push(Promise.resolve({ ok: false, status: 404 } as Response)) + fetchMocks.push(Promise.resolve({ ok: false, status: 404 } as Response)) + + // Second framework succeeds + if (frameworks.length > 1) { + const secondFramework = frameworks[1] + const secondFrameworkData = mockData.value[secondFramework] + fetchMocks.push( + Promise.resolve({ + ok: true, + json: async () => ({ + stargazers_count: secondFrameworkData.starCount, + }), + } as Response) + ) + const languagesObj = secondFrameworkData.languages.reduce( + (acc, lang) => { + acc[lang] = 10000 + return acc + }, + {} as Record + ) + fetchMocks.push( + Promise.resolve({ + ok: true, + json: async () => languagesObj, + } as Response) + ) + } + + let callCount = 0 + global.fetch = vi.fn().mockImplementation(() => { + return ( + fetchMocks[callCount++] || Promise.resolve({ ok: false } as Response) + ) + }) + + const result = await fetchFrameworkGitHubData() + + expect(typeof result === "object" && !("error" in result)).toBe(true) + if (typeof result === "object" && !("error" in result)) { + // Should not have the first framework (it failed) + expect(result).not.toHaveProperty(frameworks[0]) + // Should have at least one framework (the second one that succeeded) + if (frameworks.length > 1) { + // Check that we have at least one framework in the result + expect(Object.keys(result).length).toBeGreaterThan(0) + // The second framework should be in the result + const resultKeys = Object.keys(result) + expect(resultKeys.length).toBeGreaterThan(0) + } + } + }) + + it("should handle network errors gracefully", async () => { + // The function uses Promise.all which will reject if any promise rejects + // But the outer try-catch should catch it + // However, if Promise.all rejects, the error will be caught by the outer try-catch + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchFrameworkGitHubData() + + // When Promise.all rejects, the outer try-catch should catch it and return error + // But looking at the code, Promise.all will reject and the catch block should handle it + if (typeof result === "object" && "error" in result) { + expect(result.error).toBeDefined() + } else { + // If all individual fetches fail but Promise.all doesn't reject (unlikely), + // it would return empty object. Let's check for either case + expect(typeof result === "object").toBe(true) + // If it's an empty object, that's also acceptable behavior + if (typeof result === "object" && !("error" in result)) { + // This is acceptable - all repos failed but no error was thrown + expect(Object.keys(result).length).toBeGreaterThanOrEqual(0) + } + } + }) +}) diff --git a/src/lib/api/__tests__/fetchGFIs.test.ts b/src/lib/api/__tests__/fetchGFIs.test.ts new file mode 100644 index 00000000000..55328be814b --- /dev/null +++ b/src/lib/api/__tests__/fetchGFIs.test.ts @@ -0,0 +1,84 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import type { GHIssue } from "@/lib/types" + +import { fetchGFIs } from "../fetchGFIs" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchGFIs", () => { + beforeEach(() => { + vi.clearAllMocks() + process.env.GITHUB_TOKEN_READ_ONLY = "test-token" + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ value: GHIssue[] }>( + "gfissues.json" + ) + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => mockData.value, + }) + + const result = await fetchGFIs() + + expect(Array.isArray(result)).toBe(true) + if (Array.isArray(result)) { + expect(result.length).toBeGreaterThan(0) + expect(result[0]).toHaveProperty("title") + expect(result[0]).toHaveProperty("html_url") + } + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 403, + statusText: "Forbidden", + }) + + const result = await fetchGFIs() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("403") + } + }) + + it("should include Authorization header", async () => { + const mockFetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => [], + }) + global.fetch = mockFetch + + await fetchGFIs() + + expect(mockFetch).toHaveBeenCalled() + const callArgs = mockFetch.mock.calls[0] + expect(callArgs.length).toBeGreaterThanOrEqual(1) + // The second argument should be the options object with headers + if (callArgs.length > 1) { + expect(callArgs[1]).toHaveProperty("headers") + expect(callArgs[1].headers).toHaveProperty("Authorization") + expect(callArgs[1].headers.Authorization).toContain("token") + } else { + // If called with just URL, check if headers are in a different format + // Actually, fetch should always be called with URL and options + expect(callArgs.length).toBe(2) + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchGFIs() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchGrowThePie.test.ts b/src/lib/api/__tests__/fetchGrowThePie.test.ts new file mode 100644 index 00000000000..b96b67b5f04 --- /dev/null +++ b/src/lib/api/__tests__/fetchGrowThePie.test.ts @@ -0,0 +1,58 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import type { GrowThePieRawDataItem } from "@/lib/types" + +import { fetchGrowThePie } from "../fetchGrowThePie" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchGrowThePie", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ value: GrowThePieRawDataItem[] }>( + "growThePie.json" + ) + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => mockData.value, + }) + + const result = await fetchGrowThePie() + + expect(Array.isArray(result)).toBe(true) + if (Array.isArray(result)) { + expect(result.length).toBeGreaterThan(0) + expect(result[0]).toHaveProperty("date") + } + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + }) + + const result = await fetchGrowThePie() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Failed to fetch growthepie data") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchGrowThePie() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchGrowThePieBlockspace.test.ts b/src/lib/api/__tests__/fetchGrowThePieBlockspace.test.ts new file mode 100644 index 00000000000..dd474899980 --- /dev/null +++ b/src/lib/api/__tests__/fetchGrowThePieBlockspace.test.ts @@ -0,0 +1,185 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchGrowThePieBlockspace } from "../fetchGrowThePieBlockspace" + +import { loadMockDataFile } from "./testHelpers" + +// Mock GROWTHEPIE_IDS - use actual keys from mock data +vi.mock("@/data/networks/networks-data", () => ({ + GROWTHEPIE_IDS: [ + "arbitrum", + "base", + "optimism", + "zksync_era", + "linea", + "scroll", + "unichain", + ], +})) + +describe("fetchGrowThePieBlockspace", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ + value: Record< + string, + { + nft: number + defi: number + social: number + token_transfers: number + unlabeled: number + } + > + }>("growThePieBlockspace.json") + + // Convert mock data back to API format for each network + const networkKeys = Object.keys(mockData.value) + const fetchMocks = networkKeys.map((network) => { + const data = mockData.value[network] + return { + ok: true, + json: async () => ({ + overview: { + "30d": { + nft: { data: [0, 0, 0, 0, data.nft] }, + defi: { data: [0, 0, 0, 0, data.defi] }, + social: { data: [0, 0, 0, 0, data.social] }, + token_transfers: { data: [0, 0, 0, 0, data.token_transfers] }, + unlabeled: { data: [0, 0, 0, 0, data.unlabeled] }, + }, + }, + }), + } + }) + + global.fetch = vi.fn().mockImplementation(() => { + const mock = fetchMocks.shift() + return Promise.resolve(mock || { ok: false }) + }) + + const result = await fetchGrowThePieBlockspace() + + expect(typeof result === "object" && !("error" in result)).toBe(true) + if (typeof result === "object" && !("error" in result)) { + expect(result).toHaveProperty("arbitrum") + expect(result.arbitrum).toHaveProperty("nft") + expect(result.arbitrum).toHaveProperty("defi") + } + }) + + it("should continue with other networks if one fails", async () => { + const mockData = await loadMockDataFile<{ + value: Record< + string, + { + nft: number + defi: number + social: number + token_transfers: number + unlabeled: number + } + > + }>("growThePieBlockspace.json") + + const networkKeys = Object.keys(mockData.value) + const firstNetwork = networkKeys[0] + const secondNetwork = networkKeys[1] || networkKeys[0] + + // First network fails, second succeeds + const fetchMocks = [ + Promise.resolve({ ok: false, status: 404 } as Response), + Promise.resolve({ + ok: true, + json: async () => { + const data = mockData.value[secondNetwork] + return { + overview: { + "30d": { + nft: { data: [0, 0, 0, 0, data.nft] }, + defi: { data: [0, 0, 0, 0, data.defi] }, + social: { data: [0, 0, 0, 0, data.social] }, + token_transfers: { data: [0, 0, 0, 0, data.token_transfers] }, + unlabeled: { data: [0, 0, 0, 0, data.unlabeled] }, + }, + }, + } + }, + } as Response), + ] + + let callCount = 0 + global.fetch = vi.fn().mockImplementation(() => { + return ( + fetchMocks[callCount++] || Promise.resolve({ ok: false } as Response) + ) + }) + + const result = await fetchGrowThePieBlockspace() + + expect(result).toHaveProperty(secondNetwork) + expect(result).not.toHaveProperty(firstNetwork) + }) + + it("should handle missing social data", async () => { + const mockData = await loadMockDataFile<{ + value: Record< + string, + { + nft: number + defi: number + social: number + token_transfers: number + unlabeled: number + } + > + }>("growThePieBlockspace.json") + + const networkKeys = Object.keys(mockData.value) + const testNetwork = networkKeys[0] + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => { + const data = mockData.value[testNetwork] + return { + overview: { + "30d": { + nft: { data: [0, 0, 0, 0, data.nft] }, + defi: { data: [0, 0, 0, 0, data.defi] }, + social: { data: null }, // Missing social data + token_transfers: { data: [0, 0, 0, 0, data.token_transfers] }, + unlabeled: { data: [0, 0, 0, 0, data.unlabeled] }, + }, + }, + } + }, + }) + + const result = await fetchGrowThePieBlockspace() + + expect(result[testNetwork].social).toBe(0) + }) + + it("should return error format on complete failure", async () => { + // Mock fetch to throw on the outer try-catch (before the loop) + // This is tricky because the function has a try-catch around the whole thing + // but individual network failures are caught inside the loop + // To trigger the outer catch, we need to throw before the loop starts + // Actually, looking at the code, if all networks fail individually, it returns empty object + // Only if there's an error before the loop (like GROWTHEPIE_IDS being undefined) would it error + // Let's test the actual behavior - when all networks fail, it returns empty object + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + }) + + const result = await fetchGrowThePieBlockspace() + + // When all networks fail, function returns empty object, not error + expect(Object.keys(result)).toHaveLength(0) + }) +}) diff --git a/src/lib/api/__tests__/fetchGrowThePieMaster.test.ts b/src/lib/api/__tests__/fetchGrowThePieMaster.test.ts new file mode 100644 index 00000000000..09392d0f10f --- /dev/null +++ b/src/lib/api/__tests__/fetchGrowThePieMaster.test.ts @@ -0,0 +1,83 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchGrowThePieMaster } from "../fetchGrowThePieMaster" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchGrowThePieMaster", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ + value: Record + }>("growThePieMaster.json") + + // Convert mock data back to API format + const chains = Object.entries(mockData.value).reduce( + (acc, [key, launchDate]) => { + if (launchDate) { + acc[key] = { + url_key: key, + launch_date: launchDate, + } + } + return acc + }, + {} as Record + ) + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ chains }), + }) + + const result = await fetchGrowThePieMaster() + + expect(typeof result === "object" && !("error" in result)).toBe(true) + if (typeof result === "object" && !("error" in result)) { + expect(result).toHaveProperty("ethereum") + expect(result.ethereum).toBe("2015-07-30") + } + }) + + it("should transform chains data to launch dates record", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => ({ + chains: { + test: { + url_key: "test", + launch_date: "2020-01-01", + }, + }, + }), + }) + + const result = await fetchGrowThePieMaster() + + expect(result).toEqual({ test: "2020-01-01" }) + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + }) + + const result = await fetchGrowThePieMaster() + + expect(result).toHaveProperty("error") + expect(result.error).toContain("500") + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchGrowThePieMaster() + + expect(result).toHaveProperty("error") + expect(result.error).toContain("Network error") + }) +}) diff --git a/src/lib/api/__tests__/fetchL2beat.test.ts b/src/lib/api/__tests__/fetchL2beat.test.ts new file mode 100644 index 00000000000..2d925d43eb4 --- /dev/null +++ b/src/lib/api/__tests__/fetchL2beat.test.ts @@ -0,0 +1,55 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import type { L2beatResponse } from "@/lib/types" + +import { fetchL2beat } from "../fetchL2beat" + +import { loadMockDataFile } from "./testHelpers" + +describe("fetchL2beat", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData = await loadMockDataFile<{ value: L2beatResponse }>( + "l2beatData.json" + ) + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => mockData.value, + }) + + const result = await fetchL2beat() + + expect(result).toHaveProperty("projects") + expect(result).toHaveProperty("chart") + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + }) + + const result = await fetchL2beat() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("500") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchL2beat() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchStablecoinsData.test.ts b/src/lib/api/__tests__/fetchStablecoinsData.test.ts new file mode 100644 index 00000000000..74ff8250540 --- /dev/null +++ b/src/lib/api/__tests__/fetchStablecoinsData.test.ts @@ -0,0 +1,61 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import type { CoinGeckoCoinMarketItem } from "@/lib/types" + +import { fetchStablecoinsData } from "../fetchStablecoinsData" + +describe("fetchStablecoinsData", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + const mockData: CoinGeckoCoinMarketItem[] = [ + { + id: "tether", + symbol: "usdt", + name: "Tether", + market_cap: 100000000000, + image: "https://example.com/tether.png", + }, + ] + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => mockData, + }) + + const result = await fetchStablecoinsData() + + expect(Array.isArray(result)).toBe(true) + if (Array.isArray(result)) { + expect(result).toEqual(mockData) + } + }) + + it("should return error format on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 429, + statusText: "Too Many Requests", + }) + + const result = await fetchStablecoinsData() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("429") + } + }) + + it("should handle network errors gracefully", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + const result = await fetchStablecoinsData() + + expect(typeof result === "object" && "error" in result).toBe(true) + if (typeof result === "object" && "error" in result) { + expect(result.error).toContain("Network error") + } + }) +}) diff --git a/src/lib/api/__tests__/fetchTotalValueLocked.test.ts b/src/lib/api/__tests__/fetchTotalValueLocked.test.ts new file mode 100644 index 00000000000..b3bb6bc2523 --- /dev/null +++ b/src/lib/api/__tests__/fetchTotalValueLocked.test.ts @@ -0,0 +1,43 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { fetchTotalValueLocked } from "../fetchTotalValueLocked" + +describe("fetchTotalValueLocked", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should return ExternalDataReturnData format on success", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: async () => [ + { totalLiquidityUSD: 1000000 }, + { totalLiquidityUSD: 2000000 }, + { totalLiquidityUSD: 3000000 }, // Latest value + ], + }) + + const result = await fetchTotalValueLocked() + + expect(typeof result).toBe("number") + expect(result).toBe(3000000) // Should use last value + }) + + it("should throw error on API failure", async () => { + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + }) + + await expect(fetchTotalValueLocked()).rejects.toThrow( + "Failed to fetch Defi Llama TVL data" + ) + }) + + it("should handle network errors", async () => { + global.fetch = vi.fn().mockRejectedValue(new Error("Network error")) + + await expect(fetchTotalValueLocked()).rejects.toThrow("Network error") + }) +}) diff --git a/src/lib/api/__tests__/testHelpers.ts b/src/lib/api/__tests__/testHelpers.ts new file mode 100644 index 00000000000..a1123fa7bfe --- /dev/null +++ b/src/lib/api/__tests__/testHelpers.ts @@ -0,0 +1,13 @@ +import fs from "fs/promises" +import path from "path" + +const MOCK_DATA_DIR = path.resolve("src/data/mocks") + +/** + * Helper to load mock data from JSON files for testing + */ +export async function loadMockDataFile(filename: string): Promise { + const filePath = path.join(MOCK_DATA_DIR, filename) + const content = await fs.readFile(filePath, "utf-8") + return JSON.parse(content) as T +} diff --git a/src/lib/api/fetchApps.ts b/src/lib/api/fetchApps.ts index e49f898e61e..66ed00f5963 100644 --- a/src/lib/api/fetchApps.ts +++ b/src/lib/api/fetchApps.ts @@ -1,15 +1,22 @@ -import { AppCategoryEnum, AppData } from "@/lib/types" +import type { AppData } from "@/lib/types" +import { AppCategoryEnum } from "@/lib/types" -export async function fetchApps(): Promise> { +export const fetchApps = async (): Promise< + Record | { error: string } +> => { const googleApiKey = process.env.GOOGLE_API_KEY const sheetId = process.env.GOOGLE_SHEET_ID_DAPPS if (!sheetId) { - throw new Error("Google Sheets ID not set") + return { + error: "Google Sheets ID not set", + } } if (!googleApiKey) { - throw new Error("Google API key not set") + return { + error: "Google API key not set", + } } try { @@ -130,7 +137,12 @@ export async function fetchApps(): Promise> { return result } catch (error) { console.error("Error fetching from Google Sheets:", error) - return {} + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch apps from Google Sheets", + } } } diff --git a/src/lib/api/fetchPosts.ts b/src/lib/api/fetchAttestantPosts.ts similarity index 78% rename from src/lib/api/fetchPosts.ts rename to src/lib/api/fetchAttestantPosts.ts index 827379ee217..d71de551399 100644 --- a/src/lib/api/fetchPosts.ts +++ b/src/lib/api/fetchAttestantPosts.ts @@ -1,10 +1,11 @@ -import type { HTMLResult, RSSItem } from "../types" +import type { HTMLResult, RSSItem } from "@/lib/types" import { fetchXml } from "./fetchRSS" -export const fetchAttestantPosts = async () => { +export const fetchAttestantPosts = async (): Promise< + RSSItem[] | { error: string } +> => { const BASE_URL = "https://www.attestant.io/posts/" - const allItems: RSSItem[] = [] try { const htmlData = (await fetchXml(BASE_URL)) as HTMLResult @@ -38,13 +39,18 @@ export const fetchAttestantPosts = async () => { (a: RSSItem, b: RSSItem) => new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime() ) - allItems.push(...sortedPosts) + + return sortedPosts } catch (error) { console.error( "Error fetching Attestant posts:", error instanceof Error ? error.message : error ) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch Attestant posts", + } } - - return allItems } diff --git a/src/lib/api/fetchBeaconchainEpoch.ts b/src/lib/api/fetchBeaconchainEpoch.ts index fb908d211ed..3befcddaa17 100644 --- a/src/lib/api/fetchBeaconchainEpoch.ts +++ b/src/lib/api/fetchBeaconchainEpoch.ts @@ -1,62 +1,18 @@ -import type { BeaconchainEpochData, EpochResponse } from "@/lib/types" +import type { EpochResponse } from "@/lib/types" -import { MAX_RETRIES } from "../constants" -import { - delayWithJitter, - fetchWithTimeoutAndRevalidation, - shouldStatusRetry, - sleep, -} from "../utils/data/utils" - -export const fetchBeaconchainEpoch = - async (): Promise => { - const base = "https://beaconcha.in" - const endpoint = "api/v1/epoch/latest" - const { href } = new URL(endpoint, base) - - const defaultErrorMessage = `Failed to fetch Beaconcha.in ${endpoint}` - const defaultError: BeaconchainEpochData = { - totalEthStaked: { error: defaultErrorMessage }, - validatorscount: { error: defaultErrorMessage }, - } - - for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) { - try { - const response = await fetchWithTimeoutAndRevalidation(href) - if (!response.ok) { - const status = response.status - const shouldRetry = attempt < MAX_RETRIES && shouldStatusRetry(status) - if (shouldRetry) { - await sleep(delayWithJitter()) - continue - } - console.warn("Beaconcha.in fetch non-OK", { status, url: href }) - const error = `Beaconcha.in responded with status ${status}` - return { totalEthStaked: { error }, validatorscount: { error } } - } - const json: EpochResponse = await response.json() - const { validatorscount, eligibleether } = json.data - const totalEthStaked = Math.floor(eligibleether * 1e-9) // `eligibleether` value returned in `gwei` - const timestamp = Date.now() - return { - totalEthStaked: { value: totalEthStaked, timestamp }, - validatorscount: { value: validatorscount, timestamp }, - } - } catch (err: unknown) { - const isLastAttempt = attempt >= MAX_RETRIES - if (isLastAttempt) { - console.error("Beaconcha.in fetch failed", { - name: err instanceof Error ? err.name : undefined, - message: err instanceof Error ? err.message : String(err), - url: href, - }) - return defaultError - } - await sleep(delayWithJitter()) - } - } - - return defaultError +export const fetchBeaconchainEpoch = async (): Promise<{ + totalEthStaked: number + validatorscount: number +}> => { + const response = await fetch("https://beaconcha.in/api/v1/epoch/latest") + if (!response.ok) { + throw new Error("Failed to fetch Beaconcha.in epoch data") } - -export default fetchBeaconchainEpoch + const json: EpochResponse = await response.json() + const { validatorscount, eligibleether } = json.data + const totalEthStaked = Math.floor(eligibleether * 1e-9) // `eligibleether` value returned in `gwei` + return { + totalEthStaked, + validatorscount, + } +} diff --git a/src/lib/api/fetchBeaconchainEthstore.ts b/src/lib/api/fetchBeaconchainEthstore.ts index 3efd90e66ce..a8ffc63008b 100644 --- a/src/lib/api/fetchBeaconchainEthstore.ts +++ b/src/lib/api/fetchBeaconchainEthstore.ts @@ -1,50 +1,38 @@ -import type { EthStoreResponse, MetricReturnData } from "@/lib/types" +import type { EthStoreResponse } from "@/lib/types" -import { MAX_RETRIES } from "../constants" -import { - delayWithJitter, - fetchWithTimeoutAndRevalidation, - shouldStatusRetry, - sleep, -} from "../utils/data/utils" - -export const fetchBeaconchainEthstore = async (): Promise => { +export const fetchBeaconchainEthstore = async (): Promise< + number | { error: string } +> => { const base = "https://beaconcha.in" const endpoint = "api/v1/ethstore/latest" const { href } = new URL(endpoint, base) - for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) { - try { - const response = await fetchWithTimeoutAndRevalidation(href) - if (!response.ok) { - const status = response.status - const shouldRetry = attempt < MAX_RETRIES && shouldStatusRetry(status) - if (shouldRetry) { - await sleep(delayWithJitter()) - continue - } - console.warn("Beaconcha.in fetch non-OK", { status, url: href }) - return { error: `Beaconcha.in responded with status ${status}` } + try { + const response = await fetch(href) + if (!response.ok) { + console.error("Beaconcha.in fetch non-OK", { + status: response.status, + url: href, + }) + return { + error: `Beaconcha.in responded with status ${response.status}`, } + } - const json: EthStoreResponse = await response.json() - const apr = json.data.apr - return { value: apr, timestamp: Date.now() } - } catch (err: unknown) { - const isLastAttempt = attempt >= MAX_RETRIES - if (isLastAttempt) { - console.error("Beaconcha.in fetch failed", { - name: err instanceof Error ? err.name : undefined, - message: err instanceof Error ? err.message : String(err), - url: href, - }) - return { error: `Failed to fetch Beaconcha.in ${endpoint}` } - } - await sleep(delayWithJitter()) + const json: EthStoreResponse = await response.json() + const apr = json.data.apr + return apr + } catch (err: unknown) { + console.error("Beaconcha.in fetch failed", { + name: err instanceof Error ? err.name : undefined, + message: err instanceof Error ? err.message : String(err), + url: href, + }) + return { + error: + err instanceof Error + ? err.message + : "Failed to fetch Beaconcha.in ethstore", } } - - return { error: "Failed to fetch Beaconcha.in ethstore" } } - -export default fetchBeaconchainEthstore diff --git a/src/lib/api/calendarEvents.ts b/src/lib/api/fetchCalendarEvents.ts similarity index 51% rename from src/lib/api/calendarEvents.ts rename to src/lib/api/fetchCalendarEvents.ts index 6caade5be02..0f180bb46e6 100644 --- a/src/lib/api/calendarEvents.ts +++ b/src/lib/api/fetchCalendarEvents.ts @@ -1,9 +1,9 @@ -import type { - CommunityEventsReturnType, - ReqCommunityEvent, -} from "@/lib/interfaces" +import type { CommunityEvent, ReqCommunityEvent } from "@/lib/interfaces" -export async function fetchCommunityEvents(): Promise { +export const fetchCalendarEvents = async (): Promise<{ + pastEvents: CommunityEvent[] + upcomingEvents: CommunityEvent[] +}> => { const apiKey = process.env.GOOGLE_API_KEY const calendarId = process.env.GOOGLE_CALENDAR_ID @@ -19,29 +19,20 @@ export async function fetchCommunityEvents(): Promise const pastEvents = await pastEventsReq.json() const pastEventsReqData: ReqCommunityEvent[] = pastEvents.items - const pastEventData = (pastEventsReqData ?? []) - .filter((event) => event.start) - .slice(-4) - .map((event) => { - return { - date: event.start.dateTime, - title: event.summary, - calendarLink: event.htmlLink, - } + const pastEventData: CommunityEvent[] = pastEventsReqData.map((event) => ({ + date: event.start.dateTime, + title: event.summary, + calendarLink: event.htmlLink, + })) + const upcomingEventData: CommunityEvent[] = futureEventsReqData.map( + (event) => ({ + date: event.start.dateTime, + title: event.summary, + calendarLink: event.htmlLink, }) - const upcomingEventData = (futureEventsReqData ?? []) - .filter((event) => event.start) - .reverse() - .map((event) => { - return { - date: event.start.dateTime, - title: event.summary, - calendarLink: event.htmlLink, - } - }) - + ) return { - pastEventData, - upcomingEventData, + pastEvents: pastEventData, + upcomingEvents: upcomingEventData, } } diff --git a/src/lib/api/fetchCommunityPicks.ts b/src/lib/api/fetchCommunityPicks.ts index 6b34719ba44..86a3dac959e 100644 --- a/src/lib/api/fetchCommunityPicks.ts +++ b/src/lib/api/fetchCommunityPicks.ts @@ -1,41 +1,65 @@ -import { CommunityPick } from "@/lib/types" +import type { CommunityPick } from "@/lib/types" -export async function fetchCommunityPicks() { +export const fetchCommunityPicks = async (): Promise< + CommunityPick[] | { error: string } +> => { const googleApiKey = process.env.GOOGLE_API_KEY const sheetId = process.env.GOOGLE_SHEET_ID_DAPPS if (!sheetId) { - throw new Error("Google Sheets ID not set") + return { + error: "Google Sheets ID not set", + } } if (!googleApiKey) { - throw new Error("Google API key not set") + return { + error: "Google API key not set", + } } - const response = await fetch( - `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/community_picks!A:Z?majorDimension=ROWS&key=${googleApiKey}` - ) - if (!response.ok) { - throw new Error("Failed to fetch community picks") - } + try { + const response = await fetch( + `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/community_picks!A:Z?majorDimension=ROWS&key=${googleApiKey}` + ) + + if (!response.ok) { + console.error( + "Failed to fetch community picks:", + response.status, + response.statusText + ) + return { + error: `Failed to fetch community picks: ${response.status} ${response.statusText}`, + } + } + + const data = await response.json() + const rows = data.values || [] - const data = await response.json() - const rows = data.values || [] - - // Process data rows (skip header) - const dataRows = rows.slice(1).filter((row: string[]) => { - // Filter out completely empty rows or rows without a name - return row.length > 0 && row[0]?.trim() !== "" - }) - - const communityPicks: CommunityPick[] = dataRows.map((row: string[]) => ({ - name: row[0], - twitterURL: row[1], - twitterHandle: row[2], - app1Name: row[3] || null, - app2Name: row[4] || null, - app3Name: row[5] || null, - })) - - return communityPicks + // Process data rows (skip header) + const dataRows = rows.slice(1).filter((row: string[]) => { + // Filter out completely empty rows or rows without a name + return row.length > 0 && row[0]?.trim() !== "" + }) + + const communityPicks: CommunityPick[] = dataRows.map((row: string[]) => ({ + name: row[0], + twitterURL: row[1], + twitterHandle: row[2], + app1Name: row[3] || null, + app2Name: row[4] || null, + app3Name: row[5] || null, + })) + + return communityPicks + } catch (error) { + console.error("Error fetching community picks:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch community picks", + } + } } diff --git a/src/lib/api/fetchEthPrice.ts b/src/lib/api/fetchEthPrice.ts index 96fd381fbd0..234a4bf3a7c 100644 --- a/src/lib/api/fetchEthPrice.ts +++ b/src/lib/api/fetchEthPrice.ts @@ -1,6 +1,4 @@ -import { MetricReturnData } from "../types" - -export const fetchEthPrice = async (): Promise => { +export const fetchEthPrice = async (): Promise => { const data: { ethereum: { usd: number } } = await fetch( "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd" ).then((res) => res.json()) @@ -8,5 +6,5 @@ export const fetchEthPrice = async (): Promise => { ethereum: { usd }, } = data if (!usd) throw new Error("Unable to fetch ETH price from CoinGecko") - return { value: usd, timestamp: Date.now() } + return usd } diff --git a/src/lib/api/fetchEthereumMarketcap.ts b/src/lib/api/fetchEthereumMarketcap.ts index ca702f30228..fa962923ee9 100644 --- a/src/lib/api/fetchEthereumMarketcap.ts +++ b/src/lib/api/fetchEthereumMarketcap.ts @@ -1,13 +1,40 @@ -import { MetricReturnData } from "../types" - -export const fetchEthereumMarketcap = async (): Promise => { - const data: { ethereum: { usd_market_cap: number } } = await fetch( - "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd&include_market_cap=true" - ).then((res) => res.json()) - const { - ethereum: { usd_market_cap }, - } = data - if (!usd_market_cap) - throw new Error("Unable to fetch ETH price from CoinGecko") - return { value: usd_market_cap, timestamp: Date.now() } +export const fetchEthereumMarketcap = async (): Promise< + number | { error: string } +> => { + try { + const response = await fetch( + "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd&include_market_cap=true" + ) + + if (!response.ok) { + console.error("CoinGecko fetch non-OK", { + status: response.status, + statusText: response.statusText, + }) + return { + error: `CoinGecko responded with status ${response.status}`, + } + } + + const data: { ethereum: { usd_market_cap: number } } = await response.json() + const { + ethereum: { usd_market_cap }, + } = data + + if (!usd_market_cap) { + return { + error: "Unable to fetch ETH market cap from CoinGecko", + } + } + + return usd_market_cap + } catch (error) { + console.error("Error fetching Ethereum market cap:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch Ethereum market cap", + } + } } diff --git a/src/lib/api/fetchEthereumStablecoinsMcap.ts b/src/lib/api/fetchEthereumStablecoinsMcap.ts index 2366397444f..9b359a59dea 100644 --- a/src/lib/api/fetchEthereumStablecoinsMcap.ts +++ b/src/lib/api/fetchEthereumStablecoinsMcap.ts @@ -1,5 +1,3 @@ -import { MetricReturnData } from "../types" - export type LlamaStablecoinchainsResponseItem = { gecko_id: string | null totalCirculatingUSD: Record @@ -7,32 +5,47 @@ export type LlamaStablecoinchainsResponseItem = { name: string } -export async function fetchEthereumStablecoinsMcap(): Promise { +export const fetchEthereumStablecoinsMcap = async (): Promise< + number | { error: string } +> => { const url = "https://stablecoins.llama.fi/stablecoinchains" try { const response = await fetch(url) + if (!response.ok) { - console.log(response.status, response.statusText) - throw new Error("Failed to fetch llama.fi stablecoin mcap data") + console.error("Llama.fi fetch non-OK", { + status: response.status, + statusText: response.statusText, + url, + }) + return { + error: `Llama.fi responded with status ${response.status}`, + } } + const data: LlamaStablecoinchainsResponseItem[] = await response.json() const ethereumData = data.find(({ gecko_id }) => gecko_id === "ethereum") - if (!ethereumData) throw new Error("Ethereum stablecoin data not found") + if (!ethereumData) { + return { + error: "Ethereum stablecoin data not found", + } + } const value = Object.values(ethereumData.totalCirculatingUSD).reduce( - (acc, value) => acc + value, + (acc, val) => acc + val, 0 ) - return { value } + return value } catch (error) { - // Will not currently break build; passes back error key - console.error(error) + console.error("Error fetching Ethereum stablecoins market cap:", error) return { error: - "Something went wrong with requesting the Ethereum stablecoins data.", + error instanceof Error + ? error.message + : "Failed to fetch Ethereum stablecoins market cap", } } } diff --git a/src/lib/api/fetchFrameworkGitHubData.ts b/src/lib/api/fetchFrameworkGitHubData.ts new file mode 100644 index 00000000000..cf8b38cae23 --- /dev/null +++ b/src/lib/api/fetchFrameworkGitHubData.ts @@ -0,0 +1,81 @@ +import type { FrameworkGitHubData, FrameworkRepoData } from "@/lib/types" + +import { frameworksListData } from "@/data/frameworks/frameworks-data" + +const ghRepoData = async ( + githubUrl: string +): Promise => { + try { + const split = githubUrl.split("/") + const repoOwner = split[split.length - 2] + const repoName = split[split.length - 1] + + const [repoReq, languageReq] = await Promise.all([ + fetch(`https://api.github.com/repos/${repoOwner}/${repoName}`, { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN_READ_ONLY}`, + }, + }), + fetch(`https://api.github.com/repos/${repoOwner}/${repoName}/languages`, { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN_READ_ONLY}`, + }, + }), + ]) + + if (!repoReq.ok || !languageReq.ok) { + console.error("GitHub API error", { + repo: `${repoOwner}/${repoName}`, + repoStatus: repoReq.status, + languageStatus: languageReq.status, + }) + return null + } + + const repoData = await repoReq.json() + const languageData = await languageReq.json() + + return { + starCount: repoData.stargazers_count || 0, + languages: Object.keys(languageData), + } + } catch (error) { + console.error("Error fetching GitHub repo data:", error) + return null + } +} + +export const fetchFrameworkGitHubData = async (): Promise< + FrameworkGitHubData | { error: string } +> => { + try { + // Fetch GitHub data for all frameworks in parallel + const githubDataPromises = frameworksListData.map(async (framework) => { + const repoData = await ghRepoData(framework.githubUrl) + return { + frameworkId: framework.id, + data: repoData, + } + }) + + const results = await Promise.all(githubDataPromises) + + // Build the result object, filtering out null values + const frameworkGitHubData: FrameworkGitHubData = {} + for (const result of results) { + if (result.data) { + frameworkGitHubData[result.frameworkId] = result.data + } + } + + return frameworkGitHubData + } catch (error) { + console.error("Error fetching framework GitHub data:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch framework GitHub data", + } + } +} diff --git a/src/lib/api/fetchGFIs.ts b/src/lib/api/fetchGFIs.ts index 61887717771..c30c3ca38ed 100644 --- a/src/lib/api/fetchGFIs.ts +++ b/src/lib/api/fetchGFIs.ts @@ -1,10 +1,10 @@ -import type { GHIssue } from "../types" +import type { GHIssue } from "@/lib/types" const owner = "ethereum" const repo = "ethereum-org-website" const label = "good first issue" -export const fetchGFIs = async () => { +export const fetchGFIs = async (): Promise => { const url = new URL(`https://api.github.com/repos/${owner}/${repo}/issues`) url.searchParams.append("labels", label) url.searchParams.append("state", "open") @@ -22,14 +22,26 @@ export const fetchGFIs = async () => { }) if (!response.ok) { - throw new Error( - `GitHub API responded with ${response.status}: ${response.statusText}` - ) + console.error("GitHub API fetch non-OK", { + status: response.status, + statusText: response.statusText, + url: url.toString(), + }) + return { + error: `GitHub API responded with ${response.status}: ${response.statusText}`, + } } - return (await response.json()) as GHIssue[] + const issues = (await response.json()) as GHIssue[] + + return issues } catch (error) { - console.error(error) - return [] + console.error("Error fetching GitHub good first issues:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch GitHub good first issues", + } } } diff --git a/src/lib/api/fetchGrowThePie.ts b/src/lib/api/fetchGrowThePie.ts index 8acc8c4d15c..0676bd6461b 100644 --- a/src/lib/api/fetchGrowThePie.ts +++ b/src/lib/api/fetchGrowThePie.ts @@ -1,89 +1,33 @@ -import type { GrowThePieData } from "@/lib/types" +import type { GrowThePieRawDataItem } from "@/lib/types" -import { layer2Data } from "@/data/networks/networks" - -type DataItem = { - metric_key: string - origin_key: string - date: string - value: number -} - -const TXCOSTS_MEDIAN_USD = "txcosts_median_usd" -const TXCOUNT = "txcount" -const ACTIVE_ADDRESSES = "aa_last7d" - -export const fetchGrowThePie = async (): Promise => { +export const fetchGrowThePie = async (): Promise< + GrowThePieRawDataItem[] | { error: string } +> => { const url = "https://api.growthepie.com/v1/fundamentals_7d.json" - const response = await fetch(url) - if (!response.ok) { - console.log(response.status, response.statusText) - throw new Error("Failed to fetch growthepie data") - } - const data: DataItem[] = await response.json() - - // Filter data to only include the metrics we need - const filteredData = data.filter((item) => - [TXCOSTS_MEDIAN_USD, TXCOUNT, ACTIVE_ADDRESSES].includes(item.metric_key) - ) - - const mostRecentDate = filteredData.reduce((latest, item) => { - const itemDate = new Date(item.date) - return itemDate > new Date(latest) ? item.date : latest - }, filteredData[0].date) - - const activeAddresses = filteredData - .filter((item) => item.date === mostRecentDate) - .filter((item) => item.metric_key === ACTIVE_ADDRESSES) - .reduce((acc, item) => { - return { - ...acc, - [item.origin_key]: item.value, - } - }, {}) - - const mostRecentData = filteredData.filter( - (item) => - item.date === mostRecentDate && - [TXCOSTS_MEDIAN_USD, TXCOUNT].includes(item.metric_key) - ) - - let totalTxCount = 0 - let weightedSum = 0 - - mostRecentData - .filter((item) => - layer2Data.some((l2) => l2.growthepieID === item.origin_key) - ) - .forEach((item) => { - if (item.metric_key !== TXCOSTS_MEDIAN_USD) return - - const txCountItem = mostRecentData.find( - (txItem) => - txItem.metric_key === TXCOUNT && txItem.origin_key === item.origin_key + try { + const response = await fetch(url) + if (!response.ok) { + console.error( + "GrowThePie fetch error:", + response.status, + response.statusText ) - if (!txCountItem) return - - totalTxCount += txCountItem.value - weightedSum += item.value * txCountItem.value - }) - - // The weighted average of txcosts_median_usd, by txcount on each network (origin_key) - const weightedAverage = totalTxCount ? weightedSum / totalTxCount : 0 - - // Last updated timestamp - const timestamp = Date.now() - - return { - txCount: { value: totalTxCount, timestamp }, - txCostsMedianUsd: { value: weightedAverage, timestamp }, - dailyTxCosts: mostRecentData - .filter((item) => item.metric_key === TXCOSTS_MEDIAN_USD) - .reduce((acc, item) => { - acc[item.origin_key] = item.value - return acc - }, {}), - activeAddresses: activeAddresses, + throw new Error( + `Failed to fetch growthepie data: ${response.status} ${response.statusText}` + ) + } + const data: GrowThePieRawDataItem[] = await response.json() + + // Store only the raw API response + return data + } catch (error) { + console.error("Error fetching GrowThePie data:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch GrowThePie data", + } } } diff --git a/src/lib/api/fetchGrowThePieBlockspace.ts b/src/lib/api/fetchGrowThePieBlockspace.ts index 4b72ed1aa9b..a5c9712758a 100644 --- a/src/lib/api/fetchGrowThePieBlockspace.ts +++ b/src/lib/api/fetchGrowThePieBlockspace.ts @@ -1,24 +1,64 @@ -import { layer2Data } from "@/data/networks/networks" +import { GROWTHEPIE_IDS } from "@/data/networks/networks-data" -export const fetchGrowThePieBlockspace = async () => { - const blockspaceData = {} - for (const network of layer2Data) { - const response = await fetch( - `https://api.growthepie.com/v1/chains/blockspace/${network.growthepieID}.json` - ) - if (!response.ok) { - continue +export type GrowThePieBlockspaceData = Record< + string, + { + nft: number + defi: number + social: number + token_transfers: number + unlabeled: number + } +> + +export const fetchGrowThePieBlockspace = async (): Promise< + GrowThePieBlockspaceData | { error: string } +> => { + const blockspaceData: GrowThePieBlockspaceData = {} + + try { + for (const growthepieID of GROWTHEPIE_IDS) { + try { + const response = await fetch( + `https://api.growthepie.com/v1/chains/blockspace/${growthepieID}.json` + ) + + if (!response.ok) { + console.warn( + `Failed to fetch blockspace data for ${growthepieID}:`, + response.status, + response.statusText + ) + continue + } + + const data = await response.json() + + blockspaceData[growthepieID] = { + nft: data.overview["30d"].nft.data[4], + defi: data.overview["30d"].defi.data[4], + social: data.overview["30d"].social.data?.[4] || 0, + token_transfers: data.overview["30d"].token_transfers.data[4], + unlabeled: data.overview["30d"].unlabeled.data[4], + } + } catch (error) { + console.error( + `Error fetching blockspace data for ${growthepieID}:`, + error + ) + // Continue with other networks even if one fails + continue + } } - const data = await response.json() - blockspaceData[network.growthepieID] = { - nft: data.overview["30d"].nft.data[4], - defi: data.overview["30d"].defi.data[4], - social: data.overview["30d"].social.data?.[4] || 0, - token_transfers: data.overview["30d"].token_transfers.data[4], - unlabeled: data.overview["30d"].unlabeled.data[4], + return blockspaceData + } catch (error) { + console.error("Error fetching GrowThePie blockspace data:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch GrowThePie blockspace data", } } - - return blockspaceData } diff --git a/src/lib/api/fetchGrowThePieMaster.ts b/src/lib/api/fetchGrowThePieMaster.ts index 090cb3b0026..2763e5568c2 100644 --- a/src/lib/api/fetchGrowThePieMaster.ts +++ b/src/lib/api/fetchGrowThePieMaster.ts @@ -1,28 +1,45 @@ -// Add interface for the chain data structure +import type { GrowThePieLaunchDates } from "@/lib/types" + interface Chain { url_key: string launch_date: string } -export const fetchGrowThePieMaster = async () => { - const response = await fetch("https://api.growthepie.com/v1/master.json") - if (!response.ok) { - throw new Error( - `growthepie Master API responded with ${response.status}: ${response.statusText}` - ) - } +export const fetchGrowThePieMaster = async (): Promise< + GrowThePieLaunchDates | { error: string } +> => { + try { + const response = await fetch("https://api.growthepie.com/v1/master.json") + if (!response.ok) { + console.error("GrowThePie Master fetch non-OK", { + status: response.status, + statusText: response.statusText, + url: "https://api.growthepie.com/v1/master.json", + }) + return { + error: `GrowThePie Master API responded with ${response.status}: ${response.statusText}`, + } + } - const data = (await response.json()) as { chains: Record } + const data = (await response.json()) as { chains: Record } - const launchDates = Object.values(data.chains).reduce>( - (acc, curr: Chain) => { + const launchDates = Object.values( + data.chains + ).reduce((acc, curr: Chain) => { return { ...acc, [curr.url_key]: curr.launch_date, } - }, - {} - ) + }, {}) - return { launchDates: launchDates } + return launchDates + } catch (error) { + console.error("Error fetching GrowThePie Master data:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch GrowThePie Master data", + } + } } diff --git a/src/lib/api/fetchL2beat.ts b/src/lib/api/fetchL2beat.ts index 374c5e6b3da..b2a12c5a7c2 100644 --- a/src/lib/api/fetchL2beat.ts +++ b/src/lib/api/fetchL2beat.ts @@ -1,9 +1,29 @@ -export const fetchL2beat = async () => { - const response = await fetch("https://l2beat.com/api/scaling/summary") - if (!response.ok) { - throw new Error( - `L2BEAT API responded with ${response.status}: ${response.statusText}` - ) +import type { L2beatResponse } from "@/lib/types" + +export const fetchL2beat = async (): Promise< + L2beatResponse | { error: string } +> => { + try { + const response = await fetch("https://l2beat.com/api/scaling/summary") + if (!response.ok) { + console.error("L2beat fetch non-OK", { + status: response.status, + statusText: response.statusText, + url: "https://l2beat.com/api/scaling/summary", + }) + return { + error: `L2BEAT API responded with ${response.status}: ${response.statusText}`, + } + } + + const data = (await response.json()) as L2beatResponse + + return data + } catch (error) { + console.error("Error fetching L2beat data:", error) + return { + error: + error instanceof Error ? error.message : "Failed to fetch L2beat data", + } } - return await response.json() } diff --git a/src/lib/api/fetchRSS.ts b/src/lib/api/fetchRSS.ts index 0f5a6124e78..cb7fe9b0164 100644 --- a/src/lib/api/fetchRSS.ts +++ b/src/lib/api/fetchRSS.ts @@ -1,15 +1,40 @@ import { parseString } from "xml2js" -import { RSS_DISPLAY_COUNT } from "../constants" -import type { AtomElement, AtomResult, RSSItem, RSSResult } from "../types" -import { isValidDate } from "../utils/date" +import type { AtomElement, AtomResult, RSSItem, RSSResult } from "@/lib/types" + +import { isValidDate } from "@/lib/utils/date" + +import { ATTESTANT_BLOG, BLOG_FEEDS, RSS_DISPLAY_COUNT } from "@/lib/constants" + +/** + * Fetches XML data from the specified URL. + * Parses XML to JSON with parseString (xml2js package) + * @param url - The URL to fetch the XML data from. + * @returns A promise that resolves to the parsed XML data as a JSON object. + */ +export const fetchXml = async (url: string) => { + try { + const response = await fetch(url, { + headers: { Cookie: "", DNT: "1" }, // Empty cookie header and do-not-track + credentials: "omit", // Don't send or receive cookies + }) + const xml = await response.text() + return await new Promise>((resolve, reject) => { + parseString(xml, (err, result) => { + err ? reject(err) : resolve(result) + }) + }) + } catch (error) { + throw new Error(`Error fetching or parsing XML: ${url}`) + } +} /** * Fetches RSS feed from the specified XML URL(s). * @param xmlUrl - The URL(s) of the XML feed to fetch. * @returns An array sources, each containing an array of RSS items */ -export const fetchRSS = async (xmlUrl: string | string[]) => { +const fetchRSS = async (xmlUrl: string | string[]): Promise => { const urls = Array.isArray(xmlUrl) ? xmlUrl : [xmlUrl] const allItems: RSSItem[][] = [] for (const url of urls) { @@ -127,32 +152,35 @@ export const fetchRSS = async (xmlUrl: string | string[]) => { } } - // Only break build if insufficient number of items fetched - if (allItems.length < RSS_DISPLAY_COUNT) - throw new Error("Insufficient number of RSS items fetched") - return allItems } /** - * Fetches XML data from the specified URL. - * Parses XML to JSON with parseString (xml2js package) - * @param url - The URL to fetch the XML data from. - * @returns A promise that resolves to the parsed XML data as a JSON object. + * Fetches blog feeds (excluding Attestant, which is fetched separately). */ -export const fetchXml = async (url: string) => { +export const fetchBlogFeeds = async (): Promise< + RSSItem[][] | { error: string } +> => { try { - const response = await fetch(url, { - headers: { Cookie: "", DNT: "1" }, // Empty cookie header and do-not-track - credentials: "omit", // Don't send or receive cookies - }) - const xml = await response.text() - return await new Promise>((resolve, reject) => { - parseString(xml, (err, result) => { - err ? reject(err) : resolve(result) - }) - }) + const xmlUrls = BLOG_FEEDS.filter( + (feed) => ![ATTESTANT_BLOG].includes(feed) + ) + const allItems = await fetchRSS(xmlUrls) + + // Only break build if insufficient number of items fetched + if (allItems.length < RSS_DISPLAY_COUNT) { + throw new Error("Insufficient number of RSS items fetched") + } + + return allItems } catch (error) { - throw new Error(`Error fetching or parsing XML: ${url}`) + console.error( + "Error fetching blog feeds:", + error instanceof Error ? error.message : error + ) + return { + error: + error instanceof Error ? error.message : "Failed to fetch blog feeds", + } } } diff --git a/src/lib/api/fetchStablecoinsData.ts b/src/lib/api/fetchStablecoinsData.ts new file mode 100644 index 00000000000..2c426698c75 --- /dev/null +++ b/src/lib/api/fetchStablecoinsData.ts @@ -0,0 +1,39 @@ +import type { CoinGeckoCoinMarketItem } from "@/lib/types" + +import { + COINGECKO_API_BASE_URL, + COINGECKO_API_URL_PARAMS, +} from "@/lib/constants" + +export const fetchStablecoinsData = async (): Promise< + CoinGeckoCoinMarketItem[] | { error: string } +> => { + const url = `${COINGECKO_API_BASE_URL}stablecoins${COINGECKO_API_URL_PARAMS}` + + try { + const response = await fetch(url) + + if (!response.ok) { + console.error("CoinGecko stablecoins fetch non-OK", { + status: response.status, + statusText: response.statusText, + url, + }) + return { + error: `CoinGecko responded with status ${response.status}: ${response.statusText}`, + } + } + + const data: CoinGeckoCoinMarketItem[] = await response.json() + + return data + } catch (error) { + console.error("Error fetching Ethereum stablecoins data:", error) + return { + error: + error instanceof Error + ? error.message + : "Failed to fetch Ethereum stablecoins data", + } + } +} diff --git a/src/lib/api/fetchTotalEthStaked.ts b/src/lib/api/fetchTotalEthStaked.ts deleted file mode 100644 index 19eb7893ce4..00000000000 --- a/src/lib/api/fetchTotalEthStaked.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { EthStakedResponse, MetricReturnData } from "@/lib/types" - -import { DUNE_API_URL } from "../constants" - -const DUNE_API_KEY = process.env.DUNE_API_KEY - -export const fetchTotalEthStaked = async (): Promise => { - if (!DUNE_API_KEY) { - console.error("Dune API key not found") - return { error: "Dune API key not found" } - } - - const url = new URL("api/v1/query/3915587/results", DUNE_API_URL) - - const response = await fetch(url, { - headers: { "X-Dune-API-Key": DUNE_API_KEY }, - }) - if (!response.ok) { - console.log(response.status, response.statusText) - throw new Error("Failed to fetch eth staked data") - } - - const json: EthStakedResponse = await response.json() - const { - result: { rows = [] }, - } = json - // Today's value at start of array - const value = rows[0].cum_deposited_eth - - // current value (number, unformatted) - return { value, timestamp: Date.now() } -} diff --git a/src/lib/api/fetchTotalValueLocked.ts b/src/lib/api/fetchTotalValueLocked.ts index 86cb4b6fd4f..a757ae72c6a 100644 --- a/src/lib/api/fetchTotalValueLocked.ts +++ b/src/lib/api/fetchTotalValueLocked.ts @@ -1,6 +1,6 @@ -import { DefiLlamaTVLResponse, MetricReturnData } from "@/lib/types" +import { DefiLlamaTVLResponse } from "@/lib/types" -export const fetchTotalValueLocked = async (): Promise => { +export const fetchTotalValueLocked = async (): Promise => { const response = await fetch(`https://api.llama.fi/charts/Ethereum`) if (!response.ok) { console.log(response.status, response.statusText) @@ -12,5 +12,5 @@ export const fetchTotalValueLocked = async (): Promise => { const value = json[json.length - 1].totalLiquidityUSD // current value (number, unformatted) - return { value, timestamp: Date.now() } + return value } diff --git a/src/lib/api/fetchTranslatathonTranslators.ts b/src/lib/api/fetchTranslatathonTranslators.ts deleted file mode 100644 index 2fc786631df..00000000000 --- a/src/lib/api/fetchTranslatathonTranslators.ts +++ /dev/null @@ -1,257 +0,0 @@ -import crowdin from "@crowdin/crowdin-api-client" - -import type { CostLeaderboardData } from "@/lib/types" - -// Translatathon date range: August 25-31, 2025 -const TRANSLATATHON_START = "2025-08-25T00:00:00Z" -const TRANSLATATHON_END = "2025-08-31T23:59:59Z" - -// Timeout for report generation (5 minutes) -const REPORT_TIMEOUT_MS = 5 * 60 * 1000 - -const crowdinClient = new crowdin({ - token: process.env.CROWDIN_API_KEY || "", -}) - -// Try different schema names for contributor reports -const SCHEMA_ATTEMPTS = [ - "contribution-raw-data", - "translation-costs-pe", - "costs-estimation-pe", -] as const - -const generateContributorReport = async ( - projectId: number, - schemaName: (typeof SCHEMA_ATTEMPTS)[number] -): Promise => { - try { - let schema - - if (schemaName === "contribution-raw-data") { - schema = { - unit: "words", - format: "json", - dateFrom: TRANSLATATHON_START, - dateTo: TRANSLATATHON_END, - mode: "translations", - } - } else if (schemaName === "translation-costs-pe") { - schema = { - unit: "words", - format: "json", - dateFrom: TRANSLATATHON_START, - dateTo: TRANSLATATHON_END, - baseRates: { - fullTranslation: 1, - proofread: 1, - }, - individualRates: [], - netRateSchemes: { - tmMatch: [ - { matchType: "perfect", price: 0 }, - { matchType: "100", price: 0 }, - ], - mtMatch: [{ matchType: "100", price: 1 }], - suggestionMatch: [{ matchType: "100", price: 1 }], - }, - groupBy: "user", - } - } else { - schema = { - unit: "words", - format: "json", - dateFrom: TRANSLATATHON_START, - dateTo: TRANSLATATHON_END, - } - } - - const response = await crowdinClient.reportsApi.generateReport(projectId, { - name: schemaName, - schema, - }) - return response.data.identifier - } catch (error) { - console.warn(`Schema ${schemaName} failed for project ${projectId}:`, error) - return null - } -} - -const waitForReport = async ( - projectId: number, - reportId: string -): Promise => { - const startTime = Date.now() - - while (Date.now() - startTime < REPORT_TIMEOUT_MS) { - try { - const status = await crowdinClient.reportsApi.checkReportStatus( - projectId, - reportId - ) - - if (status.data.status === "finished") { - return true - } else if (status.data.status === "failed") { - console.error(`Report ${reportId} failed for project ${projectId}`) - return false - } - - // Wait 5 seconds before checking again - await new Promise((resolve) => setTimeout(resolve, 5000)) - } catch (error) { - console.error(`Error checking report status:`, error) - return false - } - } - - console.error(`Report ${reportId} timed out for project ${projectId}`) - return false -} - -const downloadReport = async ( - projectId: number, - reportId: string -): Promise => { - try { - const downloadResponse = await crowdinClient.reportsApi.downloadReport( - projectId, - reportId - ) - - // Use no-store to avoid Next.js cache size issues with large reports - const reportResponse = await fetch(downloadResponse.data.url, { - cache: "no-store", - }) - if (!reportResponse.ok) { - throw new Error(`Failed to download report: ${reportResponse.statusText}`) - } - - const reportData = (await reportResponse.json()) as { data?: unknown[] } - return reportData.data || [] - } catch (error) { - console.error(`Error downloading report for project ${projectId}:`, error) - return [] - } -} - -const fetchProjectTranslators = async ( - projectId: number -): Promise => { - // Try different schema names - for (const schemaName of SCHEMA_ATTEMPTS) { - const reportId = await generateContributorReport(projectId, schemaName) - if (!reportId) continue - - const isReady = await waitForReport(projectId, reportId) - if (!isReady) continue - - const reportData = await downloadReport(projectId, reportId) - - // Transform report data to CostLeaderboardData format - return reportData.map((item: unknown) => { - const data = item as Record - const user = (data.user as Record) || {} - const languages = (data.languages as unknown[]) || [] - - return { - username: - (user.username as string) || (data.username as string) || "unknown", - fullName: (user.fullName as string) || (data.fullName as string) || "", - avatarUrl: - (user.avatarUrl as string) || (data.avatarUrl as string) || "", - totalCosts: Math.floor( - (data.targetWords as number) || - (data.words as number) || - (data.totalWords as number) || - (data.totalCosts as number) || - 0 - ), - langs: languages - .map((lang: unknown) => { - const langObj = lang as Record - return (langObj.name as string) || (lang as string) || "" - }) - .filter(Boolean), - } - }) - } - - console.error(`All schema attempts failed for project ${projectId}`) - return [] -} - -export async function fetchTranslatathonTranslators(): Promise< - CostLeaderboardData[] -> { - try { - const projectIds = - process.env.TRANSLATATHON_PROJECT_IDS?.split(",") - .map((id) => parseInt(id.trim())) - .filter((id) => !isNaN(id)) || [] - - if (projectIds.length === 0) { - console.error("No valid project IDs found in TRANSLATATHON_PROJECT_IDS") - return [] - } - - console.log(`Fetching translators from ${projectIds.length} projects`) - - // Fetch data from all projects - const allProjectData = await Promise.all( - projectIds.map((projectId) => fetchProjectTranslators(projectId)) - ) - - // Aggregate translators across projects - const translatorMap = new Map() - - for (const projectData of allProjectData) { - for (const translator of projectData) { - const { username, totalCosts, langs, fullName, avatarUrl } = translator - - if (!username || username === "unknown") continue - - // Filter out bot/internal accounts (reuse existing filters) - const lUser = username.toLowerCase() - const lFull = (username + fullName).toLowerCase() - const isBlocked = - lUser.includes("lqs_") || - lUser.includes("removed_user") || - lFull.includes("aco_") || - lFull.includes("acc_") || - [ - "ethdotorg", - "finnish_sandberg", - "norwegian_sandberg", - "swedish_sandberg", - ].includes(lUser) - - if (isBlocked) continue - - const existing = translatorMap.get(username) - if (existing) { - // Merge data from multiple projects - existing.totalCosts += totalCosts - existing.langs = [...new Set([...existing.langs, ...langs])] - } else { - translatorMap.set(username, { - username, - fullName, - avatarUrl, - totalCosts, - langs, - }) - } - } - } - - const result = Array.from(translatorMap.values()) - .filter((translator) => translator.totalCosts > 0) - .sort((a, b) => b.totalCosts - a.totalCosts) - - console.log(`Found ${result.length} translators with total contributions`) - return result - } catch (error) { - console.error("Error fetching translatathon translators:", error) - return [] - } -} diff --git a/src/lib/api/stablecoinsData.ts b/src/lib/api/stablecoinsData.ts deleted file mode 100644 index a3c94d5634c..00000000000 --- a/src/lib/api/stablecoinsData.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { COINGECKO_API_BASE_URL, COINGECKO_API_URL_PARAMS } from "../constants" - -export async function fetchEthereumStablecoinsData() { - const url = `${COINGECKO_API_BASE_URL}stablecoins${COINGECKO_API_URL_PARAMS}` - - try { - const res = await fetch(url) - - if (!res.ok) { - console.log(res.status, res.statusText) - throw new Error("Failed to fetch Ethereum stablecoins data") - } - - return await res.json() - } catch (error) { - // In production mode, throw an error to stop the build in case this fetch fails - console.error(error) - throw new Error( - "Something went wrong with requesting the Ethereum stablecoins data." - ) - } -} diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 89524afaad6..37061e7170f 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -47,12 +47,6 @@ export const COINGECKO_API_URL_PARAMS = "&order=market_cap_desc&per_page=250&page=1&sparkline=false" export const COLOR_MODE_STORAGE_KEY = "theme" -// API timing -export const BASE_TIME_UNIT = 3600 // (seconds) 1 hour -export const TIMEOUT_MS = 5000 // (milliseconds) -export const MAX_RETRIES = 1 -export const RETRY_DELAY_BASE_MS = 250 // (milliseconds) - // Quiz Hub export const PROGRESS_BAR_GAP = "4px" export const PASSING_QUIZ_SCORE = 65 diff --git a/src/lib/types.ts b/src/lib/types.ts index 475c887ca31..44b7f7e7b28 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -6,6 +6,7 @@ import type { ReactElement, ReactNode } from "react" import type { ColumnDef } from "@tanstack/react-table" import type { + CommunityEvent, DocsFrontmatter, RoadmapFrontmatter, StakingFrontmatter, @@ -533,7 +534,7 @@ export type EpochResponse = Data< export type BeaconchainEpochData = Record< "totalEthStaked" | "validatorscount", - MetricReturnData + ExternalDataReturnData > export type StakingStatsData = { @@ -569,17 +570,129 @@ export type DefiLlamaTVLResponse = { totalLiquidityUSD: number }[] -export type MetricReturnData = ValueOrError - -export type StatsBoxState = ValueOrError - export type GrowThePieMetricKey = "txCount" | "txCostsMedianUsd" -export type GrowThePieData = Record & { +export type GrowThePieData = { + txCount: { value: number; timestamp: number } + txCostsMedianUsd: { value: number; timestamp: number } dailyTxCosts: Record activeAddresses: Record } +export type GrowThePieRawDataItem = { + metric_key: string + origin_key: string + date: string + value: number +} + +export type CoinGeckoCoinMarketItem = { + id: string + name: string + market_cap: number + image: string + symbol: string +} + +export type GrowThePieBlockspaceData = Record< + string, + { + nft: number + defi: number + social: number + token_transfers: number + unlabeled: number + } +> + +/** + * GrowThePie launch dates mapping. + * Keys are network URL identifiers (e.g., "arbitrum", "base", "zksync-era"). + * Values are launch date strings in ISO format (YYYY-MM-DD). + */ +export type GrowThePieLaunchDates = Record + +/** + * L2beat project data structure. + */ +export interface L2beatProject { + id: string + name: string + slug: string + type: string + category: string + provider: string + purposes: string[] + isArchived: boolean + isUpcoming: boolean + isUnderReview: boolean + badges: Array<{ category: string; name: string }> + tvs: { + breakdown: { + total: number + ether: number + stablecoin: number + associated: number + } + associatedTokens: string[] + change7d: number + } + stage: string + risks: Array<{ + name: string + category: string + value: string + description: string + sentiment: "bad" | "warning" | "good" | "neutral" + }> +} + +/** + * L2beat API response structure. + * The API returns a summary of all L2 scaling solutions with their TVL, risks, and maturity data. + */ +export interface L2beatResponse { + success: boolean + data: { + chart: { + types: string[] + data: Array> + } + } + projects: Record +} + +/** + * GitHub repository data for a framework. + */ +export interface FrameworkRepoData { + starCount: number + languages: string[] +} + +/** + * GitHub data for all frameworks, keyed by framework ID. + */ +export type FrameworkGitHubData = Record + +export type ExternalDataReturnData = ValueOrError< + | number + | CommunityEvent[] + | RSSItem[] + | RSSItem[][] + | Record + | GrowThePieRawDataItem[] + | CommunityPick[] + | GHIssue[] + | CoinGeckoCoinMarketItem[] + | GrowThePieBlockspaceData + | GrowThePieLaunchDates + | L2beatResponse + | FrameworkGitHubData +> + +export type StatsBoxState = ValueOrError + export type HomepageActivityMetric = | "ethPrice" // Use with `totalEthStaked` to convert ETH to USD | "totalEthStaked" @@ -588,7 +701,7 @@ export type HomepageActivityMetric = export type AllHomepageActivityData = Record< HomepageActivityMetric, - MetricReturnData + ExternalDataReturnData > export type EnterpriseActivityMetric = @@ -600,7 +713,7 @@ export type EnterpriseActivityMetric = export type AllEnterpriseActivityData = Record< EnterpriseActivityMetric, - MetricReturnData + ExternalDataReturnData > export type StatsBoxMetric = { diff --git a/src/lib/utils/apps.ts b/src/lib/utils/apps.ts index 8f93879886e..13d0531a3ca 100644 --- a/src/lib/utils/apps.ts +++ b/src/lib/utils/apps.ts @@ -2,6 +2,48 @@ import { AppCategory, AppCategoryEnum, AppData } from "@/lib/types" import { TagProps } from "@/components/ui/tag" +/** + * Converts date strings back to Date objects after JSON deserialization. + * This is needed because Date objects are serialized as strings when stored in Redis/Supabase. + */ +const convertDateField = (value: unknown): Date | null => { + if (!value) return null + if (typeof value === "string") return new Date(value) + if (value instanceof Date) return value + return null +} + +/** + * Extracts and normalizes apps data from external data storage. + * Handles date conversion from JSON strings back to Date objects. + */ +export const extractAppsData = ( + appsDataRaw: + | { value: Record } + | { error: string } + | undefined +): Record => { + if (!appsDataRaw || !("value" in appsDataRaw)) { + return {} as Record + } + + return Object.fromEntries( + Object.entries(appsDataRaw.value).map(([category, apps]) => [ + category, + (apps as unknown[]).map((app: unknown) => { + const appData = app as Record + return { + ...appData, + appOfTheWeekStartDate: convertDateField( + appData.appOfTheWeekStartDate + ), + appOfTheWeekEndDate: convertDateField(appData.appOfTheWeekEndDate), + } as AppData + }), + ]) + ) as Record +} + // Get highlighted apps (apps with highlight=true) export const getHighlightedApps = ( appsData: Record, diff --git a/src/lib/utils/data/__tests__/getExternalData.test.ts b/src/lib/utils/data/__tests__/getExternalData.test.ts new file mode 100644 index 00000000000..8a11510dc5f --- /dev/null +++ b/src/lib/utils/data/__tests__/getExternalData.test.ts @@ -0,0 +1,132 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { every } from "@/lib/utils/time" + +import { getExternalData } from "../getExternalData" + +// Mock storage clients +vi.mock("../clients/redisClient", () => ({ + getRedisData: vi.fn(), +})) + +vi.mock("../clients/supabaseClient", () => ({ + getSupabaseData: vi.fn(), +})) + +// Mock mock data loader +vi.mock("../loadMockData", () => ({ + loadMockDataForKeys: vi.fn(), +})) + +describe("getExternalData", () => { + beforeEach(() => { + vi.clearAllMocks() + delete process.env.USE_MOCK_DATA + }) + + it("should fetch data from Redis when available", async () => { + const { getRedisData } = await import("../clients/redisClient") + const mockData = { value: 3000, timestamp: Date.now() } + + vi.mocked(getRedisData).mockResolvedValue(mockData) + + const result = await getExternalData(["ethPrice"], every("hour")) + + expect(result).toHaveProperty("ethPrice") + expect(result?.ethPrice).toEqual(mockData) + expect(getRedisData).toHaveBeenCalledWith("ethPrice", every("hour")) + }) + + it("should fallback to Supabase when Redis returns null", async () => { + const { getRedisData } = await import("../clients/redisClient") + const { getSupabaseData } = await import("../clients/supabaseClient") + const mockData = { value: 3000, timestamp: Date.now() } + + vi.mocked(getRedisData).mockResolvedValue(null) + vi.mocked(getSupabaseData).mockResolvedValue(mockData) + + const result = await getExternalData(["ethPrice"], every("hour")) + + expect(result).toHaveProperty("ethPrice") + expect(getSupabaseData).toHaveBeenCalledWith("ethPrice", every("hour")) + }) + + it("should load mock data when USE_MOCK_DATA is true", async () => { + process.env.USE_MOCK_DATA = "true" + // Need to reset modules to pick up the env var change + vi.resetModules() + const { getExternalData } = await import("../getExternalData") + const { loadMockDataForKeys } = await import("../loadMockData") + + vi.mocked(loadMockDataForKeys).mockResolvedValue({ + ethPrice: { value: 3000, timestamp: Date.now() }, + }) + + const result = await getExternalData(["ethPrice"], every("hour")) + + expect(result).toHaveProperty("ethPrice") + expect(loadMockDataForKeys).toHaveBeenCalledWith(["ethPrice"]) + }) + + it("should sort keys for consistent processing", async () => { + const { getRedisData } = await import("../clients/redisClient") + vi.mocked(getRedisData) + .mockResolvedValueOnce({ value: 3000, timestamp: Date.now() }) + .mockResolvedValueOnce({ value: 35000000, timestamp: Date.now() }) + + await getExternalData(["ethPrice", "beaconchainEpoch"], every("hour")) + + // Keys should be sorted before processing + expect(getRedisData).toHaveBeenCalledWith("beaconchainEpoch", every("hour")) + expect(getRedisData).toHaveBeenCalledWith("ethPrice", every("hour")) + }) + + it("should return object with null values when no data is found", async () => { + const { getRedisData } = await import("../clients/redisClient") + const { getSupabaseData } = await import("../clients/supabaseClient") + + vi.mocked(getRedisData).mockResolvedValue(null) + vi.mocked(getSupabaseData).mockResolvedValue(null) + + const result = await getExternalData(["nonexistent"], every("hour")) + + // Should return object with null value, not null itself + expect(result).toEqual({ nonexistent: null }) + }) + + it("should handle errors gracefully", async () => { + const { getRedisData } = await import("../clients/redisClient") + vi.mocked(getRedisData).mockRejectedValue(new Error("Redis error")) + + const result = await getExternalData(["ethPrice"], every("hour")) + + // Should return object with null value on error + expect(result).toEqual({ ethPrice: null }) + }) + + it("should handle multiple keys", async () => { + const { getRedisData } = await import("../clients/redisClient") + vi.mocked(getRedisData) + .mockResolvedValueOnce({ value: 3000, timestamp: Date.now() }) + .mockResolvedValueOnce({ value: 35000000, timestamp: Date.now() }) + + const result = await getExternalData( + ["ethPrice", "beaconchainEpoch"], + every("hour") + ) + + expect(result).toHaveProperty("ethPrice") + expect(result).toHaveProperty("beaconchainEpoch") + }) + + it("should return null when mock data map is empty and no keys requested", async () => { + process.env.USE_MOCK_DATA = "true" + const { loadMockDataForKeys } = await import("../loadMockData") + + vi.mocked(loadMockDataForKeys).mockResolvedValue({}) + + const result = await getExternalData([], every("hour")) + + expect(result).toBeNull() + }) +}) diff --git a/src/lib/utils/data/__tests__/integration.test.ts b/src/lib/utils/data/__tests__/integration.test.ts new file mode 100644 index 00000000000..25129387253 --- /dev/null +++ b/src/lib/utils/data/__tests__/integration.test.ts @@ -0,0 +1,119 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { every } from "@/lib/utils/time" + +import { getExternalData } from "../getExternalData" + +// Mock storage clients +vi.mock("../clients/redisClient", () => ({ + getRedisData: vi.fn(), +})) + +vi.mock("../clients/supabaseClient", () => ({ + getSupabaseData: vi.fn(), +})) + +// Mock unstable_cache +vi.mock("next/cache", () => ({ + unstable_cache: vi.fn((fn) => fn), +})) + +describe("Integration: getExternalData + extractors", () => { + beforeEach(() => { + vi.clearAllMocks() + delete process.env.USE_MOCK_DATA + }) + + it("should fetch and extract simple value data", async () => { + const { getRedisData } = await import("../clients/redisClient") + const mockData = { value: 3000, timestamp: Date.now() } + + vi.mocked(getRedisData).mockResolvedValue(mockData) + + const data = await getExternalData(["ethPrice"], every("hour")) + const result = + data?.ethPrice && "value" in data.ethPrice + ? data.ethPrice + : { value: 0, timestamp: Date.now() } + + expect(result.value).toBe(3000) + expect(result.timestamp).toBeDefined() + }) + + it("should fetch and extract array data", async () => { + const { getRedisData } = await import("../clients/redisClient") + const mockData = { + value: [ + { name: "Pick 1", twitterURL: "https://example.com" }, + { name: "Pick 2", twitterURL: "https://example2.com" }, + ], + timestamp: Date.now(), + } + + vi.mocked(getRedisData).mockResolvedValue(mockData) + + const data = await getExternalData(["communityPicks"], every("day")) + const result = + data?.communityPicks && "value" in data.communityPicks + ? data.communityPicks.value + : [] + + expect(Array.isArray(result)).toBe(true) + expect(Array.isArray(result) && result.length).toBe(2) + expect(result[0]).toHaveProperty("name") + }) + + it("should fetch and extract GrowThePie data", async () => { + const { getRedisData } = await import("../clients/redisClient") + const mockData = { + value: [ + { + date: "2024-01-01", + txCount: 1000000, + txCostsMedianUsd: 2.5, + }, + ], + timestamp: Date.now(), + } + + vi.mocked(getRedisData).mockResolvedValue(mockData) + + const data = await getExternalData(["growThePie"], every("hour")) + const result = + data?.growThePie && "value" in data.growThePie + ? data.growThePie.value + : null + + expect(result).toBeDefined() + expect(Array.isArray(result)).toBe(true) + expect(result?.[0]).toHaveProperty("date") + }) + + it("should handle missing data gracefully", async () => { + const { getRedisData } = await import("../clients/redisClient") + vi.mocked(getRedisData).mockResolvedValue(null) + + const data = await getExternalData(["nonexistent"], every("hour")) + const result = + data?.nonexistent && "value" in data.nonexistent + ? data.nonexistent + : { value: 0, timestamp: Date.now() } + + expect(result.value).toBe(0) // default value + }) + + it("should handle error responses", async () => { + const { getRedisData } = await import("../clients/redisClient") + const errorData = { error: "API error" } + + vi.mocked(getRedisData).mockResolvedValue(errorData) + + const data = await getExternalData(["ethPrice"], every("hour")) + const result = + data?.ethPrice && "value" in data.ethPrice + ? data.ethPrice + : { value: 0, timestamp: Date.now() } + + expect(result.value).toBe(0) // default value when error + }) +}) diff --git a/src/lib/utils/data/__tests__/redisClient.test.ts b/src/lib/utils/data/__tests__/redisClient.test.ts new file mode 100644 index 00000000000..6ac8e6e77e0 --- /dev/null +++ b/src/lib/utils/data/__tests__/redisClient.test.ts @@ -0,0 +1,165 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import { getRedisData, storeRedis } from "../clients/redisClient" + +// Mock next/cache +vi.mock("next/cache", () => ({ + unstable_cache: vi.fn((fn) => fn), +})) + +// Mock @upstash/redis +const mockRedisClient = { + set: vi.fn(), + get: vi.fn(), + del: vi.fn(), +} + +vi.mock("@upstash/redis", () => ({ + Redis: class MockRedis { + constructor() { + return mockRedisClient + } + }, +})) + +describe("Redis Client", () => { + beforeEach(() => { + vi.clearAllMocks() + // Reset module state + vi.resetModules() + process.env.UPSTASH_REDIS_REST_URL = "https://test.upstash.io" + process.env.UPSTASH_REDIS_REST_TOKEN = "test-token" + }) + + describe("storeRedis", () => { + it("should store data successfully", async () => { + process.env.UPSTASH_REDIS_REST_URL = "https://test.upstash.io" + process.env.UPSTASH_REDIS_REST_TOKEN = "test-token" + vi.resetModules() + const { storeRedis } = await import("../clients/redisClient") + + mockRedisClient.set.mockResolvedValue("OK") + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeRedis("testKey", testData, 3600) + + expect(result).toBe(true) + expect(mockRedisClient.set).toHaveBeenCalledWith( + "external-data:testKey", + JSON.stringify(testData), + { ex: 3600 } + ) + }) + + it("should store data without TTL", async () => { + process.env.UPSTASH_REDIS_REST_URL = "https://test.upstash.io" + process.env.UPSTASH_REDIS_REST_TOKEN = "test-token" + vi.resetModules() + const { storeRedis } = await import("../clients/redisClient") + + mockRedisClient.set.mockResolvedValue("OK") + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeRedis("testKey", testData) + + expect(result).toBe(true) + // When TTL is undefined, the code passes undefined as the third arg + // But Upstash client.set can be called with 2 or 3 args + expect(mockRedisClient.set).toHaveBeenCalled() + const calls = vi.mocked(mockRedisClient.set).mock.calls + expect(calls[0][0]).toBe("external-data:testKey") + expect(calls[0][1]).toBe(JSON.stringify(testData)) + // Third arg should be undefined when no TTL + expect(calls[0][2]).toBeUndefined() + }) + + it("should return false when Redis client is not available", async () => { + delete process.env.UPSTASH_REDIS_REST_URL + delete process.env.UPSTASH_REDIS_REST_TOKEN + vi.resetModules() + const { storeRedis } = await import("../clients/redisClient") + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeRedis("testKey", testData) + + expect(result).toBe(false) + }) + + it("should handle storage errors", async () => { + mockRedisClient.set.mockRejectedValue(new Error("Redis error")) + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeRedis("testKey", testData) + + expect(result).toBe(false) + }) + }) + + describe("getRedisData", () => { + it("should retrieve data successfully", async () => { + const testData = { value: 3000, timestamp: Date.now() } + mockRedisClient.get.mockResolvedValue(JSON.stringify(testData)) + + const result = await getRedisData("testKey", 3600) + + expect(result).toEqual(testData) + expect(mockRedisClient.get).toHaveBeenCalledWith("external-data:testKey") + }) + + it("should return null when key does not exist", async () => { + mockRedisClient.get.mockResolvedValue(null) + + const result = await getRedisData("nonexistent", 3600) + + expect(result).toBeNull() + }) + + it("should return null when Redis client is not available", async () => { + delete process.env.UPSTASH_REDIS_REST_URL + + const result = await getRedisData("testKey", 3600) + + expect(result).toBeNull() + }) + + it("should handle retrieval errors", async () => { + mockRedisClient.get.mockRejectedValue(new Error("Redis error")) + + const result = await getRedisData("testKey", 3600) + + expect(result).toBeNull() + }) + + it("should handle JSON parse errors", async () => { + mockRedisClient.get.mockResolvedValue("invalid json") + + const result = await getRedisData("testKey", 3600) + + expect(result).toBeNull() + }) + }) + + describe("getRedisClient", () => { + it("should initialize Upstash Redis when env vars are set", async () => { + process.env.UPSTASH_REDIS_REST_URL = "https://test.upstash.io" + process.env.UPSTASH_REDIS_REST_TOKEN = "test-token" + + // Re-import to get fresh module state + const { getRedisClient } = await import("../clients/redisClient") + const client = await getRedisClient() + + expect(client).not.toBeNull() + }) + + it("should return null when env vars are not set", async () => { + delete process.env.UPSTASH_REDIS_REST_URL + delete process.env.UPSTASH_REDIS_REST_TOKEN + + // Re-import to get fresh module state + const { getRedisClient } = await import("../clients/redisClient") + const client = await getRedisClient() + + expect(client).toBeNull() + }) + }) +}) diff --git a/src/lib/utils/data/__tests__/storeExternalData.test.ts b/src/lib/utils/data/__tests__/storeExternalData.test.ts new file mode 100644 index 00000000000..4b27af962ef --- /dev/null +++ b/src/lib/utils/data/__tests__/storeExternalData.test.ts @@ -0,0 +1,83 @@ +import { beforeEach, describe, expect, it, vi } from "vitest" + +import type { ExternalDataMap } from "../fetchExternalData" +import { storeExternalData } from "../storeExternalData" + +// Mock storage functions +vi.mock("../clients/redisStoreFunction", () => ({ + redisStoreFunction: vi.fn(), +})) + +vi.mock("../clients/supabaseStoreFunction", () => ({ + supabaseStoreFunction: vi.fn(), +})) + +describe("storeExternalData", () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should store data in both Redis and Supabase", async () => { + const { redisStoreFunction } = await import("../clients/redisStoreFunction") + const { supabaseStoreFunction } = await import( + "../clients/supabaseStoreFunction" + ) + + vi.mocked(redisStoreFunction).mockResolvedValue(true) + vi.mocked(supabaseStoreFunction).mockResolvedValue(true) + + const mockData: ExternalDataMap = { + ethPrice: { value: 3000, timestamp: Date.now() }, + } + + const result = await storeExternalData(mockData) + + expect(result).toBe(true) + expect(redisStoreFunction).toHaveBeenCalledWith(mockData) + expect(supabaseStoreFunction).toHaveBeenCalledWith(mockData) + }) + + it("should return false when data map is empty", async () => { + const result = await storeExternalData({}) + + expect(result).toBe(false) + }) + + it("should return false when both storage methods fail", async () => { + const { redisStoreFunction } = await import("../clients/redisStoreFunction") + const { supabaseStoreFunction } = await import( + "../clients/supabaseStoreFunction" + ) + + vi.mocked(redisStoreFunction).mockResolvedValue(false) + vi.mocked(supabaseStoreFunction).mockResolvedValue(false) + + const mockData: ExternalDataMap = { + ethPrice: { value: 3000, timestamp: Date.now() }, + } + + const result = await storeExternalData(mockData) + + expect(result).toBe(false) + }) + + it("should return false when only one storage method succeeds", async () => { + const { redisStoreFunction } = await import("../clients/redisStoreFunction") + const { supabaseStoreFunction } = await import( + "../clients/supabaseStoreFunction" + ) + + vi.mocked(redisStoreFunction).mockResolvedValue(true) + vi.mocked(supabaseStoreFunction).mockResolvedValue(false) + + const mockData: ExternalDataMap = { + ethPrice: { value: 3000, timestamp: Date.now() }, + } + + // storeExternalData returns successRedis && successSupabase + // So it requires both to succeed + const result = await storeExternalData(mockData) + + expect(result).toBe(false) + }) +}) diff --git a/src/lib/utils/data/__tests__/supabaseClient.test.ts b/src/lib/utils/data/__tests__/supabaseClient.test.ts new file mode 100644 index 00000000000..6c9274ff846 --- /dev/null +++ b/src/lib/utils/data/__tests__/supabaseClient.test.ts @@ -0,0 +1,158 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" + +// Mock @supabase/supabase-js +const mockSupabaseClient = { + from: vi.fn(), +} + +vi.mock("@supabase/supabase-js", () => ({ + createClient: vi.fn(() => mockSupabaseClient), +})) + +// Mock next/cache +vi.mock("next/cache", () => ({ + unstable_cache: vi.fn((fn) => fn), +})) + +describe("Supabase Client", () => { + beforeEach(() => { + vi.clearAllMocks() + // Reset module state to clear cached client + vi.resetModules() + process.env.NEXT_PUBLIC_SUPABASE_URL = "https://test.supabase.co" + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY = "test-key" + }) + + afterEach(() => { + delete process.env.NEXT_PUBLIC_SUPABASE_URL + delete process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY + }) + + describe("storeSupabase", () => { + it("should store data successfully", async () => { + const { storeSupabase } = await import("../clients/supabaseClient") + const mockUpsert = vi.fn().mockResolvedValue({ error: null }) + mockSupabaseClient.from.mockReturnValue({ + upsert: mockUpsert, + }) + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeSupabase("testKey", testData) + + expect(result).toBe(true) + expect(mockSupabaseClient.from).toHaveBeenCalledWith("external_data") + expect(mockUpsert).toHaveBeenCalledWith( + { + key: "external-data:testKey", + value: testData, + updated_at: expect.any(String), + }, + { onConflict: "key" } + ) + }) + + it("should return false when Supabase client is not available", async () => { + delete process.env.NEXT_PUBLIC_SUPABASE_URL + delete process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY + + // Re-import to get fresh module state without client + vi.resetModules() + const { storeSupabase: storeSupabaseFresh } = await import( + "../clients/supabaseClient" + ) + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeSupabaseFresh("testKey", testData) + + expect(result).toBe(false) + }) + + it("should handle storage errors", async () => { + const { storeSupabase } = await import("../clients/supabaseClient") + const mockUpsert = vi.fn().mockResolvedValue({ + error: new Error("Supabase error"), + }) + mockSupabaseClient.from.mockReturnValue({ + upsert: mockUpsert, + }) + + const testData = { value: 3000, timestamp: Date.now() } + const result = await storeSupabase("testKey", testData) + + expect(result).toBe(false) + }) + }) + + describe("getSupabaseData", () => { + it("should retrieve data successfully", async () => { + const { getSupabaseData } = await import("../clients/supabaseClient") + const testData = { value: 3000, timestamp: Date.now() } + const mockSelect = vi.fn().mockReturnValue({ + eq: vi.fn().mockReturnValue({ + single: vi.fn().mockResolvedValue({ + data: { value: testData }, + error: null, + }), + }), + }) + mockSupabaseClient.from.mockReturnValue({ + select: mockSelect, + }) + + const result = await getSupabaseData("testKey", 3600) + + expect(result).toEqual(testData) + expect(mockSupabaseClient.from).toHaveBeenCalledWith("external_data") + expect(mockSelect).toHaveBeenCalledWith("value") + }) + + it("should return null when key does not exist", async () => { + const { getSupabaseData } = await import("../clients/supabaseClient") + const mockSelect = vi.fn().mockReturnValue({ + eq: vi.fn().mockReturnValue({ + single: vi.fn().mockResolvedValue({ + data: null, + error: { code: "PGRST116" }, + }), + }), + }) + mockSupabaseClient.from.mockReturnValue({ + select: mockSelect, + }) + + const result = await getSupabaseData("nonexistent", 3600) + + expect(result).toBeNull() + }) + + it("should return null when Supabase client is not available", async () => { + delete process.env.NEXT_PUBLIC_SUPABASE_URL + delete process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY + + vi.resetModules() + const { getSupabaseData: getSupabaseDataFresh } = await import( + "../clients/supabaseClient" + ) + + const result = await getSupabaseDataFresh("testKey", 3600) + + expect(result).toBeNull() + }) + + it("should handle retrieval errors", async () => { + const { getSupabaseData } = await import("../clients/supabaseClient") + const mockSelect = vi.fn().mockReturnValue({ + eq: vi.fn().mockReturnValue({ + single: vi.fn().mockRejectedValue(new Error("Supabase error")), + }), + }) + mockSupabaseClient.from.mockReturnValue({ + select: mockSelect, + }) + + const result = await getSupabaseData("testKey", 3600) + + expect(result).toBeNull() + }) + }) +}) diff --git a/src/lib/utils/data/cacheAsyncFn.ts b/src/lib/utils/data/cacheAsyncFn.ts deleted file mode 100644 index 1bd5d362d70..00000000000 --- a/src/lib/utils/data/cacheAsyncFn.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Caches the result of an asynchronous function in memory to avoid multiple calls. - * This helps prevent hitting external API rate limits by storing the result in memory. - * - * @param key A unique identifier for the cached function result - * @param fn The asynchronous function to be cached - * @param options Optional parameters to configure cache behavior - * @param options.cacheTimeout The duration in milliseconds for which the cache remains valid - * @returns A new function that returns the cached result or executes the original function if the cache is expired - * - * @example - * const cachedFetch = cacheAsyncFn('uniqueKey', fetchSomething, { cacheTimeout: 60000 }); - * - * await cachedFetch(); // Fetches and caches the data - * await cachedFetch(); // Returns the cached data - */ - -// In-memory cache object -const memoryCache: Record = {} - -export function cacheAsyncFn( - key: string, - fn: () => Promise, - options?: { cacheTimeout?: number } -) { - return async (): Promise => { - const now = Date.now() - const cachedItem = memoryCache[key] - - // Check if cache exists and is not expired - if (cachedItem) { - const cacheAge = now - cachedItem.timestamp - const isCacheExpired = - options?.cacheTimeout && cacheAge > options.cacheTimeout - - if (!isCacheExpired) { - const quietKeys: string[] = ["gfissues"] - !quietKeys.includes(key) && console.log("Cache hit", key) - return cachedItem.value as T - } - console.log("Cache expired", key) - } - - // Fetch fresh data - console.log("Running function", key) - const value = await fn() - - // Store in memory cache - memoryCache[key] = { value: value, timestamp: now } - console.log("Function result cached", key) - - return value as T - } -} diff --git a/src/lib/utils/data/clients/redisClient.ts b/src/lib/utils/data/clients/redisClient.ts new file mode 100644 index 00000000000..03b687394cc --- /dev/null +++ b/src/lib/utils/data/clients/redisClient.ts @@ -0,0 +1,185 @@ +/** + * Redis client utility for storing and retrieving external data. + * Supports both Upstash Redis (serverless-friendly) and regular Redis. + */ + +import { unstable_cache } from "next/cache" +import { Redis } from "@upstash/redis" + +type RedisClient = { + set: ( + key: string, + value: string, + options?: { ex?: number } + ) => Promise + get: (key: string) => Promise + del: (key: string) => Promise +} + +let redisClient: RedisClient | null = null +let hasWarned = false + +/** + * Initialize and return a Redis client instance. + * Prefers Upstash Redis if environment variables are set, otherwise falls back to regular Redis (ioredis). + */ +export const getRedisClient = async (): Promise => { + if (redisClient) { + return redisClient + } + + // Try Upstash Redis first (serverless-friendly) + const upstashUrl = process.env.UPSTASH_REDIS_REST_URL + const upstashToken = process.env.UPSTASH_REDIS_REST_TOKEN + + if (upstashUrl && upstashToken) { + try { + const upstashClient = new Redis({ + url: upstashUrl, + token: upstashToken, + }) + + // Wrap Upstash client to match our RedisClient interface + redisClient = { + set: async (key: string, value: string, options?: { ex?: number }) => { + if (options?.ex) { + return await upstashClient.set(key, value, { ex: options.ex }) + } + return await upstashClient.set(key, value) + }, + get: async (key: string) => { + const result = await upstashClient.get(key) + // Upstash may parse JSON automatically, but we store strings + // Return as-is if it's already a string, otherwise stringify + if (result === null || result === undefined) { + return null + } + return typeof result === "string" ? result : JSON.stringify(result) + }, + del: async (key: string) => { + return await upstashClient.del(key) + }, + } + return redisClient + } catch (error) { + console.error("Failed to initialize Upstash Redis:", error) + } + } + + if (!hasWarned) { + console.warn( + "Redis not configured. Set UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN for Upstash, or REDIS_URL for regular Redis." + ) + hasWarned = true + } + return null +} + +/** + * Store data in Redis with an optional expiration time. + */ +export const setRedisData = async ( + key: string, + value: unknown, + ttlSeconds?: number +): Promise => { + const client = await getRedisClient() + if (!client) { + console.warn("Redis client not available, skipping storage") + return false + } + + try { + const serialized = JSON.stringify(value) + await client.set( + `external-data:${key}`, + serialized, + ttlSeconds ? { ex: ttlSeconds } : undefined + ) + return true + } catch (error) { + console.error(`Failed to store data in Redis for key "${key}":`, error) + return false + } +} + +/** + * Internal function to fetch data from Redis without caching. + * This is the underlying function that will be cached by unstable_cache. + */ +async function fetchRedisDataUncached(key: string): Promise { + const client = await getRedisClient() + if (!client) { + return null + } + + try { + const data = await client.get(`external-data:${key}`) + if (!data) { + return null + } + return JSON.parse(data) as T + } catch (error) { + console.error(`Failed to retrieve data from Redis for key "${key}":`, error) + return null + } +} + +/** + * Retrieve data from Redis. + * The result will be cached using Next.js unstable_cache. + * + * @param key The data key to retrieve + * @param revalidateSeconds Revalidation time in seconds for Next.js caching. + * @returns Promise that resolves to the data, or null if not found + */ +export const getRedisData = async ( + key: string, + revalidateSeconds: number +): Promise => { + const cachedFetch = unstable_cache( + async () => fetchRedisDataUncached(key), + ["redis-data", key], + { + revalidate: revalidateSeconds, + tags: [`external-data:${key}`], + } + ) + return await cachedFetch() +} + +/** + * Delete data from Redis. + */ +export const deleteRedisData = async (key: string): Promise => { + const client = await getRedisClient() + if (!client) { + return false + } + + try { + await client.del(`external-data:${key}`) + return true + } catch (error) { + console.error(`Failed to delete data from Redis for key "${key}":`, error) + return false + } +} + +/** + * Store external data in Redis with the standard key prefix. + * This abstracts the Redis-specific storage logic for external data. + * + * @param key The data key (e.g., "beaconchainEpoch", "activPrice") + * @param value The data value to store + * @param ttlSeconds Optional TTL in seconds + * @returns Promise that resolves to true if storage was successful, false otherwise + */ +export const storeRedis = async ( + key: string, + value: unknown, + ttlSeconds?: number +): Promise => { + // setRedisData already adds the "external-data:" prefix, so we pass the key as-is + return await setRedisData(key, value, ttlSeconds) +} diff --git a/src/lib/utils/data/clients/redisStoreFunction.ts b/src/lib/utils/data/clients/redisStoreFunction.ts new file mode 100644 index 00000000000..4b4b18a7c0b --- /dev/null +++ b/src/lib/utils/data/clients/redisStoreFunction.ts @@ -0,0 +1,27 @@ +import { ExternalDataMap } from "../fetchExternalData" + +import { storeRedis } from "./redisClient" + +export const redisStoreFunction = async (data: ExternalDataMap) => { + const results = await Promise.all( + Object.entries(data).map(async ([key, value]) => { + const success = await storeRedis(key, value) + return success + }) + ) + + const allSuccess = results.every((success) => success) + + if (allSuccess) { + console.log( + `Successfully stored ${Object.keys(data).length} external data entries` + ) + } else { + const successCount = results.filter((success) => success).length + console.warn( + `Stored ${successCount}/${Object.keys(data).length} external data entries` + ) + } + + return allSuccess +} diff --git a/src/lib/utils/data/clients/supabaseClient.ts b/src/lib/utils/data/clients/supabaseClient.ts new file mode 100644 index 00000000000..c7452b3f5a8 --- /dev/null +++ b/src/lib/utils/data/clients/supabaseClient.ts @@ -0,0 +1,137 @@ +/** + * Supabase client utility for storing and retrieving external data. + */ + +import { unstable_cache } from "next/cache" +import type { SupabaseClient } from "@supabase/supabase-js" +import { createClient } from "@supabase/supabase-js" + +let supabaseClient: SupabaseClient | null = null +let hasWarned = false + +/** + * Initialize and return a Supabase client instance. + */ +export const getSupabaseClient = async (): Promise => { + if (supabaseClient) { + return supabaseClient + } + + const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL + const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY + + if (supabaseUrl && supabaseAnonKey) { + try { + supabaseClient = createClient(supabaseUrl, supabaseAnonKey) + return supabaseClient + } catch (error) { + console.error("Failed to initialize Supabase client:", error) + } + } + + if (!hasWarned) { + console.warn( + "Supabase not configured. Set NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY environment variables." + ) + hasWarned = true + } + + return null +} + +/** + * Store external data in Supabase with the standard key. + * This abstracts the Supabase-specific storage logic for external data. + * + * @param key The data key (e.g., "beaconchainEpoch", "ethPrice") + * @param value The data value to store + * @returns Promise that resolves to true if storage was successful, false otherwise + */ +export const storeSupabase = async ( + key: string, + value: unknown +): Promise => { + const client = await getSupabaseClient() + if (!client) { + console.warn("Supabase client not available, skipping storage") + return false + } + + try { + // Upsert the data (insert or update if key already exists) + const { error } = await client.from("external_data").upsert( + { + key: `external-data:${key}`, + value: value, + updated_at: new Date().toISOString(), + }, + { + onConflict: "key", + } + ) + + if (error) { + console.error(`Failed to store data in Supabase for key "${key}":`, error) + return false + } + + return true + } catch (error) { + console.error(`Failed to store data in Supabase for key "${key}":`, error) + return false + } +} + +/** + * Internal function to fetch data from Supabase without caching. + * This is the underlying function that will be cached by unstable_cache. + */ +async function fetchSupabaseDataUncached(key: string): Promise { + const client = await getSupabaseClient() + if (!client) { + return null + } + + try { + const { data, error } = await client + .from("external_data") + .select("value") + .eq("key", `external-data:${key}`) + .single() + + if (error || !data) { + return null + } + + return data.value as T + } catch (error) { + console.error( + `Failed to retrieve data from Supabase for key "${key}":`, + error + ) + return null + } +} + +/** + * Retrieve external data from Supabase. + * The result will be cached using Next.js unstable_cache. + * + * @param key The data key to retrieve + * @param revalidateSeconds Revalidation time in seconds for Next.js caching. + * @returns Promise that resolves to the data, or null if not found + */ +export const getSupabaseData = async ( + key: string, + revalidateSeconds: number +): Promise => { + const cachedFetch = unstable_cache( + async () => fetchSupabaseDataUncached(key), + ["supabase-data", key], + { + revalidate: revalidateSeconds, + tags: [`external-data:${key}`], + } + ) + return await cachedFetch() +} diff --git a/src/lib/utils/data/clients/supabaseStoreFunction.ts b/src/lib/utils/data/clients/supabaseStoreFunction.ts new file mode 100644 index 00000000000..4bb84d2104b --- /dev/null +++ b/src/lib/utils/data/clients/supabaseStoreFunction.ts @@ -0,0 +1,27 @@ +import { ExternalDataMap } from "../fetchExternalData" + +import { storeSupabase } from "./supabaseClient" + +export const supabaseStoreFunction = async (data: ExternalDataMap) => { + const results = await Promise.all( + Object.entries(data).map(async ([key, value]) => { + const success = await storeSupabase(key, value) + return success + }) + ) + + const allSuccess = results.every((success) => success) + + if (allSuccess) { + console.log( + `Successfully stored ${Object.keys(data).length} external data entries in Supabase` + ) + } else { + const successCount = results.filter((success) => success).length + console.warn( + `Stored ${successCount}/${Object.keys(data).length} external data entries in Supabase` + ) + } + + return allSuccess +} diff --git a/src/lib/utils/data/dataLoader.ts b/src/lib/utils/data/dataLoader.ts deleted file mode 100644 index 10101394a58..00000000000 --- a/src/lib/utils/data/dataLoader.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { cacheAsyncFn } from "./cacheAsyncFn" -import { loadMockData } from "./loadMockData" - -const USE_MOCK_DATA = process.env.USE_MOCK_DATA === "true" -if (USE_MOCK_DATA) console.warn("Using mock data") - -type DataLoaderFunction = () => Promise - -/** - * Creates a function that loads data from multiple asynchronous functions and caches the results. - * - * @param loaders An array of tuples, each containing a unique identifier and the asynchronous function to be cached - * @param cacheTimeout Optional cache timeout in milliseconds - * @returns A function that, when called, executes the loaders and returns a promise with the results - * - * @example - * const loadData = dataLoader([ - * ['ethPrice', fetchEthPrice], - * ['totalEthStaked', fetchTotalEthStaked], - * ['totalValueLocked', fetchTotalValueLocked], - * ]); - * - * const [ethPrice, totalEthStaked, totalValueLocked] = await loadData(); - */ - -export function dataLoader( - loaders: { - [K in keyof T]: [string, DataLoaderFunction] - }, - cacheTimeout?: number -): () => Promise { - const cachedLoaders = loaders.map(([key, loader]) => { - const cachedLoader = cacheAsyncFn(key, loader, { - cacheTimeout, - }) - return async () => { - try { - if (USE_MOCK_DATA) return await loadMockData(key) - - return await cachedLoader() - } catch (error) { - console.error(`Error in dataLoader for key "${key}":`, error) - throw error - } - } - }) - - return async () => { - const results = await Promise.all(cachedLoaders.map((loader) => loader())) - return results as T - } -} diff --git a/src/lib/utils/data/fetchExternalData.ts b/src/lib/utils/data/fetchExternalData.ts new file mode 100644 index 00000000000..1203e81ba03 --- /dev/null +++ b/src/lib/utils/data/fetchExternalData.ts @@ -0,0 +1,42 @@ +import { ExternalDataReturnData } from "@/lib/types" + +import { ExternalService } from "@/data/external-services" + +export type ExternalDataMap = Record< + string, + | ExternalDataReturnData + | Record + | null + | undefined +> + +export const fetchExternalData = async ( + services: ExternalService[] +): Promise => { + const results = await Promise.all( + services.map(async (service) => { + try { + const result = await service.function() + return { + key: service.key, + data: { + value: result, + timestamp: Date.now(), + } as ExternalDataReturnData, + } + } catch (error) { + return { + key: service.key, + data: { + error: error instanceof Error ? error.message : String(error), + } as ExternalDataReturnData, + } + } + }) + ) + + return results.reduce((acc, { key, data }) => { + acc[key] = data + return acc + }, {} as ExternalDataMap) +} diff --git a/src/lib/utils/data/getExternalData.ts b/src/lib/utils/data/getExternalData.ts new file mode 100644 index 00000000000..afa032f9ef1 --- /dev/null +++ b/src/lib/utils/data/getExternalData.ts @@ -0,0 +1,69 @@ +import { getRedisData } from "./clients/redisClient" +import { getSupabaseData } from "./clients/supabaseClient" +import { ExternalDataMap } from "./fetchExternalData" +import { loadMockDataForKeys } from "./loadMockData" + +const USE_MOCK_DATA = process.env.USE_MOCK_DATA === "true" + +/** + * Retrieves external data from Redis/Supabase storage. + * Caching is handled by the storage clients (getRedisData/getSupabaseData), + * allowing each client to implement its own caching strategy. + * + * If USE_MOCK_DATA environment variable is set to "true", it will load mock data + * from JSON files in src/data/mocks/ instead of fetching from storage. + * + * @param keys Array of keys to retrieve. + * @param revalidateSeconds Revalidation time in seconds (e.g., 3600 for hourly, 86400 for daily). This is passed to the storage clients for caching configuration. + * @returns Promise that resolves to the external data map, or null if not found + */ +export const getExternalData = async ( + keys: string[], + revalidateSeconds: number +): Promise => { + // If mock data is enabled, load from mock files instead of storage + if (USE_MOCK_DATA) { + console.warn("Using mock data for external services") + const mockDataMap = await loadMockDataForKeys(keys) + return Object.keys(mockDataMap).length > 0 ? mockDataMap : null + } + + // Sort keys to ensure consistent processing + const sortedKeys = [...keys].sort() + + try { + // Fetch data from Redis (with Supabase fallback) for each key + const results = await Promise.all( + sortedKeys.map(async (key) => { + try { + // Try Redis first (with caching) + let data = await getRedisData(key, revalidateSeconds) + + // Fallback to Supabase if Redis returns null (with caching) + if (data === null) { + data = await getSupabaseData(key, revalidateSeconds) + } + + return { key, data } + } catch (error) { + console.error(`Error fetching data for key "${key}":`, error) + return { key, data: null } + } + }) + ) + + // Build the data map - always include all requested keys, even if null/undefined + // This allows consumers to distinguish between "key not requested" vs "key requested but not found" + const dataMap = results.reduce((acc, { key, data }) => { + acc[key] = data as ExternalDataMap[string] + return acc + }, {} as ExternalDataMap) + + // Always return the map if keys were requested (even if all values are null/undefined) + // Only return null if no keys were requested + return sortedKeys.length > 0 ? dataMap : null + } catch (error) { + console.error("Error fetching external data:", error) + return null + } +} diff --git a/src/lib/utils/data/loadMockData.ts b/src/lib/utils/data/loadMockData.ts index 0c1f29ef2e6..a4285174a85 100644 --- a/src/lib/utils/data/loadMockData.ts +++ b/src/lib/utils/data/loadMockData.ts @@ -1,15 +1,111 @@ import fs from "fs/promises" import path from "path" +import type { ExternalDataReturnData } from "@/lib/types" + const MOCK_DATA_DIR = path.resolve("src/data/mocks") -export async function loadMockData(key: string): Promise { +/** + * Loads mock data from a JSON file for a given key. + * The mock data can be in: + * - ExternalDataReturnData format (e.g., { value: T, timestamp: number } or { error: string }) + * - Record format (e.g., beaconchainEpoch with nested values) + * If the mock data is not already in one of these formats, it will be wrapped. + * + * @param key The data key (e.g., "ethPrice", "beaconchainEpoch") + * @returns Promise resolving to ExternalDataReturnData, Record, or null if file doesn't exist + */ +export async function loadMockData( + key: string +): Promise< + ExternalDataReturnData | Record | null +> { try { const mockFilePath = path.join(MOCK_DATA_DIR, `${key}.json`) const mockDataRaw = await fs.readFile(mockFilePath, "utf-8") - return JSON.parse(mockDataRaw) as T + const parsedData = JSON.parse(mockDataRaw) + + // Check if the data is already in ExternalDataReturnData format + // (has "value" or "error" property at top level) + if ( + parsedData && + typeof parsedData === "object" && + ("value" in parsedData || "error" in parsedData) + ) { + return parsedData as ExternalDataReturnData + } + + // Check if the data is a Record + // (e.g., beaconchainEpoch with totalEthStaked, validatorscount) + // This format has nested objects with "value" or "error" properties + if ( + parsedData && + typeof parsedData === "object" && + !Array.isArray(parsedData) && + Object.values(parsedData).every( + (v) => v && typeof v === "object" && ("value" in v || "error" in v) + ) + ) { + return parsedData as Record + } + + // If not in the expected format, wrap it in { value: data, timestamp: now } + // This handles mock files that contain the raw data directly + return { + value: parsedData, + timestamp: Date.now(), + } as ExternalDataReturnData } catch (error) { + // File doesn't exist or can't be read - return null (graceful fallback) + if ( + error instanceof Error && + ((error as NodeJS.ErrnoException).code === "ENOENT" || + error.message.includes("ENOENT")) + ) { + console.warn(`Mock data file not found for key "${key}"`) + return null + } + + // Other errors (parse errors, etc.) - log and return null console.error(`Error loading mock data for key "${key}":`, error) - throw error + return null } } + +/** + * Loads mock data for multiple keys in parallel. + * + * @param keys Array of keys to load mock data for + * @returns Promise resolving to a map of key to ExternalDataReturnData or Record + */ +export async function loadMockDataForKeys( + keys: string[] +): Promise< + Record< + string, + ExternalDataReturnData | Record + > +> { + const results = await Promise.all( + keys.map(async (key) => { + const data = await loadMockData(key) + return { key, data } + }) + ) + + // Build the data map, only including keys that have data + const dataMap = results.reduce( + (acc, { key, data }) => { + if (data !== null) { + acc[key] = data + } + return acc + }, + {} as Record< + string, + ExternalDataReturnData | Record + > + ) + + return dataMap +} diff --git a/src/lib/utils/data/redisStoreFunction.ts b/src/lib/utils/data/redisStoreFunction.ts new file mode 100644 index 00000000000..0da0d3a847e --- /dev/null +++ b/src/lib/utils/data/redisStoreFunction.ts @@ -0,0 +1,26 @@ +import { storeRedis } from "./clients/redisClient" +import { ExternalDataMap } from "./fetchExternalData" + +export const redisStoreFunction = async (data: ExternalDataMap) => { + const results = await Promise.all( + Object.entries(data).map(async ([key, value]) => { + const success = await storeRedis(key, value) + return success + }) + ) + + const allSuccess = results.every((success) => success) + + if (allSuccess) { + console.log( + `Successfully stored ${Object.keys(data).length} external data entries` + ) + } else { + const successCount = results.filter((success) => success).length + console.warn( + `Stored ${successCount}/${Object.keys(data).length} external data entries` + ) + } + + return allSuccess +} diff --git a/src/lib/utils/data/storeExternalData.ts b/src/lib/utils/data/storeExternalData.ts new file mode 100644 index 00000000000..ee79de2757b --- /dev/null +++ b/src/lib/utils/data/storeExternalData.ts @@ -0,0 +1,24 @@ +import { redisStoreFunction } from "./clients/redisStoreFunction" +import { supabaseStoreFunction } from "./clients/supabaseStoreFunction" +import { ExternalDataMap } from "./fetchExternalData" + +/** + * Stores external data using multiple storage methods (Redis and Supabase). + * This function abstracts the storage layer, making it easy to swap storage implementations. + * + * @param data The external data map to store + * @returns Promise that resolves to true if storage was successful, false otherwise + */ +export const storeExternalData = async ( + data: ExternalDataMap +): Promise => { + if (Object.keys(data).length === 0) { + console.warn("No data to store") + return false + } + console.log("Storing external data...") + const successRedis = await redisStoreFunction(data) + const successSupabase = await supabaseStoreFunction(data) + + return successRedis && successSupabase +} diff --git a/src/lib/utils/data/supabaseStoreFunction.ts b/src/lib/utils/data/supabaseStoreFunction.ts new file mode 100644 index 00000000000..107917af8dc --- /dev/null +++ b/src/lib/utils/data/supabaseStoreFunction.ts @@ -0,0 +1,26 @@ +import { storeSupabase } from "./clients/supabaseClient" +import { ExternalDataMap } from "./fetchExternalData" + +export const supabaseStoreFunction = async (data: ExternalDataMap) => { + const results = await Promise.all( + Object.entries(data).map(async ([key, value]) => { + const success = await storeSupabase(key, value) + return success + }) + ) + + const allSuccess = results.every((success) => success) + + if (allSuccess) { + console.log( + `Successfully stored ${Object.keys(data).length} external data entries in Supabase` + ) + } else { + const successCount = results.filter((success) => success).length + console.warn( + `Stored ${successCount}/${Object.keys(data).length} external data entries in Supabase` + ) + } + + return allSuccess +} diff --git a/src/lib/utils/data/utils.ts b/src/lib/utils/data/utils.ts deleted file mode 100644 index cec5521bf69..00000000000 --- a/src/lib/utils/data/utils.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { - BASE_TIME_UNIT, - RETRY_DELAY_BASE_MS, - TIMEOUT_MS, -} from "@/lib/constants" - -/** - * Returns a delay time in milliseconds by adding a random jitter to the base delay. - * - * @param ms - The base delay in milliseconds. Defaults to `RETRY_DELAY_BASE_MS`. - * @param jitterMs - The maximum jitter in milliseconds to add to the base delay. Defaults to `RETRY_DELAY_BASE_MS`. - * @returns The total delay in milliseconds, including a random jitter. - */ -export const delayWithJitter = ( - ms: number = RETRY_DELAY_BASE_MS, - jitterMs: number = RETRY_DELAY_BASE_MS -) => ms + Math.floor(Math.random() * jitterMs) - -/** - * Delays execution for a specified number of milliseconds. - * - * @param ms - The number of milliseconds to sleep. - * @returns A promise that resolves after the specified delay. - */ -export const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms)) - -/** - * Determines whether a request should be retried based on the HTTP status code. - * - * Retries are recommended for: - * - 429 (Too Many Requests) - * - 5xx server errors (status codes between 500 and 599, inclusive) - * - * @param status - The HTTP status code to evaluate. - * @returns `true` if the request should be retried, otherwise `false`. - */ -export const shouldStatusRetry = (status: number) => - status === 429 || (status >= 500 && status <= 599) - -/** - * Fetches a resource with a specified timeout and optional revalidation. - * - * Initiates a fetch request to the provided URL or Request object, aborting the request if it exceeds the given delay. - * Optionally sets the `next.revalidate` property for caching behavior. - * - * @param href - The resource to fetch. Can be a string URL, a URL object, or a Request object. - * @param delay - The timeout in milliseconds before aborting the request. Defaults to `TIMEOUT_MS`. - * @param revalidate - The revalidation time in seconds or `false` to disable revalidation. Defaults to `BASE_TIME_UNIT`. - * @returns A promise that resolves to the fetch response. - */ -export const fetchWithTimeoutAndRevalidation = async ( - href: string | URL | globalThis.Request, - delay: number = TIMEOUT_MS, - revalidate: number | false = BASE_TIME_UNIT -) => { - const controller = new AbortController() - const timeout = setTimeout(() => controller.abort(), delay) - try { - return await fetch(href, { - signal: controller.signal, - next: { revalidate }, - }) - } finally { - clearTimeout(timeout) - } -} diff --git a/src/lib/utils/layer-2.ts b/src/lib/utils/layer-2.ts new file mode 100644 index 00000000000..9adba08066e --- /dev/null +++ b/src/lib/utils/layer-2.ts @@ -0,0 +1,84 @@ +import type { GrowThePieData } from "@/lib/types" + +import { layer2Data } from "@/data/networks/networks" + +type DataItem = { + metric_key: string + origin_key: string + date: string + value: number +} + +const TXCOSTS_MEDIAN_USD = "txcosts_median_usd" +const TXCOUNT = "txcount" +const ACTIVE_ADDRESSES = "aa_last7d" + +/** + * Processes raw GrowThePie API data into structured format. + * Handles filtering, date resolution, weighted averages, and data aggregation. + */ +export const processGrowThePieData = (data: DataItem[]): GrowThePieData => { + // Filter data to only include the metrics we need + const filteredData = data.filter((item) => + [TXCOSTS_MEDIAN_USD, TXCOUNT, ACTIVE_ADDRESSES].includes(item.metric_key) + ) + + const mostRecentDate = filteredData.reduce((latest, item) => { + const itemDate = new Date(item.date) + return itemDate > new Date(latest) ? item.date : latest + }, filteredData[0].date) + + const activeAddresses = filteredData + .filter((item) => item.date === mostRecentDate) + .filter((item) => item.metric_key === ACTIVE_ADDRESSES) + .reduce((acc, item) => { + return { + ...acc, + [item.origin_key]: item.value, + } + }, {}) + + const mostRecentData = filteredData.filter( + (item) => + item.date === mostRecentDate && + [TXCOSTS_MEDIAN_USD, TXCOUNT].includes(item.metric_key) + ) + + let totalTxCount = 0 + let weightedSum = 0 + + mostRecentData + .filter((item) => + layer2Data.some((l2) => l2.growthepieID === item.origin_key) + ) + .forEach((item) => { + if (item.metric_key !== TXCOSTS_MEDIAN_USD) return + + const txCountItem = mostRecentData.find( + (txItem) => + txItem.metric_key === TXCOUNT && txItem.origin_key === item.origin_key + ) + if (!txCountItem) return + + totalTxCount += txCountItem.value + weightedSum += item.value * txCountItem.value + }) + + // The weighted average of txcosts_median_usd, by txcount on each network (origin_key) + const weightedAverage = totalTxCount ? weightedSum / totalTxCount : 0 + + // Last updated timestamp + const timestamp = Date.now() + + return { + txCount: { value: totalTxCount, timestamp }, + txCostsMedianUsd: { value: weightedAverage, timestamp }, + dailyTxCosts: mostRecentData + .filter((item) => item.metric_key === TXCOSTS_MEDIAN_USD) + .reduce((acc, item) => { + acc[item.origin_key] = item.value + return acc + }, {}), + activeAddresses: activeAddresses, + } +} diff --git a/src/lib/utils/time.ts b/src/lib/utils/time.ts index 0eadcd13ad6..4b5a34927f6 100644 --- a/src/lib/utils/time.ts +++ b/src/lib/utils/time.ts @@ -21,3 +21,37 @@ export const getLocaleFormattedDate = (locale: Lang, date: string) => { return new Intl.DateTimeFormat(locale).format(walletLastUpdatedDate) } + +/** + * Returns a duration in seconds for the given interval. + * + * @param interval - "minute" | "hour" | "day" | "week" | "month" + * @param multiplier - Number of intervals (default: 1) + * @returns Duration in seconds + */ +export const every = ( + interval: "minute" | "hour" | "day" | "week" | "month", + multiplier: number = 1 +): number => { + const SECOND = 1 + const MINUTE = 60 * SECOND + const HOUR = 60 * MINUTE + const DAY = 24 * HOUR + const WEEK = 7 * DAY + const MONTH = 28 * DAY // approximate + + switch (interval) { + case "minute": + return multiplier * MINUTE + case "hour": + return multiplier * HOUR + case "day": + return multiplier * DAY + case "week": + return multiplier * WEEK + case "month": + return multiplier * MONTH + default: + return multiplier * DAY + } +} diff --git a/src/lib/utils/url.ts b/src/lib/utils/url.ts index 4452476f903..7ed831c0d9e 100644 --- a/src/lib/utils/url.ts +++ b/src/lib/utils/url.ts @@ -89,3 +89,17 @@ export const normalizeUrlForJsonLd = ( const url = new URL(path, SITE_URL) return url.toString() } + +/** + * Get the base URL for API requests. + * In development, uses localhost with the port from environment or default 3000. + * Otherwise uses SITE_URL. + */ +export const getBaseUrl = (): string => { + // In development, use localhost + if (process.env.NODE_ENV === "development") { + const port = process.env.PORT || "3000" + return `http://localhost:${port}` + } + return SITE_URL +} diff --git a/src/scripts/externalDataStorageCRONDaily.ts b/src/scripts/externalDataStorageCRONDaily.ts new file mode 100644 index 00000000000..f08bba93cee --- /dev/null +++ b/src/scripts/externalDataStorageCRONDaily.ts @@ -0,0 +1,35 @@ +import { fetchExternalData } from "@/lib/utils/data/fetchExternalData" +import { storeExternalData } from "@/lib/utils/data/storeExternalData" + +import { externalServicesDaily } from "@/data/external-services" + +import "dotenv/config" + +/** + * CRON job function to fetch and store external data in Redis. + * This version runs daily. + * Optionally set EXTERNAL_DATA_TTL_SECONDS environment variable to set TTL for stored data. + */ +export const externalDataStorageCRONDaily = async () => { + try { + console.log("Starting external data fetch and storage (daily)...") + const externalData = await fetchExternalData(externalServicesDaily) + + const success = await storeExternalData(externalData) + + if (success) { + console.log("External data storage completed successfully") + } else { + console.error("External data storage completed with errors") + process.exit(1) + } + } catch (error) { + console.error("Error in external data storage CRON:", error) + process.exit(1) + } +} + +// Run if executed directly +if (require.main === module) { + externalDataStorageCRONDaily() +} diff --git a/src/scripts/externalDataStorageCRONHourly.ts b/src/scripts/externalDataStorageCRONHourly.ts new file mode 100644 index 00000000000..cee741ea76b --- /dev/null +++ b/src/scripts/externalDataStorageCRONHourly.ts @@ -0,0 +1,35 @@ +import { fetchExternalData } from "@/lib/utils/data/fetchExternalData" +import { storeExternalData } from "@/lib/utils/data/storeExternalData" + +import { externalServicesHourly } from "@/data/external-services" + +import "dotenv/config" + +/** + * CRON job function to fetch and store external data in Redis. + * This version runs hourly. + * Optionally set EXTERNAL_DATA_TTL_SECONDS environment variable to set TTL for stored data. + */ +export const externalDataStorageCRONHourly = async () => { + try { + console.log("Starting external data fetch and storage (hourly)...") + const externalData = await fetchExternalData(externalServicesHourly) + + const success = await storeExternalData(externalData) + + if (success) { + console.log("External data storage completed successfully") + } else { + console.error("External data storage completed with errors") + process.exit(1) + } + } catch (error) { + console.error("Error in external data storage CRON:", error) + process.exit(1) + } +} + +// Run if executed directly +if (require.main === module) { + externalDataStorageCRONHourly() +} diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000000..839cc40e4c1 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,23 @@ +import path from "path" + +import { defineConfig } from "vitest/config" + +export default defineConfig({ + test: { + globals: true, + environment: "node", + exclude: [ + "**/node_modules/**", + "**/dist/**", + "**/.next/**", + "**/tests/e2e/**", + "**/*.e2e.{ts,tsx}", + "**/*.spec.{ts,tsx}", + ], + }, + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +})