diff --git a/.gitignore b/.gitignore index ed6b81bc873..7f2b60b0be7 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ # testing /coverage +tests/__results__/ +tests/__report__/ # next.js /.next/ @@ -65,3 +67,6 @@ src/data/crowdin/bucketsAwaitingReviewReport.csv build-storybook.log build-archive.log storybook-static + +# Trigger +.trigger diff --git a/package.json b/package.json index 15582da6b94..674dbb6a0d2 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,19 @@ "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:e2e": "playwright test", - "test:e2e:ui": "playwright test --ui", - "test:e2e:debug": "playwright test --debug", - "test:e2e:report": "playwright show-report tests/e2e/__report__" + "test:e2e": "playwright test --project=e2e", + "test:e2e:ui": "playwright test --project=e2e --ui", + "test:e2e:debug": "playwright test --project=e2e --debug", + "test:e2e:report": "playwright show-report tests/__report__", + "test:unit": "USE_MOCK_DATA=true playwright test --project=unit", + "trigger:dev": "dotenv -e .env -- npx trigger.dev@latest dev" }, "dependencies": { "@aws-sdk/client-ses": "^3.859.0", "@crowdin/crowdin-api-client": "^1.25.0", "@docsearch/react": "^3.5.2", "@hookform/resolvers": "^3.8.0", + "@netlify/blobs": "^10.4.1", "@next/bundle-analyzer": "^14.2.5", "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-avatar": "^1.1.2", @@ -60,6 +63,7 @@ "@tanstack/react-query": "^5.66.7", "@tanstack/react-table": "^8.19.3", "@tanstack/react-virtual": "^3.13.12", + "@trigger.dev/sdk": "4.2.0", "@types/canvas-confetti": "^1.9.0", "@types/three": "^0.177.0", "@wagmi/core": "^2.17.3", @@ -136,6 +140,7 @@ "chromatic": "12.0.0", "decompress": "^4.2.1", "dotenv": "^16.5.0", + "dotenv-cli": "^11.0.0", "eslint": "^8.57.1", "eslint-config-next": "^14.2.2", "eslint-config-prettier": "^9", @@ -166,4 +171,4 @@ "xml2js": "^0.6.2" }, "packageManager": "pnpm@10.12.4" -} +} \ No newline at end of file diff --git a/playwright.config.ts b/playwright.config.ts index 93f679fd493..51918786e6a 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -7,14 +7,14 @@ import { defineConfig, devices } from "@playwright/test" dotenv.config({ path: path.resolve(__dirname, ".env.local") }) export default defineConfig({ - testDir: "./tests/e2e", - outputDir: "./tests/e2e/__results__", + testDir: "./tests", + outputDir: "./tests/__results__", fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : 3, reporter: [ - ["html", { outputFolder: "./tests/e2e/__report__", open: "never" }], + ["html", { outputFolder: "./tests/__report__", open: "never" }], ["line"], process.env.CI ? ["github"] : ["list"], ], @@ -39,23 +39,32 @@ export default defineConfig({ timeout: 10000, }, projects: [ - /* Test against desktop browsers */ + /* E2E tests - require browser */ { - name: "chromium", + name: "e2e", + testDir: "./tests/e2e", use: { ...devices["Desktop Chrome"] }, }, { - name: "webkit", + name: "e2e-webkit", + testDir: "./tests/e2e", use: { ...devices["Desktop Safari"] }, }, - /* Test against mobile viewports. */ { - name: "Mobile Chrome", + name: "e2e-mobile-chrome", + testDir: "./tests/e2e", use: { ...devices["Pixel 5"] }, }, { - name: "Mobile Safari", + name: "e2e-mobile-safari", + testDir: "./tests/e2e", use: { ...devices["iPhone 12"] }, }, + /* Unit tests - no browser needed */ + { + name: "unit", + testDir: "./tests/unit", + use: {}, + }, ], }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee0f838a033..71e30663113 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@hookform/resolvers': specifier: ^3.8.0 version: 3.10.0(react-hook-form@7.57.0(react@18.3.1)) + '@netlify/blobs': + specifier: ^10.4.1 + version: 10.4.1 '@next/bundle-analyzer': specifier: ^14.2.5 version: 14.2.29(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -85,7 +88,7 @@ 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.25.76))(wagmi@2.15.4(@netlify/blobs@10.4.1)(@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.25.76))(zod@3.25.76)) '@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)) @@ -101,6 +104,9 @@ importers: '@tanstack/react-virtual': specifier: ^3.13.12 version: 3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@trigger.dev/sdk': + specifier: 4.2.0 + version: 4.2.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@types/canvas-confetti': specifier: ^1.9.0 version: 1.9.0 @@ -109,7 +115,7 @@ importers: version: 0.177.0 '@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)) + 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.25.76)) canvas-confetti: specifier: ^1.9.3 version: 1.9.3 @@ -232,10 +238,10 @@ importers: version: 1.1.2(@types/react-dom@18.2.19)(@types/react@18.2.57)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) viem: specifier: ^2.23.3 - version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) 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(@netlify/blobs@10.4.1)(@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.25.76))(zod@3.25.76) yaml-loader: specifier: ^0.8.0 version: 0.8.1 @@ -269,7 +275,7 @@ importers: version: 8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10)) '@storybook/nextjs': specifier: ^8.6.14 - version: 8.6.14(babel-plugin-macros@3.1.0)(esbuild@0.25.5)(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-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(type-fest@2.19.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5)) + version: 8.6.14(babel-plugin-macros@3.1.0)(esbuild@0.25.5)(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-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5)) '@storybook/react': specifier: 8.6.14 version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(typescript@5.8.3) @@ -324,6 +330,9 @@ importers: dotenv: specifier: ^16.5.0 version: 16.5.0 + dotenv-cli: + specifier: ^11.0.0 + version: 11.0.0 eslint: specifier: ^8.57.1 version: 8.57.1 @@ -1167,6 +1176,9 @@ packages: resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} + '@bugsnag/cuid@3.2.1': + resolution: {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==} + '@chromatic-com/playwright@0.12.5': resolution: {integrity: sha512-KTPunElGUUEu1ks+G41pJB/WXf+1HeYBnvauvDpJfMlICKoZlL3in0gIUoER/La/zXC/YEKL4BeXvq/JnRQvUw==} hasBin: true @@ -1227,6 +1239,9 @@ packages: peerDependencies: '@noble/ciphers': ^1.0.0 + '@electric-sql/client@1.0.14': + resolution: {integrity: sha512-LtPAfeMxXRiYS0hyDQ5hue2PjljUiK9stvzsVyVb4nwxWQxfOWTSF42bHTs/o5i3x1T4kAQ7mwHpxa4A+f8X7Q==} + '@emnapi/core@1.4.3': resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} @@ -1286,6 +1301,10 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@envelop/instrumentation@1.0.0': + resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} + engines: {node: '>=18.0.0'} + '@esbuild/aix-ppc64@0.25.5': resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} engines: {node: '>=18'} @@ -1470,6 +1489,9 @@ packages: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + '@fastify/busboy@3.2.0': + resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} + '@floating-ui/core@1.7.1': resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} @@ -1503,6 +1525,10 @@ packages: '@formatjs/intl-localematcher@0.6.1': resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + '@google-cloud/precise-date@4.0.0': + resolution: {integrity: sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==} + engines: {node: '>=14.0.0'} + '@hookform/resolvers@3.10.0': resolution: {integrity: sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==} peerDependencies: @@ -1776,6 +1802,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jsonhero/path@1.0.21': + resolution: {integrity: sha512-gVUDj/92acpVoJwsVJ/RuWOaHyG4oFzn898WNGQItLCTQ+hOaVlEaImhwE1WqOTf+l3dGOUkbSiVKlb3q1hd1Q==} + '@kurkle/color@0.3.4': resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} @@ -1871,13 +1900,32 @@ packages: resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} + '@microsoft/fetch-event-source@2.0.1': + resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==} + '@napi-rs/wasm-runtime@0.2.10': resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} + '@netlify/blobs@10.4.1': + resolution: {integrity: sha512-43wntITwgocQxJThPxtgZ9XCPk2wAXrqD61uqgcIG2EhT/cXpvfEGEo6nLXXtb9irW6nQVXusJeLHEhKJFC4Vg==} + engines: {node: ^14.16.0 || >=16.0.0} + + '@netlify/dev-utils@4.3.2': + resolution: {integrity: sha512-Nl6c5UVLbpOwvzVaT6fJycdkc3EswqFoI9c2hZ3WUUX+kQ2ojdrkFMuKcPERaGXYxrhy/uGk1CURAflG8YC2RA==} + engines: {node: ^18.14.0 || >=20} + + '@netlify/otel@5.0.0': + resolution: {integrity: sha512-7EWbS+puDub800IQ9MUVcLrWwCNPyK/u1Rs08f0Y+O4dBGVkuTm/RyaLoU58PPLuNCfPHXebfIYFZxN+/CtZeA==} + engines: {node: ^18.14.0 || >=20.6.1} + '@netlify/plugin-nextjs@5.12.0': resolution: {integrity: sha512-SXQY/nCiSOSAZWNls/DQxrICldUR7PHSMUw2J2/ZejH1dk12Vwd3+SzSihHrRW9PNcErZkC2g3seM7bWZlvBRg==} engines: {node: '>=18.0.0'} + '@netlify/runtime-utils@2.2.1': + resolution: {integrity: sha512-dyJeuggzQM8+Dsi0T8Z9UjfLJ6vCmNC36W6WE2aqzfTdTw4wPkh2xlEu4LoD75+TGuYK7jIhEoU2QcCXOzfyAQ==} + engines: {node: ^18.14.0 || >=20} + '@next/bundle-analyzer@14.2.29': resolution: {integrity: sha512-5H2FPagh/K4g00MLHK0M70OnRfhN2rpb4Z6+jJZBNJ5VrFP7XkbUHlX4idhPwGNuwLAR2UbWZo4wEl6iPFukHw==} @@ -2008,18 +2056,42 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@opentelemetry/context-async-hooks@1.30.1': + resolution: {integrity: sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/context-async-hooks@2.0.1': resolution: {integrity: sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/core@1.30.1': + resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/core@2.0.1': resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/exporter-logs-otlp-http@0.203.0': + resolution: {integrity: sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-http@0.203.0': + resolution: {integrity: sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-amqplib@0.50.0': resolution: {integrity: sha512-kwNs/itehHG/qaQBcVrLNcvXVPW0I4FCOVtw3LHMLdYIqD7GJ6Yv2nX+a4YHjzbzIeRYj8iyMp0Bl7tlkidq5w==} engines: {node: ^18.19.0 || >=20.6.0} @@ -2164,22 +2236,86 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/otlp-exporter-base@0.203.0': + resolution: {integrity: sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.203.0': + resolution: {integrity: sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/propagator-b3@1.30.1': + resolution: {integrity: sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-jaeger@1.30.1': + resolution: {integrity: sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/redis-common@0.38.0': resolution: {integrity: sha512-4Wc0AWURII2cfXVVoZ6vDqK+s5n4K5IssdrlVrvGsx6OEOKdghKtJZqXAHWFiZv4nTDLH2/2fldjIHY8clMOjQ==} engines: {node: ^18.19.0 || >=20.6.0} + '@opentelemetry/resources@1.30.1': + resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/resources@2.0.1': resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' + '@opentelemetry/sdk-logs@0.203.0': + resolution: {integrity: sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@2.0.1': + resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.9.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@1.30.1': + resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/sdk-trace-base@2.0.1': resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' + '@opentelemetry/sdk-trace-node@1.30.1': + resolution: {integrity: sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-trace-node@2.0.1': + resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.28.0': + resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} + engines: {node: '>=14'} + '@opentelemetry/semantic-conventions@1.36.0': resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==} engines: {node: '>=14'} @@ -2237,6 +2373,39 @@ packages: peerDependencies: '@opentelemetry/api': ^1.8 + '@protobuf-ts/runtime@2.11.1': + resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -2943,6 +3112,11 @@ packages: '@rushstack/eslint-patch@1.11.0': resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} + '@s2-dev/streamstore@0.17.3': + resolution: {integrity: sha512-UeXL5+MgZQfNkbhCgEDVm7PrV5B3bxh6Zp4C5pUzQQwaoA+iGh2QiiIptRZynWgayzRv4vh0PYfnKpTzJEXegQ==} + peerDependencies: + typescript: ^5.9.3 + '@safe-global/safe-apps-provider@0.18.6': resolution: {integrity: sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==} @@ -3772,6 +3946,20 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@trigger.dev/core@4.2.0': + resolution: {integrity: sha512-VcgZF3n77Wwfr0gD7JqoLnC46uK5bPnu73WBRuQRRdNS8MYijuEh9TpsmJ9ndkC9Ji+m5YwsqwEnqZPA7UYhag==} + engines: {node: '>=18.20.0'} + + '@trigger.dev/sdk@4.2.0': + resolution: {integrity: sha512-OoZIN63qW1Qxsi8QqncWVt45n7wym9ZRvJZxeC/Ly/nhcTHJarRJFRBtyNnPJUDXIW+nRZZFh/Tt3Np3URnCnw==} + engines: {node: '>=18.20.0'} + peerDependencies: + ai: ^4.2.0 || ^5.0.0 + zod: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + ai: + optional: true + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -3827,6 +4015,12 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + '@types/d3-array@3.2.1': resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} @@ -4415,6 +4609,26 @@ packages: '@webgpu/types@0.1.61': resolution: {integrity: sha512-w2HbBvH+qO19SB5pJOJFKs533CdZqxl3fcGonqL321VHkW7W/iBo6H8bjDy6pr/+pbMwIu5dnuaAxH7NxBqUrQ==} + '@whatwg-node/disposablestack@0.0.6': + resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} + engines: {node: '>=18.0.0'} + + '@whatwg-node/fetch@0.10.13': + resolution: {integrity: sha512-b4PhJ+zYj4357zwk4TTuF2nEe0vVtOrwdsrNo5hL+u1ojXNhh1FgJ6pg1jzDlwlT4oBdzfSwaBwMCtFCsIWg8Q==} + engines: {node: '>=18.0.0'} + + '@whatwg-node/node-fetch@0.8.4': + resolution: {integrity: sha512-AlKLc57loGoyYlrzDbejB9EeR+pfdJdGzbYnkEuZaGekFboBwzfVYVMsy88PMriqPI1ORpiGYGgSSWpx7a2sDA==} + engines: {node: '>=18.0.0'} + + '@whatwg-node/promise-helpers@1.3.2': + resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} + engines: {node: '>=16.0.0'} + + '@whatwg-node/server@0.10.17': + resolution: {integrity: sha512-QxI+HQfJeI/UscFNCTcSri6nrHP25mtyAMbhEri7W2ctdb3EsorPuJz7IovSgNjvKVs73dg9Fmayewx1O2xOxA==} + engines: {node: '>=18.0.0'} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -4436,6 +4650,10 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + accessor-fn@1.5.3: resolution: {integrity: sha512-rkAofCwe/FvYFUlMB0v0gWmhqtfAtV1IUkdPbfhTUyYniu5LrC0A0UJkTH0Jv3S8SvwkmfuAlY+mQIJATdocMA==} engines: {node: '>=12'} @@ -4529,6 +4747,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -4690,6 +4912,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -4704,6 +4930,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bintrees@1.0.2: + resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} + bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} @@ -4810,6 +5039,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + callsite@1.0.0: + resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -5037,6 +5269,14 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + core-js-compat@3.42.0: resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} @@ -5046,6 +5286,10 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -5085,6 +5329,10 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cronstrue@2.59.0: + resolution: {integrity: sha512-YKGmAy84hKH+hHIIER07VCAHf9u0Ldelx1uU6EBxsRPDXIA1m5fsKmJfyC3xBhw6cVC/1i83VdbL4PvepTrt8A==} + hasBin: true + cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} @@ -5282,6 +5530,9 @@ packages: supports-color: optional: true + decache@4.6.2: + resolution: {integrity: sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==} + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -5391,6 +5642,9 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dettle@1.0.5: + resolution: {integrity: sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -5464,10 +5718,26 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-prop@9.0.0: + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} + engines: {node: '>=18'} + + dotenv-cli@11.0.0: + resolution: {integrity: sha512-r5pA8idbk7GFWuHEU7trSTflWcdBpQEK+Aw17UrSHjS6CReuhrrPcyC3zcQBPQvhArRHnBo/h6eLH1fkCvNlww==} + hasBin: true + + dotenv-expand@12.0.3: + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==} + engines: {node: '>=12'} + dotenv@16.5.0: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -5524,6 +5794,10 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -5533,6 +5807,9 @@ packages: endent@2.1.0: resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} + engine.io-client@6.5.4: + resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + engine.io-client@6.6.3: resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} @@ -5540,6 +5817,10 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} + engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engines: {node: '>=10.2.0'} + enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -5555,6 +5836,10 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -5848,9 +6133,20 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + evt@2.5.9: + resolution: {integrity: sha512-GpjX476FSlttEGWHT8BdVMoI8wGXQGbEOtKcP4E+kggg+yJzXBZN2n4x7TS/zPBJ1DZqWI+rguZZApjjzQ0HpA==} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -6316,6 +6612,11 @@ packages: engines: {node: '>=16.x'} hasBin: true + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} + engines: {node: '>=16.x'} + hasBin: true + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -6550,6 +6851,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -6599,6 +6904,15 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jose@5.10.0: + resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} + + jpeg-js@0.4.4: + resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} + + js-image-generator@1.0.4: + resolution: {integrity: sha512-ckb7kyVojGAnArouVR+5lBIuwU1fcrn7E/YYSd0FK7oIngAkMmRvHASLro9Zt5SQdWToaI66NybG+OGxPw/HlQ==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -6762,6 +7076,9 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -7041,6 +7358,9 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimal-polyfills@2.2.3: + resolution: {integrity: sha512-oxdmJ9cL+xV72h0xYxp4tP2d5/fTBpP45H8DIOn9pASuF8a3IYTf+25fMGDYGiWW+MFsuog6KD6nfmhZJQ+uUw==} + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -7101,6 +7421,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-postinstall@0.2.4: resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -7109,6 +7434,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -7350,6 +7679,10 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -7717,12 +8050,20 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} + proxy-compare@2.6.0: resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==} @@ -8113,6 +8454,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-exclusive@2.2.19: + resolution: {integrity: sha512-K3mdoAi7tjJ/qT7Flj90L7QyPozwUaAG+CVhkdDje4HLKXUYC3N/Jzkau3flHVDLQVhiHBtcimVodMjN9egYbA==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -8292,9 +8636,19 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + slug@6.1.0: + resolution: {integrity: sha512-x6vLHCMasg4DR2LPiyFGI0gJJhywY6DTiGhCrOMzb3SOk/0JVLIaL4UhyFSHu04SD3uAavrKY/K3zZ3i6iRcgA==} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} + socket.io-client@4.8.1: resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} engines: {node: '>=10.0.0'} @@ -8303,6 +8657,10 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} + socket.io@4.7.4: + resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==} + engines: {node: '>=10.2.0'} + sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} @@ -8349,6 +8707,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'} @@ -8531,6 +8892,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + superstruct@1.0.4: resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} engines: {node: '>=14.0.0'} @@ -8586,6 +8951,9 @@ packages: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} + tdigest@0.1.2: + resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + terser-webpack-plugin@5.3.14: resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} @@ -8666,6 +9034,9 @@ packages: 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'} @@ -8678,6 +9049,13 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + to-buffer@1.1.1: resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} @@ -8744,6 +9122,9 @@ packages: typescript: optional: true + tsafe@1.8.12: + resolution: {integrity: sha512-nFRqW0ttu/2o6XTXsHiVZWJBCOaxhVqZLg7dgs3coZNsCMPXPfwz+zPHAQA+70fNnVJLAPg1EgGIqK9Q84tvAw==} + tsconfig-paths-webpack-plugin@4.1.0: resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} engines: {node: '>=10.13.0'} @@ -8789,6 +9170,10 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -8820,6 +9205,10 @@ packages: uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + ulid@2.4.0: + resolution: {integrity: sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==} + hasBin: true + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -8980,6 +9369,9 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} + urlpattern-polyfill@10.1.0: + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -9048,6 +9440,10 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -9071,6 +9467,10 @@ packages: react: optional: true + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vaul@1.1.2: resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} peerDependencies: @@ -9222,6 +9622,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -9278,6 +9682,10 @@ packages: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + xmlhttprequest-ssl@2.1.2: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} @@ -9328,9 +9736,21 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zod-error@1.5.0: + resolution: {integrity: sha512-zzopKZ/skI9iXpqCEPj+iLCKl9b88E43ehcU+sbRoHuwGd9F1IDVGQ70TyO6kmfiRL1g4IXkjsXK+g1gLYl4WQ==} + + zod-validation-error@1.5.0: + resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} + engines: {node: '>=16.0.0'} + peerDependencies: + zod: ^3.18.0 + zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zustand@5.0.0: resolution: {integrity: sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==} engines: {node: '>=12.20.0'} @@ -9895,7 +10315,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: @@ -10559,6 +10979,8 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@bugsnag/cuid@3.2.1': {} + '@chromatic-com/playwright@0.12.5(@playwright/test@1.53.1)(@types/react@18.2.57)(bufferutil@4.0.9)(esbuild@0.25.5)(prettier@3.5.3)(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@chromaui/rrweb-snapshot': 2.0.0-alpha.18-noAbsolute @@ -10655,6 +11077,12 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 + '@electric-sql/client@1.0.14': + dependencies: + '@microsoft/fetch-event-source': 2.0.1 + optionalDependencies: + '@rollup/rollup-darwin-arm64': 4.46.2 + '@emnapi/core@1.4.3': dependencies: '@emnapi/wasi-threads': 1.0.2 @@ -10748,6 +11176,11 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} + '@envelop/instrumentation@1.0.0': + dependencies: + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + '@esbuild/aix-ppc64@0.25.5': optional: true @@ -10866,6 +11299,8 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 + '@fastify/busboy@3.2.0': {} + '@floating-ui/core@1.7.1': dependencies: '@floating-ui/utils': 0.2.9 @@ -10913,6 +11348,8 @@ snapshots: dependencies: tslib: 2.8.1 + '@google-cloud/precise-date@4.0.0': {} + '@hookform/resolvers@3.10.0(react-hook-form@7.57.0(react@18.3.1))': dependencies: react-hook-form: 7.57.0(react@18.3.1) @@ -11126,6 +11563,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jsonhero/path@1.0.21': {} + '@kurkle/color@0.3.4': {} '@lit-labs/ssr-dom-shim@1.3.0': {} @@ -11251,7 +11690,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 @@ -11275,7 +11714,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 @@ -11311,9 +11750,9 @@ 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 + semver: 7.7.3 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -11325,13 +11764,15 @@ 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.3 uuid: 9.0.1 transitivePeerDependencies: - supports-color + '@microsoft/fetch-event-source@2.0.1': {} + '@napi-rs/wasm-runtime@0.2.10': dependencies: '@emnapi/core': 1.4.3 @@ -11339,8 +11780,46 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true + '@netlify/blobs@10.4.1': + dependencies: + '@netlify/dev-utils': 4.3.2 + '@netlify/otel': 5.0.0 + '@netlify/runtime-utils': 2.2.1 + transitivePeerDependencies: + - supports-color + + '@netlify/dev-utils@4.3.2': + dependencies: + '@whatwg-node/server': 0.10.17 + ansis: 4.2.0 + chokidar: 4.0.3 + decache: 4.6.2 + dettle: 1.0.5 + dot-prop: 9.0.0 + empathic: 2.0.0 + env-paths: 3.0.0 + image-size: 2.0.2 + js-image-generator: 1.0.4 + parse-gitignore: 2.0.0 + semver: 7.7.3 + tmp-promise: 3.0.3 + uuid: 13.0.0 + write-file-atomic: 5.0.1 + + '@netlify/otel@5.0.0': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 1.30.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@netlify/plugin-nextjs@5.12.0': {} + '@netlify/runtime-utils@2.2.1': {} + '@next/bundle-analyzer@14.2.29(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: webpack-bundle-analyzer: 4.10.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -11433,15 +11912,42 @@ snapshots: '@opentelemetry/api@1.9.0': {} + '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + '@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/exporter-logs-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-http@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib@0.50.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -11648,29 +12154,101 @@ snapshots: '@types/shimmer': 1.2.0 import-in-the-middle: 1.14.2 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.3 shimmer: 1.2.1 transitivePeerDependencies: - supports-color - '@opentelemetry/redis-common@0.38.0': {} - - '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-exporter-base@0.203.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 + '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-transformer@0.203.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.36.0 - - '@opentelemetry/semantic-conventions@1.36.0': {} + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + protobufjs: 7.5.4 - '@opentelemetry/sql-common@0.41.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-b3@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-jaeger@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/redis-common@0.38.0': {} + + '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/sdk-logs@0.203.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + + '@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + + '@opentelemetry/sdk-trace-node@1.30.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) + semver: 7.7.3 + + '@opentelemetry/sdk-trace-node@2.0.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.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) + + '@opentelemetry/semantic-conventions@1.28.0': {} + + '@opentelemetry/semantic-conventions@1.36.0': {} + + '@opentelemetry/sql-common@0.41.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) @@ -11684,7 +12262,7 @@ snapshots: dependencies: playwright: 1.53.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.16(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.16(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5))': dependencies: ansi-html: 0.0.9 core-js-pure: 3.42.0 @@ -11696,7 +12274,7 @@ snapshots: source-map: 0.7.4 webpack: 5.99.9(esbuild@0.25.5) optionalDependencies: - type-fest: 2.19.0 + type-fest: 4.41.0 webpack-hot-middleware: 2.26.1 '@polka/url@1.0.0-next.29': {} @@ -11708,6 +12286,31 @@ snapshots: transitivePeerDependencies: - supports-color + '@protobuf-ts/runtime@2.11.1': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.2': {} @@ -12281,7 +12884,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.25.76))(wagmi@2.15.4(@netlify/blobs@10.4.1)(@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.25.76))(zod@3.25.76))': dependencies: '@tanstack/react-query': 5.80.2(react@18.3.1) '@vanilla-extract/css': 1.15.5(babel-plugin-macros@3.1.0) @@ -12293,8 +12896,8 @@ snapshots: react-dom: 18.3.1(react@18.3.1) 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) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.15.4(@netlify/blobs@10.4.1)(@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.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - babel-plugin-macros @@ -12310,13 +12913,24 @@ 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-common@1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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) + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-controllers@1.7.3(@netlify/blobs@10.4.1)(@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.25.76)': + dependencies: + '@reown/appkit-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) 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) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12348,12 +12962,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(@netlify/blobs@10.4.1)(@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.25.76)': 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-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) + '@reown/appkit-ui': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) + '@reown/appkit-utils': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) '@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: @@ -12384,10 +12998,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(@netlify/blobs@10.4.1)(@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.25.76)': 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-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) '@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 @@ -12418,16 +13032,16 @@ 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(@netlify/blobs@10.4.1)(@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.25.76)': 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-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) '@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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) 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) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12466,20 +13080,20 @@ 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(@netlify/blobs@10.4.1)(@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.25.76)': 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-common': 1.7.3(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) '@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(@netlify/blobs@10.4.1)(@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.25.76) + '@reown/appkit-ui': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) + '@reown/appkit-utils': 1.7.3(@netlify/blobs@10.4.1)(@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.25.76) '@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(@netlify/blobs@10.4.1) + '@walletconnect/universal-provider': 2.19.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) 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) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12591,9 +13205,14 @@ snapshots: '@rushstack/eslint-patch@1.11.0': {} - '@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)': + '@s2-dev/streamstore@0.17.3(typescript@5.8.3)': + dependencies: + '@protobuf-ts/runtime': 2.11.1 + typescript: 5.8.3 + + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@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) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -12601,10 +13220,10 @@ snapshots: - utf-8-validate - zod - '@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)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -13523,7 +14142,7 @@ snapshots: dependencies: storybook: 8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10) - '@storybook/nextjs@8.6.14(babel-plugin-macros@3.1.0)(esbuild@0.25.5)(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-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(type-fest@2.19.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5))': + '@storybook/nextjs@8.6.14(babel-plugin-macros@3.1.0)(esbuild@0.25.5)(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-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5))': dependencies: '@babel/core': 7.27.4 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) @@ -13538,7 +14157,7 @@ snapshots: '@babel/preset-react': 7.27.1(@babel/core@7.27.4) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) '@babel/runtime': 7.27.4 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-hot-middleware@2.26.1)(webpack@5.99.9(esbuild@0.25.5)) '@storybook/builder-webpack5': 8.6.14(esbuild@0.25.5)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(typescript@5.8.3) '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10)))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(typescript@5.8.3) '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.14(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@5.0.10))(typescript@5.8.3) @@ -13634,7 +14253,7 @@ snapshots: '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.99.9(esbuild@0.25.5))': dependencies: - debug: 4.4.1 + debug: 4.4.3 endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -13866,6 +14485,68 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 + '@trigger.dev/core@4.2.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)': + dependencies: + '@bugsnag/cuid': 3.2.1 + '@electric-sql/client': 1.0.14 + '@google-cloud/precise-date': 4.0.0 + '@jsonhero/path': 1.0.21 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.203.0 + '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.36.0 + '@s2-dev/streamstore': 0.17.3(typescript@5.8.3) + dequal: 2.0.3 + eventsource: 3.0.7 + eventsource-parser: 3.0.6 + execa: 8.0.1 + humanize-duration: 3.33.1 + jose: 5.10.0 + nanoid: 3.3.8 + prom-client: 15.1.3 + socket.io: 4.7.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-client: 4.7.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + std-env: 3.10.0 + superjson: 2.2.6 + tinyexec: 0.3.2 + uncrypto: 0.1.3 + zod: 3.25.76 + zod-error: 1.5.0 + zod-validation-error: 1.5.0(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@trigger.dev/sdk@4.2.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.36.0 + '@trigger.dev/core': 4.2.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) + chalk: 5.4.1 + cronstrue: 2.59.0 + debug: 4.4.3 + evt: 2.5.9 + slug: 6.1.0 + ulid: 2.4.0 + uncrypto: 0.1.3 + uuid: 9.0.1 + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + zod: 3.25.76 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + '@trysound/sax@0.2.0': {} '@tsconfig/node10@1.0.11': {} @@ -13933,6 +14614,12 @@ snapshots: dependencies: '@types/node': 20.17.57 + '@types/cookie@0.4.1': {} + + '@types/cors@2.8.19': + dependencies: + '@types/node': 20.17.57 + '@types/d3-array@3.2.1': {} '@types/d3-color@3.1.3': {} @@ -14147,7 +14834,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 @@ -14187,7 +14874,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/utils': 8.33.1(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -14204,7 +14891,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.4.1 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 semver: 7.7.2 @@ -14235,7 +14922,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -14411,16 +15098,16 @@ 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)': + '@wagmi/connectors@5.8.3(@netlify/blobs@10.4.1)(@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.25.76)))(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.25.76))(zod@3.25.76)': 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) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@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.25.76)) + '@walletconnect/ethereum-provider': 2.20.2(@netlify/blobs@10.4.1)(@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.25.76) 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) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -14450,11 +15137,11 @@ snapshots: - utf-8-validate - zod - '@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))': + '@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.25.76))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.8.3) - viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) zustand: 5.0.0(@types/react@18.2.57)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) optionalDependencies: '@tanstack/query-core': 5.80.2 @@ -14465,11 +15152,11 @@ snapshots: - react - use-sync-external-store - '@wagmi/core@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))': + '@wagmi/core@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.25.76))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.8.3) - viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) zustand: 5.0.0(@types/react@18.2.57)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) optionalDependencies: '@tanstack/query-core': 5.80.2 @@ -14480,21 +15167,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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1) '@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(@netlify/blobs@10.4.1) + '@walletconnect/utils': 2.19.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14523,21 +15210,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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1) '@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(@netlify/blobs@10.4.1) + '@walletconnect/utils': 2.20.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14570,18 +15257,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(@netlify/blobs@10.4.1)(@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.25.76)': 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(@netlify/blobs@10.4.1)(@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.25.76) '@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(@netlify/blobs@10.4.1) + '@walletconnect/sign-client': 2.20.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.20.2(@netlify/blobs@10.4.1) + '@walletconnect/universal-provider': 2.20.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.20.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14657,11 +15344,11 @@ snapshots: - bufferutil - utf-8-validate - '@walletconnect/keyvaluestorage@1.1.1': + '@walletconnect/keyvaluestorage@1.1.1(@netlify/blobs@10.4.1)': 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(@netlify/blobs@10.4.1)(idb-keyval@6.2.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14702,16 +15389,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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@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(@netlify/blobs@10.4.1) + '@walletconnect/utils': 2.19.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14737,16 +15424,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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@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(@netlify/blobs@10.4.1) + '@walletconnect/utils': 2.20.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14776,12 +15463,12 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/types@2.19.2': + '@walletconnect/types@2.19.2(@netlify/blobs@10.4.1)': 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(@netlify/blobs@10.4.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -14804,12 +15491,12 @@ snapshots: - ioredis - uploadthing - '@walletconnect/types@2.20.2': + '@walletconnect/types@2.20.2(@netlify/blobs@10.4.1)': 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(@netlify/blobs@10.4.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -14832,18 +15519,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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1) '@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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.2(@netlify/blobs@10.4.1) + '@walletconnect/utils': 2.19.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -14871,18 +15558,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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1) '@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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.20.2(@netlify/blobs@10.4.1) + '@walletconnect/utils': 2.20.2(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -14910,25 +15597,25 @@ 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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1) '@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(@netlify/blobs@10.4.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14953,25 +15640,25 @@ 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(@netlify/blobs@10.4.1)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76)': 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(@netlify/blobs@10.4.1) '@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(@netlify/blobs@10.4.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15083,6 +15770,35 @@ snapshots: '@webgpu/types@0.1.61': {} + '@whatwg-node/disposablestack@0.0.6': + dependencies: + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@whatwg-node/fetch@0.10.13': + dependencies: + '@whatwg-node/node-fetch': 0.8.4 + urlpattern-polyfill: 10.1.0 + + '@whatwg-node/node-fetch@0.8.4': + dependencies: + '@fastify/busboy': 3.2.0 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@whatwg-node/promise-helpers@1.3.2': + dependencies: + tslib: 2.8.1 + + '@whatwg-node/server@0.10.17': + dependencies: + '@envelop/instrumentation': 1.0.0 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/fetch': 0.10.13 + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -15092,10 +15808,20 @@ snapshots: typescript: 5.8.3 zod: 3.22.4 + abitype@1.0.8(typescript@5.8.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.8.3 + zod: 3.25.76 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + accessor-fn@1.5.3: {} acorn-import-attributes@1.9.5(acorn@8.14.1): @@ -15119,7 +15845,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -15186,6 +15912,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@4.2.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -15387,6 +16115,8 @@ snapshots: base64-js@1.5.1: {} + base64id@2.0.0: {} + better-opn@3.0.2: dependencies: open: 8.4.2 @@ -15397,6 +16127,8 @@ snapshots: binary-extensions@2.3.0: {} + bintrees@1.0.2: {} + bl@1.2.3: dependencies: readable-stream: 2.3.8 @@ -15535,6 +16267,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + callsite@1.0.0: {} + callsites@3.1.0: {} camel-case@4.1.2: @@ -15724,6 +16458,12 @@ snapshots: cookie-es@1.2.2: {} + cookie@0.4.2: {} + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + core-js-compat@3.42.0: dependencies: browserslist: 4.25.0 @@ -15732,6 +16472,11 @@ snapshots: core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -15784,6 +16529,8 @@ snapshots: create-require@1.1.1: {} + cronstrue@2.59.0: {} + cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 @@ -15987,6 +16734,10 @@ snapshots: dependencies: ms: 2.1.3 + decache@4.6.2: + dependencies: + callsite: 1.0.0 + decamelize@1.2.0: {} decimal.js-light@2.5.1: {} @@ -16092,6 +16843,8 @@ snapshots: detect-node-es@1.1.0: {} + dettle@1.0.5: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -16176,8 +16929,25 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + dot-prop@9.0.0: + dependencies: + type-fest: 4.41.0 + + dotenv-cli@11.0.0: + dependencies: + cross-spawn: 7.0.6 + dotenv: 17.2.3 + dotenv-expand: 12.0.3 + minimist: 1.2.8 + + dotenv-expand@12.0.3: + dependencies: + dotenv: 16.5.0 + dotenv@16.5.0: {} + dotenv@17.2.3: {} + dset@3.1.4: {} dunder-proto@1.0.1: @@ -16238,6 +17008,8 @@ snapshots: emojis-list@3.0.0: {} + empathic@2.0.0: {} + encode-utf8@1.0.3: {} end-of-stream@1.4.4: @@ -16250,6 +17022,18 @@ snapshots: fast-json-parse: 1.0.3 objectorarray: 1.0.5 + engine.io-client@6.5.4(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 @@ -16264,6 +17048,23 @@ snapshots: engine.io-parser@5.2.3: {} + engine.io@6.5.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.19 + '@types/node': 20.17.57 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -16275,6 +17076,8 @@ snapshots: env-paths@2.2.1: {} + env-paths@3.0.0: {} + environment@1.1.0: {} error-ex@1.3.2: @@ -16406,7 +17209,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.25.5): dependencies: - debug: 4.4.1 + debug: 4.4.3 esbuild: 0.25.5 transitivePeerDependencies: - supports-color @@ -16762,11 +17565,23 @@ snapshots: events@3.3.0: {} + eventsource-parser@3.0.6: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.6 + evp_bytestokey@1.0.3: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 + evt@2.5.9: + dependencies: + minimal-polyfills: 2.2.3 + run-exclusive: 2.2.19 + tsafe: 1.8.12 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -17265,7 +18080,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 @@ -17291,6 +18106,8 @@ snapshots: dependencies: queue: 6.0.2 + image-size@2.0.2: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -17511,6 +18328,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-what@5.5.0: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -17562,6 +18381,14 @@ snapshots: jiti@1.21.7: {} + jose@5.10.0: {} + + jpeg-js@0.4.4: {} + + js-image-generator@1.0.4: + dependencies: + jpeg-js: 0.4.4 + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -17730,6 +18557,8 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 + long@5.3.2: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -18230,7 +19059,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 @@ -18271,6 +19100,8 @@ snapshots: min-indent@1.0.1: {} + minimal-polyfills@2.2.3: {} + minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} @@ -18315,10 +19146,14 @@ snapshots: nanoid@3.3.11: {} + nanoid@3.3.8: {} + napi-postinstall@0.2.4: {} natural-compare@1.4.0: {} + negotiator@0.6.3: {} + negotiator@1.0.0: {} neo-async@2.6.2: {} @@ -18541,14 +19376,14 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - ox@0.6.7(typescript@5.8.3)(zod@3.22.4): + ox@0.6.7(typescript@5.8.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.8.3)(zod@3.22.4) + abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.8.3 @@ -18570,6 +19405,21 @@ snapshots: transitivePeerDependencies: - zod + ox@0.7.1(typescript@5.8.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - zod + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -18628,6 +19478,8 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-gitignore@2.0.0: {} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 @@ -18900,6 +19752,11 @@ snapshots: progress@2.0.3: {} + prom-client@15.1.3: + dependencies: + '@opentelemetry/api': 1.9.0 + tdigest: 0.1.2 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -18908,6 +19765,21 @@ snapshots: property-information@7.1.0: {} + protobufjs@7.5.4: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.17.57 + long: 5.3.2 + proxy-compare@2.6.0: {} proxy-from-env@1.1.0: {} @@ -19352,7 +20224,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: @@ -19438,6 +20310,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.46.2 fsevents: 2.3.3 + run-exclusive@2.2.19: + dependencies: + minimal-polyfills: 2.2.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -19670,11 +20546,33 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + slug@6.1.0: {} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.8.1 + socket.io-adapter@2.5.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + debug: 4.3.7 + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.7.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-client: 6.5.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 @@ -19693,6 +20591,20 @@ snapshots: transitivePeerDependencies: - supports-color + socket.io@4.7.4(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7 + engine.io: 6.5.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-adapter: 2.5.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 @@ -19726,6 +20638,8 @@ snapshots: dependencies: type-fest: 0.7.1 + std-env@3.10.0: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -19935,6 +20849,10 @@ snapshots: pirates: 4.0.7 ts-interface-checker: 0.1.13 + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + superstruct@1.0.4: {} supports-color@7.2.0: @@ -20011,6 +20929,10 @@ snapshots: to-buffer: 1.1.1 xtend: 4.0.2 + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + terser-webpack-plugin@5.3.14(esbuild@0.25.5)(webpack@5.99.9(esbuild@0.25.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -20110,6 +21032,8 @@ snapshots: tinycolor2@1.6.0: {} + tinyexec@0.3.2: {} + tinyglobby@0.2.14: dependencies: fdir: 6.4.5(picomatch@4.0.2) @@ -20119,6 +21043,12 @@ snapshots: tinyspy@3.0.2: {} + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.5 + + tmp@0.2.5: {} + to-buffer@1.1.1: {} to-buffer@1.2.2: @@ -20173,6 +21103,8 @@ snapshots: optionalDependencies: typescript: 5.8.3 + tsafe@1.8.12: {} + tsconfig-paths-webpack-plugin@4.1.0: dependencies: chalk: 4.1.2 @@ -20215,6 +21147,8 @@ snapshots: type-fest@2.19.0: {} + type-fest@4.41.0: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -20258,6 +21192,8 @@ snapshots: dependencies: multiformats: 9.9.0 + ulid@2.4.0: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -20397,7 +21333,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(@netlify/blobs@10.4.1)(idb-keyval@6.2.2): dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -20408,6 +21344,7 @@ snapshots: ofetch: 1.4.1 ufo: 1.6.1 optionalDependencies: + '@netlify/blobs': 10.4.1 idb-keyval: 6.2.2 update-browserslist-db@1.1.3(browserslist@4.25.0): @@ -20425,6 +21362,8 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 + urlpattern-polyfill@10.1.0: {} + use-callback-ref@1.3.3(@types/react@18.2.57)(react@18.3.1): dependencies: react: 18.3.1 @@ -20485,6 +21424,8 @@ snapshots: utila@0.4.0: {} + uuid@13.0.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -20500,6 +21441,8 @@ snapshots: '@types/react': 18.2.57 react: 18.3.1 + vary@1.1.2: {} + vaul@1.1.2(@types/react-dom@18.2.19)(@types/react@18.2.57)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@radix-ui/react-dialog': 1.1.14(@types/react-dom@18.2.19)(@types/react@18.2.57)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -20553,15 +21496,15 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - viem@2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.8.3)(zod@3.22.4) + abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76) isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.8.3)(zod@3.22.4) + ox: 0.6.7(typescript@5.8.3)(zod@3.25.76) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.8.3 @@ -20587,16 +21530,33 @@ snapshots: - utf-8-validate - zod + viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76) + isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.7.1(typescript@5.8.3)(zod@3.25.76) + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + 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(@netlify/blobs@10.4.1)(@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.25.76))(zod@3.25.76): 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/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)) + '@wagmi/connectors': 5.8.3(@netlify/blobs@10.4.1)(@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.25.76)))(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.25.76))(zod@3.25.76) + '@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.25.76)) react: 18.3.1 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) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -20788,6 +21748,11 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 @@ -20815,6 +21780,8 @@ snapshots: xmlbuilder@11.0.1: {} + xmlhttprequest-ssl@2.0.0: {} + xmlhttprequest-ssl@2.1.2: {} xtend@4.0.2: {} @@ -20863,8 +21830,18 @@ snapshots: yocto-queue@1.2.1: {} + zod-error@1.5.0: + dependencies: + zod: 3.25.76 + + zod-validation-error@1.5.0(zod@3.25.76): + dependencies: + zod: 3.25.76 + zod@3.22.4: {} + zod@3.25.76: {} + zustand@5.0.0(@types/react@18.2.57)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): optionalDependencies: '@types/react': 18.2.57 diff --git a/src/data-layer/api/fetchApps.ts b/src/data-layer/api/fetchApps.ts new file mode 100644 index 00000000000..e7fe972573c --- /dev/null +++ b/src/data-layer/api/fetchApps.ts @@ -0,0 +1,192 @@ +import { AppCategoryEnum, AppData } from "@/lib/types" + +export const FETCH_APPS_TASK_ID = "fetch-apps" + +/** + * Fetch apps data from Google Sheets. + * Returns the fetched apps data organized by category. + */ +export async function fetchApps(): Promise> { + 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") + } + + if (!googleApiKey) { + throw new Error("Google API key not set") + } + + console.log("Starting apps data fetch from Google Sheets") + + // First, get the spreadsheet metadata to see what sheets exist + const metadataUrl = `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}?key=${googleApiKey}` + + const metadataResponse = await fetch(metadataUrl) + + if (!metadataResponse.ok) { + const errorText = await metadataResponse.text() + console.error("Metadata fetch error", { + status: metadataResponse.status, + statusText: metadataResponse.statusText, + error: errorText, + }) + throw new Error( + `Metadata fetch failed: ${metadataResponse.status} ${metadataResponse.statusText}` + ) + } + + const metadata = await metadataResponse.json() + const sheetNames = + metadata.sheets?.map( + (sheet: { properties: { title: string } }) => sheet.properties.title + ) || [] + + // Filter out sheets that are not valid AppCategoryEnum values + const appCategorySheetNames = sheetNames.filter((name: string) => + Object.values(AppCategoryEnum).includes(name as AppCategoryEnum) + ) + + console.log(`Found ${appCategorySheetNames.length} app category sheets`) + + const appsOfTheWeek = await fetch( + `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/App%20of%20the%20day!A2:C?majorDimension=ROWS&key=${googleApiKey}` + ) + + if (!appsOfTheWeek.ok) { + console.warn( + `Failed to fetch from sheet Apps of the day: ${appsOfTheWeek.status} ${appsOfTheWeek.statusText}` + ) + } + + const appsOfTheWeekData = await appsOfTheWeek.json() + + const result: Record = {} + + // Fetch and process data from each sheet + for (const sheetName of appCategorySheetNames) { + const dataUrl = `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/${sheetName}!A:Z?majorDimension=ROWS&key=${googleApiKey}` + const dataResponse = await fetch(dataUrl) + + if (!dataResponse.ok) { + console.warn( + `Failed to fetch from sheet ${sheetName}: ${dataResponse.status} ${dataResponse.statusText}` + ) + result[sheetName] = [] + continue + } + + const data = await dataResponse.json() + const rows = data.values || [] + + if (rows.length === 0) { + result[sheetName] = [] + continue + } + + // 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 apps: AppData[] = dataRows + .map((row: string[]) => { + // Map row data to app object + const appData = { + name: row[0] || "", + url: row[1] || "", + description: row[2] || "", + image: row[3] || "", // Use the SVG data directly from the Logo Image column + category: getCategoryFromSheetName(sheetName), + subCategory: parseCommaSeparated(row[5] || ""), + networks: parseCommaSeparated(row[6] || ""), + screenshots: parseCommaSeparated(row[7] || ""), + bannerImage: row[8] || "", + platforms: parseCommaSeparated(row[9] || ""), + twitter: row[10] || "", + github: row[11] || "", + discord: row[12] || "", + kpiUrl: row[13] || "", + sortingWeight: parseInt(row[14] || "0") || 0, + discover: row[15]?.toLowerCase() === "true", + highlight: row[16]?.toLowerCase() === "true", + languages: parseCommaSeparated(row[17] || ""), + parentCompany: row[18] || "", + parentCompanyURL: row[19] || "", + openSource: row[20]?.toLowerCase() === "true", + contractAddress: row[21] || "", + dateOfLaunch: row[22] || "", + lastUpdated: row[23] || "", + ready: row[24]?.toLowerCase(), + devconnect: row[25]?.toLowerCase(), + ...parseAppOfTheWeekDate(row[0], appsOfTheWeekData), + } + + return appData as unknown as AppData + }) + .filter((app: AppData) => app.name && app.url) // Filter out apps without name or URL + .filter((app: AppData) => app.ready === "true") + + result[sheetName] = apps + console.log(`Processed ${apps.length} apps from ${sheetName}`) + } + + const totalApps = Object.values(result).reduce( + (sum, apps) => sum + apps.length, + 0 + ) + + console.log( + `Successfully fetched ${totalApps} apps across ${Object.keys(result).length} categories` + ) + + return result +} + +// Helper function to map sheet names to AppCategoryEnum +function getCategoryFromSheetName(sheetName: string): AppCategoryEnum { + switch (sheetName) { + case "DeFi": + return AppCategoryEnum.DEFI + case "Collectibles": + return AppCategoryEnum.COLLECTIBLE + case "Social": + return AppCategoryEnum.SOCIAL + case "Gaming": + return AppCategoryEnum.GAMING + case "Bridge": + return AppCategoryEnum.BRIDGE + case "Productivity": + return AppCategoryEnum.PRODUCTIVITY + case "Privacy": + return AppCategoryEnum.PRIVACY + case "DAO": + return AppCategoryEnum.GOVERNANCE_DAO + default: + return AppCategoryEnum.DEFI // Default fallback + } +} + +// Helper function to parse comma-separated strings into arrays +function parseCommaSeparated(value: string): string[] { + if (!value || value.trim() === "") return [] + return value + .split(",") + .map((item) => item.trim()) + .filter(Boolean) +} + +const parseAppOfTheWeekDate = ( + appName: string, + appsOfTheWeekData: { values: Array<[string, string, string]> } +): { appOfTheWeekStartDate: Date | null; appOfTheWeekEndDate: Date | null } => { + const appOfTheWeek = appsOfTheWeekData.values.find( + (app: [string, string, string]) => app[0] === appName + ) + return { + appOfTheWeekStartDate: appOfTheWeek ? new Date(appOfTheWeek[1]) : null, + appOfTheWeekEndDate: appOfTheWeek ? new Date(appOfTheWeek[2]) : null, + } +} diff --git a/src/data-layer/api/fetchBeaconChainEpoch.ts b/src/data-layer/api/fetchBeaconChainEpoch.ts new file mode 100644 index 00000000000..99aaa371f88 --- /dev/null +++ b/src/data-layer/api/fetchBeaconChainEpoch.ts @@ -0,0 +1,40 @@ +import type { BeaconchainEpochData, EpochResponse } from "@/lib/types" + +export const FETCH_BEACONCHAIN_EPOCH_TASK_ID = "fetch-beaconchain-epoch" + +/** + * Fetch beaconchain epoch data from Beaconcha.in API. + * Returns the latest epoch data including total ETH staked and validator count. + */ +export async function fetchBeaconChainEpoch(): Promise { + const base = "https://beaconcha.in" + const endpoint = "api/v1/epoch/latest" + const { href } = new URL(endpoint, base) + + console.log("Starting beaconchain epoch data fetch") + + const response = await fetch(href) + + if (!response.ok) { + const status = response.status + console.warn("Beaconcha.in fetch non-OK", { status, url: href }) + const error = `Beaconcha.in responded with status ${status}` + throw new Error(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() + + console.log("Successfully fetched beaconchain epoch data", { + totalEthStaked, + validatorscount, + timestamp, + }) + + return { + totalEthStaked: { value: totalEthStaked, timestamp }, + validatorscount: { value: validatorscount, timestamp }, + } +} diff --git a/src/data-layer/api/fetchBeaconChainEthstore.ts b/src/data-layer/api/fetchBeaconChainEthstore.ts new file mode 100644 index 00000000000..b0c0eb5168a --- /dev/null +++ b/src/data-layer/api/fetchBeaconChainEthstore.ts @@ -0,0 +1,35 @@ +import type { EthStoreResponse, MetricReturnData } from "@/lib/types" + +export const FETCH_BEACONCHAIN_ETHSTORE_TASK_ID = "fetch-beaconchain-ethstore" + +/** + * Fetch beaconchain ethstore data from Beaconcha.in API. + * Returns the latest APR data. + */ +export async function fetchBeaconChainEthstore(): Promise { + const base = "https://beaconcha.in" + const endpoint = "api/v1/ethstore/latest" + const { href } = new URL(endpoint, base) + + console.log("Starting beaconchain ethstore data fetch") + + const response = await fetch(href) + + if (!response.ok) { + const status = response.status + console.warn("Beaconcha.in fetch non-OK", { status, url: href }) + const error = `Beaconcha.in responded with status ${status}` + throw new Error(error) + } + + const json: EthStoreResponse = await response.json() + const apr = json.data.apr + const timestamp = Date.now() + + console.log("Successfully fetched beaconchain ethstore data", { + apr, + timestamp, + }) + + return { value: apr, timestamp } +} diff --git a/src/data-layer/api/fetchBlobscanStats.ts b/src/data-layer/api/fetchBlobscanStats.ts new file mode 100644 index 00000000000..cffe77e5972 --- /dev/null +++ b/src/data-layer/api/fetchBlobscanStats.ts @@ -0,0 +1,34 @@ +import type { BlobscanOverallStats } from "@/lib/types" + +export const FETCH_BLOBSCAN_STATS_TASK_ID = "fetch-blobscan-stats" + +/** + * Fetch the overall stats from Blobscan + * + * @see https://api.blobscan.com/#/stats/stats-getOverallStats + */ +export async function fetchBlobscanStats(): Promise { + const url = "https://api.blobscan.com/stats/overall" + + console.log("Starting blobscan stats data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("Blobscan fetch non-OK", { status, url }) + const error = `Blobscan responded with status ${status}` + throw new Error(error) + } + + const json: [BlobscanOverallStats] = await response.json() + const stats = json[0] + + console.log("Successfully fetched blobscan stats data", { + totalBlobs: stats.totalBlobs, + totalTransactions: stats.totalTransactions, + updatedAt: stats.updatedAt, + }) + + return stats +} diff --git a/src/data-layer/api/fetchCalendarEvents.ts b/src/data-layer/api/fetchCalendarEvents.ts new file mode 100644 index 00000000000..12da06d42e7 --- /dev/null +++ b/src/data-layer/api/fetchCalendarEvents.ts @@ -0,0 +1,53 @@ +import type { + CommunityEventsReturnType, + ReqCommunityEvent, +} from "@/lib/interfaces" + +export const FETCH_CALENDAR_EVENTS_TASK_ID = "fetch-calendar-events" + +/** + * Fetch community calendar events from Google Calendar API. + * Returns past and upcoming events data. + */ +export async function fetchCalendarEvents(): Promise { + const apiKey = process.env.GOOGLE_API_KEY + const calendarId = process.env.GOOGLE_CALENDAR_ID + + const futureEventsReq = await fetch( + `https://content.googleapis.com/calendar/v3/calendars/${calendarId}/events?key=${apiKey}&timeMin=${new Date().toISOString()}&maxResults=3&singleEvents=true&orderby=starttime` + ) + const futureEvents = await futureEventsReq.json() + const futureEventsReqData: ReqCommunityEvent[] = futureEvents.items + + const pastEventsReq = await fetch( + `https://content.googleapis.com/calendar/v3/calendars/${calendarId}/events?key=${apiKey}&timeMax=${new Date().toISOString()}&orderby=starttime` + ) + 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 upcomingEventData = (futureEventsReqData ?? []) + .filter((event) => event.start) + .reverse() + .map((event) => { + return { + date: event.start.dateTime, + title: event.summary, + calendarLink: event.htmlLink, + } + }) + + return { + pastEventData, + upcomingEventData, + } +} diff --git a/src/data-layer/api/fetchCommunityPicks.ts b/src/data-layer/api/fetchCommunityPicks.ts new file mode 100644 index 00000000000..49881248bbb --- /dev/null +++ b/src/data-layer/api/fetchCommunityPicks.ts @@ -0,0 +1,56 @@ +import type { CommunityPick } from "@/lib/types" + +export const FETCH_COMMUNITY_PICKS_TASK_ID = "fetch-community-picks" + +/** + * Fetch community picks data from Google Sheets. + * Returns the fetched community picks data. + */ +export async function fetchCommunityPicks(): Promise { + 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") + } + + if (!googleApiKey) { + throw new Error("Google API key not set") + } + + console.log("Starting community picks data fetch from Google Sheets") + + const response = await fetch( + `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/community_picks!A:Z?majorDimension=ROWS&key=${googleApiKey}` + ) + + if (!response.ok) { + const status = response.status + console.warn("Community picks fetch non-OK", { status }) + throw new Error(`Failed to fetch community picks: ${status}`) + } + + 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, + })) + + console.log( + `Successfully fetched ${communityPicks.length} community picks from Google Sheets` + ) + + return communityPicks +} diff --git a/src/data-layer/api/fetchEthPrice.ts b/src/data-layer/api/fetchEthPrice.ts new file mode 100644 index 00000000000..24f338548c8 --- /dev/null +++ b/src/data-layer/api/fetchEthPrice.ts @@ -0,0 +1,41 @@ +import type { MetricReturnData } from "@/lib/types" + +export const FETCH_ETH_PRICE_TASK_ID = "fetch-eth-price" + +/** + * Fetch Ethereum price data from CoinGecko API. + * Returns the latest USD price data. + */ +export async function fetchEthPrice(): Promise { + const url = + "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd" + + console.log("Starting Ethereum price data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("CoinGecko fetch non-OK", { status, url }) + const error = `CoinGecko responded with status ${status}` + throw new Error(error) + } + + const data: { ethereum: { usd: number } } = await response.json() + const { + ethereum: { usd }, + } = data + + if (!usd) { + throw new Error("Unable to fetch ETH price from CoinGecko") + } + + const timestamp = Date.now() + + console.log("Successfully fetched Ethereum price data", { + price: usd, + timestamp, + }) + + return { value: usd, timestamp } +} diff --git a/src/data-layer/api/fetchEthereumMarketcap.ts b/src/data-layer/api/fetchEthereumMarketcap.ts new file mode 100644 index 00000000000..085fa2cf6fc --- /dev/null +++ b/src/data-layer/api/fetchEthereumMarketcap.ts @@ -0,0 +1,41 @@ +import type { MetricReturnData } from "@/lib/types" + +export const FETCH_ETHEREUM_MARKETCAP_TASK_ID = "fetch-ethereum-marketcap" + +/** + * Fetch Ethereum market cap data from CoinGecko API. + * Returns the latest USD market cap data. + */ +export async function fetchEthereumMarketcap(): Promise { + const url = + "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd&include_market_cap=true" + + console.log("Starting Ethereum market cap data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("CoinGecko fetch non-OK", { status, url }) + const error = `CoinGecko responded with status ${status}` + throw new Error(error) + } + + const data: { ethereum: { usd_market_cap: number } } = await response.json() + const { + ethereum: { usd_market_cap }, + } = data + + if (!usd_market_cap) { + throw new Error("Unable to fetch ETH market cap from CoinGecko") + } + + const timestamp = Date.now() + + console.log("Successfully fetched Ethereum market cap data", { + marketCap: usd_market_cap, + timestamp, + }) + + return { value: usd_market_cap, timestamp } +} diff --git a/src/data-layer/api/fetchEthereumStablecoinsMcap.ts b/src/data-layer/api/fetchEthereumStablecoinsMcap.ts new file mode 100644 index 00000000000..1618a56e3a8 --- /dev/null +++ b/src/data-layer/api/fetchEthereumStablecoinsMcap.ts @@ -0,0 +1,51 @@ +import type { MetricReturnData } from "@/lib/types" + +export const FETCH_ETHEREUM_STABLECOINS_MCAP_TASK_ID = + "fetch-ethereum-stablecoins-mcap" + +export type LlamaStablecoinchainsResponseItem = { + gecko_id: string | null + totalCirculatingUSD: Record + tokenSymbol: string | null + name: string +} + +/** + * Fetch Ethereum stablecoins market cap data from Llama.fi API. + * Returns the total circulating USD value of all stablecoins on Ethereum. + */ +export async function fetchEthereumStablecoinsMcap(): Promise { + const url = "https://stablecoins.llama.fi/stablecoinchains" + + console.log("Starting Ethereum stablecoins market cap data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("Llama.fi fetch non-OK", { status, url }) + const error = `Llama.fi responded with status ${status}` + throw new Error(error) + } + + 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") + } + + const value = Object.values(ethereumData.totalCirculatingUSD).reduce( + (acc, value) => acc + value, + 0 + ) + + const timestamp = Date.now() + + console.log("Successfully fetched Ethereum stablecoins market cap data", { + marketCap: value, + timestamp, + }) + + return { value, timestamp } +} diff --git a/src/data-layer/api/fetchGFIs.ts b/src/data-layer/api/fetchGFIs.ts new file mode 100644 index 00000000000..fa53d4c8b3c --- /dev/null +++ b/src/data-layer/api/fetchGFIs.ts @@ -0,0 +1,52 @@ +import type { GHIssue } from "@/lib/types" + +export const FETCH_GFIS_TASK_ID = "fetch-gfis" + +const owner = "ethereum" +const repo = "ethereum-org-website" +const label = "good first issue" + +/** + * Fetch GitHub issues labeled as "good first issue" from the ethereum-org-website repository. + * Returns the latest open issues sorted by creation date. + */ +export async function fetchGFIs(): Promise { + const githubToken = process.env.GITHUB_TOKEN_READ_ONLY + + if (!githubToken) { + throw new Error("GitHub token not set (GITHUB_TOKEN_READ_ONLY)") + } + + const url = new URL(`https://api.github.com/repos/${owner}/${repo}/issues`) + url.searchParams.append("labels", label) + url.searchParams.append("state", "open") + url.searchParams.append("sort", "created") + url.searchParams.append("direction", "desc") + url.searchParams.append("assignee", "none") + url.searchParams.append("per_page", "10") + + console.log("Starting GitHub good first issues data fetch") + + const response = await fetch(url, { + headers: { + Authorization: `token ${githubToken}`, + Accept: "application/vnd.github.v3+json", + }, + }) + + if (!response.ok) { + const status = response.status + console.warn("GitHub API fetch non-OK", { status, url: url.toString() }) + throw new Error( + `GitHub API responded with ${status}: ${response.statusText}` + ) + } + + const issues = (await response.json()) as GHIssue[] + + console.log( + `Successfully fetched ${issues.length} good first issues from GitHub` + ) + + return issues +} diff --git a/src/data-layer/api/fetchGitHistory.ts b/src/data-layer/api/fetchGitHistory.ts new file mode 100644 index 00000000000..b5576c33009 --- /dev/null +++ b/src/data-layer/api/fetchGitHistory.ts @@ -0,0 +1,62 @@ +import type { Commit } from "@/lib/types" + +export const FETCH_GIT_HISTORY_TASK_ID = "fetch-git-history" + +const owner = "ethereum" +const repo = "ethereum-org-website" + +/** + * Fetch recent commit history from the GitHub repository. + * Returns the latest commits from the master branch. + */ +export async function fetchGitHistory(): Promise { + const githubToken = process.env.GITHUB_TOKEN_READ_ONLY + + if (!githubToken) { + throw new Error("GitHub token not set (GITHUB_TOKEN_READ_ONLY)") + } + + const url = new URL(`https://api.github.com/repos/${owner}/${repo}/commits`) + url.searchParams.set("sha", "master") + url.searchParams.set("per_page", "100") // Fetch up to 100 recent commits + + console.log("Starting GitHub commit history data fetch") + + const response = await fetch(url.href, { + headers: { + Authorization: `token ${githubToken}`, + Accept: "application/vnd.github.v3+json", + }, + }) + + if ( + response.status === 403 && + response.headers.get("X-RateLimit-Remaining") === "0" + ) { + const resetTime = response.headers.get("X-RateLimit-Reset") + const waitTime = resetTime ? +resetTime - Math.floor(Date.now() / 1000) : 60 + console.log(`Rate limit exceeded, would need to wait ${waitTime} seconds`) + throw new Error( + `GitHub API rate limit exceeded. Reset in ${waitTime} seconds.` + ) + } + + if (!response.ok) { + const status = response.status + console.warn("GitHub API fetch non-OK", { status, url: url.toString() }) + throw new Error( + `GitHub API responded with ${status}: ${response.statusText}` + ) + } + + const commits = (await response.json()) as Commit[] + + if (!Array.isArray(commits)) { + console.warn("Unexpected response from GitHub API", commits) + throw new Error("GitHub API returned unexpected response format") + } + + console.log(`Successfully fetched ${commits.length} commits from GitHub`) + + return commits +} diff --git a/src/data-layer/api/fetchGithubRepoData.ts b/src/data-layer/api/fetchGithubRepoData.ts new file mode 100644 index 00000000000..a51b29007dc --- /dev/null +++ b/src/data-layer/api/fetchGithubRepoData.ts @@ -0,0 +1,114 @@ +import type { GithubRepoData } from "@/lib/types" + +export const FETCH_GITHUB_REPO_DATA_TASK_ID = "fetch-github-repo-data" + +// GitHub repository URLs for local environment frameworks +// This list matches the githubUrl values from src/lib/api/ghRepoData.ts +// but avoids importing images which Trigger.dev's bundler can't handle +const FRAMEWORK_GITHUB_URLS: string[] = [ + "https://github.com/kurtosis-tech/ethereum-package", + "https://github.com/nomiclabs/hardhat", + "https://github.com/eth-brownie/brownie", + "https://github.com/PaulRBerg/create-eth-app", + "https://github.com/scaffold-eth/scaffold-eth-2", + "https://github.com/paulrberg/solidity-template", + "https://github.com/foundry-rs/foundry", +] + +type GithubRepoDataResult = Record + +/** + * Fetch GitHub repository data for local environment frameworks. + * Returns star counts and languages for each repository. + */ +export async function fetchGithubRepoData(): Promise { + const githubToken = process.env.GITHUB_TOKEN_READ_ONLY + + if (!githubToken) { + throw new Error("GitHub token not set (GITHUB_TOKEN_READ_ONLY)") + } + + console.log( + `Starting GitHub repo data fetch for ${FRAMEWORK_GITHUB_URLS.length} repositories` + ) + + const result: GithubRepoDataResult = {} + const errors: string[] = [] + + for (const githubUrl of FRAMEWORK_GITHUB_URLS) { + try { + const split = githubUrl.split("/") + const repoOwner = split[split.length - 2] + const repoName = split[split.length - 1] + + // Fetch repo data + const repoReq = await fetch( + `https://api.github.com/repos/${repoOwner}/${repoName}`, + { + headers: { + Authorization: `Bearer ${githubToken}`, + Accept: "application/vnd.github.v3+json", + }, + } + ) + + if (!repoReq.ok) { + const status = repoReq.status + console.warn(`GitHub repo fetch failed for ${githubUrl}`, { status }) + errors.push(`${githubUrl}: ${status}`) + continue + } + + const repoData = await repoReq.json() + + // Fetch language data + const languageReq = await fetch( + `https://api.github.com/repos/${repoOwner}/${repoName}/languages`, + { + headers: { + Authorization: `Bearer ${githubToken}`, + Accept: "application/vnd.github.v3+json", + }, + } + ) + + if (!languageReq.ok) { + const status = languageReq.status + console.warn(`GitHub languages fetch failed for ${githubUrl}`, { + status, + }) + errors.push(`${githubUrl} (languages): ${status}`) + continue + } + + const languageData = await languageReq.json() + + result[githubUrl] = { + starCount: repoData.stargazers_count, + languages: Object.keys(languageData), + } + } catch (error) { + console.error(`Error fetching GitHub repo data for ${githubUrl}:`, error) + errors.push( + `${githubUrl}: ${error instanceof Error ? error.message : String(error)}` + ) + } + } + + const successCount = Object.keys(result).length + const totalCount = FRAMEWORK_GITHUB_URLS.length + + console.log("Successfully fetched GitHub repo data", { + successCount, + totalCount, + errors: errors.length > 0 ? errors : undefined, + }) + + if (errors.length > 0 && successCount === 0) { + throw new Error( + `Failed to fetch all GitHub repo data: ${errors.join(", ")}` + ) + } + + return result +} diff --git a/src/data-layer/api/fetchGrowThePie.ts b/src/data-layer/api/fetchGrowThePie.ts new file mode 100644 index 00000000000..7bab56b08d3 --- /dev/null +++ b/src/data-layer/api/fetchGrowThePie.ts @@ -0,0 +1,107 @@ +import type { GrowThePieData } from "@/lib/types" + +import { LAYER2_GROWTHEPIE_IDS } from "@/data/networks/growthepieIds" + +export const FETCH_GROW_THE_PIE_TASK_ID = "fetch-grow-the-pie" + +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" + +/** + * Fetch GrowThePie fundamentals data. + * Returns transaction counts, costs, and active addresses for Layer 2 networks. + */ +export async function fetchGrowThePie(): Promise { + const url = "https://api.growthepie.com/v1/fundamentals_7d.json" + + console.log("Starting GrowThePie data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("GrowThePie fetch non-OK", { status, url }) + throw new Error(`GrowThePie API responded with status ${status}`) + } + + 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) => LAYER2_GROWTHEPIE_IDS.includes(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() + + const result = { + 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, + } + + console.log("Successfully fetched GrowThePie data", { + totalTxCount, + weightedAverage, + mostRecentDate, + networksCount: Object.keys(result.dailyTxCosts).length, + }) + + return result +} diff --git a/src/data-layer/api/fetchGrowThePieBlockspace.ts b/src/data-layer/api/fetchGrowThePieBlockspace.ts new file mode 100644 index 00000000000..4b209f00d4b --- /dev/null +++ b/src/data-layer/api/fetchGrowThePieBlockspace.ts @@ -0,0 +1,139 @@ +import type { BlockspaceData } from "@/lib/types" + +import { LAYER2_GROWTHEPIE_IDS } from "@/data/networks/growthepieIds" + +export const FETCH_GROW_THE_PIE_BLOCKSPACE_TASK_ID = + "fetch-grow-the-pie-blockspace" + +type BlockspaceResponse = { + chain_name: string + overview: { + "30d": { + collectibles?: { data: number[] } + finance?: { data: number[] } + social?: { data: number[] } + token_transfers?: { data: number[] } + unlabeled?: { data: number[] } + // Legacy structure (some networks might still use this) + nft?: { data: number[] } + defi?: { data: number[] } + } + } +} + +/** + * Fetch GrowThePie blockspace data for all Layer 2 networks. + * Returns blockspace usage data (NFT, DeFi, social, token transfers, unlabeled) for each network. + */ +export async function fetchGrowThePieBlockspace(): Promise< + Record +> { + console.log("Starting GrowThePie blockspace data fetch") + + const blockspaceData: Record = {} + const errors: string[] = [] + + for (const networkId of LAYER2_GROWTHEPIE_IDS) { + try { + const url = `https://api.growthepie.com/v1/chains/blockspace/${networkId}.json` + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn(`GrowThePie blockspace fetch failed for ${networkId}`, { + status, + url, + }) + errors.push(`${networkId}: ${status}`) + continue + } + + const data: BlockspaceResponse = await response.json() + + // Validate response structure + if (!data?.overview?.["30d"]) { + console.warn( + `GrowThePie blockspace data structure invalid for ${networkId}`, + { data } + ) + errors.push(`${networkId}: Missing overview.30d`) + continue + } + + const overview = data.overview["30d"] + + // Handle both new structure (collectibles/finance) and legacy (nft/defi) + const nftData = overview.collectibles?.data || overview.nft?.data + const defiData = overview.finance?.data || overview.defi?.data + const socialData = overview.social?.data + const tokenTransfersData = overview.token_transfers?.data + const unlabeledData = overview.unlabeled?.data + + // Validate required data exists + if (!nftData || !defiData || !tokenTransfersData || !unlabeledData) { + console.warn( + `GrowThePie blockspace data missing required fields for ${networkId}`, + { + hasNft: !!nftData, + hasDefi: !!defiData, + hasTokenTransfers: !!tokenTransfersData, + hasUnlabeled: !!unlabeledData, + overviewKeys: Object.keys(overview), + } + ) + errors.push(`${networkId}: Missing required data fields`) + continue + } + + // Ensure data arrays have enough elements (need index 4) + if ( + nftData.length < 5 || + defiData.length < 5 || + tokenTransfersData.length < 5 || + unlabeledData.length < 5 + ) { + console.warn( + `GrowThePie blockspace data arrays too short for ${networkId}`, + { + nftLength: nftData.length, + defiLength: defiData.length, + tokenTransfersLength: tokenTransfersData.length, + unlabeledLength: unlabeledData.length, + } + ) + errors.push(`${networkId}: Data arrays too short`) + continue + } + + blockspaceData[networkId] = { + nft: nftData[4], + defi: defiData[4], + social: socialData?.[4] || 0, + token_transfers: tokenTransfersData[4], + unlabeled: unlabeledData[4], + } + } catch (error) { + console.error(`Error fetching blockspace data for ${networkId}:`, error) + errors.push( + `${networkId}: ${error instanceof Error ? error.message : String(error)}` + ) + } + } + + const successCount = Object.keys(blockspaceData).length + const totalCount = LAYER2_GROWTHEPIE_IDS.length + + console.log("Successfully fetched GrowThePie blockspace data", { + successCount, + totalCount, + errors: errors.length > 0 ? errors : undefined, + }) + + if (errors.length > 0 && successCount === 0) { + throw new Error( + `Failed to fetch blockspace data for all networks: ${errors.join(", ")}` + ) + } + + return blockspaceData +} diff --git a/src/data-layer/api/fetchGrowThePieMaster.ts b/src/data-layer/api/fetchGrowThePieMaster.ts new file mode 100644 index 00000000000..7c78e58c3d0 --- /dev/null +++ b/src/data-layer/api/fetchGrowThePieMaster.ts @@ -0,0 +1,52 @@ +import type { GrowThePieMasterData } from "@/lib/types" + +export const FETCH_GROW_THE_PIE_MASTER_TASK_ID = "fetch-grow-the-pie-master" + +interface Chain { + url_key: string + launch_date: string +} + +type GrowThePieMasterResponse = { + chains: Record +} + +/** + * Fetch GrowThePie master data containing chain launch dates. + * Returns launch dates for all chains indexed by their URL key. + */ +export async function fetchGrowThePieMaster(): Promise { + const url = "https://api.growthepie.com/v1/master.json" + + console.log("Starting GrowThePie master data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("GrowThePie master fetch non-OK", { status, url }) + throw new Error( + `GrowThePie Master API responded with ${status}: ${response.statusText}` + ) + } + + const data = (await response.json()) as GrowThePieMasterResponse + + const launchDates = Object.values(data.chains).reduce>( + (acc, curr: Chain) => { + return { + ...acc, + [curr.url_key]: curr.launch_date, + } + }, + {} + ) + + const chainsCount = Object.keys(launchDates).length + + console.log("Successfully fetched GrowThePie master data", { + chainsCount, + }) + + return { launchDates } +} diff --git a/src/data-layer/api/fetchL2beat.ts b/src/data-layer/api/fetchL2beat.ts new file mode 100644 index 00000000000..dc48c4b467e --- /dev/null +++ b/src/data-layer/api/fetchL2beat.ts @@ -0,0 +1,29 @@ +export const FETCH_L2BEAT_TASK_ID = "fetch-l2beat" + +/** + * Fetch L2BEAT scaling summary data. + * Returns scaling project data including TVL, maturity, and other metrics. + * + * @see https://l2beat.com/api/scaling/summary + */ +export async function fetchL2beat(): Promise { + const url = "https://l2beat.com/api/scaling/summary" + + console.log("Starting L2BEAT data fetch") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("L2BEAT fetch non-OK", { status, url }) + throw new Error( + `L2BEAT API responded with ${status}: ${response.statusText}` + ) + } + + const data = await response.json() + + console.log("Successfully fetched L2BEAT data") + + return data +} diff --git a/src/data-layer/api/fetchPosts.ts b/src/data-layer/api/fetchPosts.ts new file mode 100644 index 00000000000..02eb8752a5c --- /dev/null +++ b/src/data-layer/api/fetchPosts.ts @@ -0,0 +1,51 @@ +import type { HTMLResult, RSSItem } from "@/lib/types" + +import { fetchXml } from "@/lib/api/fetchRSS" + +export const FETCH_POSTS_TASK_ID = "fetch-posts" + +/** + * Fetch Attestant blog posts. + * Returns an array of RSS items from the Attestant blog. + */ +export async function fetchAttestantPosts(): Promise { + const BASE_URL = "https://www.attestant.io/posts/" + + console.log("Starting Attestant posts data fetch") + + const htmlData = (await fetchXml(BASE_URL)) as HTMLResult + + // Extract div containing list of posts from deeply nested HTML structure + const postsContainer = + htmlData.html.body[0].div[0].div[1].div[0].div[0].div[0].div + + const sortedPosts = postsContainer + .map(({ a }) => { + const [ + { + $: { href }, + h4: [{ _: title }], + div: [{ _: content }, { _: pubDate }], + }, + ] = a + const { href: link } = new URL(href, BASE_URL) + return { + title, + link, + content, + source: "Attestant", + sourceUrl: BASE_URL, + sourceFeedUrl: BASE_URL, + imgSrc: "/images/attestant-logo.svg", + pubDate, + } + }) + .sort( + (a: RSSItem, b: RSSItem) => + new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime() + ) + + console.log(`Successfully fetched ${sortedPosts.length} Attestant posts`) + + return sortedPosts +} diff --git a/src/data-layer/api/fetchRSS.ts b/src/data-layer/api/fetchRSS.ts new file mode 100644 index 00000000000..7d2df09148b --- /dev/null +++ b/src/data-layer/api/fetchRSS.ts @@ -0,0 +1,203 @@ +import { parseString } from "xml2js" + +import type { AtomElement, AtomResult, RSSItem, RSSResult } from "@/lib/types" + +import { isValidDate } from "@/lib/utils/date" + +import { ATTESTANT_BLOG, BLOG_FEEDS } from "@/lib/constants" + +export const FETCH_RSS_TASK_ID = "fetch-rss" + +/** + * Fetches XML data from the specified URL. + * Parses XML to JSON with parseString (xml2js package) + */ +async function fetchXml(url: string): Promise> { + const response = await fetch(url, { + headers: { Cookie: "", DNT: "1" }, // Empty cookie header and do-not-track + credentials: "omit", // Don't send or receive cookies + }) + + if (!response.ok) { + // Provide more specific error messages + if (response.status === 429) { + throw new Error( + `Rate limited (429) when fetching ${url}. The server is temporarily limiting requests.` + ) + } + throw new Error(`Failed to fetch XML from ${url}: ${response.status}`) + } + + const xml = await response.text() + return await new Promise>((resolve, reject) => { + parseString(xml, (err, result) => { + err ? reject(err) : resolve(result) + }) + }) +} + +/** + * Fetch RSS feeds from community blogs. + * Returns an array of sources, each containing an array of RSS items. + * Excludes Attestant blog (handled separately via fetchAttestantPosts). + */ +export async function fetchRSS(): Promise { + // Filter out Attestant blog since it's handled separately + const xmlUrls = BLOG_FEEDS.filter((feed) => feed !== ATTESTANT_BLOG) + + console.log(`Starting RSS feeds data fetch for ${xmlUrls.length} feeds`) + + const allItems: RSSItem[][] = [] + const errors: string[] = [] + + for (let i = 0; i < xmlUrls.length; i++) { + const url = xmlUrls[i] + + // Add a small delay between requests to avoid rate limiting + // Skip delay for the first request + if (i > 0) { + await new Promise((resolve) => setTimeout(resolve, 500)) // 500ms delay + } + + try { + const response = (await fetchXml(url)) as RSSResult | AtomResult + + if ("rss" in response) { + const [mainChannel] = response.rss.channel + const [source] = mainChannel.title + const [sourceUrl] = mainChannel.link + const channelImage = mainChannel.image + ? mainChannel.image[0].url[0] + : "" + + const parsedRssItems = mainChannel.item + // Filter out items with invalid dates + .filter((item) => { + if (!item.pubDate) return false + const [pubDate] = item.pubDate + return isValidDate(pubDate) + }) + // Sort by pubDate (most recent is first in array) + .sort((a, b) => { + const dateA = new Date(a.pubDate[0]) + const dateB = new Date(b.pubDate[0]) + return dateB.getTime() - dateA.getTime() + }) + // Map to RSSItem object + .map((item) => { + const getImgSrc = () => { + if (item["content:encoded"]) + return item["content:encoded"][0].match( + /https?:\/\/[^"]*?\.(jpe?g|png|webp)/g + )?.[0] + if (item.enclosure) return item.enclosure[0].$.url + if (item["media:content"]) return item["media:content"][0].$.url + return channelImage + } + return { + pubDate: item.pubDate[0], + title: item.title[0], + link: item.link[0], + imgSrc: getImgSrc(), + source, + sourceUrl, + sourceFeedUrl: url, + } + }) + + allItems.push(parsedRssItems) + } else if ("feed" in response) { + const [source] = response.feed.title + const [sourceUrl] = response.feed.id + const feedImage = response.feed.icon?.[0] + + const parsedAtomItems = response.feed.entry + // Filter out items with invalid dates + .filter((entry) => { + if (!entry.updated) return false + const [published] = entry.updated + return isValidDate(published) + }) + // Sort by published (most recent is first in array) + .sort((a, b) => { + const dateA = new Date(a.updated[0]) + const dateB = new Date(b.updated[0]) + return dateB.getTime() - dateA.getTime() + }) + // Map to RSSItem object + .map((entry) => { + const getString = (el?: AtomElement[]): string => { + if (!el) return "" + const [firstEl] = el + if (typeof firstEl === "string") return firstEl + return firstEl._ || "" + } + const getHref = (): string => { + if (!entry.link) { + console.warn(`No link found for RSS url: ${url}`) + return "" + } + const link = entry.link[0] + if (typeof link === "string") return link + return link.$.href || "" + } + const getImgSrc = (): string => { + const imgRegEx = /https?:\/\/[^"]*?\.(jpe?g|png|webp)/g + const contentMatch = getString(entry.content).match(imgRegEx) + if (contentMatch) return contentMatch[0] + const summaryMatch = getString(entry.summary).match(imgRegEx) + if (summaryMatch) return summaryMatch[0] + return feedImage || "" + } + return { + pubDate: entry.updated[0], + title: getString(entry.title), + link: getHref(), + imgSrc: getImgSrc(), + source, + sourceUrl, + sourceFeedUrl: url, + } + }) + + allItems.push(parsedAtomItems) + } else { + throw new Error( + `Error parsing XML, invalid RSSResult or AtomResult type: ${url}` + ) + } + } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error) + + // Log rate limiting as a warning (expected behavior) + if ( + errorMessage.includes("429") || + errorMessage.includes("Rate limited") + ) { + console.warn(`Rate limited for RSS feed ${url}. Skipping.`) + } else { + console.error(`Error fetching RSS feed ${url}:`, error) + } + + errors.push(`${url}: ${errorMessage}`) + // Continue processing other feeds even if one fails + } + } + + const successCount = allItems.length + const totalCount = xmlUrls.length + + console.log("Successfully fetched RSS feeds data", { + successCount, + totalCount, + totalItems: allItems.reduce((sum, items) => sum + items.length, 0), + errors: errors.length > 0 ? errors : undefined, + }) + + if (errors.length > 0 && successCount === 0) { + throw new Error(`Failed to fetch all RSS feeds: ${errors.join(", ")}`) + } + + return allItems +} diff --git a/src/data-layer/api/fetchStablecoinsData.ts b/src/data-layer/api/fetchStablecoinsData.ts new file mode 100644 index 00000000000..d1e50342c81 --- /dev/null +++ b/src/data-layer/api/fetchStablecoinsData.ts @@ -0,0 +1,32 @@ +import { + COINGECKO_API_BASE_URL, + COINGECKO_API_URL_PARAMS, +} from "@/lib/constants" + +export const FETCH_STABLECOINS_DATA_TASK_ID = "fetch-stablecoins-data" + +/** + * Fetch Ethereum stablecoins data from CoinGecko API. + * Returns market data for stablecoins on Ethereum. + */ +export async function fetchStablecoinsData(): Promise { + const url = `${COINGECKO_API_BASE_URL}stablecoins${COINGECKO_API_URL_PARAMS}` + + console.log("Starting Ethereum stablecoins data fetch from CoinGecko") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("CoinGecko stablecoins fetch non-OK", { status, url }) + throw new Error(`CoinGecko API responded with status ${status}`) + } + + const data = await response.json() + + console.log("Successfully fetched Ethereum stablecoins data", { + itemsCount: Array.isArray(data) ? data.length : "unknown", + }) + + return data +} diff --git a/src/data-layer/api/fetchTotalEthStaked.ts b/src/data-layer/api/fetchTotalEthStaked.ts new file mode 100644 index 00000000000..a53f04d331d --- /dev/null +++ b/src/data-layer/api/fetchTotalEthStaked.ts @@ -0,0 +1,51 @@ +import type { EthStakedResponse, MetricReturnData } from "@/lib/types" + +import { DUNE_API_URL } from "@/lib/constants" + +export const FETCH_TOTAL_ETH_STAKED_TASK_ID = "fetch-total-eth-staked" + +/** + * Fetch total ETH staked data from Dune Analytics API. + * Returns the cumulative deposited ETH value. + */ +export async function fetchTotalEthStaked(): Promise { + const duneApiKey = process.env.DUNE_API_KEY + + if (!duneApiKey) { + throw new Error("Dune API key not found (DUNE_API_KEY)") + } + + const url = new URL("api/v1/query/3915587/results", DUNE_API_URL) + + console.log("Starting total ETH staked data fetch from Dune Analytics") + + const response = await fetch(url, { + headers: { "X-Dune-API-Key": duneApiKey }, + }) + + if (!response.ok) { + const status = response.status + console.warn("Dune Analytics fetch non-OK", { status, url: url.toString() }) + throw new Error(`Dune Analytics API responded with status ${status}`) + } + + const json: EthStakedResponse = await response.json() + const { + result: { rows = [] }, + } = json + + if (rows.length === 0) { + throw new Error("No data returned from Dune Analytics query") + } + + // Today's value at start of array + const value = rows[0].cum_deposited_eth + const timestamp = Date.now() + + console.log("Successfully fetched total ETH staked data", { + value, + timestamp, + }) + + return { value, timestamp } +} diff --git a/src/data-layer/api/fetchTotalValueLocked.ts b/src/data-layer/api/fetchTotalValueLocked.ts new file mode 100644 index 00000000000..4aa1787586f --- /dev/null +++ b/src/data-layer/api/fetchTotalValueLocked.ts @@ -0,0 +1,38 @@ +import type { DefiLlamaTVLResponse, MetricReturnData } from "@/lib/types" + +export const FETCH_TOTAL_VALUE_LOCKED_TASK_ID = "fetch-total-value-locked" + +/** + * Fetch total value locked (TVL) data from DefiLlama API. + * Returns the latest total liquidity USD value for Ethereum. + */ +export async function fetchTotalValueLocked(): Promise { + const url = "https://api.llama.fi/charts/Ethereum" + + console.log("Starting total value locked data fetch from DefiLlama") + + const response = await fetch(url) + + if (!response.ok) { + const status = response.status + console.warn("DefiLlama fetch non-OK", { status, url }) + throw new Error(`DefiLlama API responded with status ${status}`) + } + + const json: DefiLlamaTVLResponse = await response.json() + + if (!json || json.length === 0) { + throw new Error("No data returned from DefiLlama API") + } + + // Today's value at end of array + const value = json[json.length - 1].totalLiquidityUSD + const timestamp = Date.now() + + console.log("Successfully fetched total value locked data", { + value, + timestamp, + }) + + return { value, timestamp } +} diff --git a/src/data-layer/docs.md b/src/data-layer/docs.md new file mode 100644 index 00000000000..907b4a8b5c8 --- /dev/null +++ b/src/data-layer/docs.md @@ -0,0 +1,335 @@ +# Data Layer Documentation + +The data layer is a centralized system for fetching, storing, and retrieving external data for the Ethereum.org website. It uses Trigger.dev for scheduled background jobs and Netlify Blobs for persistent storage. + +## Overview + +The data layer provides: +- **Scheduled data fetching** - Automated background jobs that fetch data from external APIs +- **Persistent storage** - Centralized storage for fetched data using Netlify Blobs +- **Type-safe access** - Clean public API with automatic type inference +- **Framework-agnostic design** - Core data-layer has no framework dependencies +- **Mock data support** - Local development without external dependencies + +## Architecture + +``` +src/data-layer/ +ā”œā”€ā”€ api/ # Data fetching functions (one per external data source) +ā”œā”€ā”€ storage/ # Storage abstraction layer (unified Storage interface) +ā”œā”€ā”€ trigger/ # Trigger.dev scheduled tasks (parallelized) +ā”œā”€ā”€ mocks/ # Mock data files for local development +ā”œā”€ā”€ index.ts # Public API - typed getter functions +ā”œā”€ā”€ registry.ts # Central registry of all tasks +└── types.ts # Shared type definitions (including Storage interface) + +src/lib/data/ +└── index.ts # Next.js adapter - adds caching layer +``` + +## Components + +### 1. Public API (`src/data-layer/index.ts`) + +The data-layer exports a clean, framework-agnostic public API with typed getter functions: + +```typescript +import { getEthPrice, getL2beatData } from "@/data-layer" + +// Types flow automatically - no generics needed! +const price = await getEthPrice() // Returns MetricReturnData | null +const l2beat = await getL2beatData() // Returns L2beatData | null +``` + +**Available Functions:** +- `getEthPrice()` - Ethereum price data +- `getL2beatData()` - L2BEAT scaling summary +- `getAppsData()` - Apps organized by category +- `getGrowThePieData()` - GrowThePie fundamentals +- `getGrowThePieBlockspaceData()` - GrowThePie blockspace data +- `getGrowThePieMasterData()` - GrowThePie master data +- `getCommunityPicks()` - Community picks +- `getCalendarEvents()` - Community calendar events +- `getRSSData()` - RSS feeds from community blogs +- `getAttestantPosts()` - Attestant blog posts +- `getBeaconchainEpochData()` - Beaconchain epoch data +- `getBeaconchainEthstoreData()` - Beaconchain ETH store data +- `getBlobscanStats()` - Blobscan statistics +- `getEthereumMarketcapData()` - Ethereum market cap +- `getEthereumStablecoinsMcapData()` - Ethereum stablecoins market cap +- `getGFIs()` - GitHub good first issues +- `getGitHistory()` - GitHub commit history +- `getGithubRepoData()` - GitHub repository data +- `getStablecoinsData()` - Ethereum stablecoins data +- `getTotalEthStakedData()` - Total ETH staked +- `getTotalValueLockedData()` - Total value locked + +**Benefits:** +- āœ… No internal details exposed (no task IDs or storage paths) +- āœ… Automatic type inference +- āœ… Framework-agnostic (can be extracted to separate service) + +### 2. Next.js Adapter (`src/lib/data/index.ts`) + +The adapter provides Next.js-specific caching using `unstable_cache`: + +```typescript +import { getEthPrice } from "@/lib/data" + +// Automatically cached + typed ✨ +const price = await getEthPrice() +``` + +**Cache Durations:** +- **1 hour** (`BASE_TIME_UNIT`) - Most frequently updated data (prices, metrics, feeds) +- **24 hours** (`BASE_TIME_UNIT * 24`) - Less frequently changing data (apps, community picks, GitHub repo data) + +**Why separate adapter?** +- Caching is the app's concern, not the data-layer's +- Data-layer stays framework-agnostic +- Easy to adjust cache settings per data source +- Easy to extract data-layer to its own service later + +### 3. API Functions (`/api`) + +Each API function: +- Fetches data from an external source +- Exports a unique `TASK_ID` constant +- Returns typed data +- Handles errors gracefully +- Includes console logging + +Example: +```typescript +export const FETCH_ETH_PRICE_TASK_ID = "fetch-eth-price" + +export async function fetchEthPrice(): Promise { + // Fetch logic... + return { value: price, timestamp: Date.now() } +} +``` + +### 4. Storage Layer (`/storage`) + +**Unified Storage Interface** (`types.ts`): +```typescript +export interface Storage { + get(taskId: TaskId): Promise | null> + set(taskId: TaskId, data: unknown, metadata?: StorageMetadata): Promise +} +``` + +**Implementations:** +- `netlifyBlobsStorage.ts` - Production storage using Netlify Blobs +- `mockStorage.ts` - Local development using JSON files + +**Public API** (`getter.ts` / `setter.ts`): +- `getData(taskId)` - Retrieve data without metadata +- `getData(taskId, { withMetadata: true })` - Retrieve data with metadata +- `setData(taskId, data)` - Store data with automatic metadata + +**Storage Configuration:** +- Requires `NETLIFY_BLOBS_SITE_ID` and `NETLIFY_BLOBS_TOKEN` environment variables +- Throws error if credentials are missing (no silent fallback) +- Use `USE_MOCK_DATA=true` for local development + +### 5. Registry (`registry.ts`) + +Central registry organizing tasks by schedule: +- `dailyTasks` - Tasks that run daily at midnight UTC +- `hourlyTasks` - Tasks that run hourly +- `tasks` - Combined array of all tasks + +Each task entry: +```typescript +{ + id: "fetch-eth-price", + fetchFunction: fetchEthPrice +} +``` + +### 6. Trigger.dev Tasks (`/trigger/tasks`) + +**Daily Task** (`daily.ts`): +- Runs at midnight UTC (`0 0 * * *`) +- Executes all tasks in `dailyTasks` registry **in parallel** using `Promise.allSettled` +- Stores results using `setData` +- Individual task failures don't stop other tasks + +**Hourly Task** (`hourly.ts`): +- Runs every hour (`0 * * * *`) +- Executes all tasks in `hourlyTasks` registry **in parallel** using `Promise.allSettled` +- Stores results using `setData` +- Individual task failures don't stop other tasks + +**Why consolidated tasks?** +Trigger.dev free tier limits to 10 schedules. By consolidating into 2 tasks (daily/hourly), we stay within limits while supporting many data sources. + +**Why parallelized?** +Tasks now run concurrently instead of sequentially, dramatically reducing execution time. + +## Usage + +### In App Code (Recommended) + +Use the Next.js adapter for automatic caching: + +```typescript +import { getEthPrice, getL2beatData } from "@/lib/data" + +// In a Next.js page or API route +export default async function Page() { + const price = await getEthPrice() // Cached + typed ✨ + const l2beat = await getL2beatData() + + return
Price: {price?.value}
+} +``` + +### Direct Data-Layer Access + +For non-Next.js contexts or when you don't need caching: + +```typescript +import { getEthPrice } from "@/data-layer" + +const price = await getEthPrice() // Returns MetricReturnData | null +``` + +### Type Imports + +Import types from their canonical locations: + +```typescript +import type { MetricReturnData, L2beatData } from "@/lib/types" +import { getEthPrice, getL2beatData } from "@/lib/data" +``` + +## Testing + +Unit tests are available in `tests/unit/data-layer/`: + +```bash +# Run all unit tests +npm run test:unit +``` + +Tests validate: +- āœ… Functions execute without errors +- āœ… Return types match expected structures +- āœ… Handle null cases gracefully +- āœ… Data structure validation when data is present + +See `tests/unit/data-layer/getters.spec.ts` for test examples. + +## Adding a New Data Source + +1. **Create API function** in `/api`: + ```typescript + // src/data-layer/api/fetchNewData.ts + export const FETCH_NEW_DATA_TASK_ID = "fetch-new-data" + + export async function fetchNewData(): Promise { + // Fetch logic... + } + ``` + +2. **Add type to `src/lib/types.ts`** (if not already defined): + ```typescript + export type YourDataType = { + // type definition + } + ``` + +3. **Add getter function** to `src/data-layer/index.ts`: + ```typescript + import { FETCH_NEW_DATA_TASK_ID } from "./api/fetchNewData" + import type { YourDataType } from "@/lib/types" + + export async function getNewData(): Promise { + return getData(FETCH_NEW_DATA_TASK_ID) + } + ``` + +4. **Add to registry** in `registry.ts`: + ```typescript + import { FETCH_NEW_DATA_TASK_ID, fetchNewData } from "./api/fetchNewData" + + // Add to dailyTasks or hourlyTasks array + { + id: FETCH_NEW_DATA_TASK_ID, + fetchFunction: fetchNewData, + } + ``` + +5. **Add adapter function** to `src/lib/data/index.ts`: + ```typescript + export const getNewData = unstable_cache( + () => dataLayer.getNewData(), + ["new-data"], + { revalidate: CACHE_REVALIDATE_HOUR } + ) + ``` + +6. **Task is automatically discovered** by Trigger.dev and will run on the appropriate schedule + +## Environment Variables + +**Required for production:** +- `NETLIFY_BLOBS_SITE_ID` - Netlify Blobs site ID (required, throws error if missing) +- `NETLIFY_BLOBS_TOKEN` - Netlify Blobs access token (required, throws error if missing) +- `TRIGGER_PROJECT_ID` - Trigger.dev project ID + +**Optional for local development:** +- `USE_MOCK_DATA=true` - Use mock storage instead of Netlify Blobs + +## Error Handling + +- **Parallel Execution** - Tasks run concurrently using `Promise.allSettled` +- **Graceful Degradation** - Individual task failures don't stop other tasks from running +- **Error Logging** - All errors are logged with task context +- **Retry Logic** - Trigger.dev handles retries (configured in `trigger.config.ts`) + +## Storage Metadata + +Each stored item includes metadata: +```typescript +{ + storedAt: "2024-01-01T00:00:00.000Z" // ISO timestamp +} +``` + +This allows tracking when data was last updated. + +## Mock Data + +Mock data files are stored in `src/data-layer/mocks/` and can be regenerated: + +```bash +npx dotenv-cli -e .env -- npx ts-node -r tsconfig-paths/register -O '{"module":"commonjs"}' src/data-layer/mocks/generate-mocks.ts +``` + +This pulls data from Netlify Blobs storage and saves it as JSON files for local development. + +## Troubleshooting + +### Mock storage not working +- Ensure `USE_MOCK_DATA=true` is set in `.env` +- Verify mock files exist in `/data-layer/mocks/` +- Regenerate mocks if needed: `npm run generate-mocks` (if script exists) + +### Netlify Blobs errors +- Verify `NETLIFY_BLOBS_SITE_ID` and `NETLIFY_BLOBS_TOKEN` are set +- Check error message for specific configuration issues +- Storage will throw clear error if credentials are missing + +### Trigger.dev tasks not running +- Check `TRIGGER_PROJECT_ID` is set +- Verify task is registered in `registry.ts` +- Check Trigger.dev dashboard for errors +- Tasks run in parallel - check logs for individual task failures + +### Type errors +- Ensure types are defined in `src/lib/types.ts` +- Import types from `@/lib/types`, not from data-layer +- Import functions from `@/lib/data` (adapter) or `@/data-layer` (direct) diff --git a/src/data-layer/index.ts b/src/data-layer/index.ts new file mode 100644 index 00000000000..77f2f356f5c --- /dev/null +++ b/src/data-layer/index.ts @@ -0,0 +1,215 @@ +import type { + AppData, + BeaconchainEpochData, + BlobscanOverallStats, + BlockspaceData, + Commit, + CommunityPick, + GHIssue, + GithubRepoData, + GrowThePieData, + GrowThePieMasterData, + L2beatData, + MetricReturnData, + RSSItem, +} from "@/lib/types" +import type { CommunityEventsReturnType } from "@/lib/interfaces" + +import { FETCH_APPS_TASK_ID } from "./api/fetchApps" +import { FETCH_BEACONCHAIN_EPOCH_TASK_ID } from "./api/fetchBeaconChainEpoch" +import { FETCH_BEACONCHAIN_ETHSTORE_TASK_ID } from "./api/fetchBeaconChainEthstore" +import { FETCH_BLOBSCAN_STATS_TASK_ID } from "./api/fetchBlobscanStats" +import { FETCH_CALENDAR_EVENTS_TASK_ID } from "./api/fetchCalendarEvents" +import { FETCH_COMMUNITY_PICKS_TASK_ID } from "./api/fetchCommunityPicks" +import { FETCH_ETHEREUM_MARKETCAP_TASK_ID } from "./api/fetchEthereumMarketcap" +import { FETCH_ETHEREUM_STABLECOINS_MCAP_TASK_ID } from "./api/fetchEthereumStablecoinsMcap" +import { FETCH_ETH_PRICE_TASK_ID } from "./api/fetchEthPrice" +import { FETCH_GFIS_TASK_ID } from "./api/fetchGFIs" +import { FETCH_GIT_HISTORY_TASK_ID } from "./api/fetchGitHistory" +import { FETCH_GITHUB_REPO_DATA_TASK_ID } from "./api/fetchGithubRepoData" +import { FETCH_GROW_THE_PIE_TASK_ID } from "./api/fetchGrowThePie" +import { FETCH_GROW_THE_PIE_BLOCKSPACE_TASK_ID } from "./api/fetchGrowThePieBlockspace" +import { FETCH_GROW_THE_PIE_MASTER_TASK_ID } from "./api/fetchGrowThePieMaster" +import { FETCH_L2BEAT_TASK_ID } from "./api/fetchL2beat" +import { FETCH_POSTS_TASK_ID } from "./api/fetchPosts" +import { FETCH_RSS_TASK_ID } from "./api/fetchRSS" +import { FETCH_STABLECOINS_DATA_TASK_ID } from "./api/fetchStablecoinsData" +import { FETCH_TOTAL_ETH_STAKED_TASK_ID } from "./api/fetchTotalEthStaked" +import { FETCH_TOTAL_VALUE_LOCKED_TASK_ID } from "./api/fetchTotalValueLocked" +import { getData } from "./storage/getter" + +/** + * Get Ethereum price data. + * @returns The latest ETH price in USD, or null if not available + */ +export async function getEthPrice(): Promise { + return getData(FETCH_ETH_PRICE_TASK_ID) +} + +/** + * Get L2BEAT scaling summary data. + * @returns L2BEAT project data including TVL, maturity, and other metrics, or null if not available + */ +export async function getL2beatData(): Promise { + return getData(FETCH_L2BEAT_TASK_ID) +} + +/** + * Get apps data organized by category. + * @returns Apps data grouped by category, or null if not available + */ +export async function getAppsData(): Promise | null> { + return getData>(FETCH_APPS_TASK_ID) +} + +/** + * Get GrowThePie fundamentals data. + * @returns Transaction counts, costs, and active addresses for Layer 2 networks, or null if not available + */ +export async function getGrowThePieData(): Promise { + return getData(FETCH_GROW_THE_PIE_TASK_ID) +} + +/** + * Get GrowThePie blockspace data. + * @returns Blockspace usage data (NFT, DeFi, social, token transfers, unlabeled) for each network, or null if not available + */ +export async function getGrowThePieBlockspaceData(): Promise | null> { + return getData>( + FETCH_GROW_THE_PIE_BLOCKSPACE_TASK_ID + ) +} + +/** + * Get GrowThePie master data containing chain launch dates. + * @returns Launch dates for all chains indexed by their URL key, or null if not available + */ +export async function getGrowThePieMasterData(): Promise { + return getData(FETCH_GROW_THE_PIE_MASTER_TASK_ID) +} + +/** + * Get community picks data. + * @returns Community picks data, or null if not available + */ +export async function getCommunityPicks(): Promise { + return getData(FETCH_COMMUNITY_PICKS_TASK_ID) +} + +/** + * Get community calendar events. + * @returns Past and upcoming community events, or null if not available + */ +export async function getCalendarEvents(): Promise { + return getData(FETCH_CALENDAR_EVENTS_TASK_ID) +} + +/** + * Get RSS feeds from community blogs. + * @returns Array of RSS items grouped by source, or null if not available + */ +export async function getRSSData(): Promise { + return getData(FETCH_RSS_TASK_ID) +} + +/** + * Get Attestant blog posts. + * @returns Array of RSS items from the Attestant blog, or null if not available + */ +export async function getAttestantPosts(): Promise { + return getData(FETCH_POSTS_TASK_ID) +} + +/** + * Get beaconchain epoch data. + * @returns Latest epoch data including total ETH staked and validator count, or null if not available + */ +export async function getBeaconchainEpochData(): Promise { + return getData(FETCH_BEACONCHAIN_EPOCH_TASK_ID) +} + +/** + * Get beaconchain ETH store data (APR). + * @returns ETH store APR data, or null if not available + */ +export async function getBeaconchainEthstoreData(): Promise { + return getData(FETCH_BEACONCHAIN_ETHSTORE_TASK_ID) +} + +/** + * Get blobscan overall stats. + * @returns Blobscan statistics including blob fees, gas usage, and transaction counts, or null if not available + */ +export async function getBlobscanStats(): Promise { + return getData(FETCH_BLOBSCAN_STATS_TASK_ID) +} + +/** + * Get Ethereum market cap data. + * @returns Ethereum market cap metric data, or null if not available + */ +export async function getEthereumMarketcapData(): Promise { + return getData(FETCH_ETHEREUM_MARKETCAP_TASK_ID) +} + +/** + * Get Ethereum stablecoins market cap data. + * @returns Ethereum stablecoins market cap metric data, or null if not available + */ +export async function getEthereumStablecoinsMcapData(): Promise { + return getData(FETCH_ETHEREUM_STABLECOINS_MCAP_TASK_ID) +} + +/** + * Get GitHub good first issues. + * @returns Array of GitHub issues labeled as "good first issue", or null if not available + */ +export async function getGFIs(): Promise { + return getData(FETCH_GFIS_TASK_ID) +} + +/** + * Get GitHub commit history. + * @returns Recent commit history from the repository, or null if not available + */ +export async function getGitHistory(): Promise { + return getData(FETCH_GIT_HISTORY_TASK_ID) +} + +/** + * Get GitHub repository data for local environment frameworks. + * @returns Star counts and languages for each repository, or null if not available + */ +export async function getGithubRepoData(): Promise | null> { + return getData>(FETCH_GITHUB_REPO_DATA_TASK_ID) +} + +/** + * Get Ethereum stablecoins data from CoinGecko. + * @returns Market data for stablecoins on Ethereum, or null if not available + */ +export async function getStablecoinsData(): Promise { + return getData(FETCH_STABLECOINS_DATA_TASK_ID) +} + +/** + * Get total ETH staked data. + * @returns Total ETH staked metric data, or null if not available + */ +export async function getTotalEthStakedData(): Promise { + return getData(FETCH_TOTAL_ETH_STAKED_TASK_ID) +} + +/** + * Get total value locked (TVL) data. + * @returns TVL metric data, or null if not available + */ +export async function getTotalValueLockedData(): Promise { + return getData(FETCH_TOTAL_VALUE_LOCKED_TASK_ID) +} diff --git a/src/data-layer/mocks/README.md b/src/data-layer/mocks/README.md new file mode 100644 index 00000000000..788895cee76 --- /dev/null +++ b/src/data-layer/mocks/README.md @@ -0,0 +1,15 @@ +# Mock Data Files + +These mock data files are generated from Netlify Blobs storage for local development. + +## Usage + +These files can be used to mock the data-layer storage in local development environments without needing to connect to Netlify Blobs. + +## Generation + +To regenerate these files, run: + +```bash +npx dotenv-cli -e .env -- npx ts-node -r tsconfig-paths/register -O '{"module":"commonjs"}' src/data-layer/mocks/generate-mocks.ts +``` diff --git a/src/data-layer/mocks/fetch-apps.json b/src/data-layer/mocks/fetch-apps.json new file mode 100644 index 00000000000..b47ef69d05e --- /dev/null +++ b/src/data-layer/mocks/fetch-apps.json @@ -0,0 +1,6237 @@ +{ + "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": "2025-11-23T07:00:00.000Z", + "appOfTheWeekEndDate": "2025-11-30T07:00:00.000Z" + }, + { + "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" + } + ] +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-beaconchain-epoch.json b/src/data-layer/mocks/fetch-beaconchain-epoch.json new file mode 100644 index 00000000000..b5fb87f41ec --- /dev/null +++ b/src/data-layer/mocks/fetch-beaconchain-epoch.json @@ -0,0 +1,10 @@ +{ + "totalEthStaked": { + "value": 35630329, + "timestamp": 1764949745203 + }, + "validatorscount": { + "value": 997431, + "timestamp": 1764949745203 + } +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-beaconchain-ethstore.json b/src/data-layer/mocks/fetch-beaconchain-ethstore.json new file mode 100644 index 00000000000..bf370b1fc4e --- /dev/null +++ b/src/data-layer/mocks/fetch-beaconchain-ethstore.json @@ -0,0 +1,4 @@ +{ + "value": 0.0272584298768825, + "timestamp": 1764949745905 +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-blobscan-stats.json b/src/data-layer/mocks/fetch-blobscan-stats.json new file mode 100644 index 00000000000..ea64e29209d --- /dev/null +++ b/src/data-layer/mocks/fetch-blobscan-stats.json @@ -0,0 +1,28 @@ +{ + "category": null, + "rollup": null, + "avgBlobAsCalldataFee": 11085949788540870, + "avgBlobAsCalldataMaxFee": 48109050543548800, + "avgBlobFee": 800054927103381.2, + "avgBlobGasPrice": 2721035040.562003, + "avgBlobMaxFee": 3280448865818572, + "avgBlobUsageSize": 115618.9655024096, + "avgMaxBlobGasFee": 11872650340.57533, + "totalBlobAsCalldataFee": "65454130351394103971844", + "totalBlobAsCalldataGasUsed": "26988282022268", + "totalBlobAsCalldataMaxFees": "284047476799343672388552", + "totalBlobGasPrice": "16065649369957879", + "totalBlobFee": "4723717902910721753088", + "totalBlobGasUsed": "1884175204352", + "totalBlobMaxFees": "19368563972418380759040", + "totalBlobMaxGasFees": "70099000792139134", + "totalBlobs": 14375033, + "totalBlobSize": "1884164325376", + "totalBlobUsageSize": "1662026444523", + "totalBlocks": 3045294, + "totalTransactions": 5904242, + "totalUniqueBlobs": 14247238, + "totalUniqueReceivers": 5582, + "totalUniqueSenders": 6198, + "updatedAt": "2025-12-05T15:45:00.208Z" +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-calendar-events.json b/src/data-layer/mocks/fetch-calendar-events.json new file mode 100644 index 00000000000..f166af7cd35 --- /dev/null +++ b/src/data-layer/mocks/fetch-calendar-events.json @@ -0,0 +1,36 @@ +{ + "pastEventData": [ + { + "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" + } + ], + "upcomingEventData": [ + { + "date": "2025-12-10T17:45:00Z", + "title": " šŸ›  QA session - ethereum.org portal", + "calendarLink": "https://www.google.com/calendar/event?eid=MzZhMzJlNXFjYmk5dTk4bGUzanMxcGQ2YjQgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + }, + { + "date": "2025-12-18T17:00:00Z", + "title": " ā˜Žļø ethereum.org Community Call V - December 2025", + "calendarLink": "https://www.google.com/calendar/event?eid=NnNxcHZmZW9nbmlzMW83anBrcnYzMWZnc2cgY185ZTRiMWIyNzYwNzQzNDYzODE2MTAwYTE2OWQxNDI0MzAzNTJhN2NmYzMzNDRiMWU3ODVkYjUyMzg1YzlmZDM2QGc" + } + ] +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-community-picks.json b/src/data-layer/mocks/fetch-community-picks.json new file mode 100644 index 00000000000..65b00dd003c --- /dev/null +++ b/src/data-layer/mocks/fetch-community-picks.json @@ -0,0 +1,26 @@ +[ + { + "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" + } +] \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-eth-price.json b/src/data-layer/mocks/fetch-eth-price.json new file mode 100644 index 00000000000..755d4fe9b30 --- /dev/null +++ b/src/data-layer/mocks/fetch-eth-price.json @@ -0,0 +1,4 @@ +{ + "value": 3122.09, + "timestamp": 1764949748531 +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-ethereum-marketcap.json b/src/data-layer/mocks/fetch-ethereum-marketcap.json new file mode 100644 index 00000000000..a1a7a0bcc7a --- /dev/null +++ b/src/data-layer/mocks/fetch-ethereum-marketcap.json @@ -0,0 +1,4 @@ +{ + "value": 376847990540.9484, + "timestamp": 1764949747416 +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-ethereum-stablecoins-mcap.json b/src/data-layer/mocks/fetch-ethereum-stablecoins-mcap.json new file mode 100644 index 00000000000..3a1ed1bacbc --- /dev/null +++ b/src/data-layer/mocks/fetch-ethereum-stablecoins-mcap.json @@ -0,0 +1,4 @@ +{ + "value": 167591081783.81357, + "timestamp": 1764949748314 +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-gfis.json b/src/data-layer/mocks/fetch-gfis.json new file mode 100644 index 00000000000..dac9b65b621 --- /dev/null +++ b/src/data-layer/mocks/fetch-gfis.json @@ -0,0 +1,364 @@ +[ + { + "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": 10, + "created_at": "2025-08-18T17:07:22Z", + "updated_at": "2025-12-04T12:00:06Z", + "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 + }, + { + "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" + } +] \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-git-history.json b/src/data-layer/mocks/fetch-git-history.json new file mode 100644 index 00000000000..9f3a397fb74 --- /dev/null +++ b/src/data-layer/mocks/fetch-git-history.json @@ -0,0 +1,8417 @@ +[ + { + "sha": "4e38224661d9c93ec215e65d2d4211dfa5bfcbfc", + "node_id": "C_kwDOBvEA_toAKDRlMzgyMjQ2NjFkOWM5M2VjMjE1ZTY1ZDJkNDIxMWRmYTViZmNiZmM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-05T14:52:27Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-05T14:52:27Z" + }, + "message": "Merge pull request #16805 from ethereum/gtp-data-patch", + "tree": { + "sha": "f1b7ce839f6c122aa5158d4997af6c1b89e284a5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/f1b7ce839f6c122aa5158d4997af6c1b89e284a5" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/4e38224661d9c93ec215e65d2d4211dfa5bfcbfc", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMvGrCRC1aQ7uu5UhlAAAZDcQAECnDVqSFkxDji9qC9rLFHOj\nP68QjBBaHcmbyVl02HgLwdO3cApDMxsq4nGDNGFTlupSqFj0n3lM7rPz5dYXS/T8\nJ8oRZkJ4dG/qgZLzsh6sr6EwTZeAqOY0i/wLF3VMsUCWi0uNwcBOHNKxSksEzfRg\n/qTNZ4GTZZBZBGUg5RhsD95tu9sJUXW8CbSkj5Lm3kVCYFhvXvcgEFYWUJuI3EU/\n/LEy9U8dkawLa2tbj9z95e2rowXzd10ox3aPlttqZf1pTjQ0qYU3xPZnEZfoRWn9\ncv4Jm4ZvsZAOBXj5w06BQT8It+DzsYLS2hGcl4VPAVfY0MR/jP6gMRKuAScTEXlV\ncFgUgV54yULyeWzN4Ipwg8cjeAJF38FcZy01f2aptwCESBlOGsfD047JcWFt8U9J\nhpNbv44GmXhChnzPGAiLp1HfOJX7018gjbQLev3pYLLIHW6EU729w09GLmN77uzN\n9Gj8ZiqjcaD4BSA36Var+MvMPyXvs6At9By+G4Z5AIEaaUtwKJ4DN/fIt3O3dHLv\nTs8MuhyZyqXZuZpqL1xGqAI0busCWdoruOYp2RsSBzGLE7ma92qWjojDqxE8DfXB\ny2QkNd7TRWvO8uDZVetS+15J4zeMB1e1JcNWaVEs5Va5HMYSRrZRSz8YAnrdKY9k\n5Q+/mjmtEXWtkHSvTVee\n=Z6+i\n-----END PGP SIGNATURE-----\n", + "payload": "tree f1b7ce839f6c122aa5158d4997af6c1b89e284a5\nparent 527ce9dfec7ada989e99c1c2d89ff2729f7727cc\nparent 687e26f97dca948354deca8a76eb870bc6d05a77\nauthor Corwin Smith 1764946347 -0700\ncommitter GitHub 1764946347 -0700\n\nMerge pull request #16805 from ethereum/gtp-data-patch\n\n", + "verified_at": "2025-12-05T14:52:28Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4e38224661d9c93ec215e65d2d4211dfa5bfcbfc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/4e38224661d9c93ec215e65d2d4211dfa5bfcbfc", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4e38224661d9c93ec215e65d2d4211dfa5bfcbfc/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/527ce9dfec7ada989e99c1c2d89ff2729f7727cc" + }, + { + "sha": "687e26f97dca948354deca8a76eb870bc6d05a77", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/687e26f97dca948354deca8a76eb870bc6d05a77", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/687e26f97dca948354deca8a76eb870bc6d05a77" + } + ] + }, + { + "sha": "687e26f97dca948354deca8a76eb870bc6d05a77", + "node_id": "C_kwDOBvEA_toAKDY4N2UyNmY5N2RjYTk0ODM1NGRlY2E4YTc2ZWI4NzBiYzZkMDVhNzc", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-05T13:20:51Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-05T13:20:51Z" + }, + "message": "patch: growThePieBlockspaceData fallback handling", + "tree": { + "sha": "f1b7ce839f6c122aa5158d4997af6c1b89e284a5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/f1b7ce839f6c122aa5158d4997af6c1b89e284a5" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/687e26f97dca948354deca8a76eb870bc6d05a77", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmky3DoACgkQ9N587fAS\nn7ZFTRAA04A5Vu3X63ijsg2+YzPrFN0g8AOieo4VfOPoC21qjAXe/ELOOkIrGxJ4\n048qQ3zjbafS2AONtr+t+wxxBY58FCt3PBKbeuJGePWQM+DBFoSeprB0tL5p0rWM\n0uog8BXSNrMfq/aIY7euIycC61PI1kbmJoqNMoKiBsT82Z+H9t1cVVNqJ4nFsso4\nmC3mfUUvZ1ec0L6Dfq+gH9dHCgI+3n835AXi8LtIBO6VCVzOXcN5WeuGM/rZLiZt\nqCYbozNehH4EuJ4Zt1lP6edIjB7MlvY/cLwTF5wtAVHjfzISxKAVo52RAPGltdKb\njpKSkpZ5kINV6AmGQnwPLV3bGEfoQwoNcL6faBmYZOv4ClrrgZpMTW1UflDFfk34\n2tMHY/obEx+5OpSX3/lAXkTzOKk8sv1zO5f0Ui7E9N8u5EhnBMgCO020mQNziKBE\nhOiztR5LPxiI7RDXggd7yrY8ZwbJ2ztm7gMUACyrvPiU3rFhBNJ8FKS1Yz7YB5hr\nyEQfx8Xx3/CwR/DEp8ln3w+v2Mjo54E/5BcP/+wHh1AZJ36KDk/HpBBD0mz4df9N\n4KYw6oCXBGl32Fqo5loFL+FBVSbacGyTHZhuVD5fulkJot/XSI/iGIX850uRyTrt\np6e75nh76MXcdiu4bWbUzjPOMj4sZCMIl8LtKgyddC46+R/mg2w=\n=8jBg\n-----END PGP SIGNATURE-----", + "payload": "tree f1b7ce839f6c122aa5158d4997af6c1b89e284a5\nparent 527ce9dfec7ada989e99c1c2d89ff2729f7727cc\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764940851 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764940851 -0300\n\npatch: growThePieBlockspaceData fallback handling\n", + "verified_at": "2025-12-05T13:21:18Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/687e26f97dca948354deca8a76eb870bc6d05a77", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/687e26f97dca948354deca8a76eb870bc6d05a77", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/687e26f97dca948354deca8a76eb870bc6d05a77/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/527ce9dfec7ada989e99c1c2d89ff2729f7727cc" + } + ] + }, + { + "sha": "527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "node_id": "C_kwDOBvEA_toAKDUyN2NlOWRmZWM3YWRhOTg5ZTk5YzFjMmQ4OWZmMjcyOWY3NzI3Y2M", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-04T19:29:02Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-04T19:29:02Z" + }, + "message": "Merge pull request #16795 from ethereum/hot-fix-fusaka-label\n\n[hot-patch] fusaka history header", + "tree": { + "sha": "3a8b666cbab2d0159b8660599b7cf6c1e15aa8aa", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/3a8b666cbab2d0159b8660599b7cf6c1e15aa8aa" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMeD+CRC1aQ7uu5UhlAAAGWkQAFcwzaN1H++yLzF25tywnHvO\n4xcPX8MbssKbumNeLKykznniMLg6Vwr8cQADDT+DLVshnbaFMVhMUpdy+DXJjx0f\n/BgB8b4V7jRxY0qbM8fc1+lj2tCoINX+JjrEIb1jT2xgBuzMwsDwQSVXS1txYMeF\nQ1w8M3bKNY7ivIfDKq1qM3oT7/gj50Ggz/LXjm/5KYVSJAHeqqavOn80Dewjb8Du\ndF/YkaxbfdnO05Dkoy068GWtLtolwqE26pWxbBAE0RwzNJF0LRaPV4BGZd2ep/Vz\n7i9v9LGNWLNN6SELD9ODb4A86bY2YvVdjR6cjer3wN4VrwprWwMZwUUDcVXlknj2\nWuvjwbVtbezQZDcD3TzwBu6WmtbFCxQ0LmFSzp4hJW1jcHg3hxQ9B3S+er7JIRWl\ne1kQV0/nx/ZvFqpcScIRazxy5O4bYOtgHbutPxa9v5ZSKFqmp8Qn67HLXD/46YIL\nrgBLLBhEsPo01zvzWbluDrn4/8oTmDZq28RcXnxaFS7LrDHVRXgmOJau/2cIGY+0\nBKXT/uJzZ2apVsBeSZvSg7dXHaDtMwKtIArvXRt0RGEA8KYyRfI6Kd/XiIXWNeeC\n7BFZ+1Zf+cRWM7SOINps3o4fB7EkfwNaC2dutiQr7d4GHgAm5XgcmkhJOum72LZp\nK9nVu0m6m/KRt+0IV9p7\n=eXGk\n-----END PGP SIGNATURE-----\n", + "payload": "tree 3a8b666cbab2d0159b8660599b7cf6c1e15aa8aa\nparent 32a487b407d342a882d5fa946aec88ee4f3d3057\nparent cdadeb519e31f76e6fc1034d11941901e2ec49ad\nauthor Corwin Smith 1764876542 -0700\ncommitter GitHub 1764876542 -0700\n\nMerge pull request #16795 from ethereum/hot-fix-fusaka-label\n\n[hot-patch] fusaka history header", + "verified_at": "2025-12-04T19:29:03Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/527ce9dfec7ada989e99c1c2d89ff2729f7727cc", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/527ce9dfec7ada989e99c1c2d89ff2729f7727cc/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "32a487b407d342a882d5fa946aec88ee4f3d3057", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/32a487b407d342a882d5fa946aec88ee4f3d3057", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/32a487b407d342a882d5fa946aec88ee4f3d3057" + }, + { + "sha": "cdadeb519e31f76e6fc1034d11941901e2ec49ad", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/cdadeb519e31f76e6fc1034d11941901e2ec49ad", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/cdadeb519e31f76e6fc1034d11941901e2ec49ad" + } + ] + }, + { + "sha": "cdadeb519e31f76e6fc1034d11941901e2ec49ad", + "node_id": "C_kwDOBvEA_toAKGNkYWRlYjUxOWUzMWY3NmU2ZmMxMDM0ZDExOTQxOTAxZTJlYzQ5YWQ", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-04T19:23:13Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-04T19:23:13Z" + }, + "message": "patch: fusaka history header", + "tree": { + "sha": "3a8b666cbab2d0159b8660599b7cf6c1e15aa8aa", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/3a8b666cbab2d0159b8660599b7cf6c1e15aa8aa" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/cdadeb519e31f76e6fc1034d11941901e2ec49ad", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkx36MACgkQ9N587fAS\nn7a7KRAAoDpiDWnBwsvNW21NU1J9FqU8MSTJE19J2QZ34IXLaFPUU+4cTdKJeKQo\nZKT5MajUmiROV8hYOUGRokgDk7i+GG5Zu1qZgAwf+ncVrx3QJZQlqt8C9fwsiES7\nZFzaDVMfMCf7HVQXJNFrzzkfBth5F/oMDzDFr4agE/JQ7YIqRu4psms6wJFU8Sce\nqgzLlcPpcmSAz9ovE3SAvpgx5c0ChW3e5K6Pc+KP4P+itsv+L0l5fAKLklbm2dJj\nrDi/QHapdi9RfdqCxXAqDTY/sI7R/mIYIPlMXQo/cavgxKmuTpDvCh7g1GLbKOSM\njgDumDG6qy7I1c9Cssz4ilXCWtRvW6TlWpriWTA2qHo+3U77LURY8i/mQa69R9gN\n9nc5eeEvzM5sYxWNHmTXLAlXfy73bZOqBcP8Zs7LCYt1kIBFWCuP8uMJH4F7DInQ\nQSeRUanIZ35YFZyO+54kKXhmJlQWILJK2vQk9REfnUkPeMF3O0B6DLuyLQCdIhcT\nhT/xrlEuv+zsy2NfNlZUFOgtBb6Lr/oPJojRqQzXsdIsTHaQFybEWGhrEwTDM/L9\n6r983yfPA86E31/SvYyxFeu6D4YCcVrc44t9hW71YCi2Nbl2YVVKxuK5IyFfm2jZ\nB8AnEF7Rs4uxwsj6d/e+xIvsJBa0zR0443W3rVLTV4ORfD4xEAw=\n=46Uu\n-----END PGP SIGNATURE-----", + "payload": "tree 3a8b666cbab2d0159b8660599b7cf6c1e15aa8aa\nparent 32a487b407d342a882d5fa946aec88ee4f3d3057\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764876193 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764876193 -0300\n\npatch: fusaka history header\n", + "verified_at": "2025-12-04T19:23:43Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/cdadeb519e31f76e6fc1034d11941901e2ec49ad", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/cdadeb519e31f76e6fc1034d11941901e2ec49ad", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/cdadeb519e31f76e6fc1034d11941901e2ec49ad/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "32a487b407d342a882d5fa946aec88ee4f3d3057", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/32a487b407d342a882d5fa946aec88ee4f3d3057", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/32a487b407d342a882d5fa946aec88ee4f3d3057" + } + ] + }, + { + "sha": "32a487b407d342a882d5fa946aec88ee4f3d3057", + "node_id": "C_kwDOBvEA_toAKDMyYTQ4N2I0MDdkMzQyYTg4MmQ1ZmE5NDZhZWM4OGVlNGYzZDMwNTc", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-04T14:07:06Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-04T14:07:06Z" + }, + "message": "Merge pull request #16784 from ethereum/staging\n\nDeploy v10.19.0", + "tree": { + "sha": "839a196ff9c976c91236b8208530afa54a4ca78c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/839a196ff9c976c91236b8208530afa54a4ca78c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/32a487b407d342a882d5fa946aec88ee4f3d3057", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMZWKCRC1aQ7uu5UhlAAA1NcQAFxnj0jd9uRzaoqYwZMQEfgw\n5T7/yfZeMlT0BhawWKwni0yg2PfXQ2rrbdu9Nhqs/Ws+py73HJbCpgb+89WyFvD9\n7QDP8/X6q5CiDzHczcXPXhBxowfETF44RUVGISBzUzvqKYoQiZd6LctBB2VsFaDv\nRYiiBNZHob2D5ffifpA0d1RvlNy8fVrSx678tTGs0rrVKR5/JDz7svrHf7DXE0Nn\nlQuvs9j5WqUmGew8bnQKYqA5/QChlJwdwOTyA17QfN2TLihCg64ekhAfO/hRr0BJ\nTIyk2jyTbuHA4rCpgyDYMvuWzf4Mphz1ei+jpiioyO3YggQDIMRokfgZ/g6525kb\n6U6gEPtTk9ME5Ka8OP9I3vXYEBtCpjFLHyvIXeJkIQj50nlPEGoqTuSNw4vServK\nft1VS768Nai8nkXlnTjqIcqevx2izSqrA17+GaXSaLNTQMrBcVZvHbjIncwRiaIp\nL7WlxieE0YC6tj73dJX7l3cJVDdP/iR76qPo/6l1+5bPUnUdE/5l43sB6y79NNfu\nP4J38/zijYov9mDLSeSPP94fhEtTasLfYJaw/TPl4078iCD7LtA1x60v4AUgBjrF\nIN0T3Hfg7aiRKPiK4aRxymVcB6l+G0z8C2PDsRNPc4CI9cA9azbST+efa41sAM2i\n1/9nhMeGDppAOx0iEEdA\n=BPj7\n-----END PGP SIGNATURE-----\n", + "payload": "tree 839a196ff9c976c91236b8208530afa54a4ca78c\nparent ec5ad9e3fcc47519531ea16229074b139abef2d8\nparent 07ef70d8f846d56b9aba610de70b5d2f7dbd49fa\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764857226 -0300\ncommitter GitHub 1764857226 -0300\n\nMerge pull request #16784 from ethereum/staging\n\nDeploy v10.19.0", + "verified_at": "2025-12-04T14:07:07Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/32a487b407d342a882d5fa946aec88ee4f3d3057", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/32a487b407d342a882d5fa946aec88ee4f3d3057", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/32a487b407d342a882d5fa946aec88ee4f3d3057/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "ec5ad9e3fcc47519531ea16229074b139abef2d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ec5ad9e3fcc47519531ea16229074b139abef2d8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ec5ad9e3fcc47519531ea16229074b139abef2d8" + }, + { + "sha": "07ef70d8f846d56b9aba610de70b5d2f7dbd49fa", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/07ef70d8f846d56b9aba610de70b5d2f7dbd49fa", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/07ef70d8f846d56b9aba610de70b5d2f7dbd49fa" + } + ] + }, + { + "sha": "ec5ad9e3fcc47519531ea16229074b139abef2d8", + "node_id": "C_kwDOBvEA_toAKGVjNWFkOWUzZmNjNDc1MTk1MzFlYTE2MjI5MDc0YjEzOWFiZWYyZDg", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-04T00:30:16Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-04T00:30:16Z" + }, + "message": "Merge pull request #16787 from ethereum/patch-fusaka-banner-layout", + "tree": { + "sha": "81fab0048983768a727016d1a1a360054b84acf3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/81fab0048983768a727016d1a1a360054b84acf3" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/ec5ad9e3fcc47519531ea16229074b139abef2d8", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMNYYCRC1aQ7uu5UhlAAA/doQACyEg76yPn0Kd3f0oprV3xPp\nZrneMB4D4HS+ObL4PeKKaacHAufY9Nx/EV2vBpXDl/rIdksBYh0N0fAH2m3wys3B\nO3SkfQpomWV4rTnmESOKwzo8hwTGbPxXNbLLO+VQkJmcS4oqYVCel4vzujiDx4/h\nv5NLTx0+cOV8aJuMXZ2HkqLK5QibUiYx93LWc2QX5cd1WVsv7vQQq0p52uvdMHOR\nRJ+M4W0utJI0Ru7vph1n6xzu2MlUiUjkT9ZiIk3I68rYo5FGIDN+rW/HasYOY0C2\naHWvd1pmK4Hcus1563+kpbgiijgTRv3YTUUtK13enqDeEkZ+Qy3wB20Gg+znExZA\npC7n+1tPT9OSNtWtCQBpHikZ3cIgC1d3yzoShLBoL8NPzOUW3DK9boKlSjBIof1L\nfDNFadJVnkQdCU8ikW3n89YsDMOF/y9cwLaw6Ok+cmNfEiP/l+tQGNEbrr0gafnC\n9HsllZeyWVaQR7plLEK/uip4qVppyHGSD6Ta996K0TN0Ecz9YhApQzf8rZLAgKx7\n2CjuL0RNX/M2PNG5CJZk+Pv4lKJJsplu+3PUPLzxByLpnE2YPefLX71BB2T+SzZK\nxumgqQHUi4v3bQHgOq6zK7Khh3nVcm+GnlHYE44wpz6eioREMzNZgy8WYgPC+QSe\nB77/U9RjkwlXxGGR6oY8\n=9v5Q\n-----END PGP SIGNATURE-----\n", + "payload": "tree 81fab0048983768a727016d1a1a360054b84acf3\nparent e09fcff896fed6f94ee12d79b251509843ec8125\nparent 79f6c8717597665d1f3037b4379471d1230e9d94\nauthor Corwin Smith 1764808216 -0700\ncommitter GitHub 1764808216 -0700\n\nMerge pull request #16787 from ethereum/patch-fusaka-banner-layout\n\n", + "verified_at": "2025-12-04T00:30:17Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ec5ad9e3fcc47519531ea16229074b139abef2d8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ec5ad9e3fcc47519531ea16229074b139abef2d8", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ec5ad9e3fcc47519531ea16229074b139abef2d8/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "e09fcff896fed6f94ee12d79b251509843ec8125", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e09fcff896fed6f94ee12d79b251509843ec8125", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e09fcff896fed6f94ee12d79b251509843ec8125" + }, + { + "sha": "79f6c8717597665d1f3037b4379471d1230e9d94", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/79f6c8717597665d1f3037b4379471d1230e9d94", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/79f6c8717597665d1f3037b4379471d1230e9d94" + } + ] + }, + { + "sha": "79f6c8717597665d1f3037b4379471d1230e9d94", + "node_id": "C_kwDOBvEA_toAKDc5ZjZjODcxNzU5NzY2NWQxZjMwMzdiNDM3OTQ3MWQxMjMwZTlkOTQ", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T22:34:49Z" + }, + "committer": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T22:38:17Z" + }, + "message": "improve FusakaBanner mobile layout with better spacing, hierarchy, and responsive adjustments", + "tree": { + "sha": "81fab0048983768a727016d1a1a360054b84acf3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/81fab0048983768a727016d1a1a360054b84acf3" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/79f6c8717597665d1f3037b4379471d1230e9d94", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/79f6c8717597665d1f3037b4379471d1230e9d94", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/79f6c8717597665d1f3037b4379471d1230e9d94", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/79f6c8717597665d1f3037b4379471d1230e9d94/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "e09fcff896fed6f94ee12d79b251509843ec8125", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e09fcff896fed6f94ee12d79b251509843ec8125", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e09fcff896fed6f94ee12d79b251509843ec8125" + } + ] + }, + { + "sha": "07ef70d8f846d56b9aba610de70b5d2f7dbd49fa", + "node_id": "C_kwDOBvEA_toAKDA3ZWY3MGQ4Zjg0NmQ1NmI5YWJhNjEwZGU3MGI1ZDJmN2RiZDQ5ZmE", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T21:57:17Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T21:57:17Z" + }, + "message": "Merge branch 'master' into staging", + "tree": { + "sha": "d5d0a5505a2835a99df0cc6e5c0258c41e9fd5f0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/d5d0a5505a2835a99df0cc6e5c0258c41e9fd5f0" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/07ef70d8f846d56b9aba610de70b5d2f7dbd49fa", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwskIACgkQ9N587fAS\nn7YLrg//cEDn8yg3584OypI8ZTCeSz4QMmp/gdoFfcojPNhY75h8Ky7r7cxIVydz\ndmVzfNGvyPWPpydQUPWnVq74bxy8r+ROVu2kg+dzBzWyvtizTbgSezwYFDaobLBN\nhf3Q/DCjHmlMJjKjqWVxCTUOGuSZ6c/R6YMGz4mxBnLD1ugwzHKM63oTZ5cVezOw\nDL/0N9a0/JkPLPZSGkHwUrAgkpO+urPQBDBaZCYNIO6MD9PDYpD3nm48u7fWmotC\n6ahswHET2loS+IFP1ranpRef4YTYsBE6YY4iG6HguTDYbNidwr2w4K4pYt0d1dfH\nSvaOH2KLspnconKbN1ar6XANP6ke6u4s7xj16FTnxqKlLauAwqHJoyffUM58/I0R\nwvmEE+iZXQy5yg+e2rppC9nD37+jdKAqPcjkoudK+47lCP4uAGsb34zZqDHjfbMa\nA7HZSHtjYvsQHZBN5LM0U4Y/Bo240X6jpa4Kr+/058BsrJiCYAwLlwEhAxcC+ckb\nyVzBsBnCoZkRHMguVb7X/zxgSx2zOiX7Nrz1AdqzqIhZh+3EdHU1Z9a8VuzICcgX\ngRpt9lDkkRioFOtwdXc1HA2OdtFosy1kDv7vxOwuz4HzoLDtjPY7wAjwBRTFKwQc\nmwanQ/2OgCsZunx7++TISxGZDJWlsbS2js7fcwwKqkW8Ra6yhNU=\n=hlZ/\n-----END PGP SIGNATURE-----", + "payload": "tree d5d0a5505a2835a99df0cc6e5c0258c41e9fd5f0\nparent 20d16cd0399e86a948da483a48935a1c4af49f98\nparent e09fcff896fed6f94ee12d79b251509843ec8125\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764799037 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764799037 -0300\n\nMerge branch 'master' into staging\n", + "verified_at": "2025-12-03T21:57:32Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/07ef70d8f846d56b9aba610de70b5d2f7dbd49fa", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/07ef70d8f846d56b9aba610de70b5d2f7dbd49fa", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/07ef70d8f846d56b9aba610de70b5d2f7dbd49fa/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "20d16cd0399e86a948da483a48935a1c4af49f98", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/20d16cd0399e86a948da483a48935a1c4af49f98", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/20d16cd0399e86a948da483a48935a1c4af49f98" + }, + { + "sha": "e09fcff896fed6f94ee12d79b251509843ec8125", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e09fcff896fed6f94ee12d79b251509843ec8125", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e09fcff896fed6f94ee12d79b251509843ec8125" + } + ] + }, + { + "sha": "20d16cd0399e86a948da483a48935a1c4af49f98", + "node_id": "C_kwDOBvEA_toAKDIwZDE2Y2QwMzk5ZTg2YTk0OGRhNDgzYTQ4OTM1YTFjNGFmNDlmOTg", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T21:55:10Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T21:55:10Z" + }, + "message": "Merge pull request #16785 from ethereum/fusaka-history-update\n\nfeat: update fusaka upgrade details", + "tree": { + "sha": "31bec29182109f59bcf39a048ad6c98142e7bb17", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/31bec29182109f59bcf39a048ad6c98142e7bb17" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/20d16cd0399e86a948da483a48935a1c4af49f98", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMLG+CRC1aQ7uu5UhlAAA3p4QADLRQtB3ygrq/s6ziclAlsW6\nrYlYA2FT38WBrCCNfouEHR4z8ZUtJDYSCgGDZIGTRCk/TGCv+kqE8vsLUeI5UjUa\nA61FcMKM1+Jrs0A+MvDK14ZnWXEEPeDBms9TKdGlXBeS4bxqdJ/A3ilpYSo/M+gf\nvELf/vuSkmldbXLkF3WSXqj1VXSWlYalPuOmxZoj8niPvZ5p8DS4PRyCSyQzfE/e\nsxuhNGkJT7duK92FXd4Kr6ztmm7s90Za7MQcCbRwPR/560Aq8zU2Uq5N6aMnrlzL\nJcTrEPhsjNUrffPsnUhSCpxcnkg7rI9NsK1kiTIgSYdn5EnOvVZK2UprBysKq5Nv\nu7MbdZpC8U6XPvfgOstdDPxKh3rDyXKu70n4tAmJU6/t2bwUaVQ7dgdwt1/2KTPE\nvCEGMYPGZaiaW6FCCw6faMFxWcX0QEzdG1ipJq/lE/UjOJz55U0jbJmqDFlc5dd/\n1xhPofuHRJIknpyhR5CihZYo4SoilgwjYqCyVorJZ5DS0c994oOB5c/zbgLsLvn/\n5s+NnlKEaCHbHuFr3UstxqVusoZwzjb7SkO6DgnLdZRZ83fF5K5y6ER7naD9tPDE\nZ+4iZXNjqJDD0v3Z9o/ApqCLrn4yG3LcYtHW8dGt8dNKxYCEB+TE2AMji4V/xdza\ntOeBGb3aMzZITx+6uUaW\n=zcYE\n-----END PGP SIGNATURE-----\n", + "payload": "tree 31bec29182109f59bcf39a048ad6c98142e7bb17\nparent 0d8c0e0d52947d23696808e5c17b3a4d08c99feb\nparent 2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487\nauthor Corwin Smith 1764798910 -0700\ncommitter GitHub 1764798910 -0700\n\nMerge pull request #16785 from ethereum/fusaka-history-update\n\nfeat: update fusaka upgrade details", + "verified_at": "2025-12-03T21:55:11Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/20d16cd0399e86a948da483a48935a1c4af49f98", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/20d16cd0399e86a948da483a48935a1c4af49f98", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/20d16cd0399e86a948da483a48935a1c4af49f98/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "0d8c0e0d52947d23696808e5c17b3a4d08c99feb", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0d8c0e0d52947d23696808e5c17b3a4d08c99feb", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0d8c0e0d52947d23696808e5c17b3a4d08c99feb" + }, + { + "sha": "2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487" + } + ] + }, + { + "sha": "2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487", + "node_id": "C_kwDOBvEA_toAKDJjZDA0YWY0MmZjYjZiZDFmOWVmNGIyN2UxYWY0Yzk5ZDBlMGI0ODc", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T21:51:11Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T21:51:11Z" + }, + "message": "feat: update fusaka upgrade details", + "tree": { + "sha": "31bec29182109f59bcf39a048ad6c98142e7bb17", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/31bec29182109f59bcf39a048ad6c98142e7bb17" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwsNUACgkQ9N587fAS\nn7buFg/+MDz76dtOlu8UR9GrBmKCxjA4G2446T9RShW6LS+/NiHypTD+v0ai8MyE\nNyIHqglzG7q1tpl8HI/lMBqV5p7moOx9EXAYm3YQIauk7E4imO8+1cEj1Zuxwn9L\nhqMDLYkKwYmNnx4xjsdjWcAJmEN2q9VFSaC2syxDrrTN+w3fzPH/wYhz6AHLVQQ2\nssz6fLF4JQ14y5BNmD+KFgpPzk/9OPxvLkKONOoUxz0JlMd6+fSVGzLVmOl8qJWy\nuHV6d0VDyhWtcIvQO4W0Fc12NOoz6OjrIUVlivPPem0lmTW+VRT/goQk1h+tkWXl\nLCf8u19KHY0mvA8w8atLBgQepzM3bSkU1PCD4HHaBFTJSTRiO3ER0t5ZXy7W+Pvm\nmKnwvNL0WgCdlwX9Xg5XGUBKSbNH8Htw88i4SzCbDuVVe6YPm6nCB/ZKwZRh+5Zj\ngC9Vt5iGowi9TaYheb6Ox3xu/HNVENeWL2nuGpujMrMXvTCgfEvLp2o7DtDifpRA\nre002T5AndNMUMTNREkwm6Y6Y/GEGhTnui91HJ2DPk013bI1jElFxqlWZB2RDOsl\neAZJXKvZARBDlFFvYN8fjJHNbaYCdUrBEBk1QFX4cf7y1vkmp1zJhgpCxh/vxPwD\nukQzVcQ5ZOl/kST1hFQfr9Wy3FBTPY0hxKtRxhgoDc0SkRWkNdo=\n=Anxj\n-----END PGP SIGNATURE-----", + "payload": "tree 31bec29182109f59bcf39a048ad6c98142e7bb17\nparent 99cb811a04c7a7f6a88c30d94cf244292eb24168\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764798671 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764798671 -0300\n\nfeat: update fusaka upgrade details\n", + "verified_at": "2025-12-03T21:51:37Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/2cd04af42fcb6bd1f9ef4b27e1af4c99d0e0b487/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "99cb811a04c7a7f6a88c30d94cf244292eb24168", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/99cb811a04c7a7f6a88c30d94cf244292eb24168", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/99cb811a04c7a7f6a88c30d94cf244292eb24168" + } + ] + }, + { + "sha": "e09fcff896fed6f94ee12d79b251509843ec8125", + "node_id": "C_kwDOBvEA_toAKGUwOWZjZmY4OTZmZWQ2Zjk0ZWUxMmQ3OWIyNTE1MDk4NDNlYzgxMjU", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T19:37:08Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T19:37:08Z" + }, + "message": "Merge pull request #16754 from ethereum/hot-fix-redirects\n\n[hot fix] redirects", + "tree": { + "sha": "877e3aa0f3512e0d897d4e3766a867f01d515ee5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/877e3aa0f3512e0d897d4e3766a867f01d515ee5" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/e09fcff896fed6f94ee12d79b251509843ec8125", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMJFkCRC1aQ7uu5UhlAAAUgsQAGs+K5NL8AAv/dLA13brkLy7\nRJNVy0VIXs4VXyPaKEmTV8njCqP5jaba5enzLlf8guzPrLdngkX0jdQ07ZZIxcSI\nWJYE8burI9pz2DD6/zkUGxtGbY6O48kRhNqjRxEJVXyQJ4y0x5QBnStOJjjoPoqj\nuNgLVOrzuv95eYO6jfjkUeQa7/YNqBO7VkURdkh62rmPOnn0FcYunmhqcQW66s4B\nnaJyz8WUnfWYW8RdtDpYZR/gQeLMKKBWK+MTuwrJfOn4DCU5bg5m3Z/BNXfSTrC9\nfzRyMezSG+Up5J3e7XYHGQLxvEEZw0iAnOye7tNJ76GXON8FpDxn0ptChLmMUC4V\nTdeAcQJJH42+Yk/0xfl2xo4yddMpHlEpLw8F9X/BETQ8+gj2L2m3YLPzO4W6sqeI\nq5oEPAtBhCP1oN/rnhtgxE3IJSEkKKSvszSj5jiN1M3z9ruXkmn5xhvwoJhfqqQ3\nT3xMpr1lHODN+FtY0OYxDfG873GT/xLoevb7JTFtKGqInP1yhOOTPvgO7Znzzkbg\nQF9SXgIBSqRSU/YXGOu57ogPwfph01EjUarrsMcLFcHvVFX4syM49rlmUIzpq/m9\nyPz2ovDDpE2jK1DM3UQIGxqgyxze+Ral2bhOKHZFMfkIkztp2Rh+EakRzlfAvU0t\nWPkeR1wxRTRQ3d2mRoWW\n=eqpg\n-----END PGP SIGNATURE-----\n", + "payload": "tree 877e3aa0f3512e0d897d4e3766a867f01d515ee5\nparent 821609bef8b0fe4fde8763c58b849a681715189b\nparent 97f545de902199c687e5654cad6677af96d87035\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764790628 -0300\ncommitter GitHub 1764790628 -0300\n\nMerge pull request #16754 from ethereum/hot-fix-redirects\n\n[hot fix] redirects", + "verified_at": "2025-12-03T19:37:08Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e09fcff896fed6f94ee12d79b251509843ec8125", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e09fcff896fed6f94ee12d79b251509843ec8125", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e09fcff896fed6f94ee12d79b251509843ec8125/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "821609bef8b0fe4fde8763c58b849a681715189b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/821609bef8b0fe4fde8763c58b849a681715189b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/821609bef8b0fe4fde8763c58b849a681715189b" + }, + { + "sha": "97f545de902199c687e5654cad6677af96d87035", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/97f545de902199c687e5654cad6677af96d87035", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/97f545de902199c687e5654cad6677af96d87035" + } + ] + }, + { + "sha": "0d8c0e0d52947d23696808e5c17b3a4d08c99feb", + "node_id": "C_kwDOBvEA_toAKDBkOGMwZTBkNTI5NDdkMjM2OTY4MDhlNWMxN2IzYTRkMDhjOTlmZWI", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T19:25:34Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T19:25:34Z" + }, + "message": "Merge pull request #16782 from ethereum/dev\n\nRelease candidate v10.19.0", + "tree": { + "sha": "6081af8b1d5e624c847e7ebdc4eba1b316f3392c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6081af8b1d5e624c847e7ebdc4eba1b316f3392c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/0d8c0e0d52947d23696808e5c17b3a4d08c99feb", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMI6uCRC1aQ7uu5UhlAAAEwkQACHmTq6DgcX9mNtrtjq0LLUv\nS+4e31ooO/jeGlNB/DawP/kBbf6tTShlEhuLOJSyTT2EVcdQdVtN7h3El6jNnwfh\nljCR0wloBr9BOxuCb+X7VSIhA4I6Rr2AMZVMIRXrGVCUjaKa0fAXg6zJjI2En2gi\nmob1Em7w+a2y5tFzpWdR63M1PIJXWcnLFp6zzsOjU905ksu2642553osC0JP6b8I\nI3RcutbbLtuBVJTJVNUumnQNM3jePTmjOXtJPmWvnpawGQUr5zrfo9zgaMg4V1Pl\n226kdMqi0eBmV375ZFrnoRRP4u+WaUpuUpDSobkkDThzSZRZ23+2WgBUK0XBGO64\nqyHY6EDnlLW52gD9x4JBbGDpcF4Y/lk6olma21Qtd1y1TEi4Qr33YQdFoVadv6Lk\nRA2QchvkwvDbWhdcj5OPJG5/O44n3K9daeA7NKPgEOpR/P7a6ArTSGNN07XfWXUW\nAE+p+X2y6gYQ18NlfOZ+1cVSFsJXx2OAOKoZWa0df+4we7NCtZrDdJB1xazxYglP\nx4FYezJoNWX3vuVYPS85GBgQcnpTka9DvlbCG4PIcamYVf5PCSC61jXcNVRh/d+H\nu4J4p5LHlqOPXsEHOd4z8a47KKh5Ks+oGj6j9Li3mTq8F3TCutvDJa4SjtP4hySH\nVCyBhKm9RZZhtwpqockm\n=5z4O\n-----END PGP SIGNATURE-----\n", + "payload": "tree 6081af8b1d5e624c847e7ebdc4eba1b316f3392c\nparent 49f1da84f48e297d544cbbe849568916e9513cec\nparent 99cb811a04c7a7f6a88c30d94cf244292eb24168\nauthor Corwin Smith 1764789934 -0700\ncommitter GitHub 1764789934 -0700\n\nMerge pull request #16782 from ethereum/dev\n\nRelease candidate v10.19.0", + "verified_at": "2025-12-03T19:25:35Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0d8c0e0d52947d23696808e5c17b3a4d08c99feb", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0d8c0e0d52947d23696808e5c17b3a4d08c99feb", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0d8c0e0d52947d23696808e5c17b3a4d08c99feb/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "49f1da84f48e297d544cbbe849568916e9513cec", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/49f1da84f48e297d544cbbe849568916e9513cec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/49f1da84f48e297d544cbbe849568916e9513cec" + }, + { + "sha": "99cb811a04c7a7f6a88c30d94cf244292eb24168", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/99cb811a04c7a7f6a88c30d94cf244292eb24168", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/99cb811a04c7a7f6a88c30d94cf244292eb24168" + } + ] + }, + { + "sha": "99cb811a04c7a7f6a88c30d94cf244292eb24168", + "node_id": "C_kwDOBvEA_toAKDk5Y2I4MTFhMDRjN2E3ZjZhODhjMzBkOTRjZjI0NDI5MmViMjQxNjg", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T17:57:08Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T17:57:08Z" + }, + "message": "Merge pull request #16781 from ethereum/v10-19-0\n\nv10.19.0", + "tree": { + "sha": "6081af8b1d5e624c847e7ebdc4eba1b316f3392c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6081af8b1d5e624c847e7ebdc4eba1b316f3392c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/99cb811a04c7a7f6a88c30d94cf244292eb24168", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMHn0CRC1aQ7uu5UhlAAAgt8QAIl5ATQLWV1QV7Bg7uM125Er\nbl7bH25i/46wAbgiKuY3gerXuevuJLn4pD6I9TKD/q9x5c55ijHlkiACIrDI0p+U\n41DSnwq996qjm8dq15t432VJdlFN0ZVBgMcs+iPz0AJIGhyPmOo5XrsoKlo8INI0\nvEfQy676QO5c8x2cpilh+YADFXebpZXzshCRoZSyzOuh/lkkLgr3wD+GgwqEE3jj\nLWIHf5SBRmoCSNPY6dm1F19E3LaZYx7qzyt/fnfMB6QL6ao4CamRJJVmcInZGMKw\nlgRtY4OL6udMNGVonFXpx3bCoiXium6z9wFGsmCRCmlVEzVOooZyHTxV7Nej+Wow\nMO8Df30ASLm8cCFsMlfXPjRv+LnTqpMoR+nlwOKHVeOiqddinoaMJ0CgJPnj68C0\nNPebTS8HJPxEkCJ7RfRuTl0FkkhoH5rWOeMptdguD2hKBCjTV4hFsiiUfKy8jUON\nsj4FG2QRd1wwISHLg6PqX6+/qLnnI22MIf5IRrPXmYLXCi3HBtqj21+VNi7yzsMe\nG6jbv7SumBUs7eB5K5z3Q8fPRCwc2O1ogbhmIqxB9wLc0QXKFFfiPVeTnDunixKR\nIOX+ZMq0XLTaCMsEbSaoxy64fIwgzHsdX1USxvJtDPuRmyF5QoVywcjT5ocTnBa7\nO/qsgxLevWtwFpKIZ7/K\n=fkwk\n-----END PGP SIGNATURE-----\n", + "payload": "tree 6081af8b1d5e624c847e7ebdc4eba1b316f3392c\nparent 618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14\nparent 1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70\nauthor Corwin Smith 1764784628 -0700\ncommitter GitHub 1764784628 -0700\n\nMerge pull request #16781 from ethereum/v10-19-0\n\nv10.19.0", + "verified_at": "2025-12-03T17:57:08Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/99cb811a04c7a7f6a88c30d94cf244292eb24168", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/99cb811a04c7a7f6a88c30d94cf244292eb24168", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/99cb811a04c7a7f6a88c30d94cf244292eb24168/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14" + }, + { + "sha": "1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70" + } + ] + }, + { + "sha": "1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70", + "node_id": "C_kwDOBvEA_toAKDFkYWI5M2ZkN2ExYzdhMmYwZThmZmM4NjM1ZGQzNWRhZDJkNjVlNzA", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T17:56:24Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T17:56:24Z" + }, + "message": "v10.19.0", + "tree": { + "sha": "6081af8b1d5e624c847e7ebdc4eba1b316f3392c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6081af8b1d5e624c847e7ebdc4eba1b316f3392c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/1dab93fd7a1c7a2f0e8ffc8635dd35dad2d65e70/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14" + } + ] + }, + { + "sha": "618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "node_id": "C_kwDOBvEA_toAKDYxOGEyY2E3ZjMyZDJhMzRjYzhiMWMyY2VkZWM1MGUxZDRlODZjMTQ", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T17:52:49Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T17:52:49Z" + }, + "message": "Merge pull request #16780 from ethereum/stagingDevMerge\n\nStaging dev merge", + "tree": { + "sha": "e1e2514fd2cce4f08c4c67924dcf165313fe12d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/e1e2514fd2cce4f08c4c67924dcf165313fe12d8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMHjxCRC1aQ7uu5UhlAAAPGMQAAUOsNhs0VxhL+eqnTMwissv\n29fCTU5QpC/pQ84GoLDBLBGWvi+dKJA1R5JIV/R7PH8mKTlALcgnVDa7o080vO23\niD3lfZJ4WTVQe2IvkfhK40TASL6ox1AQKmYDEJq5nCe5nBWhJLuIAh/FLgoygilO\nJfFqcUvcgAdTFmnfecNb0SWYgaQScHN9lAsWyDCWV5PnLNd25ExMTNvmjrCj+qzP\n/i6wj+mN0tn3jhbtIy7UNYYlLPp8NOZ+Td7QrlU1nrhGPA/SOVgd9GT/q2zId+5l\nJTeTertLTXsw51R9e5RUY8HN3q9tXyQjcUSFd/lH5alIPgnJxiAW7LwHmKoo8LVl\npsADROU286DVMmMo+xjOJBIL4lctruIDdVtFb2pINCqxNo+eUEe6QuOe9oaeDOAi\nkIJEzomfKMfOjXh8U6REhBlTDo/xr12d4wrvwQOoq5hMNAYXn2fBoTbDASnNWWxd\n57qHK55MPDiUUWrqYVwIySRzuxqLPupt4vCp6heAmkZYnzLvw8gv5rWoWRw9GOgP\nVLCChmmo8eNc2tX48t55PtuxXHlhXexuN2EkOwb7ASoC4lBwqZUe8Y70ifCZdpWW\nqFyUFUt2d1+63VUR/Bi4EFL99d6eBnh8VtGoS3cBnjoNJxD0umZmXpwBHgBMbesj\nE6Nq1ojvHdltiTSiJdmT\n=rj15\n-----END PGP SIGNATURE-----\n", + "payload": "tree e1e2514fd2cce4f08c4c67924dcf165313fe12d8\nparent 50ef565cd233bf87c7bf656c632e515ace69e128\nparent 7a6b12b280d24fa57e80db346c9fa0dedc060a9a\nauthor Corwin Smith 1764784369 -0700\ncommitter GitHub 1764784369 -0700\n\nMerge pull request #16780 from ethereum/stagingDevMerge\n\nStaging dev merge", + "verified_at": "2025-12-03T17:52:50Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/618a2ca7f32d2a34cc8b1c2cedec50e1d4e86c14/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "50ef565cd233bf87c7bf656c632e515ace69e128", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/50ef565cd233bf87c7bf656c632e515ace69e128", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/50ef565cd233bf87c7bf656c632e515ace69e128" + }, + { + "sha": "7a6b12b280d24fa57e80db346c9fa0dedc060a9a", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/7a6b12b280d24fa57e80db346c9fa0dedc060a9a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/7a6b12b280d24fa57e80db346c9fa0dedc060a9a" + } + ] + }, + { + "sha": "7a6b12b280d24fa57e80db346c9fa0dedc060a9a", + "node_id": "C_kwDOBvEA_toAKDdhNmIxMmIyODBkMjRmYTU3ZTgwZGIzNDZjOWZhMGRlZGMwNjBhOWE", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T17:51:53Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T17:51:53Z" + }, + "message": "Merge branch 'dev' into stagingDevMerge", + "tree": { + "sha": "e1e2514fd2cce4f08c4c67924dcf165313fe12d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/e1e2514fd2cce4f08c4c67924dcf165313fe12d8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/7a6b12b280d24fa57e80db346c9fa0dedc060a9a", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/7a6b12b280d24fa57e80db346c9fa0dedc060a9a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/7a6b12b280d24fa57e80db346c9fa0dedc060a9a", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/7a6b12b280d24fa57e80db346c9fa0dedc060a9a/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "49f1da84f48e297d544cbbe849568916e9513cec", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/49f1da84f48e297d544cbbe849568916e9513cec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/49f1da84f48e297d544cbbe849568916e9513cec" + }, + { + "sha": "50ef565cd233bf87c7bf656c632e515ace69e128", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/50ef565cd233bf87c7bf656c632e515ace69e128", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/50ef565cd233bf87c7bf656c632e515ace69e128" + } + ] + }, + { + "sha": "97f545de902199c687e5654cad6677af96d87035", + "node_id": "C_kwDOBvEA_toAKDk3ZjU0NWRlOTAyMTk5YzY4N2U1NjU0Y2FkNjY3N2FmOTZkODcwMzU", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:57:31Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:57:31Z" + }, + "message": "refactor: move redirects to redirects.config.js", + "tree": { + "sha": "2609b0138629cead0b3630547383b10e221c8469", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/2609b0138629cead0b3630547383b10e221c8469" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/97f545de902199c687e5654cad6677af96d87035", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwbAAACgkQ9N587fAS\nn7Z6hhAAoeFklbGSFaHR51UE9WHlPjp1o6tz6UW50wWyb9MHZA99JeHTh7BSr6IG\nSPujYI3Jo0W+Il8c7V6oiv0DozlC6TdXCmSydz95HEofhx89Bn4T0xFvB3JeAgdD\nMI41UhSc+iW8RBbs2UZDiDqg7+NqAPg7pmV0GwaIfIGOjgxrZYn2H3JzaObudW7e\nWdt06QtumfqqEH6oxtpULb9G3lQ0LfSVi7FEkSj4+MHl1RITRw+7yzyu/JfCaEMT\nEUDI6hd0QYKMPLOpa6gmhsY0RtaAZ012/GUmCeDAyziUURiGs5W8VjsVFyuIgfQd\ncWVtmwviqB+CxldgshViRti1AunnNqRhZK+kEe2CM+I8rNecPppyy76/OjhdcSyR\nUtxS64D1Zjg7a/KU7OoHubf6jXJn1PpPH9aTp5/xhOle8X9HRDkCnzpq8qUhZuEC\nIhD/7ZHjufzgsi0WzlqR+KYRUd/ko8B4WfPmuZkj55TR5jjpdJnD6K1jHZAR1JuO\nOq2dnBemTOeZBPucVH5zVZE0+SuMgQzLGaw/8VE9TO6zPSMahWMcSVdboGoRQqnE\nvcxbSU86wicC1klTMaWJVbcr+PTM+Quve131Ve/scAlHLFoI12GGszOrNN0nz8FE\naqBay1puKwyGUQM+EpyZKdXb2ht3EZv5THxPa0l0832yA/B3Yjc=\n=sziQ\n-----END PGP SIGNATURE-----", + "payload": "tree 2609b0138629cead0b3630547383b10e221c8469\nparent ebc820841ebade74939328f743a86f5b24aa81c6\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764781051 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764781051 -0300\n\nrefactor: move redirects to redirects.config.js\n", + "verified_at": "2025-12-03T17:00:50Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/97f545de902199c687e5654cad6677af96d87035", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/97f545de902199c687e5654cad6677af96d87035", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/97f545de902199c687e5654cad6677af96d87035/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "ebc820841ebade74939328f743a86f5b24aa81c6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ebc820841ebade74939328f743a86f5b24aa81c6", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ebc820841ebade74939328f743a86f5b24aa81c6" + } + ] + }, + { + "sha": "49f1da84f48e297d544cbbe849568916e9513cec", + "node_id": "C_kwDOBvEA_toAKDQ5ZjFkYTg0ZjQ4ZTI5N2Q1NDRjYmJlODQ5NTY4OTE2ZTk1MTNjZWM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T16:55:22Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:55:22Z" + }, + "message": "Merge pull request #16778 from ethereum/master\n\nMaster -> staging", + "tree": { + "sha": "0ea663c5fe2aecc442f00d892d6c634b15c0bf35", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/0ea663c5fe2aecc442f00d892d6c634b15c0bf35" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/49f1da84f48e297d544cbbe849568916e9513cec", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGt6CRC1aQ7uu5UhlAAAzOQQAEL8BMkQjaOTBulmqcyv3C0Q\n1XVQ2MZDoiD94mh/IkEmQJFQys6AuPHh23hUnOrirYfQ/uZEXMYqjHx/tOgPfYBf\nSbJRQSe7jXm7HTiiJLxaTC64JGUEY9FwRJ//Arin5DHhAFBFXPlpJsZ6ubR+aJ13\nttujr1IQX/BFJR8SAk+qJ4zURNmxZVe4HM2tqjzudnBKv4SZpLVaKxqwDvZYjQAf\n2yDd18hX1tURfbEZnkhFcLaAc5VD8p2Jhtkcf5pNwbs02/K1bSOrbsNFo4X2ehAc\ncpq7kODwyXv6s9M/vsRTMMqshSbxwVHxpSD0qB4e1Ha5nkQQZatosTZhV0cwpZ5s\nz/0Li9soJPTry4RUr2hDVcOLa6usNgon+couhPcpR52KZhnClm7bN9oFPXyVLo2s\n8U2nTM/dz1rjkbETohtABXsRnAexNkd56IQ0DMm8Rw5PbUUvZzlc/7JF5r1sRmbC\nHY8XYiOGIol9S+Jz9YHIGfDUEJjMQUi3+Frd4Z2VUXk/jAgLTzjRXzvLbTH9oeNu\nuXLXJ2D/jnphOoBG1LpBfIC0e+Sofl1+Z2kwQ53X9xIzutjsEDDZ1sG/ZqirNw65\nE5mzRvItmUBIsk8FTDsKSr8sTfQVuY1zBS97JVrUiIvqggZ028ZYszmqIBIdD7af\nKrAdRtxHjjNI2FpRBXP3\n=HGxJ\n-----END PGP SIGNATURE-----\n", + "payload": "tree 0ea663c5fe2aecc442f00d892d6c634b15c0bf35\nparent f6d84dcc86d5a92562d105ac75e244e2001c5727\nparent 821609bef8b0fe4fde8763c58b849a681715189b\nauthor Corwin Smith 1764780922 -0700\ncommitter GitHub 1764780922 -0700\n\nMerge pull request #16778 from ethereum/master\n\nMaster -> staging", + "verified_at": "2025-12-03T16:55:23Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/49f1da84f48e297d544cbbe849568916e9513cec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/49f1da84f48e297d544cbbe849568916e9513cec", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/49f1da84f48e297d544cbbe849568916e9513cec/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "f6d84dcc86d5a92562d105ac75e244e2001c5727", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f6d84dcc86d5a92562d105ac75e244e2001c5727", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f6d84dcc86d5a92562d105ac75e244e2001c5727" + }, + { + "sha": "821609bef8b0fe4fde8763c58b849a681715189b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/821609bef8b0fe4fde8763c58b849a681715189b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/821609bef8b0fe4fde8763c58b849a681715189b" + } + ] + }, + { + "sha": "50ef565cd233bf87c7bf656c632e515ace69e128", + "node_id": "C_kwDOBvEA_toAKDUwZWY1NjVjZDIzM2JmODdjN2JmNjU2YzYzMmU1MTVhY2U2OWUxMjg", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T16:53:57Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:53:57Z" + }, + "message": "Merge pull request #16777 from pruger/patch-2\n\nUpdate: Added ETHConf to Community Events", + "tree": { + "sha": "d891b1ad2783b74aa8a762c4d137c34f5599ba1e", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/d891b1ad2783b74aa8a762c4d137c34f5599ba1e" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/50ef565cd233bf87c7bf656c632e515ace69e128", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGslCRC1aQ7uu5UhlAAA6zcQAHLqx26zY6E2cRUWUiD1N2bO\n68W96a/Lq6QGGkifaInE6K8L0fkdnKy1lf+vx7cBFeEnd/8xY8B+X3X7IX0Urzie\nsv+GotJMAnQE6L9CeAPo/yipaTZBWR9ADNX0ZWdVj7QFuH2JmStkCmjDhkemtsU+\nQp2jNhHpqMYJgCH1KDn36pabDWxU+HCy+xp52QWHXFFWNDq/o4bcYj6McGB+fOtI\nKX++6ocKrgsHv6GhcDW5WpizHKQhgj6f4QOQui1Z8mqyWgodGJAo4YeL32t4NEm/\nSKRqg4/flJqw+X7H+QVbEriTMBeH6CmiY+nTZeyDaZyIs87EdqUcoQgy3a91pRYT\n+oQFKCThd3ja3Qu/bbwMWwxSvs6QdXP23Y+Wvj5AO9vZlI+vC0Y3V/WVyDIs95BV\na0fUNoqneMhVmWF6Ch8KJTE3zk788XmhyJmgrW6Rga9SXmBX3lN13BLRpkT9O+dz\nW8loRTAI1/MFWkra/it0d24R9rZOcASW4SyFQ1h5uxXt58teo28/jIOd0QlkIAam\nEVdmHaugVlZw1GuaP/0Iz+fZ47zuOYPluOSJ1/VbVk7oTSDyFaBqNf79gn29jHCS\n8W3wTDnhgtwy57X9tI/FNLHwF/4/2d7icYK0hhSQ4jbuC0YRTxXr8ujvymGSaIW8\n1oifGWi4IJG+wQpcLn8m\n=fSYC\n-----END PGP SIGNATURE-----\n", + "payload": "tree d891b1ad2783b74aa8a762c4d137c34f5599ba1e\nparent 36c1103bb1e6df3d7e320e625acc392cd42cfcec\nparent be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0\nauthor Corwin Smith 1764780837 -0700\ncommitter GitHub 1764780837 -0700\n\nMerge pull request #16777 from pruger/patch-2\n\nUpdate: Added ETHConf to Community Events", + "verified_at": "2025-12-03T16:53:58Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/50ef565cd233bf87c7bf656c632e515ace69e128", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/50ef565cd233bf87c7bf656c632e515ace69e128", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/50ef565cd233bf87c7bf656c632e515ace69e128/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "36c1103bb1e6df3d7e320e625acc392cd42cfcec", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/36c1103bb1e6df3d7e320e625acc392cd42cfcec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/36c1103bb1e6df3d7e320e625acc392cd42cfcec" + }, + { + "sha": "be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0" + } + ] + }, + { + "sha": "be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0", + "node_id": "C_kwDOBvEA_toAKGJlNmZlZWQ5MGIwZWEwYjJhNGY0MTczM2E1ZjlkZGE4ZDNiYmM1YjA", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T16:53:40Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:53:40Z" + }, + "message": "Update src/data/community-events.json", + "tree": { + "sha": "fa8b7ce8b5bb9e326cbb30a383005678e968b422", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/fa8b7ce8b5bb9e326cbb30a383005678e968b422" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGsUCRC1aQ7uu5UhlAAA8n0QAB6OQs5u6R8llzGVkNvxGehU\nL+l0xUUDNnXs+QMVqJMabkk7lcRsEoaZbSdXR4SCj1SV83I+u3vQjNRFALghjQqI\nvnV3mUybI+6B9KQiEKmAqgaPWrlKRjq5Q9d4P0DyvMI0u/9A/9yocelpLmw/YcDh\nsrolmaabGhVcMaKn4jRT0gF9qeazPl8gasBo0gmQ7D3hDWBN3TFNGpBq0g5bsIvO\nIL+C16cmNbtQj+7K5/DV3d9YurJfIyRpaprOLdxMOkN9UkNBe5ZRJv+h+nrNHEzN\n8ZKFmaXmK/+pFfaT/9JPhM0Kfmg224ZYEFb3KqD+dF6V6ot9fBBzBzUmXfwNv9MM\nE2gLa1uWzILMSCO9jo6qAhov3Qt2q1d/bTVW4gsEODcTCXirmZ4HVgV6jlPJn3R3\nRes1XcQ5ctbY1jlgIHcfwyfhhTt/TEVFO9y4kvFhe+305H9C7C5Sql/1h2bff+Jb\n5uBubGEog/Dxm+WVIHKfq6YblGVZH8Nv5jna1kUo4B09iaIEVYMFTkbg59Ys5Dro\n6O/ezjD0iOvvMEbtiTIFm90pk+7GtjmjTPhW8CxfrstHeqm90ClLRxwKuDB9ET+p\nL/T2ueVQF8urbcvOUVee70qWh1/3Wkj3+Y2W+uys8rAKyDEB3UZljaHTFhTW2aQd\nMK5uMmiOtAg/2shd4KV6\n=eE34\n-----END PGP SIGNATURE-----\n", + "payload": "tree fa8b7ce8b5bb9e326cbb30a383005678e968b422\nparent b4573e19fd357491eb2a05ff752ec8e40624706b\nauthor Corwin Smith 1764780820 -0700\ncommitter GitHub 1764780820 -0700\n\nUpdate src/data/community-events.json", + "verified_at": "2025-12-03T16:53:41Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/be6feed90b0ea0b2a4f41733a5f9dda8d3bbc5b0/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b4573e19fd357491eb2a05ff752ec8e40624706b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b4573e19fd357491eb2a05ff752ec8e40624706b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b4573e19fd357491eb2a05ff752ec8e40624706b" + } + ] + }, + { + "sha": "ebc820841ebade74939328f743a86f5b24aa81c6", + "node_id": "C_kwDOBvEA_toAKGViYzgyMDg0MWViYWRlNzQ5MzkzMjhmNzQzYTg2ZjViMjRhYTgxYzY", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:52:22Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:52:22Z" + }, + "message": "refactor: variable naming", + "tree": { + "sha": "07477bf19c922430762dacf189ba1f0e2842321b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/07477bf19c922430762dacf189ba1f0e2842321b" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/ebc820841ebade74939328f743a86f5b24aa81c6", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwassACgkQ9N587fAS\nn7Ya7xAAjEDr9hoCNZKClnu0oWIWWB08Bn4dQiI6SgVKKfuAU7yub1nyLnaBxK0i\n+eTmJx5sJubtC0+UFhpamf7XP4VReTGapLPYOiYng9JIHCWS/lRnVnoTbNDYS8ud\nZ6fuV5C6Sk+DpKsZP53Qn+iQ6DFeH9sHXacBN3WttXnsz6PFZMK8V5MQzhA8wiu4\nVGdQ0LxjCekf+G7h005ELUWvNQsTBiMnt/DVFUJu49LA6aid8SUUuTk81YBaCHVJ\nVMy5pFJt3bR19f6ldm5Ljzf1sVAPfia+g6UrRuWlPDWpFmsV5QqUDma4Zuy1Wbkj\nrseCa/dENbPUDyWE9xmOu5n1+sIHdE2egm/VyZ9gZejlJh6lMHWupzgKdXBaDoBk\nfwlCN2pRm1jUdv42xjq0sOuZ+9rz9HNUeH3hr2AwIJN3toixwgfVUqtBp5qJjWIf\nDDEDtbd/ioWCdQGJS1hzLhGq8oduHDTApTpOFr82K4xoKL5nwEh8oWoiuozwcaEJ\nXc1jyxo22onc8g6bxln3xlXghcUpK900HfwDPhDkBOM/laCqqXjOmxoatrA1POe2\ny0Bshjx304/ZeE/jOJYnEODslVfnkn2d0nuX+LzLytnkxf2JjPqg7fQKsAC8/hJv\nu9m2Eg7xiIUeES4lf8ywmej1by2Comr9w6OaQzzKfjKKY4nQQ3s=\n=H/wq\n-----END PGP SIGNATURE-----", + "payload": "tree 07477bf19c922430762dacf189ba1f0e2842321b\nparent 9f8dc518e95364a40c05b61d3869941401d211bd\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764780742 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764780742 -0300\n\nrefactor: variable naming\n", + "verified_at": "2025-12-03T17:00:50Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ebc820841ebade74939328f743a86f5b24aa81c6", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ebc820841ebade74939328f743a86f5b24aa81c6", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ebc820841ebade74939328f743a86f5b24aa81c6/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "9f8dc518e95364a40c05b61d3869941401d211bd", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9f8dc518e95364a40c05b61d3869941401d211bd", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9f8dc518e95364a40c05b61d3869941401d211bd" + } + ] + }, + { + "sha": "9f8dc518e95364a40c05b61d3869941401d211bd", + "node_id": "C_kwDOBvEA_toAKDlmOGRjNTE4ZTk1MzY0YTQwYzA1YjYxZDM4Njk5NDE0MDFkMjExYmQ", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:30:41Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:30:41Z" + }, + "message": "patch: redundant string interpolation", + "tree": { + "sha": "143ebae536f958f312451f8c07e5723263cbc2a2", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/143ebae536f958f312451f8c07e5723263cbc2a2" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/9f8dc518e95364a40c05b61d3869941401d211bd", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwZbYACgkQ9N587fAS\nn7YNmhAA2crSqJeYdqRiiIAPe/IUjtjLX3OwQJWeLnU1hRculegPJKItwN0eMYw8\npmfslzRppiZuK03m+xhU18hjDVoXzj3l4PSzrEy7tDYzeIeYxDQoltSItwByPIpQ\ntEI2k3ltAVQOKRlmMW0YfkLTJoHaYwpaL5aATnsN/0fGMSoRbjmwzTQpMNhZJ2PC\nZHAPwqMSk+9NP9ryRXHURKrEQc/4m1BruDEqx3SxtYhJoTzfV+B02MUHqSG9g05f\nyGL2fcnzp1ZxUi6BpmHDDr/d84cd6rvWRpKuUlCPp/iZvolzkFyRQJY9Ice8DA/d\ntiC0bXqf1zGJkiuy0p3Uc0uqeb18N69FRUudtLN/r4izOh6qQZMAaxZGPvgy2TaH\ncH+agALg2u8GY+YZ6Xv9Urfl/i7RsitSrOCtHsmO076FspqrscfUXrTDjQNxheaZ\n9vEsv8/UuznS3nTqYh7JYwDucHBCO6PAaK26nq0IPCZ16JkX4bbCimpt6cYbVnbf\nnKnXaRMRk9SCRtgKkwt2V/SWyyTb7ONaWpH2yIkiWcNxg2AbXUXqTlNzJd++3DxO\nQK4ih+Kjhs5BesgKB3nDxBURMgd2742IdDp/DRUCBv4auVwuigWG26og6SiwKCyQ\nKQvoZBXjLNX57Fe6Cq8HK9rD70FHVDGDhLDHbtgANSUJmp1mo30=\n=GRfE\n-----END PGP SIGNATURE-----", + "payload": "tree 143ebae536f958f312451f8c07e5723263cbc2a2\nparent 923f76e87496b3715f2f6cc65b60004d77c1447f\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764779441 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764779441 -0300\n\npatch: redundant string interpolation\n", + "verified_at": "2025-12-03T17:00:50Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9f8dc518e95364a40c05b61d3869941401d211bd", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9f8dc518e95364a40c05b61d3869941401d211bd", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9f8dc518e95364a40c05b61d3869941401d211bd/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "923f76e87496b3715f2f6cc65b60004d77c1447f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/923f76e87496b3715f2f6cc65b60004d77c1447f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/923f76e87496b3715f2f6cc65b60004d77c1447f" + } + ] + }, + { + "sha": "36c1103bb1e6df3d7e320e625acc392cd42cfcec", + "node_id": "C_kwDOBvEA_toAKDM2YzExMDNiYjFlNmRmM2Q3ZTMyMGU2MjVhY2MzOTJjZDQyY2ZjZWM", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T16:29:56Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:29:56Z" + }, + "message": "Merge pull request #16657 from ethereum/assetsDownload\n\nfix: download buttons for png and svg", + "tree": { + "sha": "00a5f95d38aa4f8b5e00db39f5acdf3b99d4461d", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/00a5f95d38aa4f8b5e00db39f5acdf3b99d4461d" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/36c1103bb1e6df3d7e320e625acc392cd42cfcec", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGWECRC1aQ7uu5UhlAAAiYUQAFJ9K0C9okJNWUztwo4Rqm/B\n6aveED8KSuM2Q7Bb4fNoBOSm4uFI2RnhF7v0FHFFUMBjKCrOVLWFGe0RQKwV7Zw1\nmgKltoYF7DcJhGiVtAek6Mjf1g02etvUlM6lmEVmB1r0WxvLNU04PtdwyZeRRsL3\ngGGgoHUt8kM6ASV3TZibPn/Cy+kvSCxmJT99djf+TmIW2iUyBqmw4rxOCXxsMXe3\nrVQEE5Q52y4fPMoXfPLJhM5HdIqqKyjCp9lovy6HWDEW8OmALVsssDshyPTXWgd0\noBJ9Btc32w13+aubHG5+QdApmRHmzZOCnfU6oPzOHKt6Osm2/cbdTTsfJw/mL+8s\nzzEKMMzR7QBi9OGKu8g/dFP0imYm1U2Ue9PumfyWst0T/CYuCMjuhQEprPIumLNL\n049Jf6cM12RU4cdtp82Ly0HAohmma71AfcJU/CVMSRAh2Z+MW8LdxcFq8KhVVn9N\numUIP9Vd8MWj/h66MN27h945qIlV7RtaF4n3mVBHip7mJlBxGqtCurx23zQMDbOj\nDrDS2hIkKoafRsozDqCKavifXGMixKGx3DjFRGGOrYJ5Rgv6XwCY+pmbrBClwAER\nAI4DnsVbpSf9PZu/Xf/XRrY61pvUKoivEChxUI+7fGR0G9jWwngFb6IlusDpQEIV\nJTDPagbDpxlJjvZq/mF1\n=+27o\n-----END PGP SIGNATURE-----\n", + "payload": "tree 00a5f95d38aa4f8b5e00db39f5acdf3b99d4461d\nparent af47079c67721cbe10c2407c2c7a34cc1dbf59fe\nparent ec6dda2a0f90135d39d1b2365be9dde4a7f022ad\nauthor Pablo Pettinari 1764779396 +0100\ncommitter GitHub 1764779396 +0100\n\nMerge pull request #16657 from ethereum/assetsDownload\n\nfix: download buttons for png and svg", + "verified_at": "2025-12-03T16:29:57Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/36c1103bb1e6df3d7e320e625acc392cd42cfcec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/36c1103bb1e6df3d7e320e625acc392cd42cfcec", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/36c1103bb1e6df3d7e320e625acc392cd42cfcec/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "af47079c67721cbe10c2407c2c7a34cc1dbf59fe", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/af47079c67721cbe10c2407c2c7a34cc1dbf59fe", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/af47079c67721cbe10c2407c2c7a34cc1dbf59fe" + }, + { + "sha": "ec6dda2a0f90135d39d1b2365be9dde4a7f022ad", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ec6dda2a0f90135d39d1b2365be9dde4a7f022ad", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ec6dda2a0f90135d39d1b2365be9dde4a7f022ad" + } + ] + }, + { + "sha": "af47079c67721cbe10c2407c2c7a34cc1dbf59fe", + "node_id": "C_kwDOBvEA_toAKGFmNDcwNzljNjc3MjFjYmUxMGMyNDA3YzJjN2EzNGNjMWRiZjU5ZmU", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T16:28:52Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:28:52Z" + }, + "message": "Merge pull request #16775 from ethereum/fix-matomo-default-locale\n\nfix(matomo): remove /en prefix normalization for English content", + "tree": { + "sha": "995d3a9b46d076f4dacdf2fc0214106a18df0598", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/995d3a9b46d076f4dacdf2fc0214106a18df0598" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/af47079c67721cbe10c2407c2c7a34cc1dbf59fe", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGVECRC1aQ7uu5UhlAAAp4sQAJwwPe8K+q8lEYQOvuf+YJj+\nn6tDtCUIFo4nAWgUa/DAL3G5bUbkjr+4Ik8cjEcrBfqKPXBOk6hLBbvW+hcJ0DlQ\ns5UFXSYJVEJhQcFIwhiMwKrCDdGC5tajBg55ihkNreoVEg9+LvQbmm3Q8R3819ZZ\n5Ykv9wF8gUORno70W0GxhlhJGRqZqOyMW1FoXvtm2NDnRHPAnuKzQb7OmL/ALL0u\nSmXneJPt2sil2P98nFU8ywFgAaMOkKklioIEPGI0gKXPqB/KI23f5nxePrkL236o\nSm0jNxhdOO2SURpWMVqYSYUNalBtTYu8n7GSiWokMRS/SzQGAqILrNlaB3zA2QtD\ngVNBKk1cPwScisTE1nMULyveSWdPrIuXcfLgZQvUdTqzJlwer+CpYpTrSmK6Zxow\nNgeipgPVmba44lT2zOhSzNTgilBY/+SLhxF/Ej6FQYhzvIEs6/9fqKn9g7dXs5E3\ntZEZuPpqlA8GmUVkiDkeacS5F/2wb7j4R5MSNDzN0qMMSJYJyin8rupFm7xqCH+R\nJ3ApWyYHnkwQOx9hz99syqzfWfCNOha5XUd5FdVcBoze1intXhbQ4YpwC8LUdoXQ\nu8obD5Vk+N8sq/DAAMwKBpRnqKDRKY3TePJ0fmLVJBj8nb9utbk7N/5xnX8xgrIh\nHGiFO5uMrfUKkTkU2Vlk\n=rZnM\n-----END PGP SIGNATURE-----\n", + "payload": "tree 995d3a9b46d076f4dacdf2fc0214106a18df0598\nparent f1624c1f8fea6af0375a0f4adf4c7328fa81f26a\nparent 0acd2753c991d0d2c5fc6f1120289f69d3605a85\nauthor Corwin Smith 1764779332 -0700\ncommitter GitHub 1764779332 -0700\n\nMerge pull request #16775 from ethereum/fix-matomo-default-locale\n\nfix(matomo): remove /en prefix normalization for English content", + "verified_at": "2025-12-03T16:28:53Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/af47079c67721cbe10c2407c2c7a34cc1dbf59fe", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/af47079c67721cbe10c2407c2c7a34cc1dbf59fe", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/af47079c67721cbe10c2407c2c7a34cc1dbf59fe/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "f1624c1f8fea6af0375a0f4adf4c7328fa81f26a", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f1624c1f8fea6af0375a0f4adf4c7328fa81f26a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f1624c1f8fea6af0375a0f4adf4c7328fa81f26a" + }, + { + "sha": "0acd2753c991d0d2c5fc6f1120289f69d3605a85", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0acd2753c991d0d2c5fc6f1120289f69d3605a85", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0acd2753c991d0d2c5fc6f1120289f69d3605a85" + } + ] + }, + { + "sha": "f1624c1f8fea6af0375a0f4adf4c7328fa81f26a", + "node_id": "C_kwDOBvEA_toAKGYxNjI0YzFmOGZlYTZhZjAzNzVhMGY0YWRmNGM3MzI4ZmE4MWYyNmE", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T16:28:39Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:28:39Z" + }, + "message": "Merge pull request #16694 from ethereum/find-wallets-optimizations\n\nperf: optimize ProductTable filter rendering to reduce INP on mobile", + "tree": { + "sha": "f183457f68a9c6736a81761a355a7f3257500222", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/f183457f68a9c6736a81761a355a7f3257500222" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/f1624c1f8fea6af0375a0f4adf4c7328fa81f26a", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGU3CRC1aQ7uu5UhlAAAkP0QAHZP2HpAmDbabY4+EYqcGXQO\nWt94o38Cq0F/R6efhVyQJXWnmDMSAUYefW6AYqmpku7YQy4NAFxi9+shVjK0CHPr\n5Nx9yH/d7yuGSx0Eimq8dcTeNCfKV7iMGx+JEvvqV1nuuCm6fMX7JnK1D9RN6y0r\nZ9oXQbdXoKJCVHyIt2XOcKM0uoQ5UJAM0wVWFRMCnwQTuqcyGjC6N1niCKyEUy4G\nptd5UGnhaadAo0GjwCkMJKJ91+sGT3I8Vj+M1TdSzer2dgukz+f4LF4hgD7RLsWv\nKVzTa4UDskDbq+yVoZD9Z8Aq4pqh84rCxAkAhvh+Q/KkDChG0fhC/nt9u9XExn7v\ndyUI64kjlqfUlT8h00JyNq5WFFKOUyike1/bDPeBL9Zrrf5M4MqyrbnweMZVO5dk\nakjJpNrX1SGI2r6UK+2HKicEU5w5gbsuAEUAJ03+MM4wnvJNqCCT2w+rnqx+DRD0\n3QjuglXbBeXUApqVFPo6Wc909ta0E+oZAiXbOUeh74cbxHYMPui1wkZmo3juv4xH\noic7H6o4TMp8UoJZLa020NrMR2CfWXnh8kOJKz4qMv2faYzOzXVSzgQrI5HffVyL\njdA9/SqkuBfHdPD1KnDdhPTezOUwNjrPDIhZ2NsN05cRipVLONrAMh6nHfEUdXs6\nbidz9wPsHvT/mRYsW5i4\n=Q8Nc\n-----END PGP SIGNATURE-----\n", + "payload": "tree f183457f68a9c6736a81761a355a7f3257500222\nparent f4950e753d53a4e455110368bc01381b4a503745\nparent 8a55e90df3eed8e6a6a821d0e6a24a686751bf66\nauthor Corwin Smith 1764779319 -0700\ncommitter GitHub 1764779319 -0700\n\nMerge pull request #16694 from ethereum/find-wallets-optimizations\n\nperf: optimize ProductTable filter rendering to reduce INP on mobile", + "verified_at": "2025-12-03T16:28:40Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f1624c1f8fea6af0375a0f4adf4c7328fa81f26a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f1624c1f8fea6af0375a0f4adf4c7328fa81f26a", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f1624c1f8fea6af0375a0f4adf4c7328fa81f26a/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "f4950e753d53a4e455110368bc01381b4a503745", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4950e753d53a4e455110368bc01381b4a503745", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f4950e753d53a4e455110368bc01381b4a503745" + }, + { + "sha": "8a55e90df3eed8e6a6a821d0e6a24a686751bf66", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8a55e90df3eed8e6a6a821d0e6a24a686751bf66", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8a55e90df3eed8e6a6a821d0e6a24a686751bf66" + } + ] + }, + { + "sha": "8a55e90df3eed8e6a6a821d0e6a24a686751bf66", + "node_id": "C_kwDOBvEA_toAKDhhNTVlOTBkZjNlZWQ4ZTZhNmE4MjFkMGU2YTI0YTY4Njc1MWJmNjY", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T16:28:22Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T16:28:22Z" + }, + "message": "Merge pull request #16696 from ethereum/mobile-menu-persistent-content\n\nUse PersistentPanel in MobileMenu", + "tree": { + "sha": "b78e04d477b01161dd1941f5cd491be993b661bb", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/b78e04d477b01161dd1941f5cd491be993b661bb" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/8a55e90df3eed8e6a6a821d0e6a24a686751bf66", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMGUmCRC1aQ7uu5UhlAAAy/UQABax7jivrvqd/wJHYMth6ut0\nGg3Pkli3c07wYbo8WCYfJ6+WF+dDv8fhDAnFT12TCdn9pV8I99QWWQnGBDheSGBo\nJUZMumup130dUNyPiH8Jgc7N5jTtwAMjghmom3lLFAzEmg6JvGWTyRag7RHq40OR\nkJHHR40VHt5qpNYEfzEgb3vuSKA7pmMxIAhETPttuwRdWPCqwb9o9iTR13K6fxh0\n17gusYfP/yxfL4egFxa0prON/yCfPSuaZYsVfe+lDQi6pBAJkHxycFgzOF6cXuf2\nkXpcWmN0Fu6aat89P4z+ZEmYuxm6U+38DVIGa5t5OETWZq4S9tvyRDoIs8ruaE0Z\n3wC1QQgmZUG3SjqZU8NYwgPdOo7i2h12c9jHs5oyVg39io57nQubGkzAWRctqwqz\nIWa6Uzdnmu+mPgqKV3jb5n3DTvMpSxm6H1Qriu4W0mVbDLF1IoH/RL1PCuR5xOIB\ninFKhqlukDRrZk98oPnSGhSvJN7ZLktcSqeCI0ZtPB2e4TRtfMTk5sc+LeB5rT4m\nB7IxC6NepQ4bxPcl2zNf+2JbTh9NNsIH8KAgmv+5RmYUzeD+MXHqYibAwArps3SW\nY3HHwXNQ/s2lKRk2vp9IwruOw1YKknZiU2zBQo7qNUIVS8EWemYDQwYQr071Faow\nDgo4rQF8QschiBRb9/6D\n=gdab\n-----END PGP SIGNATURE-----\n", + "payload": "tree b78e04d477b01161dd1941f5cd491be993b661bb\nparent 16973e2c372ee90148e48318d9eacf96199a5728\nparent ce0176dacb716fced445bf3a2665c1569e8ddcf6\nauthor Corwin Smith 1764779302 -0700\ncommitter GitHub 1764779302 -0700\n\nMerge pull request #16696 from ethereum/mobile-menu-persistent-content\n\nUse PersistentPanel in MobileMenu", + "verified_at": "2025-12-03T16:28:22Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8a55e90df3eed8e6a6a821d0e6a24a686751bf66", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8a55e90df3eed8e6a6a821d0e6a24a686751bf66", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8a55e90df3eed8e6a6a821d0e6a24a686751bf66/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "16973e2c372ee90148e48318d9eacf96199a5728", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/16973e2c372ee90148e48318d9eacf96199a5728", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/16973e2c372ee90148e48318d9eacf96199a5728" + }, + { + "sha": "ce0176dacb716fced445bf3a2665c1569e8ddcf6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ce0176dacb716fced445bf3a2665c1569e8ddcf6", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ce0176dacb716fced445bf3a2665c1569e8ddcf6" + } + ] + }, + { + "sha": "923f76e87496b3715f2f6cc65b60004d77c1447f", + "node_id": "C_kwDOBvEA_toAKDkyM2Y3NmU4NzQ5NmIzNzE1ZjJmNmNjNjViNjAwMDRkNzdjMTQ0N2Y", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:16:56Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T16:16:56Z" + }, + "message": "patch: redirect destinations", + "tree": { + "sha": "ac27ae8f035ed06d5b3005bd80469ea8b3502ce7", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/ac27ae8f035ed06d5b3005bd80469ea8b3502ce7" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/923f76e87496b3715f2f6cc65b60004d77c1447f", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwYn4ACgkQ9N587fAS\nn7bXuBAAjAiWCMZTgbPJzTKoSw3ziKHY3PvlL8OoSnf9Y54VkIVACAsQvRYVhgRr\nJo+hpVxqKqg5cuXZC9+PI7fBhx3abeEtuxZgNlGbbKW5V7Klv8ToKc/EP8z7ZGQg\n8MNpcvBGX8HAboAXc4lMjP4M513CXSGH9+5jCbdlad4WYMsQdWqGA03bXbOH7mRX\nHkZvpeGlYYNTKeq/3djUL8UncR3F6HGzcFXHHQYUxh7u5hSUbdZgEVn4r1B8VZr/\n8Pc+u431Fnsli29Q8ZawBKILBLI1BM/WpxIvtT/uATnNqUxctZHcvrPuBwhX9MXx\nOXK5kdmVOIWpCxpJOBAjEK8DIJZucKsX8syxOjF6z6kjrQWkBrMewEdg5OW3RHGn\n71ePynh+eIr3yKIFaIxAEe6YnNA30uG5mpJmzmvY2rBQ/2O0rvSmXDUx5hOBc+4w\nxvxtnHQ39fwWSlH0kUVQL1wzmnXx0SFVXFjfsdZ2m/4FKHVZCPU4QFgsiMU4Ju9I\nijCSuozrCnYqDjGfsTkEI3bAkF0hAdcroXmMlTf19TQSCc2Huy2jOf6hn/C/Gv2G\n3vAPcPzTziHWo7ak7o3H2nAsx55Ptlp/pX+biDGa6C6x+YwZIgIp4UuIMAoTx6in\nI33K+XeN81Ak3oMVboEJGFLirUts8YXPuId9+OlRxpDQ9HkMbfA=\n=0Now\n-----END PGP SIGNATURE-----", + "payload": "tree ac27ae8f035ed06d5b3005bd80469ea8b3502ce7\nparent 568c9c852440b284e35808ff698e15572247f8df\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764778616 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764778616 -0300\n\npatch: redirect destinations\n", + "verified_at": "2025-12-03T17:00:50Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/923f76e87496b3715f2f6cc65b60004d77c1447f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/923f76e87496b3715f2f6cc65b60004d77c1447f", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/923f76e87496b3715f2f6cc65b60004d77c1447f/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "568c9c852440b284e35808ff698e15572247f8df", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/568c9c852440b284e35808ff698e15572247f8df", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/568c9c852440b284e35808ff698e15572247f8df" + } + ] + }, + { + "sha": "821609bef8b0fe4fde8763c58b849a681715189b", + "node_id": "C_kwDOBvEA_toAKDgyMTYwOWJlZjhiMGZlNGZkZTg3NjNjNThiODQ5YTY4MTcxNTE4OWI", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T14:03:20Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T14:03:20Z" + }, + "message": "Merge pull request #16774 from ethereum/fix/disable-middleware-alternate-links\n\nhotfix(seo): disable next-intl middleware alternate links", + "tree": { + "sha": "0ea663c5fe2aecc442f00d892d6c634b15c0bf35", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/0ea663c5fe2aecc442f00d892d6c634b15c0bf35" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/821609bef8b0fe4fde8763c58b849a681715189b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMEMoCRC1aQ7uu5UhlAAAcMQQACcT+ht3JxqOspzgAAGVI6WA\ndroFXwIa2kpkG0GHLBI0ozZjx3IjGFcVQ6Kx3HKCjlfnDWSYhR1lxs/h+PcXpbAY\nW6+ASzmCyGnVUvWeshvA3r8VAGewxTDAI8X5q72/R3pRGJC71+JZ4e289X3UOrfD\nkLiVClIDB7DlmDBC07B7xu574p+m2ViRDgGGWqhtSpU+PUP4mpblnlYdKnnAadj1\niJ+7eaV4RtuUrxWIx5zGH5ujjfvNLIspPZiv9T61EX5CdC7GyL9yolsVJSPS165h\nw6nZZLjgCppxTNyuxIjIzSh9mCDHP0TSAfhVsQsvfJc8fIe9q3a8JCx5ceptdFCv\nOA9hswWolk946e0PXNXBzf1OzxVq3gqDNH/4M5cIwgIyGhfRnQVo/7mJb8Q7B5dV\nd5sEpTBWJSFiVNNmOykXykK57/QHEN7P14vE4Dj7DXpjxhCXCLdfIFSvbNb8yRkr\naBNcLh+tQRQuvYXux3thV3OB9+SKJ1umV3ogXOD7rvhmdzpoi3QPKNj6pQ9uLn+T\nl6jUFY5hPExTJp+/14LtOMwCQ60rtVWcfc2Y0Q1IbeHk7NYr+tW9FSMlWV1UHTGZ\nGih/WVdvJjwiXHWJfJcwCu0RUiQBcsfIEYUuUxklcXs6/VEF29PZ5MAjfEeAhCox\nQ/E1W9Ci8NSOFrE1ClMv\n=o2Du\n-----END PGP SIGNATURE-----\n", + "payload": "tree 0ea663c5fe2aecc442f00d892d6c634b15c0bf35\nparent b67214383bd33b7c52bd8c5c75d31a61e10d4f48\nparent 016bb1727c8ad9ed3d58e29c98d8503ff139e690\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764770600 -0300\ncommitter GitHub 1764770600 -0300\n\nMerge pull request #16774 from ethereum/fix/disable-middleware-alternate-links\n\nhotfix(seo): disable next-intl middleware alternate links", + "verified_at": "2025-12-03T14:03:20Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/821609bef8b0fe4fde8763c58b849a681715189b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/821609bef8b0fe4fde8763c58b849a681715189b", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/821609bef8b0fe4fde8763c58b849a681715189b/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b67214383bd33b7c52bd8c5c75d31a61e10d4f48" + }, + { + "sha": "016bb1727c8ad9ed3d58e29c98d8503ff139e690", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/016bb1727c8ad9ed3d58e29c98d8503ff139e690", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/016bb1727c8ad9ed3d58e29c98d8503ff139e690" + } + ] + }, + { + "sha": "568c9c852440b284e35808ff698e15572247f8df", + "node_id": "C_kwDOBvEA_toAKDU2OGM5Yzg1MjQ0MGIyODRlMzU4MDhmZjY5OGUxNTU3MjI0N2Y4ZGY", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T13:48:40Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T13:48:40Z" + }, + "message": "refactor: use next.config redirects\n\nrevert middleware updates", + "tree": { + "sha": "463913e92fb9963c97efcee4871a20c162c56ef9", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/463913e92fb9963c97efcee4871a20c162c56ef9" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/568c9c852440b284e35808ff698e15572247f8df", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwP74ACgkQ9N587fAS\nn7bsJBAAu5va+SoTBW2vMHxxzytz/KayC5BIEIsMQRDEgU064RWdgLXucVESdz6d\n1yLpxEiRSULQ9/bQldfVE3ZmQgOmsYQYURV3qo9o5LDC6GwYfyH/BjpHrcVh6uBK\n5esGzT5CoLuheONlvxd+oz64x58SGa61IfodHz1ebQwnMWaAEX58Xp+fiF7SbDc2\ndp1uqJfrdphlvzjdeLb8Bo6R+cWx5X4z7vv/U74dJEUJsrZUYOKuOK9rZsnfhnar\nIaDzdFpB1TlgqAgULK9mP5Zuktipg96aIgpa1q2A+k+klpTUYQCpWLEb9Yg1Nn5Q\n/9uW850ss4DW9fHJKV/oZRF02P00LYqbsi6JHPavRQ3qQgjI+CJpTbS2sFoM9MGr\nuOJ+nbvcf4ssXcCaLy5pfNRf1LLpsRvTMNgxzJN/9pW7Sic/pFcutZJ1a6oEQxRd\nlHcLZvd/1NjUkqUil2wCcQtzM1Rr1keDWx5CsfyWfUUMaQbiNaP0hE/sHwwLXJU2\nsI8ueT41zm2/c/staCL/qksgeQsOipdCXMvvi8ROiVvcfR/hhF3H5CxvoXg+TGpR\nLq29qsMRkwiDtrwoVmZlBPA8skQ9aZrthFoYRssYcdthwnghAmgnYvdDkcYEjUni\nuwlJejGd4+fOLQAnUGIIguSdmLDEisYL6W+eaFbSRZPQ+Bm1Ua8=\n=oI0z\n-----END PGP SIGNATURE-----", + "payload": "tree 463913e92fb9963c97efcee4871a20c162c56ef9\nparent 6531cd743f9d8fd99d8289d61ad9ca682dcf91a9\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764769720 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764769720 -0300\n\nrefactor: use next.config redirects\n\nrevert middleware updates\n", + "verified_at": "2025-12-03T13:49:11Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/568c9c852440b284e35808ff698e15572247f8df", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/568c9c852440b284e35808ff698e15572247f8df", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/568c9c852440b284e35808ff698e15572247f8df/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "6531cd743f9d8fd99d8289d61ad9ca682dcf91a9", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6531cd743f9d8fd99d8289d61ad9ca682dcf91a9", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/6531cd743f9d8fd99d8289d61ad9ca682dcf91a9" + } + ] + }, + { + "sha": "b4573e19fd357491eb2a05ff752ec8e40624706b", + "node_id": "C_kwDOBvEA_toAKGI0NTczZTE5ZmQzNTc0OTFlYjJhMDVmZjc1MmVjOGU0MDYyNDcwNmI", + "commit": { + "author": { + "name": "pruger", + "email": "84763939+pruger@users.noreply.github.com", + "date": "2025-12-03T13:16:42Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T13:16:42Z" + }, + "message": "Update: Added ETHConf to Community Events", + "tree": { + "sha": "6a265c8a0e25bbe2675495c56571cc7e15b50796", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6a265c8a0e25bbe2675495c56571cc7e15b50796" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/b4573e19fd357491eb2a05ff752ec8e40624706b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpMDg6CRC1aQ7uu5UhlAAAAwgQABjcYfKQxx0nZDnx4fQzqms6\nVuyruDxRTLTHdHLDxlPIRMwa0rNIAioErZo79IZj4hYw2Kv6HWaLCD/Jru6mdKRt\nPXnokNdgypvwGOHh5+hnBxEwrXaGPHlJiK54MbJu2hRweUd02ucDpElZlsuFruQF\nUNpczrgBRkHolzD1rcRf3GYpCUbY0XhA1HSGhzh6KToCMblRiIpcRlPjZRJIi8KO\nsH82bczOwBYxdHD19LsbdLFag/SKGRPtL3r4SHqG8YnFYQx7VxexNhcA6nsKs86y\n9DZXj8UpDuGYiBmd2lCKZZ6Z69qzjpS3JYUF7GT4MEe/taCZYD8JBcoJjoUvqeW6\nz87qxFE4ZmX8zfUz3w1yQZP5bEVKkDX8vkOkzUNPuKC0P8V1Y4P2ue98hW42+tNz\ndo8icYQSHuCBm0/TnVXFdAQ5L4OYYAu+5xH2qYi0d+a1FEFBSjTA1G4ZRY//ektT\njWZJVLnzqE51PqwuYqMQ6xTAxgd57DkqPqkMsD3w63a5YxJWIZrQby8PBGFYzgNx\nKFkEgYJ1MCX5IBl1f4Udbak+1djAIkKtzSusK1A3jxexCEscNwTKN51Afy0A5AFh\nbzwcW1OY3itsokY/tPLBaW812KYRSoRqejKEHN232AYoDHMtsue+WldfrZQAEFfV\nbvgnzajJ3LK4nlYny5pz\n=8ukl\n-----END PGP SIGNATURE-----\n", + "payload": "tree 6a265c8a0e25bbe2675495c56571cc7e15b50796\nparent f4950e753d53a4e455110368bc01381b4a503745\nauthor pruger <84763939+pruger@users.noreply.github.com> 1764767802 +0100\ncommitter GitHub 1764767802 +0100\n\nUpdate: Added ETHConf to Community Events", + "verified_at": "2025-12-03T13:16:43Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b4573e19fd357491eb2a05ff752ec8e40624706b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b4573e19fd357491eb2a05ff752ec8e40624706b", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b4573e19fd357491eb2a05ff752ec8e40624706b/comments", + "author": { + "login": "pruger", + "id": 84763939, + "node_id": "MDQ6VXNlcjg0NzYzOTM5", + "avatar_url": "https://avatars.githubusercontent.com/u/84763939?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pruger", + "html_url": "https://github.com/pruger", + "followers_url": "https://api.github.com/users/pruger/followers", + "following_url": "https://api.github.com/users/pruger/following{/other_user}", + "gists_url": "https://api.github.com/users/pruger/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pruger/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pruger/subscriptions", + "organizations_url": "https://api.github.com/users/pruger/orgs", + "repos_url": "https://api.github.com/users/pruger/repos", + "events_url": "https://api.github.com/users/pruger/events{/privacy}", + "received_events_url": "https://api.github.com/users/pruger/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "f4950e753d53a4e455110368bc01381b4a503745", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4950e753d53a4e455110368bc01381b4a503745", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f4950e753d53a4e455110368bc01381b4a503745" + } + ] + }, + { + "sha": "0acd2753c991d0d2c5fc6f1120289f69d3605a85", + "node_id": "C_kwDOBvEA_toAKDBhY2QyNzUzYzk5MWQwZDJjNWZjNmYxMTIwMjg5ZjY5ZDM2MDVhODU", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T12:25:17Z" + }, + "committer": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T12:25:36Z" + }, + "message": "fix(matomo): remove /en prefix normalization for English content tracking", + "tree": { + "sha": "98ec0f35f4da55b95b8f1f9edefc789b5e3ba4e8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/98ec0f35f4da55b95b8f1f9edefc789b5e3ba4e8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/0acd2753c991d0d2c5fc6f1120289f69d3605a85", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0acd2753c991d0d2c5fc6f1120289f69d3605a85", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0acd2753c991d0d2c5fc6f1120289f69d3605a85", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0acd2753c991d0d2c5fc6f1120289f69d3605a85/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "f4950e753d53a4e455110368bc01381b4a503745", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4950e753d53a4e455110368bc01381b4a503745", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f4950e753d53a4e455110368bc01381b4a503745" + } + ] + }, + { + "sha": "016bb1727c8ad9ed3d58e29c98d8503ff139e690", + "node_id": "C_kwDOBvEA_toAKDAxNmJiMTcyN2M4YWQ5ZWQzZDU4ZTI5Yzk4ZDg1MDNmZjEzOWU2OTA", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T12:15:08Z" + }, + "committer": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-03T12:15:40Z" + }, + "message": "fix(seo): disable next-intl middleware alternate links", + "tree": { + "sha": "0ea663c5fe2aecc442f00d892d6c634b15c0bf35", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/0ea663c5fe2aecc442f00d892d6c634b15c0bf35" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/016bb1727c8ad9ed3d58e29c98d8503ff139e690", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/016bb1727c8ad9ed3d58e29c98d8503ff139e690", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/016bb1727c8ad9ed3d58e29c98d8503ff139e690", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/016bb1727c8ad9ed3d58e29c98d8503ff139e690/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b67214383bd33b7c52bd8c5c75d31a61e10d4f48" + } + ] + }, + { + "sha": "6531cd743f9d8fd99d8289d61ad9ca682dcf91a9", + "node_id": "C_kwDOBvEA_toAKDY1MzFjZDc0M2Y5ZDhmZDk5ZDgyODlkNjFhZDljYTY4MmRjZjkxYTk", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T11:22:01Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T11:22:01Z" + }, + "message": "refactor: pass optional type", + "tree": { + "sha": "633bb6e62936a6041e0eb4fde36a6cd862c3b3c5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/633bb6e62936a6041e0eb4fde36a6cd862c3b3c5" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/6531cd743f9d8fd99d8289d61ad9ca682dcf91a9", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwHWAACgkQ9N587fAS\nn7YGHBAAsKisuCAOxeXiKUyBS4en1mIP4dNeuhv58fcD/tGtcIu5yTNtYvgZAlk/\nTwJOA66OHoauhTeigXRChZ24thisnMN7W2MHV80d1BZ5HaK10ykDsycJy+bP8KjU\nDg6ao1xIrSaic1mOAWZWhUn3RJqCVdWULj/PHnNqaagDqYbbSPBJqalaNgJGNoi3\ndl7DXaeSscKDByslIHSTPf86ckIgXaUTvXzcgqR80i4KGhtPjs4wUmLLQheaEUrK\n7AsV27s0ogyD/PzIXmWq3o1yVAesmX8mFgeBDzK8jcclnZr+v5kiZCR6Rb+VS64B\nTrNd+Ao4NPAt3oZTmbvsCP26zSxO43nVr+nEdILYrF71nUja5q3Xc4c9amFEgT5u\nsodLUzKAG0zy0zAzafngEqPxcuU+8rry9Zo7e3m24YhKJCwUlX6+BmrCMHspnJAY\neng/567oZcDPHLHei3iRdJCLWEp+A7mlQSNX4d9JCrIHi2GG0xJIBxfNLwNNG/Zm\nUYlqkzmecmqkKhoz1vTKDv10nlL2LdFK3P8RmvSxnkOkDJezK6+EEBRrKUuJi1gO\n8sbkZgR3iNitGSjBPF9jnzZGWCRdiTtAM/cd5/FIlYUzwouO2ndqTvD1s8RxnfMB\nAPqnw8idUE5tReb5iT8sC6+BdDnwUo/SjIbnGcYCRIDxbyftbSw=\n=7bvd\n-----END PGP SIGNATURE-----", + "payload": "tree 633bb6e62936a6041e0eb4fde36a6cd862c3b3c5\nparent b061e60660aab3be55b35d779c22d0774d2b9fe7\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764760921 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764760921 -0300\n\nrefactor: pass optional type\n", + "verified_at": "2025-12-03T11:22:37Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6531cd743f9d8fd99d8289d61ad9ca682dcf91a9", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/6531cd743f9d8fd99d8289d61ad9ca682dcf91a9", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6531cd743f9d8fd99d8289d61ad9ca682dcf91a9/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "b061e60660aab3be55b35d779c22d0774d2b9fe7", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b061e60660aab3be55b35d779c22d0774d2b9fe7", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b061e60660aab3be55b35d779c22d0774d2b9fe7" + } + ] + }, + { + "sha": "b061e60660aab3be55b35d779c22d0774d2b9fe7", + "node_id": "C_kwDOBvEA_toAKGIwNjFlNjA2NjBhYWIzYmU1NWIzNWQ3NzljMjJkMDc3NGQyYjlmZTc", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T11:21:28Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-03T11:21:28Z" + }, + "message": "patch: /content/ redirect trailing slash", + "tree": { + "sha": "bf3fae2a7d195f666166f72d0e52407de02b9c88", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/bf3fae2a7d195f666166f72d0e52407de02b9c88" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/b061e60660aab3be55b35d779c22d0774d2b9fe7", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkwHT0ACgkQ9N587fAS\nn7ZfDg//bJKgwmndv2EQ2Yco31Lav38zWbP74xZ4IcJeH4hc1Fn3Yn/mHBnf/MtO\nykOiacQqBnv7vKziLzkCdUjLZ2wZr9NW0t1McpXg8BPmjYfREaB2/UjK3VOB8uWy\nXD60MUdwTrBkUiJ5wy/xEaakUEiZ8aoXVAPs/F4r5TE2JdinidzkpcBAeFSnkPo9\nA+L/bs1mOcMbMi81W626RF4ZPbcnCTP8MqvsmJ4FJBeDu8CaBzx40FumqbUQp/cE\nVZDMsnuTCdds4JINTVsOxbMCl+yPw5z9RNqv6CpBPLk/u2ZCNdjTRl5gB6AQulaj\nvGP5JV6zbDBxCHS1SIj4HOExy7UcqVvsw4MdCDKCT8USIhSjr3dCnakQu67ee+Mc\nl7lFYPv5ALcb37bnklBzlDwvSge7vCkfe60rqvdthRNrtzcAFgUY36gjUUvJoOOi\nCgtHtd3XVk43v+DRkQv4Bl5dPrKX+6TU+bTnC1/NvLVo7e5wXKwLlDwEgzESzR+M\na9rolo5nXMa7GJ8HrX+OFfALcpGSQfk1NDWwY4drj2l0ad6lRL9aSUfiq2mtZr+9\nAR8sjmTCcvPVPWg7hfIzk4clKPIcYaLHgmRM64dRsB0/saWTZSHEUggB23sNf/wu\n1wKYxDaFTP4B6kFfZN/5TEiR+qDsYD5Ed3c1QdmTAOAq+WLs004=\n=TeUX\n-----END PGP SIGNATURE-----", + "payload": "tree bf3fae2a7d195f666166f72d0e52407de02b9c88\nparent 8e7ddd2473a73a3d250c8d861256b54aa8780f07\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764760888 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764760888 -0300\n\npatch: /content/ redirect trailing slash\n", + "verified_at": "2025-12-03T11:22:37Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b061e60660aab3be55b35d779c22d0774d2b9fe7", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b061e60660aab3be55b35d779c22d0774d2b9fe7", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b061e60660aab3be55b35d779c22d0774d2b9fe7/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "8e7ddd2473a73a3d250c8d861256b54aa8780f07", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8e7ddd2473a73a3d250c8d861256b54aa8780f07", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8e7ddd2473a73a3d250c8d861256b54aa8780f07" + } + ] + }, + { + "sha": "ec6dda2a0f90135d39d1b2365be9dde4a7f022ad", + "node_id": "C_kwDOBvEA_toAKGVjNmRkYTJhMGY5MDEzNWQzOWQxYjIzNjViZTlkZGU0YTdmMDIyYWQ", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T03:16:56Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T03:16:56Z" + }, + "message": "refactor: replace download handling with ButtonLink for direct file downloads", + "tree": { + "sha": "a216fabe18238e1f5f952955c873abf2bd25142d", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/a216fabe18238e1f5f952955c873abf2bd25142d" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/ec6dda2a0f90135d39d1b2365be9dde4a7f022ad", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ec6dda2a0f90135d39d1b2365be9dde4a7f022ad", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ec6dda2a0f90135d39d1b2365be9dde4a7f022ad", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ec6dda2a0f90135d39d1b2365be9dde4a7f022ad/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "54a207d5eb80a669bf353abad177616df2ab80a2", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/54a207d5eb80a669bf353abad177616df2ab80a2", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/54a207d5eb80a669bf353abad177616df2ab80a2" + } + ] + }, + { + "sha": "f4950e753d53a4e455110368bc01381b4a503745", + "node_id": "C_kwDOBvEA_toAKGY0OTUwZTc1M2Q1M2E0ZTQ1NTExMDM2OGJjMDEzODFiNGE1MDM3NDU", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T01:59:36Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T01:59:36Z" + }, + "message": "Merge pull request #16772 from architr4/patch-2\n\nUpdate index.md", + "tree": { + "sha": "e1644d8c6b45e8e8e8618fc970a325787b79fcab", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/e1644d8c6b45e8e8e8618fc970a325787b79fcab" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/f4950e753d53a4e455110368bc01381b4a503745", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL5mICRC1aQ7uu5UhlAAAHxwQAIbAXVJ4xmWN3KmEI8L9vPQn\nu6QcIE/GLK+4NedGDUNcN7/lHvK0sIXkW7TLGKcx0dQPVcc2kUxai2FCNE4wQf8Q\nLNHOV4VajjOplIUU4IrJB/kEp9nIRqT82iPRKMtO/MRRnG70tfzsKpkJ2N9ZfSDV\nM1+D3gqK4eg58vhy7G5mrnr9ja6fE3y6p55Aud0ZjFBOZY3O7G63oYG/RnD5Harq\nPhCWScCXNqMclmIPSxktXweoC5nB7v52Rt34HXqneky9Q5yGt6BXryLD2WerErMq\no7rlsKUI8S9DC9f3tuDOQogsEyMMoDKifznjBeV8pfWBYophNiIP79uahMpN4f/I\nd2KNIBQxXPbdBgjxD2oRaO+3FKtSoZhhaCBOU2KN2DL4n1QZd6dPV6v5QX2VjpFD\nQRmEwifJMcKIoe/7inps7MM5sNeReo6EggutOF81q94XFFcYDfq+Ej1FGYZWAfS1\nEaww6/ZQtUZzEX1SNf6+ogXLXvJWNuvkkjdHutzs2tq3n0hSbhVxcrO2BKywbxKg\nvf9wT3OlVJwSJfgBcr3Z/ouTzmafsIwHsRIMwWAIS/6NhobKEGndUYztA400856B\n4DeP7NTC+oBkuldDCwZ7EQpC95gRVFCkxxBuJJudXp/dEUbNm6y8gipGR60tzi+H\naCOqLjbiz0Ymo8cQ1rKF\n=4V98\n-----END PGP SIGNATURE-----\n", + "payload": "tree e1644d8c6b45e8e8e8618fc970a325787b79fcab\nparent a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853\nparent e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e\nauthor Corwin Smith 1764727176 -0700\ncommitter GitHub 1764727176 -0700\n\nMerge pull request #16772 from architr4/patch-2\n\nUpdate index.md", + "verified_at": "2025-12-03T01:59:37Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4950e753d53a4e455110368bc01381b4a503745", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f4950e753d53a4e455110368bc01381b4a503745", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4950e753d53a4e455110368bc01381b4a503745/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853" + }, + { + "sha": "e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e" + } + ] + }, + { + "sha": "a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853", + "node_id": "C_kwDOBvEA_toAKGEzMzhhMGNlOTFlNmRlYzdmZTdhYzI1YmQ4OGYyMWMxNWZjZGY4NTM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-03T01:59:27Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T01:59:27Z" + }, + "message": "Merge pull request #16773 from ethereum/all-contributors/add-architr4\n\ndocs: add architr4 as a contributor for content", + "tree": { + "sha": "d4d5abd65c5164dccda152ea9a50802bc9f0c4d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/d4d5abd65c5164dccda152ea9a50802bc9f0c4d8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL5l/CRC1aQ7uu5UhlAAAlzIQAHnkqFxAu0CiTYfIUfR2x5bs\nK/ltZmG2E7F31S+fRK1t/COGTiOhRmws6FVcW8BiOkrcP5rF3FYEr4Trg26rGcHg\n3S83VRJIOAaL9xqMHNzxPQqu0IsuEWegqyZp2aiHr4diSvVW0ObJ+XnYVvjMr/An\nixjx6ZdWS1/JwmKEAHJStSb45mUIqBJdEDbeHD3BXx+uWB+jXAafzixqe3VSArHK\nnVGg8A4glQY0U/JUordooYa4c7G2DImXlbTntpUHnzOhrXgeIWP+xBwWaEtPQM9D\nqdJ2NltCrZpYmXwHt920rY1kDEVwPUVeJr4aUQ50uUd1D8RvrSmxZvCA2YcgSAOH\n34bPRuvMlA6YKFeGjvpiS8d9Fm01f791vuBVUhl/X70QjT6ZUJk28rMUsQvXRCKZ\nofQPiVJVOSF4evxjXGIb5M+eQgg+Fnc/hxHlDNT1B55kplCmWpWzr9iLr6lXCMme\nlR3c0OhN+sBW4B9psIoaQNv7JhyD+ASQ8CeGa17t1xv/FW2wsObD4eCSgx1maUdQ\n6KQiGwfFJPFknwhqTOeHiIsS82Qd6XHpE2qkJmjLSxOKXK03xxgg2iIVtYbskBoO\nasA/HQMmlmGePBg6rKDH6/LYGvTQp16hQ5TIah5gvr56rmKHXHQIKSh6u/y+RGuj\nDNeCgCEJfWefS+i8MKMm\n=luku\n-----END PGP SIGNATURE-----\n", + "payload": "tree d4d5abd65c5164dccda152ea9a50802bc9f0c4d8\nparent 748888ad8b7e9096ddd64efb41fbf5ab6dc89e17\nparent 5dcc410fec7d6fb9ed468bee007e6d41976d1911\nauthor Corwin Smith 1764727167 -0700\ncommitter GitHub 1764727167 -0700\n\nMerge pull request #16773 from ethereum/all-contributors/add-architr4\n\ndocs: add architr4 as a contributor for content", + "verified_at": "2025-12-03T01:59:28Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a338a0ce91e6dec7fe7ac25bd88f21c15fcdf853/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17" + }, + { + "sha": "5dcc410fec7d6fb9ed468bee007e6d41976d1911", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5dcc410fec7d6fb9ed468bee007e6d41976d1911", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5dcc410fec7d6fb9ed468bee007e6d41976d1911" + } + ] + }, + { + "sha": "5dcc410fec7d6fb9ed468bee007e6d41976d1911", + "node_id": "C_kwDOBvEA_toAKDVkY2M0MTBmZWM3ZDZmYjllZDQ2OGJlZTAwN2U2ZDQxOTc2ZDE5MTE", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-03T01:59:08Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T01:59:08Z" + }, + "message": "docs: update .all-contributorsrc [skip ci]", + "tree": { + "sha": "d4d5abd65c5164dccda152ea9a50802bc9f0c4d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/d4d5abd65c5164dccda152ea9a50802bc9f0c4d8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/5dcc410fec7d6fb9ed468bee007e6d41976d1911", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL5lsCRC1aQ7uu5UhlAAAj0MQALCkATdzRQPe5tX0HDy+0LSy\n9FDu9Yr6tSoSUTDgc4QHFhJkcDs5nr0W4Au4fxKxDIlFEYYV2GnUrZ5GSvjjONyy\n0dcZyAfj2jtgJVHYihwRCmMHmBY5FNix+AdT9sPp9TIk4YPm4pNcdh1B7tY/wWeB\nc+Ko/kYa4NzmqF9tg8Lkbl7Kp3lq06X3I7XlWKU4X8+XEMVEDPkmbHTlm70Tuo30\na6Nx7Yc/Ra6qqnTzkCO9mD2CoaQjow9dG+Pr3Hn1i6pcLSSRx+blZTtBrni8e23D\nrVTW+4U1m0m+tDYgDDbD9IFcKD96Daq7e6l0ANiPa4zc1/4a5Rba8CNnHfO+HKrV\ndgcrjALC5HaPWyp8NaXfj8EEVh0bBiqWUFKCAxrVGS3zqiwXilndhPjVWW+yOKei\nYujCgbi/HZ/jDxlozUFrscfmyzQFrxCBZQhqkGV12QhZ/SSgyTTyPJm0L6j+DGk7\nQTE2w0XKSxI8iHeclDjAHLTB5mYN5rSP7HCCMo3pLVg2WB7TskPTP1JOhNN/XoWx\nAMJl/1uHr4umdWf/5TcYm3Oku96Lwdpok8Y1UMRK1qyWcwmLqZM0PC4ckghzr48x\nvzw270TUkEobthCfkyYe8ZwhUd0apPQaDP7RLjOmShFiz/zEFyMumcq7+NXFA4xk\nqDIxWfFq2nJmkPWD1ZGO\n=rZEo\n-----END PGP SIGNATURE-----\n", + "payload": "tree d4d5abd65c5164dccda152ea9a50802bc9f0c4d8\nparent d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764727148 +0000\ncommitter GitHub 1764727148 +0000\n\ndocs: update .all-contributorsrc [skip ci]", + "verified_at": "2025-12-03T01:59:09Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5dcc410fec7d6fb9ed468bee007e6d41976d1911", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5dcc410fec7d6fb9ed468bee007e6d41976d1911", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5dcc410fec7d6fb9ed468bee007e6d41976d1911/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14" + } + ] + }, + { + "sha": "d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14", + "node_id": "C_kwDOBvEA_toAKGQyMGNjZDlkMWI2MzM3ZmM1OTMxYTFjZmUyMWFlZjFkZTRlMTFhMTQ", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-03T01:59:07Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-03T01:59:07Z" + }, + "message": "docs: update README.md [skip ci]", + "tree": { + "sha": "8a06f79e7308aca644690e73e951d888472ba1c0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/8a06f79e7308aca644690e73e951d888472ba1c0" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL5lrCRC1aQ7uu5UhlAAAjcEQAAIleWGqOqF08NsNVRN2o43N\nIt/PHalLw8wQyCkqyyN8+YQFWCfFte2xNl9vf5Iy57wp2pWpc03b2nkO/bE7Yw5v\nT7sfPkGEWcK8axqUFOts+AO0X+GIMOt57yvuzpVDy8gkwKIw+XdsgbaLUvilMHam\nTlAGx3URvApGou7wQsMWsk65PIhNvvkGCP2grggXoH0/n7+Gd/xkBRtp5953r8Df\nWfyz8/dJDG7J+YdKORHVBeVR8CFPEONHALrIriQTBJ+bRAcBaf443wsU21DfJQoO\nl14+DEBUy76L+P2Q1T4yGpdC8MFZTclTNHx7bwOSte1UQ3bv7g06I/RnXlUOaAiU\nVwtx1Un/9/EzbzJ9wp7wlEW9HKtVwaX0U0KJREUhdqHsMQx4qcXnslo9F5mzRW8W\n8KpXvb6Qus1Gs/sAn4fW3lgSBOTbU4Z682P4wVxna7ox7YmCzAtPf29Yun83uu8g\n0rjnlWoq8QVOWq4T650VPLuJJF23VC+gIx8Sf1pW+T1MWzndNLzD11d0/bxFNP7m\nPeN8va5mhJa5rbLujrAuwncPiGxBsN1hx9jvvmbHjEg/LOz076g/ugwqGyNxj3Sm\n0ieldXWEXrBLPYkSmlg40ZD+PN4alaN3CIrCZ57de2TIU3ejERqgahb/OXm2KrYa\npY7fv3Z1tBtFXUyOjCFK\n=RMWF\n-----END PGP SIGNATURE-----\n", + "payload": "tree 8a06f79e7308aca644690e73e951d888472ba1c0\nparent 748888ad8b7e9096ddd64efb41fbf5ab6dc89e17\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764727147 +0000\ncommitter GitHub 1764727147 +0000\n\ndocs: update README.md [skip ci]", + "verified_at": "2025-12-03T01:59:08Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/d20ccd9d1b6337fc5931a1cfe21aef1de4e11a14/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17" + } + ] + }, + { + "sha": "e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e", + "node_id": "C_kwDOBvEA_toAKGUzOGUwZDBjOGE5YmRjZDQ3OTUyM2VmM2ViNGU3ZDRhMzU5MjE3MGU", + "commit": { + "author": { + "name": "Archit", + "email": "142317686+architr4@users.noreply.github.com", + "date": "2025-12-02T23:02:53Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T23:02:53Z" + }, + "message": "Update index.md", + "tree": { + "sha": "168ddf5c2acacf6fb9be09ac6a1afdf61d5f6912", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/168ddf5c2acacf6fb9be09ac6a1afdf61d5f6912" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL3AdCRC1aQ7uu5UhlAAADiEQAFE0vxVzCXoZVMPdyNCnbUdv\nzZ15PYzj3IHzROLqcBKq2wnrCTYWCLyEZ5e5ekZFUcD4ZWZ6RIabVOjpngdfpa/j\nnyOZaxxIJTlDLwgtBfnCZh69Kwn/q2Zl7qRUgTqDv/BV7Y8Hu6T2Hqs+CXUa9bzt\nopUbsCIev72ySGP1e5gRsXJy4ybkU1OrlB0+Nx9Md91GfMx1thR4rwwGY/hZIHWZ\nzgT1iQ2rvMeLpxXiWpBXWlH8Hu8R08bNrRj3SR6xwz3219mxv1/2v0pwQSmlfewU\nPQ2difsM3ThLBpgrVEoL1zKYD7SqOej6EK5zwE0/tWjE+1F8NoMoOOxEmDKED9xP\nLVyYNEpTl6FHzkudOGzTRIQic13BYhwt5drqlQs0FJ+o0IEPEGz8i9sjxEZgKopQ\n/kYXSO+Pg7uigbG1FpjMiKlZFPR2CIog5OCJJv9+Z4PN0xfD3/31owi5Ubd3zZnR\ny76wbHZv10q5gdg9ReP1aIeASmHbROTaGkXj1dbNKREYoO7tPQYmHXYfh/KtxSZv\nc2Vn3ugkrpY19DIkSvoRpilcBnEmiAPkzzddLfhqgmQ2YsfJqBOG537mqehUSzwV\nQx4/zaeHQgh5XFL1no3y02zeQpl9YvzKbrRyGOyH0093piuKKg7JGf8pGa+fhUiU\nI/XHz5YLke0Ji5xDJhwA\n=RzSi\n-----END PGP SIGNATURE-----\n", + "payload": "tree 168ddf5c2acacf6fb9be09ac6a1afdf61d5f6912\nparent 748888ad8b7e9096ddd64efb41fbf5ab6dc89e17\nauthor Archit <142317686+architr4@users.noreply.github.com> 1764716573 -0500\ncommitter GitHub 1764716573 -0500\n\nUpdate index.md", + "verified_at": "2025-12-02T23:02:54Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e38e0d0c8a9bdcd479523ef3eb4e7d4a3592170e/comments", + "author": { + "login": "architr4", + "id": 142317686, + "node_id": "U_kgDOCHuYdg", + "avatar_url": "https://avatars.githubusercontent.com/u/142317686?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/architr4", + "html_url": "https://github.com/architr4", + "followers_url": "https://api.github.com/users/architr4/followers", + "following_url": "https://api.github.com/users/architr4/following{/other_user}", + "gists_url": "https://api.github.com/users/architr4/gists{/gist_id}", + "starred_url": "https://api.github.com/users/architr4/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/architr4/subscriptions", + "organizations_url": "https://api.github.com/users/architr4/orgs", + "repos_url": "https://api.github.com/users/architr4/repos", + "events_url": "https://api.github.com/users/architr4/events{/privacy}", + "received_events_url": "https://api.github.com/users/architr4/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17" + } + ] + }, + { + "sha": "748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "node_id": "C_kwDOBvEA_toAKDc0ODg4OGFkOGI3ZTkwOTZkZGQ2NGVmYjQxZmJmNWFiNmRjODllMTc", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T23:01:13Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T23:01:13Z" + }, + "message": "Merge pull request #16389 from ethereum/what-is-ether\n\n/what-is-ether page", + "tree": { + "sha": "5d4841c52a8e80a8fec1c04c4f24230b5a6d28d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/5d4841c52a8e80a8fec1c04c4f24230b5a6d28d8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2+5CRC1aQ7uu5UhlAAAEl8QAFwugP+sVZ7nNFWOFCuo95wV\nvhpkqTkDbLCBbh13ZeSAgSNWjpvWcBsFBHXiRrQcOYgn/zp82VB+dPm2kOrWaGE7\nb2ggTopsDuoYaNnEv0rOG4vseyoxmntabdCwmPylvxTlLQ96fcHSfCFQJziU4+kg\nU25jDX/n27sPNFElBI1scw7QnLJGuSqZ81Jx9Egjspmjb7SovAary4ncoI5K6ZPm\nmXukf8wYoPkQIb3TzTGIBIftIwcqVcU2vmDXjjhZQppVswzFPAHzG8Lmk1XYqc6j\nOWRTeUZla1rEAes/F7CkUK6Y8WxoQkPdlZ2s6Io9f8oOUUxe7qsv5V3qTzLFn0A7\nH2lKyuT66SpiYJSbxhx0IxK4v6v+D4u9pR/f3vjYgPYpKvya9zXQBgar08unADUE\n6zhQdD6sNED47iFbokUIlwDg7+uy/DwKw/vMSASvuNQ8PPSEdezL9FkwNEpZaQqF\nl1CAa3jqIgyJD9u6ABK2W7q9C1TS/m3Junz9Q3Y6daEbbd4oYPdE5fVcnxrtUoNG\n9n61ylE7/GBzCY+SdF3dB4VoKoYB80/x9HlzxbbFxDjWYvHKCx2Lr1HRhSn3RFes\n1+UIFURVuGUvQDplQlT3NRAb3sYFDLioHa0SiRj/6PVDHXhj2RvoRxUzwFDq8HMi\nIGX2tFH/S8x9ll9xslBZ\n=XlM7\n-----END PGP SIGNATURE-----\n", + "payload": "tree 5d4841c52a8e80a8fec1c04c4f24230b5a6d28d8\nparent 57be09cd1b92ee1e7479ddb54fb109610eec1911\nparent 58ad3943e33b90c31ced9db2a9c1665b0f4a5e06\nauthor Corwin Smith 1764716473 -0700\ncommitter GitHub 1764716473 -0700\n\nMerge pull request #16389 from ethereum/what-is-ether\n\n/what-is-ether page", + "verified_at": "2025-12-02T23:01:14Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/748888ad8b7e9096ddd64efb41fbf5ab6dc89e17/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "57be09cd1b92ee1e7479ddb54fb109610eec1911", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/57be09cd1b92ee1e7479ddb54fb109610eec1911", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/57be09cd1b92ee1e7479ddb54fb109610eec1911" + }, + { + "sha": "58ad3943e33b90c31ced9db2a9c1665b0f4a5e06", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/58ad3943e33b90c31ced9db2a9c1665b0f4a5e06", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/58ad3943e33b90c31ced9db2a9c1665b0f4a5e06" + } + ] + }, + { + "sha": "57be09cd1b92ee1e7479ddb54fb109610eec1911", + "node_id": "C_kwDOBvEA_toAKDU3YmUwOWNkMWI5MmVlMWU3NDc5ZGRiNTRmYjEwOTYxMGVlYzE5MTE", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T22:59:43Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:59:43Z" + }, + "message": "Merge pull request #16769 from KosiChinaza/fix/smart-contracts-grammer-style\n\ndocs: fix grammar and style issues in smart contract anatomy page", + "tree": { + "sha": "e2b3cd559e02db9d56afc7de7055e17b9ec28ded", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/e2b3cd559e02db9d56afc7de7055e17b9ec28ded" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/57be09cd1b92ee1e7479ddb54fb109610eec1911", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL29fCRC1aQ7uu5UhlAAAM/kQAAD7Qc6d1HBFhNZ7dH5kXXDp\nz3Wt/omMnyGB3cxw8jpNzRZphZ3JNBInKewUgM2LE98epM1nQIv+2I3O7eW6brnV\nehjdU929D7bV+NDzc8bwxip8Q50YCWdfi+GlcbGMrP3uHUuA/AzdgKtDd3CCYLt/\n/ITKiUkGooz4QD3zua48hZp8917v7+3/2tvwXrnBa+iF3O175ujAmYG0cCqudElu\ndU3qKuFVpY0i5CYTvLJlAY9ahFSM2Cj7KeF+2ZFo72TxYQeVhCyONdENSPCQwKjf\nlYiTo8XlXrTBI38ObYD3lSnr5CFeghbRuSUjFCopm3TTwkxBoiz9/R8Xw/v5BaQn\n213eTMt+Pd2PMo3WZYeJvbd9Z/dOaWivY+EICuPvI/swE/nTQM67ANc0Z8VdjIHh\nZUdJ+zh4tzxg4xmHBOsHosgT2KPt8sHPAomAruKBC1ThbCIkYdGo3tx0IDraTVkB\nd69bD1xWyelsLbhuRg/D9SzZ11II1E6uPnhnUeCln7qJF8MLs3NlvrtJdm61iqRH\nbRRR+dAxKZaFIpr6+ooHZMrHajlj7X6lyyUzYDGOA3JTfxsbIoGzjelwp+0kqx/9\n+a6qNWJFOdNVke7HciE3sYOkNNTDzDziagGLVt/L+et6Wzv53Ge7ORqLYJycANlR\nJltiD6VjFo/2XiI4yq57\n=J3tU\n-----END PGP SIGNATURE-----\n", + "payload": "tree e2b3cd559e02db9d56afc7de7055e17b9ec28ded\nparent 5cb8474d7b87b9ba7106b3f957375409d879e4ec\nparent 9fe1834eb4374e7314e898965f30c095b8afd443\nauthor Corwin Smith 1764716383 -0700\ncommitter GitHub 1764716383 -0700\n\nMerge pull request #16769 from KosiChinaza/fix/smart-contracts-grammer-style\n\ndocs: fix grammar and style issues in smart contract anatomy page", + "verified_at": "2025-12-02T22:59:43Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/57be09cd1b92ee1e7479ddb54fb109610eec1911", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/57be09cd1b92ee1e7479ddb54fb109610eec1911", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/57be09cd1b92ee1e7479ddb54fb109610eec1911/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "5cb8474d7b87b9ba7106b3f957375409d879e4ec", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5cb8474d7b87b9ba7106b3f957375409d879e4ec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5cb8474d7b87b9ba7106b3f957375409d879e4ec" + }, + { + "sha": "9fe1834eb4374e7314e898965f30c095b8afd443", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9fe1834eb4374e7314e898965f30c095b8afd443", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9fe1834eb4374e7314e898965f30c095b8afd443" + } + ] + }, + { + "sha": "5cb8474d7b87b9ba7106b3f957375409d879e4ec", + "node_id": "C_kwDOBvEA_toAKDVjYjg0NzRkN2I4N2I5YmE3MTA2YjNmOTU3Mzc1NDA5ZDg3OWU0ZWM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T22:59:34Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:59:34Z" + }, + "message": "Merge pull request #16771 from ethereum/all-contributors/add-KosiChinaza\n\ndocs: add KosiChinaza as a contributor for content", + "tree": { + "sha": "4f7e60ed08139c4c418c52f5c0bcbf51e008d3af", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4f7e60ed08139c4c418c52f5c0bcbf51e008d3af" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/5cb8474d7b87b9ba7106b3f957375409d879e4ec", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL29WCRC1aQ7uu5UhlAAA8CwQAIQWE4Jaao7ep4MnBZNOvr3b\ntxJIttSzn0699rCl9IYAh81nwTILjh4BnN0ki/VIdkNFTZpvOPS8RRVmNLupaELy\nv689dHu2B0HlswbZ3PtEMWEZ9Yw5PVQEqKKiSSLxlvKpiV7A45+IgMLePy8mkuK5\nQ4qnkU7c8T2pDRqrDaIInPXAZREE+45XRiD1lUYmOIAtSU/EKIMppHucdFlA+psB\nkG88Ut67q165lTyFGiGNViNZwRhbeMKQtRNOVTQFwTxg1vj/bDheoW1r5hrzHB13\nbf5pXOyJHMSdXw7JMg9vADPREPEZeK3dFug+My1VoEri/TQvbgBbXX450gRt1SZP\nsIgshl/odvBocGHCQb0728jAzJ3BllQhBsFFtQ1dsfztjh3tNhyRNBdPvMlspJtF\nVTqBi3t6qCVF0Xm4jvjwXz/hHqvIXTldzy1bEy9XKBtefv9cnbnu+9Uns6XZdYdQ\njGLJeRxbMAtcoCjaEXNxzhKWkoTv4YYm5E6Lx+mKxiyClnTkT2iLUuld+xNmiXCm\n5sGsO8VEnGI/oIeoX9YXB6yq7xiaNyLzJe5TlarxEKXX+FLMXhUVHblixf91ChPt\n6lDK8E2GVw18AdFdk/DCE3GceoMoL55HGAJFNy2JuvDWWAJpkGLPJt7pWzJOX3Nx\nGITJOpC56x/HjyWijIWe\n=k6lW\n-----END PGP SIGNATURE-----\n", + "payload": "tree 4f7e60ed08139c4c418c52f5c0bcbf51e008d3af\nparent aaf89208dd2cc7304d5010b0b05907d2a7f9f6db\nparent f4d107424041480b38512d1633599faa9fcd0afc\nauthor Corwin Smith 1764716374 -0700\ncommitter GitHub 1764716374 -0700\n\nMerge pull request #16771 from ethereum/all-contributors/add-KosiChinaza\n\ndocs: add KosiChinaza as a contributor for content", + "verified_at": "2025-12-02T22:59:35Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5cb8474d7b87b9ba7106b3f957375409d879e4ec", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5cb8474d7b87b9ba7106b3f957375409d879e4ec", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5cb8474d7b87b9ba7106b3f957375409d879e4ec/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db" + }, + { + "sha": "f4d107424041480b38512d1633599faa9fcd0afc", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4d107424041480b38512d1633599faa9fcd0afc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f4d107424041480b38512d1633599faa9fcd0afc" + } + ] + }, + { + "sha": "f4d107424041480b38512d1633599faa9fcd0afc", + "node_id": "C_kwDOBvEA_toAKGY0ZDEwNzQyNDA0MTQ4MGIzODUxMmQxNjMzNTk5ZmFhOWZjZDBhZmM", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-02T22:59:19Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:59:19Z" + }, + "message": "docs: update .all-contributorsrc [skip ci]", + "tree": { + "sha": "4f7e60ed08139c4c418c52f5c0bcbf51e008d3af", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4f7e60ed08139c4c418c52f5c0bcbf51e008d3af" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/f4d107424041480b38512d1633599faa9fcd0afc", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL29HCRC1aQ7uu5UhlAAAc5oQAFAusnQISVyC5xJyBd0qFued\neFhtY2HPyjDZ8TzCzylbEeT7X7R3BSpu2TN/KXiR+aGGoMv/Ua3r7VIS9XfjhyGR\nn52/nrVS9yXuFNgmkAZzhZRo/bP2lVidcxLtc6pgzYQD/58BDeDfnuK4Od9ZVLMg\np53+6rCngkzwl7br7BWOmIajMgL863PrQR3jqV1aY3JE2AqDROvvp2S0CB+EnCGh\nItE2R25RQYyFF9yotJU3NAAfrePx4mbPfbV82MM062Iij5kTXwnr9IeMXjKcQhpZ\nV1/CXh9Dgk7c9RNOVwlNLIQDTmfn2hk2K21aQWDri0pMHRnfpB5Q3QhIGI+X950d\nf9P5NfpVMdr4OWHFeQvN3vukgjsJj8bajIFeG1JuKGd2QRdjx/zHcYsQCXh8yMFQ\nyYR4DdqQ0tBkJIEwumVD/6sRQjkBlANP3ILmGeTpH5+PzTdt16CzE5ZpUlQ49DBk\nDvoA/+EbLIvnCgt6PJLRVM7MixkuvKw2lZNUYiX7Buox3Vpp5lTFt24Q2jxgiH3m\nBkPgad3sY6+yrkEJ+CkwhVdpUdi23+JhKzs1Ut7GMEv1uG8PiHFUhMehxImT/X4U\n1ZoSH9nV63a8T7CwG206C9ZimBS1pTFIK/Vr29nxZOa0zVP8x0wJW0IY1a9LFwVh\njnRmm0XoF2Cm2dnXxshe\n=xf0d\n-----END PGP SIGNATURE-----\n", + "payload": "tree 4f7e60ed08139c4c418c52f5c0bcbf51e008d3af\nparent e6dc1a4a702e2614c8534291d8873e93acd1dcff\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764716359 +0000\ncommitter GitHub 1764716359 +0000\n\ndocs: update .all-contributorsrc [skip ci]", + "verified_at": "2025-12-02T22:59:19Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4d107424041480b38512d1633599faa9fcd0afc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f4d107424041480b38512d1633599faa9fcd0afc", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f4d107424041480b38512d1633599faa9fcd0afc/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "e6dc1a4a702e2614c8534291d8873e93acd1dcff", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e6dc1a4a702e2614c8534291d8873e93acd1dcff", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e6dc1a4a702e2614c8534291d8873e93acd1dcff" + } + ] + }, + { + "sha": "e6dc1a4a702e2614c8534291d8873e93acd1dcff", + "node_id": "C_kwDOBvEA_toAKGU2ZGMxYTRhNzAyZTI2MTRjODUzNDI5MWQ4ODczZTkzYWNkMWRjZmY", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-02T22:59:18Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:59:18Z" + }, + "message": "docs: update README.md [skip ci]", + "tree": { + "sha": "e51bfd5cfa3cb289eb01b1099e5075128675930d", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/e51bfd5cfa3cb289eb01b1099e5075128675930d" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/e6dc1a4a702e2614c8534291d8873e93acd1dcff", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL29GCRC1aQ7uu5UhlAAA2k8QAFV5gyvCFs0cjdYTV+GpDVNe\n7tv7mMhRI+tIF809cvYXm1aUX+qcngTY0eR24X1lQEOXpPaNEoQ98xlIisNsfTwS\n5qOwHF1908UGweVBzwnlgqIhK81b1Z/l0MvStTbtBjx9xwUv5qMVajlnrm6tgsmS\np78q4dYarxbAjVXIdqM9xnWTUT4ng4WHfuS8Su5M8cJytgKOQ/7cycfd6ZcNYI/v\n1L7WjMNhygxepbCbdbFWPGTt/yoZL/k/UPJDxW3drRxmUUoJ4sLDp7U2h112AjQj\nPt0IYI8UJQHjV5v54DHAn9HOrq+xoJ4FwCcSPXtG8H9CScsYJ+cMzGdeZ7PgvALY\nKwjOjGbbtAvsIMPlv13OvLeoUaAozcs3WPTZXbqdmsdHuhnjVdW/JsG1mXiB8pEq\nTXrf0HJ86RlZuhx6notG+bWgUQHWaG3nDgI4TeoSj72RbVXjWKIlbkIxWbkjvKQf\n30vQ4OzkNw8ssFhkgkGRa6yOAeQHa+IL2v8++DsBAxsy6tdWirvu4VQ3NAR/JmmC\nORu/uV8GIBcgl94J54oXbiOpyR1TGtPyP8BG1B5auVJTIEf8lol8+r3Yakm94SyO\nl7bMcGZ0uVngjL8m2RMpjydTppifVMRF8XqfvP1qp/8nQTYMd0DnZDwFpSWxGRmg\n1wbG+kDevEriudcZZzMf\n=HhVI\n-----END PGP SIGNATURE-----\n", + "payload": "tree e51bfd5cfa3cb289eb01b1099e5075128675930d\nparent aaf89208dd2cc7304d5010b0b05907d2a7f9f6db\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764716358 +0000\ncommitter GitHub 1764716358 +0000\n\ndocs: update README.md [skip ci]", + "verified_at": "2025-12-02T22:59:18Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e6dc1a4a702e2614c8534291d8873e93acd1dcff", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e6dc1a4a702e2614c8534291d8873e93acd1dcff", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e6dc1a4a702e2614c8534291d8873e93acd1dcff/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db" + } + ] + }, + { + "sha": "58ad3943e33b90c31ced9db2a9c1665b0f4a5e06", + "node_id": "C_kwDOBvEA_toAKDU4YWQzOTQzZTMzYjkwYzMxY2VkOWRiMmE5YzE2NjViMGY0YTVlMDY", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:46:34Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:46:34Z" + }, + "message": "patch: /what-is-ether string ids", + "tree": { + "sha": "d05008bee27d378f863e324e200c848162bbdecb", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/d05008bee27d378f863e324e200c848162bbdecb" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/58ad3943e33b90c31ced9db2a9c1665b0f4a5e06", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkvbE8ACgkQ9N587fAS\nn7aGwRAAvXaXMSzXuaRWbvn2HmatJMsbhpwbQ3zjiP16BlZwamwBBnobdexd+KrX\n4CdlnX7147NGcFznqokJlxG1oNBSaUxjR/LkUMq2NFaywCaUrq1Vxj4+Sn4Ph3qN\nv8AGh2DUsU8RnIeZDr4PWTS210z/XsPrvK9eL8gc7b3Ubxws0sU7i4mF88tLVwei\ndmQPd52S6XYC7IZcc7czsH7Z8G4vhcBDmYas6tIkbKUukcsQUyEHn2ihtf5ENNBt\nLpd/HehkiMW60zNYE2DeCg6F1ege74vmTXix6YwttlSFQmMBTh0Kcf8pMuOOobM5\n+z5YcwCAMsT4tVsAaBzkVBkDzRdALKXGKo4L6LUCBkVJ7Fvg1MPqktcWMwBfRGPH\nfQ9QAS/r4C2+6vaM+iAZgf3b01YfumwEnmBdJNfAbHw4CfiR8aIKmqJEjTQmyRa/\nkixZT3Tq8iQ89L8aQCjzjsBPxeoflirQvo8XH0rrqhkZholSZMFGflxt+l9FDww6\nEn5JnwIm2lFa4jOVk/3SFTfbpRlMi9RgVA/+1obzYpN+IL5tIjxZCfQd20RzsRri\nntQbBGyGf2ojeSzrI9J4MAdlmPjqU3FCyvCR2EzuGMaLQqTv1gUMg2QWyvwrccpC\nbtZSuEXciUx1zy8m/emS8mD+oRkLscj1nculQOdvATvpacIekJ4=\n=DUp4\n-----END PGP SIGNATURE-----", + "payload": "tree d05008bee27d378f863e324e200c848162bbdecb\nparent 8c731b149e29e58c3d91bb6e57cc80506576ee18\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764715594 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764715594 -0300\n\npatch: /what-is-ether string ids\n", + "verified_at": "2025-12-02T22:46:46Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/58ad3943e33b90c31ced9db2a9c1665b0f4a5e06", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/58ad3943e33b90c31ced9db2a9c1665b0f4a5e06", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/58ad3943e33b90c31ced9db2a9c1665b0f4a5e06/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "8c731b149e29e58c3d91bb6e57cc80506576ee18", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8c731b149e29e58c3d91bb6e57cc80506576ee18", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8c731b149e29e58c3d91bb6e57cc80506576ee18" + } + ] + }, + { + "sha": "8c731b149e29e58c3d91bb6e57cc80506576ee18", + "node_id": "C_kwDOBvEA_toAKDhjNzMxYjE0OWUyOWU1OGMzZDkxYmI2ZTU3Y2M4MDUwNjU3NmVlMTg", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:44:01Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:44:01Z" + }, + "message": "refactor: use formatSmallUSD", + "tree": { + "sha": "ff7837682e6f335b389ad075088aafa3a052c6ad", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/ff7837682e6f335b389ad075088aafa3a052c6ad" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/8c731b149e29e58c3d91bb6e57cc80506576ee18", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkva7gACgkQ9N587fAS\nn7ZK5w//XH0oSN3HGBwhH2DHi2G8WXisembPFUi30u629S+EN5s6B+jxYcyFPSwI\ngvbGoXYAvAndmauUFVmKrzlF8bSEKlnhe19M3K5tIG1EZuO/rJcOzS7nRo55Kp4S\nWnV8DkMbXlxLf8s8AeeWsFgbYZcglHsAbINELtF0b2zHjHPPzgGTUZ4P74jg55uV\n8LEo6Sk3kgyrsA2imQHLD3kXW/BJURBCRBb+WrH0J/5nrNN+20zSs4T6FKO6bq5w\nxqrI/QXgT/bwmp/QK2SUJFvm3PEr8NPxxdKynexhyOAstYI7ZEH17DlEy1uKbPzb\nrDmtogV1fL/aoL3eoHBRk84AP8IYgIbC6XTGyxUWfKzXQnB3y7QayB9x9EF2Eft9\nuzf9xqINKOBJ6EFkMvJzYyzZFxCBn3HY7KjIxJNaowDshZDNkE/RN8n5TAkbjxoS\nfr5vjr5Fkp1UsW1oLCyFRz7QnQXvsZF5A605fGWkReOmzqEqaDUFcVe6iErgvqql\ntjyyu8vQNIPsBeWS8uPetCQTkIL5aMPVskIhYw6nPx1NX950oTGRxymJuGB70LDS\nCWPe8J6MNmSNvO0WzNVH6p5qN2OKdPvC/2b0utw5IwSg95HMx3Pi1AgdSkBYqtMO\nTKf0FRop1IMBGWyUqR1qL9pv+DQXt20inziqlspK9NEoR+Kho4w=\n=4fbz\n-----END PGP SIGNATURE-----", + "payload": "tree ff7837682e6f335b389ad075088aafa3a052c6ad\nparent a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764715441 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764715441 -0300\n\nrefactor: use formatSmallUSD\n", + "verified_at": "2025-12-02T22:46:46Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8c731b149e29e58c3d91bb6e57cc80506576ee18", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8c731b149e29e58c3d91bb6e57cc80506576ee18", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8c731b149e29e58c3d91bb6e57cc80506576ee18/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0" + } + ] + }, + { + "sha": "a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0", + "node_id": "C_kwDOBvEA_toAKGE2OGM0ZjY4NGFhMWVkMzA4MmY0ZWQyYWI3Zjc0MjhhNjQxN2JkYzA", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:41:19Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:41:19Z" + }, + "message": "patch: /what-is-ether content", + "tree": { + "sha": "4e14cab948eba72ce1692456c3ea27975f69b7a4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4e14cab948eba72ce1692456c3ea27975f69b7a4" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkvaxUACgkQ9N587fAS\nn7aZDRAAk2bDKfzX43TG/3qn5DBqM9x46rAt7QvuVE6C88d1XreqkHElX7Si+/OB\nZdgjLRakC5CB2e7rio7cb0rK38Mvrdf/YLgV3OvMzXpNtA+Yx0tDLcWqU6RR4fYp\ndYWLEScYwo1lBuz2sdvfGGk5Df21tNi0/NDItvpCzLG3QJAAKzryFSVDezJtRZJM\nGrGcx6aUTWVxY5iIDzMS1xQrgNmtN6q6cBYDNhxVoUA8NU2x27AafBj7x3qjjk+R\nyj6687X+VXhWo847PioPzdQDM7XtY+mZhnBMKQ96eXzci3RHKh5lqu6ioBtGSthq\nDmsup59cpUT8ko99bmwyK8xgaNAyzCOgj5FpdOlz4yyz5ig+US4+THHI0aTybi1S\nJt2h7YqsckxHellj0S7y5Aixhh2nuFz4j5lXW0eeNsVOZzHZaX4hHaIc+zcFT5dN\ndgprWp0ACrP+gXodvsccOaLZns6j7mK8Eor2rczK2dT75nOP3PG6PILinZ3qzD8+\nLqHMF1so/byPWxtTvDhuh0+awa9Aa0t6DOVW1ORORiUiUgdlo2qRIzOfvE5Vabj+\n8FFnVaR9BOEho+0oRKDvZ7OiKut3iw/hJiqaSmv+8ME/o8meudkJXhRwMU4xr3hT\nkkNCyEI4CCAKo9bB5D+QJJCQj/hS2c941eKMctKgxCvpFfNkA6E=\n=vhA9\n-----END PGP SIGNATURE-----", + "payload": "tree 4e14cab948eba72ce1692456c3ea27975f69b7a4\nparent 2e0300f26eeae64f860984cb86d0e3901d2a6006\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764715279 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764715279 -0300\n\npatch: /what-is-ether content\n", + "verified_at": "2025-12-02T22:46:46Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a68c4f684aa1ed3082f4ed2ab7f7428a6417bdc0/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "2e0300f26eeae64f860984cb86d0e3901d2a6006", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/2e0300f26eeae64f860984cb86d0e3901d2a6006", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/2e0300f26eeae64f860984cb86d0e3901d2a6006" + } + ] + }, + { + "sha": "2e0300f26eeae64f860984cb86d0e3901d2a6006", + "node_id": "C_kwDOBvEA_toAKDJlMDMwMGYyNmVlYWU2NGY4NjA5ODRjYjg2ZDBlMzkwMWQyYTYwMDY", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:40:34Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:40:34Z" + }, + "message": "patch: /what-is-ether content", + "tree": { + "sha": "638d4bb06347e12a0d79b2049e64806d5e8d5a2c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/638d4bb06347e12a0d79b2049e64806d5e8d5a2c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/2e0300f26eeae64f860984cb86d0e3901d2a6006", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2rjCRC1aQ7uu5UhlAAAEzIQADYHGZnxeIXmg6sdKj91k1RP\n9dKJJPHYE5zg/pGk6OKHSXcaCDCyOfY6N0hTifA/8ZlzE5LfwaQWL/uD4/CL/1BB\nQLigNQ1oNZloElLX8xUq94s1QavrUJfqIwyWXaLTjZD50vox2xDW5DZ6OVZLOoYB\nsnRiS+dQwwgaSyMD2pDL5DLHtZkOXje+87LP4p/WWycKnihn1tjaRWSmeVBelPza\nLwnsv5VGYyISdDKX0O6VhxsY1JT8gEqudLmk1lDA0Hoc9JqRCtsCja31l2wK4jcH\nzUE8IlIlV0Xm7V+s+IbUxmwCd9/6MlQ0lWyQoe+SwZSt73qFnTwpfjgCwd2dLXCT\nR8aawM6DrzutkMHD6y0KobtpOT3FbkQ4eqF8iXQWz4WXxvzjRq/DxfDvUgk9Qmf3\nRYeO+YvB8lr46OtSoCZNwiGy3cXdUwJZQyMOXrus3z3GrY5tCIQD3YZO4sxJlkU4\nTt8xscJVCP5gXnDW8/jy66zqoRi3okUdHCtOHeEKSp+MenqhSSurpcf3OeTTeNEI\nAqfaGeAnLNyezlh8TOS0Of2v/Efuo/M8mw0WUm2wfFwMxMSVSOMFPaV3ntsW2WCO\npt7bZvkCUYofUP/QF69mhBmMTtpYfhAETXgvSIhdwHDr92e9H4+fL8CESDPq/7m0\nG3/5J9kzv+Z2LUryVy0t\n=jtPY\n-----END PGP SIGNATURE-----\n", + "payload": "tree 638d4bb06347e12a0d79b2049e64806d5e8d5a2c\nparent e2186b6c03ff9e5dbe4537bb660500e80c493efc\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764715234 -0300\ncommitter GitHub 1764715234 -0300\n\npatch: /what-is-ether content", + "verified_at": "2025-12-02T22:40:35Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/2e0300f26eeae64f860984cb86d0e3901d2a6006", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/2e0300f26eeae64f860984cb86d0e3901d2a6006", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/2e0300f26eeae64f860984cb86d0e3901d2a6006/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "e2186b6c03ff9e5dbe4537bb660500e80c493efc", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e2186b6c03ff9e5dbe4537bb660500e80c493efc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e2186b6c03ff9e5dbe4537bb660500e80c493efc" + } + ] + }, + { + "sha": "e2186b6c03ff9e5dbe4537bb660500e80c493efc", + "node_id": "C_kwDOBvEA_toAKGUyMTg2YjZjMDNmZjllNWRiZTQ1MzdiYjY2MDUwMGU4MGM0OTNlZmM", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:38:03Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:38:03Z" + }, + "message": "patch: page-what-is-ether.json content\n\nCo-authored-by: mnelsonBT <74370515+mnelsonBT@users.noreply.github.com>", + "tree": { + "sha": "01b39cbac1dc05b99adb911d2ba6e3470d29fe49", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/01b39cbac1dc05b99adb911d2ba6e3470d29fe49" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/e2186b6c03ff9e5dbe4537bb660500e80c493efc", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2pMCRC1aQ7uu5UhlAAAUT0QAHbPWPirRKeM3bDxPKcJx2yr\nl7V5HzeStCgn1yNx+YfVXFPb/Jor3cAF5HYr7reRuFdPafVssqmKc6X9iCq1uowI\nmLEkl1xQW/CW/cvRGJYtwHq7KASPA+lk86hBhVWa9ze87JbLHHjkNjrBH7ZObseH\nbvruIfXWXUEOWlfcljlMe+6GI4hjLyk+q53Hp6+nO/pBwUBzgSAQ4amOwa3lhsg0\nVDUvZ+G7C+1/VlhJbrvoF8JAaFYZzSB9SghVUyr9OQeZ1m2O1Y9yrkoGoMEH/pLw\nVRjSKjEXYCy6X8nlFsolqLGtnUSMg1tR13QYu7AJRvU+Z3h9QZ5pqhT5LnTdm/Hs\nTcHHkTQtqlhHRM9J8YsY7xlbdT0QBpow4GmYPYQYCNnJ0HpjDAmn4YCs1wKDMrHG\npi0hy3+poSVayORfvPbk2815oRdi/HDZe4yZ9aZZpdc+lpZ75RGW2fbvl3udUM4S\nxp45sxIBr+9LAfsrqu+CP7/lT131IDdkDFHKs0PVvQtWUMLMU0PvVqEvgQUdQ8dF\ng60Dav0iTDT+BbxtYjNznsPryqYjZEY6QCbC56oi/TZChi5gSmhm2djZwRO6ULJ/\n+TKSHkhhakBKpQwSFIo7qnVFTYXN7zodL/lRfdWPa55Q6vgV1EvNZKDBii8xwH/6\nTuO+l0nT1POKM7w1aZ7M\n=IKjr\n-----END PGP SIGNATURE-----\n", + "payload": "tree 01b39cbac1dc05b99adb911d2ba6e3470d29fe49\nparent 3ad85ec350bd2b321390fd5dbb0c27d384c0f36a\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764715083 -0300\ncommitter GitHub 1764715083 -0300\n\npatch: page-what-is-ether.json content\n\nCo-authored-by: mnelsonBT <74370515+mnelsonBT@users.noreply.github.com>", + "verified_at": "2025-12-02T22:38:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e2186b6c03ff9e5dbe4537bb660500e80c493efc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e2186b6c03ff9e5dbe4537bb660500e80c493efc", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e2186b6c03ff9e5dbe4537bb660500e80c493efc/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "3ad85ec350bd2b321390fd5dbb0c27d384c0f36a", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3ad85ec350bd2b321390fd5dbb0c27d384c0f36a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3ad85ec350bd2b321390fd5dbb0c27d384c0f36a" + } + ] + }, + { + "sha": "aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "node_id": "C_kwDOBvEA_toAKGFhZjg5MjA4ZGQyY2M3MzA0ZDUwMTBiMGIwNTkwN2QyYTdmOWY2ZGI", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:34:47Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:34:47Z" + }, + "message": "Merge pull request #16757 from ethereum/removeDevconnectApps\n\nremove devconnect banner on /apps page", + "tree": { + "sha": "ed5ab988c06e97da4cab7115dc4be1ecf07fa451", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/ed5ab988c06e97da4cab7115dc4be1ecf07fa451" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2mHCRC1aQ7uu5UhlAAAw1YQADby+m8ONMc4DDopXVF/wmKP\nUS0x3v9U7JWhO9aEXRpAhhxRKjFz80dky3OojeNAagTYur3VzkcjqLkgQYg/6xtv\nHemNL5Qr9YmVkdndmv0jGJhQVCwWVSLXNpiVZZwuLEV8qLLHHXHJBL5Fz3NicF4i\nptlreWlHOuogZIQ0yEfqEtghP9unwYXGQSrtHAya6gIwov6qNaOGXHuSdBEGamdd\nViZyOu/mn3Oz/oaSWJeEC2pVadXpsftPCR/suZYZ+M666WDdJ04ZLlidIwkb49Qr\nCMNEPeMoDsceguBVaz+5cEExK7N/kTgtnQB/jzyYCm0/gqDNsslXAy4pF8z4vz1o\ne6m3c+m/zu/T6xUWUM+dIoqT0zOCbWrFQiEDfKdZdcKbrrQ419dvhFCOiYSxa/Ky\nkb/8ZzgGZClw36tLK2DKLff5R6uAIKLDf7keY/GU1/l5XnvkdUP20t6j3yNiNZca\nBm0ZXQe+h+A+tEDg9/j68xnUFchKOTgyIdTldhlM7iL8VRn4To/J1SPN6Af7nA5D\nI4ZfXzTpsOLpXykIjN3D2mO7dsN7mFFUTau2B/o/T6BqlQL57gQKFDUMqk09haY/\ngyzEyW9TfZG7yip2JMk3VP3l2p9dANozC96OPEYaJ6ismfWMiPMNDI2BcwTlEcq4\naP8oRL2kqd32EJ2gGP7n\n=UrKj\n-----END PGP SIGNATURE-----\n", + "payload": "tree ed5ab988c06e97da4cab7115dc4be1ecf07fa451\nparent 93893ec7c79082db3f14ec396fc5a483fc7395d8\nparent a61bad1c6a419b568e25b8b5680b1aa1bf76db6e\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764714887 -0300\ncommitter GitHub 1764714887 -0300\n\nMerge pull request #16757 from ethereum/removeDevconnectApps\n\nremove devconnect banner on /apps page", + "verified_at": "2025-12-02T22:34:48Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf89208dd2cc7304d5010b0b05907d2a7f9f6db/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "93893ec7c79082db3f14ec396fc5a483fc7395d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/93893ec7c79082db3f14ec396fc5a483fc7395d8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/93893ec7c79082db3f14ec396fc5a483fc7395d8" + }, + { + "sha": "a61bad1c6a419b568e25b8b5680b1aa1bf76db6e", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a61bad1c6a419b568e25b8b5680b1aa1bf76db6e", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a61bad1c6a419b568e25b8b5680b1aa1bf76db6e" + } + ] + }, + { + "sha": "b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "node_id": "C_kwDOBvEA_toAKGI2NzIxNDM4M2JkMzNiN2M1MmJkOGM1Yzc1ZDMxYTYxZTEwZDRmNDg", + "commit": { + "author": { + "name": "wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:32:53Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:32:53Z" + }, + "message": "Merge pull request #16758 from ethereum/hotfix-fusakaContentMaster\n\n [hotfix] Fix broken translation string on FusakaCountdown", + "tree": { + "sha": "d1da5632d061f6266b12764b1b54560849ce3b1e", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/d1da5632d061f6266b12764b1b54560849ce3b1e" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2kVCRC1aQ7uu5UhlAAAXBAQAKcDoccAsKSRTF4CbIHFp0xb\nG4wjR2u0f4uhGL6oiLkm1lOceWOgXgJSGwy+DcFZLM7X8/0BmOFZb0d/swR0looU\nUndULnZMVDW5cxsK427+EghyRAYafTywNvrfDRa3Tzjg1OT1ia2P0lTbcWWh0kyl\nUFcvlr8VRHZpCvxtlCM6Tzy7hduV8IMaqd29TEcagGo72O8pHCWlxOJLk20tWvp2\n2gX8+GVLz0FJFoiWjZEYRemFTJNnqUSG5YU9eRDIFYb11bP5YbfiqBnPmAHkNUi5\nREq1NQ0N2R3oS72C3/8sWguJFGkhfNbc6+IDx3V4y1xewfn8TneTicVl2S3tzxfU\nN3cMwqKStOPgDpiXVTdmnINs4yExB3ffvqW14I4s6L7bJ5rYBxnNOy72ycDZx53+\nhblrdI/RhAj/CnB+SmTeGYvgvY62o3rzgkeBWWUpBW1r0+xrqgr80P3rVI5TpZxi\nlz/WpjM+Swd1Tz2zCYYrkt1PZBeTVxS3CSHGXHN9ropDLkCr0Dbr1yX4/zxadmnM\nvYzCTcUzNxOn6OM++58kyLj9nUotjUA5SFkX7ud2Zifr5VyWhAmAHJq8LK4XOA7r\nmS4jYaHY+nUiN30VHCL+q6eMFfLx+8GX1jJVu5vovw+UHaZpzmHO+w2dObjU0rZh\namHm6w4rFypDkzsbr52f\n=dXgA\n-----END PGP SIGNATURE-----\n", + "payload": "tree d1da5632d061f6266b12764b1b54560849ce3b1e\nparent 94e3213a6a4b281733a700e3e9d5bc253c631c53\nparent 29b1ffd3eadda232ce6992806cd1a6b9343710fd\nauthor wackerow <54227730+wackerow@users.noreply.github.com> 1764714773 -0300\ncommitter GitHub 1764714773 -0300\n\nMerge pull request #16758 from ethereum/hotfix-fusakaContentMaster\n\n [hotfix] Fix broken translation string on FusakaCountdown", + "verified_at": "2025-12-02T22:32:53Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b67214383bd33b7c52bd8c5c75d31a61e10d4f48", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b67214383bd33b7c52bd8c5c75d31a61e10d4f48/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "94e3213a6a4b281733a700e3e9d5bc253c631c53", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/94e3213a6a4b281733a700e3e9d5bc253c631c53", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/94e3213a6a4b281733a700e3e9d5bc253c631c53" + }, + { + "sha": "29b1ffd3eadda232ce6992806cd1a6b9343710fd", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/29b1ffd3eadda232ce6992806cd1a6b9343710fd", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/29b1ffd3eadda232ce6992806cd1a6b9343710fd" + } + ] + }, + { + "sha": "93893ec7c79082db3f14ec396fc5a483fc7395d8", + "node_id": "C_kwDOBvEA_toAKDkzODkzZWM3Yzc5MDgyZGIzZjE0ZWMzOTZmYzVhNDgzZmM3Mzk1ZDg", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T22:29:15Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:29:15Z" + }, + "message": "Merge pull request #16762 from tomasgrusz/16681-add-uniswap-wallet\n\nfeat(wallet): add Uniswap Wallet", + "tree": { + "sha": "6844d82359d1a23e9fe5b108de5016155378ab1f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6844d82359d1a23e9fe5b108de5016155378ab1f" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/93893ec7c79082db3f14ec396fc5a483fc7395d8", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2g7CRC1aQ7uu5UhlAAAEGUQADN8w+OWZ9ixWqZ9TYvYZbUY\ni4Y4mbNp9xKJGhZhAJ7c4y8JCqB3U5oSQZkSR3gx0/KDUXknzkWOdYtqhcWEulwL\nWpKTWrBBtmxfBZYJqxl3alzB4+hznqVP046G2zfSgQrardMsarx+5SXeUNRVmVcM\nFw/mHPZRR25gUormvG6tURHJK0fQr6oSlquGtdS9+lHfbDS0nO+zJ/6+8+yTo/4v\necXpMkL8+vFXohJm5hIX64ujxjXxVMRrT+T91g6+3ZL5RzOrccMwdzsKf3GsA2UC\njRwzhG8LJBr8vOoYLoFREJ3C7VV+/NZHP+ag1sZ/sQCMfAFH0ki+shlQL7AIM7nR\nBAjIp09Ya6nxTJoyV1/Zx5A9O0inkhE6EPcMDA3yONGHxI7YCmZv/gDZoIvvXgN1\nPYYb7mw42bcFwZ69tlAadHYNuCXkJpyViHNAymw2xodSYtXYB++id53BXkLG1GV7\n3ICS8KAk7DUWOmVmKSb18DOSS33Yl1BnNoeVM7+BcC97oDiY58LpiYY0FINmsL0K\ngShXc89RiHnSsLvHNA86N+6ODbahSlwMVKDonR4P/ZuXKAJmGaH+iMky6lou5d0+\nDSImn5NIYcQ5wOf7d1d7Yep/bho+xTyCIIi+6H0n0jd8mFsw5rrxJJTxiOI2SOhu\nmCgs8DDKQODgNIlSO+pz\n=agZp\n-----END PGP SIGNATURE-----\n", + "payload": "tree 6844d82359d1a23e9fe5b108de5016155378ab1f\nparent 27a9024cccac17bdefe7e0dd1bddf0612824e0a7\nparent 43005337feeb39dae6a4a47b8be56b222453d960\nauthor Corwin Smith 1764714555 -0700\ncommitter GitHub 1764714555 -0700\n\nMerge pull request #16762 from tomasgrusz/16681-add-uniswap-wallet\n\nfeat(wallet): add Uniswap Wallet", + "verified_at": "2025-12-02T22:29:16Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/93893ec7c79082db3f14ec396fc5a483fc7395d8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/93893ec7c79082db3f14ec396fc5a483fc7395d8", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/93893ec7c79082db3f14ec396fc5a483fc7395d8/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/27a9024cccac17bdefe7e0dd1bddf0612824e0a7" + }, + { + "sha": "43005337feeb39dae6a4a47b8be56b222453d960", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/43005337feeb39dae6a4a47b8be56b222453d960", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/43005337feeb39dae6a4a47b8be56b222453d960" + } + ] + }, + { + "sha": "8e7ddd2473a73a3d250c8d861256b54aa8780f07", + "node_id": "C_kwDOBvEA_toAKDhlN2RkZDI0NzNhNzNhM2QyNTBjOGQ4NjEyNTZiNTRhYTg3ODBmMDc", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:23:16Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:23:16Z" + }, + "message": "remove: _redirects", + "tree": { + "sha": "f21abbbfb63fad5879c6e1185dce91f91e42af49", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/f21abbbfb63fad5879c6e1185dce91f91e42af49" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/8e7ddd2473a73a3d250c8d861256b54aa8780f07", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkvZtUACgkQ9N587fAS\nn7a4/g/+IueqToZLwJH96XHQqlwX2UlXNh+DnvABfFhXxprZqhLexU7lby7tyCIh\nrF83QtxsOzyjSSWqALhpkFPcGEImn0ooGWA+F6Solbvf3Bcs75OLcdpffOS7bXOZ\nMtxWP+t9Gx6Zyml7qhunmrFokK5SNR6zDTWx75ogozxwBeOq1zfYeXIl+9sLN4DO\nuGKmpytQDPdKwsmEJOTyvnAj1wuOAZWzKzNR2bxxpvYjIa6WxOFFY/d1zI8oFRRO\n79pVqQbLo7MGEFdfzrQyxyfZkGyw6OOACpKxYbM9Qlhzd6SuujM6iO00qzfDUvm5\nCSCb6UqJ96oRQPE9a5qshHjGuxsBJSmHD/4qAKPV9cPDvbMLbaFEdY4Cuypl818I\nawqNwrFP/zO4aBXG6kRoA/d3wQjKoejAJbdwvHc4G7Re7dYBUia/AxiFNOvUlM3N\nTbJb4xPZXBYibrOkkfExEdVY2q1JynT4tWfEAZdK+jcpG/ULalWf1C4c58FSKJah\nJV7Cew9JC0mVBMr1GGif+9wzyyNeFqQintJ3JnMSZUNz/BtzDnPa0VlcP7JZpX9W\nAuUH/U2PsOFs6DoX8K7sGZR0dHaRml/bWZsYnPKqY5VW4IWmN0d3/7KRGVWTVFrg\ny7BLeT+e6cv+Llhltw7+nFRdlWHsGNelO9dbYhle1N5rxfk9+Cc=\n=Wtkn\n-----END PGP SIGNATURE-----", + "payload": "tree f21abbbfb63fad5879c6e1185dce91f91e42af49\nparent a8829c3c5cf3c17734ac41110503ea926a97181d\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764714196 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764714196 -0300\n\nremove: _redirects\n", + "verified_at": "2025-12-02T22:23:39Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8e7ddd2473a73a3d250c8d861256b54aa8780f07", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8e7ddd2473a73a3d250c8d861256b54aa8780f07", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8e7ddd2473a73a3d250c8d861256b54aa8780f07/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "a8829c3c5cf3c17734ac41110503ea926a97181d", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a8829c3c5cf3c17734ac41110503ea926a97181d", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a8829c3c5cf3c17734ac41110503ea926a97181d" + } + ] + }, + { + "sha": "a8829c3c5cf3c17734ac41110503ea926a97181d", + "node_id": "C_kwDOBvEA_toAKGE4ODI5YzNjNWNmM2MxNzczNGFjNDExMTA1MDNlYTkyNmE5NzE4MWQ", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T21:55:09Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T22:22:53Z" + }, + "message": "refactor: use next.js middleware for all redirect logic", + "tree": { + "sha": "3c29e062d60c28718d5133faaff247f7baafdb94", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/3c29e062d60c28718d5133faaff247f7baafdb94" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/a8829c3c5cf3c17734ac41110503ea926a97181d", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkvZsAACgkQ9N587fAS\nn7ai0BAAiVS78fIp8nIvhq1XXUwJc67EXjDzd5+FvfAhEUfIJcnJfE7SiqRnz5ZY\n3JaneGo/z44V8nO8tyOXM69fgT9RGHc/nkztYB8+Qw8BSl9Dityx61lHv8EVWyTl\n5pKJkzthKL2FU8s2GlSUWCJPpFaOgu5nmp+2y9BLlrc7XCto2J4LmXO0faT+acJA\nfbsm/JigiV9rlAUB4lgrMuQHl7CVJuypizMemztvGGPN7ogx1qILqFFWipmIlBph\nlY/IE5tF/UbdproKa6deM0nAzGDQlNSmJRBsOlHmde/z7Xgv/2aZUCAfnznhC+Co\nkhOtBc9YXBNDdLaCz73O/2BOj9YO53mmt3e1a/ynnZ35poZcC5641aKvr80+htg6\n+/j5U9Vxjhh8QYaweA1eNuKmQT6ae4njCFt1/t3sUDOp7yrhdd6gB4xFsG9++Z2u\n5oH9Kmh0MO28Y/h+/SpCZEH86Hm1bQhXwx2OlixTxoySR5aC3qtqJvu6P9b69suk\nKzgi63Pvd7B206m/WHDm4NhAdlTf/vCxnogYZis9xsrbqLbvZ4bPhDzy+Pc7P62B\nvpe+dMN/0HUxhgxXMnYwOrja2RhLvosuf4JgudCmLTUB5TAwbmFsALFN/5ThfqNP\ndy3bTM4UrlTlUsWVgkyIc38w11nG8MmFoheQM73c32Vkk2enoeM=\n=vBzi\n-----END PGP SIGNATURE-----", + "payload": "tree 3c29e062d60c28718d5133faaff247f7baafdb94\nparent 0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764712509 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764714173 -0300\n\nrefactor: use next.js middleware for all redirect logic\n", + "verified_at": "2025-12-02T22:23:39Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a8829c3c5cf3c17734ac41110503ea926a97181d", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a8829c3c5cf3c17734ac41110503ea926a97181d", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a8829c3c5cf3c17734ac41110503ea926a97181d/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de" + } + ] + }, + { + "sha": "94e3213a6a4b281733a700e3e9d5bc253c631c53", + "node_id": "C_kwDOBvEA_toAKDk0ZTMyMTNhNmE0YjI4MTczM2E3MDBlM2U5ZDViYzI1M2M2MzFjNTM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T22:16:05Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T22:16:05Z" + }, + "message": "Merge pull request #16768 from ethereum/hotfix-sv-se\n\nHotfix sv -> se locale", + "tree": { + "sha": "cfd785e55c4f7e7de3af047e7ef699491a3d4e8e", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/cfd785e55c4f7e7de3af047e7ef699491a3d4e8e" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/94e3213a6a4b281733a700e3e9d5bc253c631c53", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpL2UlCRC1aQ7uu5UhlAAAa/QQAC5Xm0Zyf8I1eyhGE4a64pHK\nQ69F9N11yFpcKS/WibR5QUURpDxBcRfpg8kXPDQ2Q+bYXoFQRzqFv8Psn2ejMb+m\n5CK07rfW9gLacvB5ywgEpTOP+hzvTIDL2/yxD3e7mFz0I/R9AeGLkLDkCAD9z4gV\n/M4G42ayNHSGUq28fl5Dl/QA0sUm7dz2aymnPacG7dUFxHPTM4tfx6cZ6nLDyqkn\nEA9ZOkjqzB6Y7ixElkprWlce6uAKbivcac8iOv8uAfRc0OCY7e8JUmbL0YVPL40V\nzL7zXLPWmsKP9P99jccdNsrb8goHP2P6+cw8uQPpUfeF3hdC7vTflrPPq4iRw1t6\nq08Ui/Opabz3OKOap643RQS/meEcjOajPoDZPgvS9vM2X3rnTtiGGURIc7fNo8XH\nHLCIsOjzbZ/ges5mT8ndU8xEqE0t6K0544s54dGeFG6uqrvnTbprnECngm6v/7JQ\nP01atPIxhfLec0Fvc9p53Uy4nspWWw1+8ULBAyVqYBse6wQEVH5o3YcoVMmcaL/0\ntlrTysm81saIFDkZJ9TZ+u3jfa+yuWJXNzOTPO6WSiWuK/RJCyYXW04614zuyeRF\nMm5ZxMTHEjNVJ4B4cbyaXsGewBgEVC/qpAHuS+tFi6+Ovame22LscqGjE4UlHRwQ\nCCoTrOZBVaugTGHR1g9c\n=K8nq\n-----END PGP SIGNATURE-----\n", + "payload": "tree cfd785e55c4f7e7de3af047e7ef699491a3d4e8e\nparent 1e94afd9c83e816ce114dcf9a67fa383e10fd127\nparent aaf99938419ef48934a83af43eeeb89b5f864392\nauthor Corwin Smith 1764713765 -0700\ncommitter GitHub 1764713765 -0700\n\nMerge pull request #16768 from ethereum/hotfix-sv-se\n\nHotfix sv -> se locale", + "verified_at": "2025-12-02T22:16:06Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/94e3213a6a4b281733a700e3e9d5bc253c631c53", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/94e3213a6a4b281733a700e3e9d5bc253c631c53", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/94e3213a6a4b281733a700e3e9d5bc253c631c53/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "1e94afd9c83e816ce114dcf9a67fa383e10fd127", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/1e94afd9c83e816ce114dcf9a67fa383e10fd127", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/1e94afd9c83e816ce114dcf9a67fa383e10fd127" + }, + { + "sha": "aaf99938419ef48934a83af43eeeb89b5f864392", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf99938419ef48934a83af43eeeb89b5f864392", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaf99938419ef48934a83af43eeeb89b5f864392" + } + ] + }, + { + "sha": "aaf99938419ef48934a83af43eeeb89b5f864392", + "node_id": "C_kwDOBvEA_toAKGFhZjk5OTM4NDE5ZWY0ODkzNGE4M2FmNDNlZWViODliNWY4NjQzOTI", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-02T18:58:29Z" + }, + "committer": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-02T19:07:23Z" + }, + "message": "fix(i18n): correct Swedish language code from se to sv", + "tree": { + "sha": "4d40b63b718495e8c1cb3dee58479b57dbfb8bf5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4d40b63b718495e8c1cb3dee58479b57dbfb8bf5" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/aaf99938419ef48934a83af43eeeb89b5f864392", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf99938419ef48934a83af43eeeb89b5f864392", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaf99938419ef48934a83af43eeeb89b5f864392", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaf99938419ef48934a83af43eeeb89b5f864392/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f" + } + ] + }, + { + "sha": "27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "node_id": "C_kwDOBvEA_toAKDI3YTkwMjRjY2NhYzE3YmRlZmU3ZTBkZDFiZGRmMDYxMjgyNGUwYTc", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T17:42:06Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T17:42:06Z" + }, + "message": "Merge pull request #16766 from qu0b/patch-2\n\nUpdate index.md", + "tree": { + "sha": "6fea2f44c8c4380526271c55d391abeab8fd8dfd", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6fea2f44c8c4380526271c55d391abeab8fd8dfd" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLyTuCRC1aQ7uu5UhlAAA4JAQAGsgxA3enzJeYxCYpw2C0yzQ\nTRrA0iXhFuEH3BjJq4YsEGF77HogroLdyyeJwR+ymW5LiATkn0LXQQlQbd5hkmea\nbphIQz+XhUb72xwLurGB121lw/jNnkLD8gFU57et2l3qKx3G3APcfP1x4GeturXx\nHuU2LU84i7zC+zgeX/sA4bGGkI5bTydZlwb6mecUezg6/+vzrKWKNZK3Mnv3UfmI\nHlPhW4a5SmDo/CsqLb3jbs/zvbrt8DcAzXNC8MDFvjv94ZOKqiIaGdhQBbDsaT/G\n9GDV+XI6Ne7aiH7J3ayVOvCNhqcaqzup62JqHfGtXNOeL+5RwQABvTDKvLJeCNEA\nS9HYsTYAnAqd2e+CdX9HQsO2nT11UHBd9FDJy62uvhxMGI7vp18pdDTc1fhj9Qo+\naUof8vDXbqwa2hOi3Q4JyBtgHhJwYA6IHgLo1pOml5MPEfLpxqGNMNyuzFpmUdwg\ng+oballUQhkWs43xO21gwMw4dcUCTHkb+C6x3BReZLldxQQ2+0kVQdUZkDcWhgmJ\n42Rt1TbNfYa/6R6eKF8Pv3p665zwnLOiHtuqE4kewC0mA3/CVoZcZzLzB03yuoKV\nWwkaZ2u1y7ur05RQCVVcyBeB3S8otXmkJDgoKfqz9nJy6gLdtkgKV6d5+fY4bcrY\nQCfL1hL5iYDO4Fa400rI\n=G+Rg\n-----END PGP SIGNATURE-----\n", + "payload": "tree 6fea2f44c8c4380526271c55d391abeab8fd8dfd\nparent 0fe865414ee7d66c35472b1d18a7dc749beb762b\nparent daf8103b7a1298501c30aac073418d80310e98bf\nauthor Corwin Smith 1764697326 -0700\ncommitter GitHub 1764697326 -0700\n\nMerge pull request #16766 from qu0b/patch-2\n\nUpdate index.md", + "verified_at": "2025-12-02T17:42:07Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/27a9024cccac17bdefe7e0dd1bddf0612824e0a7/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "0fe865414ee7d66c35472b1d18a7dc749beb762b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0fe865414ee7d66c35472b1d18a7dc749beb762b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0fe865414ee7d66c35472b1d18a7dc749beb762b" + }, + { + "sha": "daf8103b7a1298501c30aac073418d80310e98bf", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/daf8103b7a1298501c30aac073418d80310e98bf", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/daf8103b7a1298501c30aac073418d80310e98bf" + } + ] + }, + { + "sha": "1e94afd9c83e816ce114dcf9a67fa383e10fd127", + "node_id": "C_kwDOBvEA_toAKDFlOTRhZmQ5YzgzZTgxNmNlMTE0ZGNmOWE2N2ZhMzgzZTEwZmQxMjc", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-02T17:41:58Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T17:41:58Z" + }, + "message": "Merge pull request #16767 from ethereum/hotfix-noindex-revert\n\nHotfix: revert noindex for untranslated content", + "tree": { + "sha": "01dbd2042211352197cf90c1104ea71e65cae042", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/01dbd2042211352197cf90c1104ea71e65cae042" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/1e94afd9c83e816ce114dcf9a67fa383e10fd127", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLyTmCRC1aQ7uu5UhlAAAAU4QAHDZzQxe1ppYFycggWXOraf6\n8FWTNkPYws6ckeygrbsUz+PM/Di498KHZPQCefQa2zAOrK+NSVGgoCF0CJ9Wa3aZ\n1NOHQJUKgqgp5JkEIDJqx4mqzhKvTSgyeXly978wNSGvDGCEj+TdXeXcsXBxPp5T\nXWsMO0px1fP0xny/mLCaPslRBBLsiKeWDP9I9Kb4BVjXKCw4kRxxSVe9n3vRsuoe\nwGPoY1GYuZmuXT56jQYr+tY0zmThwbCG8Scw8J4+xf6iZpmwDgNojJt6fgeppux1\nzDMgGlsmtgKcsrttsTeF3j84zvOa7aMd5FwfTcS/SsUfSpVmzR1j0rUUCasG3ho2\n+0eImnWBLnIYtJGMdoHETvhY5E7zMevdk2jmva1h11JPo+t7lmzzZ9uGDzQmD0iq\ncXgMHLw4kD56W1Pn9EiZYSZdmNkHqfw3+u5WiZ6SAlvRlaif0oiyWF9sdAuPN9+a\n2T0RA3bmhnIS/uEmyPU8pBB5PPKP7gxF/gjk24jDbPFX526cCIeeDJ9cZNuiVbrj\njY7KX4NB4YaJKr1lD03/HVxvmHw/R/MPXH74AxWEuogLy/Y1HStqZ9pzFJ/k/JSS\nAO9Zc5j8NgMwJ6JSwlASLD38G895LGxnBy4mla+iOZXPYpeIvkIln0/0077pV2pw\nVB3hYaJUU04sr4xy//zh\n=Kzjb\n-----END PGP SIGNATURE-----\n", + "payload": "tree 01dbd2042211352197cf90c1104ea71e65cae042\nparent b696bf41ffddd3c7ee873d2ec2d70af31e4c819f\nparent 458914735aabe382828bfaaa519f232d10d6f77d\nauthor Pablo Pettinari 1764697318 +0100\ncommitter GitHub 1764697318 +0100\n\nMerge pull request #16767 from ethereum/hotfix-noindex-revert\n\nHotfix: revert noindex for untranslated content", + "verified_at": "2025-12-02T17:41:59Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/1e94afd9c83e816ce114dcf9a67fa383e10fd127", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/1e94afd9c83e816ce114dcf9a67fa383e10fd127", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/1e94afd9c83e816ce114dcf9a67fa383e10fd127/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f" + }, + { + "sha": "458914735aabe382828bfaaa519f232d10d6f77d", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/458914735aabe382828bfaaa519f232d10d6f77d", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/458914735aabe382828bfaaa519f232d10d6f77d" + } + ] + }, + { + "sha": "0fe865414ee7d66c35472b1d18a7dc749beb762b", + "node_id": "C_kwDOBvEA_toAKDBmZTg2NTQxNGVlN2Q2NmMzNTQ3MmIxZDE4YTdkYzc0OWJlYjc2MmI", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T17:31:03Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T17:31:03Z" + }, + "message": "Merge pull request #16763 from LottR079/docs-link-contributing-and-coc\n\nUpdate README.md", + "tree": { + "sha": "5ec6b6201ad649f891da5287159e512e8649a2bd", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/5ec6b6201ad649f891da5287159e512e8649a2bd" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/0fe865414ee7d66c35472b1d18a7dc749beb762b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLyJXCRC1aQ7uu5UhlAAAGlQQAAKZiEqif+yOTPjLiGJnN9b0\nJo44+GvUhvzt62MGJEsf/TSow0muAD9c+Tgnb78XH9pSqhmNLvBlk9sr0C+IbbaU\naxOo6NliKC1sh542kXx0ifEhcg9krLSQoTHixOjf+qDaQbfB/jGNFqlAw6cRa6Qv\nFe28nnYM9QvJLIie2RX3Y22NU2+s9qigmX1nZ1NOBRQ7C0S10rcaodPfEvaVTFr9\nNQouXPrQVaOUPUdXR7PoIM33u+vDmjMFfjHzV847sTXperaHwn35sIxGEKZyufqO\nlF77M7oozbV+R8swA8kyUTptMehZhCusQOGcbqAFXVyhfOT9N4jcL1WtlCwNwDt1\nfr9ma6MLFCUhYWUlXAuA2o5ehiYENQVhINNjk14F2HZ6IxkuRzz4qTY4hcQSToBl\npZFiuYZHV9lEkTzBOjBInKfuqU+r3tRF+Ap4M7psSHuEjkfI8IDsNAWmw6YQwoNH\nsunjmDhmDg1IktefdBtS+J5MrWRv9nrXstNvwMzBOpde1yJhJocfgC8pls9ap4+V\n/8ysmT5dy66LsFPv310PJVi8ozGT+U8uwzKfotUUDtICTI3leCjWBNAHX3CL0Lv4\nH6o+UnOJn5qDU02eUE5TthIY4rP4IgAcijavv5bWVbp5vC9jBIn8tnPMr2/0LkTA\ncA5EVsbPxGjpwflH1IJ7\n=ovnk\n-----END PGP SIGNATURE-----\n", + "payload": "tree 5ec6b6201ad649f891da5287159e512e8649a2bd\nparent b7b35c5dfc140030bece43af330f339d09870df9\nparent 9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa\nauthor Corwin Smith 1764696663 -0700\ncommitter GitHub 1764696663 -0700\n\nMerge pull request #16763 from LottR079/docs-link-contributing-and-coc\n\nUpdate README.md", + "verified_at": "2025-12-02T17:31:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0fe865414ee7d66c35472b1d18a7dc749beb762b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0fe865414ee7d66c35472b1d18a7dc749beb762b", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0fe865414ee7d66c35472b1d18a7dc749beb762b/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b7b35c5dfc140030bece43af330f339d09870df9", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b7b35c5dfc140030bece43af330f339d09870df9", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b7b35c5dfc140030bece43af330f339d09870df9" + }, + { + "sha": "9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa" + } + ] + }, + { + "sha": "9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa", + "node_id": "C_kwDOBvEA_toAKDlkYmI5MWE0MmVkOWQxOTY0ZjBlNmMzM2M2MjE0ZjMzMGEyYWE0YWE", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T17:30:49Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T17:30:49Z" + }, + "message": "Update README.md", + "tree": { + "sha": "17d40f07da7e100684eede1840db2af79d57a547", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/17d40f07da7e100684eede1840db2af79d57a547" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLyJJCRC1aQ7uu5UhlAAAGAQQAIZuT8U6eVavI00UkDmnnK3k\nBsqMFD8XEbbe6NaXjIHlStwDZ+Lk+xahZraRbZXLF0F9G9C0efWCJY7uiaBBgqyU\nycejVQBjiPj3hBcZYOt/Ndfkzh9nE5K/Kx/TCx45ZK+Usqn0MDWrtLdaPH/QRrEE\nkCuX6dxK04nh34BBHQp0rvNgfkrT5Na2lf5eXVxDraYRb+aaDzE3rE+kXhx4fxfM\nueNm8XX+z6a87W35heaqojIxAqkArRiMuqtp98hZqQQ+6uW+GUhaxJVYUcy3Tihp\n9krUnedxPEYZEP5KuCZir1zef9nfME/qtOD4I6szYZm1mZ/FUEUxHa4awAb/B5J0\nySaIw86AWHVjlUQzVGaHekNh9LWKZ3/0yY47O3y8efgU3WRu+94+Jg0Y5gP2BYQk\nqKx513IU1ySZQr5uLkhJT/Yh01vu17eoiMAJENCtJEluzPfgpPWzgiGy5uAmmeBs\nrsqHUhWEMpL5OTQuWxefvM395vwbPa5ymoPDIH4w19B6JiaNGgfEVTWHGxwelfWr\n6eBFn92ni7AYWl1uedEA0EdK+j3sZ5m8DqvQQaaCtdtNmSxpIHJ30pcC40TbcfsA\nU6SEnd7WjNVnwivCy7FTz1f9VSM9N2APEjnImZugx1JeMvASA8JYYOava993Qz1t\nnmppbEdzRoXw6be1k7ib\n=lD9J\n-----END PGP SIGNATURE-----\n", + "payload": "tree 17d40f07da7e100684eede1840db2af79d57a547\nparent e4f807df404072c50716c28a3d0ae97f1c773a3f\nauthor Corwin Smith 1764696649 -0700\ncommitter GitHub 1764696649 -0700\n\nUpdate README.md", + "verified_at": "2025-12-02T17:30:49Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9dbb91a42ed9d1964f0e6c33c6214f330a2aa4aa/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "e4f807df404072c50716c28a3d0ae97f1c773a3f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e4f807df404072c50716c28a3d0ae97f1c773a3f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e4f807df404072c50716c28a3d0ae97f1c773a3f" + } + ] + }, + { + "sha": "b7b35c5dfc140030bece43af330f339d09870df9", + "node_id": "C_kwDOBvEA_toAKGI3YjM1YzVkZmMxNDAwMzBiZWNlNDNhZjMzMGYzMzlkMDk4NzBkZjk", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-02T17:24:17Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T17:24:17Z" + }, + "message": "Merge pull request #16759 from ethereum/dependabot/npm_and_yarn/mdast-util-to-hast-13.2.1\n\nchore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1", + "tree": { + "sha": "66c56e1a85f4597256b162c9ea0a8b95531d26a0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/66c56e1a85f4597256b162c9ea0a8b95531d26a0" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/b7b35c5dfc140030bece43af330f339d09870df9", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLyDBCRC1aQ7uu5UhlAAA5GgQAK7Lu37mEnQIoC2qBPsq261U\nXBh//wz+dH2uQqe66qaeAQbtt79+ttj5GqNf5culpzhG3Egjv5u0xCuD8b14xSyq\nGnrXmhXno5i29C9yp3nzY/jHpxeGes2EKeh1IdbLPGQl+/JRo6N4rFc9rbcmGpLf\n6Ka1g4MWWk20FBXVX2XZFqeT/LJd4wOGG4OnLZ+nsf8+QbOxqOiY3qqrqesjKOG5\nVfWzb8x03CSkOo6abzvWs6a7gg2YoY+FXrk3ekaK3D1OXquu60Yyy73vXw5YfLiP\nQLTkxOenXAlfUDZa4tt1QsI0PRBpaB55PPqeP14J8A87vsnyXzXaV8q4jGc/aOQo\n+f9rpzXwfFjxs2IembW95AidYyRb7xKkuilAnBo1+v9bpFOjznwJxch4xUaRhUHS\nSRv8EIEVa8XZeOf6wT95XU/nBwhlBHp1q29xeEog1pBN0yCV3IvgtN7MP+2FOK+X\nyt0vVESLxxagQgdBQ2tH3icF6mHFadpLpK/GKOL8PR17DI8xIvg3z9aHe9V2hYjd\ndOcfNYI+QhEejrRhk7rAPcoTD3CY2G3lCPfJSkjpPIPqdDHKb8FM/2NxWZ/KeCc/\nonfGGaE1z/s5g4gv3BIERC1RwK+g97QtxvbjyiwFywJespqcoAgsFfIDPcEndHke\nLPVl6g/titNqWmncj8M6\n=ECcH\n-----END PGP SIGNATURE-----\n", + "payload": "tree 66c56e1a85f4597256b162c9ea0a8b95531d26a0\nparent 631da28ee76095ed33e29016def409186aba4967\nparent 4ccce846e3986c856c92ea4dd51db5809cd5557f\nauthor Corwin Smith 1764696257 -0700\ncommitter GitHub 1764696257 -0700\n\nMerge pull request #16759 from ethereum/dependabot/npm_and_yarn/mdast-util-to-hast-13.2.1\n\nchore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1", + "verified_at": "2025-12-02T17:24:17Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b7b35c5dfc140030bece43af330f339d09870df9", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b7b35c5dfc140030bece43af330f339d09870df9", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b7b35c5dfc140030bece43af330f339d09870df9/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "631da28ee76095ed33e29016def409186aba4967", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/631da28ee76095ed33e29016def409186aba4967" + }, + { + "sha": "4ccce846e3986c856c92ea4dd51db5809cd5557f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4ccce846e3986c856c92ea4dd51db5809cd5557f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/4ccce846e3986c856c92ea4dd51db5809cd5557f" + } + ] + }, + { + "sha": "458914735aabe382828bfaaa519f232d10d6f77d", + "node_id": "C_kwDOBvEA_toAKDQ1ODkxNDczNWFhYmUzODI4MjhiZmFhYTUxOWYyMzJkMTBkNmY3N2Q", + "commit": { + "author": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-02T16:02:42Z" + }, + "committer": { + "name": "Pablo Pettinari", + "email": "pettinarip@gmail.com", + "date": "2025-12-02T16:02:42Z" + }, + "message": "revert noindex for untranslated content", + "tree": { + "sha": "01dbd2042211352197cf90c1104ea71e65cae042", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/01dbd2042211352197cf90c1104ea71e65cae042" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/458914735aabe382828bfaaa519f232d10d6f77d", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/458914735aabe382828bfaaa519f232d10d6f77d", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/458914735aabe382828bfaaa519f232d10d6f77d", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/458914735aabe382828bfaaa519f232d10d6f77d/comments", + "author": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "pettinarip", + "id": 468158, + "node_id": "MDQ6VXNlcjQ2ODE1OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/468158?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pettinarip", + "html_url": "https://github.com/pettinarip", + "followers_url": "https://api.github.com/users/pettinarip/followers", + "following_url": "https://api.github.com/users/pettinarip/following{/other_user}", + "gists_url": "https://api.github.com/users/pettinarip/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pettinarip/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pettinarip/subscriptions", + "organizations_url": "https://api.github.com/users/pettinarip/orgs", + "repos_url": "https://api.github.com/users/pettinarip/repos", + "events_url": "https://api.github.com/users/pettinarip/events{/privacy}", + "received_events_url": "https://api.github.com/users/pettinarip/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f" + } + ] + }, + { + "sha": "9fe1834eb4374e7314e898965f30c095b8afd443", + "node_id": "C_kwDOBvEA_toAKDlmZTE4MzRlYjQzNzRlNzMxNGU4OTg5NjVmMzBjMDk1YjhhZmQ0NDM", + "commit": { + "author": { + "name": "Kosy135", + "email": "ugwukosisochukwu135@gmail.com", + "date": "2025-12-02T13:36:46Z" + }, + "committer": { + "name": "Kosy135", + "email": "ugwukosisochukwu135@gmail.com", + "date": "2025-12-02T13:36:46Z" + }, + "message": "docs: fix grammar and style issues in smart contract anatomy page", + "tree": { + "sha": "4d937ec14194e56658c41c3f640539c10ad45a2c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4d937ec14194e56658c41c3f640539c10ad45a2c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/9fe1834eb4374e7314e898965f30c095b8afd443", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9fe1834eb4374e7314e898965f30c095b8afd443", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9fe1834eb4374e7314e898965f30c095b8afd443", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9fe1834eb4374e7314e898965f30c095b8afd443/comments", + "author": { + "login": "KosiChinaza", + "id": 161971597, + "node_id": "U_kgDOCad9jQ", + "avatar_url": "https://avatars.githubusercontent.com/u/161971597?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KosiChinaza", + "html_url": "https://github.com/KosiChinaza", + "followers_url": "https://api.github.com/users/KosiChinaza/followers", + "following_url": "https://api.github.com/users/KosiChinaza/following{/other_user}", + "gists_url": "https://api.github.com/users/KosiChinaza/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KosiChinaza/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KosiChinaza/subscriptions", + "organizations_url": "https://api.github.com/users/KosiChinaza/orgs", + "repos_url": "https://api.github.com/users/KosiChinaza/repos", + "events_url": "https://api.github.com/users/KosiChinaza/events{/privacy}", + "received_events_url": "https://api.github.com/users/KosiChinaza/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "KosiChinaza", + "id": 161971597, + "node_id": "U_kgDOCad9jQ", + "avatar_url": "https://avatars.githubusercontent.com/u/161971597?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KosiChinaza", + "html_url": "https://github.com/KosiChinaza", + "followers_url": "https://api.github.com/users/KosiChinaza/followers", + "following_url": "https://api.github.com/users/KosiChinaza/following{/other_user}", + "gists_url": "https://api.github.com/users/KosiChinaza/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KosiChinaza/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KosiChinaza/subscriptions", + "organizations_url": "https://api.github.com/users/KosiChinaza/orgs", + "repos_url": "https://api.github.com/users/KosiChinaza/repos", + "events_url": "https://api.github.com/users/KosiChinaza/events{/privacy}", + "received_events_url": "https://api.github.com/users/KosiChinaza/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/27a9024cccac17bdefe7e0dd1bddf0612824e0a7", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/27a9024cccac17bdefe7e0dd1bddf0612824e0a7" + } + ] + }, + { + "sha": "daf8103b7a1298501c30aac073418d80310e98bf", + "node_id": "C_kwDOBvEA_toAKGRhZjgxMDNiN2ExMjk4NTAxYzMwYWFjMDczNDE4ZDgwMzEwZTk4YmY", + "commit": { + "author": { + "name": "Stefan", + "email": "22667037+qu0b@users.noreply.github.com", + "date": "2025-12-02T12:58:36Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T12:58:36Z" + }, + "message": "Update index.md", + "tree": { + "sha": "05a4ce9cc00828b8acd2b0f48ac9ae228e3db9f4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/05a4ce9cc00828b8acd2b0f48ac9ae228e3db9f4" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/daf8103b7a1298501c30aac073418d80310e98bf", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLuJ8CRC1aQ7uu5UhlAAAxFMQAHHTDvfWCK23YSJcgYYhXB/k\nK0xsu/Y8ljnc8xTt1X/yFCWSJdptUP5AvTVAod72wz5atNZ6c9nF5dFh1BPCFoU1\nilCDrMhGRC81dmxdP3hTGKEaoaOz+htcMN+mDubhIsG1tWmpSbx2Z0oEQzA/BF/S\nwwOmY987Q/VtOQ+neWCL/QO3QUF3rcKBVjDU/xIYtOp3cy/lj7J0aZJLMfZkRkm3\nF0wwWETGxofk/qoQK7XU3DV4IV0R2858yjlVohjOemC26vEW1rgnO0IrvCOqlh3s\nHAOQP0Z42zvbEe9SnYlgSD5LQ7RsJiIEh0zjN8umRFQJVlENAyphGq9q/Cza1p27\nTUZ0zAijcKGE7u2KHX6CCtZ7mW8J8RZHGOJPvSGCecJrYoVqYKX1vNbwImbYy1GE\nuLfXjRb1ORcEjBMotJ5xXR6UCoKG0CkwMgTftpaHX6InrrUD7QNfy/P4m0pRxw1g\nppsuZ5VndN1EbX2V+crqXXCLPddZ8bPU4jxYvvfcdweS80uvtwkeQoWB5w33VmC1\n5j22WVWKNmJA23N+kJlfoTosqCb/pWtsI6lnzdGuZteHKKmyBfmBrQCVlK8lZK4I\n9g1SQuQlrYTLqq+4tvKPeB1yp6bLn64HIvY9MKDZ1MCsv8b9y3PWlAUAKlofjjjJ\nLpp8AtQTMgOBoEZi0kFk\n=R4Sd\n-----END PGP SIGNATURE-----\n", + "payload": "tree 05a4ce9cc00828b8acd2b0f48ac9ae228e3db9f4\nparent 4e9a48d555238b8fca12b645010d95e9f00fe2ac\nauthor Stefan <22667037+qu0b@users.noreply.github.com> 1764680316 +0100\ncommitter GitHub 1764680316 +0100\n\nUpdate index.md", + "verified_at": "2025-12-02T12:58:37Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/daf8103b7a1298501c30aac073418d80310e98bf", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/daf8103b7a1298501c30aac073418d80310e98bf", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/daf8103b7a1298501c30aac073418d80310e98bf/comments", + "author": { + "login": "qu0b", + "id": 22667037, + "node_id": "MDQ6VXNlcjIyNjY3MDM3", + "avatar_url": "https://avatars.githubusercontent.com/u/22667037?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/qu0b", + "html_url": "https://github.com/qu0b", + "followers_url": "https://api.github.com/users/qu0b/followers", + "following_url": "https://api.github.com/users/qu0b/following{/other_user}", + "gists_url": "https://api.github.com/users/qu0b/gists{/gist_id}", + "starred_url": "https://api.github.com/users/qu0b/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/qu0b/subscriptions", + "organizations_url": "https://api.github.com/users/qu0b/orgs", + "repos_url": "https://api.github.com/users/qu0b/repos", + "events_url": "https://api.github.com/users/qu0b/events{/privacy}", + "received_events_url": "https://api.github.com/users/qu0b/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "4e9a48d555238b8fca12b645010d95e9f00fe2ac", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4e9a48d555238b8fca12b645010d95e9f00fe2ac", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/4e9a48d555238b8fca12b645010d95e9f00fe2ac" + } + ] + }, + { + "sha": "4e9a48d555238b8fca12b645010d95e9f00fe2ac", + "node_id": "C_kwDOBvEA_toAKDRlOWE0OGQ1NTUyMzhiOGZjYTEyYjY0NTAxMGQ5NWU5ZjAwZmUyYWM", + "commit": { + "author": { + "name": "Stefan", + "email": "22667037+qu0b@users.noreply.github.com", + "date": "2025-12-02T12:57:20Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T12:57:20Z" + }, + "message": "Update index.md\n\nnot obvious where on the launchpad consolidations can be made", + "tree": { + "sha": "20b3a7458f0547de74c9ec1ba6406afe0054e3e6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/20b3a7458f0547de74c9ec1ba6406afe0054e3e6" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/4e9a48d555238b8fca12b645010d95e9f00fe2ac", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLuIwCRC1aQ7uu5UhlAAAhh4QAHsR1mxwKH9UBdHi1m6wghqt\nfHDvXxLvaEdNt5kwfk7g1btsFs6niglQEJNEiCY6olbPcnuqxEjKH9Bu6BQlO0Tp\nKOkbCjPqbISv6LsMe5anC7LorxNop39dc49krKMDuqTFR3/Qoc5jrqniKg2QVUNK\n+nUTOjfupdP/YZaeqyaC/7CC4CN4gposo4A+vlj+yoYZpbn9reEUpozO9TCBVYED\nZIjbufr/NvL59VTD55WjHyOrwwI2rHREo2X07EpitYmDjTRXluvYcBUQfvdvf2r9\nx1arVxbLsDyx61+qhNYCGWzpZKLIJs6p9jsnK5+oE40dIWkmVmuBhU6dX7Dn08qo\n4YCK8UQm5ultNz5bK5Udrn6oHzcCnqJZSbjkbtdLXjgbT1ZRnz6ToQjidI7jJb8p\no22ZoYdRlszexb7Bs3LK4ZpaTN4NCvaUPWwUY/+k2EtnJnMQxaKVlblaW2/bqYPL\ngP0vbHHrvCAkY7VQgzz+b0T2Lf0ryZm9AhPaf4Kd1g1QYrKCR3Ud5GiGud5tzN74\n9Ue3spfOsv5lOOgUQIxMpRJoScx8A3aaOWusgipmysMsL3XRGYfh0g7lIxkNGw46\nn7qKQeXC7NlZNLQRHDSeaO64lkyintjEE7EgiEmVL1R952kj6Hn3dhQIwE+egEo+\nmj3xxECRDLJ/tySIBi03\n=HJHv\n-----END PGP SIGNATURE-----\n", + "payload": "tree 20b3a7458f0547de74c9ec1ba6406afe0054e3e6\nparent 631da28ee76095ed33e29016def409186aba4967\nauthor Stefan <22667037+qu0b@users.noreply.github.com> 1764680240 +0100\ncommitter GitHub 1764680240 +0100\n\nUpdate index.md\n\nnot obvious where on the launchpad consolidations can be made", + "verified_at": "2025-12-02T12:57:21Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4e9a48d555238b8fca12b645010d95e9f00fe2ac", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/4e9a48d555238b8fca12b645010d95e9f00fe2ac", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4e9a48d555238b8fca12b645010d95e9f00fe2ac/comments", + "author": { + "login": "qu0b", + "id": 22667037, + "node_id": "MDQ6VXNlcjIyNjY3MDM3", + "avatar_url": "https://avatars.githubusercontent.com/u/22667037?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/qu0b", + "html_url": "https://github.com/qu0b", + "followers_url": "https://api.github.com/users/qu0b/followers", + "following_url": "https://api.github.com/users/qu0b/following{/other_user}", + "gists_url": "https://api.github.com/users/qu0b/gists{/gist_id}", + "starred_url": "https://api.github.com/users/qu0b/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/qu0b/subscriptions", + "organizations_url": "https://api.github.com/users/qu0b/orgs", + "repos_url": "https://api.github.com/users/qu0b/repos", + "events_url": "https://api.github.com/users/qu0b/events{/privacy}", + "received_events_url": "https://api.github.com/users/qu0b/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "631da28ee76095ed33e29016def409186aba4967", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/631da28ee76095ed33e29016def409186aba4967" + } + ] + }, + { + "sha": "e4f807df404072c50716c28a3d0ae97f1c773a3f", + "node_id": "C_kwDOBvEA_toAKGU0ZjgwN2RmNDA0MDcyYzUwNzE2YzI4YTNkMGFlOTdmMWM3NzNhM2Y", + "commit": { + "author": { + "name": "LottR079", + "email": "ephraimkantor561@gmail.com", + "date": "2025-12-02T11:28:46Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T11:28:46Z" + }, + "message": "Update README.md\n\ndocs: link README to contributing and code of conduct", + "tree": { + "sha": "71de7a41257556e1c4c57791fd374bb7950bcbd9", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/71de7a41257556e1c4c57791fd374bb7950bcbd9" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/e4f807df404072c50716c28a3d0ae97f1c773a3f", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLs1uCRC1aQ7uu5UhlAAAk1cQABl3MDg+5qbfb7DXr9L3ccuU\nNDsdzhAFWr6eJwVypKBicMWktBTZLzf3Zg9BeYjNk9MFkXlesDoZTI1Mey3kpwXR\n5Ju539swOIlBlfNFUnFlvNm8+lTPcejH9antci7qHpsPdplmiIVIAswgmXHqD4E9\n/WZ0qzpgQmQGfty0Rns/MZvvpuqO+jzWltmmQ7aVDMtthtapned4+GMRCl9tYBR+\nsdJAhW0oufRbbNFgrUREpUWTF2I0gr+ce7vmmnouRFV0SGBlBdsG1wfOJarjYBvk\nuOsTGd0FX3rrddeltxuhMtd9OT2yP78+FO4f0UcRJIg41kiWOnugygkG344Grmtv\nG9jZv8PqebMh6BOU61x3rfFz2cZlPKwT2haWIInt9SUfliVulxAfbi1Jh4wfisWi\nQpgfowurhXZZEr5R9k05hsD8cwI1MqfpidyFidAeidD59iraChCkdX/F1YjZXZWu\ngQGL8XtqY/5XflyFMO+mOJ8d6SfGh1syZz4IFwZ1/5uWzPqYV+lG+OM3w6N3lpqZ\nGxIwNcL7N+b1tgIL+13313cX5HTOfFdb1/xIiBlE4wIY/91skCimGQ3dBQBRs+kM\n/nKRP5rNJISk5HgXGcEpCa42QySV9rBU8cr1QpR6fDdX/VzMGKM8qGpK3y0FRCRH\ngqxdgyBkFpSyKb/GhB37\n=vtd6\n-----END PGP SIGNATURE-----\n", + "payload": "tree 71de7a41257556e1c4c57791fd374bb7950bcbd9\nparent 631da28ee76095ed33e29016def409186aba4967\nauthor LottR079 1764674926 +0100\ncommitter GitHub 1764674926 +0100\n\nUpdate README.md\n\ndocs: link README to contributing and code of conduct", + "verified_at": "2025-12-02T11:28:47Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e4f807df404072c50716c28a3d0ae97f1c773a3f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/e4f807df404072c50716c28a3d0ae97f1c773a3f", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/e4f807df404072c50716c28a3d0ae97f1c773a3f/comments", + "author": { + "login": "LottR079", + "id": 20522868, + "node_id": "MDQ6VXNlcjIwNTIyODY4", + "avatar_url": "https://avatars.githubusercontent.com/u/20522868?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/LottR079", + "html_url": "https://github.com/LottR079", + "followers_url": "https://api.github.com/users/LottR079/followers", + "following_url": "https://api.github.com/users/LottR079/following{/other_user}", + "gists_url": "https://api.github.com/users/LottR079/gists{/gist_id}", + "starred_url": "https://api.github.com/users/LottR079/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/LottR079/subscriptions", + "organizations_url": "https://api.github.com/users/LottR079/orgs", + "repos_url": "https://api.github.com/users/LottR079/repos", + "events_url": "https://api.github.com/users/LottR079/events{/privacy}", + "received_events_url": "https://api.github.com/users/LottR079/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "631da28ee76095ed33e29016def409186aba4967", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/631da28ee76095ed33e29016def409186aba4967" + } + ] + }, + { + "sha": "43005337feeb39dae6a4a47b8be56b222453d960", + "node_id": "C_kwDOBvEA_toAKDQzMDA1MzM3ZmVlYjM5ZGFlNmE0YTQ3YjhiZTU2YjIyMjQ1M2Q5NjA", + "commit": { + "author": { + "name": "tomasgrusz", + "email": "tomas@grusz.dev", + "date": "2025-12-02T10:41:05Z" + }, + "committer": { + "name": "tomasgrusz", + "email": "tomas@grusz.dev", + "date": "2025-12-02T10:41:05Z" + }, + "message": "feat(wallet): add Uniswap Wallet", + "tree": { + "sha": "9452fa0f701af0ce1ce776532867e19ef1bca30f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/9452fa0f701af0ce1ce776532867e19ef1bca30f" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/43005337feeb39dae6a4a47b8be56b222453d960", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/43005337feeb39dae6a4a47b8be56b222453d960", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/43005337feeb39dae6a4a47b8be56b222453d960", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/43005337feeb39dae6a4a47b8be56b222453d960/comments", + "author": { + "login": "tomasgrusz", + "id": 85355882, + "node_id": "MDQ6VXNlcjg1MzU1ODgy", + "avatar_url": "https://avatars.githubusercontent.com/u/85355882?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tomasgrusz", + "html_url": "https://github.com/tomasgrusz", + "followers_url": "https://api.github.com/users/tomasgrusz/followers", + "following_url": "https://api.github.com/users/tomasgrusz/following{/other_user}", + "gists_url": "https://api.github.com/users/tomasgrusz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tomasgrusz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tomasgrusz/subscriptions", + "organizations_url": "https://api.github.com/users/tomasgrusz/orgs", + "repos_url": "https://api.github.com/users/tomasgrusz/repos", + "events_url": "https://api.github.com/users/tomasgrusz/events{/privacy}", + "received_events_url": "https://api.github.com/users/tomasgrusz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "tomasgrusz", + "id": 85355882, + "node_id": "MDQ6VXNlcjg1MzU1ODgy", + "avatar_url": "https://avatars.githubusercontent.com/u/85355882?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tomasgrusz", + "html_url": "https://github.com/tomasgrusz", + "followers_url": "https://api.github.com/users/tomasgrusz/followers", + "following_url": "https://api.github.com/users/tomasgrusz/following{/other_user}", + "gists_url": "https://api.github.com/users/tomasgrusz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tomasgrusz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tomasgrusz/subscriptions", + "organizations_url": "https://api.github.com/users/tomasgrusz/orgs", + "repos_url": "https://api.github.com/users/tomasgrusz/repos", + "events_url": "https://api.github.com/users/tomasgrusz/events{/privacy}", + "received_events_url": "https://api.github.com/users/tomasgrusz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "9d31f934d08ed432dba77ddae225257a56cab935", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9d31f934d08ed432dba77ddae225257a56cab935", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9d31f934d08ed432dba77ddae225257a56cab935" + } + ] + }, + { + "sha": "9d31f934d08ed432dba77ddae225257a56cab935", + "node_id": "C_kwDOBvEA_toAKDlkMzFmOTM0ZDA4ZWQ0MzJkYmE3N2RkYWUyMjUyNTdhNTZjYWI5MzU", + "commit": { + "author": { + "name": "tomasgrusz", + "email": "tomas@grusz.dev", + "date": "2025-12-02T10:32:38Z" + }, + "committer": { + "name": "tomasgrusz", + "email": "tomas@grusz.dev", + "date": "2025-12-02T10:32:38Z" + }, + "message": "feat(wallet): add Uniswap Wallet", + "tree": { + "sha": "223fb907921240e85eb087ec86afab4c31aeecb6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/223fb907921240e85eb087ec86afab4c31aeecb6" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/9d31f934d08ed432dba77ddae225257a56cab935", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9d31f934d08ed432dba77ddae225257a56cab935", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9d31f934d08ed432dba77ddae225257a56cab935", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9d31f934d08ed432dba77ddae225257a56cab935/comments", + "author": { + "login": "tomasgrusz", + "id": 85355882, + "node_id": "MDQ6VXNlcjg1MzU1ODgy", + "avatar_url": "https://avatars.githubusercontent.com/u/85355882?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tomasgrusz", + "html_url": "https://github.com/tomasgrusz", + "followers_url": "https://api.github.com/users/tomasgrusz/followers", + "following_url": "https://api.github.com/users/tomasgrusz/following{/other_user}", + "gists_url": "https://api.github.com/users/tomasgrusz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tomasgrusz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tomasgrusz/subscriptions", + "organizations_url": "https://api.github.com/users/tomasgrusz/orgs", + "repos_url": "https://api.github.com/users/tomasgrusz/repos", + "events_url": "https://api.github.com/users/tomasgrusz/events{/privacy}", + "received_events_url": "https://api.github.com/users/tomasgrusz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "tomasgrusz", + "id": 85355882, + "node_id": "MDQ6VXNlcjg1MzU1ODgy", + "avatar_url": "https://avatars.githubusercontent.com/u/85355882?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tomasgrusz", + "html_url": "https://github.com/tomasgrusz", + "followers_url": "https://api.github.com/users/tomasgrusz/followers", + "following_url": "https://api.github.com/users/tomasgrusz/following{/other_user}", + "gists_url": "https://api.github.com/users/tomasgrusz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tomasgrusz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tomasgrusz/subscriptions", + "organizations_url": "https://api.github.com/users/tomasgrusz/orgs", + "repos_url": "https://api.github.com/users/tomasgrusz/repos", + "events_url": "https://api.github.com/users/tomasgrusz/events{/privacy}", + "received_events_url": "https://api.github.com/users/tomasgrusz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "631da28ee76095ed33e29016def409186aba4967", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/631da28ee76095ed33e29016def409186aba4967" + } + ] + }, + { + "sha": "4ccce846e3986c856c92ea4dd51db5809cd5557f", + "node_id": "C_kwDOBvEA_toAKDRjY2NlODQ2ZTM5ODZjODU2YzkyZWE0ZGQ1MWRiNTgwOWNkNTU1N2Y", + "commit": { + "author": { + "name": "dependabot[bot]", + "email": "49699333+dependabot[bot]@users.noreply.github.com", + "date": "2025-12-02T03:02:21Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-02T03:02:21Z" + }, + "message": "chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1\n\nBumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.\n- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)\n- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: mdast-util-to-hast\n dependency-version: 13.2.1\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ", + "tree": { + "sha": "66c56e1a85f4597256b162c9ea0a8b95531d26a0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/66c56e1a85f4597256b162c9ea0a8b95531d26a0" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/4ccce846e3986c856c92ea4dd51db5809cd5557f", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLla9CRC1aQ7uu5UhlAAAHWEQAJReJIvlT/YWDvymMotN4lYi\na5CgAHL4aDJjQ6gHBXzuU/Jb+7uIEZu5kkmQUHDdVEVN8HpTXAUStFFPIWejG6jr\njcQbiTUjJZsPUhEmd18PqY8TDMRHyVeUdPLtUjOdk2FK9NVU9R7H6D3CjozldoMA\n7K6TxHIvAJ/3CJ9aaL5i+jl6g1o+vtX0VdW5Cwpi0Oz18RoddO1KXb+r3GqiTR9n\no1k1QV+NjMMmu/A4mussqaEpfNvHJB4kYLxNsXbFp0k0/f+tKR7IeA0IiKxTUlct\nBSk0liZADDrm2IA/H0j4GP7KPjwqcAUOrHorcsnnPzbfnD1RpcQSt/l2dgNc5SFc\nM0VbZKLb8m9XtBOvBdSL78wG0cAfy251U0YeZyQWV+ZG7FWPvYJEQrj9RURwEMXl\neHSJSqt27Ob6+G/5KrIJYgCyq8637dYQ0/we1Wm2LvWNV6qH15xp4lpCJmj3cjB9\nwC79PU5fCxsUuDJ0FBbZR9qpG1ueDAsJUDAMgWr+vF2G/c/yU3/FAa+6mfrGOjdQ\noudyvVyQ8lnahxWvSAOWRx1nPsObIfgIWUwKSQ42SC1pMfYv0KGvtbPbxSrjvOCg\ngXTffu62yYyxrLLNwEg8euriDA/zkwCJZ4bdbSpnGXIf1odPJVwXCNR4ZvM+S8hc\nDj3sOrPBB5wFMbpMnwwU\n=o79H\n-----END PGP SIGNATURE-----\n", + "payload": "tree 66c56e1a85f4597256b162c9ea0a8b95531d26a0\nparent 631da28ee76095ed33e29016def409186aba4967\nauthor dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1764644541 +0000\ncommitter GitHub 1764644541 +0000\n\nchore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1\n\nBumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.\n- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)\n- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: mdast-util-to-hast\n dependency-version: 13.2.1\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ", + "verified_at": "2025-12-02T03:02:22Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4ccce846e3986c856c92ea4dd51db5809cd5557f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/4ccce846e3986c856c92ea4dd51db5809cd5557f", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/4ccce846e3986c856c92ea4dd51db5809cd5557f/comments", + "author": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "631da28ee76095ed33e29016def409186aba4967", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/631da28ee76095ed33e29016def409186aba4967" + } + ] + }, + { + "sha": "0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de", + "node_id": "C_kwDOBvEA_toAKDBiNTI4ZThmNTNkN2MyZWEzYTI1NmRlOWMyOTAwYjFjYzcyYmE1ZGU", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T00:39:47Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T00:39:47Z" + }, + "message": "patch: lowercase all incoming paths", + "tree": { + "sha": "9e2c346e77e5f5da2c48023a1403fea51619f905", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/9e2c346e77e5f5da2c48023a1403fea51619f905" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkuNVkACgkQ9N587fAS\nn7b/uhAAkWSNmrXuo+G+AyddvXHT1PSJErghO0DXSjrfjDDWMdq8UxX63jsfSOJf\na8b52J0gmCicKQSr7pbQGVzu5/g+ScYEpgz7sjxa7KKI6d+a8FYWCRYAA7CSqBNi\n0YuPDNHjbDRbDda5DtohpOFsMh1X7Wb1bbchBVRcI/8LPeCB03eQizbRWAduC+vQ\n1zNTnf6K9bUnjXMnbi7RyRXTuUFobGsiMNl0hPtxLzxx/whUS1bF/61Ru6pPuJAU\n12QzteIuoMngfIR145mbii1RBG/M2f/+0KytCR4DLUU6A/nDfZPQ/idWt9mCAKON\nR4UERg6Gzv0MuYn7cfrMF3Lh5FQwe2zD9zFNK5FUGrYtY/ZfAs+3/HM9RbP9TOHB\nO30F/FRXM2PBmfeCxgfymT4v7wKvWJnE3bie8+NrBKn0iyQycvtyfTrsPe4zDIrR\nXfixaYbZD6twzrial/Ny/NFst8Sbn9E9aHBh3V3zhvVCFWXCRKiU3PX/JAfU1+k1\nZfL/DuGnugWdiV9VnVhFBnzQwVfDDYw4NeslnRvZ7W/Wkk0bnHulmq+0YUaGEejt\nP6NxvbgXa9lQdUKqVA9sGWNnTtpJZU/Gz7icKDf96w17j3NgdLWrvhUKcGGxw5Rl\ndb+0B73BXlMYKsNSyECxsSCvAUyFHT9PNj4ynYo3SLGd0A++gGc=\n=iFm6\n-----END PGP SIGNATURE-----", + "payload": "tree 9e2c346e77e5f5da2c48023a1403fea51619f905\nparent 3b68b3a50615e764a98baf54d5a75a1f7925ded8\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764635987 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764635987 -0300\n\npatch: lowercase all incoming paths\n", + "verified_at": "2025-12-02T00:40:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0b528e8f53d7c2ea3a256de9c2900b1cc72ba5de/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "3b68b3a50615e764a98baf54d5a75a1f7925ded8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3b68b3a50615e764a98baf54d5a75a1f7925ded8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3b68b3a50615e764a98baf54d5a75a1f7925ded8" + } + ] + }, + { + "sha": "3b68b3a50615e764a98baf54d5a75a1f7925ded8", + "node_id": "C_kwDOBvEA_toAKDNiNjhiM2E1MDYxNWU3NjRhOThiYWY1NGQ1YTc1YTFmNzkyNWRlZDg", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T00:38:15Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T00:38:29Z" + }, + "message": "patch: no and ph handlers to top", + "tree": { + "sha": "b4bac41308abca839f32ae56af9158149dab138a", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/b4bac41308abca839f32ae56af9158149dab138a" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/3b68b3a50615e764a98baf54d5a75a1f7925ded8", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkuNQgACgkQ9N587fAS\nn7ZuZxAAkKtWc8lrLqBTrHextKsBD+GX6nCCVs4sDJYToPV+clnlEat94nFJBhBD\nZzeX9GZbBaJrM02t+7PocMY6lz03OYAd7E7GyPBLO7WOpGGQCiOJGxaRfAhKSRpJ\nxy1BeL8ED8/h8yt8knT7hWR9ZGSc1jNKgmzbsqGoLtR3lZzDpQgfEAE65QVSha8o\nniXFl/zzUlFN+j6ZVkvjJ48tX777NocTr0lshBTIQ/0V+GCmuUkv42Y211r2Nzdq\nDcpSQ2qTl6WlnNL7HrrqLS7Av733ZcbdVustGltaONRAlv43y/PEK8hcn4rEcIUp\nSPeFfgmIxX1+t70etXybHs/MNANdNJ59Q1yS6x5HcP8MtGsGxYUa5XGfcXfXoeRl\nASovmj8xQ6JdCSU7qC23NbNav2CuLGRre0G42QkzwgmiAHRGZbFX418e6Qf8VmQ3\nWnZUwYkQ7sAiF05zbYNGEjtCiqh5syDBw9f7ppislSuopxbYRT1Yjdbs9glCWwU2\nZr3GL6ELw35SOaUUTgHrEn+XtdKopqQxJnZE3M5/N1Gju6aCbpRZa1iNZu01o2iL\nryRvKVpzzWDpURy8DaaRpPru4uZgTRPFf1/PZLkj/tX+XIe8gld6zVISUjEVND5Y\nY0VhldMj3p/puvOBLRm1T8DgI/UdyxOZVoJ9XDGxNX+k5nbhN5U=\n=WWaz\n-----END PGP SIGNATURE-----", + "payload": "tree b4bac41308abca839f32ae56af9158149dab138a\nparent ecba9a440a4fc0932adee865316f7ca9e3b7160a\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764635895 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764635909 -0300\n\npatch: no and ph handlers to top\n", + "verified_at": "2025-12-02T00:40:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3b68b3a50615e764a98baf54d5a75a1f7925ded8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3b68b3a50615e764a98baf54d5a75a1f7925ded8", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3b68b3a50615e764a98baf54d5a75a1f7925ded8/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "ecba9a440a4fc0932adee865316f7ca9e3b7160a", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ecba9a440a4fc0932adee865316f7ca9e3b7160a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ecba9a440a4fc0932adee865316f7ca9e3b7160a" + } + ] + }, + { + "sha": "ecba9a440a4fc0932adee865316f7ca9e3b7160a", + "node_id": "C_kwDOBvEA_toAKGVjYmE5YTQ0MGE0ZmMwOTMyYWRlZTg2NTMxNmY3Y2E5ZTNiNzE2MGE", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T00:37:23Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-02T00:37:23Z" + }, + "message": "patch: nesting redirects\n\nShould 404 if not available", + "tree": { + "sha": "dae0de26ae0920c227c3f6a871010dc1fe54dfab", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/dae0de26ae0920c227c3f6a871010dc1fe54dfab" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/ecba9a440a4fc0932adee865316f7ca9e3b7160a", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkuNMUACgkQ9N587fAS\nn7a4NA/+PgubeefFP+65otC2Xz6xiyNiblHmpL9irg0g9FWH66Vksukpay+ZkVJL\nnk4Nk+Cq+cLSAiHvPghLHodr/p+mAY5aNHofYtm3QW/NTaUdNpwTa3ZL3GZRK/gZ\nFOoCYcQ/52HQzcHbNsBRCUJvUFIuXUAXvhcR0ZN4CKKa+PhpHOAADvHlGv65hb6C\nweKBD06OmZJ+zAeW2uyPxt0SeLrJou6Rw4troxKVRlkZnpwLryuGydnr9IoiugnC\nEk7Tz1/cIqVpkA3G0yXPSzRZwnyYVABucksM2Rl08xvddDqeed4/Yi0JioRbnLxY\nxKBGcYfP3xsSrmLY97jKUcwTsMec6OiO62azj6bCdfiHqcsGcsF7QOlgcuAUEjOb\noJ+5qAvlnnrfUR6w01ayLa0wDZBpMcWP59RUT+N2+olBCZuPUUb8NrL8YhtgbTeR\n4i0RIf4jY8qXKzurSa1NPhUWzGhs/dSvKUrvZlISojZqFTVbF+jHcpu4/Hv+gHs8\ng3Ra9HkMUWyqtu27EJV+ndVYhDSpPDo/i1CVVAXJMhZSfW36/vSRqgFE47lYGXsd\nsZkiCcMoZUZe4fIcFGJ21Adp9ppm39ZQzWdODK/l6CRbAUNFOHnsv4dnhZoLV3zQ\nF2K2h+9381X5gjBsDCsjADP5CH6DwIKt4ZU96nooqHpuPTyrEkU=\n=LbBr\n-----END PGP SIGNATURE-----", + "payload": "tree dae0de26ae0920c227c3f6a871010dc1fe54dfab\nparent 0965f70376d71afac4654f7ae118393125223535\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764635843 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764635843 -0300\n\npatch: nesting redirects\n\nShould 404 if not available\n", + "verified_at": "2025-12-02T00:40:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ecba9a440a4fc0932adee865316f7ca9e3b7160a", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ecba9a440a4fc0932adee865316f7ca9e3b7160a", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ecba9a440a4fc0932adee865316f7ca9e3b7160a/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "0965f70376d71afac4654f7ae118393125223535", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0965f70376d71afac4654f7ae118393125223535", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0965f70376d71afac4654f7ae118393125223535" + } + ] + }, + { + "sha": "631da28ee76095ed33e29016def409186aba4967", + "node_id": "C_kwDOBvEA_toAKDYzMWRhMjhlZTc2MDk1ZWQzM2UyOTAxNmRlZjQwOTE4NmFiYTQ5Njc", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T22:27:55Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T22:27:55Z" + }, + "message": "Merge pull request #16599 from ethereum/codex/implement-content-changes-for-identity-pages\n\n[DRAFT] - Add Bhutan NDI case study to decentralized identity pages", + "tree": { + "sha": "23861dd85ead9988f9c063fc0d6125017f567738", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/23861dd85ead9988f9c063fc0d6125017f567738" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/631da28ee76095ed33e29016def409186aba4967", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLhZrCRC1aQ7uu5UhlAAAVksQABL6fuoJCqgjqxQtX5RZkRQ3\n9zy1LhFAxo8AFods+HPLDvIR+MrKO2kvpq8ks96jz9+5FatpRT4+dhtLdFEJGa1w\nwyug3tTCASr4esC1XL6F6WG+njq1cIekeDYJO6YuzwD6hlBJyZm6/2l0NpxUUAqp\nEwCH16VyE9iqQxzAB8VgJEmwIunvXhmuGub+3/skTnku2C5doXhtZtieNDwvZny9\ns4HHcZsJ9J6o/eMTWi5w1g1na22Rkg8R2ILJNvw1JRFzjdwNj/Y7Akpx8jZGwtYz\nAPaOugecJCKG0n8x0aBJSkET8z92nmiHOHfZpbjFQiRD93Gq0Wm/kyMRw/yMTDdi\n+eCeCnclwGxHaHP2w0mfhcfohv50vYbuq9kK/BFWSMhiFfBw4DzlsuvWCL4sT0Gn\ne7mid718u3jGgoeFfzrTgWRbx8Kd2cusmDJ+4wcBtguVHhD1rz1wVr1lhsri8JaG\n5VfJmNIrrZ26+fXuIpCorINcw9j5HEQHQD2uVy77LVD6/KFtOgwh5Q/Gbp70X/B+\n8uAeg9cSEWokudHtEadEW3P6+JIP0huERmfNtmSW9Hmwkl1wvsgES6Tki1ik1U7O\nEHS+8riq6wSA6FbPwKkaC7mM7akCAHvgAqSrf2X9dCxJalXRJakOkrkCaEdl7Ryl\n+vYxIySxe38PqpghvZ2p\n=Gvt0\n-----END PGP SIGNATURE-----\n", + "payload": "tree 23861dd85ead9988f9c063fc0d6125017f567738\nparent 0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08\nparent 9071c84fe6073c278e7ca0a5f03c5cdebd22fda5\nauthor Corwin Smith 1764628075 -0700\ncommitter GitHub 1764628075 -0700\n\nMerge pull request #16599 from ethereum/codex/implement-content-changes-for-identity-pages\n\n[DRAFT] - Add Bhutan NDI case study to decentralized identity pages", + "verified_at": "2025-12-01T22:27:56Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/631da28ee76095ed33e29016def409186aba4967", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/631da28ee76095ed33e29016def409186aba4967/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08" + }, + { + "sha": "9071c84fe6073c278e7ca0a5f03c5cdebd22fda5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9071c84fe6073c278e7ca0a5f03c5cdebd22fda5", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9071c84fe6073c278e7ca0a5f03c5cdebd22fda5" + } + ] + }, + { + "sha": "0965f70376d71afac4654f7ae118393125223535", + "node_id": "C_kwDOBvEA_toAKDA5NjVmNzAzNzZkNzFhZmFjNDY1NGY3YWUxMTgzOTMxMjUyMjM1MzU", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-01T21:16:38Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-01T21:16:38Z" + }, + "message": "fix(i18n): use named single-segment `/:locale` prefix", + "tree": { + "sha": "08b1538a97d3963ff68fb41de2d58a771efbae7b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/08b1538a97d3963ff68fb41de2d58a771efbae7b" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/0965f70376d71afac4654f7ae118393125223535", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmkuBbkACgkQ9N587fAS\nn7Zu1xAAwW6HN8OnxzxXyOkXWzUoIfdjapLEmd9QpTQ19cYbXxej7E3dk3BVnTYQ\nNudkVu1wlCHaoguk2FqQQRra0k6AEhiIUlq0PczDkP9oNhyia/GO8zxZOTd/Utbf\n5zLAdxPTU+wQtb+pQE+cqEAtOrzfZCPktpwMGTc8FJgBHmzmMre/tG8Xrc90Iw1Z\nYpLks8rWlZ+OE5J6MXtFRaVrGgYJ78J0Pa396fOsXKC2jdN6FeRYWFa/d921Jhjd\nbqUkwQIivsDWx+mhJGXwu0VQTrFyhKa4UhV7a/foCnUXSPLD/fBXd0t7A2u0kfu9\ndvvPSIWkSFruxYv64YENMjLwonxkaJ+QnkfgIYyfZIFqPj0H7Ou2WukWWe834/Ga\nTE37I3Ok4jWqwD1FoG9nTHoanPBqALi0pcJtrO9GV4p8PEUH39IhMWyDla4CD7jO\nc1EEv7cMIjRTQRywN9GaHjKnAjdOaPus1S3RHCZFu0k8eGOtHoitCq9Wbl1eWcV3\nOSpN+yjHg2TSNNF0vRvnNIdiKFMW/de9mjccaW9fqek/J1F7cE1c/6HAvfsrQQL3\nN0VWQd8+IH50swOtOX6EhOYQlgyEtYgnJVfnTNGfKrmyAfA6yczp+qA2SEe+e7r8\nofJlof3RDOx4wd8MBd981+1VPZS37x+ER0Bpka/LAk/mbgRYBow=\n=GXZo\n-----END PGP SIGNATURE-----", + "payload": "tree 08b1538a97d3963ff68fb41de2d58a771efbae7b\nparent a9d0310295808953e182a6f0e235c6e745c2a027\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764623798 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764623798 -0300\n\nfix(i18n): use named single-segment `/:locale` prefix\n", + "verified_at": "2025-12-01T21:16:49Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0965f70376d71afac4654f7ae118393125223535", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0965f70376d71afac4654f7ae118393125223535", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0965f70376d71afac4654f7ae118393125223535/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "a9d0310295808953e182a6f0e235c6e745c2a027", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a9d0310295808953e182a6f0e235c6e745c2a027", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a9d0310295808953e182a6f0e235c6e745c2a027" + } + ] + }, + { + "sha": "29b1ffd3eadda232ce6992806cd1a6b9343710fd", + "node_id": "C_kwDOBvEA_toAKDI5YjFmZmQzZWFkZGEyMzJjZTY5OTI4MDZjZDFhNmI5MzQzNzEwZmQ", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T21:10:43Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T21:10:43Z" + }, + "message": "fix transation issue fusakabanner countdown", + "tree": { + "sha": "ee0de407b56fc61d6a9c4d333b9e2a9259637bb8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/ee0de407b56fc61d6a9c4d333b9e2a9259637bb8" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/29b1ffd3eadda232ce6992806cd1a6b9343710fd", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/29b1ffd3eadda232ce6992806cd1a6b9343710fd", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/29b1ffd3eadda232ce6992806cd1a6b9343710fd", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/29b1ffd3eadda232ce6992806cd1a6b9343710fd/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f" + } + ] + }, + { + "sha": "a61bad1c6a419b568e25b8b5680b1aa1bf76db6e", + "node_id": "C_kwDOBvEA_toAKGE2MWJhZDFjNmE0MTliNTY4ZTI1YjhiNTY4MGIxYWExYmY3NmRiNmU", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T20:25:56Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T20:25:56Z" + }, + "message": "remove devconnect banner on /apps page", + "tree": { + "sha": "2eaffa5e6971f3bee2257d0369672624c8be8741", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/2eaffa5e6971f3bee2257d0369672624c8be8741" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/a61bad1c6a419b568e25b8b5680b1aa1bf76db6e", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a61bad1c6a419b568e25b8b5680b1aa1bf76db6e", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a61bad1c6a419b568e25b8b5680b1aa1bf76db6e", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a61bad1c6a419b568e25b8b5680b1aa1bf76db6e/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08" + } + ] + }, + { + "sha": "0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "node_id": "C_kwDOBvEA_toAKDBjZjJmOGNiYWYxYTIzZmQ2MTYyZTNiMTRhYjdiZjEwZGUwOGNjMDg", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:59:16Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:59:16Z" + }, + "message": "Merge pull request #16725 from LottR079/meta-content-suggestion-template\n\nchore: add content suggestion issue template", + "tree": { + "sha": "0118d6434d9cc6efc7e1a3e51f8f96fc6dc3e262", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/0118d6434d9cc6efc7e1a3e51f8f96fc6dc3e262" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLfOUCRC1aQ7uu5UhlAAALFYQAG0X1J0j+c788Mxw9eRo/R1o\nHQrrxXxuDq3lQvl522KN5UiLUzW2CYOo8lX5yGMszvXZoDDwcpJrEC3Q6IPCELVy\nW+kF/Blp2RkBS8tiFPherX0j7HOhoFhOxYguoeT1sijpc1EOdd0/bXe9xvzMhqWh\nxqw5kY4BPHzhDyry+ievPOIaLRnXDxV+iB03xvqEO2aj5yYDlDXjTHFsZJTYJeCu\nmsSTZo0qauUJH9+TboKLhxVnG+OnAxIZ5mX2dcI+WzXzPERd7YfQY0uzUOJX06SF\nors44y8wuXNaAmvOHjHbicY6ccQoHuCn+KY+3fFObXhsH839LKE6hsaYNeWyMF9a\nGGA6j0L/RHK9Yy0D1ltPvu9+rU20Vc74STqFeqNiUpFqIhGm3nBISpnDe0kiDdvt\nr3awo4mlDkuAw0KMoE3sQoYHyZ1/jteECEgj+Uja5cF/bAQtZzC5AiBmnJNbKUaE\nrUynpajj7a2zXBmNtyG7tIODarnskHhZloV4v52xRP3bYTv8PdegMyQ1ecX8wOla\nDXH+VIEosupMbTXJ1TI+3wF53XZFz2CCpaK+3K6hxmM1RJlnsnnQ9dQvP/edwB5B\nBFqzmIaKDSTebAMsTORu36FrmNDz6XiHIiOLHBkybbybwJTITnuBEUDnUzvrJX2k\nxonXUHABD2QdQUppMlsn\n=d5fB\n-----END PGP SIGNATURE-----\n", + "payload": "tree 0118d6434d9cc6efc7e1a3e51f8f96fc6dc3e262\nparent 712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b\nparent aaea342407e7879bdf04bdf4b73de68ca7f24076\nauthor Corwin Smith 1764619156 -0700\ncommitter GitHub 1764619156 -0700\n\nMerge pull request #16725 from LottR079/meta-content-suggestion-template\n\nchore: add content suggestion issue template", + "verified_at": "2025-12-01T19:59:16Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0cf2f8cbaf1a23fd6162e3b14ab7bf10de08cc08/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b" + }, + { + "sha": "aaea342407e7879bdf04bdf4b73de68ca7f24076", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaea342407e7879bdf04bdf4b73de68ca7f24076", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaea342407e7879bdf04bdf4b73de68ca7f24076" + } + ] + }, + { + "sha": "712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b", + "node_id": "C_kwDOBvEA_toAKDcxMmI5OTc3Nzg1YmZhNDVlMGEyZDFhNWM4ZjBiMzVlZjRhNjQ3N2I", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:59:03Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:59:03Z" + }, + "message": "Merge pull request #16756 from ethereum/all-contributors/add-LottR079\n\ndocs: add LottR079 as a contributor for content", + "tree": { + "sha": "4d0232c1cfeaff6d3d145a9f04f498f991c992de", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4d0232c1cfeaff6d3d145a9f04f498f991c992de" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLfOHCRC1aQ7uu5UhlAAAPaEQACdrWWGgF9y7AuO73J9wPcFq\nyUS9yKKf46YJkFbm8QXKvGTyFy7tsyTVsyX6Ar7myf8YyAxil7S+wq5IAWbj52r8\naIcGe02aNAOV3ptz8QJBmHbj8mfg9rzFETzHywgGaBv7u92BI4/FTLqxsKdlSAYp\n6qF+D3mnHamOGTvMh+jDwA8OcrDtYeNoEg7PJe8ghjWiKwbI7Xl2PtsAiHKQM60l\nFQv88TwlSTpajDtZj8weFNBMOPlRs3PRHkaZrRipbDQCeqwrVN1pdwisltlr1xb6\nw86IDTgHPYL237WpWrLauyvKDtlIgcGI9D32cF9fkO/2QOh8OP6gsYfSkLd7mvnN\nAAchG36kIQAuYFQOfEcwZ9RFy/wx8sjUXh+qhTN4VJc0K1yEJOJJV1QDBRMy+au5\n6kUoFt8RGkbf5mHY8yjh9JbfU1MVkISGZrEGCjaooeNR0MRlKmKsxPKS82JzvH+k\nBdGy0GompfJnNSPkBP7LwmC22r0ocGr/dAXbhuvnIQP3NJflOB0l92YgtN+hFleo\nYG4BERHfCytDxZK+6zArVfM4Z2aII+AEpFXqHNOmsYG0XzhcMrwktnPfCSkrMFCW\nJyD/W5cVbUGlEbgagjGlVSw832p/LGM+XdZ4dR8hN62lWb33bknEay9iWzTvSmEV\nMoCzD1CWvjFmCNIJuhb6\n=pG3g\n-----END PGP SIGNATURE-----\n", + "payload": "tree 4d0232c1cfeaff6d3d145a9f04f498f991c992de\nparent 74be6fbf1a7e91aeb77d04e9572a42132b75bfa6\nparent dce5ce36c923eac1eec357c0e532c45702d98c03\nauthor Corwin Smith 1764619143 -0700\ncommitter GitHub 1764619143 -0700\n\nMerge pull request #16756 from ethereum/all-contributors/add-LottR079\n\ndocs: add LottR079 as a contributor for content", + "verified_at": "2025-12-01T19:59:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/712b9977785bfa45e0a2d1a5c8f0b35ef4a6477b/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6" + }, + { + "sha": "dce5ce36c923eac1eec357c0e532c45702d98c03", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/dce5ce36c923eac1eec357c0e532c45702d98c03", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/dce5ce36c923eac1eec357c0e532c45702d98c03" + } + ] + }, + { + "sha": "dce5ce36c923eac1eec357c0e532c45702d98c03", + "node_id": "C_kwDOBvEA_toAKGRjZTVjZTM2YzkyM2VhYzFlZWMzNTdjMGU1MzJjNDU3MDJkOThjMDM", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-01T19:58:46Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:58:46Z" + }, + "message": "docs: update .all-contributorsrc [skip ci]", + "tree": { + "sha": "4d0232c1cfeaff6d3d145a9f04f498f991c992de", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4d0232c1cfeaff6d3d145a9f04f498f991c992de" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/dce5ce36c923eac1eec357c0e532c45702d98c03", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLfN2CRC1aQ7uu5UhlAAA/RsQAFXRp6/ut5YMu+IgAPNboLCj\nUOIwhXiGAZe2GQWZ91HorFQOVd9OKbV9XAr1ljntqXjoN/1PC7diQf7LNT2FXjk4\noSf4Gi8QaariZ6inHDfGT+Kk8+6F9H7XX09miBmMF4jsbEEe3lCtiIhHnjISj3K/\nEfTRYabYBHZdXD2MwlVM/WHuLk1vlg2oAVP+TeCkTDBopNiWyWp/cfwkzAPsPjHb\n6qOfTIqir6B/X60x5xiggz0izV4XBFkhEmVPkRvvz0IpWw0C610vzBmIXGB1DHSM\n1WieTIj61jcTwezJMY0z5BqF3gl9PluRWk9RLUKHXCTkr8CbcfsKObaE+7rg0+Cw\nywcVOXcHrW48cbp015oFjM9spTx0JYSGL+GLH0q/Hk3hNTsCNx7rUdiZ4OyM13+e\nYxSrYlPNJ0B4JPa36y4veHyUClKD9QdOrjkD2curobTN6lT1Kdnj9Md2HgJAXDu7\nCPtt6rFDcII2V5ZG7oCm5Z5r0ei5Rs38oio3TzG11b8xsZzDNEoewAnyK+po68AZ\nRD45+uICfnYyu2ml0tqyFynDV8dYD5/KcgVZGIZg+lHiD+CZ4p+EMMmMmP+duI+S\nu6OoF3i9reQ3N6Qz2SxGIzN4xVZtyC//RZbs4voaQh9/F52HIh/B0XZ6Obw7v2Ao\n9Vqr9SbDSew+2quzp9qp\n=DHOf\n-----END PGP SIGNATURE-----\n", + "payload": "tree 4d0232c1cfeaff6d3d145a9f04f498f991c992de\nparent ff18bfda6bc43a6859e453620dc99d3fcb81bb87\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764619126 +0000\ncommitter GitHub 1764619126 +0000\n\ndocs: update .all-contributorsrc [skip ci]", + "verified_at": "2025-12-01T19:58:47Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/dce5ce36c923eac1eec357c0e532c45702d98c03", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/dce5ce36c923eac1eec357c0e532c45702d98c03", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/dce5ce36c923eac1eec357c0e532c45702d98c03/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "ff18bfda6bc43a6859e453620dc99d3fcb81bb87", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ff18bfda6bc43a6859e453620dc99d3fcb81bb87", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ff18bfda6bc43a6859e453620dc99d3fcb81bb87" + } + ] + }, + { + "sha": "ff18bfda6bc43a6859e453620dc99d3fcb81bb87", + "node_id": "C_kwDOBvEA_toAKGZmMThiZmRhNmJjNDNhNjg1OWU0NTM2MjBkYzk5ZDNmY2I4MWJiODc", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-01T19:58:45Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:58:45Z" + }, + "message": "docs: update README.md [skip ci]", + "tree": { + "sha": "616ebc5a65ebcf48a06c6f3870b88b8d2c6fd333", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/616ebc5a65ebcf48a06c6f3870b88b8d2c6fd333" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/ff18bfda6bc43a6859e453620dc99d3fcb81bb87", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLfN2CRC1aQ7uu5UhlAAAn80QAE3VgPchlWpOzjgG776g629X\nX2bJ+eJWZq5uBeuS7CUjfKXlUKX42pBVRH6nCYTkoIm+2ibMsjGEl1kplpnakm3b\noaCKrWdaQfUDiuFfu0kEm55+RzsiHY4rSJLTwOXFLI/7olmU+aL7CPhDexLwbdOj\n4l+Gst5y8W5eXBJmaThp+rM+YF5wPMA0jc9IB95pjuoCj5E7J5jGyzAfXpN+eJ1x\nWru90a5LJ1Wi7oiMkorcukO5n64aQ5wU757lSPv3xrkcVrz/OVBTPrrkW6glyWtJ\n9AMab2AolMJoM5xbMEDJL5vRuPE2Zasi9BWTgwfO4puJq0Bf7DTZg3zVWk2tP+Kn\n0R4vq3OIMNspHUJ9FTinMgB5nrFSAJN/LVwyk7xwQj+7v5IfMowGmRLhfdVFKhrK\nOWrleZFtrohv8puOjC63LsR7OaL6sFTSpU+Q+r+FyNBt761DopppEVan/0KikYdT\n9dwVNeHr9JJPsidOMV0hUAiAsu00laQgR4WPrQUNIxFteqEX4JjCINO1l2wYtXHF\nXn9eH3Y4jBgtfbPD0yogAyZ6ePc+9zYCD1fL3YOLboK89s87onulCKg+4zaOryKT\n/z5MxyEwZgRR9GNN+u8dsgq0jD/WcxU5wEYO7fI7TYwc0TRlC/oKoGcTQ+ZBGjhI\nCvocb9YZ0I/Yph9mpP00\n=TcNk\n-----END PGP SIGNATURE-----\n", + "payload": "tree 616ebc5a65ebcf48a06c6f3870b88b8d2c6fd333\nparent 74be6fbf1a7e91aeb77d04e9572a42132b75bfa6\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764619125 +0000\ncommitter GitHub 1764619125 +0000\n\ndocs: update README.md [skip ci]", + "verified_at": "2025-12-01T19:58:46Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ff18bfda6bc43a6859e453620dc99d3fcb81bb87", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ff18bfda6bc43a6859e453620dc99d3fcb81bb87", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ff18bfda6bc43a6859e453620dc99d3fcb81bb87/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6" + } + ] + }, + { + "sha": "aaea342407e7879bdf04bdf4b73de68ca7f24076", + "node_id": "C_kwDOBvEA_toAKGFhZWEzNDI0MDdlNzg3OWJkZjA0YmRmNGI3M2RlNjhjYTdmMjQwNzY", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:57:13Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:57:13Z" + }, + "message": "cleanup", + "tree": { + "sha": "e242f9c01c3cb01010fb359c68adf0cd06c19045", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/e242f9c01c3cb01010fb359c68adf0cd06c19045" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/aaea342407e7879bdf04bdf4b73de68ca7f24076", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaea342407e7879bdf04bdf4b73de68ca7f24076", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/aaea342407e7879bdf04bdf4b73de68ca7f24076", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/aaea342407e7879bdf04bdf4b73de68ca7f24076/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "a250732d20bb5d1a7ef453bc1ed4119e66003637", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a250732d20bb5d1a7ef453bc1ed4119e66003637", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a250732d20bb5d1a7ef453bc1ed4119e66003637" + } + ] + }, + { + "sha": "74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "node_id": "C_kwDOBvEA_toAKDc0YmU2ZmJmMWE3ZTkxYWViNzdkMDRlOTU3MmE0MjEzMmI3NWJmYTY", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:15:39Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:15:39Z" + }, + "message": "Merge pull request #16733 from ethereum/crowdin-december-el-20251201044839477\n\nchore: import translations for el", + "tree": { + "sha": "2bfd7dc19c0716b8744a81b5993202cc4a1e7197", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/2bfd7dc19c0716b8744a81b5993202cc4a1e7197" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLelbCRC1aQ7uu5UhlAAAfqgQAEH0E4K593LI+5BWj7bOEiR0\ngkEqhuNc0MxOF2GmPNkMWse4sjngFiCl9FplM63kduIvwzemdRTMqzpIqunm9AGR\nQXT4QHgcwmscIqsLj+GMSKFOxkgHIf1ltXckV+lHkdTENdLAKY1pXVVS2g93uDg0\n4Am/mq/PD+DsdUIWvAOiSVnlIO4pkdswknsBIiz44YXz6VR7QjuVymGK19gfDh/l\n6G9upn9jfowhcr6HBBZDpYCzByIT1vO/EBcVwEKyqLD9krUVjQlUhL2P9ljcAlt6\n6wzleH6WNO3CnP8JKosUbxTGm9TVXsVDZWy62Ja62to4gVY7x7p8+QqS9R3tnvw1\nJb9ExUlmhyyNO0kpyx0vJEkM0NUmhOg1ChIsU8mUwORTIH6bVhChdrFoer5O3QTs\n7ZUiuKdaBYHle2FYL6XZ4IOAqJcU0tW3qOOO8xJ4tiHGLgluTUpy2kwVJpW/HBPo\n4qTK7LOunUKZAQl/RziwYykY8QSo2/14II+qnFqGS9Yd35KM9+jVSqDGR1HoWwmN\nQ+e7e06TZfH66zf6tNRu9x9jT7/C7/m7nbGiMxHYQ/FMH7Wt7zjb4zBcT9BtfKPC\nLEW8cdf1AyveG4fV4QJO7+yQLn/DyY1l2FQrFEFAXr6ozgrik5JWnM0A65yA4kCd\nzu69uuWDlZvs5gHEhQVn\n=X6Em\n-----END PGP SIGNATURE-----\n", + "payload": "tree 2bfd7dc19c0716b8744a81b5993202cc4a1e7197\nparent c2c750910be33efd7626588f78797bf1a6861039\nparent 3130604e4f1ed7dd21743f89d3ed284542b1fc26\nauthor Corwin Smith 1764616539 -0700\ncommitter GitHub 1764616539 -0700\n\nMerge pull request #16733 from ethereum/crowdin-december-el-20251201044839477\n\nchore: import translations for el", + "verified_at": "2025-12-01T19:15:39Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/74be6fbf1a7e91aeb77d04e9572a42132b75bfa6/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "c2c750910be33efd7626588f78797bf1a6861039", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/c2c750910be33efd7626588f78797bf1a6861039", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/c2c750910be33efd7626588f78797bf1a6861039" + }, + { + "sha": "3130604e4f1ed7dd21743f89d3ed284542b1fc26", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3130604e4f1ed7dd21743f89d3ed284542b1fc26", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3130604e4f1ed7dd21743f89d3ed284542b1fc26" + } + ] + }, + { + "sha": "c2c750910be33efd7626588f78797bf1a6861039", + "node_id": "C_kwDOBvEA_toAKGMyYzc1MDkxMGJlMzNlZmQ3NjI2NTg4Zjc4Nzk3YmYxYTY4NjEwMzk", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:15:13Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:15:13Z" + }, + "message": "Merge pull request #16731 from ethereum/crowdin-december-ar-20251201044828027\n\nchore: import translations for ar", + "tree": { + "sha": "48bf4cb3b94439821ba12c0275664cccf69bbe34", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/48bf4cb3b94439821ba12c0275664cccf69bbe34" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/c2c750910be33efd7626588f78797bf1a6861039", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLelBCRC1aQ7uu5UhlAAARCkQAImMAJ89T/E3giHHGAIWZKrt\n5bWLy6iyi7lPkV3hjguFfQuOkQEwtuM407hIAYT4jk58nHXYFW4rADxK/dnM0D2t\nnonOz7SrIH1Z8bNcGVSmYmkdveX1n9X8G56zezxOnUDtARtX7cj6GeJBFik/UQzm\nbPl1WVmh1J2fDcRAK9c2MlMOIYnWla8xQ47tVgszJXu+Dma/Z2tif9Hzf+e/5C/2\n2QCqd+477Gb+X0LURNCQ0HS24pP7oIYWO6GoKSOQU/7IPPNuaaIlOhyu/0BGiME7\nfY0OhrHa98a6n0f7CaQc1/vyXJHy1sA50C+wWq26O3zJplD1AvGSH0jS8jkNYUds\nwZNt//Gyh+ygyuniGBc9Qg7tk+eDLHzkr6tDs+D43xPk6Lr+8f0+ieUpwgRP+iNU\n/ZLFxFgnE/dNUhPrey7I51hVeNmGYzfIIWLlLfHjwrNJauTVZC/7YtQYc9GSTq5H\n9bO78v5sh5IKt2CTLrEZTAspzySwL8NsWeE63l4ZOjU53d/CKOJLf0EQxaEJC153\niYfdFBYjIonkz6l2I7lvOwZd9ZY9kHXFxey0RF6zbMWE9RjmgMhZ+0Xso8xS6w2l\nUR43zJifzuGju1g6rA2ANuNLSpj/gzz0RA40GGYMud6FQto5/dhONIgOh573a0lb\nO6pNH5U1081kWOM6yTFp\n=jyJR\n-----END PGP SIGNATURE-----\n", + "payload": "tree 48bf4cb3b94439821ba12c0275664cccf69bbe34\nparent 6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb\nparent 109d5ce592d16403930db43d3daf323497320b73\nauthor Corwin Smith 1764616513 -0700\ncommitter GitHub 1764616513 -0700\n\nMerge pull request #16731 from ethereum/crowdin-december-ar-20251201044828027\n\nchore: import translations for ar", + "verified_at": "2025-12-01T19:15:14Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/c2c750910be33efd7626588f78797bf1a6861039", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/c2c750910be33efd7626588f78797bf1a6861039", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/c2c750910be33efd7626588f78797bf1a6861039/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb" + }, + { + "sha": "109d5ce592d16403930db43d3daf323497320b73", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/109d5ce592d16403930db43d3daf323497320b73", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/109d5ce592d16403930db43d3daf323497320b73" + } + ] + }, + { + "sha": "6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb", + "node_id": "C_kwDOBvEA_toAKDZjOWQxZDRjM2E3M2EzNzZlOGM4ZDc0ZjA4N2NmOGVjN2M0OGU4ZmI", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:07:31Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:07:31Z" + }, + "message": "Merge pull request #16719 from jorgesumle/dev\n\n[Text] Uppercase proper nouns of social apps (Farcaster and Zora)", + "tree": { + "sha": "0e0ba7fc6e3cbe695a6b5cc4dde32aee97ba03e4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/0e0ba7fc6e3cbe695a6b5cc4dde32aee97ba03e4" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLedzCRC1aQ7uu5UhlAAAnLwQAE3Wgj44AWVy3jbcUmHZhLKo\n/XP6crGbZn9UgVSdD6ZNnvJkFdV3Rx8YMxE3KpEk5OuOkIkSbqIHfRq2NB5rSbb+\nTdmjvsUQ3GRDK0EYoJ9klgEvhZpBV3E+heA+7+CkRBunESadlaWa+P+qlLZloVDL\nAUMYEAQxEjrZkI+50i9SjxK8a6rgJ5a7fAkDJymnPsLfPSks5H9KJRJzWD873hhN\nPX+oHrNSV2eK3VyxJiVkGaKkbs1JekFS/D7W1Vgj1e53xTL7MtTL0E8Z0EsAV1/l\nGC1yit5C8jzlEGlOiPj0WegyVgbRZuLO2uJLEwzjy6B4jvE8SZsk70nEtofqTvzW\n8fOPhzyxTpmMWfiN/ioaTucWm3AgWoS/QHrWX9aAJ6spwHTWKYqq6VE/vnDYBuE3\nexcD8Ewv6SoqOUsJUdWl3nvw92IBDC3avIJcTNFmFkEy5SVQC/c4VMF4Vzf/8ApK\ncKmfvbWcEkuzb40lkD3RNJnUfGqkoK/QLPFLzwyPK/shVGfHki9VVE6GTLG5Z/54\nIdNY5gOCeTkfr9GxeEpGWobrpODd2oLsLhsV/JnNazEaqGo2DBfzJ+qTWtWePPwU\n/C6fT+Ba3rv+bBJErc+IxAx8Hbu/g7SlcxKZLXyv1+I7KNCvVMQ11mcyesbD2v5l\n5QIaHa01A9YlZ7qjt2lI\n=6B+8\n-----END PGP SIGNATURE-----\n", + "payload": "tree 0e0ba7fc6e3cbe695a6b5cc4dde32aee97ba03e4\nparent 9a3ccb4b4c9348d3026c9e4598cd5898059c03a0\nparent 0ff566014e094021e76e00abd32b4768406df059\nauthor Corwin Smith 1764616051 -0700\ncommitter GitHub 1764616051 -0700\n\nMerge pull request #16719 from jorgesumle/dev\n\n[Text] Uppercase proper nouns of social apps (Farcaster and Zora)", + "verified_at": "2025-12-01T19:07:32Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6c9d1d4c3a73a376e8c8d74f087cf8ec7c48e8fb/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "9a3ccb4b4c9348d3026c9e4598cd5898059c03a0", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9a3ccb4b4c9348d3026c9e4598cd5898059c03a0", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9a3ccb4b4c9348d3026c9e4598cd5898059c03a0" + }, + { + "sha": "0ff566014e094021e76e00abd32b4768406df059", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/0ff566014e094021e76e00abd32b4768406df059", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/0ff566014e094021e76e00abd32b4768406df059" + } + ] + }, + { + "sha": "9a3ccb4b4c9348d3026c9e4598cd5898059c03a0", + "node_id": "C_kwDOBvEA_toAKDlhM2NjYjRiNGM5MzQ4ZDMwMjZjOWU0NTk4Y2Q1ODk4MDU5YzAzYTA", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:06:25Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:06:25Z" + }, + "message": "Merge pull request #16755 from ethereum/all-contributors/add-iovoid\n\ndocs: add iovoid as a contributor for content", + "tree": { + "sha": "9803b663766398a82c1495602dc7192671b1b61e", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/9803b663766398a82c1495602dc7192671b1b61e" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/9a3ccb4b4c9348d3026c9e4598cd5898059c03a0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLecxCRC1aQ7uu5UhlAAA8eQQADnx7eMjD63zATnEcTnU7/K/\nfQjIR+MmUzSa/Vlkd6sh001us1E6IM3oMo7lR9hV69bGCK/1ZyNBpr6gZPLzp5vh\n9AhpxtQ1ojg1j1AgAimvkquKhfC2SIhAV4TFNTTgcpf3xiN2WbAArvuQmafI/q8S\nEM6lDhGmyg6h6bPmugulwyIUSX3CyrxVSEGfolKacfGyATUOZl4LoZj5cv+GPGfi\nPE4UH7sQLMHP6aV2GTFb6DL0m7R9a3cHGRz6tATG/DX97VCrrndDuVdNh+r+50s4\n8ruGqCkouS0evUJkapj1jziekai8sfvX0Z0NyaOmCUtLLp4ZAT6KwaHEUp7x33Do\nL1zfvuxzgBP1tcSNtC4dELR6AWmPwAsgNUwjxUtfBzXyfN7G/CoDTPW+kBce4SCW\nLzuyAqUeQxj5otQa7LR/m2ghAuW25K4pCcFs11a5SrP1BWYXDN9kzKjblziwr+my\nbdBDAsqtFR0hp/YaFd5BCuIBktzs80IkK8YiDy31e+S3cE16Od1GEeZ5tuMwL6f5\nvneqB1g4wVaX8tOKbNZd0Syc7iMP0upryVdjYM55ORy2ADZpZZZG4tJNYoQoYojd\n/SspN/7gKB/slsfkjKeWd03LtA/y2g9rm8p96pXlfTwju4N5Msqzai2PDSmgLz8u\n16PA6TXLlzb81IohqHaj\n=um9m\n-----END PGP SIGNATURE-----\n", + "payload": "tree 9803b663766398a82c1495602dc7192671b1b61e\nparent c58b7489e94db2201b2790ee9369c4345d0a7696\nparent 5ebc6729250d8491d53497f121192d2d4a6c54dc\nauthor Corwin Smith 1764615985 -0700\ncommitter GitHub 1764615985 -0700\n\nMerge pull request #16755 from ethereum/all-contributors/add-iovoid\n\ndocs: add iovoid as a contributor for content", + "verified_at": "2025-12-01T19:06:26Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9a3ccb4b4c9348d3026c9e4598cd5898059c03a0", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/9a3ccb4b4c9348d3026c9e4598cd5898059c03a0", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/9a3ccb4b4c9348d3026c9e4598cd5898059c03a0/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "c58b7489e94db2201b2790ee9369c4345d0a7696", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/c58b7489e94db2201b2790ee9369c4345d0a7696", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/c58b7489e94db2201b2790ee9369c4345d0a7696" + }, + { + "sha": "5ebc6729250d8491d53497f121192d2d4a6c54dc", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5ebc6729250d8491d53497f121192d2d4a6c54dc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5ebc6729250d8491d53497f121192d2d4a6c54dc" + } + ] + }, + { + "sha": "c58b7489e94db2201b2790ee9369c4345d0a7696", + "node_id": "C_kwDOBvEA_toAKGM1OGI3NDg5ZTk0ZGIyMjAxYjI3OTBlZTkzNjljNDM0NWQwYTc2OTY", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T19:06:15Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:06:15Z" + }, + "message": "Merge pull request #16717 from iovoid/patch-2\n\nUpdate gas limit in documentation", + "tree": { + "sha": "5c7115ec9c5d97d347a4001b222dfd5b44735d89", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/5c7115ec9c5d97d347a4001b222dfd5b44735d89" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/c58b7489e94db2201b2790ee9369c4345d0a7696", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLecnCRC1aQ7uu5UhlAAAuN0QAHkFex0rEjhH2M1Qtpp/ZpBD\nDczbJ9uc2/jgStJvtolB7sFX2yaiWXLK6wZSNjzF2rguVh8lQymd1xfOxA7XTI3y\nAsjFE3Ys7Se6b9fam2SeaNaZcvxOIdcwMiQwQ744lDj5NKOIixwrF3owzX96WfuK\nUpxEMZFN/Ff0owPXnvIPQIi3nBnBx0VzEWwki0R4kDOfr9+j2hGWwmtUP3UskrOq\n3y5RHfKbpnpYywc073mDmWrex1K3ego4DHPLYBd0x0RmpOGhzc0pTeZ+QC6D/mzg\nejILIKGqQpuMZoOr48Litgt7O2r5mJ5pOcnzE+kajBnpFk9Z4LluydY28IRADJcD\n6i8t58IEvH6I97/z+fvzl4RKFghHeaI8GfB3alRyO+4/NcROJ2kjsxxzCFhiXaQE\n0wibkjWR/xmcT7U2a1SqrJNgNo4c0Xl8bND9cbsveYNsO6PidQEIG+oIiARMVe4T\nfxcQmSHVqrabk32b3r3jOF/g99BHUkOjvlNcAwQtTw4ogS9Y1dYVJTNl4Fiiuckv\n7vMJUcs+5sBise/utU2Bx/9ee5hOJEWnGK8u3SbsiGrUbaL7DXWCkFV5Zp2XwQQF\n3DIGxhHD3nBRNniLVi80erevjkWQXQ2TBNoK1Deqxss/WBkeVeiw/MUflt8WobR+\n9Bl+Mg5VzCneb7M0nNfB\n=tNIj\n-----END PGP SIGNATURE-----\n", + "payload": "tree 5c7115ec9c5d97d347a4001b222dfd5b44735d89\nparent ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5\nparent 88a278e3f6a767748c980fd85bb588ff16ead44f\nauthor Corwin Smith 1764615975 -0700\ncommitter GitHub 1764615975 -0700\n\nMerge pull request #16717 from iovoid/patch-2\n\nUpdate gas limit in documentation", + "verified_at": "2025-12-01T19:06:16Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/c58b7489e94db2201b2790ee9369c4345d0a7696", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/c58b7489e94db2201b2790ee9369c4345d0a7696", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/c58b7489e94db2201b2790ee9369c4345d0a7696/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5" + }, + { + "sha": "88a278e3f6a767748c980fd85bb588ff16ead44f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/88a278e3f6a767748c980fd85bb588ff16ead44f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/88a278e3f6a767748c980fd85bb588ff16ead44f" + } + ] + }, + { + "sha": "5ebc6729250d8491d53497f121192d2d4a6c54dc", + "node_id": "C_kwDOBvEA_toAKDVlYmM2NzI5MjUwZDg0OTFkNTM0OTdmMTIxMTkyZDJkNGE2YzU0ZGM", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-01T19:06:13Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:06:13Z" + }, + "message": "docs: update .all-contributorsrc [skip ci]", + "tree": { + "sha": "1933270fbcec72fc145c14433a95c688b699f7a6", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/1933270fbcec72fc145c14433a95c688b699f7a6" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/5ebc6729250d8491d53497f121192d2d4a6c54dc", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLeclCRC1aQ7uu5UhlAAASfIQAFJFRF8Pvrr/pfg4o1lDc6Ii\nhJwjZNiZq0UfzTGrXEjL5/3p7Q0m2sMeGP6ukxuEPYmI28fqoZv0f471GpzoC4pW\nAj+wuZHaGMw0B0JaAwL2MR1I4h5mFjFT4/W5oD3hfQGqnVsjD64hA5otampciclA\nls9l5dFv4s9StVK+9qOoBhlj0TeTy5tjMC6DwLJuiIWLPy1jFe6C14p+++hwyy6F\n4jV7/xurG32ijesgnNauzZj9Xj3MI++HMy2Kylm2utGVV6LLRWSCbDWEBjPO+ApG\nA/ICaYQdRd7X4OnLzhyOs/S+i4IPRUn0Mv3MOZngxRnzhkdGOXJHnMyXndEYeaYP\npllJtz36K5zHqWt8mb8mC5okmyiMeM7ojm2v2xGWKM4GraeeSHW3PqWnacc0alZG\nPAaV9Sd/EWnNi8d7WMmUl6WS/hlSvMlyvtlC53FOLZbTommZAJdoaVCfAuEtrI9n\nX3e6pEB82oIHjWOS8KUY4wVe73I4iK1acanTTraWzqpIXTU8+oLAiCafV6zn8aMF\ne4qMq1C3/vJN/1TUmp8mECodDk2HZnBOluD04X0t8EZnPjfsylTDd+uVzk5W9p0l\nf4NRwxyVk5sQFep8ESIo05kJLOkiCz7KNG1LNEUJU5r8vls6F/vG0tn10waYrZd8\nHml/O8btSTmbZnY38Lc+\n=G31d\n-----END PGP SIGNATURE-----\n", + "payload": "tree 1933270fbcec72fc145c14433a95c688b699f7a6\nparent 93427a001637a95cfa58b359396e7311635b58f4\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764615973 +0000\ncommitter GitHub 1764615973 +0000\n\ndocs: update .all-contributorsrc [skip ci]", + "verified_at": "2025-12-01T19:06:13Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5ebc6729250d8491d53497f121192d2d4a6c54dc", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5ebc6729250d8491d53497f121192d2d4a6c54dc", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5ebc6729250d8491d53497f121192d2d4a6c54dc/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "93427a001637a95cfa58b359396e7311635b58f4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/93427a001637a95cfa58b359396e7311635b58f4", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/93427a001637a95cfa58b359396e7311635b58f4" + } + ] + }, + { + "sha": "93427a001637a95cfa58b359396e7311635b58f4", + "node_id": "C_kwDOBvEA_toAKDkzNDI3YTAwMTYzN2E5NWNmYTU4YjM1OTM5NmU3MzExNjM1YjU4ZjQ", + "commit": { + "author": { + "name": "allcontributors[bot]", + "email": "46447321+allcontributors[bot]@users.noreply.github.com", + "date": "2025-12-01T19:06:12Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T19:06:12Z" + }, + "message": "docs: update README.md [skip ci]", + "tree": { + "sha": "6b1d807ea7f41f333ebdca2babe4199413df6e7c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/6b1d807ea7f41f333ebdca2babe4199413df6e7c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/93427a001637a95cfa58b359396e7311635b58f4", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLeckCRC1aQ7uu5UhlAAAZWYQAEeWe4e5FcquFWIZbrHS3XLi\nUsx9YdBwaQZtQjn5SaVA/MbkUPJcOKM4NM+u96sM+CymUYyqe9KRdiW+Dm5pMTmu\n7OizHGGaxoR7kzJZuLgPnacZQNDEmt/D/Qf5pBPvP6eRf8HHRBQrtR6vcpES9FIF\nteataMyJho5eKN7Z3Mv6IRb7HFnW8R1hxgn+xqwJSjhvSXeWLW8td0Rk8vCqWM93\nguDE0XQcc3VUbqjfZepDPn5Zvp488KURgmIsJHwmkETaiQzmMwPuOxP6EbGtofvf\n1XzHt3FmeVJet+LxDMlE7WJHiOBiSfGSyN3q5HG6Jdw3mnGt2zL4PLUJNVgqNFpN\nnWxKCnrFpT2wktgb8OQOW8rL4Sm/S+95nWISTFV3RtiFwAS4vU9RLR6sNOhlzbBu\nuae0ncKx2dacnpVGve95J5rQMVQPTfIhLptaVaUt+mJNlwGejfkxjC0sKKg0QR9M\nTe17jtr+yRgPJ8lipByRcC2AGj16to2fRBPV0rN9Fgrnnat97+Tj6fsR54Qob4Sp\nUM5YwdVdbD8iWb0wEMxqVfJE2L9uJhY8erAQrHJe9JXMi4r4BRIziXptJNq8f1oM\nPuQz2krd6zF5+hpdSQ+71sOHMOdY/WMY4ooPilLY6NM3Y2duAjBRxLsIND+w/H0R\nHzQ8A4ZmSYPJVBl60lBM\n=/Wte\n-----END PGP SIGNATURE-----\n", + "payload": "tree 6b1d807ea7f41f333ebdca2babe4199413df6e7c\nparent ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5\nauthor allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> 1764615972 +0000\ncommitter GitHub 1764615972 +0000\n\ndocs: update README.md [skip ci]", + "verified_at": "2025-12-01T19:06:13Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/93427a001637a95cfa58b359396e7311635b58f4", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/93427a001637a95cfa58b359396e7311635b58f4", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/93427a001637a95cfa58b359396e7311635b58f4/comments", + "author": { + "login": "allcontributors[bot]", + "id": 46447321, + "node_id": "MDM6Qm90NDY0NDczMjE=", + "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allcontributors%5Bbot%5D", + "html_url": "https://github.com/apps/allcontributors", + "followers_url": "https://api.github.com/users/allcontributors%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/allcontributors%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/allcontributors%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allcontributors%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allcontributors%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/allcontributors%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/allcontributors%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/allcontributors%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5" + } + ] + }, + { + "sha": "109d5ce592d16403930db43d3daf323497320b73", + "node_id": "C_kwDOBvEA_toAKDEwOWQ1Y2U1OTJkMTY0MDM5MzBkYjQzZDNkYWYzMjM0OTczMjBiNzM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T18:32:09Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T18:32:09Z" + }, + "message": "cleanup", + "tree": { + "sha": "2178f450856c26eac34580173b1b04ee790b47da", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/2178f450856c26eac34580173b1b04ee790b47da" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/109d5ce592d16403930db43d3daf323497320b73", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/109d5ce592d16403930db43d3daf323497320b73", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/109d5ce592d16403930db43d3daf323497320b73", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/109d5ce592d16403930db43d3daf323497320b73/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "addec37ca210f85ba1ca7011c01e369b43c561d8", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/addec37ca210f85ba1ca7011c01e369b43c561d8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/addec37ca210f85ba1ca7011c01e369b43c561d8" + } + ] + }, + { + "sha": "3130604e4f1ed7dd21743f89d3ed284542b1fc26", + "node_id": "C_kwDOBvEA_toAKDMxMzA2MDRlNGYxZWQ3ZGQyMTc0M2Y4OWQzZWQyODQ1NDJiMWZjMjY", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T18:19:09Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T18:19:09Z" + }, + "message": "cleanup", + "tree": { + "sha": "27b5d1fbc9c95a1e72a285b011c9919c7b556a1b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/27b5d1fbc9c95a1e72a285b011c9919c7b556a1b" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/3130604e4f1ed7dd21743f89d3ed284542b1fc26", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3130604e4f1ed7dd21743f89d3ed284542b1fc26", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3130604e4f1ed7dd21743f89d3ed284542b1fc26", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3130604e4f1ed7dd21743f89d3ed284542b1fc26/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "b78467b36d055bb0b9fc61380716e0bb5d1a7eb4", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b78467b36d055bb0b9fc61380716e0bb5d1a7eb4", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b78467b36d055bb0b9fc61380716e0bb5d1a7eb4" + } + ] + }, + { + "sha": "ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "node_id": "C_kwDOBvEA_toAKGVmNDU0Zjg4ZmQ5YWM5ODdiNjEwYWI4YzRmNjYzOWQ0YWU5ZDdmZTU", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T17:09:24Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T17:09:24Z" + }, + "message": "Merge pull request #16699 from ethereum/claude/issue-15541-20251126-1437\n\nfeat: add Otterscan to block explorers in resources page", + "tree": { + "sha": "fa6d70d9d6e47028178ddb1e835b1e8a97d4395c", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/fa6d70d9d6e47028178ddb1e835b1e8a97d4395c" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLcvECRC1aQ7uu5UhlAAAvt8QAIKWyvl1MnjEFSTJB6UFmjQm\nX1POsDrC5HjTxXXyu4gT2iIpnp0YiYeLVOOmcqdDx/GSKUNe8OysV8uu63KRM5k6\nAju5F5fJMB2BLgVmBxJd+6HlQgTZloaS3M9OHMOhsAZbJxjBozizGEieyCHU+9h9\nG/8f3mbA4ZmXb8es0Y0De+XvE2p2QIeXA+YdVSshWZgat/zV5gLDP0/HmNa45YWI\nznZ2zQe95jZdQBz6VLUTI4qJMGyUpCbfk+Oua9XhwKRdsZWdPQOoBFtCY0TPH6MD\nn1ezObldh/D9TCq4wLiPbb9kHdzficMfcGDfNcgqJJ9Y18r822sPIL/yVKAvkDpf\nOR63C1z9+MLle/e35Ahux/GWZlqOVgFrVdTz7Y3KDh8lj61uhQ3BY3gTtn7mVtmz\nHbqNEWr2MakoY++X6lChi6Rx4+onivYu6f+HpoMAO3jwDfOF67sUV5YerxkTvYAz\nYX5vAqaZOZu0GsipQoqbIbTzddJ7ztQgSXRoJQ7b87bFwERvsJXD4olxzrClq/QA\nzV1yxJaV4QRuBKr16M/HUSe0WafA8je3DYUXJ1sN8XvxTXw3wjdKCXJgnBZkGApn\nwIIIfk6JnnZEz+EaNfH0RMxmr9Mm1BOHLWu3kHPTjaey2PWMn9VBeUt6UuaF9gK8\nGX/Xa7bFxlI28HtvUMNK\n=3hJP\n-----END PGP SIGNATURE-----\n", + "payload": "tree fa6d70d9d6e47028178ddb1e835b1e8a97d4395c\nparent 5ff6062bab6ac385164760ec2ca48a5e48819ca5\nparent 7005f6179a76d0b084264d68e081418458bb6042\nauthor Corwin Smith 1764608964 -0700\ncommitter GitHub 1764608964 -0700\n\nMerge pull request #16699 from ethereum/claude/issue-15541-20251126-1437\n\nfeat: add Otterscan to block explorers in resources page", + "verified_at": "2025-12-01T17:09:24Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/ef454f88fd9ac987b610ab8c4f6639d4ae9d7fe5/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "5ff6062bab6ac385164760ec2ca48a5e48819ca5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5ff6062bab6ac385164760ec2ca48a5e48819ca5", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5ff6062bab6ac385164760ec2ca48a5e48819ca5" + }, + { + "sha": "7005f6179a76d0b084264d68e081418458bb6042", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/7005f6179a76d0b084264d68e081418458bb6042", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/7005f6179a76d0b084264d68e081418458bb6042" + } + ] + }, + { + "sha": "7005f6179a76d0b084264d68e081418458bb6042", + "node_id": "C_kwDOBvEA_toAKDcwMDVmNjE3OWE3NmQwYjA4NDI2NGQ2OGUwODE0MTg0NThiYjYwNDI", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T17:08:41Z" + }, + "committer": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T17:08:41Z" + }, + "message": "Add icon", + "tree": { + "sha": "94ac72559cd1702d1ef0237f88463c3d111bcbbd", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/94ac72559cd1702d1ef0237f88463c3d111bcbbd" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/7005f6179a76d0b084264d68e081418458bb6042", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/7005f6179a76d0b084264d68e081418458bb6042", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/7005f6179a76d0b084264d68e081418458bb6042", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/7005f6179a76d0b084264d68e081418458bb6042/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "6590a97a6c9a4c8577a9a23b015ce8a5062f6193", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/6590a97a6c9a4c8577a9a23b015ce8a5062f6193", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/6590a97a6c9a4c8577a9a23b015ce8a5062f6193" + } + ] + }, + { + "sha": "5ff6062bab6ac385164760ec2ca48a5e48819ca5", + "node_id": "C_kwDOBvEA_toAKDVmZjYwNjJiYWI2YWMzODUxNjQ3NjBlYzJjYTQ4YTVlNDg4MTljYTU", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-12-01T16:45:04Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-12-01T16:45:04Z" + }, + "message": "Merge pull request #16698 from ethereum/sentry-normalize-dynamic-paths\n\nFix Sentry performance metrics grouping for catch-all routes", + "tree": { + "sha": "7bc26e52750d5ab31108ecf7492aa4fa40503da2", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/7bc26e52750d5ab31108ecf7492aa4fa40503da2" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/5ff6062bab6ac385164760ec2ca48a5e48819ca5", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLcYQCRC1aQ7uu5UhlAAAK94QAAhy4oIY/SbmSUbds+/ZWG7T\nHzvrkn4FKkASlbcGsxI01IyqqQ0aaJhq83JUrx4y5wSkQOFDfV4i7PjWAfh0Tw1H\nrnx9K3LJrvGrpro/LR30neP5rnvlel7s9QWJbDP8/rWZb/T+kw70t6lv/gLX90Wc\nfI4+9c/WouCsN+mybmCJgfas/GA/6t/J9fSoalW53YUol4PxvEWhxWHzKdxOL2pJ\nw2P69Jqky8BzOLTJfdztBF7FKB3VIu/Mt73NCPLgzeahwnVj4+H5cPFUTvMZzNex\nwabhbzYjEUrU552dAAQBzaBfGOjPyXC7Zaj+5L0Ylrrhzc4Gjs7Hr8Kp2H8ni8fH\nw/dRfB5t2oVWSr2dNmQ5mC0LgU+DBhWtNVZZZjELJDFkpyhjMnNTK+XbS2MzMrHx\nYIZwcd/o4ni2c7F/ibYXa2/jDYUptqkRj94Arwz59laokcQhq/vLvD5OXlh5BOXd\nGIPxpPxktkE8vnRVPnnUnmeT6d17+6i2lOKVngfg4wuRLr1sI2PQb6hCkDHoMlRD\nC/RNS/nvYl1SyeL6UGy8DyHYeN2MjZTCrw+WU/tnwmJmqqwzdRuA3fNXe3HvPPNH\nWVh3DHLPqC7tEIn6LVQHxsOt/YMaF885/tENM2OWkCkSdf3r1sKyXWv01cUDTjJz\nbv+1X59/+jcSA+SUJxIw\n=6q06\n-----END PGP SIGNATURE-----\n", + "payload": "tree 7bc26e52750d5ab31108ecf7492aa4fa40503da2\nparent 5c532a77c1841f5199241bd153c88c7aed479f86\nparent f5df4e3a9c56a33df473a3f7c1f69a890690546f\nauthor Corwin Smith 1764607504 -0700\ncommitter GitHub 1764607504 -0700\n\nMerge pull request #16698 from ethereum/sentry-normalize-dynamic-paths\n\nFix Sentry performance metrics grouping for catch-all routes", + "verified_at": "2025-12-01T16:45:04Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5ff6062bab6ac385164760ec2ca48a5e48819ca5", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5ff6062bab6ac385164760ec2ca48a5e48819ca5", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5ff6062bab6ac385164760ec2ca48a5e48819ca5/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "5c532a77c1841f5199241bd153c88c7aed479f86", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5c532a77c1841f5199241bd153c88c7aed479f86", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5c532a77c1841f5199241bd153c88c7aed479f86" + }, + { + "sha": "f5df4e3a9c56a33df473a3f7c1f69a890690546f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/f5df4e3a9c56a33df473a3f7c1f69a890690546f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/f5df4e3a9c56a33df473a3f7c1f69a890690546f" + } + ] + }, + { + "sha": "a9d0310295808953e182a6f0e235c6e745c2a027", + "node_id": "C_kwDOBvEA_toAKGE5ZDAzMTAyOTU4MDg5NTNlMTgyYTZmMGUyMzVjNmU3NDVjMmEwMjc", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-01T16:33:47Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-01T16:33:47Z" + }, + "message": "feat: add redirects for ext 404s", + "tree": { + "sha": "716cecdd5870fdfd825a9b3139d94f68dfaf8c7b", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/716cecdd5870fdfd825a9b3139d94f68dfaf8c7b" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/a9d0310295808953e182a6f0e235c6e745c2a027", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmktw2wACgkQ9N587fAS\nn7YdaRAAs+Y14DBzAXvpMBjv/dwykrTryzMIgdln9tExGH/Jux2ZlB+dNstRKux6\nfBseSPe6SkkvpNriXgHzjYvUYAm/iOP+A1C58TEdL0LyhQVqUejDngDnNetjPIRc\nBj9mBkCAuy2AZnGmWXGCEF6K02AhGD/N5nckofmLwYclRbjCQZ8d/xwI+qAzqSta\nZDvvEybZSvImkZ6Me1OnHW08pLjCgxMwDsxjgapK9XEC7sOYNl0VDgDE/KLvxjhU\nNQedn3jah5+bD0niqKQ9ghRg5zKct1nlvJDeoUUdB2z2khCG3+uFn38g84w7u/m8\n8XR9TO5b8VxPS7NRdQTb8D62/8nYU0F7f9qWtHBqGzYo8N7Qx4RrZtrazAsaePum\nBAqrIyJR8qAJcdnaHwkU31d1Hi9Ycj83gQsZUbuPTekUloFHNpW8lgYZ1bgXhTrH\n3z4Zt/VtYif5iWHreHU3hHHNu+GA2DoLQdFr+uoHYRxqejwk5yY/KL+mQnup4F6k\naI/7eJCAdlpN/pq/ndJR1iZ24IAdS+hXhqYhrTNvxL9fgRCuAqLOScrTcNbjNcvH\nP9qnsthiXNJNMsnERtjwBu7p4J7n3hZZ2VnXfoKwMo319/89TsNJ5+winula3SNC\nsTrPr8HyiYCL7kN1AJsJM4fNcmENt4hixwxSdOMTAArz5Kpq0yw=\n=CMw0\n-----END PGP SIGNATURE-----", + "payload": "tree 716cecdd5870fdfd825a9b3139d94f68dfaf8c7b\nparent 3182ac414c45fa16ddb261d2c667018da3fd5e05\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764606827 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764606827 -0300\n\nfeat: add redirects for ext 404s\n", + "verified_at": "2025-12-01T16:34:31Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a9d0310295808953e182a6f0e235c6e745c2a027", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/a9d0310295808953e182a6f0e235c6e745c2a027", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/a9d0310295808953e182a6f0e235c6e745c2a027/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "3182ac414c45fa16ddb261d2c667018da3fd5e05", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3182ac414c45fa16ddb261d2c667018da3fd5e05", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3182ac414c45fa16ddb261d2c667018da3fd5e05" + } + ] + }, + { + "sha": "3182ac414c45fa16ddb261d2c667018da3fd5e05", + "node_id": "C_kwDOBvEA_toAKDMxODJhYzQxNGM0NWZhMTZkZGIyNjFkMmM2NjcwMThkYTNmZDVlMDU", + "commit": { + "author": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-01T16:25:26Z" + }, + "committer": { + "name": "Paul Wackerow", + "email": "54227730+wackerow@users.noreply.github.com", + "date": "2025-12-01T16:25:26Z" + }, + "message": "fix: _redircts to use /*/ to /:splat/ prefix", + "tree": { + "sha": "4e096ee10745426aa18bee4624d34145a1a8e544", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/4e096ee10745426aa18bee4624d34145a1a8e544" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/3182ac414c45fa16ddb261d2c667018da3fd5e05", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEUOh75CxyJ0zApOi59N587fASn7YFAmktwXcACgkQ9N587fAS\nn7aGZQ/+J9pms4aZuN11UOZqggpWR0lCUeSS3c2NxiH7z2gtToMHCVrn7dw+vhpe\n/EqAWBAtHA93xmh/9jK+U+bV5tdezcV05byXoZPmjunTjuT8AbXjskbTePeNm/bA\nFhPH+Oq9TsQ2tTYBQrQUhu0ipIsT8sLtuA/XIlLNmsTF7L1W1wc1w0Qc69f2mZIy\nfjqt31tA4NmdYsMgamfkifV4MzmqLud8CNwnmZtvVrNbtxXi7OIr5EBnOGwc/o68\nywT+FIlHO2WaJAZmR1As8N8pCMOR6cMNPmN8CNx3iyvzUx0EgCoKfzxBZkHaKOEu\nFD5WcKoRcnM2IAS02ZLqyVoqg9z6XTzCTOo/IyfE5+JHUnt/vrNXERtQ+/x5pVrC\nFMBrmkXn+DHlLbdBjwlldfcNHvSckwAicjms5ME19QK0b60Jls47zzpTHDyQajhC\nCBniN+9b6Kc5dV9SYWBJjdx1fuUtKxEORIc05rj1Zyy4sl0Obn2jCJZDNOPm2fJu\nhJx230GTe0ZPbEAExJh8eLtq6wZhDh72zohPGXdEPvz69KDiNLiSXe+JPe8sKLJ5\nsQcZWnN1oxXeM00+Pw9IO/41Rvtl6PCEcDZpkGeTK2cFSAUF8bT2RbuGmuz2M7R7\n5wLamdOLOfnlPHzulfce/jTDwjY4EPBb7IF2Gse2Vs+P8r2Qr4s=\n=Gf85\n-----END PGP SIGNATURE-----", + "payload": "tree 4e096ee10745426aa18bee4624d34145a1a8e544\nparent b696bf41ffddd3c7ee873d2ec2d70af31e4c819f\nauthor Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764606326 -0300\ncommitter Paul Wackerow <54227730+wackerow@users.noreply.github.com> 1764606326 -0300\n\nfix: _redircts to use /*/ to /:splat/ prefix\n", + "verified_at": "2025-12-01T16:34:31Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3182ac414c45fa16ddb261d2c667018da3fd5e05", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/3182ac414c45fa16ddb261d2c667018da3fd5e05", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/3182ac414c45fa16ddb261d2c667018da3fd5e05/comments", + "author": { + "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 + }, + "committer": { + "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 + }, + "parents": [ + { + "sha": "b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b696bf41ffddd3c7ee873d2ec2d70af31e4c819f" + } + ] + }, + { + "sha": "b78467b36d055bb0b9fc61380716e0bb5d1a7eb4", + "node_id": "C_kwDOBvEA_toAKGI3ODQ2N2IzNmQwNTViYjBiOWZjNjEzODA3MTZlMGJiNWQxYTdlYjQ", + "commit": { + "author": { + "name": "GitHub Action", + "email": "actions@github.com", + "date": "2025-12-01T04:48:39Z" + }, + "committer": { + "name": "GitHub Action", + "email": "actions@github.com", + "date": "2025-12-01T04:48:39Z" + }, + "message": "chore: import translations for el", + "tree": { + "sha": "71fb2e6fc3c153e0e23475c1307bd5b9ce0b6b56", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/71fb2e6fc3c153e0e23475c1307bd5b9ce0b6b56" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/b78467b36d055bb0b9fc61380716e0bb5d1a7eb4", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b78467b36d055bb0b9fc61380716e0bb5d1a7eb4", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b78467b36d055bb0b9fc61380716e0bb5d1a7eb4", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b78467b36d055bb0b9fc61380716e0bb5d1a7eb4/comments", + "author": { + "login": "actions-user", + "id": 65916846, + "node_id": "MDQ6VXNlcjY1OTE2ODQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/65916846?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/actions-user", + "html_url": "https://github.com/actions-user", + "followers_url": "https://api.github.com/users/actions-user/followers", + "following_url": "https://api.github.com/users/actions-user/following{/other_user}", + "gists_url": "https://api.github.com/users/actions-user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/actions-user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/actions-user/subscriptions", + "organizations_url": "https://api.github.com/users/actions-user/orgs", + "repos_url": "https://api.github.com/users/actions-user/repos", + "events_url": "https://api.github.com/users/actions-user/events{/privacy}", + "received_events_url": "https://api.github.com/users/actions-user/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "actions-user", + "id": 65916846, + "node_id": "MDQ6VXNlcjY1OTE2ODQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/65916846?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/actions-user", + "html_url": "https://github.com/actions-user", + "followers_url": "https://api.github.com/users/actions-user/followers", + "following_url": "https://api.github.com/users/actions-user/following{/other_user}", + "gists_url": "https://api.github.com/users/actions-user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/actions-user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/actions-user/subscriptions", + "organizations_url": "https://api.github.com/users/actions-user/orgs", + "repos_url": "https://api.github.com/users/actions-user/repos", + "events_url": "https://api.github.com/users/actions-user/events{/privacy}", + "received_events_url": "https://api.github.com/users/actions-user/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "5c532a77c1841f5199241bd153c88c7aed479f86", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5c532a77c1841f5199241bd153c88c7aed479f86", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5c532a77c1841f5199241bd153c88c7aed479f86" + } + ] + }, + { + "sha": "addec37ca210f85ba1ca7011c01e369b43c561d8", + "node_id": "C_kwDOBvEA_toAKGFkZGVjMzdjYTIxMGY4NWJhMWNhNzAxMWMwMWUzNjliNDNjNTYxZDg", + "commit": { + "author": { + "name": "GitHub Action", + "email": "actions@github.com", + "date": "2025-12-01T04:48:28Z" + }, + "committer": { + "name": "GitHub Action", + "email": "actions@github.com", + "date": "2025-12-01T04:48:28Z" + }, + "message": "chore: import translations for ar", + "tree": { + "sha": "a8d8dda6851cd246a5be409977aef189648cb6c5", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/a8d8dda6851cd246a5be409977aef189648cb6c5" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/addec37ca210f85ba1ca7011c01e369b43c561d8", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null, + "verified_at": null + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/addec37ca210f85ba1ca7011c01e369b43c561d8", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/addec37ca210f85ba1ca7011c01e369b43c561d8", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/addec37ca210f85ba1ca7011c01e369b43c561d8/comments", + "author": { + "login": "actions-user", + "id": 65916846, + "node_id": "MDQ6VXNlcjY1OTE2ODQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/65916846?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/actions-user", + "html_url": "https://github.com/actions-user", + "followers_url": "https://api.github.com/users/actions-user/followers", + "following_url": "https://api.github.com/users/actions-user/following{/other_user}", + "gists_url": "https://api.github.com/users/actions-user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/actions-user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/actions-user/subscriptions", + "organizations_url": "https://api.github.com/users/actions-user/orgs", + "repos_url": "https://api.github.com/users/actions-user/repos", + "events_url": "https://api.github.com/users/actions-user/events{/privacy}", + "received_events_url": "https://api.github.com/users/actions-user/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "committer": { + "login": "actions-user", + "id": 65916846, + "node_id": "MDQ6VXNlcjY1OTE2ODQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/65916846?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/actions-user", + "html_url": "https://github.com/actions-user", + "followers_url": "https://api.github.com/users/actions-user/followers", + "following_url": "https://api.github.com/users/actions-user/following{/other_user}", + "gists_url": "https://api.github.com/users/actions-user/gists{/gist_id}", + "starred_url": "https://api.github.com/users/actions-user/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/actions-user/subscriptions", + "organizations_url": "https://api.github.com/users/actions-user/orgs", + "repos_url": "https://api.github.com/users/actions-user/repos", + "events_url": "https://api.github.com/users/actions-user/events{/privacy}", + "received_events_url": "https://api.github.com/users/actions-user/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "5c532a77c1841f5199241bd153c88c7aed479f86", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5c532a77c1841f5199241bd153c88c7aed479f86", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5c532a77c1841f5199241bd153c88c7aed479f86" + } + ] + }, + { + "sha": "5c532a77c1841f5199241bd153c88c7aed479f86", + "node_id": "C_kwDOBvEA_toAKDVjNTMyYTc3YzE4NDFmNTE5OTI0MWJkMTUzYzg4YzdhZWQ0NzlmODY", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-11-30T19:33:20Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-11-30T19:33:20Z" + }, + "message": "Merge pull request #16697 from rejected-l/dev\n\nbuild: update checkout action to v6", + "tree": { + "sha": "726697e3bea4b0822301ee2304a5ed8e406d09d2", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/726697e3bea4b0822301ee2304a5ed8e406d09d2" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/5c532a77c1841f5199241bd153c88c7aed479f86", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLJwACRC1aQ7uu5UhlAAA8tUQAFIiq4WiGcbTS+LyySW5x7pF\nDglVDYZcwDQVMpcEP34cC9FahC0MknYQFtxgqQG3COzmTkpTZz7gQ58Ra/iaGlb9\nqPe0TTAS01ZtR9cK2cNzN4nKXqjIBFKDa79QLbzTiDgg4hfXaS6XQaPtjA1O07Ls\nTBrOMCAtBYnfXi76a/ta/b4MQ/LO+KqcxavGlQCo2YAOcm53g54k6QPG70hkycG5\n/E4BkCOigTK6RDdMyv8xDFhmV1i54YnXw+4LtCMgVTcOzIkH6KpS4GnwZ33PTm3B\nMZhdzlUklJkCj1+UVJ42TmncmNzTwX0+moOq+2Akbin1Jw1HunbN43vMfgOPPCRU\nPPGyqpk8sOQsZMKSNkKX9RtbzElYTVo7+s2uqnRnFt1/L44L9Sp6f/1UPYQrMoS3\nwBUpvwh5WYjeqHsR3KMHVvqHZSPrauZ4bZQK7h7X2NNgVaAYSfGiMh1VrL2+89Bm\nNLMBGEvpxUT2nSDTc8BgDGtqD+O9uVMCybXJA4dOVvoPdOMwxGGG5TVeMMX+pEyx\nB9si6/yz1I9ER3Je7DeDq24pmIJZ69jD7+IMBcEsD1Ec2GEO/5KpJbLV9eMsCWEF\nxBRkDlhSA+5aS7A0gQM6qmA9jJIgDwc/L3V4LOfm7XkTXisShpE5+/Vou649oTBI\n2O1msvDYGi8TiIQmcr1C\n=YDBN\n-----END PGP SIGNATURE-----\n", + "payload": "tree 726697e3bea4b0822301ee2304a5ed8e406d09d2\nparent 077ea484e235750c69c112aa5ddf9ebce1a31523\nparent b02c40a0209a491829bb93fb29392de3a75364a3\nauthor Corwin Smith 1764531200 -0700\ncommitter GitHub 1764531200 -0700\n\nMerge pull request #16697 from rejected-l/dev\n\nbuild: update checkout action to v6", + "verified_at": "2025-11-30T19:33:21Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5c532a77c1841f5199241bd153c88c7aed479f86", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/5c532a77c1841f5199241bd153c88c7aed479f86", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/5c532a77c1841f5199241bd153c88c7aed479f86/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "077ea484e235750c69c112aa5ddf9ebce1a31523", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/077ea484e235750c69c112aa5ddf9ebce1a31523", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/077ea484e235750c69c112aa5ddf9ebce1a31523" + }, + { + "sha": "b02c40a0209a491829bb93fb29392de3a75364a3", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/b02c40a0209a491829bb93fb29392de3a75364a3", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/b02c40a0209a491829bb93fb29392de3a75364a3" + } + ] + }, + { + "sha": "077ea484e235750c69c112aa5ddf9ebce1a31523", + "node_id": "C_kwDOBvEA_toAKDA3N2VhNDg0ZTIzNTc1MGM2OWMxMTJhYTVkZGY5ZWJjZTFhMzE1MjM", + "commit": { + "author": { + "name": "Corwin Smith", + "email": "cssmittys@gmail.com", + "date": "2025-11-30T19:27:56Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2025-11-30T19:27:56Z" + }, + "message": "Merge pull request #16695 from ethereum/find-wallets-static\n\nRender find wallets statically", + "tree": { + "sha": "97ce23b826ec3ca2595f9c45d24328d48bc68643", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/trees/97ce23b826ec3ca2595f9c45d24328d48bc68643" + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/git/commits/077ea484e235750c69c112aa5ddf9ebce1a31523", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJpLJq8CRC1aQ7uu5UhlAAAF9cQABc97rsTp+GBUS09V4Ec6KXS\nLQmlgVFmLAMms5NQKsI8Rga188cIStC83J5L/1nySYw9db1oKcMDdcU5/WBjK+25\nrYYNIIGQ8wR0/7u+ouWemwk/rv5foE2NG6S4Sh4JggUgvwrv+pppHdVADBovxsOU\n/aLtyDEWkGhuIyjXWD6fqgUKWGuNHUYx63vbokl3AeabfJXcS4+UnMECHb97ioZX\nyXTgBHzAuyhm7jznDqyzwrphVitbKuDpueI+ceR7j9Xen7Gi1q2mlpYfBFdFAi2Q\nJO4weON/z5flWdkBewsRRN1DQ1O6OcQlz8iE5S0NZSnvmzapUtpZzPP1QFqofsCI\ndOPdsVbxwndsEEbjfeH6Y1XkMO3u3TTaQuyHtMAEzRDIDuHMmDRXVrDq6OvC/2e2\ni4jXsVUxJk7WWhA16CxQKDvGWbEHqG+Un1k7xX8bFEb4+Eo9RRV5xIAxhQX1gWGg\nkdU0F89rabz7Bk4NvRwL0XkveczdgvEWydjnBUSGoiJufvdCUtdsBO1fmnWH1jIX\n3IcB1pA+BXSIRurDViSRhFDRPrTfgas8VKqZ4Dh2sEMuUXM/4YzZzR//b7sq91Kk\nnlpb0DOyTcozqpuq/KTpuGbwGGXZX4LxoZwiDNFX/JYtrT9QIMkIv7Sy//fV9rbK\nNyLeuFcE617VyWortnHs\n=I53p\n-----END PGP SIGNATURE-----\n", + "payload": "tree 97ce23b826ec3ca2595f9c45d24328d48bc68643\nparent 8be5456f75eb10d8131f3e83af6269437cc0e118\nparent 52428d476e93a924bba110c01eaec557972bf421\nauthor Corwin Smith 1764530876 -0700\ncommitter GitHub 1764530876 -0700\n\nMerge pull request #16695 from ethereum/find-wallets-static\n\nRender find wallets statically", + "verified_at": "2025-11-30T19:27:56Z" + } + }, + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/077ea484e235750c69c112aa5ddf9ebce1a31523", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/077ea484e235750c69c112aa5ddf9ebce1a31523", + "comments_url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/077ea484e235750c69c112aa5ddf9ebce1a31523/comments", + "author": { + "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 + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "parents": [ + { + "sha": "8be5456f75eb10d8131f3e83af6269437cc0e118", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/8be5456f75eb10d8131f3e83af6269437cc0e118", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/8be5456f75eb10d8131f3e83af6269437cc0e118" + }, + { + "sha": "52428d476e93a924bba110c01eaec557972bf421", + "url": "https://api.github.com/repos/ethereum/ethereum-org-website/commits/52428d476e93a924bba110c01eaec557972bf421", + "html_url": "https://github.com/ethereum/ethereum-org-website/commit/52428d476e93a924bba110c01eaec557972bf421" + } + ] + } +] \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-github-repo-data.json b/src/data-layer/mocks/fetch-github-repo-data.json new file mode 100644 index 00000000000..2ebe925b8ed --- /dev/null +++ b/src/data-layer/mocks/fetch-github-repo-data.json @@ -0,0 +1,78 @@ +{ + "https://github.com/kurtosis-tech/ethereum-package": { + "starCount": 434, + "languages": [ + "Starlark", + "HTML", + "Python", + "Shell" + ] + }, + "https://github.com/nomiclabs/hardhat": { + "starCount": 8345, + "languages": [ + "TypeScript", + "JavaScript", + "Solidity", + "HTML", + "Shell", + "CSS", + "Vyper" + ] + }, + "https://github.com/eth-brownie/brownie": { + "starCount": 2726, + "languages": [ + "C", + "Python", + "Solidity", + "Vyper", + "Dockerfile" + ] + }, + "https://github.com/PaulRBerg/create-eth-app": { + "starCount": 2767, + "languages": [ + "JavaScript", + "TypeScript", + "Handlebars", + "HTML", + "Vue", + "CSS", + "Shell" + ] + }, + "https://github.com/scaffold-eth/scaffold-eth-2": { + "starCount": 1882, + "languages": [ + "TypeScript", + "Solidity", + "JavaScript", + "CSS" + ] + }, + "https://github.com/paulrberg/solidity-template": { + "starCount": 1979, + "languages": [ + "TypeScript", + "Solidity", + "JavaScript" + ] + }, + "https://github.com/foundry-rs/foundry": { + "starCount": 9872, + "languages": [ + "Rust", + "Shell", + "TypeScript", + "JavaScript", + "Solidity", + "Makefile", + "Dockerfile", + "Nix", + "Python", + "HTML", + "Vyper" + ] + } +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-grow-the-pie-master.json b/src/data-layer/mocks/fetch-grow-the-pie-master.json new file mode 100644 index 00000000000..aaf4bc355e0 --- /dev/null +++ b/src/data-layer/mocks/fetch-grow-the-pie-master.json @@ -0,0 +1,39 @@ +{ + "launchDates": { + "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", + "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" + } +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-grow-the-pie.json b/src/data-layer/mocks/fetch-grow-the-pie.json new file mode 100644 index 00000000000..bbc26ff2cf8 --- /dev/null +++ b/src/data-layer/mocks/fetch-grow-the-pie.json @@ -0,0 +1,76 @@ +{ + "txCount": { + "value": 21555224, + "timestamp": 1764949710273 + }, + "txCostsMedianUsd": { + "value": 0.0015815687829395949, + "timestamp": 1764949710273 + }, + "dailyTxCosts": { + "ethereum": 0.018399059186481843, + "arbitrum": 0.005828219101704389, + "optimism": 0.00005403131920833203, + "base": 0.00043381581166655655, + "mode": 0.00009754341080763112, + "derive": 0.000885266552951881, + "worldchain": 0.00016042794023767872, + "soneium": 0.00010660310579728353, + "zora": 0.00017784440246296294, + "redstone": 0.00037197021156302627, + "orderly": 0.00002438032404121833, + "mint": 0.0003223501361295718, + "ink": 0.00009515149749464417, + "swell": 0.000006861558116110017, + "zksync_era": 0.020757953135403757, + "polygon_zkevm": 0.0048030831639175875, + "linea": 0.016642924194301165, + "blast": 0.0000415398039549782, + "manta": 0.00006733023936881864, + "lisk": 0.0001674836544861091, + "mantle": 0.00739793957580905, + "gravity": 0.0006536968525106059, + "celo": 0.000734137556440757, + "scroll": 0.0008758659505214447, + "taiko": 0.011418314721236436, + "unichain": 0.000033708655329713404, + "metis": 0.003650231156082057, + "plume": 0.0020521973470814083, + "starknet": 0.0025283873127430498 + }, + "activeAddresses": { + "worldchain": 359903, + "mint": 882, + "fraxtal": 1023, + "ink": 79643, + "soneium": 108771, + "swell": 796, + "zksync_era": 146694, + "polygon_zkevm": 1674, + "linea": 126194, + "scroll": 72767, + "blast": 8158, + "taiko": 8388, + "manta": 20078, + "unichain": 17257, + "lisk": 25414, + "mantle": 22096, + "metis": 14301, + "gravity": 535578, + "plume": 31581, + "celo": 1004683, + "imx": 7154, + "loopring": 62, + "starknet": 165950, + "arbitrum_nova": 1941, + "ethereum": 2936070, + "arbitrum": 1628989, + "base": 3069630, + "optimism": 145736, + "redstone": 450, + "derive": 52, + "zora": 5028, + "mode": 2889, + "orderly": 118 + } +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-l2beat.json b/src/data-layer/mocks/fetch-l2beat.json new file mode 100644 index 00000000000..de90128f508 --- /dev/null +++ b/src/data-layer/mocks/fetch-l2beat.json @@ -0,0 +1,17612 @@ +{ + "chart": { + "types": [ + "timestamp", + "native", + "canonical", + "external", + "ethPrice" + ], + "data": [ + [ + 1762300800, + 9211557807.419922, + 18870949015.255684, + 18465567627.161003, + 3296.7437 + ], + [ + 1762322400, + 9258366088.58211, + 18970945871.97875, + 18520388423.69262, + 3326.3865 + ], + [ + 1762344000, + 9298415201.170078, + 18938838552.388485, + 18695004175.389828, + 3321.0867 + ], + [ + 1762365600, + 9702204414.736563, + 19385664809.681488, + 18734663746.847546, + 3434.2227 + ], + [ + 1762387200, + 9700010346.599531, + 19407578311.25496, + 18723455834.48327, + 3425.9697 + ], + [ + 1762408800, + 9495713252.97336, + 19161004407.917297, + 18643112265.267506, + 3383.7422 + ], + [ + 1762430400, + 9449780365.718634, + 19216970081.97512, + 18619942982.68627, + 3398.9805 + ], + [ + 1762452000, + 9383195922.296055, + 18918256989.91078, + 18588038088.321083, + 3327.6125 + ], + [ + 1762473600, + 9316466815.27375, + 18846567577.03127, + 18553158870.300213, + 3308.9182 + ], + [ + 1762495200, + 9494219659.311094, + 19179965676.34413, + 18637514288.85581, + 3364.2402 + ], + [ + 1762516800, + 9338676275.476954, + 18781181439.753933, + 18539706896.39287, + 3259.2507 + ], + [ + 1762538400, + 9919661183.24125, + 19663249236.82722, + 18772066351.32454, + 3381.532 + ], + [ + 1762560000, + 9941692612.386093, + 19837631646.10066, + 18818645966.86106, + 3434.3513 + ], + [ + 1762581600, + 9831142147.59047, + 19690060786.328487, + 18768626393.648872, + 3429.9578 + ], + [ + 1762603200, + 9841754759.015625, + 19636121909.05706, + 18758214750.32486, + 3407.005 + ], + [ + 1762624800, + 9707122680.353281, + 19541350533.759388, + 18739025980.759487, + 3396.2944 + ], + [ + 1762646400, + 9791603578.355469, + 19604890406.610924, + 18763734397.724808, + 3401.4595 + ], + [ + 1762668000, + 9581053900.064844, + 19490159775.940388, + 18732119733.590954, + 3403.3044 + ], + [ + 1762689600, + 9777439868.42125, + 19660416792.43307, + 18770478411.14859, + 3427.0225 + ], + [ + 1762711200, + 9929787150.49953, + 20009058131.181725, + 18854338733.161453, + 3515.3691 + ], + [ + 1762732800, + 10017791121.149843, + 20259791333.83026, + 18892998961.054443, + 3576.2546 + ], + [ + 1762754400, + 10169854747.347187, + 20529252799.020996, + 18961805117.748543, + 3602.285 + ], + [ + 1762776000, + 10240190234.580313, + 20655728049.78296, + 19016608925.762043, + 3611.6243 + ], + [ + 1762797600, + 10051281402.595156, + 20340632989.08421, + 18963902287.158455, + 3545.1726 + ], + [ + 1762819200, + 10262981266.101406, + 20417578393.25587, + 18969356991.139656, + 3566.0498 + ], + [ + 1762840800, + 10973202331.361406, + 20314081901.049217, + 18931197867.319927, + 3555.1626 + ], + [ + 1762862400, + 10878575002.63203, + 20256667553.248596, + 18937746171.065197, + 3573.3755 + ], + [ + 1762884000, + 10651092242.101562, + 19973013209.44525, + 18798502439.669456, + 3467 + ], + [ + 1762905600, + 10447160043.988438, + 19675272307.816025, + 18706144088.0554, + 3416.0715 + ], + [ + 1762927200, + 10595854544.210155, + 19837324069.947693, + 18722996085.980965, + 3447.4417 + ], + [ + 1762948800, + 10836184046.92047, + 20261723687.5457, + 18832678925.651566, + 3546.725 + ], + [ + 1762970400, + 10350497436.91125, + 19656638631.759964, + 18645815940.94073, + 3437.1394 + ], + [ + 1762992000, + 10123894972.002188, + 19607463029.328037, + 18593036691.67003, + 3409.6145 + ], + [ + 1763013600, + 10435795749.296093, + 20108185068.272385, + 18702057350.125145, + 3531.197 + ], + [ + 1763035200, + 10362767710.563984, + 19952942573.212013, + 18698546528.740433, + 3503.7566 + ], + [ + 1763056800, + 9883573545.729843, + 19056386867.417187, + 18450551144.569443, + 3266.6633 + ], + [ + 1763078400, + 9844115733.869375, + 18952213069.98787, + 18369251626.72646, + 3223.1758 + ], + [ + 1763100000, + 9581017141.588047, + 18759759122.11364, + 18301807168.905006, + 3192.2764 + ], + [ + 1763121600, + 9451457225.43422, + 18511009999.838383, + 18211703094.31452, + 3135.584 + ], + [ + 1763143200, + 9595685493.645859, + 18768890814.08679, + 18226812568.613647, + 3182.4482 + ], + [ + 1763164800, + 9434741878.938047, + 18442927332.954075, + 18145955911.810154, + 3106.6013 + ], + [ + 1763186400, + 9612093156.5725, + 18733721892.893658, + 18227833519.043026, + 3177.0417 + ], + [ + 1763208000, + 9479673473.493593, + 18574674742.7197, + 18167682304.565086, + 3147.0205 + ], + [ + 1763229600, + 9643653092.694374, + 18971037051.03254, + 18214107446.012238, + 3212.4856 + ], + [ + 1763251200, + 9556545524.380156, + 18832839506.603844, + 18167518181.426006, + 3170.113 + ], + [ + 1763272800, + 9646052473.37125, + 19037141804.595818, + 18194983790.58354, + 3206.8496 + ], + [ + 1763294400, + 9549048805.47875, + 18850622746.11199, + 18144760064.48061, + 3165.706 + ], + [ + 1763316000, + 9277190262.912813, + 18572153630.824196, + 18036890020.807487, + 3090.9673 + ], + [ + 1763337600, + 9376809661.742344, + 18643396513.271164, + 18075491745.779305, + 3101.6868 + ], + [ + 1763359200, + 9419960287.425156, + 18909678332.7501, + 18186693645.174263, + 3186.0222 + ], + [ + 1763380800, + 9487859721.425, + 19048621680.789276, + 18239772816.42727, + 3203.5461 + ], + [ + 1763402400, + 9207761114.267656, + 18413401955.473373, + 18034568371.966812, + 3056.176 + ], + [ + 1763424000, + 9107261270.36125, + 18155184990.0689, + 17928669793.168083, + 3021.3022 + ], + [ + 1763445600, + 9122792816.478125, + 18066474378.74601, + 17909392212.694412, + 3000.136 + ], + [ + 1763467200, + 9166571693.165625, + 18377814394.867634, + 18327175787.311344, + 3060.9102 + ], + [ + 1763488800, + 9370584726.0325, + 18720317482.38339, + 18178273124.988464, + 3131.4856 + ], + [ + 1763510400, + 9344280748.385937, + 18672800789.53843, + 18168783941.30752, + 3117.2227 + ], + [ + 1763532000, + 9076168734.84422, + 18267209939.14582, + 18039690158.12836, + 3009.7637 + ], + [ + 1763553600, + 9274560353.774063, + 18678440623.863667, + 18117346246.782375, + 3080.591 + ], + [ + 1763575200, + 8937136347.167969, + 17994668404.76531, + 17963022106.916523, + 2913.5269 + ], + [ + 1763596800, + 9259375898.771563, + 18465766392.294556, + 18093918821.64974, + 3020.9358 + ], + [ + 1763618400, + 9380598558.79336, + 18585329082.77485, + 18126382292.014217, + 3033.7207 + ], + [ + 1763640000, + 9335979412.059765, + 18513505877.89696, + 18123885900.667603, + 3021.0105 + ], + [ + 1763661600, + 8817885181.598906, + 17638072547.12265, + 17896220038.050407, + 2821.4365 + ], + [ + 1763683200, + 8984103299.344141, + 17574450321.23469, + 17890075791.744633, + 2832.0684 + ], + [ + 1763704800, + 8890191057.243359, + 17445471793.245632, + 17839950602.6354, + 2807.9307 + ], + [ + 1763726400, + 8481674614.422266, + 16822956033.94108, + 17620600859.72889, + 2684.9375 + ], + [ + 1763748000, + 8726834902.326641, + 17189790893.635166, + 17839702189.74109, + 2785.5068 + ], + [ + 1763769600, + 8637228695.633673, + 17081978008.409565, + 17815826527.336227, + 2769.1248 + ], + [ + 1763791200, + 8467632419.915077, + 16778990426.85535, + 17777801598.6258, + 2739.7344 + ], + [ + 1763812800, + 8504517241.175077, + 16823965741.11071, + 17785266610.310913, + 2735.6885 + ], + [ + 1763834400, + 8506603540.109453, + 16857046693.242966, + 17793374480.694138, + 2747.439 + ], + [ + 1763856000, + 8562213248.808985, + 16877940545.608002, + 17825894816.65635, + 2768.1536 + ], + [ + 1763877600, + 8749271575.510704, + 17176092686.47042, + 17875778262.086117, + 2821.8916 + ], + [ + 1763899200, + 7841865770.513985, + 17118719707.53632, + 17858899140.742844, + 2813.5955 + ], + [ + 1763920800, + 7831943873.952421, + 17082567062.001835, + 17885041384.037834, + 2798.9263 + ], + [ + 1763942400, + 7836915911.41836, + 17081109880.103743, + 17872211277.087326, + 2799.815 + ], + [ + 1763964000, + 8803539610.293829, + 17311069786.67595, + 17933831303.193314, + 2864.5833 + ], + [ + 1763985600, + 8695637204.376953, + 17037476765.240482, + 17811086398.828598, + 2800.013 + ], + [ + 1764007200, + 10016949307.577265, + 17639472943.357677, + 17960986054.590004, + 2940.887 + ], + [ + 1764028800, + 9989351919.343046, + 17656580800.444073, + 17982484605.980267, + 2952.335 + ], + [ + 1764050400, + 9904812942.026016, + 17576247236.18251, + 17940654422.414536, + 2931.6 + ], + [ + 1764072000, + 9781610643.101015, + 17395085141.567043, + 17923843133.773987, + 2892.532 + ], + [ + 1764093600, + 9893071003.153984, + 17511176254.17193, + 17889621614.620445, + 2941.185 + ], + [ + 1764115200, + 9950487672.996485, + 17616204966.55876, + 17918526285.70005, + 2955.0464 + ], + [ + 1764136800, + 9944117617.506798, + 17587739691.95447, + 17919103859.98119, + 2943.665 + ], + [ + 1764158400, + 9784132137.984922, + 17398638642.87732, + 17860737165.330956, + 2912.6704 + ], + [ + 1764180000, + 10044209901.369766, + 17917196237.208344, + 17968334096.659245, + 3018.7317 + ], + [ + 1764201600, + 10103067003.61211, + 17988593912.69814, + 17993342937.067833, + 3027.4773 + ], + [ + 1764223200, + 10108057177.532578, + 17966646560.62812, + 18001527146.142937, + 3022.9456 + ], + [ + 1764244800, + 10101249872.582735, + 17978826815.818466, + 17854891540.51721, + 3028.0903 + ], + [ + 1764266400, + 10119648281.743515, + 18015145459.647392, + 17851556340.561916, + 3019.5022 + ], + [ + 1764288000, + 10115507085.67539, + 17883469334.855682, + 17834552521.66692, + 3015.6118 + ], + [ + 1764309600, + 10073870713.174767, + 17897947501.19552, + 17844277004.025806, + 3023.7275 + ], + [ + 1764331200, + 10033373026.185547, + 17995415186.62708, + 17790708033.3625, + 3034.0002 + ], + [ + 1764352800, + 10048519113.368359, + 17870430166.999054, + 17737431359.34787, + 3036.9463 + ], + [ + 1764374400, + 10038802408.132578, + 17799677425.528755, + 17700918870.43666, + 3033.1357 + ], + [ + 1764396000, + 10001138088.461485, + 17802210959.20294, + 17664811313.45237, + 3033.2068 + ], + [ + 1764417600, + 9947955065.186796, + 17704835757.032288, + 17638698244.78922, + 3000.9863 + ], + [ + 1764439200, + 9877563922.45414, + 17558771656.960915, + 17712686341.86847, + 2972.5957 + ], + [ + 1764460800, + 9866079389.943516, + 17609650755.543533, + 17725898898.059345, + 2989.65 + ], + [ + 1764482400, + 9866578676.495703, + 17611615414.159115, + 17730101147.465862, + 2992.678 + ], + [ + 1764504000, + 9928227994.719141, + 17656733283.551094, + 17725715638.38793, + 3004.2341 + ], + [ + 1764525600, + 9979551116.294453, + 17783904835.241783, + 17752755431.09858, + 3039.9863 + ], + [ + 1764547200, + 9921694960.482422, + 17626118191.189156, + 17681298032.072052, + 2992.8342 + ], + [ + 1764568800, + 9326898468.853046, + 16792421289.677017, + 17477748662.131264, + 2828.2239 + ], + [ + 1764590400, + 9524930894.837265, + 16847913205.682617, + 17479198979.46263, + 2838.6443 + ], + [ + 1764612000, + 9350890651.744453, + 16432516778.603924, + 17446944706.280434, + 2740.4153 + ], + [ + 1764633600, + 9566469891.156328, + 16683774962.607536, + 17480890036.293697, + 2799.0369 + ], + [ + 1764655200, + 9566715638.415546, + 16747839456.425953, + 17508686731.306145, + 2802.17 + ], + [ + 1764676800, + 9623151169.065859, + 16859830491.280193, + 17539342215.953705, + 2826.885 + ], + [ + 1764698400, + 10100928155.235703, + 17734151879.885147, + 17776580941.15403, + 3019.1929 + ], + [ + 1764720000, + 10059031308.774609, + 17620354933.72876, + 17765258608.591705, + 2997.6025 + ], + [ + 1764741600, + 10265583516.455704, + 17925668482.969368, + 17825761892.527977, + 3059.4783 + ], + [ + 1764763200, + 10230193133.581875, + 17892946939.356262, + 17892749849.473495, + 3073.2944 + ], + [ + 1764784800, + 10315546326.58914, + 18079957400.69291, + 17902849419.48897, + 3129.8848 + ], + [ + 1764806400, + 10431701868.15625, + 18252808681.622734, + 17943913462.24417, + 3188.8818 + ], + [ + 1764828000, + 10382467774.621641, + 18217710097.613964, + 17921534627.082367, + 3186.228 + ], + [ + 1764849600, + 10355045201.490782, + 18163916856.68466, + 17934126262.738647, + 3187.1475 + ], + [ + 1764871200, + 10231692380.41789, + 18029349858.05325, + 17908410770.93576, + 3161.4167 + ], + [ + 1764892800, + 10179058947.600624, + 17855733465.558903, + 17908462721.483326, + 3133.6982 + ], + [ + 1764914400, + 10202260384.78172, + 17886299159.815247, + 17922663469.537514, + 3154.5867 + ], + [ + 1764936000, + 10084655901.746016, + 17802202051.398354, + 17887544669.98053, + 3131.4204 + ], + [ + 1764943200, + 9963049805.718594, + 17676633367.347954, + 17829513970.639874, + 3100.2725 + ] + ], + "syncedUntil": 1764943200 + }, + "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": 17150470144, + "native": 3935082295.7265625, + "canonical": 4284519917.306241, + "external": 8930869379.192017, + "ether": 3617607991.371706, + "stablecoin": 8530042083.695183, + "btc": 885572690.84375, + "other": 4111746250.323764, + "rwaRestricted": 0, + "rwaPublic": 5502575.9904174805, + "associated": 1173511552 + }, + "change7d": -0.0028566686083424386, + "associatedTokens": [ + { + "symbol": "ARB", + "icon": "https://coin-images.coingecko.com/coins/images/16547/large/arb.jpg?1721358242" + } + ] + } + }, + "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": 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": "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": 12765591552, + "native": 4517931910.03125, + "canonical": 3102186561.481796, + "external": 5145474240.53125, + "ether": 2962092690.9750023, + "stablecoin": 4522902658.173742, + "btc": 2504006125.9899545, + "other": 2776591236.905596, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.012337777935525485, + "associatedTokens": [] + } + }, + "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 105 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 105 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": 3426556416, + "native": 0, + "canonical": 2581605589.370846, + "external": 844951936, + "ether": 343679142.015625, + "stablecoin": 2163180854.716839, + "btc": 220102284.3500061, + "other": 698772756.8508754, + "rwaRestricted": 0, + "rwaPublic": 822487.4375, + "associated": 343815806.13000107 + }, + "change7d": 0.01517000038680405, + "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" + } + ] + } + }, + "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": 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": "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": 2398118144, + "native": 649568299, + "canonical": 1228507078.4998999, + "external": 520042940.5272217, + "ether": 777400344.8050232, + "stablecoin": 543899936.5973694, + "btc": 106502068.5, + "other": 970315968.1247289, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 596975104 + }, + "change7d": -0.02654307484873597, + "associatedTokens": [ + { + "symbol": "OP", + "icon": "/images/custom-tokens/optimism.png" + } + ] + } + }, + "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": 1774180224, + "native": 56368990.65625, + "canonical": 1332056841.222131, + "external": 385754347.25, + "ether": 535189606.7000122, + "stablecoin": 704091877.6904297, + "btc": 32206040, + "other": 474258968.7379391, + "rwaRestricted": 0, + "rwaPublic": 28433686, + "associated": 368782304 + }, + "change7d": 0.010142835310761988, + "associatedTokens": [ + { + "symbol": "MNT", + "icon": "https://assets.coingecko.com/coins/images/30980/large/token-logo.png?1696529819" + } + ] + } + }, + "lighter": { + "id": "lighter", + "name": "Lighter", + "slug": "lighter", + "type": "layer2", + "hostChain": "Ethereum", + "category": "ZK Rollup", + "purposes": [ + "Exchange" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "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": 1268534656, + "native": 0, + "canonical": 1268534656, + "external": 0, + "ether": 0, + "stablecoin": 1268534656, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.0347533728269811, + "associatedTokens": [] + } + }, + "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": 805630720, + "native": 2321790.25, + "canonical": 778145924.6265616, + "external": 25163019.65625, + "ether": 88776436.33124924, + "stablecoin": 137025249.67578125, + "btc": 213144081, + "other": 364363177.27578115, + "rwaRestricted": 0, + "rwaPublic": 2321790.25, + "associated": 328547360 + }, + "change7d": -0.11330036075236316, + "associatedTokens": [ + { + "symbol": "STRK", + "icon": "https://assets.coingecko.com/coins/images/26433/large/starknet.png?1696525507" + } + ] + } + }, + "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": 671365440, + "native": 8993156.46875, + "canonical": 417719067.2391608, + "external": 244653176.975708, + "ether": 448730898.2291405, + "stablecoin": 61922147.02911377, + "btc": 10933906.651367188, + "other": 149778448.7739973, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 140408400 + }, + "change7d": -0.14556219678496152, + "associatedTokens": [ + { + "symbol": "LINEA", + "icon": "https://coin-images.coingecko.com/coins/images/68507/large/linea-logo.jpeg?1756025484" + } + ] + } + }, + "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": 550174336, + "native": 0, + "canonical": 520995927.64000034, + "external": 29178414, + "ether": 23477992, + "stablecoin": 31520352.75, + "btc": 9108623, + "other": 486067373.89000034, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 486067360 + }, + "change7d": -0.08280738502062501, + "associatedTokens": [ + { + "symbol": "WLD", + "icon": "https://assets.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903" + } + ] + } + }, + "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": 509666688, + "native": 302155259.4609375, + "canonical": 176919139.6236874, + "external": 30592253.666015625, + "ether": 145299963.11798096, + "stablecoin": 57196743.89720787, + "btc": 2620692, + "other": 304549253.7354517, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 301067168 + }, + "change7d": -0.0905691715366953, + "associatedTokens": [ + { + "symbol": "ZK", + "icon": "https://coin-images.coingecko.com/coins/images/38043/large/ZKTokenBlack.png?1718614502" + } + ] + } + }, + "ink": { + "id": "ink", + "name": "Ink", + "slug": "ink", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "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": "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": 443621248, + "native": 0, + "canonical": 125134313.4, + "external": 318486960, + "ether": 125134312, + "stablecoin": 159878609, + "btc": 158608352, + "other": 0.4000000059604645, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.02254393943908939, + "associatedTokens": [] + } + }, + "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": 415266400, + "native": 54218784.40999985, + "canonical": 102276877.81609079, + "external": 258770719.82999992, + "ether": 190357078.32999992, + "stablecoin": 97477790.50578117, + "btc": 38012749.488125026, + "other": 89418730.81218627, + "rwaRestricted": 0, + "rwaPublic": 32.91999816894531, + "associated": 0 + }, + "change7d": -0.043612548656492334, + "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": 324337696, + "native": 268075266.0625, + "canonical": 9812862.606566008, + "external": 46449590.3125, + "ether": 8765292, + "stablecoin": 209436707.359375, + "btc": 979649.375, + "other": 105139069.81750351, + "rwaRestricted": 0, + "rwaPublic": 17000.4296875, + "associated": 98371656 + }, + "change7d": -0.016951830455120165, + "associatedTokens": [ + { + "symbol": "CELO", + "icon": "https://coin-images.coingecko.com/coins/images/11090/large/InjXBNx9_400x400.jpg?1696511031" + } + ] + } + }, + "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": 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": "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": 308420032, + "native": 0, + "canonical": 155150679.07756484, + "external": 153269340.16156197, + "ether": 185419237.04721498, + "stablecoin": 91457993.3359375, + "btc": 23355931.5, + "other": 8186857.355974317, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 3706274.5 + }, + "change7d": -0.10245745389189209, + "associatedTokens": [ + { + "symbol": "UNI", + "icon": "https://assets.coingecko.com/coins/images/12504/large/uni.jpg?1696512319" + } + ] + } + }, + "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": 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": "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": 260639152, + "native": 46241272, + "canonical": 12074464.314365089, + "external": 202323433.08789062, + "ether": 4478387.1474609375, + "stablecoin": 1710542.2836914062, + "btc": 207326841.08789062, + "other": 47123398.883212745, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 46241272 + }, + "change7d": 0.011724804492395657, + "associatedTokens": [ + { + "symbol": "BOB", + "icon": "https://coin-images.coingecko.com/coins/images/54720/large/BOB_symbol_colour.png?1741195397" + } + ] + } + }, + "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": 218802048, + "native": 0, + "canonical": 218802048, + "external": 0, + "ether": 0, + "stablecoin": 218802048, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.0670722073212896, + "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": 175595408, + "native": 0, + "canonical": 174692677.15309465, + "external": 902722.3359375, + "ether": 9677994.889062643, + "stablecoin": 129447351.94219589, + "btc": 17752.420000076294, + "other": 36452300.23777354, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 28232024.5 + }, + "change7d": -0.017499353636430737, + "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": 166923904, + "native": 47114882.91796875, + "canonical": 372395.3736782074, + "external": 119436623.04052734, + "ether": 84341919.75936127, + "stablecoin": 34743633.319885254, + "btc": 133728.53125, + "other": 47704619.72167778, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 46706504 + }, + "change7d": -0.03246339769206297, + "associatedTokens": [ + { + "symbol": "BLAST", + "icon": "https://coin-images.coingecko.com/coins/images/35494/large/Blast.jpg?1719385662" + } + ] + } + }, + "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": 144509376, + "native": 0, + "canonical": 144509376, + "external": 0, + "ether": 0, + "stablecoin": 144509376, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.016913932187768044, + "associatedTokens": [] + } + }, + "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": 142669504, + "native": 41864644, + "canonical": 40065217.36844635, + "external": 60739625.03948593, + "ether": 36539928.212890625, + "stablecoin": 38168178.08501816, + "btc": 16134860.510009766, + "other": 51826519.60001373, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 41864644 + }, + "change7d": -0.06359436512750549, + "associatedTokens": [ + { + "symbol": "MANTA", + "icon": "https://assets.coingecko.com/coins/images/34289/large/manta.jpg?1704468717" + } + ] + } + }, + "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": 135125312, + "native": 16667742, + "canonical": 89237468.87620354, + "external": 29220115.629211426, + "ether": 80435718.02484131, + "stablecoin": 36626627.08404541, + "btc": 1297929.23828125, + "other": 16765052.158246994, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 16667742 + }, + "change7d": -0.03328328047602025, + "associatedTokens": [ + { + "symbol": "SCR", + "icon": "https://coin-images.coingecko.com/coins/images/50571/large/scroll.jpg?1728376125" + } + ] + } + }, + "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": 122125808, + "native": 8412048.28125, + "canonical": 59657711.5, + "external": 54056049.5, + "ether": 56549640, + "stablecoin": 22681427.5, + "btc": 0, + "other": 42894741.78125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.029240505371227465, + "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": 105201320, + "native": 3320503.5, + "canonical": 10000936.728706965, + "external": 91879872.4876709, + "ether": 10461484.291992188, + "stablecoin": 1779059.208770752, + "btc": 89543514.93936157, + "other": 3417254.276253352, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 3320503.5 + }, + "change7d": -0.021619846865711057, + "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": 83253128, + "native": 2255898.25, + "canonical": 19785541.935134888, + "external": 61211672.040374756, + "ether": 20899255.05860901, + "stablecoin": 26396071.8671875, + "btc": 26356419.644989014, + "other": 9601365.654724121, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.05617901202377096, + "associatedTokens": [] + } + }, + "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": 78119032, + "native": 0, + "canonical": 56008247.0612793, + "external": 22110784.90625, + "ether": 22257302, + "stablecoin": 4848084.65625, + "btc": 482801.03125, + "other": 50530844.2800293, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 50527588 + }, + "change7d": 0.02864427955031945, + "associatedTokens": [ + { + "symbol": "LSK", + "icon": "https://coin-images.coingecko.com/coins/images/385/large/Lisk_Symbol_-_Blue.png?1696501687" + } + ] + } + }, + "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": 75493720, + "native": 0, + "canonical": 75493718.94435301, + "external": 0, + "ether": 14928031, + "stablecoin": 14747923.416259766, + "btc": 50610.078125, + "other": 45767154.44996825, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 45759500 + }, + "change7d": -0.07614048257918582, + "associatedTokens": [ + { + "symbol": "Metis", + "icon": "https://assets.coingecko.com/coins/images/15595/large/Metis_Black_Bg.png?1702968192" + } + ] + } + }, + "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": 63142248, + "native": 0, + "canonical": 166999.71250534058, + "external": 62975247.50076416, + "ether": 25028323, + "stablecoin": 16233578.86826828, + "btc": 21880236.93499756, + "other": 108.41000366210938, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.001568338933248703, + "associatedTokens": [ + { + "symbol": "LYRA" + } + ] + } + }, + "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": "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": 62173804, + "native": 126139.96875, + "canonical": 33055302.11000824, + "external": 28992358, + "ether": 126220.61875152588, + "stablecoin": 24757138.460006714, + "btc": 0, + "other": 33055070, + "rwaRestricted": 0, + "rwaPublic": 4235371, + "associated": 33055070 + }, + "change7d": -0.021103879132540415, + "associatedTokens": [ + { + "symbol": "PLUME", + "icon": "https://coin-images.coingecko.com/coins/images/53623/large/plume-token.png?1736896935" + } + ] + } + }, + "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": 60848644, + "native": 0, + "canonical": 0, + "external": 60848636.074596405, + "ether": 5350.7901611328125, + "stablecoin": 11996269.7890625, + "btc": 1496887.4953727722, + "other": 47350128, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 47350128 + }, + "change7d": 0.23640802723645082, + "associatedTokens": [ + { + "symbol": "CORN", + "icon": "https://coin-images.coingecko.com/coins/images/54471/large/corn.jpg?1739933588" + } + ] + } + }, + "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": 54926976, + "native": 0, + "canonical": 54926983.80429697, + "external": 0, + "ether": 2708945.375, + "stablecoin": 7872868.150000095, + "btc": 67993.1328125, + "other": 44277177.146484375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 31723112 + }, + "change7d": -0.06706115524060241, + "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": 54898508, + "native": 0, + "canonical": 54898507.30999756, + "external": 0, + "ether": 443.80999755859375, + "stablecoin": 5918395.5, + "btc": 0, + "other": 48979668, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 48979668 + }, + "change7d": -0.08036975969894544, + "associatedTokens": [ + { + "symbol": "SX", + "icon": "https://coin-images.coingecko.com/coins/images/34934/large/sx-ntework.jpeg?1706699134" + } + ] + } + }, + "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": 50098144, + "native": 0, + "canonical": 45327396.5703125, + "external": 4770749.125, + "ether": 10028393.375, + "stablecoin": 5714933.5, + "btc": 844057.1875, + "other": 33510761.6328125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 15301125 + }, + "change7d": -0.054608086378130194, + "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": 49844620, + "native": 0, + "canonical": 49844617.3860603, + "external": 0, + "ether": 40267198.52922058, + "stablecoin": 8759863.690172195, + "btc": 461247.55877685547, + "other": 356307.60789066553, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.006276938730601644, + "associatedTokens": [] + } + }, + "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": 42201776, + "native": 0, + "canonical": 0, + "external": 42201776, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 42201776, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 42201776 + }, + "change7d": -0.173659083317114, + "associatedTokens": [ + { + "symbol": "APE", + "icon": "https://coin-images.coingecko.com/coins/images/24383/large/apecoin.jpg?1696523566" + } + ] + } + }, + "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": 40507540, + "native": 26645.869140625, + "canonical": 40480891.889430225, + "external": 0, + "ether": 65.1500015258789, + "stablecoin": 577494.3093749881, + "btc": 1484.4300537109375, + "other": 39928493.869140625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 39901848 + }, + "change7d": -0.03526987457603836, + "associatedTokens": [ + { + "symbol": "EDU", + "icon": "https://coin-images.coingecko.com/coins/images/29948/large/EDU_Logo.png?1696528874" + } + ] + } + }, + "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": 34122344, + "native": 0, + "canonical": 33709825.95769501, + "external": 412512.861328125, + "ether": 8821104.440368652, + "stablecoin": 4592644.285110474, + "btc": 66688.35105466843, + "other": 20641901.742489338, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 20480406 + }, + "change7d": 0.0286424691029028, + "associatedTokens": [ + { + "symbol": "TAIKO", + "icon": "https://coin-images.coingecko.com/coins/images/38058/large/icon.png?1717626867" + } + ] + } + }, + "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": 33810380, + "native": 0, + "canonical": 0, + "external": 33810380, + "ether": 0, + "stablecoin": 33810380, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.06539074980230142, + "associatedTokens": [] + } + }, + "zircuit": { + "id": "zircuit", + "name": "Zircuit", + "slug": "zircuit", + "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": "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": "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": "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": 33450196, + "native": 0, + "canonical": 23576253.14144516, + "external": 9873940.8003124, + "ether": 19214237.207733154, + "stablecoin": 789979.7631260157, + "btc": 265926.4208984375, + "other": 13180050.549999952, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 13180049 + }, + "change7d": -0.10146513243117561, + "associatedTokens": [ + { + "symbol": "ZRC", + "icon": "https://coin-images.coingecko.com/coins/images/35960/large/zircuit_token_icon_2.png?1732502352" + } + ] + } + }, + "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": "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 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 (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": 31768688, + "native": 0, + "canonical": 24864816, + "external": 6903871.5625, + "ether": 5036713, + "stablecoin": 1867158.5625, + "btc": 0, + "other": 24864816, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 24864816 + }, + "change7d": -0.06867237443297192, + "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": 30650838, + "native": 0, + "canonical": 6418984, + "external": 24231854.335165024, + "ether": 21862048.5625, + "stablecoin": 6738584.572500229, + "btc": 1326.0400085449219, + "other": 2048879.16015625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.057129151502190556, + "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": 30443418, + "native": 0, + "canonical": 30365632.706975527, + "external": 77788.3828125, + "ether": 29752674.35, + "stablecoin": 613729.5180664062, + "btc": 24254.23046875, + "other": 52762.99125286937, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 33366.78125 + }, + "change7d": -0.027244201457474526, + "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": 29075332, + "native": 0, + "canonical": 25775867.28125, + "external": 3299463.25, + "ether": 7052897.28125, + "stablecoin": 21454298.1875, + "btc": 568135.0625, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.009056320880633684, + "associatedTokens": [ + { + "symbol": "AEVO" + } + ] + } + }, + "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": 27116838, + "native": 0, + "canonical": 24164967.099922895, + "external": 2951874.8666887283, + "ether": 8290340.9404296875, + "stablecoin": 6008052.426259041, + "btc": 22300.669921875, + "other": 12796147.93000102, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.011718334580370526, + "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": 24126610, + "native": 0, + "canonical": 24126603.433029175, + "external": 0, + "ether": 7111365.3583984375, + "stablecoin": 10629360.116210938, + "btc": 54162.708419799805, + "other": 6331715.25, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 5194915.5 + }, + "change7d": -0.06656594634224666, + "associatedTokens": [ + { + "symbol": "FUEL", + "icon": "https://coin-images.coingecko.com/coins/images/29577/large/fuel.png?1696528516" + } + ] + } + }, + "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": 23520830, + "native": 529275, + "canonical": 22991555.6796875, + "external": 0, + "ether": 1957224.625, + "stablecoin": 2669375.7109375, + "btc": 0, + "other": 18894230.34375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 14605466 + }, + "change7d": -0.09123430599255733, + "associatedTokens": [ + { + "symbol": "IMX", + "icon": "https://assets.coingecko.com/coins/images/17233/large/immutableX-symbol-BLK-RGB.png?1696516787" + } + ] + } + }, + "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": 22514152, + "native": 0, + "canonical": 22514152.5625, + "external": 0, + "ether": 16503484, + "stablecoin": 608304.4375, + "btc": 0, + "other": 5402364.125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 3778957.5 + }, + "change7d": -0.021567183774378385, + "associatedTokens": [ + { + "symbol": "IMX", + "icon": "https://assets.coingecko.com/coins/images/17233/large/immutableX-symbol-BLK-RGB.png?1696516787" + } + ] + } + }, + "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": 21908452, + "native": 0, + "canonical": 21908451.70625305, + "external": 0, + "ether": 113298.90625, + "stablecoin": 2128399, + "btc": 89.80000305175781, + "other": 19666664, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 19666664 + }, + "change7d": 0.1682434179149428, + "associatedTokens": [ + { + "symbol": "HSK", + "icon": "https://coin-images.coingecko.com/coins/images/29779/large/HSKlogo.jpg?1719445510" + } + ] + } + }, + "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": 20646854, + "native": 0, + "canonical": 19257398.879213244, + "external": 1389457.9158496093, + "ether": 17566851.766304016, + "stablecoin": 439637.4268846698, + "btc": 216746.28910446167, + "other": 2423621.3127697054, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2074889.125 + }, + "change7d": -0.006470618183001098, + "associatedTokens": [ + { + "symbol": "ZKL", + "icon": "https://coin-images.coingecko.com/coins/images/34982/large/Logo1.png?1714980729" + } + ] + } + }, + "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": 17027692, + "native": 0, + "canonical": 17027689.61612302, + "external": 0, + "ether": 10833691.925292969, + "stablecoin": 2060019.3707942963, + "btc": 1021724.6849975586, + "other": 3112253.635038197, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2556747.75 + }, + "change7d": -0.015454885647769312, + "associatedTokens": [ + { + "symbol": "LRC", + "icon": "https://assets.coingecko.com/coins/images/913/large/LRC.png?1696502034" + } + ] + } + }, + "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": 14295488, + "native": 0, + "canonical": 14295488.210026875, + "external": 0, + "ether": 536.1900024414062, + "stablecoin": 748.2600244134665, + "btc": 0, + "other": 14294203.76000002, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 14294200 + }, + "change7d": -0.1011962515473106, + "associatedTokens": [ + { + "symbol": "LUMIA", + "icon": "https://coin-images.coingecko.com/coins/images/50867/large/lumia.jpg?1729321993" + } + ] + } + }, + "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": 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": "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": 14245870, + "native": 0, + "canonical": 12147324.746683408, + "external": 2098542.8740234375, + "ether": 8666875.604194641, + "stablecoin": 3895727.8529682644, + "btc": 872052.75, + "other": 799083.3332293034, + "rwaRestricted": 0, + "rwaPublic": 12128.08031463623, + "associated": 394713.38671875 + }, + "change7d": -0.00018486151247876226, + "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" + } + ] + } + }, + "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": 13238413, + "native": 0, + "canonical": 13238413.56593776, + "external": 0, + "ether": 2746873.630001068, + "stablecoin": 10440359.755077362, + "btc": 36298.390625, + "other": 14881.790234329179, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 14857.240234375 + }, + "change7d": -0.015491579956575352, + "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": 12988336, + "native": 0, + "canonical": 12988335.991225628, + "external": 0, + "ether": 2851935.25, + "stablecoin": 6423095.742553711, + "btc": 3629390.5, + "other": 83914.49867191724, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.003860057462933719, + "associatedTokens": [] + } + }, + "haust": { + "id": "haust", + "name": "Haust Network", + "slug": "haust", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "providers": [ + "Agglayer CDK" + ], + "purposes": [ + "Exchange" + ], + "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": 11434843, + "native": 0, + "canonical": 11434842.817189455, + "external": 0, + "ether": 125.58000183105469, + "stablecoin": 85721.97718763351, + "btc": 4.170000076293945, + "other": 11348991.089999914, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 11348988 + }, + "change7d": 7.927910330850569, + "associatedTokens": [ + { + "symbol": "HAUST", + "icon": "https://coin-images.coingecko.com/coins/images/52141/large/chain-logo-200.png?1732643394" + } + ] + } + }, + "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": 11271266, + "native": 0, + "canonical": 11271266, + "external": 0, + "ether": 11271266, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.0028479640602576684, + "associatedTokens": [] + } + }, + "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": 10367902, + "native": 0, + "canonical": 10367902, + "external": 0, + "ether": 10367902, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009038120064797761, + "associatedTokens": [] + } + }, + "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": 9640799, + "native": 0, + "canonical": 9640798.9375, + "external": 0, + "ether": 9473457, + "stablecoin": 167341.9375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.004931679169419834, + "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": "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": "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": "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": 9015445, + "native": 0, + "canonical": 9015445, + "external": 0, + "ether": 8247693.125, + "stablecoin": 767751.875, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.0327865422886906, + "associatedTokens": [] + } + }, + "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": 8496412, + "native": 0, + "canonical": 8425859.095166922, + "external": 70552.5390625, + "ether": 4472366.5, + "stablecoin": 1657526.9102783203, + "btc": 649300.25, + "other": 1717217.9739511013, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1600792.125 + }, + "change7d": 0.033148649943505415, + "associatedTokens": [ + { + "symbol": "BOBA", + "icon": "https://assets.coingecko.com/coins/images/20285/large/Boba-200x200---white.png?1696519690" + } + ] + } + }, + "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": 7403171.5, + "native": 0, + "canonical": 7403171.649963379, + "external": 0, + "ether": 2928.169921875, + "stablecoin": 1486.4800415039062, + "btc": 0, + "other": 7398757, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 7398757 + }, + "change7d": -0.06222237760705296, + "associatedTokens": [ + { + "symbol": "RSS3", + "icon": "https://assets.coingecko.com/coins/images/23575/large/RSS3.png?1696522783" + } + ] + } + }, + "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": "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": "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. 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": 7078969, + "native": 0, + "canonical": 1019274.0278320312, + "external": 6059695, + "ether": 1003062.4375, + "stablecoin": 10536.09033203125, + "btc": 0, + "other": 6065370.5, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 6059695 + }, + "change7d": 0.019534416818430822, + "associatedTokens": [ + { + "symbol": "CYBER", + "icon": "https://coin-images.coingecko.com/coins/images/31274/large/token.png?1715826754" + } + ] + } + }, + "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": 6783593, + "native": 0, + "canonical": 6783593.419380546, + "external": 0, + "ether": 6183133.31000483, + "stablecoin": 51.1700005531311, + "btc": 570497.5695312023, + "other": 23.78000020980835, + "rwaRestricted": 0, + "rwaPublic": 29887.58984375, + "associated": 0 + }, + "change7d": -0.2485254584474672, + "associatedTokens": [ + { + "symbol": "hemi" + } + ] + } + }, + "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": 4907040, + "native": 0, + "canonical": 313021.21875, + "external": 4594018.700000048, + "ether": 313021.21875, + "stablecoin": 4594018.700000048, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.07921967552844045, + "associatedTokens": [] + } + }, + "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": 3789067, + "native": 0, + "canonical": 3789067.2768194377, + "external": 0, + "ether": 904859.125, + "stablecoin": 41135.04182624817, + "btc": 132.5399932861328, + "other": 2842940.5699999034, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2842935 + }, + "change7d": -0.0404850415554554, + "associatedTokens": [ + { + "symbol": "LL", + "icon": "https://coin-images.coingecko.com/coins/images/35357/large/lightlink-ticker-200.png?1708362303" + } + ] + } + }, + "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": 3752426.25, + "native": 0, + "canonical": 3752426.334461212, + "external": 0, + "ether": 3596225.5, + "stablecoin": 153899.24437332153, + "btc": 2301.590087890625, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.008549320106138403, + "associatedTokens": [] + } + }, + "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": 3430899.75, + "native": 0, + "canonical": 3430899.64453125, + "external": 0, + "ether": 2660635.5, + "stablecoin": 733184.484375, + "btc": 37079.66015625, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.0376694286678968, + "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": 3050887.25, + "native": 0, + "canonical": 405956.25, + "external": 2644930.875, + "ether": 405956.25, + "stablecoin": 2644930.875, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.3760125215251423, + "associatedTokens": [] + } + }, + "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": 2942265.75, + "native": 0, + "canonical": 2942266.030090332, + "external": 0, + "ether": 2936037.5299987793, + "stablecoin": 5828.670104980469, + "btc": 399.8299865722656, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.05378038668134022, + "associatedTokens": [] + } + }, + "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": 2623105, + "native": 0, + "canonical": 63788.5, + "external": 2559316.5883789062, + "ether": 331584.8623046875, + "stablecoin": 1762718.3125, + "btc": 32654.10107421875, + "other": 496147.8125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.010307500770867173, + "associatedTokens": [] + } + }, + "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": 2197446.5, + "native": 0, + "canonical": 2197446.421875, + "external": 0, + "ether": 1190349.5, + "stablecoin": 1007096.921875, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.005149601692626238, + "associatedTokens": [] + } + }, + "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": 2124025, + "native": 0, + "canonical": 2124024.980000019, + "external": 0, + "ether": 0, + "stablecoin": 1.9800000190734863, + "btc": 0, + "other": 2124023, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2124023 + }, + "change7d": -0.030015617067094436, + "associatedTokens": [ + { + "symbol": "PROM", + "icon": "https://coin-images.coingecko.com/coins/images/8825/large/Ticker.png?1696508978" + } + ] + } + }, + "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": 1800163.5, + "native": 51617.640625, + "canonical": 1748545.8767410368, + "external": 0, + "ether": 29406.4609375, + "stablecoin": 59033.30078125, + "btc": 522.4600219726562, + "other": 1711201.2956253141, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1659551.625 + }, + "change7d": 0.12016445009626708, + "associatedTokens": [ + { + "symbol": "DMT", + "icon": "https://assets.coingecko.com/coins/images/30505/large/dmt.png?1696529391" + } + ] + } + }, + "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": 1787131.5, + "native": 735930.787109375, + "canonical": 1051200.558227539, + "external": 0, + "ether": 967224.5, + "stablecoin": 82558.408203125, + "btc": 1417.6500244140625, + "other": 735930.787109375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.23280790228974468, + "associatedTokens": [] + } + }, + "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": 1668946.25, + "native": 0, + "canonical": 1668946.25, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 1668946.25, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1668946.25 + }, + "change7d": -0.09221501027852119, + "associatedTokens": [ + { + "symbol": "DIA", + "icon": "https://coin-images.coingecko.com/coins/images/11955/large/Token_Logo.png?1696511815" + } + ] + } + }, + "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": 1518720.875, + "native": 0, + "canonical": 1518720.875, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 1518720.875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1518720.875 + }, + "change7d": 0.04763592754807622, + "associatedTokens": [ + { + "symbol": "PEPU", + "icon": "https://coin-images.coingecko.com/coins/images/66717/large/pepu.jpg?1750303081" + } + ] + } + }, + "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": 1482805.625, + "native": 0, + "canonical": 1482805.59375, + "external": 0, + "ether": 408845.46875, + "stablecoin": 0, + "btc": 0, + "other": 1073960.125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1073960.125 + }, + "change7d": 0.5195103471288647, + "associatedTokens": [ + { + "symbol": "A8", + "icon": "https://coin-images.coingecko.com/coins/images/39170/large/A8_Token-04_200x200.png?1720798300" + } + ] + } + }, + "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": 1407901, + "native": 759375.875, + "canonical": 465733.71875, + "external": 182791.390625, + "ether": 465733.71875, + "stablecoin": 182791.390625, + "btc": 0, + "other": 759375.875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 759375.875 + }, + "change7d": 0.009312241190971848, + "associatedTokens": [ + { + "symbol": "SUPR", + "icon": "https://coin-images.coingecko.com/coins/images/55519/large/Small.png?1746469855" + } + ] + } + }, + "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": "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 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": 1378932.375, + "native": 0, + "canonical": 1319736.9300149158, + "external": 59195.44921875, + "ether": 1319288.8199996948, + "stablecoin": 59596.58923244476, + "btc": 0, + "other": 46.97000152617693, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.004925304662528163, + "associatedTokens": [] + } + }, + "facet": { + "id": "facet", + "name": "Facet v1", + "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": 1345629.875, + "native": 0, + "canonical": 167.41000366210938, + "external": 1345462.453125, + "ether": 1345629.863128662, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.01594763033079194, + "associatedTokens": [] + } + }, + "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": 1291122, + "native": 0, + "canonical": 1291122, + "external": 0, + "ether": 1291122, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.03932237915119896, + "associatedTokens": [] + } + }, + "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": 1214610.75, + "native": 0, + "canonical": 1214610.585033454, + "external": 0, + "ether": 6218.849999904633, + "stablecoin": 38.920001804828644, + "btc": 0.10000000149011612, + "other": 1208352.715031743, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1206947.0750170946 + }, + "change7d": -0.03952788935531959, + "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" + } + ] + } + }, + "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": 1115626.125, + "native": 0, + "canonical": 1115626.115386963, + "external": 0, + "ether": 1089904.875, + "stablecoin": 25650.900390625, + "btc": 0, + "other": 70.33999633789062, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.007909569428242058, + "associatedTokens": [] + } + }, + "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": 1044017.9375, + "native": 0, + "canonical": 828679.0817584991, + "external": 215338.875, + "ether": 762867.75, + "stablecoin": 215373.90500068665, + "btc": 44376.671875, + "other": 21399.6298828125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.029856128414144978, + "associatedTokens": [] + } + }, + "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": 1031285.625, + "native": 0, + "canonical": 1031285.6459335387, + "external": 0, + "ether": 46248.171875, + "stablecoin": 89734.51905822754, + "btc": 0, + "other": 895302.9550003111, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 895287.125 + }, + "change7d": -0.14447955356026276, + "associatedTokens": [ + { + "symbol": "XAI", + "icon": "https://assets.coingecko.com/coins/images/34258/large/2024-01-09_16.31.28.jpg?1704789138" + } + ] + } + }, + "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": "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 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 6d 9h of inactivity from the currently whitelisted Proposers." + } + ], + "tvs": { + "breakdown": { + "total": 934747.625, + "native": 0, + "canonical": 925392.5625, + "external": 9355.090148925781, + "ether": 4016.6201171875, + "stablecoin": 3368.1400756835938, + "btc": 0, + "other": 927362.8924560547, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 925392.5625 + }, + "change7d": -0.15638732502015118, + "associatedTokens": [ + { + "symbol": "WINR", + "icon": "https://assets.coingecko.com/coins/images/29340/large/WINR.png?1696528290" + } + ] + } + }, + "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": 917435.1875, + "native": 0, + "canonical": 917435.1720872894, + "external": 0, + "ether": 128763.453125, + "stablecoin": 607502.4375, + "btc": 117341.7421875, + "other": 63827.53927478939, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.00101654428027953, + "associatedTokens": [] + } + }, + "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": 910976.0625, + "native": 0, + "canonical": 910976.0800170898, + "external": 0, + "ether": 910412.75, + "stablecoin": 563.3300170898438, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.00042802092964699945, + "associatedTokens": [ + { + "symbol": "MTL" + } + ] + } + }, + "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": 903425.3125, + "native": 0, + "canonical": 397185.7349409908, + "external": 506239.568359375, + "ether": 22318.240234375, + "stablecoin": 454292.2161922455, + "btc": 39185.43187332153, + "other": 387629.4150004238, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 387364.125 + }, + "change7d": 0.004797232936689655, + "associatedTokens": [ + { + "symbol": "CAPS", + "icon": "https://coin-images.coingecko.com/coins/images/15921/large/e55393fa-7b4d-40f5-9f36-9a8a6bdcb570.png?1696515534" + } + ] + } + }, + "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": 828735.25, + "native": 0, + "canonical": 828735.3394145966, + "external": 0, + "ether": 734636.5428237915, + "stablecoin": 93763.33658027649, + "btc": 19.889999389648438, + "other": 315.570011138916, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.0038779450449564212, + "associatedTokens": [] + } + }, + "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": 699353.75, + "native": 0, + "canonical": 699353.7734375, + "external": 0, + "ether": 0, + "stablecoin": 71930.9609375, + "btc": 0, + "other": 627422.8125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 627422.8125 + }, + "change7d": -0.06947692619347368, + "associatedTokens": [ + { + "symbol": "FLT", + "icon": "https://coin-images.coingecko.com/coins/images/36339/large/IMG_3928.png?1727165842" + } + ] + } + }, + "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": 665455.9375, + "native": 0, + "canonical": 665455.9375, + "external": 0, + "ether": 665455.9375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.004581584068138023, + "associatedTokens": [] + } + }, + "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": 499525.6875, + "native": 0, + "canonical": 480027.78125, + "external": 19497.87939453125, + "ether": 18781.859375, + "stablecoin": 716.02001953125, + "btc": 0, + "other": 480027.78125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 480027.78125 + }, + "change7d": 0.03302772131839449, + "associatedTokens": [ + { + "symbol": "DEGEN", + "icon": "https://assets.coingecko.com/coins/images/34515/large/android-chrome-512x512.png?1706198225" + } + ] + } + }, + "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": 456156.0625, + "native": 0, + "canonical": 456156.0625, + "external": 0, + "ether": 443067.0625, + "stablecoin": 13089, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.008925716578086496, + "associatedTokens": [] + } + }, + "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": 446479.1875, + "native": 0, + "canonical": 446479.203125, + "external": 0, + "ether": 420946.59375, + "stablecoin": 24333.3193359375, + "btc": 0, + "other": 1199.2900390625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.008347556227630282, + "associatedTokens": [] + } + }, + "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": "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": "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. 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": 411646.6875, + "native": 0, + "canonical": 411646.67250061035, + "external": 0, + "ether": 177164.859375, + "stablecoin": 66.61000061035156, + "btc": 0, + "other": 234415.203125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.051037201603411964, + "associatedTokens": [] + } + }, + "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": 373133.78125, + "native": 0, + "canonical": 373133.78125, + "external": 0, + "ether": 373133.78125, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009037688867931104, + "associatedTokens": [] + } + }, + "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": 307445.0625, + "native": 0, + "canonical": 189757.03125, + "external": 117688.046875, + "ether": 189757.03125, + "stablecoin": 0, + "btc": 0, + "other": 117688.046875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 117688.046875 + }, + "change7d": 0.005228017563981169, + "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" + } + ] + } + }, + "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": 264488.1875, + "native": 228077.5625, + "canonical": 36410.63043451309, + "external": 0, + "ether": 9745.73046875, + "stablecoin": 24746.900024414062, + "btc": 1915.68994140625, + "other": 228079.87249994278, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 228077.5625 + }, + "change7d": 0.11313619876997172, + "associatedTokens": [ + { + "symbol": "ZKF", + "icon": "https://assets.coingecko.com/coins/images/34288/large/r8A3J3kf_400x400.jpg?1704455147" + } + ] + } + }, + "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": 230927.046875, + "native": 0, + "canonical": 230927.05438232422, + "external": 0, + "ether": 155.32000732421875, + "stablecoin": 0, + "btc": 0, + "other": 230771.734375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 230771.734375 + }, + "change7d": 0.000005954296847354712, + "associatedTokens": [ + { + "symbol": "PC", + "icon": "https://coin-images.coingecko.com/coins/images/66638/large/pentagon-chain-token-fcp.png?1750094674" + } + ] + } + }, + "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": 220045.015625, + "native": 0, + "canonical": 220045.01733398438, + "external": 0, + "ether": 2967.43994140625, + "stablecoin": 217077.57739257812, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.0005670377764672718, + "associatedTokens": [] + } + }, + "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": 163665.09375, + "native": 0, + "canonical": 163665.09375, + "external": 0, + "ether": 163665.09375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009037691696205385, + "associatedTokens": [ + { + "symbol": "MYRIA" + } + ] + } + }, + "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": 158727.953125, + "native": 0, + "canonical": 158727.95703125, + "external": 0, + "ether": 13812.169921875, + "stablecoin": 0, + "btc": 16677.380859375, + "other": 128238.40625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 128238.40625 + }, + "change7d": -0.06229505624241927, + "associatedTokens": [ + { + "symbol": "XCN", + "icon": "https://coin-images.coingecko.com/coins/images/24210/large/onyxlogo.jpg?1696523397" + } + ] + } + }, + "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": 138202.265625, + "native": 0, + "canonical": 138202.265625, + "external": 0, + "ether": 138202.265625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.006678720329823973, + "associatedTokens": [] + } + }, + "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": 91227.109375, + "native": 0, + "canonical": 91227.10791015625, + "external": 0, + "ether": 72710.2578125, + "stablecoin": 5211.27978515625, + "btc": 0, + "other": 13305.5703125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.02159327431311897, + "associatedTokens": [] + } + }, + "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": 84455.59375, + "native": 0, + "canonical": 84455.59375, + "external": 0, + "ether": 84455.59375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009037670354135718, + "associatedTokens": [] + } + }, + "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": 77735.625, + "native": 0, + "canonical": 77735.62343788147, + "external": 0, + "ether": 0, + "stablecoin": 9.100000381469727, + "btc": 0, + "other": 77726.5234375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 77726.5234375 + }, + "change7d": -0.07099812970188768, + "associatedTokens": [ + { + "symbol": "POWER", + "icon": "https://coin-images.coingecko.com/coins/images/53319/large/powerloom-200px.png?1736086027" + } + ] + } + }, + "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": 73155.0546875, + "native": 0, + "canonical": 73155.0462500453, + "external": 0, + "ether": 13.770000040531158, + "stablecoin": 1.8700000047683716, + "btc": 0, + "other": 73139.40625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 73139.40625 + }, + "change7d": 0.07268474329606911, + "associatedTokens": [ + { + "symbol": "MXC", + "icon": "https://assets.coingecko.com/coins/images/4604/large/M_1-modified.png?1712206949" + } + ] + } + }, + "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": 53589.32421875, + "native": 0, + "canonical": 53589.32159423828, + "external": 0, + "ether": 52512.6015625, + "stablecoin": 1076.7200317382812, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.010098978795247238, + "associatedTokens": [] + } + }, + "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": 51760.75390625, + "native": 0, + "canonical": 48922.671875, + "external": 2838.0799560546875, + "ether": 48922.671875, + "stablecoin": 2838.0799560546875, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.27488499782368414, + "associatedTokens": [] + } + }, + "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": 47257.94921875, + "native": 0, + "canonical": 47257.94921875, + "external": 0, + "ether": 31061.609375, + "stablecoin": 16196.33984375, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.0064201734668045685, + "associatedTokens": [] + } + }, + "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": 47192.5, + "native": 0, + "canonical": 47192.49934577942, + "external": 0, + "ether": 8643.10043144226, + "stablecoin": 37646.12890625, + "btc": 10.75, + "other": 892.5200080871582, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.001635145066133381, + "associatedTokens": [] + } + }, + "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": 44783.6875, + "native": 0, + "canonical": 44783.688125014305, + "external": 0, + "ether": 44782.328125, + "stablecoin": 1.3600000143051147, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009079993402257625, + "associatedTokens": [] + } + }, + "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": 42141.09765625, + "native": 0, + "canonical": 38735.21875, + "external": 3405.8798828125, + "ether": 38735.21875, + "stablecoin": 3405.8798828125, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.008301853850771757, + "associatedTokens": [] + } + }, + "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": 37520.96875, + "native": 0, + "canonical": 37520.96875, + "external": 0, + "ether": 37520.96875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009121881179058766, + "associatedTokens": [] + } + }, + "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": 37124.3125, + "native": 0, + "canonical": 37124.31123352051, + "external": 0, + "ether": 35347.78125, + "stablecoin": 366.1800079345703, + "btc": 0, + "other": 1410.3499755859375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 1410.3499755859375 + }, + "change7d": 0.0056472413233013, + "associatedTokens": [ + { + "symbol": "OPAI", + "icon": "https://coin-images.coingecko.com/coins/images/39332/large/OPAI.jpg?1721777150" + } + ] + } + }, + "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": 26352.359375, + "native": 0, + "canonical": 26352.359843730927, + "external": 0, + "ether": 22303.259765625, + "stablecoin": 4044.580078125, + "btc": 4.519999980926514, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009401317882748339, + "associatedTokens": [] + } + }, + "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": "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": "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": "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 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." + } + ], + "tvs": { + "breakdown": { + "total": 25761.859375, + "native": 0, + "canonical": 25761.859375, + "external": 0, + "ether": 25761.859375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009139973376905974, + "associatedTokens": [] + } + }, + "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": 23243.58984375, + "native": 0, + "canonical": 23243.58984375, + "external": 0, + "ether": 23243.58984375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009037804839273855, + "associatedTokens": [] + } + }, + "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": 18195.16015625, + "native": 0, + "canonical": 18195.16015625, + "external": 0, + "ether": 18195.16015625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009037765688334476, + "associatedTokens": [] + } + }, + "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": 17880.140625, + "native": 0, + "canonical": 17880.140625, + "external": 0, + "ether": 17880.140625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009037837408867544, + "associatedTokens": [] + } + }, + "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": "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 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": 12408.119140625, + "native": 0, + "canonical": 12408.1196975708, + "external": 0, + "ether": 24.93000030517578, + "stablecoin": 8805.2998046875, + "btc": 0, + "other": 3577.889892578125, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 3577.889892578125 + }, + "change7d": -0.040611276555902576, + "associatedTokens": [ + { + "symbol": "MOLTEN", + "icon": "https://assets.coingecko.com/coins/images/36726/large/moltenmesh.png?1712147407" + } + ] + } + }, + "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": 12010.8193359375, + "native": 0, + "canonical": 12010.819530427456, + "external": 0, + "ether": 11956.76953125, + "stablecoin": 23.6299991607666, + "btc": 0, + "other": 30.4200000166893, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0.9599999785423279 + }, + "change7d": 0.008870853630176923, + "associatedTokens": [ + { + "symbol": "ERN", + "icon": "https://coin-images.coingecko.com/coins/images/14238/large/logo_black.png?1715198164" + } + ] + } + }, + "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": 9414.16015625, + "native": 0, + "canonical": 9414.16015625, + "external": 0, + "ether": 9414.16015625, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.00887444478468602, + "associatedTokens": [] + } + }, + "jovay": { + "id": "jovay", + "name": "Jovay", + "slug": "jovay", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Other", + "purposes": [ + "Universal", + "RWA" + ], + "isArchived": false, + "isUpcoming": false, + "isUnderReview": true, + "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": 6739.93017578125, + "native": 0, + "canonical": 6739.93017578125, + "external": 0, + "ether": 6739.93017578125, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009733423904257466, + "associatedTokens": [] + } + }, + "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": 4263.10009765625, + "native": 0, + "canonical": 4263.10009765625, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 4263.10009765625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 4263.10009765625 + }, + "change7d": -0.033610877254112714, + "associatedTokens": [ + { + "symbol": "ELON", + "icon": "https://assets.coingecko.com/coins/images/14962/large/6GxcPRo3_400x400.jpg?1696514622" + } + ] + } + }, + "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": 4135.1201171875, + "native": 0, + "canonical": 4135.120038986206, + "external": 0, + "ether": 4127.2900390625, + "stablecoin": 0, + "btc": 0, + "other": 7.829999923706055, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 7.829999923706055 + }, + "change7d": 0.03386010549767304, + "associatedTokens": [ + { + "symbol": "PHA", + "icon": "https://assets.coingecko.com/coins/images/12451/large/phala.png?1696512270" + } + ] + } + }, + "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": 3582.590087890625, + "native": 0, + "canonical": 3582.5900268554688, + "external": 0, + "ether": 580.0499877929688, + "stablecoin": 0, + "btc": 0, + "other": 3002.5400390625, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.3528499499167739, + "associatedTokens": [] + } + }, + "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": 3515.030029296875, + "native": 0, + "canonical": 3515.030029296875, + "external": 0, + "ether": 3515.030029296875, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009036752745762877, + "associatedTokens": [] + } + }, + "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": 2316.06005859375, + "native": 0, + "canonical": 2316.06005859375, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 2316.06005859375, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 2316.06005859375 + }, + "change7d": 0.07409486508629137, + "associatedTokens": [ + { + "symbol": "ATA", + "icon": "https://coin-images.coingecko.com/coins/images/15985/large/ATA_Icon_%28Profile_2%29.png?1720487988" + } + ] + } + }, + "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": 1616.239990234375, + "native": 0, + "canonical": 1616.239990234375, + "external": 0, + "ether": 1616.239990234375, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.01097776896793845, + "associatedTokens": [] + } + }, + "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": 1249.550048828125, + "native": 0, + "canonical": 1249.550048828125, + "external": 0, + "ether": 1249.550048828125, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009036195943771252, + "associatedTokens": [] + } + }, + "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": [ + { + "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": "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": 1040.5799560546875, + "native": 0, + "canonical": 1040.5799956321716, + "external": 0, + "ether": 790.5499954223633, + "stablecoin": 126.04999923706055, + "btc": 41.15999984741211, + "other": 30.12000036239624, + "rwaRestricted": 0, + "rwaPublic": 52.70000076293945, + "associated": 0 + }, + "change7d": -0.052545394162978876, + "associatedTokens": [] + } + }, + "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": 294.75, + "native": 0, + "canonical": 294.75, + "external": 0, + "ether": 144.6300048828125, + "stablecoin": 22, + "btc": 0, + "other": 128.1199951171875, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 128.1199951171875 + }, + "change7d": 0.029478546028344654, + "associatedTokens": [ + { + "symbol": "RDO", + "icon": "https://coin-images.coingecko.com/coins/images/55332/large/reddio.png?1745470527" + } + ] + } + }, + "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": 241.00999450683594, + "native": 0, + "canonical": 241.00999450683594, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 241.00999450683594, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": -0.0764484886629696, + "associatedTokens": [] + } + }, + "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": 72.7300033569336, + "native": 0, + "canonical": 72.7300033569336, + "external": 0, + "ether": 72.7300033569336, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.009017778986776692, + "associatedTokens": [] + } + }, + "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": 41.18000030517578, + "native": 0, + "canonical": 41.18000030517578, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 41.18000030517578, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 41.18000030517578 + }, + "change7d": -0.10380849572500706, + "associatedTokens": [ + { + "symbol": "EARNM", + "icon": "https://coin-images.coingecko.com/coins/images/52925/large/earnm.jpg?1734706204" + } + ] + } + }, + "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": 18.80000114440918, + "native": 0, + "canonical": 18.79999975860119, + "external": 0, + "ether": 8.099999785423279, + "stablecoin": 7.54999996162951, + "btc": 0, + "other": 3.1500000115484, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0.025081735703700758, + "associatedTokens": [] + } + }, + "cartesi-prt-honeypot-v2": { + "id": "cartesi-prt-honeypot-v2", + "name": "Cartesi PRT Honeypot v2", + "shortName": "Honeypot v2", + "slug": "cartesi-prt-honeypot-v2", + "type": "layer2", + "hostChain": "Ethereum", + "category": "Optimistic Rollup", + "providers": [ + "Cartesi Rollups" + ], + "purposes": [ + "Bug bounty" + ], + "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": "CartesiVM", + "type": "VM", + "name": "CartesiVM", + "description": "This project uses the Cartesi Machine to run its smart contracts and supports any programming language that can be ported to RISC-V architecture", + "action": { + "type": "scalingFilter", + "id": "vm", + "value": "CartesiVM" + } + }, + { + "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": "Cartesi", + "type": "Stack", + "name": "Built on the Cartesi stack", + "description": "The project is built on the Cartesi stack", + "action": { + "type": "scalingFilter", + "id": "stack", + "value": "Cartesi Rollups" + } + } + ], + "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 (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": "Not applicable", + "sentiment": "neutral", + "warning": { + "value": "Bug bounty Appchain: The single hardcoded address can withdraw all funds.", + "sentiment": "bad" + }, + "description": "Users cannot exit their funds as all deposits are considered donations." + }, + { + "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": 0, + "associated": 0, + "ether": 0, + "stablecoin": 0 + }, + "change7d": 0, + "associatedTokens": [ + { + "symbol": "CTSI" + } + ] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "megaeth": { + "id": "megaeth", + "name": "Megaeth", + "slug": "megaeth", + "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": 0, + "native": 0, + "canonical": 0, + "external": 0, + "ether": 0, + "stablecoin": 0, + "btc": 0, + "other": 0, + "rwaRestricted": 0, + "rwaPublic": 0, + "associated": 0 + }, + "change7d": 0, + "associatedTokens": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + }, + "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": [] + } + } + } +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-posts.json b/src/data-layer/mocks/fetch-posts.json new file mode 100644 index 00000000000..b48504b92b0 --- /dev/null +++ b/src/data-layer/mocks/fetch-posts.json @@ -0,0 +1,402 @@ +[ + { + "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" + } +] \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-rss.json b/src/data-layer/mocks/fetch-rss.json new file mode 100644 index 00000000000..d4e1d5eeb54 --- /dev/null +++ b/src/data-layer/mocks/fetch-rss.json @@ -0,0 +1,9408 @@ +[ + [ + { + "pubDate": "Tue, 25 Nov 2025 00:00:00 +0000", + "title": "Plinko PIR tutorial", + "link": "https://vitalik.ca/general/2025/11/25/plinko.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, 07 Nov 2025 00:00:00 +0000", + "title": "Galaxy brain resistance", + "link": "https://vitalik.ca/general/2025/11/07/galaxybrain.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 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, 04 Dec 2025 00:00:00 GMT", + "title": "Devconnect Argentina Recap", + "link": "https://blog.ethereum.org/en/2025/12/04/devconnect-arg-wrap", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_1c3b8dfb30c6ab02602f40f675d59422.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Tue, 02 Dec 2025 00:00:00 GMT", + "title": "Allocation Update - Q3 2025", + "link": "https://blog.ethereum.org/en/2025/12/02/allocation-q3-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": "Tue, 18 Nov 2025 00:00:00 GMT", + "title": "Making Ethereum Feel Like One Chain Again", + "link": "https://blog.ethereum.org/en/2025/11/18/eil", + "imgSrc": "https://storage.googleapis.com/ethereum-hackmd/upload_e61f585e8da437595b779f03a5ccbf47.jpeg", + "source": "Ethereum Foundation Blog", + "sourceUrl": "https://blog.ethereum.org", + "sourceFeedUrl": "https://blog.ethereum.org/en/feed.xml" + }, + { + "pubDate": "Sat, 15 Nov 2025 00:00:00 GMT", + "title": "Checkpoint #7: Nov 2025", + "link": "https://blog.ethereum.org/en/2025/11/15/checkpoint-7", + "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": "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": "Wed, 03 Dec 2025 00:00:00 GMT", + "title": "Announcing Live Custody Monitoring for PeerDAS", + "link": "https://ethpandaops.io/posts/live-custody-monitoring-peerdas/", + "imgSrc": "https://ethpandaops.io/img/blog/announcing-dasmon.png", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.xml" + }, + { + "pubDate": "Fri, 14 Nov 2025 00:00:00 GMT", + "title": "Introducing The Lab", + "link": "https://ethpandaops.io/posts/the-lab/", + "imgSrc": "https://ethpandaops.io/img/blog/the-new-lab/header.png", + "source": "ethPandaOps Blog", + "sourceUrl": "https://ethpandaops.io/posts/", + "sourceFeedUrl": "https://ethpandaops.io/posts/rss.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, 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": "Thu, 04 Dec 2025 00:00:00 GMT", + "title": "Solidity Summit 2025 Recap", + "link": "https://soliditylang.org///blog/2025/12/04/solidity-summit-2025-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, 03 Dec 2025 00:00:00 GMT", + "title": "Solidity 0.8.31 Release Announcement", + "link": "https://soliditylang.org///blog/2025/12/03/solidity-0.8.31-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, 14 Nov 2025 00:00:00 GMT", + "title": "Core Solidity Deep Dive", + "link": "https://soliditylang.org///blog/2025/11/14/core-solidity-deep-dive", + "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 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": "Mon, 26 May 2025 17:52:38 GMT", + "title": "We're moving! šŸ‘‹ ", + "link": "https://paragraph.com/@privacy-scaling-explorations/we-re-moving", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Mon, 07 Apr 2025 11:58:40 GMT", + "title": "Code Optimizations in the Landscape of Post-Quantum Cryptography", + "link": "https://paragraph.com/@privacy-scaling-explorations/code-optimizations-in-the-landscape-of-post-quantum-cryptography", + "imgSrc": "https://storage.googleapis.com/papyrus_images/135ee851eb93742b292de6194b3dd99e9ff593201202de6678f8e539eb3c05bc.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Thu, 06 Mar 2025 15:55:16 GMT", + "title": "Circom MPC: TL;DR and Retrospective", + "link": "https://paragraph.com/@privacy-scaling-explorations/circom-mpc-tl-dr-and-retrospective", + "imgSrc": "https://storage.googleapis.com/papyrus_images/bec8986d1a8dc271d67faaf01fe587e0265beb085616c0d41028e22a72cd6615.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 04 Mar 2025 15:41:45 GMT", + "title": "Intmax: a scalable payment L2 from plasma and validity proofs", + "link": "https://paragraph.com/@privacy-scaling-explorations/intmax-a-scalable-payment-l2-from-plasma-and-validity-proofs", + "imgSrc": "https://storage.googleapis.com/papyrus_images/1454ad83672503169d371d94325916fff0d93e628b959b873696ae0f923488a3.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 18 Feb 2025 05:20:22 GMT", + "title": "Lattice-Based Proof Systems", + "link": "https://paragraph.com/@privacy-scaling-explorations/lattice-based-proof-systems", + "imgSrc": "https://storage.googleapis.com/papyrus_images/9883f2b4f15e81099bfa3acf490c8ee2e4c80e6271f423a74ba28b6b04a95c57.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Mon, 10 Feb 2025 05:02:22 GMT", + "title": "Retrospective: Summa", + "link": "https://paragraph.com/@privacy-scaling-explorations/retrospective-summa", + "imgSrc": "https://commons.wikimedia.org/wiki/File:Olivetti_Summa_Prima_20_sans_capot.jpg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Thu, 30 Jan 2025 14:40:11 GMT", + "title": "Web2 Nullifiers using vOPRF", + "link": "https://paragraph.com/@privacy-scaling-explorations/web2-nullifiers-using-voprf", + "imgSrc": "https://commons.wikimedia.org/wiki/File:Spider_web_Luc_Viatour.jpg", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 28 Jan 2025 14:37:31 GMT", + "title": "Certificate Transparency Using NewtonPIR", + "link": "https://paragraph.com/@privacy-scaling-explorations/certificate-transparency-using-newtonpir", + "imgSrc": "https://storage.googleapis.com/papyrus_images/f9fa6db1292325f688b7929df51bd590689fdf9964c30fd3fe6687ecf8a9247f.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Thu, 23 Jan 2025 15:34:27 GMT", + "title": "Self-Sovereign Identity & Programmable Cryptography: Challenges Ahead", + "link": "https://paragraph.com/@privacy-scaling-explorations/self-sovereign-identity-programmable-cryptography-challenges-ahead", + "imgSrc": "https://storage.googleapis.com/papyrus_images/f187a3520130bd6c8adcd58d4117a617100a0d2c32d4b11f14588542ce1c4d6a.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 21 Jan 2025 18:21:50 GMT", + "title": "Mopro: Comparison of Circom Provers", + "link": "https://paragraph.com/@privacy-scaling-explorations/mopro-comparison-of-circom-provers", + "imgSrc": "https://storage.googleapis.com/papyrus_images/20b85f3b4f3d7370ae2da9d6b0433f11f88f2d332ee1d18e9a5fd4eea358655a.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Wed, 15 Jan 2025 18:23:40 GMT", + "title": "Retrospective: Trusted Setups and P0tion Project ", + "link": "https://paragraph.com/@privacy-scaling-explorations/retrospective-trusted-setups-and-p0tion-project", + "imgSrc": "https://storage.googleapis.com/papyrus_images/e1338c42e6816ca47c9f9d7be4f560c13374441972036620bc2c2e2406f22fbc.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 14 Jan 2025 13:12:20 GMT", + "title": "Why We Can't Build Perfectly Secure Multi-Party Applications (yet)", + "link": "https://paragraph.com/@privacy-scaling-explorations/why-we-can-t-build-perfectly-secure-multi-party-applications-yet", + "imgSrc": "https://storage.googleapis.com/papyrus_images/2d8113aa0bc33bab0f3f11edf25a381345c892e14a59bf822867a1847014745b.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 01 Oct 2024 19:29:54 GMT", + "title": "AnonKlub: Reflections on Our Journey in Privacy-Preserving Solutions", + "link": "https://paragraph.com/@privacy-scaling-explorations/anonklub-reflections-on-our-journey-in-privacy-preserving-solutions", + "imgSrc": "https://storage.googleapis.com/papyrus_images/1ea724f9496572c6c8a9e77c1979765272b901ee09dd64a349024575dc473c67.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Tue, 06 Aug 2024 16:42:57 GMT", + "title": "Secure Multi-Party Computation", + "link": "https://paragraph.com/@privacy-scaling-explorations/secure-multi-party-computation", + "imgSrc": "https://storage.googleapis.com/papyrus_images/b61fbb3a8353d24851280441992953448122ea7d21b0f61e717a1bf41aef2a28.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Wed, 05 Jun 2024 20:57:57 GMT", + "title": "The next chapter for zkEVM Community Edition", + "link": "https://paragraph.com/@privacy-scaling-explorations/the-next-chapter-for-zkevm-community-edition", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Wed, 24 Apr 2024 17:45:39 GMT", + "title": "Unleashing Potential: Introducing the PSE Core Program", + "link": "https://paragraph.com/@privacy-scaling-explorations/unleashing-potential-introducing-the-pse-core-program", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Wed, 14 Feb 2024 18:03:21 GMT", + "title": "Advancing Anon Aadhaar: what's new in v1.0.0", + "link": "https://paragraph.com/@privacy-scaling-explorations/advancing-anon-aadhaar-what-s-new-in-v1-0-0", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Wed, 20 Dec 2023 21:27:20 GMT", + "title": "Zero to Start: Applied Fully Homomorphic Encryption (FHE) Part 2", + "link": "https://paragraph.com/@privacy-scaling-explorations/zero-to-start-applied-fully-homomorphic-encryption-fhe-part-2", + "imgSrc": "https://storage.googleapis.com/papyrus_images/e8c815495e7167e30b58f948dae108456c87d0b48f701b3c4e2b228be3f81d3f.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Wed, 20 Dec 2023 21:26:22 GMT", + "title": "Zero to Start: Applied Fully Homomorphic Encryption (FHE) Part 1", + "link": "https://paragraph.com/@privacy-scaling-explorations/zero-to-start-applied-fully-homomorphic-encryption-fhe-part-1", + "imgSrc": "https://storage.googleapis.com/papyrus_images/d5e29490f7a4f3776da860ef0d97cd5c4c7b963af71ee7854b850b4f26d1c8d7.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "sourceFeedUrl": "https://mirror.xyz/privacy-scaling-explorations.eth/feed/atom" + }, + { + "pubDate": "Thu, 09 Nov 2023 17:30:59 GMT", + "title": "Beyond Zero-Knowledge: What’s Next in Programmable Cryptography?", + "link": "https://paragraph.com/@privacy-scaling-explorations/beyond-zero-knowledge-what-s-next-in-programmable-cryptography", + "imgSrc": "https://storage.googleapis.com/papyrus_images/ffe818fb227c526c99ff46875abd5eeed42fa3a8f91aac61c49965db5acc5734.png", + "source": "Privacy and Scaling Explorations", + "sourceUrl": "https://paragraph.com/@privacy-scaling-explorations", + "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": "Fri, 05 Dec 2025 12:00:00 GMT", + "title": "Philippines Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/philippines-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, 06 Nov 2025 12:00:00 GMT", + "title": "Mexico Ethereum Ecosystem Overview", + "link": "https://geodework.com/blog/mexico-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, 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" + } + ] +] \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-stablecoins-data.json b/src/data-layer/mocks/fetch-stablecoins-data.json new file mode 100644 index 00000000000..6866db352be --- /dev/null +++ b/src/data-layer/mocks/fetch-stablecoins-data.json @@ -0,0 +1,7010 @@ +[ + { + "id": "tether", + "symbol": "usdt", + "name": "Tether", + "image": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "current_price": 1, + "market_cap": 185563891978, + "market_cap_rank": 3, + "fully_diluted_valuation": 191032234462, + "total_volume": 79158801164, + "high_24h": 1, + "low_24h": 1, + "price_change_24h": -0.000062713185393637, + "price_change_percentage_24h": -0.00627, + "market_cap_change_24h": 198529191, + "market_cap_change_percentage_24h": 0.1071, + "circulating_supply": 185516177143.1422, + "total_supply": 190983113529.4662, + "max_supply": null, + "ath": 1.32, + "ath_change_percentage": -24.40103, + "ath_date": "2018-07-24T00:00:00.000Z", + "atl": 0.572521, + "atl_change_percentage": 74.70912, + "atl_date": "2015-03-02T00:00:00.000Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.200Z" + }, + { + "id": "usd-coin", + "symbol": "usdc", + "name": "USDC", + "image": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "current_price": 0.99981, + "market_cap": 77994396884, + "market_cap_rank": 6, + "fully_diluted_valuation": 78042371634, + "total_volume": 4520501924, + "high_24h": 0.999907, + "low_24h": 0.9997, + "price_change_24h": -0.000041531231961822, + "price_change_percentage_24h": -0.00415, + "market_cap_change_24h": 100252076, + "market_cap_change_percentage_24h": 0.1287, + "circulating_supply": 78009744015.27782, + "total_supply": 78057728205.25957, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -14.74346, + "ath_date": "2019-05-08T00:40:28.300Z", + "atl": 0.877647, + "atl_change_percentage": 13.91928, + "atl_date": "2023-03-11T08:02:13.981Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.993Z" + }, + { + "id": "usds", + "symbol": "usds", + "name": "USDS", + "image": "https://coin-images.coingecko.com/coins/images/39926/large/usds.webp?1726666683", + "current_price": 0.999825, + "market_cap": 9535392082, + "market_cap_rank": 19, + "fully_diluted_valuation": 9535756772, + "total_volume": 3325979, + "high_24h": 1, + "low_24h": 0.999598, + "price_change_24h": 0.00021756, + "price_change_percentage_24h": 0.02176, + "market_cap_change_24h": -76528804.10529709, + "market_cap_change_percentage_24h": -0.79619, + "circulating_supply": 9535640668.228224, + "total_supply": 9536005367.600906, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -5.42395, + "ath_date": "2024-10-29T05:40:51.197Z", + "atl": 0.948265, + "atl_change_percentage": 5.45295, + "atl_date": "2024-10-03T13:19:28.826Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.284Z" + }, + { + "id": "ethena-usde", + "symbol": "usde", + "name": "Ethena USDe", + "image": "https://coin-images.coingecko.com/coins/images/33613/large/usde.png?1733810059", + "current_price": 0.998708, + "market_cap": 6737927692, + "market_cap_rank": 27, + "fully_diluted_valuation": 6736189826, + "total_volume": 268518324, + "high_24h": 1.004, + "low_24h": 0.996125, + "price_change_24h": -0.001299797350192256, + "price_change_percentage_24h": -0.12998, + "market_cap_change_24h": -139529780.01088047, + "market_cap_change_percentage_24h": -2.0288, + "circulating_supply": 6745975989.525541, + "total_supply": 6744236047.975541, + "max_supply": null, + "ath": 1.032, + "ath_change_percentage": -3.18038, + "ath_date": "2023-12-20T15:38:34.596Z", + "atl": 0.929486, + "atl_change_percentage": 7.50651, + "atl_date": "2024-10-04T07:57:15.809Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.308Z" + }, + { + "id": "dai", + "symbol": "dai", + "name": "Dai", + "image": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "current_price": 0.999715, + "market_cap": 4324083988, + "market_cap_rank": 35, + "fully_diluted_valuation": 4325199943, + "total_volume": 67491479, + "high_24h": 1.001, + "low_24h": 0.998652, + "price_change_24h": -0.000062104518694373, + "price_change_percentage_24h": -0.00621, + "market_cap_change_24h": -19071617.046788216, + "market_cap_change_percentage_24h": -0.43912, + "circulating_supply": 4325184441.8063, + "total_supply": 4326300680.863837, + "max_supply": null, + "ath": 1.22, + "ath_change_percentage": -18.0097, + "ath_date": "2020-03-13T03:02:50.373Z", + "atl": 0.88196, + "atl_change_percentage": 13.31636, + "atl_date": "2023-03-11T07:50:50.514Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.802Z" + }, + { + "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.999974, + "market_cap": 3824187511, + "market_cap_rank": 41, + "fully_diluted_valuation": 3824187511, + "total_volume": 92028935, + "high_24h": 1.001, + "low_24h": 0.998904, + "price_change_24h": 0.00011456, + "price_change_percentage_24h": 0.01146, + "market_cap_change_24h": -1364770.7446994781, + "market_cap_change_percentage_24h": -0.03568, + "circulating_supply": 3822942472.727409, + "total_supply": 3822942472.727409, + "max_supply": null, + "ath": 1.021, + "ath_change_percentage": -2.02327, + "ath_date": "2023-10-23T22:44:57.056Z", + "atl": 0.959426, + "atl_change_percentage": 4.23784, + "atl_date": "2024-12-05T22:31:13.430Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.744Z" + }, + { + "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.999273, + "market_cap": 2724858867, + "market_cap_rank": 48, + "fully_diluted_valuation": 2724858867, + "total_volume": 280863591, + "high_24h": 0.999542, + "low_24h": 0.998756, + "price_change_24h": 0.00026482, + "price_change_percentage_24h": 0.02651, + "market_cap_change_24h": 8026763, + "market_cap_change_percentage_24h": 0.29545, + "circulating_supply": 2727377347.612584, + "total_supply": 2727377347.612584, + "max_supply": null, + "ath": 1.025, + "ath_change_percentage": -2.50619, + "ath_date": "2025-05-12T12:36:39.412Z", + "atl": 0.989633, + "atl_change_percentage": 0.96088, + "atl_date": "2025-10-01T08:51:32.103Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.524Z" + }, + { + "id": "tether-gold", + "symbol": "xaut", + "name": "Tether Gold", + "image": "https://coin-images.coingecko.com/coins/images/10481/large/Tether_Gold.png?1696510471", + "current_price": 4238.09, + "market_cap": 2212903730, + "market_cap_rank": 53, + "fully_diluted_valuation": 2212903730, + "total_volume": 271249262, + "high_24h": 4250.7, + "low_24h": 4186.58, + "price_change_24h": 27.66, + "price_change_percentage_24h": 0.65704, + "market_cap_change_24h": 15635721, + "market_cap_change_percentage_24h": 0.7116, + "circulating_supply": 522089.3, + "total_supply": 522089.3, + "max_supply": null, + "ath": 4392.88, + "ath_change_percentage": -3.50612, + "ath_date": "2025-10-17T05:01:31.881Z", + "atl": 1447.84, + "atl_change_percentage": 192.77115, + "atl_date": "2020-03-19T13:45:41.821Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.863Z" + }, + { + "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.998504, + "market_cap": 2187935130, + "market_cap_rank": 54, + "fully_diluted_valuation": 2187935130, + "total_volume": 500448, + "high_24h": 1.004, + "low_24h": 0.994396, + "price_change_24h": 0.00015417, + "price_change_percentage_24h": 0.01544, + "market_cap_change_24h": -1643472.687617302, + "market_cap_change_percentage_24h": -0.07506, + "circulating_supply": 2191433954.931986, + "total_supply": 2191433954.931986, + "max_supply": null, + "ath": 1.075, + "ath_change_percentage": -7.07969, + "ath_date": "2025-05-08T21:25:42.071Z", + "atl": 0.943422, + "atl_change_percentage": 5.83862, + "atl_date": "2025-07-08T10:16:34.749Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.326Z" + }, + { + "id": "pax-gold", + "symbol": "paxg", + "name": "PAX Gold", + "image": "https://coin-images.coingecko.com/coins/images/9519/large/paxgold.png?1696509604", + "current_price": 4257.49, + "market_cap": 1444868207, + "market_cap_rank": 73, + "fully_diluted_valuation": 1444868207, + "total_volume": 108382945, + "high_24h": 4258.45, + "low_24h": 4204.02, + "price_change_24h": 46.74, + "price_change_percentage_24h": 1.11004, + "market_cap_change_24h": 17081447, + "market_cap_change_percentage_24h": 1.19636, + "circulating_supply": 339347.673, + "total_supply": 339347.673, + "max_supply": null, + "ath": 4448.72, + "ath_change_percentage": -4.2745, + "ath_date": "2025-10-16T23:50:09.513Z", + "atl": 1399.64, + "atl_change_percentage": 204.26069, + "atl_date": "2019-11-18T03:09:35.959Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.703Z" + }, + { + "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.999839, + "market_cap": 1368250792, + "market_cap_rank": 75, + "fully_diluted_valuation": 1368250792, + "total_volume": 21550695, + "high_24h": 0.999916, + "low_24h": 0.999582, + "price_change_24h": -0.000052030405487957, + "price_change_percentage_24h": -0.0052, + "market_cap_change_24h": 98948817, + "market_cap_change_percentage_24h": 7.79553, + "circulating_supply": 1368490294.735266, + "total_supply": 1368490294.735266, + "max_supply": null, + "ath": 1.65, + "ath_change_percentage": -39.56885, + "ath_date": "2025-01-30T00:11:05.728Z", + "atl": 0.907561, + "atl_change_percentage": 10.1681, + "atl_date": "2024-11-11T23:55:50.604Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.757Z" + }, + { + "id": "bfusd", + "symbol": "bfusd", + "name": "BFUSD", + "image": "https://coin-images.coingecko.com/coins/images/68227/large/bfusd.png?1755132827", + "current_price": 0.999427, + "market_cap": 1319252493, + "market_cap_rank": 79, + "fully_diluted_valuation": 1319252493, + "total_volume": 9712556, + "high_24h": 0.9996, + "low_24h": 0.999234, + "price_change_24h": -0.000113912482418765, + "price_change_percentage_24h": -0.0114, + "market_cap_change_24h": -141356.11095786095, + "market_cap_change_percentage_24h": -0.01071, + "circulating_supply": 1320000000, + "total_supply": 1320000000, + "max_supply": null, + "ath": 1.007, + "ath_change_percentage": -0.7442, + "ath_date": "2025-10-10T21:40:40.468Z", + "atl": 0.99712, + "atl_change_percentage": 0.23175, + "atl_date": "2025-11-07T12:33:03.134Z", + "roi": null, + "last_updated": "2025-12-05T15:48:55.723Z" + }, + { + "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": 0.99963, + "market_cap": 1280277680, + "market_cap_rank": 84, + "fully_diluted_valuation": 1280277680, + "total_volume": 61145741, + "high_24h": 1, + "low_24h": 0.999017, + "price_change_24h": 0.00007194, + "price_change_percentage_24h": 0.0072, + "market_cap_change_24h": 180544, + "market_cap_change_percentage_24h": 0.0141, + "circulating_supply": 1280728083.971249, + "total_supply": 1280728083.971249, + "max_supply": null, + "ath": 1.073, + "ath_change_percentage": -6.82039, + "ath_date": "2024-12-26T10:45:52.337Z", + "atl": 0.962292, + "atl_change_percentage": 3.88196, + "atl_date": "2024-12-18T04:40:40.880Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.542Z" + }, + { + "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": 1, + "market_cap": 1048175690, + "market_cap_rank": 100, + "fully_diluted_valuation": 1048175690, + "total_volume": 7495937, + "high_24h": 1.003, + "low_24h": 0.994265, + "price_change_24h": 0.00140495, + "price_change_percentage_24h": 0.14065, + "market_cap_change_24h": -211451.623595953, + "market_cap_change_percentage_24h": -0.02017, + "circulating_supply": 1049530737.146182, + "total_supply": 1049530737.146182, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -5.40524, + "ath_date": "2025-09-20T13:20:33.315Z", + "atl": 0.900502, + "atl_change_percentage": 11.03603, + "atl_date": "2025-07-17T08:05:52.672Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.259Z" + }, + { + "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.997611, + "market_cap": 842830818, + "market_cap_rank": 109, + "fully_diluted_valuation": 842830818, + "total_volume": 828199289, + "high_24h": 0.99837, + "low_24h": 0.997501, + "price_change_24h": -0.000291571661610646, + "price_change_percentage_24h": -0.02922, + "market_cap_change_24h": -10060520.220998406, + "market_cap_change_percentage_24h": -1.17958, + "circulating_supply": 844772765.731652, + "total_supply": 844772765.731652, + "max_supply": null, + "ath": 1.15, + "ath_change_percentage": -13.33508, + "ath_date": "2025-02-03T02:30:49.959Z", + "atl": 0.940377, + "atl_change_percentage": 6.10651, + "atl_date": "2024-12-05T22:30:51.394Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.015Z" + }, + { + "id": "usual-usd", + "symbol": "usd0", + "name": "Usual USD", + "image": "https://coin-images.coingecko.com/coins/images/38272/large/USD0LOGO.png?1716962811", + "current_price": 0.999807, + "market_cap": 549189751, + "market_cap_rank": 141, + "fully_diluted_valuation": 549189751, + "total_volume": 1636904, + "high_24h": 1, + "low_24h": 0.995467, + "price_change_24h": 0.00205615, + "price_change_percentage_24h": 0.20608, + "market_cap_change_24h": 959800, + "market_cap_change_percentage_24h": 0.17507, + "circulating_supply": 549315688.3838526, + "total_supply": 549315688.3838526, + "max_supply": null, + "ath": 1.33, + "ath_change_percentage": -24.57597, + "ath_date": "2024-07-12T08:28:59.311Z", + "atl": 0.962885, + "atl_change_percentage": 3.84378, + "atl_date": "2025-04-10T08:30:51.088Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.275Z" + }, + { + "id": "usdd", + "symbol": "usdd", + "name": "USDD", + "image": "https://coin-images.coingecko.com/coins/images/25380/large/UUSD.jpg?1696524513", + "current_price": 1, + "market_cap": 500196138, + "market_cap_rank": 150, + "fully_diluted_valuation": 500805305, + "total_volume": 5385008, + "high_24h": 1, + "low_24h": 1, + "price_change_24h": -0.000090013608191164, + "price_change_percentage_24h": -0.009, + "market_cap_change_24h": -13128407.461702347, + "market_cap_change_percentage_24h": -2.55753, + "circulating_supply": 500115404, + "total_supply": 500724473, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -4.91079, + "ath_date": "2023-10-23T22:45:25.398Z", + "atl": 0.928067, + "atl_change_percentage": 7.76878, + "atl_date": "2022-06-19T16:15:11.558Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.502Z" + }, + { + "id": "true-usd", + "symbol": "tusd", + "name": "TrueUSD", + "image": "https://coin-images.coingecko.com/coins/images/3449/large/tusd.png?1696504140", + "current_price": 0.997366, + "market_cap": 493265335, + "market_cap_rank": 152, + "fully_diluted_valuation": 493265335, + "total_volume": 7785279, + "high_24h": 0.998645, + "low_24h": 0.997318, + "price_change_24h": -0.000896159908705396, + "price_change_percentage_24h": -0.08977, + "market_cap_change_24h": -451364.7684827447, + "market_cap_change_percentage_24h": -0.09142, + "circulating_supply": 494515083, + "total_supply": 494515083, + "max_supply": null, + "ath": 1.62, + "ath_change_percentage": -38.37989, + "ath_date": "2018-08-26T20:41:09.375Z", + "atl": 0.88355, + "atl_change_percentage": 12.87754, + "atl_date": "2020-03-12T10:47:51.380Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.910Z" + }, + { + "id": "gho", + "symbol": "gho", + "name": "GHO", + "image": "https://coin-images.coingecko.com/coins/images/30663/large/gho-token-logo.png?1720517092", + "current_price": 1, + "market_cap": 429511244, + "market_cap_rank": 167, + "fully_diluted_valuation": 429511244, + "total_volume": 13788530, + "high_24h": 1.001, + "low_24h": 0.998649, + "price_change_24h": 0.00027677, + "price_change_percentage_24h": 0.02767, + "market_cap_change_24h": 954535, + "market_cap_change_percentage_24h": 0.22273, + "circulating_supply": 429491915.171915, + "total_supply": 429491915.171915, + "max_supply": null, + "ath": 1.03, + "ath_change_percentage": -2.89577, + "ath_date": "2024-02-28T17:15:58.387Z", + "atl": 0.917065, + "atl_change_percentage": 9.04571, + "atl_date": "2023-10-24T04:41:04.568Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.669Z" + }, + { + "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.99171, + "market_cap": 402577881, + "market_cap_rank": 175, + "fully_diluted_valuation": 402577881, + "total_volume": 428157, + "high_24h": 1.016, + "low_24h": 0.974607, + "price_change_24h": -0.018156155229699045, + "price_change_percentage_24h": -1.79788, + "market_cap_change_24h": -7929833.3638212085, + "market_cap_change_percentage_24h": -1.93171, + "circulating_supply": 406046631.5607005, + "total_supply": 406046631.5607005, + "max_supply": null, + "ath": 1.088, + "ath_change_percentage": -8.87849, + "ath_date": "2025-03-02T16:57:39.891Z", + "atl": 0.831432, + "atl_change_percentage": 19.24693, + "atl_date": "2025-10-10T21:28:37.488Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.261Z" + }, + { + "id": "euro-coin", + "symbol": "eurc", + "name": "EURC", + "image": "https://coin-images.coingecko.com/coins/images/26045/large/euro.png?1696525125", + "current_price": 1.16, + "market_cap": 334342130, + "market_cap_rank": 203, + "fully_diluted_valuation": 335001067, + "total_volume": 30004704, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.001845148583511591, + "price_change_percentage_24h": -0.1582, + "market_cap_change_24h": 3098876, + "market_cap_change_percentage_24h": 0.93553, + "circulating_supply": 287048035.3264813, + "total_supply": 287613762.6764813, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -13.83054, + "ath_date": "2023-03-14T09:50:50.729Z", + "atl": 0.052848, + "atl_change_percentage": 2104.46624, + "atl_date": "2022-12-09T03:16:34.877Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.520Z" + }, + { + "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": 0.999922, + "market_cap": 326998659, + "market_cap_rank": 205, + "fully_diluted_valuation": 326998659, + "total_volume": 2548784, + "high_24h": 1.01, + "low_24h": 0.996744, + "price_change_24h": -0.000347930875757352, + "price_change_percentage_24h": -0.03478, + "market_cap_change_24h": 954403, + "market_cap_change_percentage_24h": 0.29272, + "circulating_supply": 326994673.341545, + "total_supply": 326994673.341545, + "max_supply": null, + "ath": 1.037, + "ath_change_percentage": -3.55891, + "ath_date": "2025-11-16T07:13:17.277Z", + "atl": 0.995216, + "atl_change_percentage": 0.47413, + "atl_date": "2025-11-29T07:05:17.827Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.218Z" + }, + { + "id": "kinesis-gold", + "symbol": "kau", + "name": "Kinesis Gold", + "image": "https://coin-images.coingecko.com/coins/images/29788/large/kau-currency-ticker.png?1696528718", + "current_price": 136.61, + "market_cap": 325416659, + "market_cap_rank": 206, + "fully_diluted_valuation": 325416659, + "total_volume": 362052, + "high_24h": 136.72, + "low_24h": 134.86, + "price_change_24h": 1.66, + "price_change_percentage_24h": 1.23327, + "market_cap_change_24h": 3400356, + "market_cap_change_percentage_24h": 1.05596, + "circulating_supply": 2386227.8342, + "total_supply": 2386227.8342, + "max_supply": null, + "ath": 140.72, + "ath_change_percentage": -3.08927, + "ath_date": "2025-10-20T20:15:53.754Z", + "atl": 44.06, + "atl_change_percentage": 209.54649, + "atl_date": "2023-04-21T21:02:50.248Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.796Z" + }, + { + "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.998668, + "market_cap": 312074961, + "market_cap_rank": 209, + "fully_diluted_valuation": 312074961, + "total_volume": 3515122, + "high_24h": 1.005, + "low_24h": 0.991891, + "price_change_24h": -0.002879069566390613, + "price_change_percentage_24h": -0.28746, + "market_cap_change_24h": -682965.0527967811, + "market_cap_change_percentage_24h": -0.21837, + "circulating_supply": 312477997.5095268, + "total_supply": 312477997.5095268, + "max_supply": null, + "ath": 1.15, + "ath_change_percentage": -12.90109, + "ath_date": "2025-09-21T07:13:14.819Z", + "atl": 0.896883, + "atl_change_percentage": 11.37824, + "atl_date": "2025-10-10T21:20:16.934Z", + "roi": null, + "last_updated": "2025-12-05T15:48:56.567Z" + }, + { + "id": "crvusd", + "symbol": "crvusd", + "name": "crvUSD", + "image": "https://coin-images.coingecko.com/coins/images/30118/large/crvusd.jpg?1746670973", + "current_price": 1, + "market_cap": 294865901, + "market_cap_rank": 223, + "fully_diluted_valuation": 294881224, + "total_volume": 31711124, + "high_24h": 1.005, + "low_24h": 0.994701, + "price_change_24h": 0.00080201, + "price_change_percentage_24h": 0.08024, + "market_cap_change_24h": -10683489.313180566, + "market_cap_change_percentage_24h": -3.49649, + "circulating_supply": 294583478.9025384, + "total_supply": 294598787.6525384, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -9.54262, + "ath_date": "2024-06-13T03:27:06.616Z", + "atl": 0.949016, + "atl_change_percentage": 5.43743, + "atl_date": "2023-08-08T06:24:06.210Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.614Z" + }, + { + "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.998997, + "market_cap": 286639566, + "market_cap_rank": 227, + "fully_diluted_valuation": 286642009, + "total_volume": 8680.08, + "high_24h": 1.004, + "low_24h": 0.996416, + "price_change_24h": -0.000602738927053537, + "price_change_percentage_24h": -0.0603, + "market_cap_change_24h": 4044294, + "market_cap_change_percentage_24h": 1.43113, + "circulating_supply": 286581412.9035018, + "total_supply": 286583856.0717808, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -14.6369, + "ath_date": "2025-10-10T21:42:31.469Z", + "atl": 0.947752, + "atl_change_percentage": 5.407, + "atl_date": "2025-10-02T15:05:38.504Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.079Z" + }, + { + "id": "frax", + "symbol": "frax", + "name": "Legacy Frax Dollar", + "image": "https://coin-images.coingecko.com/coins/images/13422/large/LFRAX.png?1751911193", + "current_price": 0.993793, + "market_cap": 281543781, + "market_cap_rank": 231, + "fully_diluted_valuation": 281543781, + "total_volume": 1470455, + "high_24h": 0.995301, + "low_24h": 0.991455, + "price_change_24h": -0.000310735322819333, + "price_change_percentage_24h": -0.03126, + "market_cap_change_24h": -284108.0338935852, + "market_cap_change_percentage_24h": -0.10081, + "circulating_supply": 283482712.2419175, + "total_supply": 283482712.2419175, + "max_supply": null, + "ath": 1.14, + "ath_change_percentage": -12.81531, + "ath_date": "2021-02-07T12:55:35.766Z", + "atl": 0.874536, + "atl_change_percentage": 13.69441, + "atl_date": "2023-03-11T07:50:39.316Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.572Z" + }, + { + "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.99833, + "market_cap": 234690717, + "market_cap_rank": 251, + "fully_diluted_valuation": 234672800, + "total_volume": 1140197, + "high_24h": 1.006, + "low_24h": 0.991615, + "price_change_24h": -0.001856082168114614, + "price_change_percentage_24h": -0.18557, + "market_cap_change_24h": 306372, + "market_cap_change_percentage_24h": 0.13071, + "circulating_supply": 235314950.782508, + "total_supply": 235296985.493373, + "max_supply": null, + "ath": 1.79, + "ath_change_percentage": -44.34156, + "ath_date": "2025-11-15T06:16:33.060Z", + "atl": 0.477017, + "atl_change_percentage": 108.50341, + "atl_date": "2025-11-16T09:37:44.211Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.344Z" + }, + { + "id": "usda-2", + "symbol": "usda", + "name": "USDa", + "image": "https://coin-images.coingecko.com/coins/images/51599/large/SUSDA.png?1731604761", + "current_price": 0.992197, + "market_cap": 220888831, + "market_cap_rank": 261, + "fully_diluted_valuation": 220888831, + "total_volume": 10015.75, + "high_24h": 0.995255, + "low_24h": 0.986924, + "price_change_24h": -0.000134680812817645, + "price_change_percentage_24h": -0.01357, + "market_cap_change_24h": -29916.86260396242, + "market_cap_change_percentage_24h": -0.01354, + "circulating_supply": 222625985.7067179, + "total_supply": 222625985.7067179, + "max_supply": null, + "ath": 1.021, + "ath_change_percentage": -2.86625, + "ath_date": "2025-01-13T15:25:59.380Z", + "atl": 0.737813, + "atl_change_percentage": 34.47819, + "atl_date": "2024-12-06T09:52:06.910Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.154Z" + }, + { + "id": "kinesis-silver", + "symbol": "kag", + "name": "Kinesis Silver", + "image": "https://coin-images.coingecko.com/coins/images/29789/large/kag-currency-ticker.png?1696528719", + "current_price": 59.06, + "market_cap": 219263817, + "market_cap_rank": 262, + "fully_diluted_valuation": 219263817, + "total_volume": 281918, + "high_24h": 59.11, + "low_24h": 56.86, + "price_change_24h": 1.96, + "price_change_percentage_24h": 3.43518, + "market_cap_change_24h": 7165289, + "market_cap_change_percentage_24h": 3.37828, + "circulating_supply": 3721963.8196, + "total_supply": 3721963.8196, + "max_supply": null, + "ath": 59.69, + "ath_change_percentage": -1.30534, + "ath_date": "2025-12-03T05:07:06.941Z", + "atl": 4.36, + "atl_change_percentage": 1250.21085, + "atl_date": "2024-02-11T14:01:27.124Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.874Z" + }, + { + "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.995118, + "market_cap": 207539429, + "market_cap_rank": 273, + "fully_diluted_valuation": 207539429, + "total_volume": 14441.12, + "high_24h": 0.996654, + "low_24h": 0.993336, + "price_change_24h": -0.001461332735643639, + "price_change_percentage_24h": -0.14663, + "market_cap_change_24h": -6019158.6899288, + "market_cap_change_percentage_24h": -2.8185, + "circulating_supply": 208554111.4525765, + "total_supply": 208554111.4525765, + "max_supply": null, + "ath": 1.68, + "ath_change_percentage": -40.70263, + "ath_date": "2025-02-22T13:29:49.609Z", + "atl": 0.635574, + "atl_change_percentage": 56.57265, + "atl_date": "2024-07-21T00:10:02.714Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.597Z" + }, + { + "id": "resolv-usr", + "symbol": "usr", + "name": "Resolv USR", + "image": "https://coin-images.coingecko.com/coins/images/40008/large/USR_LOGO.png?1725222638", + "current_price": 1, + "market_cap": 177097983, + "market_cap_rank": 299, + "fully_diluted_valuation": 177097983, + "total_volume": 568840, + "high_24h": 1.001, + "low_24h": 0.999307, + "price_change_24h": 0.00073801, + "price_change_percentage_24h": 0.07383, + "market_cap_change_24h": 56844, + "market_cap_change_percentage_24h": 0.03211, + "circulating_supply": 176962860.499265, + "total_supply": 176962860.499265, + "max_supply": null, + "ath": 1.022, + "ath_change_percentage": -2.10072, + "ath_date": "2025-01-30T14:52:41.281Z", + "atl": 0.959194, + "atl_change_percentage": 4.29685, + "atl_date": "2025-03-05T06:15:52.738Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.497Z" + }, + { + "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.99878, + "market_cap": 166219047, + "market_cap_rank": 308, + "fully_diluted_valuation": 166219047, + "total_volume": 672897, + "high_24h": 1.004, + "low_24h": 0.98699, + "price_change_24h": -0.000231648323250955, + "price_change_percentage_24h": -0.02319, + "market_cap_change_24h": -3423650.363899827, + "market_cap_change_percentage_24h": -2.01815, + "circulating_supply": 166420774.6945068, + "total_supply": 166420774.6945068, + "max_supply": null, + "ath": 1.046, + "ath_change_percentage": -4.54102, + "ath_date": "2025-10-10T22:42:58.541Z", + "atl": 0.798494, + "atl_change_percentage": 25.082, + "atl_date": "2025-10-10T21:23:15.100Z", + "roi": null, + "last_updated": "2025-12-05T15:48:53.439Z" + }, + { + "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.997718, + "market_cap": 149848697, + "market_cap_rank": 336, + "fully_diluted_valuation": 149848697, + "total_volume": 9649377, + "high_24h": 1.009, + "low_24h": 0.98936, + "price_change_24h": -0.001669595970634874, + "price_change_percentage_24h": -0.16706, + "market_cap_change_24h": 323122, + "market_cap_change_percentage_24h": 0.2161, + "circulating_supply": 149988670.30954, + "total_supply": 149988670.30954, + "max_supply": null, + "ath": 1.039, + "ath_change_percentage": -3.93842, + "ath_date": "2025-11-21T07:46:31.680Z", + "atl": 0.96504, + "atl_change_percentage": 3.46524, + "atl_date": "2025-11-21T07:36:33.698Z", + "roi": null, + "last_updated": "2025-12-05T15:49:09.201Z" + }, + { + "id": "gusd", + "symbol": "gusd", + "name": "GUSD", + "image": "https://coin-images.coingecko.com/coins/images/68725/large/gusd-logo.jpeg?1757681286", + "current_price": 0.999804, + "market_cap": 149760838, + "market_cap_rank": 335, + "fully_diluted_valuation": 319937701, + "total_volume": 4193779, + "high_24h": 1.001, + "low_24h": 0.998272, + "price_change_24h": 0.00018798, + "price_change_percentage_24h": 0.01881, + "market_cap_change_24h": -57969.47603428364, + "market_cap_change_percentage_24h": -0.03869, + "circulating_supply": 149790000, + "total_supply": 320000000, + "max_supply": 320000000, + "ath": 1.019, + "ath_change_percentage": -1.93006, + "ath_date": "2025-10-10T21:28:05.850Z", + "atl": 0.98989, + "atl_change_percentage": 1.00152, + "atl_date": "2025-10-22T15:26:04.065Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.979Z" + }, + { + "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.16, + "market_cap": 143869842, + "market_cap_rank": 343, + "fully_diluted_valuation": 143869842, + "total_volume": 75622, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.008671797281559757, + "price_change_percentage_24h": -0.74316, + "market_cap_change_24h": -972463.9280387461, + "market_cap_change_percentage_24h": -0.67139, + "circulating_supply": 124125940, + "total_supply": 124125940, + "max_supply": 124125940, + "ath": 1.79, + "ath_change_percentage": -35.34707, + "ath_date": "2023-03-14T12:00:06.279Z", + "atl": 0.929636, + "atl_change_percentage": 24.709, + "atl_date": "2022-11-10T13:44:54.149Z", + "roi": null, + "last_updated": "2025-12-05T15:49:00.946Z" + }, + { + "id": "agora-dollar", + "symbol": "ausd", + "name": "AUSD", + "image": "https://coin-images.coingecko.com/coins/images/39284/large/AUSD_1024px.png?1764684132", + "current_price": 0.999258, + "market_cap": 137377374, + "market_cap_rank": 351, + "fully_diluted_valuation": 137377374, + "total_volume": 54164644, + "high_24h": 1.001, + "low_24h": 0.997839, + "price_change_24h": -0.00059348407255122, + "price_change_percentage_24h": -0.05936, + "market_cap_change_24h": 47011, + "market_cap_change_percentage_24h": 0.03423, + "circulating_supply": 137366573, + "total_supply": 137366573, + "max_supply": null, + "ath": 1.022, + "ath_change_percentage": -2.14695, + "ath_date": "2024-10-05T21:15:26.099Z", + "atl": 0.950515, + "atl_change_percentage": 5.17584, + "atl_date": "2024-12-05T22:30:43.844Z", + "roi": null, + "last_updated": "2025-12-05T15:48:51.528Z" + }, + { + "id": "dola-usd", + "symbol": "dola", + "name": "DOLA", + "image": "https://coin-images.coingecko.com/coins/images/14287/large/dola.png?1696513984", + "current_price": 0.996454, + "market_cap": 127286104, + "market_cap_rank": 365, + "fully_diluted_valuation": 175471246, + "total_volume": 1157377, + "high_24h": 0.997059, + "low_24h": 0.995668, + "price_change_24h": 0.00050344, + "price_change_percentage_24h": 0.05055, + "market_cap_change_24h": 31486, + "market_cap_change_percentage_24h": 0.02474, + "circulating_supply": 127738595.4944801, + "total_supply": 176095030.9162333, + "max_supply": null, + "ath": 1.87, + "ath_change_percentage": -46.77059, + "ath_date": "2021-11-13T13:09:22.404Z", + "atl": 0.088407, + "atl_change_percentage": 1027.19133, + "atl_date": "2024-02-10T23:55:20.725Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.916Z" + }, + { + "id": "frax-usd", + "symbol": "frxusd", + "name": "Frax USD", + "image": "https://coin-images.coingecko.com/coins/images/53963/large/frxUSD.png?1737792154", + "current_price": 0.999644, + "market_cap": 114046204, + "market_cap_rank": 390, + "fully_diluted_valuation": 114046204, + "total_volume": 2039584, + "high_24h": 1.001, + "low_24h": 0.998462, + "price_change_24h": 0.00008908, + "price_change_percentage_24h": 0.00891, + "market_cap_change_24h": -205632.16522984207, + "market_cap_change_percentage_24h": -0.17998, + "circulating_supply": 114112260.1906681, + "total_supply": 114112260.1906681, + "max_supply": null, + "ath": 1.007, + "ath_change_percentage": -0.7143, + "ath_date": "2025-05-30T08:10:31.092Z", + "atl": 0.97622, + "atl_change_percentage": 2.37401, + "atl_date": "2025-02-17T17:32:23.025Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.549Z" + }, + { + "id": "usda-3", + "symbol": "usda", + "name": "USDA", + "image": "https://coin-images.coingecko.com/coins/images/68094/large/IMG_0632.jpeg?1754724345", + "current_price": 0.993821, + "market_cap": 110468135, + "market_cap_rank": 397, + "fully_diluted_valuation": 110468135, + "total_volume": 2516432, + "high_24h": 1.003, + "low_24h": 0.98287, + "price_change_24h": -0.002719046932357139, + "price_change_percentage_24h": -0.27285, + "market_cap_change_24h": -137177.45414200425, + "market_cap_change_percentage_24h": -0.12402, + "circulating_supply": 111000000, + "total_supply": 111000000, + "max_supply": 111000000, + "ath": 1.17, + "ath_change_percentage": -15.16707, + "ath_date": "2025-08-10T03:45:39.652Z", + "atl": 0.590562, + "atl_change_percentage": 68.28381, + "atl_date": "2025-10-09T15:07:59.514Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.107Z" + }, + { + "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.974397, + "market_cap": 107163193, + "market_cap_rank": 404, + "fully_diluted_valuation": 107163193, + "total_volume": 126934, + "high_24h": 0.984338, + "low_24h": 0.890677, + "price_change_24h": 0.068554, + "price_change_percentage_24h": 7.56796, + "market_cap_change_24h": 7539348, + "market_cap_change_percentage_24h": 7.56781, + "circulating_supply": 109979156.209103, + "total_supply": 109979156.209103, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -7.33567, + "ath_date": "2025-05-27T15:36:13.247Z", + "atl": 0.821209, + "atl_change_percentage": 18.65383, + "atl_date": "2025-03-07T06:41:18.272Z", + "roi": null, + "last_updated": "2025-12-05T15:48:52.302Z" + }, + { + "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": 1, + "market_cap": 100819015, + "market_cap_rank": 424, + "fully_diluted_valuation": 100819015, + "total_volume": 87770, + "high_24h": 1.003, + "low_24h": 0.9966, + "price_change_24h": -0.000729809755399824, + "price_change_percentage_24h": -0.0729, + "market_cap_change_24h": 2719060, + "market_cap_change_percentage_24h": 2.77172, + "circulating_supply": 100838912.1233, + "total_supply": 100838912.1233, + "max_supply": null, + "ath": 1.045, + "ath_change_percentage": -4.64308, + "ath_date": "2024-08-08T23:11:28.286Z", + "atl": 0.584655, + "atl_change_percentage": 70.51179, + "atl_date": "2024-08-08T06:50:34.888Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.666Z" + }, + { + "id": "ring-usd", + "symbol": "usdr", + "name": "Ring USD", + "image": "https://coin-images.coingecko.com/coins/images/69350/large/logo_USDR_color_512x512.png?1758260860", + "current_price": 0.999542, + "market_cap": 100354041, + "market_cap_rank": 427, + "fully_diluted_valuation": 100354041, + "total_volume": 23291, + "high_24h": 1.008, + "low_24h": 0.990128, + "price_change_24h": -0.004544809673681316, + "price_change_percentage_24h": -0.45263, + "market_cap_change_24h": -530999.0172443092, + "market_cap_change_percentage_24h": -0.52634, + "circulating_supply": 100400000, + "total_supply": 100400000, + "max_supply": null, + "ath": 1.036, + "ath_change_percentage": -3.51274, + "ath_date": "2025-10-10T22:26:07.291Z", + "atl": 0.967548, + "atl_change_percentage": 3.32274, + "atl_date": "2025-11-04T20:22:29.839Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.440Z" + }, + { + "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": 96487935, + "market_cap_rank": 439, + "fully_diluted_valuation": 96487935, + "total_volume": 19084284, + "high_24h": 1, + "low_24h": 0.999349, + "price_change_24h": 0.00043086, + "price_change_percentage_24h": 0.0431, + "market_cap_change_24h": -21744.410412803292, + "market_cap_change_percentage_24h": -0.02253, + "circulating_supply": 96472267.733406, + "total_supply": 96472267.733406, + "max_supply": null, + "ath": 1.058, + "ath_change_percentage": -5.49585, + "ath_date": "2025-11-15T20:50:58.067Z", + "atl": 0.977421, + "atl_change_percentage": 2.32662, + "atl_date": "2025-11-19T06:10:46.512Z", + "roi": null, + "last_updated": "2025-12-05T15:49:00.676Z" + }, + { + "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.99891, + "market_cap": 89754782, + "market_cap_rank": 464, + "fully_diluted_valuation": 89754782, + "total_volume": 289609, + "high_24h": 0.999471, + "low_24h": 0.998534, + "price_change_24h": 0.00003119, + "price_change_percentage_24h": 0.00312, + "market_cap_change_24h": 684902, + "market_cap_change_percentage_24h": 0.76895, + "circulating_supply": 89832014.5248448, + "total_supply": 89832014.5248448, + "max_supply": null, + "ath": 1.059, + "ath_change_percentage": -5.62355, + "ath_date": "2025-10-10T21:48:29.498Z", + "atl": 0.967857, + "atl_change_percentage": 3.23201, + "atl_date": "2025-02-03T02:55:43.866Z", + "roi": null, + "last_updated": "2025-12-05T15:48:54.347Z" + }, + { + "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.781647, + "market_cap": 89711964, + "market_cap_rank": 465, + "fully_diluted_valuation": 89711964, + "total_volume": 2325.83, + "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": 114772921.187424, + "total_supply": 114772921.187424, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -30.60203, + "ath_date": "2025-10-03T12:47:28.057Z", + "atl": 0.780052, + "atl_change_percentage": 0.2045, + "atl_date": "2025-11-21T20:07:00.976Z", + "roi": null, + "last_updated": "2025-11-22T02:09:38.134Z" + }, + { + "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": 0.997209, + "market_cap": 87223024, + "market_cap_rank": 475, + "fully_diluted_valuation": 87223024, + "total_volume": 6561.1, + "high_24h": 1.001, + "low_24h": 0.990742, + "price_change_24h": -0.00027138425919726, + "price_change_percentage_24h": -0.02721, + "market_cap_change_24h": -240681.03435863554, + "market_cap_change_percentage_24h": -0.27518, + "circulating_supply": 87467116.12057072, + "total_supply": 87467116.12057072, + "max_supply": null, + "ath": 2.97, + "ath_change_percentage": -66.41912, + "ath_date": "2025-04-21T03:25:39.728Z", + "atl": 0.969341, + "atl_change_percentage": 2.87502, + "atl_date": "2025-07-17T08:20:59.666Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.328Z" + }, + { + "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": 4229.09, + "market_cap": 82516737, + "market_cap_rank": 488, + "fully_diluted_valuation": 82516737, + "total_volume": 47.26, + "high_24h": 4230.54, + "low_24h": 4191.46, + "price_change_24h": 37.63, + "price_change_percentage_24h": 0.89773, + "market_cap_change_24h": 762339, + "market_cap_change_percentage_24h": 0.93247, + "circulating_supply": 19505, + "total_supply": 19505, + "max_supply": null, + "ath": 4405.49, + "ath_change_percentage": -4.20813, + "ath_date": "2025-12-02T17:26:01.980Z", + "atl": 3855.69, + "atl_change_percentage": 9.45133, + "atl_date": "2025-11-04T20:20:10.994Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.817Z" + }, + { + "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": 77424183, + "market_cap_rank": 505, + "fully_diluted_valuation": 77424183, + "total_volume": 0, + "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": 76720460.43935774, + "total_supply": 76720460.43935774, + "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-12-02T20:18:56.028Z" + }, + { + "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.17, + "market_cap": 76600284, + "market_cap_rank": 507, + "fully_diluted_valuation": 76600284, + "total_volume": 13101912, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.001117565387176667, + "price_change_percentage_24h": -0.09582, + "market_cap_change_24h": -114082.33335351944, + "market_cap_change_percentage_24h": -0.14871, + "circulating_supply": 65755949, + "total_supply": 65755949, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -2.20486, + "ath_date": "2025-09-17T18:11:18.793Z", + "atl": 0.988513, + "atl_change_percentage": 17.88899, + "atl_date": "2025-02-04T22:15:33.361Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.923Z" + }, + { + "id": "felix-feusd", + "symbol": "feusd", + "name": "Felix feUSD", + "image": "https://coin-images.coingecko.com/coins/images/55068/large/feusd.jpg?1743581333", + "current_price": 1.005, + "market_cap": 75364336, + "market_cap_rank": 511, + "fully_diluted_valuation": 8961961521, + "total_volume": 620155, + "high_24h": 1.008, + "low_24h": 0.999934, + "price_change_24h": 0.00196285, + "price_change_percentage_24h": 0.19577, + "market_cap_change_24h": 146890, + "market_cap_change_percentage_24h": 0.19529, + "circulating_supply": 75004069, + "total_supply": 8919120317.254084, + "max_supply": null, + "ath": 1.067, + "ath_change_percentage": -5.78048, + "ath_date": "2025-04-02T15:35:18.907Z", + "atl": 0.705908, + "atl_change_percentage": 42.42216, + "atl_date": "2025-10-10T21:28:16.651Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.361Z" + }, + { + "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": 1.003, + "market_cap": 70199005, + "market_cap_rank": 534, + "fully_diluted_valuation": 70199005, + "total_volume": 0, + "high_24h": 1.003, + "low_24h": 1.003, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 70000000, + "total_supply": 70000000, + "max_supply": null, + "ath": 1.017, + "ath_change_percentage": -1.43308, + "ath_date": "2025-12-03T14:45:59.557Z", + "atl": 0.98742, + "atl_change_percentage": 1.56193, + "atl_date": "2025-11-20T17:06:26.924Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.812Z" + }, + { + "id": "usdx", + "symbol": "usdx", + "name": "USDX", + "image": "https://coin-images.coingecko.com/coins/images/13056/large/USDX_coin.png?1696512841", + "current_price": 0.563394, + "market_cap": 62856760, + "market_cap_rank": 567, + "fully_diluted_valuation": 62856760, + "total_volume": 6545.19, + "high_24h": 0.575267, + "low_24h": 0.559036, + "price_change_24h": -0.01106357963137361, + "price_change_percentage_24h": -1.92592, + "market_cap_change_24h": -1263874.684278369, + "market_cap_change_percentage_24h": -1.97109, + "circulating_supply": 111568045, + "total_supply": 111568045, + "max_supply": null, + "ath": 3.89, + "ath_change_percentage": -85.44879, + "ath_date": "2020-11-21T11:14:14.148Z", + "atl": 0.100156, + "atl_change_percentage": 464.58601, + "atl_date": "2023-04-10T20:50:38.522Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.256Z" + }, + { + "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.998998, + "market_cap": 57508489, + "market_cap_rank": 592, + "fully_diluted_valuation": 57508489, + "total_volume": 4555319, + "high_24h": 0.999166, + "low_24h": 0.998555, + "price_change_24h": 0.00006588, + "price_change_percentage_24h": 0.0066, + "market_cap_change_24h": 993.14, + "market_cap_change_percentage_24h": 0.00173, + "circulating_supply": 57569455.22150542, + "total_supply": 57569455.22150542, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -15.67626, + "ath_date": "2024-04-16T16:20:21.365Z", + "atl": 0.863529, + "atl_change_percentage": 15.67738, + "atl_date": "2021-05-19T13:14:42.046Z", + "roi": { + "times": -0.0010016020903387, + "currency": "usd", + "percentage": -0.10016020903387 + }, + "last_updated": "2025-12-05T15:49:07.619Z" + }, + { + "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.998671, + "market_cap": 55537925, + "market_cap_rank": 603, + "fully_diluted_valuation": 174670841, + "total_volume": 1766.72, + "high_24h": 1.006, + "low_24h": 0.989432, + "price_change_24h": -0.000364375852065613, + "price_change_percentage_24h": -0.03647, + "market_cap_change_24h": -76002.19136467576, + "market_cap_change_percentage_24h": -0.13666, + "circulating_supply": 55611860, + "total_supply": 174903370.2303547, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -15.61883, + "ath_date": "2024-08-23T06:51:52.217Z", + "atl": 0.249464, + "atl_change_percentage": 303.23216, + "atl_date": "2024-08-15T06:21:56.523Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.179Z" + }, + { + "id": "binance-usd", + "symbol": "busd", + "name": "BUSD", + "image": "https://coin-images.coingecko.com/coins/images/9576/large/BUSDLOGO.jpg?1696509654", + "current_price": 0.998619, + "market_cap": 54950303, + "market_cap_rank": 607, + "fully_diluted_valuation": 54950303, + "total_volume": 3890.76, + "high_24h": 1.005, + "low_24h": 0.990252, + "price_change_24h": 0.00047986, + "price_change_percentage_24h": 0.04808, + "market_cap_change_24h": 26434, + "market_cap_change_percentage_24h": 0.04813, + "circulating_supply": 55026240.20594552, + "total_supply": 55026240.20594552, + "max_supply": null, + "ath": 2.58, + "ath_change_percentage": -61.29487, + "ath_date": "2024-11-10T16:17:12.600Z", + "atl": 0.112189, + "atl_change_percentage": 790.12176, + "atl_date": "2025-06-21T12:06:15.589Z", + "roi": null, + "last_updated": "2025-12-05T15:48:56.322Z" + }, + { + "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.989456, + "market_cap": 53250732, + "market_cap_rank": 620, + "fully_diluted_valuation": 53250732, + "total_volume": 2054927, + "high_24h": 0.990105, + "low_24h": 0.988996, + "price_change_24h": -0.000165136067113103, + "price_change_percentage_24h": -0.01669, + "market_cap_change_24h": -339669.0372907743, + "market_cap_change_percentage_24h": -0.63382, + "circulating_supply": 53816855.51032554, + "total_supply": 53816855.51032554, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -16.49766, + "ath_date": "2025-09-15T01:51:30.324Z", + "atl": 0.969015, + "atl_change_percentage": 2.10979, + "atl_date": "2025-06-26T01:56:28.715Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.408Z" + }, + { + "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": 1.003, + "market_cap": 48167463, + "market_cap_rank": 656, + "fully_diluted_valuation": 48167463, + "total_volume": 46.66, + "high_24h": 1.004, + "low_24h": 0.949476, + "price_change_24h": 0.050583, + "price_change_percentage_24h": 5.30836, + "market_cap_change_24h": 2428015, + "market_cap_change_percentage_24h": 5.30836, + "circulating_supply": 48000500.64, + "total_supply": 48000500.64, + "max_supply": null, + "ath": 1.16, + "ath_change_percentage": -13.42833, + "ath_date": "2024-08-20T13:41:35.347Z", + "atl": 0.542481, + "atl_change_percentage": 84.97936, + "atl_date": "2024-08-14T03:06:23.109Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.809Z" + }, + { + "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.99986, + "market_cap": 48073594, + "market_cap_rank": 659, + "fully_diluted_valuation": 48073594, + "total_volume": 1120847, + "high_24h": 1.002, + "low_24h": 0.999127, + "price_change_24h": 0.00020212, + "price_change_percentage_24h": 0.02022, + "market_cap_change_24h": 300.41, + "market_cap_change_percentage_24h": 0.00062, + "circulating_supply": 48085096.3705041, + "total_supply": 48085096.3705041, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -20.21463, + "ath_date": "2024-01-10T19:50:04.578Z", + "atl": 0.736532, + "atl_change_percentage": 35.73895, + "atl_date": "2023-07-26T02:40:40.793Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.056Z" + }, + { + "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.999712, + "market_cap": 45716323, + "market_cap_rank": 688, + "fully_diluted_valuation": 45716323, + "total_volume": 298891, + "high_24h": 1, + "low_24h": 0.999525, + "price_change_24h": -0.000270329453025075, + "price_change_percentage_24h": -0.02703, + "market_cap_change_24h": 190831, + "market_cap_change_percentage_24h": 0.41917, + "circulating_supply": 45729180.56, + "total_supply": 45729180.56, + "max_supply": null, + "ath": 3.3, + "ath_change_percentage": -69.74298, + "ath_date": "2018-10-11T17:36:21.529Z", + "atl": 0.78261, + "atl_change_percentage": 27.73295, + "atl_date": "2018-09-29T00:00:00.000Z", + "roi": { + "times": -0.0002875774287457, + "currency": "usd", + "percentage": -0.02875774287457 + }, + "last_updated": "2025-12-05T15:49:04.686Z" + }, + { + "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.996544, + "market_cap": 45637306, + "market_cap_rank": 690, + "fully_diluted_valuation": 45637306, + "total_volume": 1077939, + "high_24h": 0.999713, + "low_24h": 0.994049, + "price_change_24h": -0.000069858467841577, + "price_change_percentage_24h": -0.00701, + "market_cap_change_24h": 140281, + "market_cap_change_percentage_24h": 0.30833, + "circulating_supply": 45817770.23174181, + "total_supply": 45817770.23174181, + "max_supply": null, + "ath": 1.013, + "ath_change_percentage": -1.70811, + "ath_date": "2025-06-28T18:02:28.815Z", + "atl": 0.982941, + "atl_change_percentage": 1.33302, + "atl_date": "2025-10-01T08:51:54.108Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.031Z" + }, + { + "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.999975, + "market_cap": 44878760, + "market_cap_rank": 701, + "fully_diluted_valuation": 44878760, + "total_volume": 1213203, + "high_24h": 1, + "low_24h": 0.999539, + "price_change_24h": 0.00007745, + "price_change_percentage_24h": 0.00775, + "market_cap_change_24h": -814388.9543358609, + "market_cap_change_percentage_24h": -1.7823, + "circulating_supply": 44875804.60132517, + "total_supply": 44875804.60132517, + "max_supply": null, + "ath": 1.031, + "ath_change_percentage": -2.98636, + "ath_date": "2025-01-20T06:50:59.438Z", + "atl": 0.953062, + "atl_change_percentage": 4.93214, + "atl_date": "2024-12-05T15:45:54.718Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.551Z" + }, + { + "id": "terrausd", + "symbol": "ustc", + "name": "TerraClassicUSD", + "image": "https://coin-images.coingecko.com/coins/images/12681/large/UST.png?1696512486", + "current_price": 0.00772621, + "market_cap": 43148271, + "market_cap_rank": 718, + "fully_diluted_valuation": 47026885, + "total_volume": 29831525, + "high_24h": 0.00786854, + "low_24h": 0.00599022, + "price_change_24h": 0.0015944, + "price_change_percentage_24h": 26.00209, + "market_cap_change_24h": 8877570, + "market_cap_change_percentage_24h": 25.90426, + "circulating_supply": 5585172537.073128, + "total_supply": 6087225738.367004, + "max_supply": null, + "ath": 1.092, + "ath_change_percentage": -99.28189, + "ath_date": "2021-01-11T22:30:57.984Z", + "atl": 0.00432796, + "atl_change_percentage": 81.17373, + "atl_date": "2025-10-10T21:31:08.815Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.645Z" + }, + { + "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.999912, + "market_cap": 42092531, + "market_cap_rank": 729, + "fully_diluted_valuation": 42092531, + "total_volume": 35439409, + "high_24h": 1, + "low_24h": 0.999766, + "price_change_24h": -0.000221799050613258, + "price_change_percentage_24h": -0.02218, + "market_cap_change_24h": -1009673.7698638514, + "market_cap_change_percentage_24h": -2.34251, + "circulating_supply": 42096294.451, + "total_supply": 42096294.451, + "max_supply": null, + "ath": 1.77, + "ath_change_percentage": -43.54286, + "ath_date": "2025-03-17T07:07:33.401Z", + "atl": 0.936389, + "atl_change_percentage": 6.78373, + "atl_date": "2025-03-04T02:16:12.068Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.043Z" + }, + { + "id": "nusd", + "symbol": "susd", + "name": "Synthetix sUSD", + "image": "https://coin-images.coingecko.com/coins/images/5013/large/sUSD.png?1696505546", + "current_price": 0.965603, + "market_cap": 41777784, + "market_cap_rank": 731, + "fully_diluted_valuation": 41777784, + "total_volume": 38010, + "high_24h": 0.976325, + "low_24h": 0.956878, + "price_change_24h": -0.00866809877409025, + "price_change_percentage_24h": -0.8897, + "market_cap_change_24h": -534288.0548297316, + "market_cap_change_percentage_24h": -1.26273, + "circulating_supply": 43452772.88587049, + "total_supply": 43452772.88587049, + "max_supply": 43468360.49881326, + "ath": 2.45, + "ath_change_percentage": -60.82218, + "ath_date": "2020-02-18T03:23:56.261Z", + "atl": 0.429697, + "atl_change_percentage": 123.77996, + "atl_date": "2020-03-18T08:09:20.698Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.168Z" + }, + { + "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.998782, + "market_cap": 41622891, + "market_cap_rank": 733, + "fully_diluted_valuation": 41622891, + "total_volume": 761.83, + "high_24h": 1.012, + "low_24h": 0.992874, + "price_change_24h": -0.008153497094679052, + "price_change_percentage_24h": -0.80973, + "market_cap_change_24h": -521208.13857931644, + "market_cap_change_percentage_24h": -1.23673, + "circulating_supply": 41663878.31241502, + "total_supply": 41663878.31241502, + "max_supply": null, + "ath": 1.12, + "ath_change_percentage": -10.99851, + "ath_date": "2025-09-18T22:42:48.200Z", + "atl": 0.930746, + "atl_change_percentage": 7.32957, + "atl_date": "2025-10-10T21:32:07.340Z", + "roi": null, + "last_updated": "2025-12-05T15:48:57.800Z" + }, + { + "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.999903, + "market_cap": 39307477, + "market_cap_rank": 769, + "fully_diluted_valuation": 39307477, + "total_volume": 204941, + "high_24h": 0.999904, + "low_24h": 0.999702, + "price_change_24h": 0.00009625, + "price_change_percentage_24h": 0.00963, + "market_cap_change_24h": 7634.18, + "market_cap_change_percentage_24h": 0.01943, + "circulating_supply": 39311290.034479, + "total_supply": 39311290.034479, + "max_supply": null, + "ath": 1.015, + "ath_change_percentage": -1.4394, + "ath_date": "2025-07-24T10:16:18.759Z", + "atl": 0.956184, + "atl_change_percentage": 4.57219, + "atl_date": "2025-11-29T04:21:21.519Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.059Z" + }, + { + "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.999051, + "market_cap": 37565116, + "market_cap_rank": 786, + "fully_diluted_valuation": 38589723, + "total_volume": 3427751, + "high_24h": 0.999332, + "low_24h": 0.993186, + "price_change_24h": 0.0055229, + "price_change_percentage_24h": 0.55589, + "market_cap_change_24h": 209565, + "market_cap_change_percentage_24h": 0.561, + "circulating_supply": 37599049.8493389, + "total_supply": 38624581.9692841, + "max_supply": 44000000, + "ath": 2, + "ath_change_percentage": -50.07814, + "ath_date": "2022-08-25T12:10:21.873Z", + "atl": 0.208609, + "atl_change_percentage": 378.93639, + "atl_date": "2022-12-02T02:43:06.227Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.048Z" + }, + { + "id": "liquity-usd", + "symbol": "lusd", + "name": "Liquity USD", + "image": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "current_price": 1, + "market_cap": 36656676, + "market_cap_rank": 798, + "fully_diluted_valuation": 36656676, + "total_volume": 117523, + "high_24h": 1.003, + "low_24h": 0.996961, + "price_change_24h": -0.002922188601943487, + "price_change_percentage_24h": -0.29129, + "market_cap_change_24h": -63481.57948799431, + "market_cap_change_percentage_24h": -0.17288, + "circulating_supply": 36646900.83967936, + "total_supply": 36646900.83967936, + "max_supply": null, + "ath": 1.16, + "ath_change_percentage": -13.54124, + "ath_date": "2021-04-05T14:47:52.665Z", + "atl": 0.896722, + "atl_change_percentage": 11.68154, + "atl_date": "2022-01-27T09:42:06.510Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.062Z" + }, + { + "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": 1, + "market_cap": 35554772, + "market_cap_rank": 818, + "fully_diluted_valuation": 35555273, + "total_volume": 1932755, + "high_24h": 1, + "low_24h": 0.999736, + "price_change_24h": -0.000170143694421476, + "price_change_percentage_24h": -0.01701, + "market_cap_change_24h": 2403.41, + "market_cap_change_percentage_24h": 0.00676, + "circulating_supply": 35553466.1769185, + "total_supply": 35553967.1844835, + "max_supply": null, + "ath": 1.14, + "ath_change_percentage": -12.4248, + "ath_date": "2021-09-10T07:19:08.038Z", + "atl": 0.498806, + "atl_change_percentage": 100.43872, + "atl_date": "2025-10-10T21:23:39.132Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.170Z" + }, + { + "id": "hylo-usd", + "symbol": "hyusd", + "name": "Hylo USD", + "image": "https://coin-images.coingecko.com/coins/images/69284/large/hyusd.png?1758096429", + "current_price": 1, + "market_cap": 35108788, + "market_cap_rank": 824, + "fully_diluted_valuation": 35108788, + "total_volume": 1343285, + "high_24h": 1.001, + "low_24h": 0.999325, + "price_change_24h": -0.000128427199888703, + "price_change_percentage_24h": -0.01284, + "market_cap_change_24h": 85627, + "market_cap_change_percentage_24h": 0.24449, + "circulating_supply": 35093635.624581, + "total_supply": 35093635.624581, + "max_supply": null, + "ath": 1.005, + "ath_change_percentage": -0.4639, + "ath_date": "2025-11-03T15:30:18.893Z", + "atl": 0.986187, + "atl_change_percentage": 1.44445, + "atl_date": "2025-10-10T21:40:07.790Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.316Z" + }, + { + "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.991897, + "market_cap": 34157629, + "market_cap_rank": 836, + "fully_diluted_valuation": 34157700, + "total_volume": 16.35, + "high_24h": 1.025, + "low_24h": 0.991897, + "price_change_24h": -0.03022653013044696, + "price_change_percentage_24h": -2.95723, + "market_cap_change_24h": -1091677.0264451131, + "market_cap_change_percentage_24h": -3.09702, + "circulating_supply": 34436653.879, + "total_supply": 34436725.187, + "max_supply": null, + "ath": 3.97, + "ath_change_percentage": -75.04496, + "ath_date": "2021-02-01T02:39:07.394Z", + "atl": 0.424305, + "atl_change_percentage": 133.76977, + "atl_date": "2020-04-06T08:34:42.260Z", + "roi": null, + "last_updated": "2025-12-05T12:29:12.562Z" + }, + { + "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": 1, + "market_cap": 32807391, + "market_cap_rank": 857, + "fully_diluted_valuation": 32807391, + "total_volume": 3308008, + "high_24h": 1.001, + "low_24h": 0.998712, + "price_change_24h": 0.00000253, + "price_change_percentage_24h": 0.00025, + "market_cap_change_24h": 31061, + "market_cap_change_percentage_24h": 0.09477, + "circulating_supply": 32800030, + "total_supply": 32800030, + "max_supply": 32800030, + "ath": 42.29, + "ath_change_percentage": -97.63505, + "ath_date": "2023-03-07T16:04:32.521Z", + "atl": 0.933136, + "atl_change_percentage": 7.18322, + "atl_date": "2023-03-09T01:40:31.883Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.991Z" + }, + { + "id": "honey-3", + "symbol": "honey", + "name": "Honey", + "image": "https://coin-images.coingecko.com/coins/images/54194/large/honey.png?1738725085", + "current_price": 0.999457, + "market_cap": 28475775, + "market_cap_rank": 935, + "fully_diluted_valuation": 28475776, + "total_volume": 2274140, + "high_24h": 0.999877, + "low_24h": 0.985737, + "price_change_24h": 0.00077929, + "price_change_percentage_24h": 0.07803, + "market_cap_change_24h": -9637.067259259522, + "market_cap_change_percentage_24h": -0.03383, + "circulating_supply": 28485618.94010602, + "total_supply": 28485619.98023224, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -9.91158, + "ath_date": "2025-02-06T14:11:19.994Z", + "atl": 0.916153, + "atl_change_percentage": 9.09394, + "atl_date": "2025-02-06T14:06:00.806Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.169Z" + }, + { + "id": "ageur", + "symbol": "eura", + "name": "EURA", + "image": "https://coin-images.coingecko.com/coins/images/19479/large/agEUR-4.png?1710726218", + "current_price": 1.16, + "market_cap": 28248481, + "market_cap_rank": 938, + "fully_diluted_valuation": 28248481, + "total_volume": 98849, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.006381733911309029, + "price_change_percentage_24h": -0.5465, + "market_cap_change_24h": -92090.49286536872, + "market_cap_change_percentage_24h": -0.32494, + "circulating_supply": 24311682.12864983, + "total_supply": 24311682.12864983, + "max_supply": null, + "ath": 1.21, + "ath_change_percentage": -3.75128, + "ath_date": "2025-08-22T21:09:21.583Z", + "atl": 0.640182, + "atl_change_percentage": 81.52252, + "atl_date": "2023-03-15T02:32:40.142Z", + "roi": null, + "last_updated": "2025-12-05T15:48:51.531Z" + }, + { + "id": "mimatic", + "symbol": "mimatic", + "name": "MAI", + "image": "https://coin-images.coingecko.com/coins/images/15264/large/mimatic-red.png?1696514916", + "current_price": 1.007, + "market_cap": 27763717, + "market_cap_rank": 949, + "fully_diluted_valuation": 304571063, + "total_volume": 16098.68, + "high_24h": 1.011, + "low_24h": 1.006, + "price_change_24h": -0.001595179223172538, + "price_change_percentage_24h": -0.15813, + "market_cap_change_24h": -40232.80222307518, + "market_cap_change_percentage_24h": -0.1447, + "circulating_supply": 27563986.7347571, + "total_supply": 302379999.5262164, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -25.60619, + "ath_date": "2021-05-29T21:51:31.732Z", + "atl": 0.655895, + "atl_change_percentage": 53.59128, + "atl_date": "2023-10-30T02:44:25.051Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.671Z" + }, + { + "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.17, + "market_cap": 27143911, + "market_cap_rank": 962, + "fully_diluted_valuation": 27174868, + "total_volume": 123855, + "high_24h": 1.18, + "low_24h": 1.15, + "price_change_24h": -0.003916765090762331, + "price_change_percentage_24h": -0.33415, + "market_cap_change_24h": -2031488.2762401775, + "market_cap_change_percentage_24h": -6.96302, + "circulating_supply": 23231463.43062909, + "total_supply": 23257958.95062909, + "max_supply": null, + "ath": 1.22, + "ath_change_percentage": -4.26057, + "ath_date": "2025-08-22T18:56:04.460Z", + "atl": 1.037, + "atl_change_percentage": 12.31974, + "atl_date": "2025-03-02T17:11:14.047Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.746Z" + }, + { + "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": 1.001, + "market_cap": 26039978, + "market_cap_rank": 981, + "fully_diluted_valuation": 26039978, + "total_volume": 224824, + "high_24h": 1.014, + "low_24h": 0.990729, + "price_change_24h": 0.00357794, + "price_change_percentage_24h": 0.35887, + "market_cap_change_24h": 755.63, + "market_cap_change_percentage_24h": 0.0029, + "circulating_supply": 26037394.58415651, + "total_supply": 26037394.58415651, + "max_supply": null, + "ath": 1.23, + "ath_change_percentage": -18.51569, + "ath_date": "2025-10-10T21:53:23.049Z", + "atl": 0.000978, + "atl_change_percentage": 102159.66263, + "atl_date": "2024-09-22T18:21:13.316Z", + "roi": null, + "last_updated": "2025-12-05T15:48:59.571Z" + }, + { + "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": 1, + "market_cap": 25835312, + "market_cap_rank": 987, + "fully_diluted_valuation": 25835312, + "total_volume": 8211936, + "high_24h": 1.005, + "low_24h": 0.997067, + "price_change_24h": -0.002671824068197104, + "price_change_percentage_24h": -0.26646, + "market_cap_change_24h": -70176.9279585965, + "market_cap_change_percentage_24h": -0.2709, + "circulating_supply": 25833019.536369, + "total_supply": 25833019.536369, + "max_supply": null, + "ath": 1.085, + "ath_change_percentage": -7.84858, + "ath_date": "2025-10-10T22:16:10.736Z", + "atl": 0.925488, + "atl_change_percentage": 8.0534, + "atl_date": "2025-10-10T21:31:15.906Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.490Z" + }, + { + "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.03578561, + "market_cap": 24511120, + "market_cap_rank": 1017, + "fully_diluted_valuation": 24511120, + "total_volume": 230.48, + "high_24h": 0.04154931, + "low_24h": 0.03531597, + "price_change_24h": -0.005740684496115749, + "price_change_percentage_24h": -13.82422, + "market_cap_change_24h": -3915934.4430627376, + "market_cap_change_percentage_24h": -13.77538, + "circulating_supply": 684555532.319928, + "total_supply": 684555532.319928, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -96.61341, + "ath_date": "2024-12-06T21:42:23.559Z", + "atl": 0.03466673, + "atl_change_percentage": 3.28603, + "atl_date": "2025-12-01T13:51:12.752Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.271Z" + }, + { + "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": 1.001, + "market_cap": 24230834, + "market_cap_rank": 1023, + "fully_diluted_valuation": 24230834, + "total_volume": 10788.3, + "high_24h": 1.005, + "low_24h": 0.993621, + "price_change_24h": 0.00157957, + "price_change_percentage_24h": 0.15808, + "market_cap_change_24h": 40882, + "market_cap_change_percentage_24h": 0.169, + "circulating_supply": 24208960.0029494, + "total_supply": 24208960.0029494, + "max_supply": null, + "ath": 1.049, + "ath_change_percentage": -4.58882, + "ath_date": "2025-08-05T15:28:15.524Z", + "atl": 0.911594, + "atl_change_percentage": 9.78817, + "atl_date": "2025-11-04T17:47:20.401Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.021Z" + }, + { + "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, + "market_cap": 24215728, + "market_cap_rank": 1024, + "fully_diluted_valuation": 24215728, + "total_volume": 394080, + "high_24h": 1.001, + "low_24h": 0.997763, + "price_change_24h": 0.00131563, + "price_change_percentage_24h": 0.13168, + "market_cap_change_24h": 163545, + "market_cap_change_percentage_24h": 0.67996, + "circulating_supply": 24240057.993281, + "total_supply": 24240057.993281, + "max_supply": null, + "ath": 1.038, + "ath_change_percentage": -3.67158, + "ath_date": "2025-11-26T17:46:21.022Z", + "atl": 0.949353, + "atl_change_percentage": 5.33122, + "atl_date": "2025-11-26T06:31:16.671Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.911Z" + }, + { + "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.992823, + "market_cap": 24091004, + "market_cap_rank": 1028, + "fully_diluted_valuation": 24091004, + "total_volume": 1944805, + "high_24h": 0.994554, + "low_24h": 0.991815, + "price_change_24h": -0.000924995425826469, + "price_change_percentage_24h": -0.09308, + "market_cap_change_24h": 177730, + "market_cap_change_percentage_24h": 0.74323, + "circulating_supply": 24261960.27034486, + "total_supply": 24261960.27034486, + "max_supply": null, + "ath": 3.43, + "ath_change_percentage": -71.06985, + "ath_date": "2025-10-16T10:48:38.387Z", + "atl": 0.427862, + "atl_change_percentage": 132.04085, + "atl_date": "2025-10-09T03:53:06.683Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.517Z" + }, + { + "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": 0.999968, + "market_cap": 22221990, + "market_cap_rank": 1078, + "fully_diluted_valuation": 22221990, + "total_volume": 166677, + "high_24h": 1.001, + "low_24h": 0.995981, + "price_change_24h": -0.000291315069454012, + "price_change_percentage_24h": -0.02912, + "market_cap_change_24h": 1710982, + "market_cap_change_percentage_24h": 8.34177, + "circulating_supply": 22222837.91346688, + "total_supply": 22222837.91346688, + "max_supply": null, + "ath": 1.12, + "ath_change_percentage": -10.31813, + "ath_date": "2025-10-07T20:15:48.287Z", + "atl": 0.988079, + "atl_change_percentage": 1.20339, + "atl_date": "2025-02-03T01:56:21.551Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.233Z" + }, + { + "id": "electronic-usd", + "symbol": "eusd", + "name": "Electronic USD", + "image": "https://coin-images.coingecko.com/coins/images/28445/large/0xa0d69e286b938e21cbf7e51d71f6a4c8918f482f.png?1696527441", + "current_price": 0.999655, + "market_cap": 22153684, + "market_cap_rank": 1084, + "fully_diluted_valuation": 22153684, + "total_volume": 730485, + "high_24h": 1.003, + "low_24h": 0.997498, + "price_change_24h": -0.000007204946770978, + "price_change_percentage_24h": -0.00072, + "market_cap_change_24h": 364260, + "market_cap_change_percentage_24h": 1.67173, + "circulating_supply": 22152372.33057338, + "total_supply": 22152372.33057338, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -11.65442, + "ath_date": "2024-04-13T20:29:40.804Z", + "atl": 0.867067, + "atl_change_percentage": 15.2449, + "atl_date": "2024-03-05T11:43:37.511Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.158Z" + }, + { + "id": "usdh-2", + "symbol": "usdh", + "name": "USDH", + "image": "https://coin-images.coingecko.com/coins/images/69484/large/usdh.png?1758728903", + "current_price": 0.999085, + "market_cap": 21340304, + "market_cap_rank": 1099, + "fully_diluted_valuation": 99963784440, + "total_volume": 11544677, + "high_24h": 1.002, + "low_24h": 0.997229, + "price_change_24h": -0.00031875140212223, + "price_change_percentage_24h": -0.03189, + "market_cap_change_24h": -15925.518531467766, + "market_cap_change_percentage_24h": -0.07457, + "circulating_supply": 21359849, + "total_supply": 100055336922.7878, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -10.15938, + "ath_date": "2025-10-10T22:36:29.145Z", + "atl": 0.716867, + "atl_change_percentage": 39.40838, + "atl_date": "2025-10-10T21:25:21.930Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.175Z" + }, + { + "id": "unity-2", + "symbol": "uty", + "name": "Unity", + "image": "https://coin-images.coingecko.com/coins/images/66299/large/UTY_token.jpg?1749148591", + "current_price": 1.005, + "market_cap": 21088075, + "market_cap_rank": 1102, + "fully_diluted_valuation": 21088075, + "total_volume": 472.12, + "high_24h": 1.005, + "low_24h": 0.9992, + "price_change_24h": 0.00537869, + "price_change_percentage_24h": 0.53823, + "market_cap_change_24h": 112945, + "market_cap_change_percentage_24h": 0.53847, + "circulating_supply": 20989270.4274, + "total_supply": 20989270.4274, + "max_supply": null, + "ath": 1.014, + "ath_change_percentage": -0.88096, + "ath_date": "2025-12-04T07:15:30.219Z", + "atl": 0.990811, + "atl_change_percentage": 1.40248, + "atl_date": "2025-12-04T03:20:30.692Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.034Z" + }, + { + "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.17, + "market_cap": 18786285, + "market_cap_rank": 1165, + "fully_diluted_valuation": 18786285, + "total_volume": 1749177, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.001730893304682457, + "price_change_percentage_24h": -0.14833, + "market_cap_change_24h": -32324.478661570698, + "market_cap_change_percentage_24h": -0.17177, + "circulating_supply": 16130798.33, + "total_supply": 16130798.33, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -2.09375, + "ath_date": "2025-09-17T18:08:52.037Z", + "atl": 1.1, + "atl_change_percentage": 5.83443, + "atl_date": "2025-10-10T21:26:08.559Z", + "roi": null, + "last_updated": "2025-12-05T15:48:51.670Z" + }, + { + "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.24, + "market_cap": 18464942, + "market_cap_rank": 1173, + "fully_diluted_valuation": 18464942, + "total_volume": 360960, + "high_24h": 1.25, + "low_24h": 1.24, + "price_change_24h": -0.00598991720398212, + "price_change_percentage_24h": -0.47969, + "market_cap_change_24h": -38111.24530591071, + "market_cap_change_percentage_24h": -0.20597, + "circulating_supply": 14827114.70382322, + "total_supply": 14827114.70382322, + "max_supply": null, + "ath": 1.31, + "ath_change_percentage": -5.14566, + "ath_date": "2025-07-10T21:56:16.354Z", + "atl": 0.981646, + "atl_change_percentage": 26.8634, + "atl_date": "2025-02-03T02:12:08.670Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.493Z" + }, + { + "id": "staked-yusd", + "symbol": "syusd", + "name": "Staked YUSD", + "image": "https://coin-images.coingecko.com/coins/images/69737/large/sYUSD.png?1759476764", + "current_price": 1.016, + "market_cap": 17936772, + "market_cap_rank": 1188, + "fully_diluted_valuation": 17936772, + "total_volume": 7.74, + "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": 17656993.67410132, + "total_supply": 17656993.67410132, + "max_supply": null, + "ath": 1.019, + "ath_change_percentage": -0.32091, + "ath_date": "2025-11-20T23:08:03.412Z", + "atl": 0.994824, + "atl_change_percentage": 2.11305, + "atl_date": "2025-11-03T02:45:22.052Z", + "roi": null, + "last_updated": "2025-12-04T14:42:44.066Z" + }, + { + "id": "yuzu-usd", + "symbol": "yzusd", + "name": "Yuzu USD", + "image": "https://coin-images.coingecko.com/coins/images/70558/large/yzusd.png?1762518733", + "current_price": 1.001, + "market_cap": 17778338, + "market_cap_rank": 1194, + "fully_diluted_valuation": 17778338, + "total_volume": 98917, + "high_24h": 1.001, + "low_24h": 0.999698, + "price_change_24h": 0.00074532, + "price_change_percentage_24h": 0.07454, + "market_cap_change_24h": 639149, + "market_cap_change_percentage_24h": 3.72917, + "circulating_supply": 17767837.787855, + "total_supply": 17767837.787855, + "max_supply": null, + "ath": 1.002, + "ath_change_percentage": -0.17331, + "ath_date": "2025-11-10T02:20:34.305Z", + "atl": 0.997998, + "atl_change_percentage": 0.25941, + "atl_date": "2025-11-21T07:41:37.971Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.108Z" + }, + { + "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.999952, + "market_cap": 15020442, + "market_cap_rank": 1305, + "fully_diluted_valuation": 15020442, + "total_volume": 486398, + "high_24h": 1.001, + "low_24h": 0.99966, + "price_change_24h": -0.000610367579874205, + "price_change_percentage_24h": -0.061, + "market_cap_change_24h": -5477.613280694932, + "market_cap_change_percentage_24h": -0.03645, + "circulating_supply": 15019271.88067006, + "total_supply": 15019271.88067006, + "max_supply": null, + "ath": 1.074, + "ath_change_percentage": -6.88284, + "ath_date": "2024-03-14T09:40:40.874Z", + "atl": 0.95219, + "atl_change_percentage": 5.03151, + "atl_date": "2024-12-05T22:30:21.449Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.766Z" + }, + { + "id": "wemix-dollar", + "symbol": "wemix$", + "name": "WEMIX Dollar", + "image": "https://coin-images.coingecko.com/coins/images/28637/large/wemix_dollar.png?1696527620", + "current_price": 0.998915, + "market_cap": 14532819, + "market_cap_rank": 1325, + "fully_diluted_valuation": 14532819, + "total_volume": 58269, + "high_24h": 1.024, + "low_24h": 0.982241, + "price_change_24h": -0.012617256295222479, + "price_change_percentage_24h": -1.24734, + "market_cap_change_24h": -80415.75436466001, + "market_cap_change_percentage_24h": -0.55029, + "circulating_supply": 14539841.004882, + "total_supply": 14539841.004882, + "max_supply": null, + "ath": 1.54, + "ath_change_percentage": -34.95297, + "ath_date": "2025-08-05T15:44:08.296Z", + "atl": 0.479572, + "atl_change_percentage": 108.48024, + "atl_date": "2025-05-02T06:11:54.507Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.579Z" + }, + { + "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.885105, + "market_cap": 13694224, + "market_cap_rank": 1353, + "fully_diluted_valuation": 119252984, + "total_volume": 1189.57, + "high_24h": 0.891601, + "low_24h": 0.879134, + "price_change_24h": -0.002595889693519093, + "price_change_percentage_24h": -0.29243, + "market_cap_change_24h": -57310.468419704586, + "market_cap_change_percentage_24h": -0.41676, + "circulating_supply": 15453332.51134857, + "total_supply": 134571773.1095259, + "max_supply": null, + "ath": 2.71, + "ath_change_percentage": -67.17836, + "ath_date": "2022-09-12T07:44:30.756Z", + "atl": 0.331253, + "atl_change_percentage": 168.48755, + "atl_date": "2022-06-14T21:54:04.120Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.760Z" + }, + { + "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": 13635759, + "market_cap_rank": 1355, + "fully_diluted_valuation": 13635759, + "total_volume": 11322339, + "high_24h": 1.16, + "low_24h": 1.16, + "price_change_24h": -0.000120817102547299, + "price_change_percentage_24h": -0.01039, + "market_cap_change_24h": -2773.1230879835784, + "market_cap_change_percentage_24h": -0.02033, + "circulating_supply": 11725872.84, + "total_supply": 11725872.84, + "max_supply": null, + "ath": 1.5, + "ath_change_percentage": -22.36896, + "ath_date": "2025-02-16T06:45:52.930Z", + "atl": 1.013, + "atl_change_percentage": 14.81189, + "atl_date": "2025-02-03T01:55:45.484Z", + "roi": null, + "last_updated": "2025-12-05T15:49:09.142Z" + }, + { + "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.990751, + "market_cap": 13578410, + "market_cap_rank": 1357, + "fully_diluted_valuation": 13578410, + "total_volume": 181630, + "high_24h": 0.991836, + "low_24h": 0.989986, + "price_change_24h": -0.000904290120241291, + "price_change_percentage_24h": -0.09119, + "market_cap_change_24h": -8047.076283719391, + "market_cap_change_percentage_24h": -0.05923, + "circulating_supply": 13705168.90954373, + "total_supply": 13705168.90954373, + "max_supply": null, + "ath": 2.13, + "ath_change_percentage": -53.38555, + "ath_date": "2021-03-21T19:53:32.860Z", + "atl": 0.060239, + "atl_change_percentage": 1546.18902, + "atl_date": "2021-03-19T22:40:28.697Z", + "roi": null, + "last_updated": "2025-12-05T15:48:51.601Z" + }, + { + "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.018, + "market_cap": 13451162, + "market_cap_rank": 1366, + "fully_diluted_valuation": 13451162, + "total_volume": 429695, + "high_24h": 1.041, + "low_24h": 1.013, + "price_change_24h": -0.01253249231084741, + "price_change_percentage_24h": -1.21661, + "market_cap_change_24h": -164911.24595728144, + "market_cap_change_percentage_24h": -1.21115, + "circulating_supply": 13199684.31, + "total_supply": 13199684.31, + "max_supply": null, + "ath": 1.41, + "ath_change_percentage": -27.44263, + "ath_date": "2025-03-02T16:41:52.531Z", + "atl": 0.529334, + "atl_change_percentage": 92.60296, + "atl_date": "2025-10-10T21:27:48.867Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.205Z" + }, + { + "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.772982, + "market_cap": 12766665, + "market_cap_rank": 1400, + "fully_diluted_valuation": 12766665, + "total_volume": 1042400, + "high_24h": 0.774148, + "low_24h": 0.77243, + "price_change_24h": 0.00016632, + "price_change_percentage_24h": 0.02152, + "market_cap_change_24h": 20450, + "market_cap_change_percentage_24h": 0.16044, + "circulating_supply": 16514759.665569, + "total_supply": 16514759.665569, + "max_supply": null, + "ath": 1.36, + "ath_change_percentage": -42.9966, + "ath_date": "2021-11-14T11:25:59.333Z", + "atl": 0.620483, + "atl_change_percentage": 24.60562, + "atl_date": "2021-05-19T13:21:15.750Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.007Z" + }, + { + "id": "vcred", + "symbol": "vcred", + "name": "VCRED", + "image": "https://coin-images.coingecko.com/coins/images/69495/large/vcred.jpg?1758767359", + "current_price": 0.9963, + "market_cap": 12553383, + "market_cap_rank": 1409, + "fully_diluted_valuation": 996300210, + "total_volume": 166.98, + "high_24h": 1.002, + "low_24h": 0.992217, + "price_change_24h": -0.005684408647223305, + "price_change_percentage_24h": -0.56731, + "market_cap_change_24h": -71636.62503272109, + "market_cap_change_percentage_24h": -0.56742, + "circulating_supply": 12600000, + "total_supply": 1000000000, + "max_supply": null, + "ath": 1.006, + "ath_change_percentage": -0.95496, + "ath_date": "2025-11-07T23:37:15.677Z", + "atl": 0.978677, + "atl_change_percentage": 1.80075, + "atl_date": "2025-11-22T02:42:06.654Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.818Z" + }, + { + "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.075, + "market_cap": 12174528, + "market_cap_rank": 1427, + "fully_diluted_valuation": 12174528, + "total_volume": 3016.05, + "high_24h": 1.077, + "low_24h": 1.075, + "price_change_24h": -0.00008580145429038, + "price_change_percentage_24h": -0.00798, + "market_cap_change_24h": -852.6389365997165, + "market_cap_change_percentage_24h": -0.007, + "circulating_supply": 11317619.65254536, + "total_supply": 11317619.65254536, + "max_supply": null, + "ath": 1.17, + "ath_change_percentage": -7.93787, + "ath_date": "2025-06-03T02:16:05.754Z", + "atl": 0.939075, + "atl_change_percentage": 14.55047, + "atl_date": "2024-05-29T20:57:17.890Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.588Z" + }, + { + "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": 1.001, + "market_cap": 12017581, + "market_cap_rank": 1441, + "fully_diluted_valuation": 12017581, + "total_volume": 8.65, + "high_24h": 1.007, + "low_24h": 0.995632, + "price_change_24h": -0.003049544250275149, + "price_change_percentage_24h": -0.30374, + "market_cap_change_24h": -21170.771847948432, + "market_cap_change_percentage_24h": -0.17586, + "circulating_supply": 12006249.85882, + "total_supply": 12006249.85882, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -19.98255, + "ath_date": "2025-10-10T22:21:21.116Z", + "atl": 0.70585, + "atl_change_percentage": 41.80691, + "atl_date": "2025-10-10T21:21:19.451Z", + "roi": null, + "last_updated": "2025-12-05T02:20:43.454Z" + }, + { + "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.993069, + "market_cap": 11758145, + "market_cap_rank": 1454, + "fully_diluted_valuation": 11758145, + "total_volume": 29.9, + "high_24h": 0.996926, + "low_24h": 0.993066, + "price_change_24h": -0.002960878726899319, + "price_change_percentage_24h": -0.29727, + "market_cap_change_24h": -35131.031934883446, + "market_cap_change_percentage_24h": -0.29789, + "circulating_supply": 11839137.656528, + "total_supply": 11839137.656528, + "max_supply": null, + "ath": 4.17, + "ath_change_percentage": -76.20542, + "ath_date": "2023-04-23T12:46:10.492Z", + "atl": 0.076939, + "atl_change_percentage": 1190.71736, + "atl_date": "2024-02-26T03:50:44.907Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.135Z" + }, + { + "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.017, + "market_cap": 11130365, + "market_cap_rank": 1496, + "fully_diluted_valuation": 11130365, + "total_volume": 0, + "high_24h": 1.017, + "low_24h": 1.017, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 10943891.979688, + "total_supply": 10943891.979688, + "max_supply": null, + "ath": 1.018, + "ath_change_percentage": -0.10843, + "ath_date": "2025-09-24T16:00:10.174Z", + "atl": 1, + "atl_change_percentage": 1.7039, + "atl_date": "2025-07-10T07:25:11.007Z", + "roi": null, + "last_updated": "2025-12-05T15:45:05.653Z" + }, + { + "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.00006033, + "market_cap": 10489232, + "market_cap_rank": 1537, + "fully_diluted_valuation": 10489232, + "total_volume": 4.63, + "high_24h": 0.00006033, + "low_24h": 0.00006031, + "price_change_24h": 2.0941e-8, + "price_change_percentage_24h": 0.03472, + "market_cap_change_24h": 3640.78, + "market_cap_change_percentage_24h": 0.03472, + "circulating_supply": 173856905811, + "total_supply": 173856905811, + "max_supply": null, + "ath": 0.00026862, + "ath_change_percentage": -77.53974, + "ath_date": "2020-04-16T07:49:07.030Z", + "atl": 6.7512e-8, + "atl_change_percentage": 89265.95025, + "atl_date": "2020-05-27T14:35:44.312Z", + "roi": null, + "last_updated": "2025-12-04T20:37:33.947Z" + }, + { + "id": "anzens-usda", + "symbol": "usda", + "name": "Anzens USDA", + "image": "https://coin-images.coingecko.com/coins/images/67347/large/usda.jpg?1752476144", + "current_price": 1.001, + "market_cap": 10419387, + "market_cap_rank": 1542, + "fully_diluted_valuation": 10419387, + "total_volume": 123237, + "high_24h": 1.048, + "low_24h": 1.003, + "price_change_24h": -0.03487408917590695, + "price_change_percentage_24h": -3.36825, + "market_cap_change_24h": -36542.04351546243, + "market_cap_change_percentage_24h": -0.34949, + "circulating_supply": 10081677, + "total_supply": 10081677, + "max_supply": null, + "ath": 4.85, + "ath_change_percentage": -79.36276, + "ath_date": "2025-11-16T16:35:06.552Z", + "atl": 0.529751, + "atl_change_percentage": 88.86344, + "atl_date": "2025-10-10T21:27:24.758Z", + "roi": null, + "last_updated": "2025-12-05T15:48:52.228Z" + }, + { + "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.999165, + "market_cap": 9986929, + "market_cap_rank": 1572, + "fully_diluted_valuation": 9986929, + "total_volume": 2205.36, + "high_24h": 0.999423, + "low_24h": 0.998719, + "price_change_24h": -0.000224144810798022, + "price_change_percentage_24h": -0.02243, + "market_cap_change_24h": -2159.298208337277, + "market_cap_change_percentage_24h": -0.02162, + "circulating_supply": 9995193.681808962, + "total_supply": 9995193.681808962, + "max_supply": null, + "ath": 1.056, + "ath_change_percentage": -5.35774, + "ath_date": "2025-03-05T05:17:37.806Z", + "atl": 0.957772, + "atl_change_percentage": 4.32195, + "atl_date": "2024-08-05T06:26:49.059Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.646Z" + }, + { + "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.996522, + "market_cap": 9681322, + "market_cap_rank": 1613, + "fully_diluted_valuation": 9681322, + "total_volume": 989.68, + "high_24h": 0.996522, + "low_24h": 0.996522, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 55224, + "market_cap_change_percentage_24h": 0.57369, + "circulating_supply": 9715108.912111802, + "total_supply": 9715108.912111802, + "max_supply": null, + "ath": 1.008, + "ath_change_percentage": -1.11851, + "ath_date": "2025-11-07T08:35:23.724Z", + "atl": 0.755922, + "atl_change_percentage": 31.8288, + "atl_date": "2025-10-30T20:19:15.308Z", + "roi": null, + "last_updated": "2025-12-05T09:10:06.378Z" + }, + { + "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.011, + "market_cap": 9644089, + "market_cap_rank": 1615, + "fully_diluted_valuation": 9644089, + "total_volume": 253008, + "high_24h": 1.027, + "low_24h": 1.007, + "price_change_24h": -0.008252451361003388, + "price_change_percentage_24h": -0.80946, + "market_cap_change_24h": -83228.11499820091, + "market_cap_change_percentage_24h": -0.85561, + "circulating_supply": 9522411.050995, + "total_supply": 9522411.050995, + "max_supply": null, + "ath": 1.33, + "ath_change_percentage": -23.77722, + "ath_date": "2025-03-02T16:42:49.518Z", + "atl": 8.1944e-7, + "atl_change_percentage": 123639512.60355, + "atl_date": "2024-01-11T00:22:11.353Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.523Z" + }, + { + "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.998482, + "market_cap": 9585880, + "market_cap_rank": 1621, + "fully_diluted_valuation": 9585880, + "total_volume": 199773, + "high_24h": 1.002, + "low_24h": 0.994128, + "price_change_24h": -0.001010873619045061, + "price_change_percentage_24h": -0.10114, + "market_cap_change_24h": -21154.16922724247, + "market_cap_change_percentage_24h": -0.22019, + "circulating_supply": 9595998.62797846, + "total_supply": 9595998.62797846, + "max_supply": null, + "ath": 7.46, + "ath_change_percentage": -86.60658, + "ath_date": "2021-05-18T18:43:44.666Z", + "atl": 0.145538, + "atl_change_percentage": 586.89909, + "atl_date": "2020-11-17T05:38:41.319Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.403Z" + }, + { + "id": "jpycoin", + "symbol": "jpyc", + "name": "JPY Coin", + "image": "https://coin-images.coingecko.com/coins/images/70314/large/JPYC_400x400.jpg?1761556080", + "current_price": 0.006437, + "market_cap": 9559653, + "market_cap_rank": 1623, + "fully_diluted_valuation": 9559653, + "total_volume": 231005, + "high_24h": 0.00646267, + "low_24h": 0.00643663, + "price_change_24h": -0.000021377482939989, + "price_change_percentage_24h": -0.331, + "market_cap_change_24h": 1809603, + "market_cap_change_percentage_24h": 23.34956, + "circulating_supply": 1485000000, + "total_supply": 1485000000, + "max_supply": null, + "ath": 0.00671645, + "ath_change_percentage": -4.16065, + "ath_date": "2025-10-28T13:47:54.979Z", + "atl": 0.00628883, + "atl_change_percentage": 2.35612, + "atl_date": "2025-11-20T06:24:10.012Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.655Z" + }, + { + "id": "zedxion-usdz", + "symbol": "usdz", + "name": "Zedxion USDZ", + "image": "https://coin-images.coingecko.com/coins/images/25909/large/20475.png?1696524990", + "current_price": 1.016, + "market_cap": 8876733, + "market_cap_rank": 1674, + "fully_diluted_valuation": 88388378408, + "total_volume": 490.53, + "high_24h": 1.061, + "low_24h": 1.015, + "price_change_24h": -0.001315007709541849, + "price_change_percentage_24h": -0.12927, + "market_cap_change_24h": -11604.633054440841, + "market_cap_change_percentage_24h": -0.13056, + "circulating_supply": 8737300.386192651, + "total_supply": 87000000000, + "max_supply": 87000000000, + "ath": 2.75, + "ath_change_percentage": -63.12043, + "ath_date": "2023-02-27T08:04:52.907Z", + "atl": 0.072763, + "atl_change_percentage": 1296.25718, + "atl_date": "2025-11-10T14:57:48.682Z", + "roi": null, + "last_updated": "2025-12-05T05:49:39.333Z" + }, + { + "id": "yu", + "symbol": "yu", + "name": "Yala Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/56070/large/YU.png?1748275951", + "current_price": 0.227008, + "market_cap": 8703991, + "market_cap_rank": 1681, + "fully_diluted_valuation": 8703991, + "total_volume": 360.96, + "high_24h": 0.254416, + "low_24h": 0.226254, + "price_change_24h": -0.021925066310258784, + "price_change_percentage_24h": -8.80761, + "market_cap_change_24h": -839550.7587504014, + "market_cap_change_percentage_24h": -8.79706, + "circulating_supply": 38348529.31870486, + "total_supply": 38348529.31870486, + "max_supply": null, + "ath": 1.008, + "ath_change_percentage": -77.4684, + "ath_date": "2025-08-28T14:46:31.932Z", + "atl": 0.095921, + "atl_change_percentage": 136.66174, + "atl_date": "2025-11-18T11:11:46.091Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.063Z" + }, + { + "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.999919, + "market_cap": 8699515, + "market_cap_rank": 1683, + "fully_diluted_valuation": 8699515, + "total_volume": 436060, + "high_24h": 1.001, + "low_24h": 0.99941, + "price_change_24h": -0.000188904181427918, + "price_change_percentage_24h": -0.01889, + "market_cap_change_24h": -1419.7938924413174, + "market_cap_change_percentage_24h": -0.01632, + "circulating_supply": 8700000, + "total_supply": 8700000, + "max_supply": null, + "ath": 1.057, + "ath_change_percentage": -5.44083, + "ath_date": "2025-06-18T12:14:41.112Z", + "atl": 0.988659, + "atl_change_percentage": 1.14175, + "atl_date": "2025-05-27T14:57:22.484Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.504Z" + }, + { + "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": 1.002, + "market_cap": 8526720, + "market_cap_rank": 1699, + "fully_diluted_valuation": 8526720, + "total_volume": 14701.34, + "high_24h": 1.009, + "low_24h": 1.001, + "price_change_24h": -0.000994265467567423, + "price_change_percentage_24h": -0.09911, + "market_cap_change_24h": -8307.968336384743, + "market_cap_change_percentage_24h": -0.09734, + "circulating_supply": 8507197.367, + "total_supply": 8507197.367, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -14.95927, + "ath_date": "2025-06-14T14:37:18.687Z", + "atl": 0.90361, + "atl_change_percentage": 10.92118, + "atl_date": "2025-11-04T23:03:39.348Z", + "roi": null, + "last_updated": "2025-12-05T15:48:56.820Z" + }, + { + "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.999999, + "market_cap": 7966913, + "market_cap_rank": 1741, + "fully_diluted_valuation": 7966913, + "total_volume": 42766403, + "high_24h": 1, + "low_24h": 0.999299, + "price_change_24h": 0.00007679, + "price_change_percentage_24h": 0.00768, + "market_cap_change_24h": 1764.16, + "market_cap_change_percentage_24h": 0.02215, + "circulating_supply": 7966805.83, + "total_supply": 7966805.83, + "max_supply": null, + "ath": 1.053, + "ath_change_percentage": -4.99187, + "ath_date": "2025-03-04T20:26:03.971Z", + "atl": 0.877334, + "atl_change_percentage": 13.98439, + "atl_date": "2025-03-10T00:20:22.509Z", + "roi": null, + "last_updated": "2025-12-05T15:49:09.341Z" + }, + { + "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": 7789991, + "market_cap_rank": 1754, + "fully_diluted_valuation": 7789991, + "total_volume": 62083, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": 0.00458637, + "price_change_percentage_24h": 0.3967, + "market_cap_change_24h": 30864, + "market_cap_change_percentage_24h": 0.39778, + "circulating_supply": 6711393.422036, + "total_supply": 6711393.422036, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -2.46592, + "ath_date": "2025-09-17T18:16:58.636Z", + "atl": 0.929365, + "atl_change_percentage": 24.89498, + "atl_date": "2025-02-12T14:28:05.798Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.646Z" + }, + { + "id": "celo-euro", + "symbol": "ceur", + "name": "Celo Euro", + "image": "https://coin-images.coingecko.com/coins/images/16756/large/CEUR.png?1696516329", + "current_price": 1.16, + "market_cap": 7021490, + "market_cap_rank": 1824, + "fully_diluted_valuation": 12792568, + "total_volume": 231674, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.000082567893045837, + "price_change_percentage_24h": -0.0071, + "market_cap_change_24h": -2484.613117773086, + "market_cap_change_percentage_24h": -0.03537, + "circulating_supply": 6040806.92936527, + "total_supply": 11005846, + "max_supply": null, + "ath": 19.98, + "ath_change_percentage": -94.18317, + "ath_date": "2022-10-31T22:18:55.837Z", + "atl": 0.236339, + "atl_change_percentage": 391.75835, + "atl_date": "2024-01-08T22:25:25.873Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.269Z" + }, + { + "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.999642, + "market_cap": 6659430, + "market_cap_rank": 1866, + "fully_diluted_valuation": 50983367, + "total_volume": 25653219, + "high_24h": 1, + "low_24h": 0.999386, + "price_change_24h": -0.000236956124277543, + "price_change_percentage_24h": -0.0237, + "market_cap_change_24h": -1413.9181004399434, + "market_cap_change_percentage_24h": -0.02123, + "circulating_supply": 6661603, + "total_supply": 51000000, + "max_supply": null, + "ath": 1.043, + "ath_change_percentage": -4.17059, + "ath_date": "2025-03-02T16:45:57.727Z", + "atl": 0.938182, + "atl_change_percentage": 6.55455, + "atl_date": "2025-01-13T20:15:49.270Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.219Z" + }, + { + "id": "usd-coinvertible", + "symbol": "usdcv", + "name": "USD CoinVertible", + "image": "https://coin-images.coingecko.com/coins/images/69726/large/usd-coinvertible.png?1759401966", + "current_price": 0.998371, + "market_cap": 6477450, + "market_cap_rank": 1896, + "fully_diluted_valuation": 6477450, + "total_volume": 5611320, + "high_24h": 1.002, + "low_24h": 0.994881, + "price_change_24h": -0.001594542235494267, + "price_change_percentage_24h": -0.15946, + "market_cap_change_24h": 4797.01, + "market_cap_change_percentage_24h": 0.07411, + "circulating_supply": 6481300, + "total_supply": 6481300, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -11.82052, + "ath_date": "2025-10-10T21:26:30.938Z", + "atl": 0.978779, + "atl_change_percentage": 2.04302, + "atl_date": "2025-10-10T21:17:49.442Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.224Z" + }, + { + "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.0058977, + "market_cap": 6370504, + "market_cap_rank": 1906, + "fully_diluted_valuation": 6370504, + "total_volume": 992.06, + "high_24h": 0.00642682, + "low_24h": 0.00573458, + "price_change_24h": -0.000528734984584155, + "price_change_percentage_24h": -8.2275, + "market_cap_change_24h": -607254.707279657, + "market_cap_change_percentage_24h": -8.70272, + "circulating_supply": 1080164343.495482, + "total_supply": 1080164343.495482, + "max_supply": null, + "ath": 0.060753, + "ath_change_percentage": -90.25047, + "ath_date": "2021-11-17T16:38:28.459Z", + "atl": 0.0022112, + "atl_change_percentage": 167.87031, + "atl_date": "2025-05-23T20:10:53.020Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.897Z" + }, + { + "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.991458, + "market_cap": 5984490, + "market_cap_rank": 1944, + "fully_diluted_valuation": 5984490, + "total_volume": 294.51, + "high_24h": 1.008, + "low_24h": 0.986104, + "price_change_24h": -0.008950704207797422, + "price_change_percentage_24h": -0.8947, + "market_cap_change_24h": -67384.26767263003, + "market_cap_change_percentage_24h": -1.11344, + "circulating_supply": 6021802, + "total_supply": 6021802, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -5.50426, + "ath_date": "2025-07-10T21:46:28.589Z", + "atl": 0.890992, + "atl_change_percentage": 11.58059, + "atl_date": "2025-10-10T21:22:04.709Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.395Z" + }, + { + "id": "balanced-dollars", + "symbol": "bnusd", + "name": "Balanced Dollars", + "image": "https://coin-images.coingecko.com/coins/images/18949/large/bnUSD.png?1715223751", + "current_price": 1.11, + "market_cap": 5911602, + "market_cap_rank": 1955, + "fully_diluted_valuation": 5911602, + "total_volume": 54067, + "high_24h": 1.14, + "low_24h": 0.982117, + "price_change_24h": 0.109074, + "price_change_percentage_24h": 10.88626, + "market_cap_change_24h": -848744.9867787361, + "market_cap_change_percentage_24h": -12.55476, + "circulating_supply": 5935827.422410711, + "total_supply": 5935827.422410711, + "max_supply": null, + "ath": 1.85, + "ath_change_percentage": -39.92486, + "ath_date": "2023-01-21T11:40:07.335Z", + "atl": 0.708204, + "atl_change_percentage": 57.07246, + "atl_date": "2023-08-17T21:49:23.180Z", + "roi": null, + "last_updated": "2025-12-05T15:48:54.928Z" + }, + { + "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": 5818483, + "market_cap_rank": 1966, + "fully_diluted_valuation": 5818483, + "total_volume": 2.96, + "high_24h": 1.15, + "low_24h": 1.11, + "price_change_24h": 0.0029524, + "price_change_percentage_24h": 0.26453, + "market_cap_change_24h": -53269.98405758012, + "market_cap_change_percentage_24h": -0.90722, + "circulating_supply": 5199886.052474498, + "total_supply": 5199886.052474498, + "max_supply": null, + "ath": 1.3, + "ath_change_percentage": -14.04065, + "ath_date": "2025-07-19T03:25:09.761Z", + "atl": 1.05364e-10, + "atl_change_percentage": 1062066936366.7128, + "atl_date": "2025-03-28T14:05:20.939Z", + "roi": null, + "last_updated": "2025-12-05T15:45:01.772Z" + }, + { + "id": "husd", + "symbol": "husd", + "name": "HUSD", + "image": "https://coin-images.coingecko.com/coins/images/9567/large/HUSD.jpg?1696509647", + "current_price": 0.02988066, + "market_cap": 5612096, + "market_cap_rank": 1992, + "fully_diluted_valuation": 5612096, + "total_volume": 1.002, + "high_24h": 0.02988066, + "low_24h": 0.02862536, + "price_change_24h": 0.00081418, + "price_change_percentage_24h": 2.80111, + "market_cap_change_24h": 152917, + "market_cap_change_percentage_24h": 2.80111, + "circulating_supply": 187817004.8973786, + "total_supply": 187817004.8973786, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -97.61872, + "ath_date": "2020-03-13T02:40:09.956Z", + "atl": 0.00724195, + "atl_change_percentage": 312.60506, + "atl_date": "2025-10-26T01:35:35.556Z", + "roi": null, + "last_updated": "2025-12-05T03:34:40.068Z" + }, + { + "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.17, + "market_cap": 5532429, + "market_cap_rank": 2003, + "fully_diluted_valuation": 17477792, + "total_volume": 24580394, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.001097421872884974, + "price_change_percentage_24h": -0.0941, + "market_cap_change_24h": -5090.284739575349, + "market_cap_change_percentage_24h": -0.09192, + "circulating_supply": 4748107.408356, + "total_supply": 15000000, + "max_supply": null, + "ath": 1.19, + "ath_change_percentage": -1.9247, + "ath_date": "2025-09-17T18:12:05.006Z", + "atl": 0.763698, + "atl_change_percentage": 52.57818, + "atl_date": "2025-03-08T16:36:29.716Z", + "roi": null, + "last_updated": "2025-12-05T15:49:08.212Z" + }, + { + "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": 5067696, + "market_cap_rank": 2075, + "fully_diluted_valuation": 5067696, + "total_volume": 128336, + "high_24h": 1.25, + "low_24h": 1.24, + "price_change_24h": -0.001455319881712436, + "price_change_percentage_24h": -0.11678, + "market_cap_change_24h": -6241.3153013000265, + "market_cap_change_percentage_24h": -0.12301, + "circulating_supply": 4069871.44582, + "total_supply": 4069871.44582, + "max_supply": null, + "ath": 1.31, + "ath_change_percentage": -4.71282, + "ath_date": "2025-11-07T07:53:10.461Z", + "atl": 0.0112707, + "atl_change_percentage": 10946.31791, + "atl_date": "2023-11-26T14:24:40.720Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.454Z" + }, + { + "id": "tokenised-gbp", + "symbol": "tgbp", + "name": "Tokenised GBP", + "image": "https://coin-images.coingecko.com/coins/images/70647/large/tgbp-square.png?1762953800", + "current_price": 1.33, + "market_cap": 5067617, + "market_cap_rank": 2076, + "fully_diluted_valuation": 5067617, + "total_volume": 251.62, + "high_24h": 1.34, + "low_24h": 1.33, + "price_change_24h": -0.007390965941274752, + "price_change_percentage_24h": -0.55177, + "market_cap_change_24h": -30468.208402603865, + "market_cap_change_percentage_24h": -0.59764, + "circulating_supply": 3804174.7, + "total_supply": 3804174.7, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -1.17116, + "ath_date": "2025-12-03T22:27:13.845Z", + "atl": 1.3, + "atl_change_percentage": 2.38543, + "atl_date": "2025-11-21T12:35:04.123Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.718Z" + }, + { + "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": 4986394, + "market_cap_rank": 2089, + "fully_diluted_valuation": 4986394, + "total_volume": 18633.43, + "high_24h": 1, + "low_24h": 0.99902, + "price_change_24h": 0.00007536, + "price_change_percentage_24h": 0.00753, + "market_cap_change_24h": 915.29, + "market_cap_change_percentage_24h": 0.01836, + "circulating_supply": 4984771.73265966, + "total_supply": 4984771.73265966, + "max_supply": null, + "ath": 1.065, + "ath_change_percentage": -6.05596, + "ath_date": "2025-11-17T18:56:26.971Z", + "atl": 0.874612, + "atl_change_percentage": 14.37367, + "atl_date": "2025-11-03T15:37:26.865Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.059Z" + }, + { + "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": 4779726, + "market_cap_rank": 2134, + "fully_diluted_valuation": 57513915, + "total_volume": 344828, + "high_24h": 1.15, + "low_24h": 1.15, + "price_change_24h": 0.0034138, + "price_change_percentage_24h": 0.29761, + "market_cap_change_24h": 13277.21, + "market_cap_change_percentage_24h": 0.27856, + "circulating_supply": 4155281.738213, + "total_supply": 50000050, + "max_supply": 50000050, + "ath": 1.31, + "ath_change_percentage": -12.03635, + "ath_date": "2021-09-02T00:28:44.121Z", + "atl": 0.944541, + "atl_change_percentage": 21.73486, + "atl_date": "2022-09-27T16:30:27.333Z", + "roi": null, + "last_updated": "2025-12-05T15:49:01.526Z" + }, + { + "id": "nectar", + "symbol": "nect", + "name": "Nectar", + "image": "https://coin-images.coingecko.com/coins/images/54231/large/NECT_%281%29.png?1738861282", + "current_price": 0.993486, + "market_cap": 4686077, + "market_cap_rank": 2162, + "fully_diluted_valuation": 4686077, + "total_volume": 109870, + "high_24h": 1.028, + "low_24h": 0.99177, + "price_change_24h": -0.00623350151728741, + "price_change_percentage_24h": -0.62353, + "market_cap_change_24h": -29609.788551582955, + "market_cap_change_percentage_24h": -0.6279, + "circulating_supply": 4717559.53766, + "total_supply": 4717559.53766, + "max_supply": null, + "ath": 1.036, + "ath_change_percentage": -4.07686, + "ath_date": "2025-12-02T17:37:29.111Z", + "atl": 0.924306, + "atl_change_percentage": 7.4812, + "atl_date": "2025-11-04T15:03:00.855Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.949Z" + }, + { + "id": "axcnh", + "symbol": "axcnh", + "name": "AxCNH", + "image": "https://coin-images.coingecko.com/coins/images/70634/large/AnchorX_logo_RGB-01.png?1762887300", + "current_price": 0.14141, + "market_cap": 4383704, + "market_cap_rank": 2213, + "fully_diluted_valuation": 4383704, + "total_volume": 383130, + "high_24h": 0.141634, + "low_24h": 0.141311, + "price_change_24h": -0.00022428216408521, + "price_change_percentage_24h": -0.15835, + "market_cap_change_24h": -6952.747086640447, + "market_cap_change_percentage_24h": -0.15835, + "circulating_supply": 31000000, + "total_supply": 31000000, + "max_supply": null, + "ath": 0.14264, + "ath_change_percentage": -0.86234, + "ath_date": "2025-11-12T06:11:07.408Z", + "atl": 0.132474, + "atl_change_percentage": 6.74493, + "atl_date": "2025-11-12T11:35:49.891Z", + "roi": null, + "last_updated": "2025-12-05T15:48:54.465Z" + }, + { + "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": 1.049, + "market_cap": 4220911, + "market_cap_rank": 2248, + "fully_diluted_valuation": 4220911, + "total_volume": 182524, + "high_24h": 1.059, + "low_24h": 0.986074, + "price_change_24h": 0.03031573, + "price_change_percentage_24h": 2.97492, + "market_cap_change_24h": 125260, + "market_cap_change_percentage_24h": 3.05836, + "circulating_supply": 4019107.3, + "total_supply": 4019107.3, + "max_supply": null, + "ath": 1.29, + "ath_change_percentage": -18.82699, + "ath_date": "2025-11-16T16:56:48.665Z", + "atl": 0.492089, + "atl_change_percentage": 113.48124, + "atl_date": "2025-10-10T21:25:20.523Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.853Z" + }, + { + "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.660741, + "market_cap": 4063562, + "market_cap_rank": 2277, + "fully_diluted_valuation": 4063562, + "total_volume": 399188, + "high_24h": 0.662313, + "low_24h": 0.656074, + "price_change_24h": 0.0016297, + "price_change_percentage_24h": 0.24726, + "market_cap_change_24h": 8525.05, + "market_cap_change_percentage_24h": 0.21023, + "circulating_supply": 6152797.454638, + "total_supply": 6152797.454638, + "max_supply": null, + "ath": 2.87, + "ath_change_percentage": -76.98732, + "ath_date": "2025-10-04T02:11:11.718Z", + "atl": 0.36464, + "atl_change_percentage": 81.12144, + "atl_date": "2024-12-18T18:34:11.402Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.274Z" + }, + { + "id": "pinto", + "symbol": "pinto", + "name": "Pinto", + "image": "https://coin-images.coingecko.com/coins/images/54217/large/pinto.png?1738829146", + "current_price": 0.371633, + "market_cap": 3984504, + "market_cap_rank": 2298, + "fully_diluted_valuation": 3984504, + "total_volume": 413959, + "high_24h": 0.380805, + "low_24h": 0.368961, + "price_change_24h": -0.009172081345568739, + "price_change_percentage_24h": -2.40861, + "market_cap_change_24h": -77314.65518808272, + "market_cap_change_percentage_24h": -1.90345, + "circulating_supply": 10684119.6782, + "total_supply": 10684119.6782, + "max_supply": null, + "ath": 1.023, + "ath_change_percentage": -63.62006, + "ath_date": "2025-07-26T02:42:16.318Z", + "atl": 0.329728, + "atl_change_percentage": 12.84747, + "atl_date": "2025-11-21T12:32:47.938Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.837Z" + }, + { + "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": 1.001, + "market_cap": 3840653, + "market_cap_rank": 2333, + "fully_diluted_valuation": 3840653, + "total_volume": 69756, + "high_24h": 1.013, + "low_24h": 0.990804, + "price_change_24h": -0.00502360368874788, + "price_change_percentage_24h": -0.49919, + "market_cap_change_24h": -12202.108116466086, + "market_cap_change_percentage_24h": -0.3167, + "circulating_supply": 3826299.407031692, + "total_supply": 3826299.407031692, + "max_supply": null, + "ath": 1.15, + "ath_change_percentage": -12.8139, + "ath_date": "2025-05-23T05:29:49.903Z", + "atl": 0.862517, + "atl_change_percentage": 16.62393, + "atl_date": "2024-12-21T23:31:42.836Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.336Z" + }, + { + "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.01689122, + "market_cap": 3800726, + "market_cap_rank": 2344, + "fully_diluted_valuation": 3800726, + "total_volume": 12622.64, + "high_24h": 0.01702147, + "low_24h": 0.01685188, + "price_change_24h": 0.00002714, + "price_change_percentage_24h": 0.16092, + "market_cap_change_24h": 6169.81, + "market_cap_change_percentage_24h": 0.1626, + "circulating_supply": 225011899.7613014, + "total_supply": 225011899.7613014, + "max_supply": null, + "ath": 0.01817267, + "ath_change_percentage": -7.05152, + "ath_date": "2025-08-16T07:09:56.107Z", + "atl": 0.01684926, + "atl_change_percentage": 0.24906, + "atl_date": "2025-11-17T02:07:25.904Z", + "roi": null, + "last_updated": "2025-12-05T15:49:07.767Z" + }, + { + "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.057744, + "market_cap": 3698280, + "market_cap_rank": 2359, + "fully_diluted_valuation": 3698280, + "total_volume": 50823, + "high_24h": 0.057964, + "low_24h": 0.057484, + "price_change_24h": -0.000146025615013971, + "price_change_percentage_24h": -0.25225, + "market_cap_change_24h": -6675.310566914268, + "market_cap_change_percentage_24h": -0.18017, + "circulating_supply": 64007240.83270886, + "total_supply": 64007240.83270886, + "max_supply": null, + "ath": 0.060594, + "ath_change_percentage": -4.66084, + "ath_date": "2025-10-10T21:45:39.867Z", + "atl": 0.04593778, + "atl_change_percentage": 25.75661, + "atl_date": "2024-12-15T04:10:04.771Z", + "roi": null, + "last_updated": "2025-12-05T15:49:03.211Z" + }, + { + "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.187108, + "market_cap": 3693611, + "market_cap_rank": 2364, + "fully_diluted_valuation": 3693611, + "total_volume": 256223, + "high_24h": 0.187891, + "low_24h": 0.187108, + "price_change_24h": -0.00059107738863487, + "price_change_percentage_24h": -0.31491, + "market_cap_change_24h": 121839, + "market_cap_change_percentage_24h": 3.41116, + "circulating_supply": 19730510.63025705, + "total_supply": 19730510.63025705, + "max_supply": null, + "ath": 0.189082, + "ath_change_percentage": -0.99393, + "ath_date": "2025-11-11T15:47:30.047Z", + "atl": 0.075673, + "atl_change_percentage": 147.38395, + "atl_date": "2024-11-04T22:10:31.830Z", + "roi": null, + "last_updated": "2025-12-05T15:48:59.414Z" + }, + { + "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.999926, + "market_cap": 3464336, + "market_cap_rank": 2426, + "fully_diluted_valuation": 3464336, + "total_volume": 745967, + "high_24h": 1, + "low_24h": 0.998901, + "price_change_24h": 0.0009654, + "price_change_percentage_24h": 0.09664, + "market_cap_change_24h": 3344.72, + "market_cap_change_percentage_24h": 0.09664, + "circulating_supply": 3464592, + "total_supply": 3464592, + "max_supply": null, + "ath": 1.019, + "ath_change_percentage": -1.88903, + "ath_date": "2025-10-01T12:14:21.672Z", + "atl": 0.976486, + "atl_change_percentage": 2.40042, + "atl_date": "2025-10-01T08:18:44.031Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.189Z" + }, + { + "id": "ylds", + "symbol": "ylds", + "name": "YLDS", + "image": "https://coin-images.coingecko.com/coins/images/66486/large/Frame_5589.png?1749524968", + "current_price": 0.999395, + "market_cap": 3414093, + "market_cap_rank": 2441, + "fully_diluted_valuation": 3414093, + "total_volume": 0.149909, + "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.0708, + "ath_date": "2025-08-27T20:28:23.402Z", + "atl": 0.999202, + "atl_change_percentage": 0.01935, + "atl_date": "2025-11-16T12:26:29.488Z", + "roi": null, + "last_updated": "2025-11-16T12:57:39.736Z" + }, + { + "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": 0.997167, + "market_cap": 3319394, + "market_cap_rank": 2467, + "fully_diluted_valuation": 3319421, + "total_volume": 22962, + "high_24h": 1.001, + "low_24h": 0.99525, + "price_change_24h": 0.00074899, + "price_change_percentage_24h": 0.07517, + "market_cap_change_24h": -44052.730626203585, + "market_cap_change_percentage_24h": -1.30975, + "circulating_supply": 3328586.489948905, + "total_supply": 3328613.215566128, + "max_supply": null, + "ath": 1.089, + "ath_change_percentage": -8.47075, + "ath_date": "2025-10-10T21:48:41.755Z", + "atl": 0.00096541, + "atl_change_percentage": 103189.76325, + "atl_date": "2025-01-24T00:01:56.268Z", + "roi": null, + "last_updated": "2025-12-05T15:49:06.495Z" + }, + { + "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.999221, + "market_cap": 3290154, + "market_cap_rank": 2477, + "fully_diluted_valuation": 3545566, + "total_volume": 14479.41, + "high_24h": 1.006, + "low_24h": 0.989238, + "price_change_24h": -0.001876807443942918, + "price_change_percentage_24h": -0.18748, + "market_cap_change_24h": -6196.754187650047, + "market_cap_change_percentage_24h": -0.18799, + "circulating_supply": 3292720.646582336, + "total_supply": 3548331.377671628, + "max_supply": 3548331.377671628, + "ath": 5.55, + "ath_change_percentage": -81.9235, + "ath_date": "2024-03-16T13:26:58.463Z", + "atl": 0.15544, + "atl_change_percentage": 545.60086, + "atl_date": "2023-12-30T14:09:50.453Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.352Z" + }, + { + "id": "soulpeg-usd", + "symbol": "spusd", + "name": "SoulPeg USD", + "image": "https://coin-images.coingecko.com/coins/images/68527/large/spusd.png?1756049627", + "current_price": 1.005, + "market_cap": 3237889, + "market_cap_rank": 2494, + "fully_diluted_valuation": 3237889, + "total_volume": 367.08, + "high_24h": 1.005, + "low_24h": 0.999188, + "price_change_24h": 0.00398524, + "price_change_percentage_24h": 0.39815, + "market_cap_change_24h": 63742, + "market_cap_change_percentage_24h": 2.00818, + "circulating_supply": 3230165.496045071, + "total_supply": 3230165.496045071, + "max_supply": null, + "ath": 1.014, + "ath_change_percentage": -1.17036, + "ath_date": "2025-10-13T07:13:21.694Z", + "atl": 0.97149, + "atl_change_percentage": 3.18079, + "atl_date": "2025-08-27T17:22:49.750Z", + "roi": null, + "last_updated": "2025-12-05T15:49:09.013Z" + }, + { + "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.17, + "market_cap": 3227695, + "market_cap_rank": 2497, + "fully_diluted_valuation": 3227695, + "total_volume": 147461, + "high_24h": 1.17, + "low_24h": 1.16, + "price_change_24h": -0.002225155424054881, + "price_change_percentage_24h": -0.19021, + "market_cap_change_24h": -7961.636867815163, + "market_cap_change_percentage_24h": -0.24606, + "circulating_supply": 2764082.75105, + "total_supply": 2764082.75105, + "max_supply": null, + "ath": 1.2, + "ath_change_percentage": -2.8326, + "ath_date": "2025-07-14T00:50:20.573Z", + "atl": 1.003, + "atl_change_percentage": 16.39985, + "atl_date": "2025-01-19T23:09:25.137Z", + "roi": null, + "last_updated": "2025-12-05T15:49:02.430Z" + }, + { + "id": "last-usd", + "symbol": "usdxl", + "name": "Last USD", + "image": "https://coin-images.coingecko.com/coins/images/55083/large/usdxl.jpg?1743648438", + "current_price": 0.986852, + "market_cap": 3162499, + "market_cap_rank": 2520, + "fully_diluted_valuation": 86978129937, + "total_volume": 110922, + "high_24h": 0.991478, + "low_24h": 0.981599, + "price_change_24h": -0.001635544597054062, + "price_change_percentage_24h": -0.16546, + "market_cap_change_24h": -1092.779658997897, + "market_cap_change_percentage_24h": -0.03454, + "circulating_supply": 3199710, + "total_supply": 88001535328.80452, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -11.04973, + "ath_date": "2025-10-10T22:36:55.377Z", + "atl": 0.816078, + "atl_change_percentage": 20.96306, + "atl_date": "2025-10-10T21:35:29.984Z", + "roi": null, + "last_updated": "2025-12-05T15:49:05.950Z" + }, + { + "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.16, + "market_cap": 3066901, + "market_cap_rank": 2548, + "fully_diluted_valuation": 3066901, + "total_volume": 377.54, + "high_24h": 1.16, + "low_24h": 1.16, + "price_change_24h": -0.000093530126788144, + "price_change_percentage_24h": -0.00805, + "market_cap_change_24h": 14253.67, + "market_cap_change_percentage_24h": 0.46693, + "circulating_supply": 2639789.405390709, + "total_supply": 2639789.405390708, + "max_supply": null, + "ath": 2.3, + "ath_change_percentage": -49.48861, + "ath_date": "2025-07-28T09:34:46.909Z", + "atl": 0.860143, + "atl_change_percentage": 35.07029, + "atl_date": "2025-06-22T18:32:44.468Z", + "roi": null, + "last_updated": "2025-12-05T03:25:49.013Z" + }, + { + "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.999382, + "market_cap": 3025118, + "market_cap_rank": 2562, + "fully_diluted_valuation": 3025118, + "total_volume": 122.13, + "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": 3026987.442751706, + "total_supply": 3026987.442751706, + "max_supply": null, + "ath": 1.094, + "ath_change_percentage": -8.64505, + "ath_date": "2025-10-10T21:35:42.657Z", + "atl": 0.911731, + "atl_change_percentage": 9.6137, + "atl_date": "2025-07-17T08:06:20.701Z", + "roi": null, + "last_updated": "2025-12-03T20:02:57.246Z" + }, + { + "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.998882, + "market_cap": 3012453, + "market_cap_rank": 2566, + "fully_diluted_valuation": 3012453, + "total_volume": 26248, + "high_24h": 1.028, + "low_24h": 0.992587, + "price_change_24h": -0.002152203676425768, + "price_change_percentage_24h": -0.215, + "market_cap_change_24h": -142953.9808683591, + "market_cap_change_percentage_24h": -4.53045, + "circulating_supply": 3010725, + "total_supply": 3010725, + "max_supply": null, + "ath": 1.13, + "ath_change_percentage": -11.1968, + "ath_date": "2024-03-11T13:20:56.566Z", + "atl": 0.771263, + "atl_change_percentage": 29.60296, + "atl_date": "2025-10-10T21:30:21.451Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.697Z" + }, + { + "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": 0.99987, + "market_cap": 2986642, + "market_cap_rank": 2577, + "fully_diluted_valuation": 2986642, + "total_volume": 18685.26, + "high_24h": 1, + "low_24h": 0.9995, + "price_change_24h": 0.00012424, + "price_change_percentage_24h": 0.01243, + "market_cap_change_24h": 3768.98, + "market_cap_change_percentage_24h": 0.12635, + "circulating_supply": 2987025.375047, + "total_supply": 2987025.375047, + "max_supply": null, + "ath": 1.008, + "ath_change_percentage": -0.81083, + "ath_date": "2025-10-04T15:16:50.226Z", + "atl": 0.981982, + "atl_change_percentage": 1.82179, + "atl_date": "2025-10-17T08:25:27.097Z", + "roi": null, + "last_updated": "2025-12-05T15:49:04.793Z" + }, + { + "id": "musd", + "symbol": "musd", + "name": "mStable USD", + "image": "https://coin-images.coingecko.com/coins/images/11576/large/mStable_USD.png?1696511474", + "current_price": 1.001, + "market_cap": 2877790, + "market_cap_rank": 2616, + "fully_diluted_valuation": 2877790, + "total_volume": 362.82, + "high_24h": 1.004, + "low_24h": 0.996397, + "price_change_24h": 0.00093921, + "price_change_percentage_24h": 0.09396, + "market_cap_change_24h": 4557.85, + "market_cap_change_percentage_24h": 0.15863, + "circulating_supply": 2875948.71330722, + "total_supply": 2875948.71330722, + "max_supply": null, + "ath": 2.71, + "ath_change_percentage": -63.0847, + "ath_date": "2022-07-25T07:15:35.139Z", + "atl": 0.472562, + "atl_change_percentage": 111.7322, + "atl_date": "2023-06-19T11:31:37.482Z", + "roi": null, + "last_updated": "2025-12-05T15:48:37.034Z" + }, + { + "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.26, + "market_cap": 2821785, + "market_cap_rank": 2630, + "fully_diluted_valuation": 2821785, + "total_volume": 509.69, + "high_24h": 1.27, + "low_24h": 1.24, + "price_change_24h": 0.00493793, + "price_change_percentage_24h": 0.39369, + "market_cap_change_24h": 12037.36, + "market_cap_change_percentage_24h": 0.42841, + "circulating_supply": 2240894, + "total_supply": 2240894, + "max_supply": null, + "ath": 5.6, + "ath_change_percentage": -77.49854, + "ath_date": "2023-05-29T09:51:15.002Z", + "atl": 0.623886, + "atl_change_percentage": 102.12694, + "atl_date": "2024-06-09T08:40:08.384Z", + "roi": null, + "last_updated": "2025-12-05T15:46:45.978Z" + }, + { + "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.05, + "market_cap": 2486801, + "market_cap_rank": 2763, + "fully_diluted_valuation": 2486801, + "total_volume": 20202, + "high_24h": 1.052, + "low_24h": 1.049, + "price_change_24h": 0.00051564, + "price_change_percentage_24h": 0.04915, + "market_cap_change_24h": 93.28, + "market_cap_change_percentage_24h": 0.00375, + "circulating_supply": 2369418.059858, + "total_supply": 2369418.059858, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -5.53064, + "ath_date": "2025-12-02T20:10:40.131Z", + "atl": 0.938938, + "atl_change_percentage": 11.77961, + "atl_date": "2025-10-10T21:25:15.859Z", + "roi": null, + "last_updated": "2025-12-05T15:48:47.312Z" + }, + { + "id": "vai", + "symbol": "vai", + "name": "Vai", + "image": "https://coin-images.coingecko.com/coins/images/13861/large/VAI.png?1709766684", + "current_price": 1.001, + "market_cap": 2434629, + "market_cap_rank": 2788, + "fully_diluted_valuation": 2434471, + "total_volume": 36902, + "high_24h": 1.002, + "low_24h": 0.992614, + "price_change_24h": 0.0003511, + "price_change_percentage_24h": 0.03509, + "market_cap_change_24h": 5745.48, + "market_cap_change_percentage_24h": 0.23655, + "circulating_supply": 2432491.563872117, + "total_supply": 2432334.264367903, + "max_supply": null, + "ath": 4.76, + "ath_change_percentage": -78.9909, + "ath_date": "2023-12-19T15:50:55.633Z", + "atl": 0.579175, + "atl_change_percentage": 72.80296, + "atl_date": "2021-02-20T12:41:31.556Z", + "roi": null, + "last_updated": "2025-12-05T15:48:41.616Z" + }, + { + "id": "smardex-usdn", + "symbol": "usdn", + "name": "SMARDEX USDN", + "image": "https://coin-images.coingecko.com/coins/images/52939/large/USDN.png?1734769447", + "current_price": 0.996959, + "market_cap": 2217643, + "market_cap_rank": 2889, + "fully_diluted_valuation": 2217643, + "total_volume": 34595, + "high_24h": 1.009, + "low_24h": 0.983013, + "price_change_24h": 0.00161911, + "price_change_percentage_24h": 0.16267, + "market_cap_change_24h": -140105.42722238135, + "market_cap_change_percentage_24h": -5.94234, + "circulating_supply": 2216553.871178867, + "total_supply": 2216553.871178867, + "max_supply": null, + "ath": 1.054, + "ath_change_percentage": -5.09013, + "ath_date": "2025-10-10T21:40:10.552Z", + "atl": 0.95378, + "atl_change_percentage": 4.89747, + "atl_date": "2025-02-03T07:57:38.623Z", + "roi": null, + "last_updated": "2025-12-05T15:48:32.374Z" + }, + { + "id": "bilira", + "symbol": "tryb", + "name": "BiLira", + "image": "https://coin-images.coingecko.com/coins/images/10119/large/JBs9jiXO_400x400.jpg?1696510144", + "current_price": 0.02614852, + "market_cap": 2165422, + "market_cap_rank": 2912, + "fully_diluted_valuation": 2165422, + "total_volume": 2.53, + "high_24h": 0.02615048, + "low_24h": 0.02358359, + "price_change_24h": 0.00256247, + "price_change_percentage_24h": 10.86437, + "market_cap_change_24h": 212391, + "market_cap_change_percentage_24h": 10.87494, + "circulating_supply": 82812421.543863, + "total_supply": 82812421.543863, + "max_supply": null, + "ath": 0.192677, + "ath_change_percentage": -86.4288, + "ath_date": "2023-09-20T16:54:03.571Z", + "atl": 0.00006956, + "atl_change_percentage": 37493.74189, + "atl_date": "2024-08-23T23:31:07.932Z", + "roi": null, + "last_updated": "2025-12-05T15:08:23.423Z" + }, + { + "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.995714, + "market_cap": 2154928, + "market_cap_rank": 2915, + "fully_diluted_valuation": 2158362, + "total_volume": 2000.04, + "high_24h": 1.006, + "low_24h": 0.990025, + "price_change_24h": 0.00016438, + "price_change_percentage_24h": 0.01651, + "market_cap_change_24h": 40425, + "market_cap_change_percentage_24h": 1.91178, + "circulating_supply": 2164203.656357, + "total_supply": 2167651.936357, + "max_supply": 1000000000, + "ath": 1.01, + "ath_change_percentage": -1.45461, + "ath_date": "2025-11-14T13:56:55.654Z", + "atl": 0.987027, + "atl_change_percentage": 0.88016, + "atl_date": "2025-10-17T09:52:16.372Z", + "roi": null, + "last_updated": "2025-12-05T15:44:46.062Z" + }, + { + "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.028, + "market_cap": 2141581, + "market_cap_rank": 2920, + "fully_diluted_valuation": 2141581, + "total_volume": 24895, + "high_24h": 1.039, + "low_24h": 1.019, + "price_change_24h": -0.006829073330569368, + "price_change_percentage_24h": -0.66004, + "market_cap_change_24h": -15906.623270984273, + "market_cap_change_percentage_24h": -0.73728, + "circulating_supply": 2085812.988153559, + "total_supply": 2085812.988153559, + "max_supply": null, + "ath": 1.24, + "ath_change_percentage": -17.26803, + "ath_date": "2024-09-04T08:22:04.003Z", + "atl": 0.685765, + "atl_change_percentage": 49.54762, + "atl_date": "2025-10-10T21:23:44.133Z", + "roi": null, + "last_updated": "2025-12-05T15:47:20.824Z" + }, + { + "id": "rome-stablecoin", + "symbol": "rome", + "name": "ROME Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/55694/large/Logo.png?1747039329", + "current_price": 1.009, + "market_cap": 2125168, + "market_cap_rank": 2927, + "fully_diluted_valuation": 2125168, + "total_volume": 770.95, + "high_24h": 1.014, + "low_24h": 0.972402, + "price_change_24h": 0.00887289, + "price_change_percentage_24h": 0.8873, + "market_cap_change_24h": 30171, + "market_cap_change_percentage_24h": 1.44013, + "circulating_supply": 2095015.24994, + "total_supply": 2095015.24994, + "max_supply": null, + "ath": 1.35, + "ath_change_percentage": -25.08595, + "ath_date": "2025-08-23T09:26:48.993Z", + "atl": 0.569602, + "atl_change_percentage": 77.11755, + "atl_date": "2025-08-25T05:45:24.139Z", + "roi": null, + "last_updated": "2025-12-05T15:47:18.086Z" + }, + { + "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.53, + "market_cap": 2114491, + "market_cap_rank": 2931, + "fully_diluted_valuation": 2114491, + "total_volume": 5761.23, + "high_24h": 3.66, + "low_24h": 3.43, + "price_change_24h": 0.098145, + "price_change_percentage_24h": 2.86154, + "market_cap_change_24h": -47581.135350354016, + "market_cap_change_percentage_24h": -2.20072, + "circulating_supply": 599356.2432135106, + "total_supply": 599356.2432135106, + "max_supply": null, + "ath": 5.8, + "ath_change_percentage": -39.01998, + "ath_date": "2025-08-24T19:21:09.399Z", + "atl": 2.44, + "atl_change_percentage": 45.16953, + "atl_date": "2023-10-08T05:56:39.127Z", + "roi": null, + "last_updated": "2025-12-05T15:47:47.438Z" + }, + { + "id": "solomon-usdv", + "symbol": "usdv", + "name": "Solomon USDv", + "image": "https://coin-images.coingecko.com/coins/images/55255/large/usdv.png?1762673885", + "current_price": 1.001, + "market_cap": 2020164, + "market_cap_rank": 2973, + "fully_diluted_valuation": 2020164, + "total_volume": 2307.64, + "high_24h": 1.001, + "low_24h": 0.999598, + "price_change_24h": 0.00017944, + "price_change_percentage_24h": 0.01793, + "market_cap_change_24h": 847, + "market_cap_change_percentage_24h": 0.04194, + "circulating_supply": 2018166.212505723, + "total_supply": 2018166.212505723, + "max_supply": null, + "ath": 1.11, + "ath_change_percentage": -9.94357, + "ath_date": "2025-09-04T14:29:19.631Z", + "atl": 0.997989, + "atl_change_percentage": 0.30073, + "atl_date": "2025-11-07T16:23:43.473Z", + "roi": null, + "last_updated": "2025-12-05T15:48:17.880Z" + }, + { + "id": "usdbr", + "symbol": "usdbr", + "name": "USDbr", + "image": "https://coin-images.coingecko.com/coins/images/55096/large/USDbr.png?1743699568", + "current_price": 0.916033, + "market_cap": 2007918, + "market_cap_rank": 2982, + "fully_diluted_valuation": 2007918, + "total_volume": 36.26, + "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": -23.16488, + "ath_date": "2025-10-23T00:51:27.596Z", + "atl": 0.844613, + "atl_change_percentage": 8.45597, + "atl_date": "2025-08-16T19:08:48.102Z", + "roi": null, + "last_updated": "2025-11-25T02:32:46.038Z" + }, + { + "id": "mxnb", + "symbol": "mxnb", + "name": "MXNB", + "image": "https://coin-images.coingecko.com/coins/images/39136/large/MNXB_Logo.png?1746088156", + "current_price": 0.05474, + "market_cap": 1953684, + "market_cap_rank": 3005, + "fully_diluted_valuation": 1953684, + "total_volume": 82558, + "high_24h": 0.054792, + "low_24h": 0.054523, + "price_change_24h": 0.00018315, + "price_change_percentage_24h": 0.33571, + "market_cap_change_24h": 39300, + "market_cap_change_percentage_24h": 2.0529, + "circulating_supply": 35686077.46821, + "total_supply": 35686077.46821, + "max_supply": null, + "ath": 0.063759, + "ath_change_percentage": -14.13512, + "ath_date": "2025-08-17T18:23:21.686Z", + "atl": 0.04638506, + "atl_change_percentage": 18.02567, + "atl_date": "2025-08-21T18:39:37.272Z", + "roi": null, + "last_updated": "2025-12-05T15:48:34.632Z" + }, + { + "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": 0.994538, + "market_cap": 1884434, + "market_cap_rank": 3046, + "fully_diluted_valuation": 1884434, + "total_volume": 4946.48, + "high_24h": 0.997243, + "low_24h": 0.993814, + "price_change_24h": -0.002698802711283643, + "price_change_percentage_24h": -0.27063, + "market_cap_change_24h": -5115.642254369799, + "market_cap_change_percentage_24h": -0.27073, + "circulating_supply": 1894783.811505495, + "total_supply": 1894783.811505495, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -50.36315, + "ath_date": "2025-08-17T23:12:53.419Z", + "atl": 0.978907, + "atl_change_percentage": 1.59679, + "atl_date": "2025-11-20T01:24:00.120Z", + "roi": null, + "last_updated": "2025-12-05T15:46:57.631Z" + }, + { + "id": "byusd", + "symbol": "byusd", + "name": "BYUSD", + "image": "https://coin-images.coingecko.com/coins/images/67819/large/byusd.png?1753942382", + "current_price": 1, + "market_cap": 1843290, + "market_cap_rank": 3059, + "fully_diluted_valuation": 1843290, + "total_volume": 128.19, + "high_24h": 1.001, + "low_24h": 0.985126, + "price_change_24h": 0.00129093, + "price_change_percentage_24h": 0.1292, + "market_cap_change_24h": 2035.8, + "market_cap_change_percentage_24h": 0.11057, + "circulating_supply": 1842684.976897, + "total_supply": 1842684.976897, + "max_supply": null, + "ath": 1.5, + "ath_change_percentage": -33.30209, + "ath_date": "2025-08-28T11:57:07.905Z", + "atl": 0.502942, + "atl_change_percentage": 98.91393, + "atl_date": "2025-10-17T19:26:54.586Z", + "roi": null, + "last_updated": "2025-12-05T15:46:54.841Z" + }, + { + "id": "parallel-usdp", + "symbol": "usdp", + "name": "Parallel USDp", + "image": "https://coin-images.coingecko.com/coins/images/69613/large/usdp.png?1759221769", + "current_price": 0.99969, + "market_cap": 1775492, + "market_cap_rank": 3099, + "fully_diluted_valuation": 1775492, + "total_volume": 87268, + "high_24h": 0.999992, + "low_24h": 0.998301, + "price_change_24h": 0.00038798, + "price_change_percentage_24h": 0.03882, + "market_cap_change_24h": 182756, + "market_cap_change_percentage_24h": 11.47433, + "circulating_supply": 1776043.17713339, + "total_supply": 1776043.17713339, + "max_supply": null, + "ath": 2.25, + "ath_change_percentage": -55.61611, + "ath_date": "2025-11-04T14:02:08.362Z", + "atl": 0.983657, + "atl_change_percentage": 1.62994, + "atl_date": "2025-10-02T17:49:44.886Z", + "roi": null, + "last_updated": "2025-12-05T15:47:37.271Z" + }, + { + "id": "saga-dollar", + "symbol": "d", + "name": "Saga Dollar", + "image": "https://coin-images.coingecko.com/coins/images/70864/large/Saga_Dollar_Logo.png?1764311392", + "current_price": 0.997618, + "market_cap": 1730482, + "market_cap_rank": 3123, + "fully_diluted_valuation": 1730482, + "total_volume": 167599, + "high_24h": 1, + "low_24h": 0.996271, + "price_change_24h": -0.000631880629031079, + "price_change_percentage_24h": -0.0633, + "market_cap_change_24h": 507082, + "market_cap_change_percentage_24h": 41.44861, + "circulating_supply": 1734613.876282493, + "total_supply": 1734613.876282493, + "max_supply": null, + "ath": 1.011, + "ath_change_percentage": -1.34199, + "ath_date": "2025-11-29T08:13:52.786Z", + "atl": 0.99346, + "atl_change_percentage": 0.41852, + "atl_date": "2025-12-02T01:21:48.124Z", + "roi": null, + "last_updated": "2025-12-05T15:47:34.002Z" + }, + { + "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": 0.989552, + "market_cap": 1563780, + "market_cap_rank": 3227, + "fully_diluted_valuation": 1563780, + "total_volume": 1071.07, + "high_24h": 1.005, + "low_24h": 0.989532, + "price_change_24h": -0.00383661609283692, + "price_change_percentage_24h": -0.38621, + "market_cap_change_24h": -7410.216917043785, + "market_cap_change_percentage_24h": -0.47163, + "circulating_supply": 1580278.734984979, + "total_supply": 1580278.734984979, + "max_supply": null, + "ath": 1.019, + "ath_change_percentage": -2.85024, + "ath_date": "2025-11-13T22:36:03.009Z", + "atl": 0.989532, + "atl_change_percentage": 0.00285, + "atl_date": "2025-12-05T15:43:02.296Z", + "roi": null, + "last_updated": "2025-12-05T15:48:46.303Z" + }, + { + "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.35, + "market_cap": 1509897, + "market_cap_rank": 3268, + "fully_diluted_valuation": 1509897, + "total_volume": 238887, + "high_24h": 1.36, + "low_24h": 1.27, + "price_change_24h": 0.0083951, + "price_change_percentage_24h": 0.6271, + "market_cap_change_24h": 5920.33, + "market_cap_change_percentage_24h": 0.39364, + "circulating_supply": 1134516.156911173, + "total_supply": 1134516.156911173, + "max_supply": null, + "ath": 2.03, + "ath_change_percentage": -34.40724, + "ath_date": "2023-11-02T17:39:19.361Z", + "atl": 0.00000112, + "atl_change_percentage": 119008682.07163, + "atl_date": "2024-09-18T20:01:24.007Z", + "roi": null, + "last_updated": "2025-12-05T15:48:54.731Z" + }, + { + "id": "vusd", + "symbol": "vusd", + "name": "VUSD", + "image": "https://coin-images.coingecko.com/coins/images/67026/large/vusd.jpg?1751514327", + "current_price": 0.999716, + "market_cap": 1508122, + "market_cap_rank": 3272, + "fully_diluted_valuation": 1508122, + "total_volume": 77875, + "high_24h": 1.007, + "low_24h": 0.994637, + "price_change_24h": -0.005976808436237158, + "price_change_percentage_24h": -0.5943, + "market_cap_change_24h": -9019.342583746416, + "market_cap_change_percentage_24h": -0.5945, + "circulating_supply": 1508550.512334729, + "total_supply": 1508550.512334729, + "max_supply": null, + "ath": 1.044, + "ath_change_percentage": -4.20991, + "ath_date": "2025-09-13T12:20:19.722Z", + "atl": 0.956466, + "atl_change_percentage": 4.52188, + "atl_date": "2025-11-04T21:46:04.472Z", + "roi": null, + "last_updated": "2025-12-05T15:47:41.292Z" + }, + { + "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.997252, + "market_cap": 1406668, + "market_cap_rank": 3355, + "fully_diluted_valuation": 1406668, + "total_volume": 143.13, + "high_24h": 1.003, + "low_24h": 0.993285, + "price_change_24h": -0.002052264866114761, + "price_change_percentage_24h": -0.20537, + "market_cap_change_24h": -2551.825351566309, + "market_cap_change_percentage_24h": -0.18108, + "circulating_supply": 1405105.986623574, + "total_supply": 1405105.986623574, + "max_supply": null, + "ath": 1.08, + "ath_change_percentage": -7.26775, + "ath_date": "2025-10-10T21:40:32.247Z", + "atl": 0.874306, + "atl_change_percentage": 14.50358, + "atl_date": "2025-07-17T08:05:40.562Z", + "roi": null, + "last_updated": "2025-12-05T15:48:31.951Z" + }, + { + "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.999978, + "market_cap": 1400486, + "market_cap_rank": 3359, + "fully_diluted_valuation": 1400486, + "total_volume": 2465.31, + "high_24h": 1.001, + "low_24h": 0.999025, + "price_change_24h": 0.00033436, + "price_change_percentage_24h": 0.03345, + "market_cap_change_24h": 443.31, + "market_cap_change_percentage_24h": 0.03166, + "circulating_supply": 1400544.788912, + "total_supply": 1400544.788912, + "max_supply": null, + "ath": 1.005, + "ath_change_percentage": -0.45388, + "ath_date": "2025-10-22T23:30:56.579Z", + "atl": 0.995642, + "atl_change_percentage": 0.43845, + "atl_date": "2025-11-17T16:27:53.402Z", + "roi": null, + "last_updated": "2025-12-05T15:48:45.586Z" + }, + { + "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": 0.961352, + "market_cap": 1336546, + "market_cap_rank": 3418, + "fully_diluted_valuation": 1336546, + "total_volume": 3619.92, + "high_24h": 0.975837, + "low_24h": 0.932986, + "price_change_24h": -0.00195619165480565, + "price_change_percentage_24h": -0.20307, + "market_cap_change_24h": -17488.641054693842, + "market_cap_change_percentage_24h": -1.29159, + "circulating_supply": 1405609.521103, + "total_supply": 1405609.521103, + "max_supply": 5000000, + "ath": 1.16, + "ath_change_percentage": -18.04403, + "ath_date": "2024-02-10T20:39:59.155Z", + "atl": 0.000001, + "atl_change_percentage": 94879753.41675, + "atl_date": "2024-09-18T20:51:04.957Z", + "roi": null, + "last_updated": "2025-12-05T15:48:19.114Z" + }, + { + "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.003, + "market_cap": 1311170, + "market_cap_rank": 3436, + "fully_diluted_valuation": 1311170, + "total_volume": 6474.97, + "high_24h": 1.035, + "low_24h": 0.992833, + "price_change_24h": 0.00116832, + "price_change_percentage_24h": 0.11666, + "market_cap_change_24h": -151309.7378417293, + "market_cap_change_percentage_24h": -10.34611, + "circulating_supply": 1307736.679700403, + "total_supply": 1307736.679700403, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -49.83918, + "ath_date": "2025-06-21T18:36:43.818Z", + "atl": 0.971575, + "atl_change_percentage": 3.19609, + "atl_date": "2025-07-14T15:20:30.765Z", + "roi": null, + "last_updated": "2025-12-05T15:46:52.862Z" + }, + { + "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.3, + "market_cap": 1282996, + "market_cap_rank": 3462, + "fully_diluted_valuation": 1282996, + "total_volume": 13268.09, + "high_24h": 1.33, + "low_24h": 1.27, + "price_change_24h": -0.00885618653262532, + "price_change_percentage_24h": -0.67745, + "market_cap_change_24h": -8431.245988610666, + "market_cap_change_percentage_24h": -0.65286, + "circulating_supply": 983799.8, + "total_supply": 983799.8, + "max_supply": null, + "ath": 1.52, + "ath_change_percentage": -14.77497, + "ath_date": "2025-10-10T23:17:40.308Z", + "atl": 0.734321, + "atl_change_percentage": 76.82039, + "atl_date": "2025-02-03T02:13:53.905Z", + "roi": null, + "last_updated": "2025-12-05T15:47:30.141Z" + }, + { + "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.999196, + "market_cap": 1243313, + "market_cap_rank": 3501, + "fully_diluted_valuation": 1243313, + "total_volume": 18233.42, + "high_24h": 0.999347, + "low_24h": 0.99862, + "price_change_24h": 0.00041251, + "price_change_percentage_24h": 0.0413, + "market_cap_change_24h": 553.87, + "market_cap_change_percentage_24h": 0.04457, + "circulating_supply": 1244272.58478275, + "total_supply": 1244272.58478275, + "max_supply": null, + "ath": 1.12, + "ath_change_percentage": -11.0667, + "ath_date": "2025-10-13T16:50:37.159Z", + "atl": 0.907133, + "atl_change_percentage": 10.15564, + "atl_date": "2025-11-09T19:26:47.864Z", + "roi": null, + "last_updated": "2025-12-05T15:47:35.079Z" + }, + { + "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.00573291, + "market_cap": 1221844, + "market_cap_rank": 3519, + "fully_diluted_valuation": 1221844, + "total_volume": 22224, + "high_24h": 0.00583532, + "low_24h": 0.00562451, + "price_change_24h": -0.000087107378103389, + "price_change_percentage_24h": -1.49669, + "market_cap_change_24h": -20107.036519676214, + "market_cap_change_percentage_24h": -1.61899, + "circulating_supply": 212623613.256298, + "total_supply": 212623613.256298, + "max_supply": null, + "ath": 0.00736362, + "ath_change_percentage": -21.92816, + "ath_date": "2023-11-10T00:24:25.497Z", + "atl": 0.00134328, + "atl_change_percentage": 327.97581, + "atl_date": "2025-09-02T07:30:07.329Z", + "roi": null, + "last_updated": "2025-12-05T15:48:31.301Z" + }, + { + "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.997757, + "market_cap": 1133677, + "market_cap_rank": 3593, + "fully_diluted_valuation": 1133677, + "total_volume": 68461, + "high_24h": 1.006, + "low_24h": 0.989616, + "price_change_24h": 0.00205446, + "price_change_percentage_24h": 0.20633, + "market_cap_change_24h": -2779.0373206369113, + "market_cap_change_percentage_24h": -0.24454, + "circulating_supply": 1136228.36, + "total_supply": 1136228.36, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -50.18152, + "ath_date": "2022-12-01T08:47:39.621Z", + "atl": 0.833019, + "atl_change_percentage": 19.89505, + "atl_date": "2025-07-25T08:25:06.318Z", + "roi": null, + "last_updated": "2025-12-05T15:48:29.469Z" + }, + { + "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.00006001, + "market_cap": 1111974, + "market_cap_rank": 3619, + "fully_diluted_valuation": 1111974, + "total_volume": 13960.8, + "high_24h": 0.00006006, + "low_24h": 0.00005996, + "price_change_24h": -3.493608632e-9, + "price_change_percentage_24h": -0.00582, + "market_cap_change_24h": -326.7951398261357, + "market_cap_change_percentage_24h": -0.02938, + "circulating_supply": 18534124233.14, + "total_supply": 18534124233.14, + "max_supply": null, + "ath": 0.00009733, + "ath_change_percentage": -38.35595, + "ath_date": "2024-10-24T02:51:33.707Z", + "atl": 0.00005696, + "atl_change_percentage": 5.33785, + "atl_date": "2025-03-12T00:11:47.221Z", + "roi": null, + "last_updated": "2025-12-05T15:47:31.626Z" + }, + { + "id": "macropod", + "symbol": "audm", + "name": "Macropod", + "image": "https://coin-images.coingecko.com/coins/images/70943/large/AUDM-Logo.png?1764718671", + "current_price": 0.660692, + "market_cap": 1022672, + "market_cap_rank": 3724, + "fully_diluted_valuation": 1022672, + "total_volume": 276430, + "high_24h": 0.663142, + "low_24h": 0.657265, + "price_change_24h": -0.001018244425273207, + "price_change_percentage_24h": -0.15388, + "market_cap_change_24h": -138153.80739070137, + "market_cap_change_percentage_24h": -11.90134, + "circulating_supply": 1547881, + "total_supply": 1547881, + "max_supply": null, + "ath": 0.66683, + "ath_change_percentage": -0.92058, + "ath_date": "2025-12-04T01:18:31.036Z", + "atl": 0.652595, + "atl_change_percentage": 1.24074, + "atl_date": "2025-12-03T00:08:20.046Z", + "roi": null, + "last_updated": "2025-12-05T15:47:20.607Z" + }, + { + "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.11, + "market_cap": 992125, + "market_cap_rank": 3766, + "fully_diluted_valuation": 992125, + "total_volume": 263.4, + "high_24h": 1.11, + "low_24h": 1.11, + "price_change_24h": 0.00034205, + "price_change_percentage_24h": 0.03089, + "market_cap_change_24h": 2966.26, + "market_cap_change_percentage_24h": 0.29988, + "circulating_supply": 895679.5057550069, + "total_supply": 895679.5057550069, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -5.93322, + "ath_date": "2024-08-16T11:31:25.063Z", + "atl": 0.984413, + "atl_change_percentage": 12.53209, + "atl_date": "2024-05-23T16:12:16.066Z", + "roi": null, + "last_updated": "2025-12-05T15:48:44.654Z" + }, + { + "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.242472, + "market_cap": 924322, + "market_cap_rank": 3840, + "fully_diluted_valuation": 924322, + "total_volume": 5884.28, + "high_24h": 0.244871, + "low_24h": 0.240442, + "price_change_24h": -0.000385490876221029, + "price_change_percentage_24h": -0.15873, + "market_cap_change_24h": -1298.3446857919917, + "market_cap_change_percentage_24h": -0.14027, + "circulating_supply": 3810798.66, + "total_supply": 3810798.66, + "max_supply": null, + "ath": 0.270468, + "ath_change_percentage": -10.55408, + "ath_date": "2025-02-03T02:22:38.796Z", + "atl": 0.199544, + "atl_change_percentage": 21.23817, + "atl_date": "2024-07-05T05:00:35.677Z", + "roi": null, + "last_updated": "2025-12-05T15:48:39.450Z" + }, + { + "id": "osmosis-allusdt", + "symbol": "usdt", + "name": "Osmosis allUSDT", + "image": "https://coin-images.coingecko.com/coins/images/50160/large/allUSDT.png?1726126824", + "current_price": 0.999467, + "market_cap": 896404, + "market_cap_rank": 3880, + "fully_diluted_valuation": 896404, + "total_volume": 38458, + "high_24h": 1.007, + "low_24h": 0.992756, + "price_change_24h": 0.00010441, + "price_change_percentage_24h": 0.01045, + "market_cap_change_24h": 92.21, + "market_cap_change_percentage_24h": 0.01029, + "circulating_supply": 896883.140592, + "total_supply": 896883.140592, + "max_supply": null, + "ath": 1.096, + "ath_change_percentage": -8.84412, + "ath_date": "2025-02-03T02:21:56.087Z", + "atl": 0.668834, + "atl_change_percentage": 49.43411, + "atl_date": "2025-10-10T21:36:58.110Z", + "roi": null, + "last_updated": "2025-12-05T15:48:38.213Z" + }, + { + "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": 0.998295, + "market_cap": 866522, + "market_cap_rank": 3922, + "fully_diluted_valuation": 866522, + "total_volume": 61740, + "high_24h": 1.014, + "low_24h": 0.989043, + "price_change_24h": -0.000083484724689775, + "price_change_percentage_24h": -0.00836, + "market_cap_change_24h": -623.0722550193314, + "market_cap_change_percentage_24h": -0.07185, + "circulating_supply": 868553, + "total_supply": 868553, + "max_supply": null, + "ath": 1.25, + "ath_change_percentage": -20.03471, + "ath_date": "2025-10-10T23:14:31.518Z", + "atl": 0.592966, + "atl_change_percentage": 68.24929, + "atl_date": "2025-10-10T21:25:22.094Z", + "roi": null, + "last_updated": "2025-12-05T15:47:28.313Z" + }, + { + "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.093096, + "market_cap": 854934, + "market_cap_rank": 3935, + "fully_diluted_valuation": 854934, + "total_volume": 764.33, + "high_24h": 0.096266, + "low_24h": 0.092291, + "price_change_24h": -0.002136168724747881, + "price_change_percentage_24h": -2.24313, + "market_cap_change_24h": -21774.67071321234, + "market_cap_change_percentage_24h": -2.48368, + "circulating_supply": 9188859.514560591, + "total_supply": 9188859.514560591, + "max_supply": null, + "ath": 1.92, + "ath_change_percentage": -95.14044, + "ath_date": "2022-11-30T02:02:08.082Z", + "atl": 0.03520941, + "atl_change_percentage": 164.38089, + "atl_date": "2025-10-10T21:25:12.870Z", + "roi": null, + "last_updated": "2025-12-05T15:48:05.662Z" + }, + { + "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.99583, + "market_cap": 832932, + "market_cap_rank": 3968, + "fully_diluted_valuation": 832932, + "total_volume": 2157227, + "high_24h": 1.014, + "low_24h": 0.988406, + "price_change_24h": -0.003786694585032335, + "price_change_percentage_24h": -0.37881, + "market_cap_change_24h": -4471.328605744289, + "market_cap_change_percentage_24h": -0.53395, + "circulating_supply": 836560.774787, + "total_supply": 836560.774787, + "max_supply": null, + "ath": 1.086, + "ath_change_percentage": -8.29961, + "ath_date": "2024-08-15T08:55:28.608Z", + "atl": 0.181588, + "atl_change_percentage": 448.30924, + "atl_date": "2025-11-11T06:50:58.519Z", + "roi": null, + "last_updated": "2025-12-05T15:47:58.933Z" + }, + { + "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.00068881, + "market_cap": 725427, + "market_cap_rank": 4130, + "fully_diluted_valuation": 725427, + "total_volume": 1502.57, + "high_24h": 0.00068882, + "low_24h": 0.00068167, + "price_change_24h": 0.00000652, + "price_change_percentage_24h": 0.95576, + "market_cap_change_24h": 23897, + "market_cap_change_percentage_24h": 3.40648, + "circulating_supply": 1053200932.979999, + "total_supply": 1053200932.979999, + "max_supply": null, + "ath": 0.00070882, + "ath_change_percentage": -2.82719, + "ath_date": "2025-10-10T22:32:43.345Z", + "atl": 0.00064906, + "atl_change_percentage": 6.12096, + "atl_date": "2025-09-23T14:05:10.276Z", + "roi": null, + "last_updated": "2025-12-05T15:48:56.274Z" + }, + { + "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.968016, + "market_cap": 627230, + "market_cap_rank": 4302, + "fully_diluted_valuation": 627230, + "total_volume": 67.75, + "high_24h": 0.968016, + "low_24h": 0.968016, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": -23.448803071980365, + "market_cap_change_percentage_24h": -0.00374, + "circulating_supply": 647953.7333632889, + "total_supply": 647953.7333632889, + "max_supply": null, + "ath": 1.062, + "ath_change_percentage": -8.83533, + "ath_date": "2025-08-22T14:58:08.427Z", + "atl": 0.35345, + "atl_change_percentage": 173.87652, + "atl_date": "2025-10-10T21:27:01.743Z", + "roi": null, + "last_updated": "2025-12-04T16:32:05.917Z" + }, + { + "id": "eusd-new", + "symbol": "eusd", + "name": "eUSD", + "image": "https://coin-images.coingecko.com/coins/images/31603/large/eusd.png?1696530419", + "current_price": 1.033, + "market_cap": 623618, + "market_cap_rank": 4310, + "fully_diluted_valuation": 623618, + "total_volume": 14.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": 603603.7822038309, + "total_supply": 603603.7822038309, + "max_supply": null, + "ath": 1.89, + "ath_change_percentage": -45.46556, + "ath_date": "2023-10-17T01:08:42.748Z", + "atl": 0.738736, + "atl_change_percentage": 39.85486, + "atl_date": "2024-03-07T09:49:35.216Z", + "roi": null, + "last_updated": "2025-11-29T15:37:39.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": 1.003, + "market_cap": 611854, + "market_cap_rank": 4338, + "fully_diluted_valuation": 611854, + "total_volume": 313.68, + "high_24h": 1.004, + "low_24h": 0.989101, + "price_change_24h": 0.00124155, + "price_change_percentage_24h": 0.12389, + "market_cap_change_24h": 1975.5, + "market_cap_change_percentage_24h": 0.32392, + "circulating_supply": 610000, + "total_supply": 610000, + "max_supply": 610000, + "ath": 9.12, + "ath_change_percentage": -88.99426, + "ath_date": "2025-10-07T05:26:12.633Z", + "atl": 0.137781, + "atl_change_percentage": 628.23906, + "atl_date": "2025-10-07T02:33:40.951Z", + "roi": null, + "last_updated": "2025-12-05T15:48:06.189Z" + }, + { + "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.7221, + "market_cap": 600763, + "market_cap_rank": 4353, + "fully_diluted_valuation": 600763, + "total_volume": 606181, + "high_24h": 0.725362, + "low_24h": 0.71775, + "price_change_24h": -0.002613599762768204, + "price_change_percentage_24h": -0.36064, + "market_cap_change_24h": -1834.3763513324084, + "market_cap_change_percentage_24h": -0.30441, + "circulating_supply": 831966.0510675104, + "total_supply": 831966.0510675104, + "max_supply": null, + "ath": 1.48, + "ath_change_percentage": -51.23842, + "ath_date": "2022-09-13T12:28:03.928Z", + "atl": 0.481646, + "atl_change_percentage": 50.04956, + "atl_date": "2022-01-20T10:53:42.657Z", + "roi": null, + "last_updated": "2025-12-05T15:48:45.176Z" + }, + { + "id": "threshold-usd", + "symbol": "thusd", + "name": "Threshold USD", + "image": "https://coin-images.coingecko.com/coins/images/32274/large/thusd.png?1697180081", + "current_price": 1.001, + "market_cap": 593367, + "market_cap_rank": 4377, + "fully_diluted_valuation": 200800273, + "total_volume": 27.09, + "high_24h": 1.002, + "low_24h": 1.001, + "price_change_24h": -0.000531712381773852, + "price_change_percentage_24h": -0.05309, + "market_cap_change_24h": -114.6323990348028, + "market_cap_change_percentage_24h": -0.01932, + "circulating_supply": 592826.2679422438, + "total_supply": 200617220.6314642, + "max_supply": null, + "ath": 1.022, + "ath_change_percentage": -2.01721, + "ath_date": "2024-11-12T03:02:34.212Z", + "atl": 0.904712, + "atl_change_percentage": 10.63331, + "atl_date": "2025-04-09T12:24:41.448Z", + "roi": null, + "last_updated": "2025-12-05T05:30:32.037Z" + }, + { + "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": 1.001, + "market_cap": 591686, + "market_cap_rank": 4379, + "fully_diluted_valuation": 1800975, + "total_volume": 2064205, + "high_24h": 1.001, + "low_24h": 1, + "price_change_24h": -0.000063102120788638, + "price_change_percentage_24h": -0.00631, + "market_cap_change_24h": -42.10211148520466, + "market_cap_change_percentage_24h": -0.00712, + "circulating_supply": 591365.55111719, + "total_supply": 1800000, + "max_supply": null, + "ath": 1.015, + "ath_change_percentage": -1.44979, + "ath_date": "2025-04-02T20:16:04.402Z", + "atl": 0.943098, + "atl_change_percentage": 6.09098, + "atl_date": "2025-03-03T22:01:17.394Z", + "roi": null, + "last_updated": "2025-12-05T15:48:35.442Z" + }, + { + "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.0288, + "market_cap": 590500, + "market_cap_rank": 4382, + "fully_diluted_valuation": null, + "total_volume": 40.57, + "high_24h": 0.0288, + "low_24h": 0.0288, + "price_change_24h": 0, + "price_change_percentage_24h": 0, + "market_cap_change_24h": 0, + "market_cap_change_percentage_24h": 0, + "circulating_supply": 20503468.9, + "total_supply": null, + "max_supply": null, + "ath": 0.880888, + "ath_change_percentage": -96.73057, + "ath_date": "2025-11-13T18:00:43.462Z", + "atl": 0.0288, + "atl_change_percentage": 0, + "atl_date": "2025-12-05T08:36:41.096Z", + "roi": null, + "last_updated": "2025-12-05T15:48:36.195Z" + }, + { + "id": "seur", + "symbol": "seur", + "name": "sEUR", + "image": "https://coin-images.coingecko.com/coins/images/13637/large/sEUR.png?1696513385", + "current_price": 0.55658, + "market_cap": 553800, + "market_cap_rank": 4472, + "fully_diluted_valuation": 553800, + "total_volume": 780.07, + "high_24h": 0.565097, + "low_24h": 0.555949, + "price_change_24h": -0.00192293900767071, + "price_change_percentage_24h": -0.3443, + "market_cap_change_24h": -1913.3317479387624, + "market_cap_change_percentage_24h": -0.3443, + "circulating_supply": 995003.8666365609, + "total_supply": 995003.8666365609, + "max_supply": 995003.8666365609, + "ath": 1.86, + "ath_change_percentage": -70.13788, + "ath_date": "2023-10-04T14:11:40.327Z", + "atl": 0.106881, + "atl_change_percentage": 420.42343, + "atl_date": "2024-04-18T21:52:43.568Z", + "roi": null, + "last_updated": "2025-12-05T15:48:35.580Z" + }, + { + "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.33, + "market_cap": 517067, + "market_cap_rank": 4553, + "fully_diluted_valuation": 517067, + "total_volume": 74820, + "high_24h": 1.33, + "low_24h": 1.32, + "price_change_24h": 0.01083656, + "price_change_percentage_24h": 0.82061, + "market_cap_change_24h": 4415.77, + "market_cap_change_percentage_24h": 0.86136, + "circulating_supply": 388209.601369733, + "total_supply": 388209.601369733, + "max_supply": null, + "ath": 1.63, + "ath_change_percentage": -18.18204, + "ath_date": "2025-07-10T13:15:50.787Z", + "atl": 1.3, + "atl_change_percentage": 2.07481, + "atl_date": "2025-11-21T08:09:37.558Z", + "roi": null, + "last_updated": "2025-12-05T15:48:45.134Z" + }, + { + "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": 483004, + "market_cap_rank": 4647, + "fully_diluted_valuation": 483004, + "total_volume": 53847, + "high_24h": 1.002, + "low_24h": 1.001, + "price_change_24h": 0.00010471, + "price_change_percentage_24h": 0.01046, + "market_cap_change_24h": 78.24, + "market_cap_change_percentage_24h": 0.0162, + "circulating_supply": 482321.5686445187, + "total_supply": 482321.5686445187, + "max_supply": null, + "ath": 1.004, + "ath_change_percentage": -0.21461, + "ath_date": "2025-11-01T23:35:27.431Z", + "atl": 0.999735, + "atl_change_percentage": 0.168, + "atl_date": "2025-11-20T09:35:10.363Z", + "roi": null, + "last_updated": "2025-12-05T15:47:30.866Z" + }, + { + "id": "bread-3", + "symbol": "bread", + "name": "Bread", + "image": "https://coin-images.coingecko.com/coins/images/55143/large/Transparent_pg_-_201.png?1759485140", + "current_price": 1, + "market_cap": 458132, + "market_cap_rank": 4716, + "fully_diluted_valuation": 458132, + "total_volume": 55.9, + "high_24h": 0.999905, + "low_24h": 0.999005, + "price_change_24h": 0.0009589, + "price_change_percentage_24h": 0.09598, + "market_cap_change_24h": 413.32, + "market_cap_change_percentage_24h": 0.0903, + "circulating_supply": 458175.6906186219, + "total_supply": 458175.6906186219, + "max_supply": null, + "ath": 1.027, + "ath_change_percentage": -2.61714, + "ath_date": "2025-06-11T22:03:33.140Z", + "atl": 0.98195, + "atl_change_percentage": 1.8427, + "atl_date": "2025-08-18T21:47:41.588Z", + "roi": null, + "last_updated": "2025-12-05T15:46:56.224Z" + }, + { + "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.999789, + "market_cap": 450912, + "market_cap_rank": 4732, + "fully_diluted_valuation": 450912, + "total_volume": 8.61, + "high_24h": 0.999881, + "low_24h": 0.997467, + "price_change_24h": 0.00010052, + "price_change_percentage_24h": 0.01006, + "market_cap_change_24h": -1986.583954310452, + "market_cap_change_percentage_24h": -0.43864, + "circulating_supply": 451007.8220797989, + "total_supply": 451007.8220797989, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -4.97283, + "ath_date": "2025-04-24T01:31:11.951Z", + "atl": 0.756197, + "atl_change_percentage": 32.22461, + "atl_date": "2025-07-21T15:45:01.630Z", + "roi": null, + "last_updated": "2025-12-05T15:48:58.559Z" + }, + { + "id": "krwt", + "symbol": "krwq", + "name": "KRWQ", + "image": "https://coin-images.coingecko.com/coins/images/69864/large/KRWT_Coin_%28200x200px%29.png?1759981566", + "current_price": 0.00069474, + "market_cap": 370446, + "market_cap_rank": 4990, + "fully_diluted_valuation": 370446, + "total_volume": 50469, + "high_24h": 0.0006955, + "low_24h": 0.00069459, + "price_change_24h": -6.23310529608e-7, + "price_change_percentage_24h": -0.08964, + "market_cap_change_24h": -295.8833105523954, + "market_cap_change_percentage_24h": -0.07981, + "circulating_supply": 533164674.0465869, + "total_supply": 533164674.0465869, + "max_supply": null, + "ath": 0.00071028, + "ath_change_percentage": -2.17899, + "ath_date": "2025-10-09T06:37:30.355Z", + "atl": 0.00069317, + "atl_change_percentage": 0.23594, + "atl_date": "2025-11-24T09:30:42.050Z", + "roi": null, + "last_updated": "2025-12-05T15:48:45.279Z" + }, + { + "id": "defi-dollar", + "symbol": "usdfi", + "name": "DeFi Dollar", + "image": "https://coin-images.coingecko.com/coins/images/67875/large/USDFI.png?1754112926", + "current_price": 1.003, + "market_cap": 355387, + "market_cap_rank": 5047, + "fully_diluted_valuation": 355387, + "total_volume": 48.81, + "high_24h": 1.004, + "low_24h": 1.002, + "price_change_24h": 0.00043518, + "price_change_percentage_24h": 0.04339, + "market_cap_change_24h": 187.72, + "market_cap_change_percentage_24h": 0.05285, + "circulating_supply": 354191.5697604809, + "total_supply": 354191.5697604809, + "max_supply": null, + "ath": 1.006, + "ath_change_percentage": -0.31003, + "ath_date": "2025-10-02T13:39:01.386Z", + "atl": 0.982826, + "atl_change_percentage": 2.09066, + "atl_date": "2025-08-17T18:50:20.683Z", + "roi": null, + "last_updated": "2025-12-04T23:08:17.448Z" + }, + { + "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.996865, + "market_cap": 344034, + "market_cap_rank": 5096, + "fully_diluted_valuation": 344034, + "total_volume": 13968.39, + "high_24h": 1.008, + "low_24h": 0.992197, + "price_change_24h": -0.001608222572172191, + "price_change_percentage_24h": -0.16107, + "market_cap_change_24h": -552.8668037526077, + "market_cap_change_percentage_24h": -0.16044, + "circulating_supply": 345113.523064686, + "total_supply": 345113.523064686, + "max_supply": null, + "ath": 1.091, + "ath_change_percentage": -8.58888, + "ath_date": "2025-03-08T04:31:15.478Z", + "atl": 0.944728, + "atl_change_percentage": 5.51938, + "atl_date": "2025-02-03T02:06:50.414Z", + "roi": null, + "last_updated": "2025-12-05T15:47:30.906Z" + }, + { + "id": "bob", + "symbol": "bob", + "name": "BOB", + "image": "https://coin-images.coingecko.com/coins/images/27266/large/Bob-logo.png?1696526318", + "current_price": 0.999626, + "market_cap": 341426, + "market_cap_rank": 5105, + "fully_diluted_valuation": 341426, + "total_volume": 10.86, + "high_24h": 1.003, + "low_24h": 0.991612, + "price_change_24h": -0.00025394422423386, + "price_change_percentage_24h": -0.0254, + "market_cap_change_24h": -40.35537050268613, + "market_cap_change_percentage_24h": -0.01182, + "circulating_supply": 341507.1906610738, + "total_supply": 341507.1906610738, + "max_supply": null, + "ath": 1.079, + "ath_change_percentage": -7.3608, + "ath_date": "2024-09-03T17:25:15.891Z", + "atl": 0.784062, + "atl_change_percentage": 27.49892, + "atl_date": "2025-10-10T21:35:26.036Z", + "roi": null, + "last_updated": "2025-12-05T15:47:23.179Z" + }, + { + "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.025, + "market_cap": 308636, + "market_cap_rank": 5273, + "fully_diluted_valuation": 9232717, + "total_volume": 492.22, + "high_24h": 1.027, + "low_24h": 1.016, + "price_change_24h": 0.00590313, + "price_change_percentage_24h": 0.57901, + "market_cap_change_24h": 1911.55, + "market_cap_change_percentage_24h": 0.62321, + "circulating_supply": 300855.108937, + "total_supply": 8999954.586342, + "max_supply": null, + "ath": 18.92, + "ath_change_percentage": -94.57706, + "ath_date": "2025-09-17T16:29:23.281Z", + "atl": 0.052523, + "atl_change_percentage": 1853.17439, + "atl_date": "2022-10-17T09:38:06.199Z", + "roi": null, + "last_updated": "2025-12-05T15:47:11.004Z" + }, + { + "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": 0.992712, + "market_cap": 292209, + "market_cap_rank": 5355, + "fully_diluted_valuation": 292209, + "total_volume": 100020, + "high_24h": 1.008, + "low_24h": 0.984915, + "price_change_24h": -0.000639153821590743, + "price_change_percentage_24h": -0.06434, + "market_cap_change_24h": -3719.901987589372, + "market_cap_change_percentage_24h": -1.25703, + "circulating_supply": 294951.1920800264, + "total_supply": 294951.1920800264, + "max_supply": null, + "ath": 1.34, + "ath_change_percentage": -26.21309, + "ath_date": "2025-11-07T18:18:02.109Z", + "atl": 0.268025, + "atl_change_percentage": 269.72105, + "atl_date": "2025-10-10T21:25:29.738Z", + "roi": null, + "last_updated": "2025-12-05T15:48:42.471Z" + }, + { + "id": "tor", + "symbol": "tor", + "name": "TOR", + "image": "https://coin-images.coingecko.com/coins/images/23609/large/tor.png?1696522816", + "current_price": 0.01622567, + "market_cap": 276980, + "market_cap_rank": 5433, + "fully_diluted_valuation": 276980, + "total_volume": 1.11, + "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": 17070481.49032999, + "total_supply": 17070481.49032999, + "max_supply": null, + "ath": 20.14, + "ath_change_percentage": -99.91945, + "ath_date": "2024-02-27T10:24:31.893Z", + "atl": 0.00087567, + "atl_change_percentage": 1752.94692, + "atl_date": "2025-11-15T14:22:28.102Z", + "roi": null, + "last_updated": "2025-12-04T08:08:18.529Z" + }, + { + "id": "ebusd-stablecoin", + "symbol": "ebusd", + "name": "ebUSD Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/66485/large/0x09fd37d9aa613789c517e76df1c53aece2b60df4.png?1749505950", + "current_price": 0.99206, + "market_cap": 266402, + "market_cap_rank": 5488, + "fully_diluted_valuation": 266402, + "total_volume": 1796.43, + "high_24h": 0.996876, + "low_24h": 0.991255, + "price_change_24h": -0.002243325937881679, + "price_change_percentage_24h": -0.22562, + "market_cap_change_24h": 307.13, + "market_cap_change_percentage_24h": 0.11542, + "circulating_supply": 267593.0802687683, + "total_supply": 267593.0802687683, + "max_supply": null, + "ath": 1.013, + "ath_change_percentage": -1.68151, + "ath_date": "2025-09-17T19:34:17.837Z", + "atl": 0.954662, + "atl_change_percentage": 4.28284, + "atl_date": "2025-08-02T01:43:10.648Z", + "roi": null, + "last_updated": "2025-12-05T15:48:32.227Z" + }, + { + "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.999575, + "market_cap": 264420, + "market_cap_rank": 5501, + "fully_diluted_valuation": 264420, + "total_volume": 1842.76, + "high_24h": 1.008, + "low_24h": 0.994775, + "price_change_24h": -0.003607780804012806, + "price_change_percentage_24h": -0.35963, + "market_cap_change_24h": 97.35, + "market_cap_change_percentage_24h": 0.03683, + "circulating_supply": 264519.3559127501, + "total_supply": 264519.3559127501, + "max_supply": null, + "ath": 1.49, + "ath_change_percentage": -32.78745, + "ath_date": "2025-04-10T22:16:23.596Z", + "atl": 0.875577, + "atl_change_percentage": 14.24442, + "atl_date": "2025-07-17T08:07:33.528Z", + "roi": null, + "last_updated": "2025-12-05T15:48:31.395Z" + }, + { + "id": "grai", + "symbol": "grai", + "name": "Grai", + "image": "https://coin-images.coingecko.com/coins/images/30427/large/GRAI_Token.png?1696529315", + "current_price": 0.991374, + "market_cap": 257132, + "market_cap_rank": 5537, + "fully_diluted_valuation": 257132, + "total_volume": 1129.29, + "high_24h": 0.993845, + "low_24h": 0.982247, + "price_change_24h": 0.00016629, + "price_change_percentage_24h": 0.01678, + "market_cap_change_24h": 173.25, + "market_cap_change_percentage_24h": 0.06742, + "circulating_supply": 259369.0815280116, + "total_supply": 259369.0815280116, + "max_supply": null, + "ath": 1.74, + "ath_change_percentage": -43.07961, + "ath_date": "2023-07-27T06:19:34.197Z", + "atl": 0.680901, + "atl_change_percentage": 45.72471, + "atl_date": "2025-04-09T01:32:01.471Z", + "roi": null, + "last_updated": "2025-12-05T15:45:09.828Z" + }, + { + "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.01966638, + "market_cap": 235997, + "market_cap_rank": 5664, + "fully_diluted_valuation": 235997, + "total_volume": 27.13, + "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": 12000000, + "total_supply": 12000000, + "max_supply": null, + "ath": 2, + "ath_change_percentage": -99.01672, + "ath_date": "2025-10-10T21:57:31.732Z", + "atl": 0.00969355, + "atl_change_percentage": 102.88105, + "atl_date": "2025-11-17T15:35:01.828Z", + "roi": null, + "last_updated": "2025-12-04T04:23:47.241Z" + }, + { + "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": 0.998469, + "market_cap": 231479, + "market_cap_rank": 5697, + "fully_diluted_valuation": 231479, + "total_volume": 1042.9, + "high_24h": 1.036, + "low_24h": 0.994475, + "price_change_24h": -0.0376776492693337, + "price_change_percentage_24h": -3.63632, + "market_cap_change_24h": -8734.966441571101, + "market_cap_change_percentage_24h": -3.63632, + "circulating_supply": 231834.1672308294, + "total_supply": 231834.1672308294, + "max_supply": null, + "ath": 1.45, + "ath_change_percentage": -31.34654, + "ath_date": "2025-10-10T21:53:11.182Z", + "atl": 0.814914, + "atl_change_percentage": 22.52448, + "atl_date": "2025-07-01T23:35:15.644Z", + "roi": null, + "last_updated": "2025-12-05T15:44:14.504Z" + }, + { + "id": "auro-usda", + "symbol": "usda", + "name": "AURO USDA", + "image": "https://coin-images.coingecko.com/coins/images/67408/large/usda.jpeg?1752681482", + "current_price": 0.997806, + "market_cap": 231384, + "market_cap_rank": 5696, + "fully_diluted_valuation": 10100668, + "total_volume": 21183, + "high_24h": 1.006, + "low_24h": 0.961394, + "price_change_24h": 0.00142585, + "price_change_percentage_24h": 0.1431, + "market_cap_change_24h": 493.39, + "market_cap_change_percentage_24h": 0.21369, + "circulating_supply": 231518.92593428, + "total_supply": 10106574.94593428, + "max_supply": null, + "ath": 1.033, + "ath_change_percentage": -3.3911, + "ath_date": "2025-11-18T15:36:47.803Z", + "atl": 0.953424, + "atl_change_percentage": 4.65501, + "atl_date": "2025-10-09T16:26:37.632Z", + "roi": null, + "last_updated": "2025-12-05T15:47:44.023Z" + }, + { + "id": "litusd", + "symbol": "litusd", + "name": "litUSD", + "image": "https://coin-images.coingecko.com/coins/images/70793/large/litUSD_Mark.png?1763799523", + "current_price": 0.999035, + "market_cap": 196059, + "market_cap_rank": 5918, + "fully_diluted_valuation": 196059, + "total_volume": 860.81, + "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": 196248.09, + "total_supply": 196248.09, + "max_supply": null, + "ath": 0.999591, + "ath_change_percentage": -0.05557, + "ath_date": "2025-12-03T13:15:38.188Z", + "atl": 0.998295, + "atl_change_percentage": 0.07417, + "atl_date": "2025-11-27T13:56:44.275Z", + "roi": null, + "last_updated": "2025-12-03T16:02:52.369Z" + }, + { + "id": "argentine-peso", + "symbol": "wars", + "name": "Argentine Peso", + "image": "https://coin-images.coingecko.com/coins/images/70846/large/world_logos_wars_logo_3.png?1764176749", + "current_price": 0.00066927, + "market_cap": 194756, + "market_cap_rank": 5928, + "fully_diluted_valuation": 194756, + "total_volume": 230.07, + "high_24h": 0.00067235, + "low_24h": 0.00066639, + "price_change_24h": 0.00000287, + "price_change_percentage_24h": 0.43092, + "market_cap_change_24h": 835.64, + "market_cap_change_percentage_24h": 0.43092, + "circulating_supply": 291000000, + "total_supply": 291000000, + "max_supply": null, + "ath": 0.00068139, + "ath_change_percentage": -1.77861, + "ath_date": "2025-12-01T17:13:59.049Z", + "atl": 0.00066527, + "atl_change_percentage": 0.60141, + "atl_date": "2025-12-04T12:46:51.045Z", + "roi": null, + "last_updated": "2025-12-05T15:46:54.068Z" + }, + { + "id": "usd-wink", + "symbol": "usdw", + "name": "USD WINK", + "image": "https://coin-images.coingecko.com/coins/images/53736/large/USDW200.png?1737147609", + "current_price": 0.674488, + "market_cap": 190009, + "market_cap_rank": 5975, + "fully_diluted_valuation": 596429, + "total_volume": 136.11, + "high_24h": 0.687266, + "low_24h": 0.654647, + "price_change_24h": -0.012744506944541434, + "price_change_percentage_24h": -1.85447, + "market_cap_change_24h": -3592.603498859273, + "market_cap_change_percentage_24h": -1.85567, + "circulating_supply": 281708.5584556839, + "total_supply": 884269.4863923161, + "max_supply": null, + "ath": 1.066, + "ath_change_percentage": -36.7006, + "ath_date": "2025-03-01T03:47:00.807Z", + "atl": 0.392838, + "atl_change_percentage": 71.69621, + "atl_date": "2025-05-13T17:49:50.368Z", + "roi": null, + "last_updated": "2025-12-05T15:33:19.125Z" + }, + { + "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": 186268, + "market_cap_rank": 6001, + "fully_diluted_valuation": 186268, + "total_volume": 7757.4, + "high_24h": 1.01, + "low_24h": 0.999076, + "price_change_24h": -0.00608507301419392, + "price_change_percentage_24h": -0.60454, + "market_cap_change_24h": -1339.6387073889491, + "market_cap_change_percentage_24h": -0.71406, + "circulating_supply": 185992.67578125, + "total_supply": 185992.67578125, + "max_supply": null, + "ath": 1.038, + "ath_change_percentage": -3.62703, + "ath_date": "2025-11-28T13:30:30.679Z", + "atl": 0.979874, + "atl_change_percentage": 2.10211, + "atl_date": "2025-11-04T20:20:16.172Z", + "roi": null, + "last_updated": "2025-12-05T15:48:31.257Z" + }, + { + "id": "hyperstable", + "symbol": "ush", + "name": "Hyperstable USD", + "image": "https://coin-images.coingecko.com/coins/images/55951/large/ushlogo.png?1747851688", + "current_price": 1.008, + "market_cap": 158588, + "market_cap_rank": 6251, + "fully_diluted_valuation": 158588, + "total_volume": 15473.77, + "high_24h": 1.02, + "low_24h": 0.997365, + "price_change_24h": -0.003270491078837701, + "price_change_percentage_24h": -0.32329, + "market_cap_change_24h": -44.72022775019286, + "market_cap_change_percentage_24h": -0.02819, + "circulating_supply": 157023.6410380586, + "total_supply": 157023.6410380586, + "max_supply": null, + "ath": 1.053, + "ath_change_percentage": -4.19599, + "ath_date": "2025-08-22T14:20:37.419Z", + "atl": 0.700729, + "atl_change_percentage": 43.90339, + "atl_date": "2025-10-10T21:25:41.713Z", + "roi": null, + "last_updated": "2025-12-05T15:47:37.763Z" + }, + { + "id": "puso", + "symbol": "puso", + "name": "PUSO", + "image": "https://coin-images.coingecko.com/coins/images/50608/large/PUSO_transparent.png?1728473971", + "current_price": 0.01692872, + "market_cap": 153794, + "market_cap_rank": 6316, + "fully_diluted_valuation": 153794, + "total_volume": 16181.49, + "high_24h": 0.01693197, + "low_24h": 0.01688693, + "price_change_24h": -2.91898970137e-7, + "price_change_percentage_24h": -0.00172, + "market_cap_change_24h": -6483.900216742099, + "market_cap_change_percentage_24h": -4.04542, + "circulating_supply": 9084654.336905822, + "total_supply": 9084654.336905822, + "max_supply": null, + "ath": 0.01932156, + "ath_change_percentage": -12.38299, + "ath_date": "2025-08-25T20:39:19.021Z", + "atl": 0.00810846, + "atl_change_percentage": 108.78157, + "atl_date": "2025-10-10T21:25:10.847Z", + "roi": null, + "last_updated": "2025-12-05T15:48:26.127Z" + }, + { + "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.933103, + "market_cap": 153249, + "market_cap_rank": 6321, + "fully_diluted_valuation": 153249, + "total_volume": 21527, + "high_24h": 0.99768, + "low_24h": 0.856694, + "price_change_24h": -0.06417847835176238, + "price_change_percentage_24h": -6.43534, + "market_cap_change_24h": -16439.282897693163, + "market_cap_change_percentage_24h": -9.68794, + "circulating_supply": 164236.1245579182, + "total_supply": 164236.1245579182, + "max_supply": null, + "ath": 1.14, + "ath_change_percentage": -18.01411, + "ath_date": "2024-02-28T10:13:18.255Z", + "atl": 0.837272, + "atl_change_percentage": 11.44516, + "atl_date": "2024-01-03T12:12:48.845Z", + "roi": null, + "last_updated": "2025-12-05T15:48:16.564Z" + }, + { + "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.997952, + "market_cap": 148354, + "market_cap_rank": 6365, + "fully_diluted_valuation": 148354, + "total_volume": 199.59, + "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": 148658.6496971261, + "total_supply": 148658.6496971261, + "max_supply": null, + "ath": 1.007, + "ath_change_percentage": -0.88802, + "ath_date": "2025-04-29T14:05:07.732Z", + "atl": 0.989972, + "atl_change_percentage": 0.80602, + "atl_date": "2025-11-04T11:17:15.247Z", + "roi": null, + "last_updated": "2025-12-02T09:23:36.435Z" + }, + { + "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.999382, + "market_cap": 143150, + "market_cap_rank": 6421, + "fully_diluted_valuation": 143150, + "total_volume": 6027.65, + "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": 143238.9821947735, + "total_supply": 143238.9821947735, + "max_supply": null, + "ath": 1.018, + "ath_change_percentage": -1.85311, + "ath_date": "2025-11-02T05:37:05.758Z", + "atl": 0.807317, + "atl_change_percentage": 23.79063, + "atl_date": "2025-11-19T12:13:58.305Z", + "roi": null, + "last_updated": "2025-12-04T15:23:09.149Z" + }, + { + "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.00632749, + "market_cap": 138423, + "market_cap_rank": 6471, + "fully_diluted_valuation": 138423, + "total_volume": 73933, + "high_24h": 0.00637022, + "low_24h": 0.00624575, + "price_change_24h": 0.00001479, + "price_change_percentage_24h": 0.23428, + "market_cap_change_24h": -32105.89134455929, + "market_cap_change_percentage_24h": -18.82727, + "circulating_supply": 21945948.278999, + "total_supply": 21945948.278999, + "max_supply": null, + "ath": 0.00682267, + "ath_change_percentage": -7.55169, + "ath_date": "2025-08-29T12:34:20.634Z", + "atl": 0.00620684, + "atl_change_percentage": 1.62078, + "atl_date": "2025-11-21T07:36:46.447Z", + "roi": null, + "last_updated": "2025-12-05T15:48:28.033Z" + }, + { + "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.00005951, + "market_cap": 125782, + "market_cap_rank": 6630, + "fully_diluted_valuation": 4110867, + "total_volume": 6.97, + "high_24h": 0.00005951, + "low_24h": 0.0000595, + "price_change_24h": 2.843e-9, + "price_change_percentage_24h": 0.00478, + "market_cap_change_24h": 6.01, + "market_cap_change_percentage_24h": 0.00478, + "circulating_supply": 2113675181.787745, + "total_supply": 69080004683.32, + "max_supply": 113902104683, + "ath": 0.00129983, + "ath_change_percentage": -95.42181, + "ath_date": "2023-09-28T16:21:36.319Z", + "atl": 0.00000999, + "atl_change_percentage": 495.66296, + "atl_date": "2023-09-27T17:00:49.578Z", + "roi": null, + "last_updated": "2025-12-04T19:12:43.139Z" + }, + { + "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.073, + "market_cap": 116356, + "market_cap_rank": 6743, + "fully_diluted_valuation": 116356, + "total_volume": 14.6, + "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": 108454.615563374, + "total_supply": 108454.615563374, + "max_supply": null, + "ath": 1.42, + "ath_change_percentage": -24.40966, + "ath_date": "2025-04-16T08:59:07.258Z", + "atl": 0.02848531, + "atl_change_percentage": 3666.34739, + "atl_date": "2025-11-13T18:48:42.869Z", + "roi": null, + "last_updated": "2025-12-02T18:08:42.719Z" + }, + { + "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.00122253, + "market_cap": 112671, + "market_cap_rank": 6785, + "fully_diluted_valuation": 112671, + "total_volume": 5.92, + "high_24h": 0.00122253, + "low_24h": 0.00106551, + "price_change_24h": 0.00010745, + "price_change_percentage_24h": 9.63577, + "market_cap_change_24h": 9899.07, + "market_cap_change_percentage_24h": 9.63205, + "circulating_supply": 92162304.55046053, + "total_supply": 92162304.55046053, + "max_supply": null, + "ath": 1.04, + "ath_change_percentage": -99.88248, + "ath_date": "2025-01-20T07:11:00.260Z", + "atl": 0.00092282, + "atl_change_percentage": 32.47762, + "atl_date": "2025-12-04T02:53:00.477Z", + "roi": null, + "last_updated": "2025-12-05T00:32:14.436Z" + }, + { + "id": "ccop", + "symbol": "ccop", + "name": "cCOP", + "image": "https://coin-images.coingecko.com/coins/images/53448/large/cCOP-Transparent.png?1736399829", + "current_price": 0.00026285, + "market_cap": 104322, + "market_cap_rank": 6895, + "fully_diluted_valuation": 104322, + "total_volume": 38115, + "high_24h": 0.00026641, + "low_24h": 0.00026283, + "price_change_24h": -0.000003499684981385, + "price_change_percentage_24h": -1.31396, + "market_cap_change_24h": 12712.31, + "market_cap_change_percentage_24h": 13.87657, + "circulating_supply": 396886249.1916119, + "total_supply": 396886249.1916119, + "max_supply": null, + "ath": 0.00049869, + "ath_change_percentage": -47.29157, + "ath_date": "2025-08-13T02:45:18.236Z", + "atl": 0.00012509, + "atl_change_percentage": 110.12246, + "atl_date": "2025-10-10T21:28:02.372Z", + "roi": null, + "last_updated": "2025-12-05T15:48:26.108Z" + }, + { + "id": "ynusd-max", + "symbol": "ynusdx", + "name": "ynUSD Max", + "image": "https://coin-images.coingecko.com/coins/images/66745/large/ynUSDx.png?1750359980", + "current_price": 1.038, + "market_cap": 99691, + "market_cap_rank": 6975, + "fully_diluted_valuation": 99691, + "total_volume": 22.73, + "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": 95996.83135854232, + "total_supply": 95996.83135854232, + "max_supply": null, + "ath": 1.052, + "ath_change_percentage": -1.30376, + "ath_date": "2025-11-20T22:20:25.114Z", + "atl": 0.997125, + "atl_change_percentage": 4.14725, + "atl_date": "2025-08-16T09:57:08.941Z", + "roi": null, + "last_updated": "2025-12-03T15:37:38.629Z" + }, + { + "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": 0.986566, + "market_cap": 96146, + "market_cap_rank": 7034, + "fully_diluted_valuation": 96146, + "total_volume": 5302.61, + "high_24h": 1.12, + "low_24h": 0.932847, + "price_change_24h": 0.00420593, + "price_change_percentage_24h": 0.42815, + "market_cap_change_24h": 405.97, + "market_cap_change_percentage_24h": 0.42404, + "circulating_supply": 97460.09762394779, + "total_supply": 97460.09762394779, + "max_supply": null, + "ath": 1.61, + "ath_change_percentage": -38.84438, + "ath_date": "2024-11-07T22:09:25.676Z", + "atl": 0.70707, + "atl_change_percentage": 39.53125, + "atl_date": "2023-12-11T19:50:39.760Z", + "roi": null, + "last_updated": "2025-12-05T15:48:54.786Z" + }, + { + "id": "fx-rusd", + "symbol": "rusd", + "name": "f(x) rUSD", + "image": "https://coin-images.coingecko.com/coins/images/36338/large/rusd.png?1711105384", + "current_price": 1, + "market_cap": 94214, + "market_cap_rank": 7070, + "fully_diluted_valuation": 94214, + "total_volume": 237.62, + "high_24h": 1.001, + "low_24h": 1, + "price_change_24h": -0.00028772327586335, + "price_change_percentage_24h": -0.02876, + "market_cap_change_24h": -27.100396288209595, + "market_cap_change_percentage_24h": -0.02876, + "circulating_supply": 94189.09960243828, + "total_supply": 94189.09960243828, + "max_supply": null, + "ath": 1.31, + "ath_change_percentage": -23.86746, + "ath_date": "2025-05-16T17:47:10.544Z", + "atl": 0.911087, + "atl_change_percentage": 9.7879, + "atl_date": "2024-09-10T02:40:38.752Z", + "roi": null, + "last_updated": "2025-12-04T18:32:20.525Z" + }, + { + "id": "basis-cash", + "symbol": "bac", + "name": "Basis Cash", + "image": "https://coin-images.coingecko.com/coins/images/13246/large/BAC.png?1696513021", + "current_price": 0.00168124, + "market_cap": 91754, + "market_cap_rank": 7119, + "fully_diluted_valuation": 91754, + "total_volume": 12517.55, + "high_24h": 0.00173978, + "low_24h": 0.00166722, + "price_change_24h": -0.000032839342973367, + "price_change_percentage_24h": -1.91586, + "market_cap_change_24h": -1765.4308803893655, + "market_cap_change_percentage_24h": -1.88777, + "circulating_supply": 54575249.82699095, + "total_supply": 54575249.82699095, + "max_supply": 54575249.82699095, + "ath": 1010.99, + "ath_change_percentage": -99.99983, + "ath_date": "2020-11-30T10:46:21.320Z", + "atl": 0.00130316, + "atl_change_percentage": 29.00626, + "atl_date": "2024-10-27T10:09:37.938Z", + "roi": null, + "last_updated": "2025-12-05T15:46:16.397Z" + }, + { + "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.650606, + "market_cap": 89687, + "market_cap_rank": 7159, + "fully_diluted_valuation": 89687, + "total_volume": 2.01, + "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": 137850.8432522484, + "total_supply": 137850.8432522484, + "max_supply": null, + "ath": 4.04, + "ath_change_percentage": -83.89137, + "ath_date": "2025-02-23T07:25:02.428Z", + "atl": 0.330302, + "atl_change_percentage": 96.97292, + "atl_date": "2025-09-28T20:59:54.668Z", + "roi": null, + "last_updated": "2025-12-01T17:15:14.493Z" + }, + { + "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.054635, + "market_cap": 78077, + "market_cap_rank": 7392, + "fully_diluted_valuation": 78077, + "total_volume": 7930.42, + "high_24h": 0.054742, + "low_24h": 0.054484, + "price_change_24h": -0.000033858508268321, + "price_change_percentage_24h": -0.06193, + "market_cap_change_24h": -44.37471647630446, + "market_cap_change_percentage_24h": -0.0568, + "circulating_supply": 1428994.67, + "total_supply": 1428994.67, + "max_supply": null, + "ath": 0.067991, + "ath_change_percentage": -19.63968, + "ath_date": "2025-08-26T21:42:07.159Z", + "atl": 0.02496541, + "atl_change_percentage": 118.85256, + "atl_date": "2025-03-22T06:45:19.104Z", + "roi": null, + "last_updated": "2025-12-05T15:48:44.594Z" + }, + { + "id": "kei-stablecoin", + "symbol": "kei", + "name": "KEI Stablecoin", + "image": "https://coin-images.coingecko.com/coins/images/55084/large/kei.jpg?1743648809", + "current_price": 1.004, + "market_cap": 74124, + "market_cap_rank": 7470, + "fully_diluted_valuation": 74124, + "total_volume": 1852.33, + "high_24h": 1.018, + "low_24h": 0.983052, + "price_change_24h": -0.006666033141099925, + "price_change_percentage_24h": -0.65941, + "market_cap_change_24h": -562.3640250594763, + "market_cap_change_percentage_24h": -0.75296, + "circulating_supply": 73880.71074770554, + "total_supply": 73880.71074770554, + "max_supply": null, + "ath": 1.18, + "ath_change_percentage": -14.57782, + "ath_date": "2025-10-17T13:39:12.000Z", + "atl": 0.669361, + "atl_change_percentage": 50.03033, + "atl_date": "2025-10-10T21:25:39.922Z", + "roi": null, + "last_updated": "2025-12-05T15:46:54.393Z" + }, + { + "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.901825, + "market_cap": 74056, + "market_cap_rank": 7471, + "fully_diluted_valuation": 74056, + "total_volume": 7.06, + "high_24h": 0.901902, + "low_24h": 0.900697, + "price_change_24h": 0.00037118, + "price_change_percentage_24h": 0.04118, + "market_cap_change_24h": 29.86, + "market_cap_change_percentage_24h": 0.04033, + "circulating_supply": 82117.540583664, + "total_supply": 82117.540583664, + "max_supply": null, + "ath": 1.36, + "ath_change_percentage": -33.51236, + "ath_date": "2021-08-13T00:49:02.684Z", + "atl": 0.178833, + "atl_change_percentage": 404.28405, + "atl_date": "2024-11-05T04:21:23.914Z", + "roi": null, + "last_updated": "2025-12-04T17:48:53.145Z" + }, + { + "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": 1.001, + "market_cap": 71318, + "market_cap_rank": 7529, + "fully_diluted_valuation": 71318, + "total_volume": 30.65, + "high_24h": 1.007, + "low_24h": 0.984044, + "price_change_24h": 0.00685794, + "price_change_percentage_24h": 0.68963, + "market_cap_change_24h": 488.47, + "market_cap_change_percentage_24h": 0.68963, + "circulating_supply": 71226.524419, + "total_supply": 71226.524419, + "max_supply": null, + "ath": 1.092, + "ath_change_percentage": -8.33732, + "ath_date": "2025-02-03T02:28:35.751Z", + "atl": 0.645416, + "atl_change_percentage": 55.13863, + "atl_date": "2024-10-12T11:50:29.717Z", + "roi": null, + "last_updated": "2025-12-05T15:39:48.067Z" + }, + { + "id": "solid-2", + "symbol": "solid", + "name": "Solid", + "image": "https://coin-images.coingecko.com/coins/images/68475/large/IMG_7008_2.png?1755845964", + "current_price": 1.059, + "market_cap": 66186, + "market_cap_rank": 7655, + "fully_diluted_valuation": 66186, + "total_volume": 12590.86, + "high_24h": 1.077, + "low_24h": 1.002, + "price_change_24h": 0.04384948, + "price_change_percentage_24h": 4.31811, + "market_cap_change_24h": 3325.51, + "market_cap_change_percentage_24h": 5.29027, + "circulating_supply": 62411.743144, + "total_supply": 62411.743144, + "max_supply": null, + "ath": 1.096, + "ath_change_percentage": -3.34537, + "ath_date": "2025-11-05T22:05:05.880Z", + "atl": 0.342748, + "atl_change_percentage": 209.06922, + "atl_date": "2025-10-10T21:26:59.377Z", + "roi": null, + "last_updated": "2025-12-05T15:47:35.712Z" + }, + { + "id": "aexys-dollar", + "symbol": "axd", + "name": "Aesyx Dollar", + "image": "https://coin-images.coingecko.com/coins/images/67499/large/axd.jpg?1753012191", + "current_price": 1.022, + "market_cap": 61292, + "market_cap_rank": 7808, + "fully_diluted_valuation": 61292, + "total_volume": 100.01, + "high_24h": 1.023, + "low_24h": 1.021, + "price_change_24h": 0.00065442, + "price_change_percentage_24h": 0.0641, + "market_cap_change_24h": 39.05, + "market_cap_change_percentage_24h": 0.06375, + "circulating_supply": 59999.38196000508, + "total_supply": 59999.38196000508, + "max_supply": null, + "ath": 1.072, + "ath_change_percentage": -4.72384, + "ath_date": "2025-08-21T01:10:25.754Z", + "atl": 0.952838, + "atl_change_percentage": 7.21029, + "atl_date": "2025-10-16T16:06:59.841Z", + "roi": null, + "last_updated": "2025-12-05T15:47:40.842Z" + }, + { + "id": "bookusd", + "symbol": "bud", + "name": "BOOKUSD", + "image": "https://coin-images.coingecko.com/coins/images/66421/large/blue200x200.png?1749374858", + "current_price": 0.967767, + "market_cap": 57667, + "market_cap_rank": 7905, + "fully_diluted_valuation": 57667, + "total_volume": 614.04, + "high_24h": 0.987974, + "low_24h": 0.966856, + "price_change_24h": 0.00047956, + "price_change_percentage_24h": 0.04958, + "market_cap_change_24h": -67.10485862421046, + "market_cap_change_percentage_24h": -0.11623, + "circulating_supply": 59581.82636496857, + "total_supply": 59581.82636496857, + "max_supply": null, + "ath": 1.9, + "ath_change_percentage": -49.02233, + "ath_date": "2025-07-30T15:34:29.671Z", + "atl": 0.859142, + "atl_change_percentage": 12.65369, + "atl_date": "2025-06-22T16:54:01.968Z", + "roi": null, + "last_updated": "2025-12-05T15:48:57.491Z" + }, + { + "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.111871, + "market_cap": 53885, + "market_cap_rank": 7996, + "fully_diluted_valuation": 53885, + "total_volume": 386.79, + "high_24h": 0.113932, + "low_24h": 0.109756, + "price_change_24h": -0.001709862674218909, + "price_change_percentage_24h": -1.50542, + "market_cap_change_24h": -321.0885941026354, + "market_cap_change_percentage_24h": -0.59234, + "circulating_supply": 480873.250311, + "total_supply": 480873.250311, + "max_supply": null, + "ath": 3.11, + "ath_change_percentage": -96.3992, + "ath_date": "2023-04-26T18:11:13.891Z", + "atl": 3.28068e-7, + "atl_change_percentage": 34156716.96597, + "atl_date": "2024-09-18T20:51:02.282Z", + "roi": null, + "last_updated": "2025-12-05T15:48:16.528Z" + }, + { + "id": "dorol", + "symbol": "drl", + "name": "Dorol", + "image": "https://coin-images.coingecko.com/coins/images/68638/large/Dorol_200x200_logo.png?1756151165", + "current_price": 3852.25, + "market_cap": 51459, + "market_cap_rank": 8054, + "fully_diluted_valuation": 38522466748, + "total_volume": 678.61, + "high_24h": 3865.76, + "low_24h": 3820.97, + "price_change_24h": -6.99612288324488, + "price_change_percentage_24h": -0.18128, + "market_cap_change_24h": 192.05, + "market_cap_change_percentage_24h": 0.37461, + "circulating_supply": 13.358119237848147, + "total_supply": 9999998, + "max_supply": null, + "ath": 4469.59, + "ath_change_percentage": -13.81215, + "ath_date": "2025-10-01T12:33:40.552Z", + "atl": 3321.49, + "atl_change_percentage": 15.97967, + "atl_date": "2025-09-22T06:06:55.352Z", + "roi": null, + "last_updated": "2025-12-05T13:50:27.009Z" + }, + { + "id": "cghs", + "symbol": "cghs", + "name": "cGHS", + "image": "https://coin-images.coingecko.com/coins/images/54946/large/cGHS.png?1742636054", + "current_price": 0.088467, + "market_cap": 32347, + "market_cap_rank": 8824, + "fully_diluted_valuation": 32347, + "total_volume": 38652, + "high_24h": 0.090346, + "low_24h": 0.086763, + "price_change_24h": -0.000395647258376611, + "price_change_percentage_24h": -0.44523, + "market_cap_change_24h": 184.29, + "market_cap_change_percentage_24h": 0.573, + "circulating_supply": 365636.000460675, + "total_supply": 365636.000460675, + "max_supply": null, + "ath": 0.099394, + "ath_change_percentage": -10.9938, + "ath_date": "2025-06-24T06:11:41.254Z", + "atl": 0.04693655, + "atl_change_percentage": 88.48261, + "atl_date": "2025-10-10T21:30:01.423Z", + "roi": null, + "last_updated": "2025-12-05T15:36:44.422Z" + }, + { + "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.02047618, + "market_cap": 31368, + "market_cap_rank": 8931, + "fully_diluted_valuation": 31368, + "total_volume": 10326.82, + "high_24h": 0.03325547, + "low_24h": 0.01963404, + "price_change_24h": -0.009960365037760325, + "price_change_percentage_24h": -32.72502, + "market_cap_change_24h": -15258.752827493117, + "market_cap_change_percentage_24h": -32.72502, + "circulating_supply": 1531947.149491639, + "total_supply": 1531947.149491639, + "max_supply": 1531947.149491639, + "ath": 1634.01, + "ath_change_percentage": -99.99879, + "ath_date": "2020-12-31T10:39:07.639Z", + "atl": 0.01963404, + "atl_change_percentage": 0.47504, + "atl_date": "2025-12-05T15:24:44.500Z", + "roi": null, + "last_updated": "2025-12-05T15:46:16.464Z" + }, + { + "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.00645469, + "market_cap": 28893, + "market_cap_rank": 9012, + "fully_diluted_valuation": 28893, + "total_volume": 450.26, + "high_24h": 0.00645625, + "low_24h": 0.0064493, + "price_change_24h": 0.0000036, + "price_change_percentage_24h": 0.05575, + "market_cap_change_24h": -313.07017827075106, + "market_cap_change_percentage_24h": -1.07192, + "circulating_supply": 4476347.1371013, + "total_supply": 4476347.1371013, + "max_supply": null, + "ath": 0.00726235, + "ath_change_percentage": -11.1212, + "ath_date": "2025-10-10T23:40:31.775Z", + "atl": 0.00388634, + "atl_change_percentage": 66.0868, + "atl_date": "2025-10-10T21:30:52.558Z", + "roi": null, + "last_updated": "2025-12-05T15:46:49.419Z" + }, + { + "id": "brazilian-real", + "symbol": "wbrl", + "name": "Brazilian real", + "image": "https://coin-images.coingecko.com/coins/images/70862/large/wbrl.png?1764272108", + "current_price": 0.192378, + "market_cap": 26706, + "market_cap_rank": 9160, + "fully_diluted_valuation": 26706, + "total_volume": 6.72, + "high_24h": 0.192379, + "low_24h": 0.191223, + "price_change_24h": 0.00003845, + "price_change_percentage_24h": 0.01999, + "market_cap_change_24h": 5.34, + "market_cap_change_percentage_24h": 0.01999, + "circulating_supply": 138822.5, + "total_supply": 138822.5, + "max_supply": null, + "ath": 0.192379, + "ath_change_percentage": -0.00014, + "ath_date": "2025-12-05T15:21:18.695Z", + "atl": 0.191167, + "atl_change_percentage": 0.63374, + "atl_date": "2025-11-28T08:14:49.993Z", + "roi": null, + "last_updated": "2025-12-05T15:46:54.068Z" + }, + { + "id": "mexican-peso", + "symbol": "wmxn", + "name": "Mexican Peso", + "image": "https://coin-images.coingecko.com/coins/images/70880/large/wmxn_logo_1.png?1764392404", + "current_price": 0.055066, + "market_cap": 26398, + "market_cap_rank": 9186, + "fully_diluted_valuation": 26398, + "total_volume": 16.18, + "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": 479383.62, + "total_supply": 479383.62, + "max_supply": null, + "ath": 0.056089, + "ath_change_percentage": -1.82406, + "ath_date": "2025-12-01T08:11:42.912Z", + "atl": 0.05439, + "atl_change_percentage": 1.24309, + "atl_date": "2025-12-01T08:19:50.974Z", + "roi": null, + "last_updated": "2025-12-04T09:06:03.075Z" + }, + { + "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.698178, + "market_cap": 26192, + "market_cap_rank": 9205, + "fully_diluted_valuation": 26192, + "total_volume": 8.76, + "high_24h": 0.704174, + "low_24h": 0.698111, + "price_change_24h": -0.005921877483544336, + "price_change_percentage_24h": -0.84106, + "market_cap_change_24h": -231.99091030855197, + "market_cap_change_percentage_24h": -0.87794, + "circulating_supply": 37512, + "total_supply": 37512, + "max_supply": null, + "ath": 1.27, + "ath_change_percentage": -45.20091, + "ath_date": "2025-01-20T07:32:45.782Z", + "atl": 0.446195, + "atl_change_percentage": 56.48785, + "atl_date": "2023-10-09T14:03:20.658Z", + "roi": null, + "last_updated": "2025-12-05T15:48:31.399Z" + }, + { + "id": "colombian-peso", + "symbol": "wcop", + "name": "Colombian Peso", + "image": "https://coin-images.coingecko.com/coins/images/70887/large/wcop_logo_1.png?1764394538", + "current_price": 0.00026539, + "market_cap": 25898, + "market_cap_rank": 9223, + "fully_diluted_valuation": 25898, + "total_volume": 6.25, + "high_24h": 0.00026539, + "low_24h": 0.00026537, + "price_change_24h": 2.4892e-8, + "price_change_percentage_24h": 0.00938, + "market_cap_change_24h": 0.05342, + "market_cap_change_percentage_24h": 0.00021, + "circulating_supply": 97583654, + "total_supply": 97583654, + "max_supply": null, + "ath": 0.00026845, + "ath_change_percentage": -1.14031, + "ath_date": "2025-12-01T19:51:24.689Z", + "atl": 0.00026143, + "atl_change_percentage": 1.51562, + "atl_date": "2025-12-01T08:19:51.105Z", + "roi": null, + "last_updated": "2025-12-05T08:02:07.215Z" + }, + { + "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.00003682, + "market_cap": 21817, + "market_cap_rank": 9539, + "fully_diluted_valuation": 21817, + "total_volume": 1260.72, + "high_24h": 0.00003697, + "low_24h": 0.00003616, + "price_change_24h": 4.1874e-7, + "price_change_percentage_24h": 1.15047, + "market_cap_change_24h": 7.79, + "market_cap_change_percentage_24h": 0.03572, + "circulating_supply": 594762557.2568402, + "total_supply": 594762557.2568402, + "max_supply": null, + "ath": 0.00004081, + "ath_change_percentage": -10.11496, + "ath_date": "2024-02-06T23:58:12.199Z", + "atl": 0.00002948, + "atl_change_percentage": 24.41571, + "atl_date": "2025-10-10T23:30:28.530Z", + "roi": null, + "last_updated": "2025-12-05T15:47:05.934Z" + }, + { + "id": "krwo", + "symbol": "krwo", + "name": "KRWO", + "image": "https://coin-images.coingecko.com/coins/images/54799/large/KRWO-Common.png?1741696516", + "current_price": 0.00066919, + "market_cap": 13569.01, + "market_cap_rank": 10448, + "fully_diluted_valuation": 13569.01, + "total_volume": 8.51, + "high_24h": 0.00067522, + "low_24h": 0.00066732, + "price_change_24h": -0.00000603329564344, + "price_change_percentage_24h": -0.89353, + "market_cap_change_24h": -138.01695363741237, + "market_cap_change_percentage_24h": -1.00691, + "circulating_supply": 20300000, + "total_supply": 20300000, + "max_supply": null, + "ath": 0.00076113, + "ath_change_percentage": -12.0799, + "ath_date": "2025-08-08T05:26:31.542Z", + "atl": 0.00039112, + "atl_change_percentage": 71.09635, + "atl_date": "2025-10-10T21:34:12.083Z", + "roi": null, + "last_updated": "2025-12-05T15:46:14.445Z" + }, + { + "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.00069236, + "market_cap": 13411.97, + "market_cap_rank": 10471, + "fully_diluted_valuation": 13411.97, + "total_volume": 64.31, + "high_24h": 0.00069248, + "low_24h": 0.00069232, + "price_change_24h": -8.5690479854e-8, + "price_change_percentage_24h": -0.01237, + "market_cap_change_24h": -1.1353703288841643, + "market_cap_change_percentage_24h": -0.00846, + "circulating_supply": 19371266.07012865, + "total_supply": 19371266.07012865, + "max_supply": null, + "ath": 0.0007, + "ath_change_percentage": -1.09132, + "ath_date": "2025-10-03T16:36:06.492Z", + "atl": 0.00063308, + "atl_change_percentage": 9.36402, + "atl_date": "2025-06-10T03:08:30.002Z", + "roi": null, + "last_updated": "2025-12-05T15:46:48.731Z" + }, + { + "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.02120671, + "market_cap": 11500.96, + "market_cap_rank": 10763, + "fully_diluted_valuation": 11556.64, + "total_volume": 3.93, + "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": 544952.0212460154, + "total_supply": 544952.0212460154, + "max_supply": null, + "ath": 1.082, + "ath_change_percentage": -98.0405, + "ath_date": "2025-08-22T14:50:09.027Z", + "atl": 0.00634545, + "atl_change_percentage": 234.20346, + "atl_date": "2025-11-07T22:31:00.496Z", + "roi": null, + "last_updated": "2025-11-13T14:32:10.242Z" + } +] \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-total-eth-staked.json b/src/data-layer/mocks/fetch-total-eth-staked.json new file mode 100644 index 00000000000..778effd63f6 --- /dev/null +++ b/src/data-layer/mocks/fetch-total-eth-staked.json @@ -0,0 +1,4 @@ +{ + "value": 35968179.582126684, + "timestamp": 1764949749360 +} \ No newline at end of file diff --git a/src/data-layer/mocks/fetch-total-value-locked.json b/src/data-layer/mocks/fetch-total-value-locked.json new file mode 100644 index 00000000000..cacf8d4976b --- /dev/null +++ b/src/data-layer/mocks/fetch-total-value-locked.json @@ -0,0 +1,4 @@ +{ + "value": 143745010033, + "timestamp": 1764949749791 +} \ No newline at end of file diff --git a/src/data-layer/mocks/generate-mocks.ts b/src/data-layer/mocks/generate-mocks.ts new file mode 100644 index 00000000000..7055002bf9c --- /dev/null +++ b/src/data-layer/mocks/generate-mocks.ts @@ -0,0 +1,164 @@ +/** + * Script to generate mock data files from storage for local development. + * + * This script pulls data from Netlify Blobs storage and saves it as JSON files + * in the /data-layer/mocks directory. These mock files can be used for local + * development without needing to connect to Netlify Blobs. + * + * Run with: + * - npx dotenv-cli -e .env -- npx ts-node -r tsconfig-paths/register -O '{"module":"commonjs"}' src/data-layer/mocks/generate-mocks.ts + */ + +import * as fs from "fs" +import * as path from "path" + +import { getData } from "../storage/getter" + +// Define all task IDs to avoid importing registry (which imports API files with path aliases) +const TASK_IDS = [ + "fetch-apps", + "fetch-beaconchain-epoch", + "fetch-beaconchain-ethstore", + "fetch-blobscan-stats", + "fetch-calendar-events", + "fetch-community-picks", + "fetch-ethereum-marketcap", + "fetch-ethereum-stablecoins-mcap", + "fetch-eth-price", + "fetch-gfis", + "fetch-git-history", + "fetch-github-repo-data", + "fetch-grow-the-pie", + "fetch-grow-the-pie-blockspace", + "fetch-grow-the-pie-master", + "fetch-l2beat", + "fetch-posts", + "fetch-rss", + "fetch-stablecoins-data", + "fetch-total-eth-staked", + "fetch-total-value-locked", +] as const + +const MOCKS_DIR = __dirname + +async function generateMocks() { + console.log("=".repeat(60)) + console.log("Generating mock data files from storage") + console.log("=".repeat(60)) + console.log("") + + // Ensure mocks directory exists + if (!fs.existsSync(MOCKS_DIR)) { + fs.mkdirSync(MOCKS_DIR, { recursive: true }) + console.log(`šŸ“ Created mocks directory: ${MOCKS_DIR}`) + } + + let successCount = 0 + let notFoundCount = 0 + const errors: Array<{ taskId: string; error: string }> = [] + + console.log(`šŸ“¦ Fetching data for ${TASK_IDS.length} tasks...\n`) + + for (const taskId of TASK_IDS) { + try { + console.log(` Fetching: ${taskId}...`) + const data = await getData(taskId) + + if (data === null) { + console.log(` āš ļø No data found, skipping`) + notFoundCount++ + continue + } + + // Save data as JSON file + const filePath = path.join(MOCKS_DIR, `${taskId}.json`) + const jsonContent = JSON.stringify(data, null, 2) + fs.writeFileSync(filePath, jsonContent, "utf-8") + + const fileSize = (jsonContent.length / 1024).toFixed(2) + console.log(` āœ… Saved (${fileSize} KB)`) + successCount++ + } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error) + console.log(` āŒ Error: ${errorMessage}`) + errors.push({ taskId, error: errorMessage }) + } + } + + // Generate index file + const indexContent = `/** + * Mock data files for local development. + * + * These files are generated from Netlify Blobs storage and can be used + * for local development without needing to connect to Netlify Blobs. + * + * Generated: ${new Date().toISOString()} + * Total files: ${successCount} + */ + +export const mockTaskIds = ${JSON.stringify( + TASK_IDS.filter((id) => { + const filePath = path.join(MOCKS_DIR, `${id}.json`) + return fs.existsSync(filePath) + }), + null, + 2 + )} as const + +export type MockTaskId = (typeof mockTaskIds)[number] +` + + const indexPath = path.join(MOCKS_DIR, "index.ts") + fs.writeFileSync(indexPath, indexContent, "utf-8") + console.log(`\nšŸ“„ Generated index file: ${indexPath}`) + + // Generate README + const readmeContent = `# Mock Data Files + +These mock data files are generated from Netlify Blobs storage for local development. + +## Usage + +These files can be used to mock the data-layer storage in local development environments without needing to connect to Netlify Blobs. + +## Generation + +To regenerate these files, run: + +\`\`\`bash +npx dotenv-cli -e .env -- npx ts-node -r tsconfig-paths/register -O '{"module":"commonjs"}' src/data-layer/mocks/generate-mocks.ts +\`\`\` +` + + const readmePath = path.join(MOCKS_DIR, "README.md") + fs.writeFileSync(readmePath, readmeContent, "utf-8") + console.log(`šŸ“„ Generated README: ${readmePath}`) + + // Summary + console.log("\n" + "=".repeat(60)) + console.log("Summary") + console.log("=".repeat(60)) + console.log(` āœ… Successfully generated: ${successCount} files`) + console.log(` ā„¹ļø Not found: ${notFoundCount} tasks`) + if (errors.length > 0) { + console.log(` āŒ Errors: ${errors.length}`) + console.log("\n Error details:") + errors.forEach(({ taskId, error }) => { + console.log(` - ${taskId}: ${error}`) + }) + } + console.log(` šŸ“ Output directory: ${MOCKS_DIR}`) + console.log("") + console.log("āœ… Mock generation completed!") +} + +// Run the script +generateMocks().catch((error) => { + console.error("āŒ Failed to generate mocks:", error) + if (error instanceof Error) { + console.error(" Error message:", error.message) + console.error(" Stack:", error.stack) + } + process.exit(1) +}) diff --git a/src/data-layer/mocks/index.ts b/src/data-layer/mocks/index.ts new file mode 100644 index 00000000000..4104e074711 --- /dev/null +++ b/src/data-layer/mocks/index.ts @@ -0,0 +1,34 @@ +/** + * Mock data files for local development. + * + * These files are generated from Netlify Blobs storage and can be used + * for local development without needing to connect to Netlify Blobs. + * + * Generated: 2025-12-10T23:12:11.353Z + * Total files: 20 + */ + +export const mockTaskIds = [ + "fetch-apps", + "fetch-beaconchain-epoch", + "fetch-beaconchain-ethstore", + "fetch-blobscan-stats", + "fetch-calendar-events", + "fetch-community-picks", + "fetch-ethereum-marketcap", + "fetch-ethereum-stablecoins-mcap", + "fetch-eth-price", + "fetch-gfis", + "fetch-git-history", + "fetch-github-repo-data", + "fetch-grow-the-pie", + "fetch-grow-the-pie-master", + "fetch-l2beat", + "fetch-posts", + "fetch-rss", + "fetch-stablecoins-data", + "fetch-total-eth-staked", + "fetch-total-value-locked", +] as const + +export type MockTaskId = (typeof mockTaskIds)[number] diff --git a/src/data-layer/registry.ts b/src/data-layer/registry.ts new file mode 100644 index 00000000000..788bc57825e --- /dev/null +++ b/src/data-layer/registry.ts @@ -0,0 +1,168 @@ +/** + * Registry of all data-layer components. + * + * This includes Trigger.dev scheduled tasks + * Tasks are automatically discovered by Trigger.dev, but this registry + * provides reference. + * + * Task IDs can be used as keys for storage. + */ + +import { FETCH_APPS_TASK_ID, fetchApps } from "./api/fetchApps" +import { + FETCH_BEACONCHAIN_EPOCH_TASK_ID, + fetchBeaconChainEpoch, +} from "./api/fetchBeaconChainEpoch" +import { + FETCH_BEACONCHAIN_ETHSTORE_TASK_ID, + fetchBeaconChainEthstore, +} from "./api/fetchBeaconChainEthstore" +import { + FETCH_BLOBSCAN_STATS_TASK_ID, + fetchBlobscanStats, +} from "./api/fetchBlobscanStats" +import { + FETCH_CALENDAR_EVENTS_TASK_ID, + fetchCalendarEvents, +} from "./api/fetchCalendarEvents" +import { + FETCH_COMMUNITY_PICKS_TASK_ID, + fetchCommunityPicks, +} from "./api/fetchCommunityPicks" +import { + FETCH_ETHEREUM_MARKETCAP_TASK_ID, + fetchEthereumMarketcap, +} from "./api/fetchEthereumMarketcap" +import { + FETCH_ETHEREUM_STABLECOINS_MCAP_TASK_ID, + fetchEthereumStablecoinsMcap, +} from "./api/fetchEthereumStablecoinsMcap" +import { FETCH_ETH_PRICE_TASK_ID, fetchEthPrice } from "./api/fetchEthPrice" +import { FETCH_GFIS_TASK_ID, fetchGFIs } from "./api/fetchGFIs" +import { + FETCH_GIT_HISTORY_TASK_ID, + fetchGitHistory, +} from "./api/fetchGitHistory" +import { + FETCH_GITHUB_REPO_DATA_TASK_ID, + fetchGithubRepoData, +} from "./api/fetchGithubRepoData" +import { + FETCH_GROW_THE_PIE_TASK_ID, + fetchGrowThePie, +} from "./api/fetchGrowThePie" +import { + FETCH_GROW_THE_PIE_BLOCKSPACE_TASK_ID, + fetchGrowThePieBlockspace, +} from "./api/fetchGrowThePieBlockspace" +import { + FETCH_GROW_THE_PIE_MASTER_TASK_ID, + fetchGrowThePieMaster, +} from "./api/fetchGrowThePieMaster" +import { FETCH_L2BEAT_TASK_ID, fetchL2beat } from "./api/fetchL2beat" +import { FETCH_POSTS_TASK_ID, fetchAttestantPosts } from "./api/fetchPosts" +import { FETCH_RSS_TASK_ID, fetchRSS } from "./api/fetchRSS" +import { + FETCH_STABLECOINS_DATA_TASK_ID, + fetchStablecoinsData, +} from "./api/fetchStablecoinsData" +import { + FETCH_TOTAL_ETH_STAKED_TASK_ID, + fetchTotalEthStaked, +} from "./api/fetchTotalEthStaked" +import { + FETCH_TOTAL_VALUE_LOCKED_TASK_ID, + fetchTotalValueLocked, +} from "./api/fetchTotalValueLocked" + +export const dailyTasks = [ + { + id: FETCH_APPS_TASK_ID, + fetchFunction: fetchApps, + }, + { + id: FETCH_CALENDAR_EVENTS_TASK_ID, + fetchFunction: fetchCalendarEvents, + }, + { + id: FETCH_COMMUNITY_PICKS_TASK_ID, + fetchFunction: fetchCommunityPicks, + }, + { + id: FETCH_GFIS_TASK_ID, + fetchFunction: fetchGFIs, + }, + { + id: FETCH_GIT_HISTORY_TASK_ID, + fetchFunction: fetchGitHistory, + }, + { + id: FETCH_GROW_THE_PIE_TASK_ID, + fetchFunction: fetchGrowThePie, + }, + { + id: FETCH_GROW_THE_PIE_BLOCKSPACE_TASK_ID, + fetchFunction: fetchGrowThePieBlockspace, + }, + { + id: FETCH_GROW_THE_PIE_MASTER_TASK_ID, + fetchFunction: fetchGrowThePieMaster, + }, + { + id: FETCH_L2BEAT_TASK_ID, + fetchFunction: fetchL2beat, + }, + { + id: FETCH_POSTS_TASK_ID, + fetchFunction: fetchAttestantPosts, + }, + { + id: FETCH_RSS_TASK_ID, + fetchFunction: fetchRSS, + }, + { + id: FETCH_GITHUB_REPO_DATA_TASK_ID, + fetchFunction: fetchGithubRepoData, + }, +] as const + +export const hourlyTasks = [ + { + id: FETCH_BEACONCHAIN_EPOCH_TASK_ID, + fetchFunction: fetchBeaconChainEpoch, + }, + { + id: FETCH_BEACONCHAIN_ETHSTORE_TASK_ID, + fetchFunction: fetchBeaconChainEthstore, + }, + { + id: FETCH_BLOBSCAN_STATS_TASK_ID, + fetchFunction: fetchBlobscanStats, + }, + { + id: FETCH_ETHEREUM_MARKETCAP_TASK_ID, + fetchFunction: fetchEthereumMarketcap, + }, + { + id: FETCH_ETHEREUM_STABLECOINS_MCAP_TASK_ID, + fetchFunction: fetchEthereumStablecoinsMcap, + }, + { + id: FETCH_ETH_PRICE_TASK_ID, + fetchFunction: fetchEthPrice, + }, + { + id: FETCH_TOTAL_ETH_STAKED_TASK_ID, + fetchFunction: fetchTotalEthStaked, + }, + { + id: FETCH_TOTAL_VALUE_LOCKED_TASK_ID, + fetchFunction: fetchTotalValueLocked, + }, + { + id: FETCH_STABLECOINS_DATA_TASK_ID, + fetchFunction: fetchStablecoinsData, + }, +] as const + +export const tasks = [...dailyTasks, ...hourlyTasks] as const diff --git a/src/data-layer/storage/getter.ts b/src/data-layer/storage/getter.ts new file mode 100644 index 00000000000..35a57e980ef --- /dev/null +++ b/src/data-layer/storage/getter.ts @@ -0,0 +1,53 @@ +/** + * Abstract storage getter for data-layer tasks. + * + * This provides a storage-agnostic interface that can be swapped between + * different storage implementations (Netlify Blobs, S3, etc.). + */ + +import type { Storage, StorageMetadata, TaskId } from "../types" + +import { mockStorage } from "./mockStorage" +import { netlifyBlobsStorage } from "./netlifyBlobsStorage" + +/** + * Default storage implementation to use. + * Uses mock storage in development if USE_MOCK_DATA is set, otherwise Netlify Blobs. + */ +const defaultStorage: Storage = + process.env.USE_MOCK_DATA === "true" ? mockStorage : netlifyBlobsStorage + +/** + * Get data from storage + * @param taskId - The task ID to retrieve data for + * @returns The stored data, or null if not found + */ +export async function getData(taskId: TaskId): Promise + +/** + * Get data from storage with metadata + * @param taskId - The task ID to retrieve data for + * @param options - Configuration options + * @param options.withMetadata - Set to true to include metadata + * @returns The stored data with metadata, or null if not found + */ +export async function getData( + taskId: TaskId, + options: { withMetadata: true } +): Promise<{ data: T; metadata: StorageMetadata } | null> + +/** + * Implementation + */ +export async function getData( + taskId: TaskId, + options?: { withMetadata?: boolean } +): Promise { + const result = await defaultStorage.get(taskId) + + if (!result) { + return null + } + + return options?.withMetadata ? result : result.data +} diff --git a/src/data-layer/storage/mockStorage.ts b/src/data-layer/storage/mockStorage.ts new file mode 100644 index 00000000000..9fb5588b8d7 --- /dev/null +++ b/src/data-layer/storage/mockStorage.ts @@ -0,0 +1,67 @@ +/** + * Mock storage implementation for local development. + * + * This reads mock data files from /data-layer/mocks instead of connecting + * to Netlify Blobs. Useful for local development without requiring + * Netlify Blobs credentials. + */ + +import * as fs from "fs" +import * as path from "path" + +import type { Storage, StorageMetadata, StorageResult, TaskId } from "../types" + +const MOCKS_DIR = path.join(__dirname, "../mocks") + +/** + * Mock storage implementation that reads from local JSON files. + * This is a read-only implementation for local development. + */ +export const mockStorage: Storage = { + async get(taskId: TaskId): Promise | null> { + try { + const filePath = path.join(MOCKS_DIR, `${taskId}.json`) + + if (!fs.existsSync(filePath)) { + console.log(`[Mock Storage] No mock data found for task: ${taskId}`) + return null + } + + const fileContent = fs.readFileSync(filePath, "utf-8") + const data = JSON.parse(fileContent) as T + + // Generate mock metadata based on file modification time + const stats = fs.statSync(filePath) + const metadata: StorageMetadata = { + storedAt: stats.mtime.toISOString(), + } + + console.log(`[Mock Storage] Retrieved mock data for task: ${taskId}`) + return { data, metadata } + } catch (error) { + console.error( + `[Mock Storage] Failed to retrieve mock data for task: ${taskId}`, + error + ) + throw error + } + }, + + async set(taskId: TaskId, data: unknown): Promise { + // In mock storage, we can optionally write to files for testing + // but typically this is read-only for local dev + try { + const filePath = path.join(MOCKS_DIR, `${taskId}.json`) + const jsonData = JSON.stringify(data, null, 2) + fs.writeFileSync(filePath, jsonData, "utf-8") + + console.log(`[Mock Storage] Saved mock data for task: ${taskId}`) + } catch (error) { + console.error( + `[Mock Storage] Failed to save mock data for task: ${taskId}`, + error + ) + throw error + } + }, +} diff --git a/src/data-layer/storage/netlifyBlobsStorage.ts b/src/data-layer/storage/netlifyBlobsStorage.ts new file mode 100644 index 00000000000..f35fc4b663d --- /dev/null +++ b/src/data-layer/storage/netlifyBlobsStorage.ts @@ -0,0 +1,111 @@ +import { getStore } from "@netlify/blobs" + +import type { Storage, StorageMetadata, StorageResult, TaskId } from "../types" + +/** + * Netlify Blobs storage implementation for data-layer tasks. + * + * Uses Netlify Blobs to store task data with metadata. + * The store name "data-layer" acts as a namespace for all task data. + * + * Store is initialized lazily to avoid errors when environment isn't configured. + */ +let store: ReturnType | null = null + +function getBlobStore() { + if (store) { + return store + } + + const siteID = process.env.NETLIFY_BLOBS_SITE_ID + const token = process.env.NETLIFY_BLOBS_TOKEN + + if (!siteID || !token) { + throw new Error( + "Netlify Blobs configuration missing. Please set NETLIFY_BLOBS_SITE_ID and NETLIFY_BLOBS_TOKEN environment variables." + ) + } + + store = getStore({ + name: "data-layer", + siteID, + token, + } as Parameters[0]) + + return store +} + +export const netlifyBlobsStorage: Storage = { + async get(taskId: TaskId): Promise | null> { + try { + // Initialize store lazily (only when actually needed) + const blobStore = getBlobStore() + + // Get the blob data + const blob = await blobStore.get(taskId, { + type: "text", + }) + + if (!blob) { + console.log(`[Netlify Blobs] No data found for task: ${taskId}`) + return null + } + + // Parse JSON data + const data = JSON.parse(blob) as T + + // Get metadata from blob + // getMetadata returns { etag, metadata } where metadata is a Record + const blobMetadataResult = await blobStore.getMetadata(taskId) + const storedAtValue = blobMetadataResult?.metadata?.storedAt + const metadata: StorageMetadata = { + storedAt: + storedAtValue && typeof storedAtValue === "string" + ? storedAtValue + : new Date().toISOString(), + } + + console.log(`[Netlify Blobs] Retrieved data for task: ${taskId}`) + return { data, metadata } + } catch (error) { + console.error( + `[Netlify Blobs] Failed to retrieve data for task: ${taskId}`, + error + ) + throw error + } + }, + + async set( + taskId: TaskId, + data: unknown, + metadata?: StorageMetadata + ): Promise { + try { + // Initialize store lazily (only when actually needed) + const blobStore = getBlobStore() + + // Serialize data to JSON + const jsonData = JSON.stringify(data) + + // Store with metadata (Netlify Blobs accepts metadata as a Record) + const blobMetadata: Record = metadata + ? { + storedAt: metadata.storedAt, + } + : {} + + await blobStore.set(taskId, jsonData, { + metadata: blobMetadata, + }) + + console.log(`[Netlify Blobs] Stored data for task: ${taskId}`) + } catch (error) { + console.error( + `[Netlify Blobs] Failed to store data for task: ${taskId}`, + error + ) + throw error + } + }, +} diff --git a/src/data-layer/storage/setter.ts b/src/data-layer/storage/setter.ts new file mode 100644 index 00000000000..1f261c55fb5 --- /dev/null +++ b/src/data-layer/storage/setter.ts @@ -0,0 +1,26 @@ +/** + * Abstract storage setter for data-layer tasks. + * + * This provides a storage-agnostic interface that can be swapped between + * different storage implementations (Netlify Blobs, S3, etc.). + */ + +import type { Storage, StorageMetadata, TaskId } from "../types" + +import { mockStorage } from "./mockStorage" +import { netlifyBlobsStorage } from "./netlifyBlobsStorage" + +/** + * Default storage implementation to use. + * Uses mock storage in development if USE_MOCK_DATA is set, otherwise Netlify Blobs. + */ +const defaultStorage: Storage = + process.env.USE_MOCK_DATA === "true" ? mockStorage : netlifyBlobsStorage + +export async function setData(taskId: TaskId, data: T): Promise { + const metadata: StorageMetadata = { + storedAt: new Date().toISOString(), + } + + await defaultStorage.set(taskId, data, metadata) +} diff --git a/src/data-layer/trigger/tasks/daily.ts b/src/data-layer/trigger/tasks/daily.ts new file mode 100644 index 00000000000..6ef4d661a76 --- /dev/null +++ b/src/data-layer/trigger/tasks/daily.ts @@ -0,0 +1,55 @@ +import { schedules } from "@trigger.dev/sdk/v3" + +import { dailyTasks } from "../../registry" +import { setData } from "../../storage/setter" + +/** + * Single Trigger.dev scheduled task for all daily tasks + * Runs daily at midnight UTC and executes all daily fetch functions + * This keeps us under the free tier limit of 10 schedules + */ +export const dailyTask = schedules.task({ + id: "daily-data-fetch", + // Run daily at midnight UTC + cron: "0 0 * * *", + run: async () => { + const results: Record = {} + + // Execute all daily tasks in parallel + const taskPromises = dailyTasks.map(async (task) => { + try { + console.log(`Fetching data for task: ${task.id}`) + const data = await task.fetchFunction() + await setData(task.id, data) + return { + taskId: task.id, + success: true, + data, + } + } catch (error) { + console.error(`Error fetching data for task ${task.id}:`, error) + return { + taskId: task.id, + success: false, + error: error instanceof Error ? error.message : String(error), + } + } + }) + + // Wait for all tasks to complete (success or failure) + const settledResults = await Promise.allSettled(taskPromises) + + // Process results + for (const result of settledResults) { + if (result.status === "fulfilled") { + const { taskId, success, ...rest } = result.value + results[taskId] = { success, ...rest } + } else { + // This shouldn't happen since we catch errors in the map, but handle it just in case + console.error("Unexpected error in Promise.allSettled:", result.reason) + } + } + + return results + }, +}) diff --git a/src/data-layer/trigger/tasks/hourly.ts b/src/data-layer/trigger/tasks/hourly.ts new file mode 100644 index 00000000000..6611fa5f448 --- /dev/null +++ b/src/data-layer/trigger/tasks/hourly.ts @@ -0,0 +1,55 @@ +import { schedules } from "@trigger.dev/sdk/v3" + +import { hourlyTasks } from "../../registry" +import { setData } from "../../storage/setter" + +/** + * Single Trigger.dev scheduled task for all hourly tasks + * Runs every hour and executes all hourly fetch functions + * This keeps us under the free tier limit of 10 schedules + */ +export const hourlyTask = schedules.task({ + id: "hourly-data-fetch", + // Run every hour to keep data current + cron: "0 * * * *", + run: async () => { + const results: Record = {} + + // Execute all hourly tasks in parallel + const taskPromises = hourlyTasks.map(async (task) => { + try { + console.log(`Fetching data for task: ${task.id}`) + const data = await task.fetchFunction() + await setData(task.id, data) + return { + taskId: task.id, + success: true, + data, + } + } catch (error) { + console.error(`Error fetching data for task ${task.id}:`, error) + return { + taskId: task.id, + success: false, + error: error instanceof Error ? error.message : String(error), + } + } + }) + + // Wait for all tasks to complete (success or failure) + const settledResults = await Promise.allSettled(taskPromises) + + // Process results + for (const result of settledResults) { + if (result.status === "fulfilled") { + const { taskId, success, ...rest } = result.value + results[taskId] = { success, ...rest } + } else { + // This shouldn't happen since we catch errors in the map, but handle it just in case + console.error("Unexpected error in Promise.allSettled:", result.reason) + } + } + + return results + }, +}) diff --git a/src/data-layer/trigger/tasks/index.ts b/src/data-layer/trigger/tasks/index.ts new file mode 100644 index 00000000000..82a09060476 --- /dev/null +++ b/src/data-layer/trigger/tasks/index.ts @@ -0,0 +1,9 @@ +/** + * Import all Trigger.dev scheduled tasks + * + * Trigger.dev automatically discovers tasks from this directory. + * Importing these files registers the tasks. + */ + +import "./daily" +import "./hourly" diff --git a/src/data-layer/types.ts b/src/data-layer/types.ts new file mode 100644 index 00000000000..91651742294 --- /dev/null +++ b/src/data-layer/types.ts @@ -0,0 +1,43 @@ +/** + * Type definitions for the data-layer module. + */ + +import type { tasks } from "./registry" + +export type TaskId = (typeof tasks)[number]["id"] + +/** + * Metadata stored alongside data. + */ +export interface StorageMetadata { + storedAt: string +} + +/** + * Result shape when retrieving data with metadata. + */ +export interface StorageResult { + data: T + metadata: StorageMetadata +} + +/** + * Unified storage interface. + * Implementations must provide both get and set methods. + */ +export interface Storage { + /** + * Retrieve data for a task. + * @param taskId - The task ID to use as the storage key + * @returns The stored data with metadata, or null if not found + */ + get(taskId: TaskId): Promise | null> + + /** + * Store data for a task with optional metadata. + * @param taskId - The task ID to use as the storage key + * @param data - Data to store (will be serialized) + * @param metadata - Optional metadata about the stored data + */ + set(taskId: TaskId, data: unknown, metadata?: StorageMetadata): Promise +} diff --git a/src/data/networks/growthepieIds.ts b/src/data/networks/growthepieIds.ts new file mode 100644 index 00000000000..39408047c24 --- /dev/null +++ b/src/data/networks/growthepieIds.ts @@ -0,0 +1,19 @@ +/** + * Layer 2 network GrowThePie IDs. + * + * This file contains only the growthepieID values to avoid importing images + * which Trigger.dev's bundler cannot handle. + * + * Keep this in sync with src/data/networks/networks.ts + */ +export const LAYER2_GROWTHEPIE_IDS: string[] = [ + "arbitrum", + "base", + "optimism", + "zksync_era", + "linea", + "scroll", + "starknet", + "unichain", + "ink", +] 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/data/index.ts b/src/lib/data/index.ts new file mode 100644 index 00000000000..2eaa20a96bc --- /dev/null +++ b/src/lib/data/index.ts @@ -0,0 +1,196 @@ +import { unstable_cache } from "next/cache" + +import * as dataLayer from "@/data-layer" + +import { BASE_TIME_UNIT } from "@/lib/constants" + +// Cache configuration constants +const CACHE_REVALIDATE_HOUR = BASE_TIME_UNIT // 1 hour in seconds +const CACHE_REVALIDATE_DAY = BASE_TIME_UNIT * 24 // 24 hours in seconds + +/** + * Get Ethereum price data (cached for 1 hour). + */ +export const getEthPrice = unstable_cache( + () => dataLayer.getEthPrice(), + ["eth-price"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get L2BEAT scaling summary data (cached for 1 hour). + */ +export const getL2beatData = unstable_cache( + () => dataLayer.getL2beatData(), + ["l2beat-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get apps data organized by category (cached for 24 hours). + */ +export const getAppsData = unstable_cache( + () => dataLayer.getAppsData(), + ["apps-data"], + { revalidate: CACHE_REVALIDATE_DAY } +) + +/** + * Get GrowThePie fundamentals data (cached for 1 hour). + */ +export const getGrowThePieData = unstable_cache( + () => dataLayer.getGrowThePieData(), + ["grow-the-pie-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get GrowThePie blockspace data (cached for 1 hour). + */ +export const getGrowThePieBlockspaceData = unstable_cache( + () => dataLayer.getGrowThePieBlockspaceData(), + ["grow-the-pie-blockspace-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get GrowThePie master data (cached for 24 hours). + */ +export const getGrowThePieMasterData = unstable_cache( + () => dataLayer.getGrowThePieMasterData(), + ["grow-the-pie-master-data"], + { revalidate: CACHE_REVALIDATE_DAY } +) + +/** + * Get community picks data (cached for 24 hours). + */ +export const getCommunityPicks = unstable_cache( + () => dataLayer.getCommunityPicks(), + ["community-picks"], + { revalidate: CACHE_REVALIDATE_DAY } +) + +/** + * Get community calendar events (cached for 1 hour). + */ +export const getCalendarEvents = unstable_cache( + () => dataLayer.getCalendarEvents(), + ["calendar-events"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get RSS feeds from community blogs (cached for 1 hour). + */ +export const getRSSData = unstable_cache( + () => dataLayer.getRSSData(), + ["rss-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get Attestant blog posts (cached for 1 hour). + */ +export const getAttestantPosts = unstable_cache( + () => dataLayer.getAttestantPosts(), + ["attestant-posts"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get beaconchain epoch data (cached for 1 hour). + */ +export const getBeaconchainEpochData = unstable_cache( + () => dataLayer.getBeaconchainEpochData(), + ["beaconchain-epoch-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get beaconchain ETH store data (cached for 1 hour). + */ +export const getBeaconchainEthstoreData = unstable_cache( + () => dataLayer.getBeaconchainEthstoreData(), + ["beaconchain-ethstore-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get blobscan overall stats (cached for 1 hour). + */ +export const getBlobscanStats = unstable_cache( + () => dataLayer.getBlobscanStats(), + ["blobscan-stats"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get Ethereum market cap data (cached for 1 hour). + */ +export const getEthereumMarketcapData = unstable_cache( + () => dataLayer.getEthereumMarketcapData(), + ["ethereum-marketcap-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get Ethereum stablecoins market cap data (cached for 1 hour). + */ +export const getEthereumStablecoinsMcapData = unstable_cache( + () => dataLayer.getEthereumStablecoinsMcapData(), + ["ethereum-stablecoins-mcap-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get GitHub good first issues (cached for 1 hour). + */ +export const getGFIs = unstable_cache(() => dataLayer.getGFIs(), ["gfis"], { + revalidate: CACHE_REVALIDATE_HOUR, +}) + +/** + * Get GitHub commit history (cached for 1 hour). + */ +export const getGitHistory = unstable_cache( + () => dataLayer.getGitHistory(), + ["git-history"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get GitHub repository data (cached for 24 hours). + */ +export const getGithubRepoData = unstable_cache( + () => dataLayer.getGithubRepoData(), + ["github-repo-data"], + { revalidate: CACHE_REVALIDATE_DAY } +) + +/** + * Get Ethereum stablecoins data (cached for 1 hour). + */ +export const getStablecoinsData = unstable_cache( + () => dataLayer.getStablecoinsData(), + ["stablecoins-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get total ETH staked data (cached for 1 hour). + */ +export const getTotalEthStakedData = unstable_cache( + () => dataLayer.getTotalEthStakedData(), + ["total-eth-staked-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) + +/** + * Get total value locked (TVL) data (cached for 1 hour). + */ +export const getTotalValueLockedData = unstable_cache( + () => dataLayer.getTotalValueLockedData(), + ["total-value-locked-data"], + { revalidate: CACHE_REVALIDATE_HOUR } +) diff --git a/src/lib/types.ts b/src/lib/types.ts index 8e2e40ae991..a17da107ada 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -578,6 +578,58 @@ export type GrowThePieData = Record & { activeAddresses: Record } +export type BlockspaceData = { + nft: number + defi: number + social: number + token_transfers: number + unlabeled: number +} + +export type GrowThePieMasterData = { + launchDates: Record +} + +export type GithubRepoData = { + starCount: number + languages: string[] +} + +export type L2beatData = { + projects: Record< + string, + { + stage: string + tvl: { total: number } + tvs: { breakdown: { total: number } } + risks: Array<{ name: string; sentiment: string }> + } + > + chart?: { + types: string[] + data: number[][] + } +} + +export type BlobscanOverallStats = { + avgBlobAsCalldataFee: number + avgBlobFee: number + avgBlobGasPrice: number + avgMaxBlobGasFee: number + totalBlobGasUsed: string + totalBlobAsCalldataGasUsed: string + totalBlobFee: string + totalBlobAsCalldataFee: string + totalBlobs: number + totalBlobSize: string + totalBlocks: number + totalTransactions: number + totalUniqueBlobs: number + totalUniqueReceivers: number + totalUniqueSenders: number + updatedAt: string +} + export type HomepageActivityMetric = | "ethPrice" // Use with `totalEthStaked` to convert ETH to USD | "totalEthStaked" diff --git a/tests/unit/data-layer/getters.spec.ts b/tests/unit/data-layer/getters.spec.ts new file mode 100644 index 00000000000..77978b03b44 --- /dev/null +++ b/tests/unit/data-layer/getters.spec.ts @@ -0,0 +1,335 @@ +/** + * Playwright Test suite for data-layer getter functions. + * + * Tests all public getter functions to ensure they: + * 1. Execute without errors + * 2. Return the expected types and structures + * 3. Handle null cases gracefully + * 4. Validate data structure when data is present + */ + +import { expect, test } from "@playwright/test" + +// Register path aliases +try { + require("tsconfig-paths/register") +} catch (e) { + // tsconfig-paths not available, paths may not resolve + console.warn("tsconfig-paths not found, path aliases may not work") +} + +// Set USE_MOCK_DATA before importing data-layer +process.env.USE_MOCK_DATA = "true" + +import * as dataLayer from "@/data-layer" + +test.describe("Data-Layer Getters", () => { + test.describe("Price & Market Data", () => { + test("getEthPrice returns MetricReturnData or null", async () => { + const result = await dataLayer.getEthPrice() + if (result !== null) { + // MetricReturnData is ValueOrError + expect(result).toHaveProperty("value") + expect(typeof result.value).toBe("number") + expect(result.value).toBeGreaterThan(0) + if ("timestamp" in result) { + expect(typeof result.timestamp).toBe("number") + } + } + }) + + test("getEthereumMarketcapData returns MetricReturnData or null", async () => { + const result = await dataLayer.getEthereumMarketcapData() + if (result !== null) { + expect(result).toHaveProperty("value") + expect(typeof result.value).toBe("number") + expect(result.value).toBeGreaterThan(0) + } + }) + + test("getEthereumStablecoinsMcapData returns MetricReturnData or null", async () => { + const result = await dataLayer.getEthereumStablecoinsMcapData() + if (result !== null) { + expect(result).toHaveProperty("value") + expect(typeof result.value).toBe("number") + expect(result.value).toBeGreaterThan(0) + } + }) + + test("getTotalValueLockedData returns MetricReturnData or null", async () => { + const result = await dataLayer.getTotalValueLockedData() + if (result !== null) { + expect(result).toHaveProperty("value") + expect(typeof result.value).toBe("number") + expect(result.value).toBeGreaterThan(0) + } + }) + }) + + test.describe("Layer 2 Data", () => { + test("getL2beatData returns L2beatData or null", async () => { + const result = await dataLayer.getL2beatData() + if (result !== null) { + expect(result).toHaveProperty("projects") + expect(typeof result.projects).toBe("object") + // Check that projects is a record with expected structure + const projectKeys = Object.keys(result.projects) + if (projectKeys.length > 0) { + const firstProject = result.projects[projectKeys[0]] + expect(firstProject).toHaveProperty("stage") + expect(firstProject).toHaveProperty("tvs") + expect(firstProject.tvs).toHaveProperty("breakdown") + expect(firstProject.tvs.breakdown).toHaveProperty("total") + expect(typeof firstProject.tvs.breakdown.total).toBe("number") + expect(firstProject).toHaveProperty("risks") + expect(Array.isArray(firstProject.risks)).toBe(true) + } + } + }) + + test("getGrowThePieData returns GrowThePieData or null", async () => { + const result = await dataLayer.getGrowThePieData() + if (result !== null) { + expect(result).toHaveProperty("txCount") + expect(result).toHaveProperty("txCostsMedianUsd") + expect(result).toHaveProperty("dailyTxCosts") + expect(result).toHaveProperty("activeAddresses") + + // Validate MetricReturnData structure + expect(result.txCount).toHaveProperty("value") + expect(typeof result.txCount.value).toBe("number") + expect(result.txCostsMedianUsd).toHaveProperty("value") + expect(typeof result.txCostsMedianUsd.value).toBe("number") + + // Validate dailyTxCosts is a record + expect(typeof result.dailyTxCosts).toBe("object") + expect(Array.isArray(result.dailyTxCosts)).toBe(false) + } + }) + + test("getGrowThePieBlockspaceData returns blockspace data or null", async () => { + const result = await dataLayer.getGrowThePieBlockspaceData() + if (result !== null) { + expect(typeof result).toBe("object") + expect(Array.isArray(result)).toBe(false) + // Check structure of first entry if available + const keys = Object.keys(result) + if (keys.length > 0) { + const firstEntry = result[keys[0]] + expect(firstEntry).toHaveProperty("nft") + expect(firstEntry).toHaveProperty("defi") + expect(firstEntry).toHaveProperty("social") + expect(firstEntry).toHaveProperty("token_transfers") + expect(firstEntry).toHaveProperty("unlabeled") + expect(typeof firstEntry.nft).toBe("number") + expect(typeof firstEntry.defi).toBe("number") + } + } + }) + + test("getGrowThePieMasterData returns master data or null", async () => { + const result = await dataLayer.getGrowThePieMasterData() + if (result !== null) { + expect(result).toHaveProperty("launchDates") + expect(typeof result.launchDates).toBe("object") + expect(Array.isArray(result.launchDates)).toBe(false) + // Validate launchDates structure + const launchDateKeys = Object.keys(result.launchDates) + if (launchDateKeys.length > 0) { + const firstDate = result.launchDates[launchDateKeys[0]] + expect(typeof firstDate).toBe("string") + } + } + }) + }) + + test.describe("Apps & Community", () => { + test("getAppsData returns apps data or null", async () => { + const result = await dataLayer.getAppsData() + if (result !== null) { + expect(typeof result).toBe("object") + expect(Array.isArray(result)).toBe(false) + // Check that values are arrays + const categoryKeys = Object.keys(result) + if (categoryKeys.length > 0) { + const firstCategory = result[categoryKeys[0]] + expect(Array.isArray(firstCategory)).toBe(true) + if (firstCategory.length > 0) { + const firstApp = firstCategory[0] + expect(firstApp).toHaveProperty("name") + expect(firstApp).toHaveProperty("url") + expect(typeof firstApp.name).toBe("string") + expect(typeof firstApp.url).toBe("string") + } + } + } + }) + + test("getCommunityPicks returns array or null", async () => { + const result = await dataLayer.getCommunityPicks() + if (result !== null) { + expect(Array.isArray(result)).toBe(true) + if (result.length > 0) { + const firstPick = result[0] + expect(firstPick).toHaveProperty("name") + expect(firstPick).toHaveProperty("twitterURL") + expect(firstPick).toHaveProperty("twitterHandle") + expect(typeof firstPick.name).toBe("string") + expect(typeof firstPick.twitterURL).toBe("string") + } + } + }) + + test("getCalendarEvents returns calendar events or null", async () => { + const result = await dataLayer.getCalendarEvents() + if (result !== null) { + expect(result).toHaveProperty("pastEventData") + expect(result).toHaveProperty("upcomingEventData") + expect(Array.isArray(result.pastEventData)).toBe(true) + expect(Array.isArray(result.upcomingEventData)).toBe(true) + } + }) + }) + + test.describe("Content & RSS", () => { + test("getRSSData returns array of RSS items or null", async () => { + const result = await dataLayer.getRSSData() + if (result !== null) { + expect(Array.isArray(result)).toBe(true) + if (result.length > 0) { + const firstSource = result[0] + expect(Array.isArray(firstSource)).toBe(true) + if (firstSource.length > 0) { + const firstItem = firstSource[0] + expect(firstItem).toHaveProperty("title") + expect(firstItem).toHaveProperty("link") + expect(firstItem).toHaveProperty("pubDate") + expect(typeof firstItem.title).toBe("string") + expect(typeof firstItem.link).toBe("string") + } + } + } + }) + + test("getAttestantPosts returns array of RSS items or null", async () => { + const result = await dataLayer.getAttestantPosts() + if (result !== null) { + expect(Array.isArray(result)).toBe(true) + if (result.length > 0) { + const firstPost = result[0] + expect(firstPost).toHaveProperty("title") + expect(firstPost).toHaveProperty("link") + expect(firstPost).toHaveProperty("pubDate") + expect(typeof firstPost.title).toBe("string") + expect(typeof firstPost.link).toBe("string") + } + } + }) + }) + + test.describe("Staking & Beaconchain", () => { + test("getBeaconchainEpochData returns epoch data or null", async () => { + const result = await dataLayer.getBeaconchainEpochData() + if (result !== null) { + expect(result).toHaveProperty("totalEthStaked") + expect(result).toHaveProperty("validatorscount") + expect(result.totalEthStaked).toHaveProperty("value") + expect(result.validatorscount).toHaveProperty("value") + expect(typeof result.totalEthStaked.value).toBe("number") + expect(typeof result.validatorscount.value).toBe("number") + expect(result.totalEthStaked.value).toBeGreaterThan(0) + expect(result.validatorscount.value).toBeGreaterThan(0) + } + }) + + test("getBeaconchainEthstoreData returns MetricReturnData or null", async () => { + const result = await dataLayer.getBeaconchainEthstoreData() + if (result !== null) { + expect(result).toHaveProperty("value") + expect(typeof result.value).toBe("number") + expect(result.value).toBeGreaterThan(0) + } + }) + + test("getTotalEthStakedData returns MetricReturnData or null", async () => { + const result = await dataLayer.getTotalEthStakedData() + if (result !== null) { + expect(result).toHaveProperty("value") + expect(typeof result.value).toBe("number") + expect(result.value).toBeGreaterThan(0) + } + }) + }) + + test.describe("Stats & Analytics", () => { + test("getBlobscanStats returns blobscan stats or null", async () => { + const result = await dataLayer.getBlobscanStats() + if (result !== null) { + expect(result).toHaveProperty("totalBlobs") + expect(result).toHaveProperty("totalTransactions") + expect(result).toHaveProperty("totalBlocks") + expect(result).toHaveProperty("avgBlobFee") + expect(result).toHaveProperty("updatedAt") + expect(typeof result.totalBlobs).toBe("number") + expect(typeof result.totalTransactions).toBe("number") + expect(typeof result.avgBlobFee).toBe("number") + expect(typeof result.updatedAt).toBe("string") + } + }) + + test("getStablecoinsData returns data or null", async () => { + const result = await dataLayer.getStablecoinsData() + // StablecoinsData is unknown type, just check it's not null + expect(result === null || typeof result === "object").toBe(true) + }) + }) + + test.describe("GitHub Data", () => { + test("getGFIs returns array of GitHub issues or null", async () => { + const result = await dataLayer.getGFIs() + if (result !== null) { + expect(Array.isArray(result)).toBe(true) + if (result.length > 0) { + const firstIssue = result[0] + expect(firstIssue).toHaveProperty("title") + expect(firstIssue).toHaveProperty("html_url") + expect(firstIssue).toHaveProperty("number") + expect(typeof firstIssue.title).toBe("string") + expect(typeof firstIssue.html_url).toBe("string") + expect(typeof firstIssue.number).toBe("number") + } + } + }) + + test("getGitHistory returns array of commits or null", async () => { + const result = await dataLayer.getGitHistory() + if (result !== null) { + expect(Array.isArray(result)).toBe(true) + if (result.length > 0) { + const firstCommit = result[0] + expect(firstCommit).toHaveProperty("sha") + expect(firstCommit).toHaveProperty("commit") + expect(firstCommit.commit).toHaveProperty("message") + expect(typeof firstCommit.sha).toBe("string") + expect(typeof firstCommit.commit.message).toBe("string") + } + } + }) + + test("getGithubRepoData returns repo data or null", async () => { + const result = await dataLayer.getGithubRepoData() + if (result !== null) { + expect(typeof result).toBe("object") + expect(Array.isArray(result)).toBe(false) + const repoKeys = Object.keys(result) + if (repoKeys.length > 0) { + const firstRepo = result[repoKeys[0]] + expect(firstRepo).toHaveProperty("starCount") + expect(firstRepo).toHaveProperty("languages") + expect(typeof firstRepo.starCount).toBe("number") + expect(Array.isArray(firstRepo.languages)).toBe(true) + } + } + }) + }) +}) diff --git a/trigger.config.ts b/trigger.config.ts new file mode 100644 index 00000000000..d3f50fff72a --- /dev/null +++ b/trigger.config.ts @@ -0,0 +1,53 @@ +import * as Sentry from "@sentry/nextjs" +import { defineConfig } from "@trigger.dev/sdk/v3" + +/** + * Trigger.dev configuration for background jobs and scheduled tasks. + * See https://trigger.dev/docs for documentation. + */ +export default defineConfig({ + project: process.env.TRIGGER_PROJECT_ID || "", + runtime: "node", + logLevel: "log", + // Maximum duration for all tasks (5 minutes) + // See https://trigger.dev/docs/runs/max-duration + maxDuration: 300, + retries: { + enabledInDev: true, + default: { + maxAttempts: 1, + minTimeoutInMs: 1000, + maxTimeoutInMs: 10000, + factor: 2, + randomize: true, + }, + }, + // Directory containing Trigger.dev task definitions + dirs: ["./src/data-layer/trigger/tasks"], + // Initialize Sentry for error tracking in Trigger.dev tasks + // Uses the same Sentry configuration as the Next.js app + // Note: Trigger.dev already initializes OpenTelemetry, so we skip Sentry's OpenTelemetry setup + init: async () => { + const environment = process.env.NEXT_PUBLIC_CONTEXT || "development" + + Sentry.init({ + dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, + tracesSampleRate: 0.01, + debug: environment === "development", + environment, + enabled: environment === "production", + // Skip OpenTelemetry setup since Trigger.dev already initializes it + // This prevents "Attempted duplicate registration of API" errors + skipOpenTelemetrySetup: true, + } as Parameters[0]) + }, + // Automatically capture and report task failures to Sentry + onFailure: async ({ payload, error, ctx }) => { + Sentry.captureException(error, { + extra: { + payload, + ctx, + }, + }) + }, +})