diff --git a/package.json b/package.json index 67412f936974..5ea6ba19e17d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "graph-docs", "private": true, "version": "1.0.0", - "packageManager": "pnpm@10.22.0", + "packageManager": "pnpm@10.23.0", "scripts": { "dev": "turbo run dev", "build": "NODE_OPTIONS='--max-old-space-size=8192' turbo run build", diff --git a/packages/og-image/package.json b/packages/og-image/package.json index 3d46770f479c..e3bcd5140446 100644 --- a/packages/og-image/package.json +++ b/packages/og-image/package.json @@ -16,8 +16,8 @@ "yoga-wasm-web": "^0.3.3" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20251113.0", - "@types/react": "^18.3.26", + "@cloudflare/workers-types": "^4.20251120.0", + "@types/react": "^18.3.27", "jest-image-snapshot": "^6.5.1", "tsx": "4.20.4", "typescript": "^5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77807033a741..c9328c36cd1a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,11 +67,11 @@ importers: version: 0.3.3 devDependencies: '@cloudflare/workers-types': - specifier: ^4.20251113.0 - version: 4.20251113.0 + specifier: ^4.20251120.0 + version: 4.20251120.0 '@types/react': - specifier: ^18.3.26 - version: 18.3.26 + specifier: ^18.3.27 + version: 18.3.27 jest-image-snapshot: specifier: ^6.5.1 version: 6.5.1 @@ -86,7 +86,7 @@ importers: version: 2.1.9(@types/node@22.19.1)(jsdom@24.1.3) wrangler: specifier: ^3.114.15 - version: 3.114.15(@cloudflare/workers-types@4.20251113.0) + version: 3.114.15(@cloudflare/workers-types@4.20251120.0) packages/remark-lint-restrict-elements: dependencies: @@ -101,19 +101,19 @@ importers: dependencies: '@docsearch/react': specifier: ^3.9.0 - version: 3.9.0(@algolia/client-search@5.43.0)(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + version: 3.9.0(@algolia/client-search@5.43.0)(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) '@edgeandnode/common': specifier: ^7.0.4 version: 7.0.4(hardhat@2.27.0(typescript@5.9.3)) '@edgeandnode/gds': specifier: ^6.7.8 - version: 6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) + version: 6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) '@edgeandnode/go': specifier: ^10.3.12 - version: 10.3.12(6641a258c3859c1d574d99583aa5f0f3) + version: 10.3.12(e70f93497728a8960fcd273532040bed) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@18.3.26)(react@18.3.1) + version: 11.14.0(@types/react@18.3.27)(react@18.3.1) '@graphprotocol/contracts': specifier: ^7.3.0 version: 7.3.0 @@ -148,8 +148,8 @@ importers: specifier: ^13.2.0 version: 13.2.0 mixpanel-browser: - specifier: ^2.71.1 - version: 2.71.1 + specifier: ^2.72.0 + version: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) motion: specifier: ^12.23.24 version: 12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -164,7 +164,7 @@ importers: version: 4.2.3(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) nextra: specifier: ^3.3.1 - version: 3.3.1(@types/react@18.3.26)(next@14.2.33(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)(typescript@5.9.3) + version: 3.3.1(@types/react@18.3.27)(next@14.2.33(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)(typescript@5.9.3) openapi-types: specifier: ^12.1.3 version: 12.1.3 @@ -182,7 +182,7 @@ importers: version: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@18.3.26)(react@18.3.1) + version: 10.1.0(@types/react@18.3.27)(react@18.3.1) rehype-mdx-code-props: specifier: ^3.0.1 version: 3.0.1 @@ -194,7 +194,7 @@ importers: version: 4.0.1 theme-ui: specifier: ^0.17.2 - version: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) + version: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) unist-util-visit: specifier: ^5.0.0 version: 5.0.0 @@ -216,16 +216,16 @@ importers: version: 4.0.4 '@types/mixpanel-browser': specifier: ^2.66.0 - version: 2.66.0 + version: 2.66.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) '@types/node': specifier: ^22.19.1 version: 22.19.1 '@types/react': - specifier: ^18.3.26 - version: 18.3.26 + specifier: ^18.3.27 + version: 18.3.27 '@types/react-dom': specifier: ^18.3.7 - version: 18.3.7(@types/react@18.3.26) + version: 18.3.7(@types/react@18.3.27) '@types/vfile': specifier: ^4.0.0 version: 4.0.0 @@ -233,8 +233,8 @@ importers: specifier: ^10.4.22 version: 10.4.22(postcss@8.5.6) fast-xml-parser: - specifier: ^5.3.1 - version: 5.3.1 + specifier: ^5.3.2 + version: 5.3.2 postcss: specifier: ^8.5.6 version: 8.5.6 @@ -470,8 +470,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20251113.0': - resolution: {integrity: sha512-AMntYysoQzuc1aXLjkNLmFcuyxzCrZ/dfatnt2Lw4rf3aFtnM6RZKZ+zLhb+xjgjlrI7tzC86ay3gqYqKa2Qxg==} + '@cloudflare/workers-types@4.20251120.0': + resolution: {integrity: sha512-/uy0Oleot60ZS037I2mxR9NEft6eQYdknKBnM76W91I+7BKznzXKj2MtXMfSXTLsxyP+6MluYRNPrRCQDlk8kw==} '@corex/deepmerge@4.0.43': resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==} @@ -1626,6 +1626,12 @@ packages: '@mixpanel/rrdom@2.0.0-alpha.18.2': resolution: {integrity: sha512-vX/tbnS14ZzzatC7vOyvAm9tOLU8tof0BuppBlphzEx1YHTSw8DQiAmyAc0AmXidchLV0W+cUHV/WsehPLh2hQ==} + '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2': + resolution: {integrity: sha512-Xkwh2gSdLqHRkWSXv8CPVCPQj5L85KnWc5DZQ0CXNRFgm2hTl5/YP6zfUubVs2JVXZHGcSGU+g7JVO2WcFJyyg==} + peerDependencies: + '@mixpanel/rrweb': ^2.0.0-alpha.18 + '@mixpanel/rrweb-utils': ^2.0.0-alpha.18 + '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2': resolution: {integrity: sha512-2kSnjZZ3QZ9zOz/isOt8s54mXUUDgXk/u0eEi/rE0xBWDeuA0NHrBcqiMc+w4F/yWWUpo5F5zcuPeYpc6ufAsw==} @@ -3529,8 +3535,8 @@ packages: peerDependencies: '@types/react': ^18.0.0 - '@types/react@18.3.26': - resolution: {integrity: sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==} + '@types/react@18.3.27': + resolution: {integrity: sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==} '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} @@ -4406,6 +4412,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cytoscape-cose-bilkent@4.1.0: resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: @@ -5069,8 +5078,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-parser@5.3.1: - resolution: {integrity: sha512-jbNkWiv2Ec1A7wuuxk0br0d0aTMUtQ4IkL+l/i1r9PRf6pLXjDgsBsWwO+UyczmQlnehi4Tbc8/KIvxGQe+I/A==} + fast-xml-parser@5.3.2: + resolution: {integrity: sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==} hasBin: true fastq@1.19.1: @@ -6238,8 +6247,8 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mixpanel-browser@2.71.1: - resolution: {integrity: sha512-TKE+3PhhyPHgkgosAtESs6g++waMmm99G0f/jGLPVGTyY4Wi3BwmqsFaxrvm6rsKt4JY6L1vkdHhoMnfG8+juA==} + mixpanel-browser@2.72.0: + resolution: {integrity: sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA==} mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} @@ -8486,7 +8495,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-ui-components/react@1.0.0-alpha.7(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@base-ui-components/react@1.0.0-alpha.7(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 '@floating-ui/react': 0.27.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8497,7 +8506,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 '@braintree/sanitize-url@7.1.1': {} @@ -8545,7 +8554,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250718.0': optional: true - '@cloudflare/workers-types@4.20251113.0': {} + '@cloudflare/workers-types@4.20251120.0': {} '@corex/deepmerge@4.0.43': {} @@ -8575,14 +8584,14 @@ snapshots: '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.43.0)(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + '@docsearch/react@3.9.0(@algolia/client-search@5.43.0)(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': dependencies: '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3) '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) '@docsearch/css': 3.9.0 algoliasearch: 5.43.0 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) search-insights: 2.17.3 @@ -8643,36 +8652,36 @@ snapshots: - eslint-plugin-import-x - supports-color - '@edgeandnode/gds@6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1)': + '@edgeandnode/gds@6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1)': dependencies: - '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@bramus/style-observer': 2.0.2 '@edgeandnode/common': 7.0.4(hardhat@2.27.0(typescript@5.9.3)) - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@figma/code-connect': 1.3.8 '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@headlessui/react': 2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@phosphor-icons/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-label': 2.1.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slider': 1.3.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.4(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-switch': 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-label': 2.1.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.3.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.4(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-hookz/web': 25.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.18(tsx@4.20.4)(yaml@2.8.1)) '@tanem/react-nprogress': 5.0.56(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) - '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)))(react@18.3.1) '@web3icons/react': 4.0.35(react@18.3.1)(typescript@5.9.3) - '@xstate/react': 3.2.2(@types/react@18.3.26)(react@18.3.1)(xstate@4.38.3) + '@xstate/react': 3.2.2(@types/react@18.3.27)(react@18.3.1)(xstate@4.38.3) color: 5.0.2 dayjs: 1.11.19 escape-string-regexp: 5.0.0 @@ -8696,7 +8705,7 @@ snapshots: recharts: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) shiki: 3.15.0 tailwindcss: 3.4.18(tsx@4.20.4)(yaml@2.8.1) - theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) + theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) typy: 3.3.0 universal-cookie: 7.2.2 xstate: 4.38.3 @@ -8719,20 +8728,20 @@ snapshots: - utf-8-validate - yaml - '@edgeandnode/go@10.3.12(6641a258c3859c1d574d99583aa5f0f3)': + '@edgeandnode/go@10.3.12(e70f93497728a8960fcd273532040bed)': dependencies: '@edgeandnode/common': 7.0.4(hardhat@2.27.0(typescript@5.9.3)) '@edgeandnode/ens': 2.3.1(typescript@5.9.3)(viem@2.39.0(typescript@5.9.3)(zod@3.25.76)) - '@edgeandnode/gds': 6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) + '@edgeandnode/gds': 6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': 5.90.8(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) '@web3icons/react': 4.0.35(react@18.3.1)(typescript@5.9.3) escape-string-regexp: 5.0.0 graphql: 16.12.0 @@ -8741,7 +8750,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tailwindcss: 3.4.18(tsx@4.20.4)(yaml@2.8.1) - theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) + theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) optionalDependencies: next: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: @@ -8804,7 +8813,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)': + '@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 @@ -8816,7 +8825,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 transitivePeerDependencies: - supports-color @@ -9781,10 +9790,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@18.3.26)(react@18.3.1)': + '@mdx-js/react@3.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.26 + '@types/react': 18.3.27 react: 18.3.1 '@mermaid-js/parser@0.6.3': @@ -9795,6 +9804,11 @@ snapshots: dependencies: '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2)': + dependencies: + '@mixpanel/rrweb': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-utils': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2': dependencies: postcss: 8.5.6 @@ -10090,479 +10104,479 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accordion@1.2.12(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-context@1.1.2(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-context@1.1.2(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.3.1) + react-remove-scroll: 2.7.1(@types/react@18.3.27)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-direction@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-direction@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-id@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-id@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-label@2.1.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-label@2.1.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.3.1) + react-remove-scroll: 2.7.1(@types/react@18.3.27)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.3.1) + react-remove-scroll: 2.7.1(@types/react@18.3.27)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.27)(react@18.3.1) '@radix-ui/rect': 1.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-portal@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-slot': 1.2.4(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-slider@1.3.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-slot@1.2.3(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-slot@1.2.3(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-slot@1.2.4(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-slot@1.2.4(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-switch@1.2.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-switch@1.2.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-toast@1.2.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toast@1.2.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.26)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.27)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: '@radix-ui/rect': 1.1.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-use-size@1.1.1(@types/react@18.3.26)(react@18.3.1)': + '@radix-ui/react-use-size@1.1.1(@types/react@18.3.27)(react@18.3.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.27)(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 - '@types/react-dom': 18.3.7(@types/react@18.3.26) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) '@radix-ui/rect@1.1.1': {} @@ -11648,7 +11662,7 @@ snapshots: '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 @@ -11903,57 +11917,57 @@ snapshots: npm-to-yarn: 3.0.1 unist-util-visit: 5.0.0 - '@theme-ui/color-modes@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1)': + '@theme-ui/color-modes@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) - '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) deepmerge: 4.3.1 react: 18.3.1 - '@theme-ui/components@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@theme-ui/theme-provider@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@theme-ui/components@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/theme-provider@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@styled-system/color': 5.1.2 '@styled-system/should-forward-prop': 5.1.5 '@styled-system/space': 5.1.2 - '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) - '@theme-ui/theme-provider': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) + '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/theme-provider': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) '@types/styled-system': 5.1.24 react: 18.3.1 - '@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1)': + '@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) deepmerge: 4.3.1 react: 18.3.1 - '@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))': + '@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))': dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) csstype: 3.1.3 - '@theme-ui/global@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1)': + '@theme-ui/global@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) - '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) react: 18.3.1 - '@theme-ui/match-media@0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)))(react@18.3.1)': + '@theme-ui/match-media@0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)))(react@18.3.1)': dependencies: - '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) + '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) react: 18.3.1 - '@theme-ui/theme-provider@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1)': + '@theme-ui/theme-provider@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) - '@theme-ui/color-modes': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@theme-ui/color-modes': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) react: 18.3.1 '@ts-morph/common@0.28.1': @@ -12126,9 +12140,11 @@ snapshots: '@types/mdx@2.0.13': {} - '@types/mixpanel-browser@2.66.0': + '@types/mixpanel-browser@2.66.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)': dependencies: - mixpanel-browser: 2.71.1 + mixpanel-browser: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) + transitivePeerDependencies: + - '@mixpanel/rrweb-utils' '@types/ms@2.1.0': {} @@ -12146,14 +12162,14 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@18.3.7(@types/react@18.3.26)': + '@types/react-dom@18.3.7(@types/react@18.3.27)': dependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - '@types/react@18.3.26': + '@types/react@18.3.27': dependencies: '@types/prop-types': 15.7.15 - csstype: 3.1.3 + csstype: 3.2.3 '@types/semver@7.7.1': {} @@ -12443,10 +12459,10 @@ snapshots: '@xstate/fsm@1.6.5': {} - '@xstate/react@3.2.2(@types/react@18.3.26)(react@18.3.1)(xstate@4.38.3)': + '@xstate/react@3.2.2(@types/react@18.3.27)(react@18.3.1)(xstate@4.38.3)': dependencies: react: 18.3.1 - use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.26)(react@18.3.1) + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.27)(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) optionalDependencies: xstate: 4.38.3 @@ -12460,6 +12476,11 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 + abitype@1.1.1(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + abitype@1.1.1(typescript@5.9.3)(zod@4.1.12): optionalDependencies: typescript: 5.9.3 @@ -13032,6 +13053,8 @@ snapshots: csstype@3.1.3: {} + csstype@3.2.3: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): dependencies: cose-base: 1.0.3 @@ -14003,7 +14026,7 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-parser@5.3.1: + fast-xml-parser@5.3.2: dependencies: strnum: 2.1.1 @@ -15626,9 +15649,12 @@ snapshots: mitt@3.0.1: {} - mixpanel-browser@2.71.1: + mixpanel-browser@2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2): dependencies: '@mixpanel/rrweb': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-plugin-console-record': 2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2) + transitivePeerDependencies: + - '@mixpanel/rrweb-utils' mj-context-menu@0.6.1: {} @@ -15740,12 +15766,12 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra@3.3.1(@types/react@18.3.26)(next@14.2.33(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)(typescript@5.9.3): + nextra@3.3.1(@types/react@18.3.27)(next@14.2.33(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)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 '@headlessui/react': 2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/mdx': 3.1.1 - '@mdx-js/react': 3.1.1(@types/react@18.3.26)(react@18.3.1) + '@mdx-js/react': 3.1.1(@types/react@18.3.27)(react@18.3.1) '@napi-rs/simple-git': 0.1.22 '@shikijs/twoslash': 1.29.2(typescript@5.9.3) '@theguild/remark-mermaid': 0.1.3(react@18.3.1) @@ -15960,7 +15986,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.25.76) + abitype: 1.1.1(typescript@5.9.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -16313,11 +16339,11 @@ snapshots: react: 18.3.1 react-is: 18.3.1 - react-markdown@10.1.0(@types/react@18.3.26)(react@18.3.1): + react-markdown@10.1.0(@types/react@18.3.27)(react@18.3.1): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 18.3.26 + '@types/react': 18.3.27 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 @@ -16336,24 +16362,24 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll-bar@2.3.8(@types/react@18.3.26)(react@18.3.1): + react-remove-scroll-bar@2.3.8(@types/react@18.3.27)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.3(@types/react@18.3.26)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.27)(react@18.3.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - react-remove-scroll@2.7.1(@types/react@18.3.26)(react@18.3.1): + react-remove-scroll@2.7.1(@types/react@18.3.27)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.26)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.26)(react@18.3.1) + react-remove-scroll-bar: 2.3.8(@types/react@18.3.27)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.27)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.26)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.26)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.27)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.27)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 react-smooth@4.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -16363,13 +16389,13 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-style-singleton@2.2.3(@types/react@18.3.26)(react@18.3.1): + react-style-singleton@2.2.3(@types/react@18.3.27)(react@18.3.1): dependencies: get-nonce: 1.0.1 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -17269,15 +17295,15 @@ snapshots: text-table@0.2.0: {} - theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1): + theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1): dependencies: - '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1) - '@theme-ui/color-modes': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/components': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@theme-ui/theme-provider@0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)) - '@theme-ui/global': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) - '@theme-ui/theme-provider': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@theme-ui/color-modes': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/components': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/theme-provider@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) + '@theme-ui/global': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@theme-ui/theme-provider': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) react: 18.3.1 thenify-all@1.6.0: @@ -17698,26 +17724,26 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-callback-ref@1.3.3(@types/react@18.3.26)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@18.3.27)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - use-isomorphic-layout-effect@1.2.1(@types/react@18.3.26)(react@18.3.1): + use-isomorphic-layout-effect@1.2.1(@types/react@18.3.27)(react@18.3.1): dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 - use-sidecar@1.1.3(@types/react@18.3.26)(react@18.3.1): + use-sidecar@1.1.3(@types/react@18.3.27)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.26 + '@types/react': 18.3.27 use-sync-external-store@1.6.0(react@18.3.1): dependencies: @@ -17997,7 +18023,7 @@ snapshots: workerpool@6.5.1: {} - wrangler@3.114.15(@cloudflare/workers-types@4.20251113.0): + wrangler@3.114.15(@cloudflare/workers-types@4.20251120.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0) @@ -18010,7 +18036,7 @@ snapshots: unenv: 2.0.0-rc.14 workerd: 1.20250718.0 optionalDependencies: - '@cloudflare/workers-types': 4.20251113.0 + '@cloudflare/workers-types': 4.20251120.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: diff --git a/website/package.json b/website/package.json index 6379eca254a1..e578836b6949 100644 --- a/website/package.json +++ b/website/package.json @@ -33,7 +33,7 @@ "lodash": "^4.17.21", "mdast-util-mdx-jsx": "^3.2.0", "mdast-util-to-hast": "^13.2.0", - "mixpanel-browser": "^2.71.1", + "mixpanel-browser": "^2.72.0", "motion": "^12.23.24", "next": "^14.2.33", "next-seo": "^6.8.0", @@ -59,11 +59,11 @@ "@types/mdast": "^4.0.4", "@types/mixpanel-browser": "^2.66.0", "@types/node": "^22.19.1", - "@types/react": "^18.3.26", + "@types/react": "^18.3.27", "@types/react-dom": "^18.3.7", "@types/vfile": "^4.0.0", "autoprefixer": "^10.4.22", - "fast-xml-parser": "^5.3.1", + "fast-xml-parser": "^5.3.2", "postcss": "^8.5.6", "tailwindcss": "^3.4.18", "tsup": "^8.5.1", diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt index 521fbd9014d6..d8d2c2233666 100644 --- a/website/route-lockfile.txt +++ b/website/route-lockfile.txt @@ -3,10 +3,6 @@ /ar/404/ /ar/about/ /ar/ai-suite/ai-introduction/ -/ar/ai-suite/graph-assistant/faq/ -/ar/ai-suite/graph-assistant/how-to-guide/ -/ar/ai-suite/graph-assistant/introduction/ -/ar/ai-suite/graph-assistant/quick-start/ /ar/ai-suite/subgraph-mcp/claude/ /ar/ai-suite/subgraph-mcp/cline/ /ar/ai-suite/subgraph-mcp/cursor/ @@ -20,6 +16,9 @@ /ar/archived/arbitrum/l2-transfer-tools-guide/ /ar/archived/sunrise/ /ar/contracts/ +/ar/graph-horizon/migration-guide/ +/ar/graph-horizon/overview/ +/ar/graph-horizon/what-changes/ /ar/hypergraph/faq/ /ar/hypergraph/overview/ /ar/indexing/chain-integration-overview/ @@ -242,7 +241,6 @@ /ar/supported-networks/viction/ /ar/supported-networks/wax-testnet/ /ar/supported-networks/wax/ -/ar/supported-networks/xai/ /ar/supported-networks/xlayer-mainnet/ /ar/supported-networks/xlayer-sepolia/ /ar/supported-networks/zetachain/ @@ -279,12 +277,14 @@ /ar/token-api/svm-dexs/swaps/ /ar/token-api/svm-tokens/balances-native/ /ar/token-api/svm-tokens/balances/ +/ar/token-api/svm-tokens/holders/ /ar/token-api/svm-tokens/owner/ /ar/token-api/svm-tokens/tokens/ /ar/token-api/svm-tokens/transfers/ /ar/token-api/tvm-dexs/dexes/ /ar/token-api/tvm-dexs/pools-ohlc/ /ar/token-api/tvm-dexs/swaps/ +/ar/token-api/tvm-tokens/tokens/ /ar/token-api/tvm-tokens/transfers-native/ /ar/token-api/tvm-tokens/transfers/ /ar/token-api/upgrade-to-v1/ @@ -292,10 +292,6 @@ /cs/404/ /cs/about/ /cs/ai-suite/ai-introduction/ -/cs/ai-suite/graph-assistant/faq/ -/cs/ai-suite/graph-assistant/how-to-guide/ -/cs/ai-suite/graph-assistant/introduction/ -/cs/ai-suite/graph-assistant/quick-start/ /cs/ai-suite/subgraph-mcp/claude/ /cs/ai-suite/subgraph-mcp/cline/ /cs/ai-suite/subgraph-mcp/cursor/ @@ -309,6 +305,9 @@ /cs/archived/arbitrum/l2-transfer-tools-guide/ /cs/archived/sunrise/ /cs/contracts/ +/cs/graph-horizon/migration-guide/ +/cs/graph-horizon/overview/ +/cs/graph-horizon/what-changes/ /cs/hypergraph/faq/ /cs/hypergraph/overview/ /cs/indexing/chain-integration-overview/ @@ -531,7 +530,6 @@ /cs/supported-networks/viction/ /cs/supported-networks/wax-testnet/ /cs/supported-networks/wax/ -/cs/supported-networks/xai/ /cs/supported-networks/xlayer-mainnet/ /cs/supported-networks/xlayer-sepolia/ /cs/supported-networks/zetachain/ @@ -568,12 +566,14 @@ /cs/token-api/svm-dexs/swaps/ /cs/token-api/svm-tokens/balances-native/ /cs/token-api/svm-tokens/balances/ +/cs/token-api/svm-tokens/holders/ /cs/token-api/svm-tokens/owner/ /cs/token-api/svm-tokens/tokens/ /cs/token-api/svm-tokens/transfers/ /cs/token-api/tvm-dexs/dexes/ /cs/token-api/tvm-dexs/pools-ohlc/ /cs/token-api/tvm-dexs/swaps/ +/cs/token-api/tvm-tokens/tokens/ /cs/token-api/tvm-tokens/transfers-native/ /cs/token-api/tvm-tokens/transfers/ /cs/token-api/upgrade-to-v1/ @@ -581,10 +581,6 @@ /de/404/ /de/about/ /de/ai-suite/ai-introduction/ -/de/ai-suite/graph-assistant/faq/ -/de/ai-suite/graph-assistant/how-to-guide/ -/de/ai-suite/graph-assistant/introduction/ -/de/ai-suite/graph-assistant/quick-start/ /de/ai-suite/subgraph-mcp/claude/ /de/ai-suite/subgraph-mcp/cline/ /de/ai-suite/subgraph-mcp/cursor/ @@ -598,6 +594,9 @@ /de/archived/arbitrum/l2-transfer-tools-guide/ /de/archived/sunrise/ /de/contracts/ +/de/graph-horizon/migration-guide/ +/de/graph-horizon/overview/ +/de/graph-horizon/what-changes/ /de/hypergraph/faq/ /de/hypergraph/overview/ /de/indexing/chain-integration-overview/ @@ -820,7 +819,6 @@ /de/supported-networks/viction/ /de/supported-networks/wax-testnet/ /de/supported-networks/wax/ -/de/supported-networks/xai/ /de/supported-networks/xlayer-mainnet/ /de/supported-networks/xlayer-sepolia/ /de/supported-networks/zetachain/ @@ -857,12 +855,14 @@ /de/token-api/svm-dexs/swaps/ /de/token-api/svm-tokens/balances-native/ /de/token-api/svm-tokens/balances/ +/de/token-api/svm-tokens/holders/ /de/token-api/svm-tokens/owner/ /de/token-api/svm-tokens/tokens/ /de/token-api/svm-tokens/transfers/ /de/token-api/tvm-dexs/dexes/ /de/token-api/tvm-dexs/pools-ohlc/ /de/token-api/tvm-dexs/swaps/ +/de/token-api/tvm-tokens/tokens/ /de/token-api/tvm-tokens/transfers-native/ /de/token-api/tvm-tokens/transfers/ /de/token-api/upgrade-to-v1/ @@ -870,10 +870,6 @@ /en/404/ /en/about/ /en/ai-suite/ai-introduction/ -/en/ai-suite/graph-assistant/faq/ -/en/ai-suite/graph-assistant/how-to-guide/ -/en/ai-suite/graph-assistant/introduction/ -/en/ai-suite/graph-assistant/quick-start/ /en/ai-suite/subgraph-mcp/claude/ /en/ai-suite/subgraph-mcp/cline/ /en/ai-suite/subgraph-mcp/cursor/ @@ -887,6 +883,9 @@ /en/archived/arbitrum/l2-transfer-tools-guide/ /en/archived/sunrise/ /en/contracts/ +/en/graph-horizon/migration-guide/ +/en/graph-horizon/overview/ +/en/graph-horizon/what-changes/ /en/hypergraph/faq/ /en/hypergraph/overview/ /en/indexing/chain-integration-overview/ @@ -1109,7 +1108,6 @@ /en/supported-networks/viction/ /en/supported-networks/wax-testnet/ /en/supported-networks/wax/ -/en/supported-networks/xai/ /en/supported-networks/xlayer-mainnet/ /en/supported-networks/xlayer-sepolia/ /en/supported-networks/zetachain/ @@ -1146,12 +1144,14 @@ /en/token-api/svm-dexs/swaps/ /en/token-api/svm-tokens/balances-native/ /en/token-api/svm-tokens/balances/ +/en/token-api/svm-tokens/holders/ /en/token-api/svm-tokens/owner/ /en/token-api/svm-tokens/tokens/ /en/token-api/svm-tokens/transfers/ /en/token-api/tvm-dexs/dexes/ /en/token-api/tvm-dexs/pools-ohlc/ /en/token-api/tvm-dexs/swaps/ +/en/token-api/tvm-tokens/tokens/ /en/token-api/tvm-tokens/transfers-native/ /en/token-api/tvm-tokens/transfers/ /en/token-api/upgrade-to-v1/ @@ -1159,10 +1159,6 @@ /es/404/ /es/about/ /es/ai-suite/ai-introduction/ -/es/ai-suite/graph-assistant/faq/ -/es/ai-suite/graph-assistant/how-to-guide/ -/es/ai-suite/graph-assistant/introduction/ -/es/ai-suite/graph-assistant/quick-start/ /es/ai-suite/subgraph-mcp/claude/ /es/ai-suite/subgraph-mcp/cline/ /es/ai-suite/subgraph-mcp/cursor/ @@ -1176,6 +1172,9 @@ /es/archived/arbitrum/l2-transfer-tools-guide/ /es/archived/sunrise/ /es/contracts/ +/es/graph-horizon/migration-guide/ +/es/graph-horizon/overview/ +/es/graph-horizon/what-changes/ /es/hypergraph/faq/ /es/hypergraph/overview/ /es/indexing/chain-integration-overview/ @@ -1398,7 +1397,6 @@ /es/supported-networks/viction/ /es/supported-networks/wax-testnet/ /es/supported-networks/wax/ -/es/supported-networks/xai/ /es/supported-networks/xlayer-mainnet/ /es/supported-networks/xlayer-sepolia/ /es/supported-networks/zetachain/ @@ -1435,12 +1433,14 @@ /es/token-api/svm-dexs/swaps/ /es/token-api/svm-tokens/balances-native/ /es/token-api/svm-tokens/balances/ +/es/token-api/svm-tokens/holders/ /es/token-api/svm-tokens/owner/ /es/token-api/svm-tokens/tokens/ /es/token-api/svm-tokens/transfers/ /es/token-api/tvm-dexs/dexes/ /es/token-api/tvm-dexs/pools-ohlc/ /es/token-api/tvm-dexs/swaps/ +/es/token-api/tvm-tokens/tokens/ /es/token-api/tvm-tokens/transfers-native/ /es/token-api/tvm-tokens/transfers/ /es/token-api/upgrade-to-v1/ @@ -1448,10 +1448,6 @@ /fr/404/ /fr/about/ /fr/ai-suite/ai-introduction/ -/fr/ai-suite/graph-assistant/faq/ -/fr/ai-suite/graph-assistant/how-to-guide/ -/fr/ai-suite/graph-assistant/introduction/ -/fr/ai-suite/graph-assistant/quick-start/ /fr/ai-suite/subgraph-mcp/claude/ /fr/ai-suite/subgraph-mcp/cline/ /fr/ai-suite/subgraph-mcp/cursor/ @@ -1465,6 +1461,9 @@ /fr/archived/arbitrum/l2-transfer-tools-guide/ /fr/archived/sunrise/ /fr/contracts/ +/fr/graph-horizon/migration-guide/ +/fr/graph-horizon/overview/ +/fr/graph-horizon/what-changes/ /fr/hypergraph/faq/ /fr/hypergraph/overview/ /fr/indexing/chain-integration-overview/ @@ -1687,7 +1686,6 @@ /fr/supported-networks/viction/ /fr/supported-networks/wax-testnet/ /fr/supported-networks/wax/ -/fr/supported-networks/xai/ /fr/supported-networks/xlayer-mainnet/ /fr/supported-networks/xlayer-sepolia/ /fr/supported-networks/zetachain/ @@ -1724,12 +1722,14 @@ /fr/token-api/svm-dexs/swaps/ /fr/token-api/svm-tokens/balances-native/ /fr/token-api/svm-tokens/balances/ +/fr/token-api/svm-tokens/holders/ /fr/token-api/svm-tokens/owner/ /fr/token-api/svm-tokens/tokens/ /fr/token-api/svm-tokens/transfers/ /fr/token-api/tvm-dexs/dexes/ /fr/token-api/tvm-dexs/pools-ohlc/ /fr/token-api/tvm-dexs/swaps/ +/fr/token-api/tvm-tokens/tokens/ /fr/token-api/tvm-tokens/transfers-native/ /fr/token-api/tvm-tokens/transfers/ /fr/token-api/upgrade-to-v1/ @@ -1737,10 +1737,6 @@ /hi/404/ /hi/about/ /hi/ai-suite/ai-introduction/ -/hi/ai-suite/graph-assistant/faq/ -/hi/ai-suite/graph-assistant/how-to-guide/ -/hi/ai-suite/graph-assistant/introduction/ -/hi/ai-suite/graph-assistant/quick-start/ /hi/ai-suite/subgraph-mcp/claude/ /hi/ai-suite/subgraph-mcp/cline/ /hi/ai-suite/subgraph-mcp/cursor/ @@ -1754,6 +1750,9 @@ /hi/archived/arbitrum/l2-transfer-tools-guide/ /hi/archived/sunrise/ /hi/contracts/ +/hi/graph-horizon/migration-guide/ +/hi/graph-horizon/overview/ +/hi/graph-horizon/what-changes/ /hi/hypergraph/faq/ /hi/hypergraph/overview/ /hi/indexing/chain-integration-overview/ @@ -1976,7 +1975,6 @@ /hi/supported-networks/viction/ /hi/supported-networks/wax-testnet/ /hi/supported-networks/wax/ -/hi/supported-networks/xai/ /hi/supported-networks/xlayer-mainnet/ /hi/supported-networks/xlayer-sepolia/ /hi/supported-networks/zetachain/ @@ -2013,12 +2011,14 @@ /hi/token-api/svm-dexs/swaps/ /hi/token-api/svm-tokens/balances-native/ /hi/token-api/svm-tokens/balances/ +/hi/token-api/svm-tokens/holders/ /hi/token-api/svm-tokens/owner/ /hi/token-api/svm-tokens/tokens/ /hi/token-api/svm-tokens/transfers/ /hi/token-api/tvm-dexs/dexes/ /hi/token-api/tvm-dexs/pools-ohlc/ /hi/token-api/tvm-dexs/swaps/ +/hi/token-api/tvm-tokens/tokens/ /hi/token-api/tvm-tokens/transfers-native/ /hi/token-api/tvm-tokens/transfers/ /hi/token-api/upgrade-to-v1/ @@ -2026,10 +2026,6 @@ /it/404/ /it/about/ /it/ai-suite/ai-introduction/ -/it/ai-suite/graph-assistant/faq/ -/it/ai-suite/graph-assistant/how-to-guide/ -/it/ai-suite/graph-assistant/introduction/ -/it/ai-suite/graph-assistant/quick-start/ /it/ai-suite/subgraph-mcp/claude/ /it/ai-suite/subgraph-mcp/cline/ /it/ai-suite/subgraph-mcp/cursor/ @@ -2043,6 +2039,9 @@ /it/archived/arbitrum/l2-transfer-tools-guide/ /it/archived/sunrise/ /it/contracts/ +/it/graph-horizon/migration-guide/ +/it/graph-horizon/overview/ +/it/graph-horizon/what-changes/ /it/hypergraph/faq/ /it/hypergraph/overview/ /it/indexing/chain-integration-overview/ @@ -2265,7 +2264,6 @@ /it/supported-networks/viction/ /it/supported-networks/wax-testnet/ /it/supported-networks/wax/ -/it/supported-networks/xai/ /it/supported-networks/xlayer-mainnet/ /it/supported-networks/xlayer-sepolia/ /it/supported-networks/zetachain/ @@ -2302,12 +2300,14 @@ /it/token-api/svm-dexs/swaps/ /it/token-api/svm-tokens/balances-native/ /it/token-api/svm-tokens/balances/ +/it/token-api/svm-tokens/holders/ /it/token-api/svm-tokens/owner/ /it/token-api/svm-tokens/tokens/ /it/token-api/svm-tokens/transfers/ /it/token-api/tvm-dexs/dexes/ /it/token-api/tvm-dexs/pools-ohlc/ /it/token-api/tvm-dexs/swaps/ +/it/token-api/tvm-tokens/tokens/ /it/token-api/tvm-tokens/transfers-native/ /it/token-api/tvm-tokens/transfers/ /it/token-api/upgrade-to-v1/ @@ -2315,10 +2315,6 @@ /ja/404/ /ja/about/ /ja/ai-suite/ai-introduction/ -/ja/ai-suite/graph-assistant/faq/ -/ja/ai-suite/graph-assistant/how-to-guide/ -/ja/ai-suite/graph-assistant/introduction/ -/ja/ai-suite/graph-assistant/quick-start/ /ja/ai-suite/subgraph-mcp/claude/ /ja/ai-suite/subgraph-mcp/cline/ /ja/ai-suite/subgraph-mcp/cursor/ @@ -2332,6 +2328,9 @@ /ja/archived/arbitrum/l2-transfer-tools-guide/ /ja/archived/sunrise/ /ja/contracts/ +/ja/graph-horizon/migration-guide/ +/ja/graph-horizon/overview/ +/ja/graph-horizon/what-changes/ /ja/hypergraph/faq/ /ja/hypergraph/overview/ /ja/indexing/chain-integration-overview/ @@ -2554,7 +2553,6 @@ /ja/supported-networks/viction/ /ja/supported-networks/wax-testnet/ /ja/supported-networks/wax/ -/ja/supported-networks/xai/ /ja/supported-networks/xlayer-mainnet/ /ja/supported-networks/xlayer-sepolia/ /ja/supported-networks/zetachain/ @@ -2591,21 +2589,19 @@ /ja/token-api/svm-dexs/swaps/ /ja/token-api/svm-tokens/balances-native/ /ja/token-api/svm-tokens/balances/ +/ja/token-api/svm-tokens/holders/ /ja/token-api/svm-tokens/owner/ /ja/token-api/svm-tokens/tokens/ /ja/token-api/svm-tokens/transfers/ /ja/token-api/tvm-dexs/dexes/ /ja/token-api/tvm-dexs/pools-ohlc/ /ja/token-api/tvm-dexs/swaps/ +/ja/token-api/tvm-tokens/tokens/ /ja/token-api/tvm-tokens/transfers-native/ /ja/token-api/tvm-tokens/transfers/ /ja/token-api/upgrade-to-v1/ /ko/about/ /ko/ai-suite/ai-introduction/ -/ko/ai-suite/graph-assistant/faq/ -/ko/ai-suite/graph-assistant/how-to-guide/ -/ko/ai-suite/graph-assistant/introduction/ -/ko/ai-suite/graph-assistant/quick-start/ /ko/ai-suite/subgraph-mcp/claude/ /ko/ai-suite/subgraph-mcp/cline/ /ko/ai-suite/subgraph-mcp/cursor/ @@ -2619,6 +2615,9 @@ /ko/archived/arbitrum/l2-transfer-tools-guide/ /ko/archived/sunrise/ /ko/contracts/ +/ko/graph-horizon/migration-guide/ +/ko/graph-horizon/overview/ +/ko/graph-horizon/what-changes/ /ko/hypergraph/faq/ /ko/hypergraph/overview/ /ko/indexing/chain-integration-overview/ @@ -2728,12 +2727,14 @@ /ko/token-api/svm-dexs/swaps/ /ko/token-api/svm-tokens/balances-native/ /ko/token-api/svm-tokens/balances/ +/ko/token-api/svm-tokens/holders/ /ko/token-api/svm-tokens/owner/ /ko/token-api/svm-tokens/tokens/ /ko/token-api/svm-tokens/transfers/ /ko/token-api/tvm-dexs/dexes/ /ko/token-api/tvm-dexs/pools-ohlc/ /ko/token-api/tvm-dexs/swaps/ +/ko/token-api/tvm-tokens/tokens/ /ko/token-api/tvm-tokens/transfers-native/ /ko/token-api/tvm-tokens/transfers/ /ko/token-api/upgrade-to-v1/ @@ -2741,10 +2742,6 @@ /mr/404/ /mr/about/ /mr/ai-suite/ai-introduction/ -/mr/ai-suite/graph-assistant/faq/ -/mr/ai-suite/graph-assistant/how-to-guide/ -/mr/ai-suite/graph-assistant/introduction/ -/mr/ai-suite/graph-assistant/quick-start/ /mr/ai-suite/subgraph-mcp/claude/ /mr/ai-suite/subgraph-mcp/cline/ /mr/ai-suite/subgraph-mcp/cursor/ @@ -2758,6 +2755,9 @@ /mr/archived/arbitrum/l2-transfer-tools-guide/ /mr/archived/sunrise/ /mr/contracts/ +/mr/graph-horizon/migration-guide/ +/mr/graph-horizon/overview/ +/mr/graph-horizon/what-changes/ /mr/hypergraph/faq/ /mr/hypergraph/overview/ /mr/indexing/chain-integration-overview/ @@ -2980,7 +2980,6 @@ /mr/supported-networks/viction/ /mr/supported-networks/wax-testnet/ /mr/supported-networks/wax/ -/mr/supported-networks/xai/ /mr/supported-networks/xlayer-mainnet/ /mr/supported-networks/xlayer-sepolia/ /mr/supported-networks/zetachain/ @@ -3017,21 +3016,19 @@ /mr/token-api/svm-dexs/swaps/ /mr/token-api/svm-tokens/balances-native/ /mr/token-api/svm-tokens/balances/ +/mr/token-api/svm-tokens/holders/ /mr/token-api/svm-tokens/owner/ /mr/token-api/svm-tokens/tokens/ /mr/token-api/svm-tokens/transfers/ /mr/token-api/tvm-dexs/dexes/ /mr/token-api/tvm-dexs/pools-ohlc/ /mr/token-api/tvm-dexs/swaps/ +/mr/token-api/tvm-tokens/tokens/ /mr/token-api/tvm-tokens/transfers-native/ /mr/token-api/tvm-tokens/transfers/ /mr/token-api/upgrade-to-v1/ /nl/about/ /nl/ai-suite/ai-introduction/ -/nl/ai-suite/graph-assistant/faq/ -/nl/ai-suite/graph-assistant/how-to-guide/ -/nl/ai-suite/graph-assistant/introduction/ -/nl/ai-suite/graph-assistant/quick-start/ /nl/ai-suite/subgraph-mcp/claude/ /nl/ai-suite/subgraph-mcp/cline/ /nl/ai-suite/subgraph-mcp/cursor/ @@ -3045,6 +3042,9 @@ /nl/archived/arbitrum/l2-transfer-tools-guide/ /nl/archived/sunrise/ /nl/contracts/ +/nl/graph-horizon/migration-guide/ +/nl/graph-horizon/overview/ +/nl/graph-horizon/what-changes/ /nl/hypergraph/faq/ /nl/hypergraph/overview/ /nl/indexing/chain-integration-overview/ @@ -3154,21 +3154,19 @@ /nl/token-api/svm-dexs/swaps/ /nl/token-api/svm-tokens/balances-native/ /nl/token-api/svm-tokens/balances/ +/nl/token-api/svm-tokens/holders/ /nl/token-api/svm-tokens/owner/ /nl/token-api/svm-tokens/tokens/ /nl/token-api/svm-tokens/transfers/ /nl/token-api/tvm-dexs/dexes/ /nl/token-api/tvm-dexs/pools-ohlc/ /nl/token-api/tvm-dexs/swaps/ +/nl/token-api/tvm-tokens/tokens/ /nl/token-api/tvm-tokens/transfers-native/ /nl/token-api/tvm-tokens/transfers/ /nl/token-api/upgrade-to-v1/ /pl/about/ /pl/ai-suite/ai-introduction/ -/pl/ai-suite/graph-assistant/faq/ -/pl/ai-suite/graph-assistant/how-to-guide/ -/pl/ai-suite/graph-assistant/introduction/ -/pl/ai-suite/graph-assistant/quick-start/ /pl/ai-suite/subgraph-mcp/claude/ /pl/ai-suite/subgraph-mcp/cline/ /pl/ai-suite/subgraph-mcp/cursor/ @@ -3182,6 +3180,9 @@ /pl/archived/arbitrum/l2-transfer-tools-guide/ /pl/archived/sunrise/ /pl/contracts/ +/pl/graph-horizon/migration-guide/ +/pl/graph-horizon/overview/ +/pl/graph-horizon/what-changes/ /pl/hypergraph/faq/ /pl/hypergraph/overview/ /pl/indexing/chain-integration-overview/ @@ -3291,12 +3292,14 @@ /pl/token-api/svm-dexs/swaps/ /pl/token-api/svm-tokens/balances-native/ /pl/token-api/svm-tokens/balances/ +/pl/token-api/svm-tokens/holders/ /pl/token-api/svm-tokens/owner/ /pl/token-api/svm-tokens/tokens/ /pl/token-api/svm-tokens/transfers/ /pl/token-api/tvm-dexs/dexes/ /pl/token-api/tvm-dexs/pools-ohlc/ /pl/token-api/tvm-dexs/swaps/ +/pl/token-api/tvm-tokens/tokens/ /pl/token-api/tvm-tokens/transfers-native/ /pl/token-api/tvm-tokens/transfers/ /pl/token-api/upgrade-to-v1/ @@ -3304,10 +3307,6 @@ /pt/404/ /pt/about/ /pt/ai-suite/ai-introduction/ -/pt/ai-suite/graph-assistant/faq/ -/pt/ai-suite/graph-assistant/how-to-guide/ -/pt/ai-suite/graph-assistant/introduction/ -/pt/ai-suite/graph-assistant/quick-start/ /pt/ai-suite/subgraph-mcp/claude/ /pt/ai-suite/subgraph-mcp/cline/ /pt/ai-suite/subgraph-mcp/cursor/ @@ -3321,6 +3320,9 @@ /pt/archived/arbitrum/l2-transfer-tools-guide/ /pt/archived/sunrise/ /pt/contracts/ +/pt/graph-horizon/migration-guide/ +/pt/graph-horizon/overview/ +/pt/graph-horizon/what-changes/ /pt/hypergraph/faq/ /pt/hypergraph/overview/ /pt/indexing/chain-integration-overview/ @@ -3543,7 +3545,6 @@ /pt/supported-networks/viction/ /pt/supported-networks/wax-testnet/ /pt/supported-networks/wax/ -/pt/supported-networks/xai/ /pt/supported-networks/xlayer-mainnet/ /pt/supported-networks/xlayer-sepolia/ /pt/supported-networks/zetachain/ @@ -3580,21 +3581,19 @@ /pt/token-api/svm-dexs/swaps/ /pt/token-api/svm-tokens/balances-native/ /pt/token-api/svm-tokens/balances/ +/pt/token-api/svm-tokens/holders/ /pt/token-api/svm-tokens/owner/ /pt/token-api/svm-tokens/tokens/ /pt/token-api/svm-tokens/transfers/ /pt/token-api/tvm-dexs/dexes/ /pt/token-api/tvm-dexs/pools-ohlc/ /pt/token-api/tvm-dexs/swaps/ +/pt/token-api/tvm-tokens/tokens/ /pt/token-api/tvm-tokens/transfers-native/ /pt/token-api/tvm-tokens/transfers/ /pt/token-api/upgrade-to-v1/ /ro/about/ /ro/ai-suite/ai-introduction/ -/ro/ai-suite/graph-assistant/faq/ -/ro/ai-suite/graph-assistant/how-to-guide/ -/ro/ai-suite/graph-assistant/introduction/ -/ro/ai-suite/graph-assistant/quick-start/ /ro/ai-suite/subgraph-mcp/claude/ /ro/ai-suite/subgraph-mcp/cline/ /ro/ai-suite/subgraph-mcp/cursor/ @@ -3608,6 +3607,9 @@ /ro/archived/arbitrum/l2-transfer-tools-guide/ /ro/archived/sunrise/ /ro/contracts/ +/ro/graph-horizon/migration-guide/ +/ro/graph-horizon/overview/ +/ro/graph-horizon/what-changes/ /ro/hypergraph/faq/ /ro/hypergraph/overview/ /ro/indexing/chain-integration-overview/ @@ -3717,12 +3719,14 @@ /ro/token-api/svm-dexs/swaps/ /ro/token-api/svm-tokens/balances-native/ /ro/token-api/svm-tokens/balances/ +/ro/token-api/svm-tokens/holders/ /ro/token-api/svm-tokens/owner/ /ro/token-api/svm-tokens/tokens/ /ro/token-api/svm-tokens/transfers/ /ro/token-api/tvm-dexs/dexes/ /ro/token-api/tvm-dexs/pools-ohlc/ /ro/token-api/tvm-dexs/swaps/ +/ro/token-api/tvm-tokens/tokens/ /ro/token-api/tvm-tokens/transfers-native/ /ro/token-api/tvm-tokens/transfers/ /ro/token-api/upgrade-to-v1/ @@ -3730,10 +3734,6 @@ /ru/404/ /ru/about/ /ru/ai-suite/ai-introduction/ -/ru/ai-suite/graph-assistant/faq/ -/ru/ai-suite/graph-assistant/how-to-guide/ -/ru/ai-suite/graph-assistant/introduction/ -/ru/ai-suite/graph-assistant/quick-start/ /ru/ai-suite/subgraph-mcp/claude/ /ru/ai-suite/subgraph-mcp/cline/ /ru/ai-suite/subgraph-mcp/cursor/ @@ -3747,6 +3747,9 @@ /ru/archived/arbitrum/l2-transfer-tools-guide/ /ru/archived/sunrise/ /ru/contracts/ +/ru/graph-horizon/migration-guide/ +/ru/graph-horizon/overview/ +/ru/graph-horizon/what-changes/ /ru/hypergraph/faq/ /ru/hypergraph/overview/ /ru/indexing/chain-integration-overview/ @@ -3969,7 +3972,6 @@ /ru/supported-networks/viction/ /ru/supported-networks/wax-testnet/ /ru/supported-networks/wax/ -/ru/supported-networks/xai/ /ru/supported-networks/xlayer-mainnet/ /ru/supported-networks/xlayer-sepolia/ /ru/supported-networks/zetachain/ @@ -4006,12 +4008,14 @@ /ru/token-api/svm-dexs/swaps/ /ru/token-api/svm-tokens/balances-native/ /ru/token-api/svm-tokens/balances/ +/ru/token-api/svm-tokens/holders/ /ru/token-api/svm-tokens/owner/ /ru/token-api/svm-tokens/tokens/ /ru/token-api/svm-tokens/transfers/ /ru/token-api/tvm-dexs/dexes/ /ru/token-api/tvm-dexs/pools-ohlc/ /ru/token-api/tvm-dexs/swaps/ +/ru/token-api/tvm-tokens/tokens/ /ru/token-api/tvm-tokens/transfers-native/ /ru/token-api/tvm-tokens/transfers/ /ru/token-api/upgrade-to-v1/ @@ -4019,10 +4023,6 @@ /sv/404/ /sv/about/ /sv/ai-suite/ai-introduction/ -/sv/ai-suite/graph-assistant/faq/ -/sv/ai-suite/graph-assistant/how-to-guide/ -/sv/ai-suite/graph-assistant/introduction/ -/sv/ai-suite/graph-assistant/quick-start/ /sv/ai-suite/subgraph-mcp/claude/ /sv/ai-suite/subgraph-mcp/cline/ /sv/ai-suite/subgraph-mcp/cursor/ @@ -4036,6 +4036,9 @@ /sv/archived/arbitrum/l2-transfer-tools-guide/ /sv/archived/sunrise/ /sv/contracts/ +/sv/graph-horizon/migration-guide/ +/sv/graph-horizon/overview/ +/sv/graph-horizon/what-changes/ /sv/hypergraph/faq/ /sv/hypergraph/overview/ /sv/indexing/chain-integration-overview/ @@ -4258,15 +4261,9 @@ /sv/supported-networks/viction/ /sv/supported-networks/wax-testnet/ /sv/supported-networks/wax/ -/sv/supported-networks/xai/ /sv/supported-networks/xlayer-mainnet/ /sv/supported-networks/xlayer-sepolia/ /sv/supported-networks/zetachain/ -/sv/supported-networks/zilliqa-testnet/ -/sv/supported-networks/zilliqa/ -/sv/supported-networks/zksync-era-sepolia/ -/sv/supported-networks/zksync-era/ -/sv/supported-networks/zora/ /sv/token-api/endpoint-pricing/ /sv/token-api/evm-dexs/dexes/ /sv/token-api/evm-dexs/pools-ohlc/ @@ -4295,12 +4292,14 @@ /sv/token-api/svm-dexs/swaps/ /sv/token-api/svm-tokens/balances-native/ /sv/token-api/svm-tokens/balances/ +/sv/token-api/svm-tokens/holders/ /sv/token-api/svm-tokens/owner/ /sv/token-api/svm-tokens/tokens/ /sv/token-api/svm-tokens/transfers/ /sv/token-api/tvm-dexs/dexes/ /sv/token-api/tvm-dexs/pools-ohlc/ /sv/token-api/tvm-dexs/swaps/ +/sv/token-api/tvm-tokens/tokens/ /sv/token-api/tvm-tokens/transfers-native/ /sv/token-api/tvm-tokens/transfers/ /sv/token-api/upgrade-to-v1/ @@ -4308,10 +4307,6 @@ /tr/404/ /tr/about/ /tr/ai-suite/ai-introduction/ -/tr/ai-suite/graph-assistant/faq/ -/tr/ai-suite/graph-assistant/how-to-guide/ -/tr/ai-suite/graph-assistant/introduction/ -/tr/ai-suite/graph-assistant/quick-start/ /tr/ai-suite/subgraph-mcp/claude/ /tr/ai-suite/subgraph-mcp/cline/ /tr/ai-suite/subgraph-mcp/cursor/ @@ -4325,6 +4320,9 @@ /tr/archived/arbitrum/l2-transfer-tools-guide/ /tr/archived/sunrise/ /tr/contracts/ +/tr/graph-horizon/migration-guide/ +/tr/graph-horizon/overview/ +/tr/graph-horizon/what-changes/ /tr/hypergraph/faq/ /tr/hypergraph/overview/ /tr/indexing/chain-integration-overview/ @@ -4406,10 +4404,6 @@ /tr/substreams/publishing/ /tr/substreams/quick-start/ /tr/supported-networks/ -/tr/supported-networks/abstract-testnet/ -/tr/supported-networks/abstract/ -/tr/supported-networks/apechain-curtis/ -/tr/supported-networks/apechain/ /tr/token-api/endpoint-pricing/ /tr/token-api/evm-dexs/dexes/ /tr/token-api/evm-dexs/pools-ohlc/ @@ -4438,21 +4432,19 @@ /tr/token-api/svm-dexs/swaps/ /tr/token-api/svm-tokens/balances-native/ /tr/token-api/svm-tokens/balances/ +/tr/token-api/svm-tokens/holders/ /tr/token-api/svm-tokens/owner/ /tr/token-api/svm-tokens/tokens/ /tr/token-api/svm-tokens/transfers/ /tr/token-api/tvm-dexs/dexes/ /tr/token-api/tvm-dexs/pools-ohlc/ /tr/token-api/tvm-dexs/swaps/ +/tr/token-api/tvm-tokens/tokens/ /tr/token-api/tvm-tokens/transfers-native/ /tr/token-api/tvm-tokens/transfers/ /tr/token-api/upgrade-to-v1/ /uk/about/ /uk/ai-suite/ai-introduction/ -/uk/ai-suite/graph-assistant/faq/ -/uk/ai-suite/graph-assistant/how-to-guide/ -/uk/ai-suite/graph-assistant/introduction/ -/uk/ai-suite/graph-assistant/quick-start/ /uk/ai-suite/subgraph-mcp/claude/ /uk/ai-suite/subgraph-mcp/cline/ /uk/ai-suite/subgraph-mcp/cursor/ @@ -4466,6 +4458,9 @@ /uk/archived/arbitrum/l2-transfer-tools-guide/ /uk/archived/sunrise/ /uk/contracts/ +/uk/graph-horizon/migration-guide/ +/uk/graph-horizon/overview/ +/uk/graph-horizon/what-changes/ /uk/hypergraph/faq/ /uk/hypergraph/overview/ /uk/indexing/chain-integration-overview/ @@ -4575,12 +4570,14 @@ /uk/token-api/svm-dexs/swaps/ /uk/token-api/svm-tokens/balances-native/ /uk/token-api/svm-tokens/balances/ +/uk/token-api/svm-tokens/holders/ /uk/token-api/svm-tokens/owner/ /uk/token-api/svm-tokens/tokens/ /uk/token-api/svm-tokens/transfers/ /uk/token-api/tvm-dexs/dexes/ /uk/token-api/tvm-dexs/pools-ohlc/ /uk/token-api/tvm-dexs/swaps/ +/uk/token-api/tvm-tokens/tokens/ /uk/token-api/tvm-tokens/transfers-native/ /uk/token-api/tvm-tokens/transfers/ /uk/token-api/upgrade-to-v1/ @@ -4588,10 +4585,6 @@ /ur/404/ /ur/about/ /ur/ai-suite/ai-introduction/ -/ur/ai-suite/graph-assistant/faq/ -/ur/ai-suite/graph-assistant/how-to-guide/ -/ur/ai-suite/graph-assistant/introduction/ -/ur/ai-suite/graph-assistant/quick-start/ /ur/ai-suite/subgraph-mcp/claude/ /ur/ai-suite/subgraph-mcp/cline/ /ur/ai-suite/subgraph-mcp/cursor/ @@ -4605,6 +4598,9 @@ /ur/archived/arbitrum/l2-transfer-tools-guide/ /ur/archived/sunrise/ /ur/contracts/ +/ur/graph-horizon/migration-guide/ +/ur/graph-horizon/overview/ +/ur/graph-horizon/what-changes/ /ur/hypergraph/faq/ /ur/hypergraph/overview/ /ur/indexing/chain-integration-overview/ @@ -4714,21 +4710,19 @@ /ur/token-api/svm-dexs/swaps/ /ur/token-api/svm-tokens/balances-native/ /ur/token-api/svm-tokens/balances/ +/ur/token-api/svm-tokens/holders/ /ur/token-api/svm-tokens/owner/ /ur/token-api/svm-tokens/tokens/ /ur/token-api/svm-tokens/transfers/ /ur/token-api/tvm-dexs/dexes/ /ur/token-api/tvm-dexs/pools-ohlc/ /ur/token-api/tvm-dexs/swaps/ +/ur/token-api/tvm-tokens/tokens/ /ur/token-api/tvm-tokens/transfers-native/ /ur/token-api/tvm-tokens/transfers/ /ur/token-api/upgrade-to-v1/ /vi/about/ /vi/ai-suite/ai-introduction/ -/vi/ai-suite/graph-assistant/faq/ -/vi/ai-suite/graph-assistant/how-to-guide/ -/vi/ai-suite/graph-assistant/introduction/ -/vi/ai-suite/graph-assistant/quick-start/ /vi/ai-suite/subgraph-mcp/claude/ /vi/ai-suite/subgraph-mcp/cline/ /vi/ai-suite/subgraph-mcp/cursor/ @@ -4742,6 +4736,9 @@ /vi/archived/arbitrum/l2-transfer-tools-guide/ /vi/archived/sunrise/ /vi/contracts/ +/vi/graph-horizon/migration-guide/ +/vi/graph-horizon/overview/ +/vi/graph-horizon/what-changes/ /vi/hypergraph/faq/ /vi/hypergraph/overview/ /vi/indexing/chain-integration-overview/ @@ -4851,12 +4848,14 @@ /vi/token-api/svm-dexs/swaps/ /vi/token-api/svm-tokens/balances-native/ /vi/token-api/svm-tokens/balances/ +/vi/token-api/svm-tokens/holders/ /vi/token-api/svm-tokens/owner/ /vi/token-api/svm-tokens/tokens/ /vi/token-api/svm-tokens/transfers/ /vi/token-api/tvm-dexs/dexes/ /vi/token-api/tvm-dexs/pools-ohlc/ /vi/token-api/tvm-dexs/swaps/ +/vi/token-api/tvm-tokens/tokens/ /vi/token-api/tvm-tokens/transfers-native/ /vi/token-api/tvm-tokens/transfers/ /vi/token-api/upgrade-to-v1/ @@ -4864,10 +4863,6 @@ /zh/404/ /zh/about/ /zh/ai-suite/ai-introduction/ -/zh/ai-suite/graph-assistant/faq/ -/zh/ai-suite/graph-assistant/how-to-guide/ -/zh/ai-suite/graph-assistant/introduction/ -/zh/ai-suite/graph-assistant/quick-start/ /zh/ai-suite/subgraph-mcp/claude/ /zh/ai-suite/subgraph-mcp/cline/ /zh/ai-suite/subgraph-mcp/cursor/ @@ -4881,6 +4876,9 @@ /zh/archived/arbitrum/l2-transfer-tools-guide/ /zh/archived/sunrise/ /zh/contracts/ +/zh/graph-horizon/migration-guide/ +/zh/graph-horizon/overview/ +/zh/graph-horizon/what-changes/ /zh/hypergraph/faq/ /zh/hypergraph/overview/ /zh/indexing/chain-integration-overview/ @@ -4990,12 +4988,14 @@ /zh/token-api/svm-dexs/swaps/ /zh/token-api/svm-tokens/balances-native/ /zh/token-api/svm-tokens/balances/ +/zh/token-api/svm-tokens/holders/ /zh/token-api/svm-tokens/owner/ /zh/token-api/svm-tokens/tokens/ /zh/token-api/svm-tokens/transfers/ /zh/token-api/tvm-dexs/dexes/ /zh/token-api/tvm-dexs/pools-ohlc/ /zh/token-api/tvm-dexs/swaps/ +/zh/token-api/tvm-tokens/tokens/ /zh/token-api/tvm-tokens/transfers-native/ /zh/token-api/tvm-tokens/transfers/ /zh/token-api/upgrade-to-v1/ diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json index 0c4f3efb6d14..e2a890b9c3e6 100644 --- a/website/src/openApi/tokenApi.json +++ b/website/src/openApi/tokenApi.json @@ -3,7 +3,7 @@ "info": { "title": "Token API (Beta)", "description": "Power your apps & AI agents with real-time token data.", - "version": "3.5.5+2c95704 (2025-11-13)" + "version": "3.6.0+da03655 (2025-11-20)" }, "servers": [ { @@ -597,7 +597,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-10-13" + "default": "2025-10-20" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -2967,7 +2967,7 @@ "total_transfers": { "type": "number" }, - "network_id": { + "network": { "description": "The Graph Network ID for EVM networks https://thegraph.com/networks", "example": "mainnet", "type": "string", @@ -3003,7 +3003,7 @@ "total_supply", "total_unique_supply", "total_transfers", - "network_id", + "network", "spam_status" ] } @@ -8163,7 +8163,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-10-13" + "default": "2025-10-20" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -9215,8 +9215,7 @@ "circulating_supply", "total_supply", "holders", - "network", - "icon" + "network" ] } }, @@ -11713,11 +11712,17 @@ "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "type": "string", "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" ] }, "program_name": { @@ -12160,11 +12165,11 @@ ] } }, - "/v1/svm/owner": { + "/v1/svm/holders": { "get": { - "operationId": "getV1SvmOwner", - "summary": "Account Owner Lookup", - "description": "Returns owner address of an associated token account (ATA) with closure status.", + "operationId": "getV1SvmHolders", + "summary": "Token Holders", + "description": "Returns top token holders ranked by balance.", "tags": [ "SVM Tokens" ], @@ -12196,18 +12201,79 @@ "last_update_timestamp": { "type": "number" }, - "account": { + "owner": { "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + "description": "Filter by address", + "example": "So11111111111111111111111111111111111111112" }, - "owner": { + "mint": { "type": "string", - "description": "Filter by owner address", - "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" }, - "is_closed": { - "type": "boolean" + "program_id": { + "description": "Filter by program ID", + "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "type": "string", + "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", + "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", + "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" + ] + }, + "amount": { + "type": "string" + }, + "value": { + "type": "number" + }, + "decimals": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "uri": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, "network": { "description": "The Graph Network ID for SVM networks https://thegraph.com/networks", @@ -12222,9 +12288,15 @@ "last_update", "last_update_block_num", "last_update_timestamp", - "account", "owner", - "is_closed", + "mint", + "program_id", + "amount", + "value", + "decimals", + "name", + "symbol", + "uri", "network" ] } @@ -12287,12 +12359,18 @@ "value": { "data": [ { - "last_update": "2025-07-14 17:17:19", - "last_update_block_num": 353288878, - "last_update_timestamp": 1752513439, - "account": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", - "owner": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9", - "is_closed": false, + "last_update": "2025-09-17 20:06:47", + "last_update_block_num": 367491952, + "last_update_timestamp": 1758139607, + "owner": "7AN6avKCJPMkXkW8kPwMuHmaWvJeHH69e8rKpLf9rdfk", + "mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", + "program_id": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "amount": "365461857133582111", + "value": 365461857133.5821, + "decimals": 6, + "name": "Pump", + "symbol": "PUMP", + "uri": "https://ipfs.io/ipfs/bafkreibcglldkfdekdkxgumlveoe6qv3pbiceypkwtli33clbzul7leo4m", "network": "solana" } ] @@ -12641,31 +12719,13 @@ }, { "in": "query", - "name": "account", + "name": "mint", "schema": { "type": "string", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", - "anyOf": [ - { - "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" - } - } - ] + "example": "So11111111111111111111111111111111111111112" }, "required": true, - "description": "Filter by token account address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + "description": "Filter by mint address" }, { "in": "query", @@ -12692,13 +12752,13 @@ ] } }, - "/v1/svm/pools/ohlc": { + "/v1/svm/owner": { "get": { - "operationId": "getV1SvmPoolsOhlc", - "summary": "Pool OHLCV Data", - "description": "Provides pricing data in the Open/High/Low/Close/Volume (OHCLV) format for DEX pools.", + "operationId": "getV1SvmOwner", + "summary": "Account Owner Lookup", + "description": "Returns owner address of an associated token account (ATA) with closure status.", "tags": [ - "SVM DEXs" + "SVM Tokens" ], "security": [ { @@ -12718,87 +12778,46 @@ "items": { "type": "object", "properties": { - "datetime": { + "last_update": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, - "amm": { - "type": "string", - "description": "Filter by AMM address", - "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" + "last_update_block_num": { + "type": "number" }, - "amm_pool": { + "last_update_timestamp": { + "type": "number" + }, + "account": { "type": "string", - "description": "Filter by AMM pool address", - "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" }, - "token0": { + "owner": { "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + "description": "Filter by owner address", + "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" }, - "token0_decimals": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] + "is_closed": { + "type": "boolean" }, - "token1": { + "network": { + "description": "The Graph Network ID for SVM networks https://thegraph.com/networks", + "example": "solana", "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - }, - "token1_decimals": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } + "enum": [ + "solana" ] - }, - "open": { - "type": "number" - }, - "high": { - "type": "number" - }, - "low": { - "type": "number" - }, - "close": { - "type": "number" - }, - "volume": { - "type": "number" - }, - "uaw": { - "type": "number" - }, - "transactions": { - "type": "number" } }, "required": [ - "datetime", - "amm", - "amm_pool", - "token0", - "token0_decimals", - "token1", - "token1_decimals", - "open", - "high", - "low", - "close", - "volume", - "uaw", - "transactions" + "last_update", + "last_update_block_num", + "last_update_timestamp", + "account", + "owner", + "is_closed", + "network" ] } }, @@ -12860,20 +12879,13 @@ "value": { "data": [ { - "datetime": "2025-10-16 00:00:00", - "amm": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", - "amm_pool": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J", - "token0": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump", - "token0_decimals": 6, - "token1": "So11111111111111111111111111111111111111112", - "token1_decimals": 9, - "open": 0.0020385820805914096, - "high": 0.002037622484039942, - "low": 0.002029088299722426, - "close": 0.0020285665581652053, - "volume": 0.14567917800000002, - "uaw": 8, - "transactions": 8 + "last_update": "2025-07-14 17:17:19", + "last_update_block_num": 353288878, + "last_update_timestamp": 1752513439, + "account": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", + "owner": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9", + "is_closed": false, + "network": "solana" } ] } @@ -13221,46 +13233,31 @@ }, { "in": "query", - "name": "amm_pool", + "name": "account", "schema": { "type": "string", - "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" - }, - "required": true, - "description": "Filter by AMM pool address" - }, - { - "in": "query", - "name": "interval", - "schema": { - "type": "string", - "enum": [ - "1h", - "4h", - "1d", - "1w" - ], - "default": "1d" - }, - "description": "The interval* for which to aggregate price data (hourly, 4-hours, daily or weekly).
*Plan restricted." - }, - { - "in": "query", - "name": "start_time", - "schema": { - "type": "string", - "default": "2025-10-13" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, - { - "in": "query", - "name": "end_time", - "schema": { - "type": "string", - "default": "2050-01-01" + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", + "anyOf": [ + { + "type": "string", + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + } + } + ] }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + "required": true, + "description": "Filter by token account address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, { "in": "query", @@ -13287,11 +13284,11 @@ ] } }, - "/v1/svm/pools": { + "/v1/svm/pools/ohlc": { "get": { - "operationId": "getV1SvmPools", - "summary": "Liquidity Pools", - "description": "Returns AMM pool information from Solana DEX protocols with transaction counts.", + "operationId": "getV1SvmPoolsOhlc", + "summary": "Pool OHLCV Data", + "description": "Provides pricing data in the Open/High/Low/Close/Volume (OHCLV) format for DEX pools.", "tags": [ "SVM DEXs" ], @@ -13313,66 +13310,87 @@ "items": { "type": "object", "properties": { - "program_id": { - "description": "Filter by program ID", - "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "datetime": { "type": "string", - "enum": [ - "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", - "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", - "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" - ] - }, - "program_name": { - "type": "string" + "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, "amm": { "type": "string", "description": "Filter by AMM address", "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" }, - "amm_name": { - "type": "string" - }, "amm_pool": { "type": "string", "description": "Filter by AMM pool address", "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" }, - "input_mint": { + "token0": { "type": "string", "description": "Filter by mint address", "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" }, - "output_mint": { + "token0_decimals": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "token1": { "type": "string", "description": "Filter by mint address", "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" }, - "transactions": { + "token1_decimals": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "open": { "type": "number" }, - "network": { - "description": "The Graph Network ID for SVM networks https://thegraph.com/networks", - "example": "solana", - "type": "string", - "enum": [ - "solana" - ] + "high": { + "type": "number" + }, + "low": { + "type": "number" + }, + "close": { + "type": "number" + }, + "volume": { + "type": "number" + }, + "uaw": { + "type": "number" + }, + "transactions": { + "type": "number" } }, "required": [ - "program_id", - "program_name", + "datetime", "amm", - "amm_name", "amm_pool", - "input_mint", - "output_mint", - "transactions", - "network" + "token0", + "token0_decimals", + "token1", + "token1_decimals", + "open", + "high", + "low", + "close", + "volume", + "uaw", + "transactions" ] } }, @@ -13434,15 +13452,20 @@ "value": { "data": [ { - "program_id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "program_name": "Jupiter Aggregator v6", - "amm": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "amm_name": "Raydium Liquidity Pool V4", - "amm_pool": "", - "input_mint": "So11111111111111111111111111111111111111112", - "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "transactions": 6583671, - "network": "solana" + "datetime": "2025-10-16 00:00:00", + "amm": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", + "amm_pool": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J", + "token0": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump", + "token0_decimals": 6, + "token1": "So11111111111111111111111111111111111111112", + "token1_decimals": 9, + "open": 0.0020385820805914096, + "high": 0.002037622484039942, + "low": 0.002029088299722426, + "close": 0.0020285665581652053, + "volume": 0.14567917800000002, + "uaw": 8, + "transactions": 8 } ] } @@ -13790,151 +13813,46 @@ }, { "in": "query", - "name": "amm", + "name": "amm_pool", "schema": { "type": "string", - "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "anyOf": [ - { - "type": "string", - "description": "Filter by AMM address", - "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by AMM address", - "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" - } - } - ] + "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" }, - "description": "Filter by AMM address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + "required": true, + "description": "Filter by AMM pool address" }, { "in": "query", - "name": "amm_pool", + "name": "interval", "schema": { "type": "string", - "example": "", - "anyOf": [ - { - "type": "string", - "description": "Filter by AMM pool address", - "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by AMM pool address", - "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" - } - } - ] + "enum": [ + "1h", + "4h", + "1d", + "1w" + ], + "default": "1d" }, - "description": "Filter by AMM pool address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + "description": "The interval* for which to aggregate price data (hourly, 4-hours, daily or weekly).
*Plan restricted." }, { "in": "query", - "name": "input_mint", + "name": "start_time", "schema": { "type": "string", - "example": "So11111111111111111111111111111111111111112", - "anyOf": [ - { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - } - } - ] + "default": "2025-10-20" }, - "description": "Filter by mint address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, { "in": "query", - "name": "output_mint", + "name": "end_time", "schema": { "type": "string", - "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "anyOf": [ - { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - } - } - ] - }, - "description": "Filter by mint address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "program_id", - "schema": { - "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "anyOf": [ - { - "description": "Filter by program ID", - "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "type": "string", - "enum": [ - "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", - "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", - "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" - ] - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "description": "Filter by program ID", - "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "type": "string", - "enum": [ - "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", - "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", - "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" - ] - } - } - ] + "default": "2050-01-01" }, - "description": "Filter by program ID
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, { "in": "query", @@ -13961,11 +13879,11 @@ ] } }, - "/v1/svm/swaps": { + "/v1/svm/pools": { "get": { - "operationId": "getV1SvmSwaps", - "summary": "Swap Events", - "description": "Returns AMM swap events from Solana DEXs with input/output tokens and amounts.", + "operationId": "getV1SvmPools", + "summary": "Liquidity Pools", + "description": "Returns AMM pool information from Solana DEX protocols with transaction counts.", "tags": [ "SVM DEXs" ], @@ -13987,47 +13905,27 @@ "items": { "type": "object", "properties": { - "block_num": { - "type": "number" - }, - "datetime": { - "type": "string", - "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" - }, - "timestamp": { - "type": "number" - }, - "signature": { - "type": "string", - "description": "Filter by transaction signature", - "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" - }, - "transaction_index": { - "type": "number" - }, - "instruction_index": { - "type": "number" - }, "program_id": { "description": "Filter by program ID", "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "type": "string", "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" ] }, "program_name": { "type": "string" }, - "user": { - "type": "string", - "description": "Filter by address", - "example": "So11111111111111111111111111111111111111112" - }, "amm": { "type": "string", "description": "Filter by AMM address", @@ -14046,15 +13944,12 @@ "description": "Filter by mint address", "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" }, - "input_amount": { - "type": "number" - }, "output_mint": { "type": "string", "description": "Filter by mint address", "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" }, - "output_amount": { + "transactions": { "type": "number" }, "network": { @@ -14067,22 +13962,14 @@ } }, "required": [ - "block_num", - "datetime", - "timestamp", - "signature", - "transaction_index", - "instruction_index", "program_id", "program_name", - "user", "amm", "amm_name", "amm_pool", "input_mint", - "input_amount", "output_mint", - "output_amount", + "transactions", "network" ] } @@ -14145,21 +14032,14 @@ "value": { "data": [ { - "block_num": 373763118, - "datetime": "2025-10-16 14:03:09", - "timestamp": 1760623389, - "signature": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA", - "transaction_index": 8, - "instruction_index": 1, "program_id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "program_name": "Jupiter Aggregator v6", "amm": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "amm_name": "Raydium Liquidity Pool V4", "amm_pool": "", - "user": "5MGfsuYNRhbuN6x1M6WaR3721dSDGtXpcsHxNsgkjsXC", - "input_mint": "HmrzeZapM1EygFc4tBJUXwWTzv5Ahy8axLSAadBx51sw", - "input_amount": 49572355581648, + "input_mint": "So11111111111111111111111111111111111111112", "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "output_amount": 936671, + "transactions": 6583671, "network": "solana" } ] @@ -14506,33 +14386,6 @@ "required": true, "description": "The Graph Network ID for SVM networks https://thegraph.com/networks" }, - { - "in": "query", - "name": "signature", - "schema": { - "type": "string", - "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA", - "anyOf": [ - { - "type": "string", - "description": "Filter by transaction signature", - "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by transaction signature", - "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" - } - } - ] - }, - "description": "Filter by transaction signature
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, { "in": "query", "name": "amm", @@ -14587,39 +14440,12 @@ }, "description": "Filter by AMM pool address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, - { - "in": "query", - "name": "user", - "schema": { - "type": "string", - "example": "5MGfsuYNRhbuN6x1M6WaR3721dSDGtXpcsHxNsgkjsXC", - "anyOf": [ - { - "type": "string", - "description": "Filter by address", - "example": "So11111111111111111111111111111111111111112" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by address", - "example": "So11111111111111111111111111111111111111112" - } - } - ] - }, - "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, { "in": "query", "name": "input_mint", "schema": { "type": "string", - "example": "HmrzeZapM1EygFc4tBJUXwWTzv5Ahy8axLSAadBx51sw", + "example": "So11111111111111111111111111111111111111112", "anyOf": [ { "type": "string", @@ -14679,11 +14505,17 @@ "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "type": "string", "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" ] }, { @@ -14696,11 +14528,17 @@ "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "type": "string", "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" ] } } @@ -14708,46 +14546,6 @@ }, "description": "Filter by program ID
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, - { - "in": "query", - "name": "start_time", - "schema": { - "type": "string", - "default": "2020-01-01" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, - { - "in": "query", - "name": "end_time", - "schema": { - "type": "string", - "default": "2050-01-01" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, - { - "in": "query", - "name": "start_block", - "schema": { - "default": 0, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "description": "Filter by block number" - }, - { - "in": "query", - "name": "end_block", - "schema": { - "default": 9999999999, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "description": "Filter by block number" - }, { "in": "query", "name": "limit", @@ -14773,13 +14571,13 @@ ] } }, - "/v1/svm/tokens": { + "/v1/svm/swaps": { "get": { - "operationId": "getV1SvmTokens", - "summary": "Token Metadata", - "description": "Provides SVM token contract metadata.", + "operationId": "getV1SvmSwaps", + "summary": "Swap Events", + "description": "Returns AMM swap events from Solana DEXs with input/output tokens and amounts.", "tags": [ - "SVM Tokens" + "SVM DEXs" ], "security": [ { @@ -14799,85 +14597,104 @@ "items": { "type": "object", "properties": { - "last_update": { + "block_num": { + "type": "number" + }, + "datetime": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, - "last_update_block_num": { + "timestamp": { "type": "number" }, - "last_update_timestamp": { + "signature": { + "type": "string", + "description": "Filter by transaction signature", + "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" + }, + "transaction_index": { + "type": "number" + }, + "instruction_index": { "type": "number" }, "program_id": { - "description": "Filter by SPL token program ID", - "example": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "description": "Filter by program ID", + "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "type": "string", "enum": [ - "11111111111111111111111111111111", - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", + "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", + "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" ] }, - "mint": { + "program_name": { + "type": "string" + }, + "amm": { "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + "description": "Filter by AMM address", + "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" }, - "decimals": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] + "amm_pool": { + "type": "string", + "description": "Filter by AMM pool address", + "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "user": { + "type": "string", + "description": "Filter by address", + "example": "So11111111111111111111111111111111111111112" }, - "symbol": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "input_mint": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" }, - "uri": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "input_amount": { + "type": "number" + }, + "output_mint": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, + "output_amount": { + "type": "number" }, "network": { - "type": "string" + "description": "The Graph Network ID for SVM networks https://thegraph.com/networks", + "example": "solana", + "type": "string", + "enum": [ + "solana" + ] } }, "required": [ - "last_update", - "last_update_block_num", - "last_update_timestamp", + "block_num", + "datetime", + "timestamp", + "signature", + "transaction_index", + "instruction_index", "program_id", - "mint", - "decimals", - "name", - "symbol", - "uri", + "program_name", + "amm", + "amm_pool", + "user", + "input_mint", + "input_amount", + "output_mint", + "output_amount", "network" ] } @@ -14940,15 +14757,21 @@ "value": { "data": [ { - "last_update": "2025-10-16 10:34:46", - "last_update_block_num": 373731565, - "last_update_timestamp": 1760610886, - "program_id": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", - "decimals": 6, - "name": "Pump", - "symbol": "PUMP", - "uri": "https://ipfs.io/ipfs/bafkreibcglldkfdekdkxgumlveoe6qv3pbiceypkwtli33clbzul7leo4m", + "block_num": 373763118, + "datetime": "2025-10-16 14:03:09", + "timestamp": 1760623389, + "signature": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA", + "transaction_index": 8, + "instruction_index": 1, + "program_id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "program_name": "Jupiter Aggregator v6", + "amm": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "amm_pool": "", + "user": "5MGfsuYNRhbuN6x1M6WaR3721dSDGtXpcsHxNsgkjsXC", + "input_mint": "HmrzeZapM1EygFc4tBJUXwWTzv5Ahy8axLSAadBx51sw", + "input_amount": 49572355581648, + "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "output_amount": 936671, "network": "solana" } ] @@ -15297,120 +15120,334 @@ }, { "in": "query", - "name": "mint", + "name": "signature", "schema": { "type": "string", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA", + "anyOf": [ + { + "type": "string", + "description": "Filter by transaction signature", + "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by transaction signature", + "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" + } + } + ] }, - "required": true, - "description": "Filter by mint address" + "description": "Filter by transaction signature
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, { "in": "query", - "name": "limit", + "name": "amm", "schema": { - "default": 10, - "type": "integer", - "minimum": 1, - "maximum": 1000 + "type": "string", + "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "anyOf": [ + { + "type": "string", + "description": "Filter by AMM address", + "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by AMM address", + "example": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" + } + } + ] }, - "description": "Number of items* returned in a single request.
*Plan restricted." + "description": "Filter by AMM address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, { "in": "query", - "name": "page", + "name": "amm_pool", "schema": { - "default": 1, - "type": "integer", - "minimum": 1, - "maximum": 767465558638 + "type": "string", + "example": "", + "anyOf": [ + { + "type": "string", + "description": "Filter by AMM pool address", + "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by AMM pool address", + "example": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J" + } + } + ] }, - "description": "Page number to fetch.
Empty `data` array signifies end of results." - } - ] - } - }, - "/v1/svm/transfers": { - "get": { - "operationId": "getV1SvmTransfers", - "summary": "Token Transfers", - "description": "Returns SPL token transfers with program, authority, and account information.", - "tags": [ - "SVM Tokens" - ], - "security": [ + "description": "Filter by AMM pool address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, { - "bearerAuth": [] - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "block_num": { - "type": "number" - }, - "datetime": { - "type": "string", - "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" - }, - "timestamp": { - "type": "number" - }, - "signature": { - "type": "string" - }, - "transaction_index": { - "type": "number" - }, - "instruction_index": { - "type": "number" - }, - "program_id": { - "description": "Filter by SPL token program ID", - "example": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "type": "string", - "enum": [ - "11111111111111111111111111111111", - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - ] - }, - "mint": { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - }, - "authority": { - "type": "string", - "description": "Filter by authority address", - "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" - }, - "source": { - "type": "string", - "description": "Filter by address", - "example": "So11111111111111111111111111111111111111112" - }, - "destination": { + "in": "query", + "name": "user", + "schema": { + "type": "string", + "example": "5MGfsuYNRhbuN6x1M6WaR3721dSDGtXpcsHxNsgkjsXC", + "anyOf": [ + { + "type": "string", + "description": "Filter by address", + "example": "So11111111111111111111111111111111111111112" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by address", + "example": "So11111111111111111111111111111111111111112" + } + } + ] + }, + "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "input_mint", + "schema": { + "type": "string", + "example": "HmrzeZapM1EygFc4tBJUXwWTzv5Ahy8axLSAadBx51sw", + "anyOf": [ + { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + } + } + ] + }, + "description": "Filter by mint address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "output_mint", + "schema": { + "type": "string", + "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "anyOf": [ + { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + } + } + ] + }, + "description": "Filter by mint address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "program_id", + "schema": { + "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "anyOf": [ + { + "description": "Filter by program ID", + "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "type": "string", + "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", + "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", + "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" + ] + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "description": "Filter by program ID", + "example": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "type": "string", + "enum": [ + "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", + "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", + "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", + "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" + ] + } + } + ] + }, + "description": "Filter by program ID
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "start_time", + "schema": { + "type": "string", + "default": "2020-01-01" + }, + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + }, + { + "in": "query", + "name": "end_time", + "schema": { + "type": "string", + "default": "2050-01-01" + }, + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + }, + { + "in": "query", + "name": "start_block", + "schema": { + "default": 0, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "description": "Filter by block number" + }, + { + "in": "query", + "name": "end_block", + "schema": { + "default": 9999999999, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "description": "Filter by block number" + }, + { + "in": "query", + "name": "limit", + "schema": { + "default": 10, + "type": "integer", + "minimum": 1, + "maximum": 1000 + }, + "description": "Number of items* returned in a single request.
*Plan restricted." + }, + { + "in": "query", + "name": "page", + "schema": { + "default": 1, + "type": "integer", + "minimum": 1, + "maximum": 767465558638 + }, + "description": "Page number to fetch.
Empty `data` array signifies end of results." + } + ] + } + }, + "/v1/svm/tokens": { + "get": { + "operationId": "getV1SvmTokens", + "summary": "Token Metadata", + "description": "Provides SVM token contract metadata.", + "tags": [ + "SVM Tokens" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "last_update": { "type": "string", - "description": "Filter by address", - "example": "So11111111111111111111111111111111111111112" + "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, - "amount": { - "type": "string" + "last_update_block_num": { + "type": "number" }, - "value": { + "last_update_timestamp": { "type": "number" }, + "program_id": { + "description": "Filter by SPL token program ID", + "example": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "type": "string", + "enum": [ + "11111111111111111111111111111111", + "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + ] + }, + "mint": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, "decimals": { "anyOf": [ { @@ -15431,54 +15468,1333 @@ } ] }, - "symbol": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "uri": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "network": { + "type": "string" + } + }, + "required": [ + "last_update", + "last_update_block_num", + "last_update_timestamp", + "program_id", + "mint", + "decimals", + "name", + "symbol", + "uri", + "network" + ] + } + }, + "statistics": { + "type": "object", + "properties": { + "elapsed": { + "type": "number" + }, + "rows_read": { + "type": "number" + }, + "bytes_read": { + "type": "number" + } + } + }, + "pagination": { + "type": "object", + "properties": { + "previous_page": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "current_page": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "previous_page", + "current_page" + ] + }, + "results": { + "type": "number" + }, + "request_time": { + "description": "ISO 8601 datetime string", + "type": "string" + }, + "duration_ms": { + "type": "number" + } + }, + "required": [ + "data", + "statistics", + "pagination", + "results", + "request_time", + "duration_ms" + ] + }, + "examples": { + "example": { + "value": { + "data": [ + { + "last_update": "2025-10-16 10:34:46", + "last_update_block_num": 373731565, + "last_update_timestamp": 1760610886, + "program_id": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", + "decimals": 6, + "name": "Pump", + "symbol": "PUMP", + "uri": "https://ipfs.io/ipfs/bafkreibcglldkfdekdkxgumlveoe6qv3pbiceypkwtli33clbzul7leo4m", + "network": "solana" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Client side error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 400, + "code": "bad_query_input", + "message": "Invalid query parameter provided" + } + } + } + } + } + }, + "401": { + "description": "Authentication failed", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 401, + "code": "unauthorized", + "message": "Authentication required" + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 403, + "code": "forbidden", + "message": "Access denied" + } + } + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 404, + "code": "not_found_data", + "message": "Resource not found" + } + } + } + } + } + }, + "500": { + "description": "Server side error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 500 + }, + { + "type": "number", + "const": 502 + }, + { + "type": "number", + "const": 504 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "bad_database_response", + "connection_refused", + "database_timeout", + "internal_server_error" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 500, + "code": "internal_server_error", + "message": "An unexpected error occurred" + } + } + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "network", + "schema": { + "example": "solana", + "type": "string", + "enum": [ + "solana" + ] + }, + "required": true, + "description": "The Graph Network ID for SVM networks https://thegraph.com/networks" + }, + { + "in": "query", + "name": "mint", + "schema": { + "type": "string", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, + "required": true, + "description": "Filter by mint address" + }, + { + "in": "query", + "name": "limit", + "schema": { + "default": 10, + "type": "integer", + "minimum": 1, + "maximum": 1000 + }, + "description": "Number of items* returned in a single request.
*Plan restricted." + }, + { + "in": "query", + "name": "page", + "schema": { + "default": 1, + "type": "integer", + "minimum": 1, + "maximum": 767465558638 + }, + "description": "Page number to fetch.
Empty `data` array signifies end of results." + } + ] + } + }, + "/v1/svm/transfers": { + "get": { + "operationId": "getV1SvmTransfers", + "summary": "Token Transfers", + "description": "Returns SPL token transfers with program, authority, and account information.", + "tags": [ + "SVM Tokens" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "block_num": { + "type": "number" + }, + "datetime": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" + }, + "timestamp": { + "type": "number" + }, + "signature": { + "type": "string" + }, + "transaction_index": { + "type": "number" + }, + "instruction_index": { + "type": "number" + }, + "program_id": { + "description": "Filter by SPL token program ID", + "example": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "type": "string", + "enum": [ + "11111111111111111111111111111111", + "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + ] + }, + "mint": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, + "authority": { + "type": "string", + "description": "Filter by authority address", + "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" + }, + "source": { + "type": "string", + "description": "Filter by address", + "example": "So11111111111111111111111111111111111111112" + }, + "destination": { + "type": "string", + "description": "Filter by address", + "example": "So11111111111111111111111111111111111111112" + }, + "amount": { + "type": "string" + }, + "value": { + "type": "number" + }, + "decimals": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "uri": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "network": { + "description": "The Graph Network ID for SVM networks https://thegraph.com/networks", + "example": "solana", + "type": "string", + "enum": [ + "solana" + ] + } + }, + "required": [ + "block_num", + "datetime", + "timestamp", + "signature", + "transaction_index", + "instruction_index", + "program_id", + "mint", + "authority", + "source", + "destination", + "amount", + "value", + "decimals", + "name", + "symbol", + "uri", + "network" + ] + } + }, + "statistics": { + "type": "object", + "properties": { + "elapsed": { + "type": "number" + }, + "rows_read": { + "type": "number" + }, + "bytes_read": { + "type": "number" + } + } + }, + "pagination": { + "type": "object", + "properties": { + "previous_page": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "current_page": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "previous_page", + "current_page" + ] + }, + "results": { + "type": "number" + }, + "request_time": { + "description": "ISO 8601 datetime string", + "type": "string" + }, + "duration_ms": { + "type": "number" + } + }, + "required": [ + "data", + "statistics", + "pagination", + "results", + "request_time", + "duration_ms" + ] + }, + "examples": { + "example": { + "value": { + "data": [ + { + "block_num": 372132067, + "datetime": "2025-10-09 02:10:01", + "timestamp": 1759975801, + "signature": "2Y3YJMa7Gx96ZprnWxSQHiahGdbiNFwF1DdT4ZWGf8cwJnv4fRTcFg9Z5THuAHhja66fi6Jd8fLngtH1d8qSNj3H", + "transaction_index": 65, + "instruction_index": 0, + "program_id": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", + "authority": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9", + "source": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", + "destination": "64nnJ2CBUZ3VasttjVhxbQXqzbjAxnj4VT4vBrrveNV", + "amount": "835996345", + "value": 835.996345, + "decimals": 6, + "name": "Pump", + "symbol": "PUMP", + "uri": "https://ipfs.io/ipfs/bafkreibcglldkfdekdkxgumlveoe6qv3pbiceypkwtli33clbzul7leo4m", + "network": "solana" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Client side error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 400, + "code": "bad_query_input", + "message": "Invalid query parameter provided" + } + } + } + } + } + }, + "401": { + "description": "Authentication failed", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 401, + "code": "unauthorized", + "message": "Authentication required" + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 403, + "code": "forbidden", + "message": "Access denied" + } + } + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 400 + }, + { + "type": "number", + "const": 401 + }, + { + "type": "number", + "const": 403 + }, + { + "type": "number", + "const": 404 + }, + { + "type": "number", + "const": 405 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "authentication_failed", + "bad_header", + "missing_required_header", + "bad_query_input", + "forbidden", + "method_not_allowed", + "route_not_found", + "unauthorized", + "not_found_data" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 404, + "code": "not_found_data", + "message": "Resource not found" + } + } + } + } + } + }, + "500": { + "description": "Server side error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "status": { + "anyOf": [ + { + "type": "number", + "const": 500 + }, + { + "type": "number", + "const": 502 + }, + { + "type": "number", + "const": 504 + } + ] + }, + "code": { + "type": "string", + "enum": [ + "bad_database_response", + "connection_refused", + "database_timeout", + "internal_server_error" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "status", + "code", + "message" + ] + }, + "examples": { + "example": { + "value": { + "status": 500, + "code": "internal_server_error", + "message": "An unexpected error occurred" + } + } + } + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "network", + "schema": { + "example": "solana", + "type": "string", + "enum": [ + "solana" + ] + }, + "required": true, + "description": "The Graph Network ID for SVM networks https://thegraph.com/networks" + }, + { + "in": "query", + "name": "signature", + "schema": { + "type": "string", + "example": "2Y3YJMa7Gx96ZprnWxSQHiahGdbiNFwF1DdT4ZWGf8cwJnv4fRTcFg9Z5THuAHhja66fi6Jd8fLngtH1d8qSNj3H", + "anyOf": [ + { + "type": "string", + "description": "Filter by transaction signature", + "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by transaction signature", + "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" + } + } + ] + }, + "description": "Filter by transaction signature
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "source", + "schema": { + "type": "string", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", + "anyOf": [ + { + "type": "string", + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + } + } + ] + }, + "description": "Filter by token account address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "destination", + "schema": { + "type": "string", + "example": "64nnJ2CBUZ3VasttjVhxbQXqzbjAxnj4VT4vBrrveNV", + "anyOf": [ + { + "type": "string", + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by token account address", + "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" + } + } + ] + }, + "description": "Filter by token account address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "authority", + "schema": { + "type": "string", + "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9", + "anyOf": [ + { + "type": "string", + "description": "Filter by authority address", + "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by authority address", + "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" + } + } + ] + }, + "description": "Filter by authority address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "mint", + "schema": { + "type": "string", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", + "anyOf": [ + { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by mint address", + "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" + } + } + ] + }, + "description": "Filter by mint address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "program_id", + "schema": { + "example": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "default": "", + "type": "string", + "enum": [ + "11111111111111111111111111111111", + "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", + "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + ] + }, + "description": "Filter by SPL token program ID" + }, + { + "in": "query", + "name": "start_time", + "schema": { + "type": "string", + "default": "2020-01-01" + }, + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + }, + { + "in": "query", + "name": "end_time", + "schema": { + "type": "string", + "default": "2050-01-01" + }, + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + }, + { + "in": "query", + "name": "start_block", + "schema": { + "default": 0, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "description": "Filter by block number" + }, + { + "in": "query", + "name": "end_block", + "schema": { + "default": 9999999999, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "description": "Filter by block number" + }, + { + "in": "query", + "name": "limit", + "schema": { + "default": 10, + "type": "integer", + "minimum": 1, + "maximum": 1000 + }, + "description": "Number of items* returned in a single request.
*Plan restricted." + }, + { + "in": "query", + "name": "page", + "schema": { + "default": 1, + "type": "integer", + "minimum": 1, + "maximum": 767465558638 + }, + "description": "Page number to fetch.
Empty `data` array signifies end of results." + } + ] + } + }, + "/v1/tvm/dexes": { + "get": { + "operationId": "getV1TvmDexes", + "summary": "Supported DEXs", + "description": "Returns all supported TVM DEXs.", + "tags": [ + "TVM DEXs" + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "factory": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + "protocol": { + "description": "Protocol name", + "example": "sunswap", + "type": "string", + "enum": [ + "justswap", + "sunswap", + "sunpump" + ] + }, + "transactions": { + "type": "number" }, - "uri": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "uaw": { + "type": "number" }, - "network": { - "description": "The Graph Network ID for SVM networks https://thegraph.com/networks", - "example": "solana", + "last_activity": { "type": "string", - "enum": [ - "solana" - ] + "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" } }, "required": [ - "block_num", - "datetime", - "timestamp", - "signature", - "transaction_index", - "instruction_index", - "program_id", - "mint", - "authority", - "source", - "destination", - "amount", - "value", - "decimals", - "name", - "symbol", - "uri", - "network" + "factory", + "protocol", + "transactions", + "uaw", + "last_activity" ] } }, @@ -15540,24 +16856,11 @@ "value": { "data": [ { - "block_num": 372132067, - "datetime": "2025-10-09 02:10:01", - "timestamp": 1759975801, - "signature": "2Y3YJMa7Gx96ZprnWxSQHiahGdbiNFwF1DdT4ZWGf8cwJnv4fRTcFg9Z5THuAHhja66fi6Jd8fLngtH1d8qSNj3H", - "transaction_index": 65, - "instruction_index": 0, - "program_id": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", - "authority": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9", - "source": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", - "destination": "64nnJ2CBUZ3VasttjVhxbQXqzbjAxnj4VT4vBrrveNV", - "amount": "835996345", - "value": 835.996345, - "decimals": 6, - "name": "Pump", - "symbol": "PUMP", - "uri": "https://ipfs.io/ipfs/bafkreibcglldkfdekdkxgumlveoe6qv3pbiceypkwtli33clbzul7leo4m", - "network": "solana" + "factory": "TXk8rQSAvPvBBNtqSoY6nCfsXWCSSpTVQF", + "protocol": "justswap", + "transactions": 47301451, + "uaw": 2562671, + "last_activity": "2025-11-03 00:00:00" } ] } @@ -15885,247 +17188,40 @@ } } } - } - } - } - }, - "parameters": [ - { - "in": "query", - "name": "network", - "schema": { - "example": "solana", - "type": "string", - "enum": [ - "solana" - ] - }, - "required": true, - "description": "The Graph Network ID for SVM networks https://thegraph.com/networks" - }, - { - "in": "query", - "name": "signature", - "schema": { - "type": "string", - "example": "2Y3YJMa7Gx96ZprnWxSQHiahGdbiNFwF1DdT4ZWGf8cwJnv4fRTcFg9Z5THuAHhja66fi6Jd8fLngtH1d8qSNj3H", - "anyOf": [ - { - "type": "string", - "description": "Filter by transaction signature", - "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by transaction signature", - "example": "5pdoVcSiSBr3LMAijdRYKrL5RoLFjLgHxHbZ34dUBVubnsQt3q1v48LuPazebsSiBVuSbSTyJdzf3G9jqqn8o6jA" - } - } - ] - }, - "description": "Filter by transaction signature
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "source", - "schema": { - "type": "string", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW", - "anyOf": [ - { - "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" - } - } - ] - }, - "description": "Filter by token account address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "destination", - "schema": { - "type": "string", - "example": "64nnJ2CBUZ3VasttjVhxbQXqzbjAxnj4VT4vBrrveNV", - "anyOf": [ - { - "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by token account address", - "example": "5UZfa66rzeDpD9wKs3Sn3iewmavxYvpAtiF2Lqd2n1wW" - } - } - ] - }, - "description": "Filter by token account address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "authority", - "schema": { - "type": "string", - "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9", - "anyOf": [ - { - "type": "string", - "description": "Filter by authority address", - "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by authority address", - "example": "GXYBNgyYKbSLr938VJCpmGLCUaAHWsncTi7jDoQSdFR9" - } - } - ] - }, - "description": "Filter by authority address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "mint", - "schema": { - "type": "string", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", - "anyOf": [ - { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by mint address", - "example": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn" - } - } - ] - }, - "description": "Filter by mint address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "program_id", - "schema": { - "example": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "default": "", - "type": "string", - "enum": [ - "11111111111111111111111111111111", - "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - ] - }, - "description": "Filter by SPL token program ID" - }, - { - "in": "query", - "name": "start_time", - "schema": { - "type": "string", - "default": "2020-01-01" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, + } + } + } + }, + "parameters": [ { "in": "query", - "name": "end_time", + "name": "network", "schema": { + "example": "tron", "type": "string", - "default": "2050-01-01" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, - { - "in": "query", - "name": "start_block", - "schema": { - "default": 0, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "description": "Filter by block number" - }, - { - "in": "query", - "name": "end_block", - "schema": { - "default": 9999999999, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "description": "Filter by block number" - }, - { - "in": "query", - "name": "limit", - "schema": { - "default": 10, - "type": "integer", - "minimum": 1, - "maximum": 1000 - }, - "description": "Number of items* returned in a single request.
*Plan restricted." - }, - { - "in": "query", - "name": "page", - "schema": { - "default": 1, - "type": "integer", - "minimum": 1, - "maximum": 767465558638 + "enum": [ + "tron" + ] }, - "description": "Page number to fetch.
Empty `data` array signifies end of results." + "required": true, + "description": "The Graph Network ID for TVM networks https://thegraph.com/networks" } ] } }, - "/v1/tvm/dexes": { + "/v1/tvm/pools/ohlc": { "get": { - "operationId": "getV1TvmDexes", - "summary": "Supported DEXs", - "description": "Returns all supported TVM DEXs.", + "operationId": "getV1TvmPoolsOhlc", + "summary": "Pool OHLCV Data", + "description": "Returns OHLCV price data for liquidity pools.\n\nOHLCV historical depth is subject to plan restrictions.", "tags": [ "TVM DEXs" ], + "security": [ + { + "bearerAuth": [] + } + ], "responses": { "200": { "description": "Successful Response", @@ -16139,38 +17235,51 @@ "items": { "type": "object", "properties": { - "factory": { + "datetime": { "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, - "protocol": { - "description": "Protocol name", - "example": "sunswap", + "ticker": { + "type": "string" + }, + "pool": { "type": "string", - "enum": [ - "justswap", - "sunswap", - "sunpump" - ] + "description": "Filter by pool address", + "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" }, - "transactions": { + "open": { + "type": "number" + }, + "high": { + "type": "number" + }, + "low": { + "type": "number" + }, + "close": { + "type": "number" + }, + "volume": { "type": "number" }, "uaw": { "type": "number" }, - "last_activity": { - "type": "string", - "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" + "transactions": { + "type": "number" } }, "required": [ - "factory", - "protocol", - "transactions", + "datetime", + "ticker", + "pool", + "open", + "high", + "low", + "close", + "volume", "uaw", - "last_activity" + "transactions" ] } }, @@ -16232,11 +17341,16 @@ "value": { "data": [ { - "factory": "TXk8rQSAvPvBBNtqSoY6nCfsXWCSSpTVQF", - "protocol": "justswap", - "transactions": 47301451, - "uaw": 2562671, - "last_activity": "2025-11-03 00:00:00" + "datetime": "2025-11-05 00:00:00", + "ticker": "WTRXUSDT", + "pool": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", + "open": 0.2858162052159799, + "high": 0.2880636266155062, + "low": 0.28099080983643465, + "close": 0.2880636266155062, + "volume": 15584135805763, + "uaw": 10, + "transactions": 102081 } ] } @@ -16581,15 +17695,80 @@ }, "required": true, "description": "The Graph Network ID for TVM networks https://thegraph.com/networks" + }, + { + "in": "query", + "name": "pool", + "schema": { + "type": "string", + "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" + }, + "required": true, + "description": "Filter by pool address" + }, + { + "in": "query", + "name": "interval", + "schema": { + "type": "string", + "enum": [ + "1h", + "4h", + "1d", + "1w" + ], + "default": "1d" + }, + "description": "The interval* for which to aggregate price data (hourly, 4-hours, daily or weekly).
*Plan restricted." + }, + { + "in": "query", + "name": "start_time", + "schema": { + "type": "string", + "default": "2025-10-20" + }, + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + }, + { + "in": "query", + "name": "end_time", + "schema": { + "type": "string", + "default": "2050-01-01" + }, + "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." + }, + { + "in": "query", + "name": "limit", + "schema": { + "default": 10, + "type": "integer", + "minimum": 1, + "maximum": 1000 + }, + "description": "Number of items* returned in a single request.
*Plan restricted." + }, + { + "in": "query", + "name": "page", + "schema": { + "default": 1, + "type": "integer", + "minimum": 1, + "maximum": 767465558638 + }, + "description": "Page number to fetch.
Empty `data` array signifies end of results." } ] } }, - "/v1/tvm/pools/ohlc": { + "/v1/tvm/swaps": { "get": { - "operationId": "getV1TvmPoolsOhlc", - "summary": "Pool OHLCV Data", - "description": "Returns OHLCV price data for liquidity pools.\n\nOHLCV historical depth is subject to plan restrictions.", + "operationId": "getV1TvmSwaps", + "summary": "Swap Events", + "description": "Returns DEX swap transactions from Tron protocols with token amounts and prices.", "tags": [ "TVM DEXs" ], @@ -16611,51 +17790,153 @@ "items": { "type": "object", "properties": { + "block_num": { + "type": "number" + }, "datetime": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, - "ticker": { + "timestamp": { + "type": "number" + }, + "transaction_id": { + "type": "string" + }, + "transaction_index": { + "type": "number" + }, + "log_index": { + "type": "number" + }, + "log_ordinal": { + "type": "number" + }, + "log_address": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + "log_topic0": { "type": "string" }, + "protocol": { + "description": "Protocol name", + "example": "sunswap", + "type": "string", + "enum": [ + "justswap", + "sunswap", + "sunpump" + ] + }, + "factory": { + "type": "string", + "description": "Filter by factory address", + "example": "TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY" + }, "pool": { "type": "string", "description": "Filter by pool address", "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" }, - "open": { - "type": "number" + "user": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" }, - "high": { - "type": "number" + "input_amount": { + "type": "string" }, - "low": { + "input_value": { "type": "number" }, - "close": { - "type": "number" + "input_token": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + "symbol": { + "type": "string" + }, + "name": { + "type": "string" + }, + "decimals": { + "type": "number" + } + }, + "required": [ + "address", + "symbol", + "name", + "decimals" + ] }, - "volume": { - "type": "number" + "output_amount": { + "type": "string" }, - "uaw": { + "output_value": { "type": "number" }, - "transactions": { - "type": "number" + "output_token": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + "symbol": { + "type": "string" + }, + "name": { + "type": "string" + }, + "decimals": { + "type": "number" + } + }, + "required": [ + "address", + "symbol", + "name", + "decimals" + ] + }, + "network": { + "description": "The Graph Network ID for TVM networks https://thegraph.com/networks", + "example": "tron", + "type": "string", + "enum": [ + "tron" + ] } }, "required": [ + "block_num", "datetime", - "ticker", + "timestamp", + "transaction_id", + "transaction_index", + "log_index", + "log_ordinal", + "log_address", + "log_topic0", + "protocol", + "factory", "pool", - "open", - "high", - "low", - "close", - "volume", - "uaw", - "transactions" + "user", + "input_amount", + "input_value", + "input_token", + "output_amount", + "output_value", + "output_token", + "network" ] } }, @@ -16717,16 +17998,36 @@ "value": { "data": [ { - "datetime": "2025-11-05 00:00:00", - "ticker": "WTRXUSDT", + "block_num": 77233509, + "datetime": "2025-11-05 16:55:03", + "timestamp": 1762361703, + "transaction_id": "e74815245a8f1321ce5ede99cde8e021f75bf8e3d4f94cd8949d283eb56fee63", + "transaction_index": 0, + "log_index": 1, + "log_ordinal": 662, + "log_address": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", + "log_topic0": "d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "protocol": "sunswap", + "factory": "TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY", "pool": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", - "open": 0.2858162052159799, - "high": 0.2880636266155062, - "low": 0.28099080983643465, - "close": 0.2880636266155062, - "volume": 15584135805763, - "uaw": 10, - "transactions": 102081 + "user": "TXF1xDbVGdxFGbovmmmXvBGu8ZiE3Lq4mR", + "input_amount": "170000000", + "input_value": 170, + "input_token": { + "address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "symbol": "USDT", + "name": "Tether USD", + "decimals": 6 + }, + "output_amount": "590270510", + "output_value": 590.27051, + "output_token": { + "address": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", + "symbol": "WTRX", + "name": "Wrapped TRX", + "decimals": 6 + }, + "network": "tron" } ] } @@ -17054,55 +18355,207 @@ } } } - } - } - } - }, - "parameters": [ + } + } + } + }, + "parameters": [ + { + "in": "query", + "name": "network", + "schema": { + "example": "tron", + "type": "string", + "enum": [ + "tron" + ] + }, + "required": true, + "description": "The Graph Network ID for TVM networks https://thegraph.com/networks" + }, + { + "in": "query", + "name": "transaction_id", + "schema": { + "type": "string", + "example": "e74815245a8f1321ce5ede99cde8e021f75bf8e3d4f94cd8949d283eb56fee63", + "anyOf": [ + { + "type": "string", + "description": "Filter by transaction hash", + "example": "daddbf0810fb73620ebb1ad3c915afd32f3cf13a267d740f27284583df97a01a" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by transaction hash", + "example": "daddbf0810fb73620ebb1ad3c915afd32f3cf13a267d740f27284583df97a01a" + } + } + ] + }, + "description": "Filter by transaction hash
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "factory", + "schema": { + "type": "string", + "example": "TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY", + "anyOf": [ + { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + } + } + ] + }, + "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "pool", + "schema": { + "type": "string", + "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", + "anyOf": [ + { + "type": "string", + "description": "Filter by pool address", + "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by pool address", + "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" + } + } + ] + }, + "description": "Filter by pool address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, + { + "in": "query", + "name": "user", + "schema": { + "type": "string", + "example": "TXF1xDbVGdxFGbovmmmXvBGu8ZiE3Lq4mR", + "anyOf": [ + { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + } + } + ] + }, + "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." + }, { "in": "query", - "name": "network", + "name": "input_token", "schema": { - "example": "tron", "type": "string", - "enum": [ - "tron" + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "anyOf": [ + { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + } + } ] }, - "required": true, - "description": "The Graph Network ID for TVM networks https://thegraph.com/networks" + "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, { "in": "query", - "name": "pool", + "name": "output_token", "schema": { "type": "string", - "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" + "example": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", + "anyOf": [ + { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "description": "Filter by address", + "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" + } + } + ] }, - "required": true, - "description": "Filter by pool address" + "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." }, { "in": "query", - "name": "interval", + "name": "protocol", "schema": { + "example": "sunswap", + "default": "", "type": "string", "enum": [ - "1h", - "4h", - "1d", - "1w" - ], - "default": "1d" + "justswap", + "sunswap", + "sunpump" + ] }, - "description": "The interval* for which to aggregate price data (hourly, 4-hours, daily or weekly).
*Plan restricted." + "description": "Protocol name" }, { "in": "query", "name": "start_time", "schema": { "type": "string", - "default": "2025-10-13" + "default": "2015-01-01" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -17115,6 +18568,28 @@ }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, + { + "in": "query", + "name": "start_block", + "schema": { + "default": 0, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "description": "Filter by block number" + }, + { + "in": "query", + "name": "end_block", + "schema": { + "default": 9999999999, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "description": "Filter by block number" + }, { "in": "query", "name": "limit", @@ -17140,13 +18615,13 @@ ] } }, - "/v1/tvm/swaps": { + "/v1/tvm/tokens": { "get": { - "operationId": "getV1TvmSwaps", - "summary": "Swap Events", - "description": "Returns DEX swap transactions from Tron protocols with token amounts and prices.", + "operationId": "getV1TvmTokens", + "summary": "Token Metadata", + "description": "Provides TVM token contract metadata.", "tags": [ - "TVM DEXs" + "TVM Tokens" ], "security": [ { @@ -17166,152 +18641,63 @@ "items": { "type": "object", "properties": { - "block_num": { - "type": "number" - }, - "datetime": { + "last_update": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$" }, - "timestamp": { - "type": "number" - }, - "transaction_id": { - "type": "string" - }, - "transaction_index": { - "type": "number" - }, - "log_index": { + "last_update_block_num": { "type": "number" }, - "log_ordinal": { + "last_update_timestamp": { "type": "number" }, - "log_address": { + "contract": { "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - "log_topic0": { - "type": "string" + "description": "Filter by contract address", + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" }, - "protocol": { - "description": "Protocol name", - "example": "sunswap", - "type": "string", - "enum": [ - "justswap", - "sunswap", - "sunpump" + "decimals": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } ] }, - "factory": { - "type": "string", - "description": "Filter by factory address", - "example": "TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY" - }, - "pool": { - "type": "string", - "description": "Filter by pool address", - "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" - }, - "user": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - "input_amount": { - "type": "string" - }, - "input_value": { - "type": "number" - }, - "input_token": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - "symbol": { - "type": "string" - }, - "name": { + "name": { + "anyOf": [ + { "type": "string" }, - "decimals": { - "type": "number" + { + "type": "null" } - }, - "required": [ - "address", - "symbol", - "name", - "decimals" ] }, - "output_amount": { - "type": "string" - }, - "output_value": { - "type": "number" - }, - "output_token": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - "symbol": { - "type": "string" - }, - "name": { + "symbol": { + "anyOf": [ + { "type": "string" }, - "decimals": { - "type": "number" + { + "type": "null" } - }, - "required": [ - "address", - "symbol", - "name", - "decimals" ] }, "network": { - "description": "The Graph Network ID for TVM networks https://thegraph.com/networks", - "example": "tron", - "type": "string", - "enum": [ - "tron" - ] + "type": "string" } - }, - "required": [ - "block_num", - "datetime", - "timestamp", - "transaction_id", - "transaction_index", - "log_index", - "log_ordinal", - "log_address", - "log_topic0", - "protocol", - "factory", - "pool", - "user", - "input_amount", - "input_value", - "input_token", - "output_amount", - "output_value", - "output_token", + }, + "required": [ + "last_update", + "last_update_block_num", + "last_update_timestamp", + "contract", + "decimals", + "name", + "symbol", "network" ] } @@ -17374,35 +18760,13 @@ "value": { "data": [ { - "block_num": 77233509, - "datetime": "2025-11-05 16:55:03", - "timestamp": 1762361703, - "transaction_id": "e74815245a8f1321ce5ede99cde8e021f75bf8e3d4f94cd8949d283eb56fee63", - "transaction_index": 0, - "log_index": 1, - "log_ordinal": 662, - "log_address": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", - "log_topic0": "d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", - "protocol": "sunswap", - "factory": "TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY", - "pool": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", - "user": "TXF1xDbVGdxFGbovmmmXvBGu8ZiE3Lq4mR", - "input_amount": "170000000", - "input_value": 170, - "input_token": { - "address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", - "symbol": "USDT", - "name": "Tether USD", - "decimals": 6 - }, - "output_amount": "590270510", - "output_value": 590.27051, - "output_token": { - "address": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", - "symbol": "WTRX", - "name": "Wrapped TRX", - "decimals": 6 - }, + "last_update": "2025-11-05 14:57:51", + "last_update_block_num": 77231165, + "last_update_timestamp": 1762354671, + "contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "decimals": 6, + "name": "Tether USD", + "symbol": "USDT", "network": "tron" } ] @@ -17751,220 +19115,13 @@ }, { "in": "query", - "name": "transaction_id", - "schema": { - "type": "string", - "example": "e74815245a8f1321ce5ede99cde8e021f75bf8e3d4f94cd8949d283eb56fee63", - "anyOf": [ - { - "type": "string", - "description": "Filter by transaction hash", - "example": "daddbf0810fb73620ebb1ad3c915afd32f3cf13a267d740f27284583df97a01a" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by transaction hash", - "example": "daddbf0810fb73620ebb1ad3c915afd32f3cf13a267d740f27284583df97a01a" - } - } - ] - }, - "description": "Filter by transaction hash
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "factory", - "schema": { - "type": "string", - "example": "TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY", - "anyOf": [ - { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - } - } - ] - }, - "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "pool", - "schema": { - "type": "string", - "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ", - "anyOf": [ - { - "type": "string", - "description": "Filter by pool address", - "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by pool address", - "example": "TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ" - } - } - ] - }, - "description": "Filter by pool address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "user", - "schema": { - "type": "string", - "example": "TXF1xDbVGdxFGbovmmmXvBGu8ZiE3Lq4mR", - "anyOf": [ - { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - } - } - ] - }, - "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "input_token", - "schema": { - "type": "string", - "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", - "anyOf": [ - { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - } - } - ] - }, - "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "output_token", - "schema": { - "type": "string", - "example": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", - "anyOf": [ - { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string", - "description": "Filter by address", - "example": "TRX9Uehj3GuFVh5jjVjNqb6q9cgVHJ4jGX" - } - } - ] - }, - "description": "Filter by address
Single value or array of values* (separate multiple values with `,`)
*Plan restricted." - }, - { - "in": "query", - "name": "protocol", - "schema": { - "example": "sunswap", - "default": "", - "type": "string", - "enum": [ - "justswap", - "sunswap", - "sunpump" - ] - }, - "description": "Protocol name" - }, - { - "in": "query", - "name": "start_time", - "schema": { - "type": "string", - "default": "2015-01-01" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, - { - "in": "query", - "name": "end_time", + "name": "contract", "schema": { "type": "string", - "default": "2050-01-01" - }, - "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." - }, - { - "in": "query", - "name": "start_block", - "schema": { - "default": 0, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "description": "Filter by block number" - }, - { - "in": "query", - "name": "end_block", - "schema": { - "default": 9999999999, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 + "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" }, - "description": "Filter by block number" + "required": true, + "description": "Filter by contract address" }, { "in": "query", @@ -19939,9 +21096,9 @@ "examples": { "example": { "value": { - "version": "3.5.5", - "commit": "2c95704", - "date": "2025-11-13", + "version": "3.6.0", + "commit": "da03655", + "date": "2025-11-20", "repo": "pinax-network/token-api" } } diff --git a/website/src/pages/ar/ai-suite/_meta.js b/website/src/pages/ar/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/ar/ai-suite/_meta.js +++ b/website/src/pages/ar/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/ar/ai-suite/graph-assistant/_meta.js b/website/src/pages/ar/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/ar/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/ar/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ar/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index fddfa82ba974..000000000000 --- a/website/src/pages/ar/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum One?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index de53e29c3308..000000000000 --- a/website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum One yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/ar/graph-horizon/_meta.js b/website/src/pages/ar/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/ar/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/ar/graph-horizon/migration-guide.mdx b/website/src/pages/ar/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/ar/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ar/graph-horizon/overview.mdx b/website/src/pages/ar/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/ar/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ar/graph-horizon/what-changes.mdx b/website/src/pages/ar/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/ar/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ar/token-api/evm-tokens/_meta.js b/website/src/pages/ar/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/ar/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ar/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/ar/token-api/svm-tokens/_meta.js b/website/src/pages/ar/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/ar/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ar/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/ar/token-api/svm-tokens/holders.mdx b/website/src/pages/ar/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/ar/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/ar/token-api/tvm-tokens/_meta.js b/website/src/pages/ar/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/ar/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/ar/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/ar/token-api/tvm-tokens/tokens.mdx b/website/src/pages/ar/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/ar/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/cs/ai-suite/_meta.js b/website/src/pages/cs/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/cs/ai-suite/_meta.js +++ b/website/src/pages/cs/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/cs/ai-suite/graph-assistant/_meta.js b/website/src/pages/cs/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/cs/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/cs/ai-suite/graph-assistant/faq.mdx b/website/src/pages/cs/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index fddfa82ba974..000000000000 --- a/website/src/pages/cs/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum One?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/cs/graph-horizon/_meta.js b/website/src/pages/cs/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/cs/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/cs/graph-horizon/migration-guide.mdx b/website/src/pages/cs/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/cs/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/cs/graph-horizon/overview.mdx b/website/src/pages/cs/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/cs/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/cs/graph-horizon/what-changes.mdx b/website/src/pages/cs/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/cs/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/cs/token-api/evm-tokens/_meta.js b/website/src/pages/cs/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/cs/token-api/evm-tokens/_meta.js +++ b/website/src/pages/cs/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/cs/token-api/svm-tokens/_meta.js b/website/src/pages/cs/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/cs/token-api/svm-tokens/_meta.js +++ b/website/src/pages/cs/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/cs/token-api/svm-tokens/holders.mdx b/website/src/pages/cs/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/cs/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/cs/token-api/tvm-tokens/_meta.js b/website/src/pages/cs/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/cs/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/cs/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/cs/token-api/tvm-tokens/tokens.mdx b/website/src/pages/cs/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/cs/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/de/ai-suite/_meta.js b/website/src/pages/de/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/de/ai-suite/_meta.js +++ b/website/src/pages/de/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/de/ai-suite/graph-assistant/_meta.js b/website/src/pages/de/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/de/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/de/ai-suite/graph-assistant/faq.mdx b/website/src/pages/de/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index fddfa82ba974..000000000000 --- a/website/src/pages/de/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum One?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/de/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/de/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/de/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/de/graph-horizon/_meta.js b/website/src/pages/de/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/de/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/de/graph-horizon/migration-guide.mdx b/website/src/pages/de/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/de/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/de/graph-horizon/overview.mdx b/website/src/pages/de/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/de/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/de/graph-horizon/what-changes.mdx b/website/src/pages/de/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/de/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/de/token-api/evm-tokens/_meta.js b/website/src/pages/de/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/de/token-api/evm-tokens/_meta.js +++ b/website/src/pages/de/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/de/token-api/svm-tokens/_meta.js b/website/src/pages/de/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/de/token-api/svm-tokens/_meta.js +++ b/website/src/pages/de/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/de/token-api/svm-tokens/holders.mdx b/website/src/pages/de/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/de/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/de/token-api/tvm-tokens/_meta.js b/website/src/pages/de/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/de/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/de/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/de/token-api/tvm-tokens/tokens.mdx b/website/src/pages/de/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/de/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/en/token-api/evm-tokens/_meta.js b/website/src/pages/en/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/en/token-api/evm-tokens/_meta.js +++ b/website/src/pages/en/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/en/token-api/svm-tokens/_meta.js b/website/src/pages/en/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/en/token-api/svm-tokens/_meta.js +++ b/website/src/pages/en/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/en/token-api/svm-tokens/holders.mdx b/website/src/pages/en/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/en/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/en/token-api/tvm-tokens/_meta.js b/website/src/pages/en/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/en/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/en/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/en/token-api/tvm-tokens/tokens.mdx b/website/src/pages/en/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/en/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/es/ai-suite/_meta.js b/website/src/pages/es/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/es/ai-suite/_meta.js +++ b/website/src/pages/es/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/es/ai-suite/graph-assistant/_meta.js b/website/src/pages/es/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/es/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/es/ai-suite/graph-assistant/faq.mdx b/website/src/pages/es/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/es/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/es/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/es/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/es/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/es/graph-horizon/_meta.js b/website/src/pages/es/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/es/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/es/graph-horizon/migration-guide.mdx b/website/src/pages/es/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/es/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/es/graph-horizon/overview.mdx b/website/src/pages/es/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/es/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/es/graph-horizon/what-changes.mdx b/website/src/pages/es/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/es/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/es/token-api/evm-tokens/_meta.js b/website/src/pages/es/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/es/token-api/evm-tokens/_meta.js +++ b/website/src/pages/es/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/es/token-api/svm-tokens/_meta.js b/website/src/pages/es/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/es/token-api/svm-tokens/_meta.js +++ b/website/src/pages/es/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/es/token-api/svm-tokens/holders.mdx b/website/src/pages/es/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/es/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/es/token-api/tvm-tokens/_meta.js b/website/src/pages/es/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/es/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/es/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/es/token-api/tvm-tokens/tokens.mdx b/website/src/pages/es/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/es/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/fr/ai-suite/_meta.js b/website/src/pages/fr/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/fr/ai-suite/_meta.js +++ b/website/src/pages/fr/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/fr/ai-suite/graph-assistant/_meta.js b/website/src/pages/fr/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/fr/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/fr/ai-suite/graph-assistant/faq.mdx b/website/src/pages/fr/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/fr/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/fr/graph-horizon/_meta.js b/website/src/pages/fr/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/fr/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/fr/graph-horizon/migration-guide.mdx b/website/src/pages/fr/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/fr/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/fr/graph-horizon/overview.mdx b/website/src/pages/fr/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/fr/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/fr/graph-horizon/what-changes.mdx b/website/src/pages/fr/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/fr/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/fr/token-api/evm-tokens/_meta.js b/website/src/pages/fr/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/fr/token-api/evm-tokens/_meta.js +++ b/website/src/pages/fr/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/fr/token-api/svm-tokens/_meta.js b/website/src/pages/fr/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/fr/token-api/svm-tokens/_meta.js +++ b/website/src/pages/fr/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/fr/token-api/svm-tokens/holders.mdx b/website/src/pages/fr/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/fr/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/fr/token-api/tvm-tokens/_meta.js b/website/src/pages/fr/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/fr/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/fr/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/fr/token-api/tvm-tokens/tokens.mdx b/website/src/pages/fr/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/fr/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/hi/ai-suite/_meta.js b/website/src/pages/hi/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/hi/ai-suite/_meta.js +++ b/website/src/pages/hi/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/hi/ai-suite/graph-assistant/_meta.js b/website/src/pages/hi/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/hi/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/hi/ai-suite/graph-assistant/faq.mdx b/website/src/pages/hi/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/hi/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/hi/graph-horizon/_meta.js b/website/src/pages/hi/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/hi/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/hi/graph-horizon/migration-guide.mdx b/website/src/pages/hi/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/hi/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/hi/graph-horizon/overview.mdx b/website/src/pages/hi/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/hi/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/hi/graph-horizon/what-changes.mdx b/website/src/pages/hi/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/hi/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/hi/token-api/evm-tokens/_meta.js b/website/src/pages/hi/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/hi/token-api/evm-tokens/_meta.js +++ b/website/src/pages/hi/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/hi/token-api/svm-tokens/_meta.js b/website/src/pages/hi/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/hi/token-api/svm-tokens/_meta.js +++ b/website/src/pages/hi/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/hi/token-api/svm-tokens/holders.mdx b/website/src/pages/hi/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/hi/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/hi/token-api/tvm-tokens/_meta.js b/website/src/pages/hi/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/hi/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/hi/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/hi/token-api/tvm-tokens/tokens.mdx b/website/src/pages/hi/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/hi/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/it/ai-suite/_meta.js b/website/src/pages/it/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/it/ai-suite/_meta.js +++ b/website/src/pages/it/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/it/ai-suite/graph-assistant/_meta.js b/website/src/pages/it/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/it/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/it/ai-suite/graph-assistant/faq.mdx b/website/src/pages/it/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/it/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/it/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/it/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/it/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/it/graph-horizon/_meta.js b/website/src/pages/it/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/it/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/it/graph-horizon/migration-guide.mdx b/website/src/pages/it/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/it/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/it/graph-horizon/overview.mdx b/website/src/pages/it/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/it/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/it/graph-horizon/what-changes.mdx b/website/src/pages/it/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/it/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/it/token-api/evm-tokens/_meta.js b/website/src/pages/it/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/it/token-api/evm-tokens/_meta.js +++ b/website/src/pages/it/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/it/token-api/svm-tokens/_meta.js b/website/src/pages/it/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/it/token-api/svm-tokens/_meta.js +++ b/website/src/pages/it/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/it/token-api/svm-tokens/holders.mdx b/website/src/pages/it/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/it/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/it/token-api/tvm-tokens/_meta.js b/website/src/pages/it/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/it/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/it/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/it/token-api/tvm-tokens/tokens.mdx b/website/src/pages/it/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/it/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/ja/ai-suite/_meta.js b/website/src/pages/ja/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/ja/ai-suite/_meta.js +++ b/website/src/pages/ja/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/ja/ai-suite/graph-assistant/_meta.js b/website/src/pages/ja/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/ja/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/ja/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ja/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/ja/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/ja/graph-horizon/_meta.js b/website/src/pages/ja/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/ja/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/ja/graph-horizon/migration-guide.mdx b/website/src/pages/ja/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/ja/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ja/graph-horizon/overview.mdx b/website/src/pages/ja/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/ja/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ja/graph-horizon/what-changes.mdx b/website/src/pages/ja/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/ja/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ja/token-api/evm-tokens/_meta.js b/website/src/pages/ja/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/ja/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ja/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/ja/token-api/svm-tokens/_meta.js b/website/src/pages/ja/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/ja/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ja/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/ja/token-api/svm-tokens/holders.mdx b/website/src/pages/ja/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/ja/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/ja/token-api/tvm-tokens/_meta.js b/website/src/pages/ja/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/ja/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/ja/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/ja/token-api/tvm-tokens/tokens.mdx b/website/src/pages/ja/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/ja/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/ko/ai-suite/_meta.js b/website/src/pages/ko/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/ko/ai-suite/_meta.js +++ b/website/src/pages/ko/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/ko/ai-suite/graph-assistant/_meta.js b/website/src/pages/ko/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/ko/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/ko/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ko/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/ko/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/ko/graph-horizon/_meta.js b/website/src/pages/ko/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/ko/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/ko/graph-horizon/migration-guide.mdx b/website/src/pages/ko/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/ko/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ko/graph-horizon/overview.mdx b/website/src/pages/ko/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/ko/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ko/graph-horizon/what-changes.mdx b/website/src/pages/ko/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/ko/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ko/token-api/evm-tokens/_meta.js b/website/src/pages/ko/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/ko/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ko/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/ko/token-api/svm-tokens/_meta.js b/website/src/pages/ko/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/ko/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ko/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/ko/token-api/svm-tokens/holders.mdx b/website/src/pages/ko/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/ko/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/ko/token-api/tvm-tokens/_meta.js b/website/src/pages/ko/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/ko/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/ko/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/ko/token-api/tvm-tokens/tokens.mdx b/website/src/pages/ko/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/ko/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/mr/ai-suite/_meta.js b/website/src/pages/mr/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/mr/ai-suite/_meta.js +++ b/website/src/pages/mr/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/mr/ai-suite/graph-assistant/_meta.js b/website/src/pages/mr/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/mr/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/mr/ai-suite/graph-assistant/faq.mdx b/website/src/pages/mr/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/mr/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/mr/graph-horizon/_meta.js b/website/src/pages/mr/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/mr/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/mr/graph-horizon/migration-guide.mdx b/website/src/pages/mr/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/mr/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/mr/graph-horizon/overview.mdx b/website/src/pages/mr/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/mr/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/mr/graph-horizon/what-changes.mdx b/website/src/pages/mr/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/mr/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/mr/token-api/evm-tokens/_meta.js b/website/src/pages/mr/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/mr/token-api/evm-tokens/_meta.js +++ b/website/src/pages/mr/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/mr/token-api/svm-tokens/_meta.js b/website/src/pages/mr/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/mr/token-api/svm-tokens/_meta.js +++ b/website/src/pages/mr/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/mr/token-api/svm-tokens/holders.mdx b/website/src/pages/mr/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/mr/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/mr/token-api/tvm-tokens/_meta.js b/website/src/pages/mr/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/mr/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/mr/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/mr/token-api/tvm-tokens/tokens.mdx b/website/src/pages/mr/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/mr/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/nl/ai-suite/_meta.js b/website/src/pages/nl/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/nl/ai-suite/_meta.js +++ b/website/src/pages/nl/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/nl/ai-suite/graph-assistant/_meta.js b/website/src/pages/nl/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/nl/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/nl/ai-suite/graph-assistant/faq.mdx b/website/src/pages/nl/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/nl/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/nl/graph-horizon/_meta.js b/website/src/pages/nl/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/nl/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/nl/graph-horizon/migration-guide.mdx b/website/src/pages/nl/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/nl/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/nl/graph-horizon/overview.mdx b/website/src/pages/nl/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/nl/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/nl/graph-horizon/what-changes.mdx b/website/src/pages/nl/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/nl/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/nl/token-api/evm-tokens/_meta.js b/website/src/pages/nl/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/nl/token-api/evm-tokens/_meta.js +++ b/website/src/pages/nl/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/nl/token-api/svm-tokens/_meta.js b/website/src/pages/nl/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/nl/token-api/svm-tokens/_meta.js +++ b/website/src/pages/nl/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/nl/token-api/svm-tokens/holders.mdx b/website/src/pages/nl/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/nl/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/nl/token-api/tvm-tokens/_meta.js b/website/src/pages/nl/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/nl/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/nl/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/nl/token-api/tvm-tokens/tokens.mdx b/website/src/pages/nl/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/nl/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/pl/ai-suite/_meta.js b/website/src/pages/pl/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/pl/ai-suite/_meta.js +++ b/website/src/pages/pl/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/pl/ai-suite/graph-assistant/_meta.js b/website/src/pages/pl/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/pl/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/pl/ai-suite/graph-assistant/faq.mdx b/website/src/pages/pl/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/pl/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/pl/graph-horizon/_meta.js b/website/src/pages/pl/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/pl/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/pl/graph-horizon/migration-guide.mdx b/website/src/pages/pl/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/pl/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/pl/graph-horizon/overview.mdx b/website/src/pages/pl/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/pl/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/pl/graph-horizon/what-changes.mdx b/website/src/pages/pl/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/pl/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/pl/token-api/evm-tokens/_meta.js b/website/src/pages/pl/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/pl/token-api/evm-tokens/_meta.js +++ b/website/src/pages/pl/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/pl/token-api/svm-tokens/_meta.js b/website/src/pages/pl/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/pl/token-api/svm-tokens/_meta.js +++ b/website/src/pages/pl/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/pl/token-api/svm-tokens/holders.mdx b/website/src/pages/pl/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/pl/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/pl/token-api/tvm-tokens/_meta.js b/website/src/pages/pl/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/pl/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/pl/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/pl/token-api/tvm-tokens/tokens.mdx b/website/src/pages/pl/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/pl/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/pt/ai-suite/_meta.js b/website/src/pages/pt/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/pt/ai-suite/_meta.js +++ b/website/src/pages/pt/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/pt/ai-suite/graph-assistant/_meta.js b/website/src/pages/pt/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/pt/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/pt/ai-suite/graph-assistant/faq.mdx b/website/src/pages/pt/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/pt/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/pt/graph-horizon/_meta.js b/website/src/pages/pt/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/pt/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/pt/graph-horizon/migration-guide.mdx b/website/src/pages/pt/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/pt/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/pt/graph-horizon/overview.mdx b/website/src/pages/pt/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/pt/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/pt/graph-horizon/what-changes.mdx b/website/src/pages/pt/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/pt/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/pt/token-api/evm-tokens/_meta.js b/website/src/pages/pt/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/pt/token-api/evm-tokens/_meta.js +++ b/website/src/pages/pt/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/pt/token-api/svm-tokens/_meta.js b/website/src/pages/pt/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/pt/token-api/svm-tokens/_meta.js +++ b/website/src/pages/pt/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/pt/token-api/svm-tokens/holders.mdx b/website/src/pages/pt/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/pt/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/pt/token-api/tvm-tokens/_meta.js b/website/src/pages/pt/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/pt/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/pt/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/pt/token-api/tvm-tokens/tokens.mdx b/website/src/pages/pt/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/pt/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/ro/ai-suite/_meta.js b/website/src/pages/ro/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/ro/ai-suite/_meta.js +++ b/website/src/pages/ro/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/ro/ai-suite/graph-assistant/_meta.js b/website/src/pages/ro/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/ro/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/ro/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ro/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/ro/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/ro/graph-horizon/_meta.js b/website/src/pages/ro/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/ro/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/ro/graph-horizon/migration-guide.mdx b/website/src/pages/ro/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/ro/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ro/graph-horizon/overview.mdx b/website/src/pages/ro/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/ro/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ro/graph-horizon/what-changes.mdx b/website/src/pages/ro/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/ro/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ro/token-api/evm-tokens/_meta.js b/website/src/pages/ro/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/ro/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ro/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/ro/token-api/svm-tokens/_meta.js b/website/src/pages/ro/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/ro/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ro/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/ro/token-api/svm-tokens/holders.mdx b/website/src/pages/ro/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/ro/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/ro/token-api/tvm-tokens/_meta.js b/website/src/pages/ro/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/ro/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/ro/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/ro/token-api/tvm-tokens/tokens.mdx b/website/src/pages/ro/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/ro/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/ru/ai-suite/_meta.js b/website/src/pages/ru/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/ru/ai-suite/_meta.js +++ b/website/src/pages/ru/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/ru/ai-suite/graph-assistant/_meta.js b/website/src/pages/ru/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/ru/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/ru/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ru/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/ru/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/ru/graph-horizon/_meta.js b/website/src/pages/ru/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/ru/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/ru/graph-horizon/migration-guide.mdx b/website/src/pages/ru/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/ru/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ru/graph-horizon/overview.mdx b/website/src/pages/ru/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/ru/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ru/graph-horizon/what-changes.mdx b/website/src/pages/ru/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/ru/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ru/token-api/evm-tokens/_meta.js b/website/src/pages/ru/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/ru/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ru/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/ru/token-api/svm-tokens/_meta.js b/website/src/pages/ru/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/ru/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ru/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/ru/token-api/svm-tokens/holders.mdx b/website/src/pages/ru/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/ru/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/ru/token-api/tvm-tokens/_meta.js b/website/src/pages/ru/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/ru/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/ru/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/ru/token-api/tvm-tokens/tokens.mdx b/website/src/pages/ru/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/ru/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/sv/ai-suite/_meta.js b/website/src/pages/sv/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/sv/ai-suite/_meta.js +++ b/website/src/pages/sv/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/sv/ai-suite/graph-assistant/_meta.js b/website/src/pages/sv/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/sv/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/sv/ai-suite/graph-assistant/faq.mdx b/website/src/pages/sv/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/sv/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/sv/graph-horizon/_meta.js b/website/src/pages/sv/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/sv/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/sv/graph-horizon/migration-guide.mdx b/website/src/pages/sv/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/sv/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/sv/graph-horizon/overview.mdx b/website/src/pages/sv/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/sv/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/sv/graph-horizon/what-changes.mdx b/website/src/pages/sv/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/sv/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/sv/token-api/evm-tokens/_meta.js b/website/src/pages/sv/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/sv/token-api/evm-tokens/_meta.js +++ b/website/src/pages/sv/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/sv/token-api/svm-tokens/_meta.js b/website/src/pages/sv/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/sv/token-api/svm-tokens/_meta.js +++ b/website/src/pages/sv/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/sv/token-api/svm-tokens/holders.mdx b/website/src/pages/sv/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/sv/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/sv/token-api/tvm-tokens/_meta.js b/website/src/pages/sv/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/sv/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/sv/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/sv/token-api/tvm-tokens/tokens.mdx b/website/src/pages/sv/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/sv/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/tr/ai-suite/_meta.js b/website/src/pages/tr/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/tr/ai-suite/_meta.js +++ b/website/src/pages/tr/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/tr/ai-suite/graph-assistant/_meta.js b/website/src/pages/tr/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/tr/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/tr/ai-suite/graph-assistant/faq.mdx b/website/src/pages/tr/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/tr/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/tr/graph-horizon/_meta.js b/website/src/pages/tr/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/tr/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/tr/graph-horizon/migration-guide.mdx b/website/src/pages/tr/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/tr/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/tr/graph-horizon/overview.mdx b/website/src/pages/tr/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/tr/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/tr/graph-horizon/what-changes.mdx b/website/src/pages/tr/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/tr/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/tr/token-api/evm-tokens/_meta.js b/website/src/pages/tr/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/tr/token-api/evm-tokens/_meta.js +++ b/website/src/pages/tr/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/tr/token-api/svm-tokens/_meta.js b/website/src/pages/tr/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/tr/token-api/svm-tokens/_meta.js +++ b/website/src/pages/tr/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/tr/token-api/svm-tokens/holders.mdx b/website/src/pages/tr/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/tr/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/tr/token-api/tvm-tokens/_meta.js b/website/src/pages/tr/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/tr/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/tr/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/tr/token-api/tvm-tokens/tokens.mdx b/website/src/pages/tr/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/tr/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/uk/ai-suite/_meta.js b/website/src/pages/uk/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/uk/ai-suite/_meta.js +++ b/website/src/pages/uk/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/uk/ai-suite/graph-assistant/_meta.js b/website/src/pages/uk/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/uk/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/uk/ai-suite/graph-assistant/faq.mdx b/website/src/pages/uk/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/uk/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/uk/graph-horizon/_meta.js b/website/src/pages/uk/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/uk/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/uk/graph-horizon/migration-guide.mdx b/website/src/pages/uk/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/uk/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/uk/graph-horizon/overview.mdx b/website/src/pages/uk/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/uk/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/uk/graph-horizon/what-changes.mdx b/website/src/pages/uk/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/uk/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/uk/token-api/evm-tokens/_meta.js b/website/src/pages/uk/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/uk/token-api/evm-tokens/_meta.js +++ b/website/src/pages/uk/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/uk/token-api/svm-tokens/_meta.js b/website/src/pages/uk/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/uk/token-api/svm-tokens/_meta.js +++ b/website/src/pages/uk/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/uk/token-api/svm-tokens/holders.mdx b/website/src/pages/uk/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/uk/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/uk/token-api/tvm-tokens/_meta.js b/website/src/pages/uk/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/uk/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/uk/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/uk/token-api/tvm-tokens/tokens.mdx b/website/src/pages/uk/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/uk/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/ur/ai-suite/_meta.js b/website/src/pages/ur/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/ur/ai-suite/_meta.js +++ b/website/src/pages/ur/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/ur/ai-suite/graph-assistant/_meta.js b/website/src/pages/ur/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/ur/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/ur/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ur/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/ur/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/ur/graph-horizon/_meta.js b/website/src/pages/ur/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/ur/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/ur/graph-horizon/migration-guide.mdx b/website/src/pages/ur/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/ur/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/ur/graph-horizon/overview.mdx b/website/src/pages/ur/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/ur/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/ur/graph-horizon/what-changes.mdx b/website/src/pages/ur/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/ur/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/ur/token-api/evm-tokens/_meta.js b/website/src/pages/ur/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/ur/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ur/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/ur/token-api/svm-tokens/_meta.js b/website/src/pages/ur/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/ur/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ur/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/ur/token-api/svm-tokens/holders.mdx b/website/src/pages/ur/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/ur/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/ur/token-api/tvm-tokens/_meta.js b/website/src/pages/ur/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/ur/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/ur/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/ur/token-api/tvm-tokens/tokens.mdx b/website/src/pages/ur/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/ur/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/vi/ai-suite/_meta.js b/website/src/pages/vi/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/vi/ai-suite/_meta.js +++ b/website/src/pages/vi/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/vi/ai-suite/graph-assistant/_meta.js b/website/src/pages/vi/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/vi/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/vi/ai-suite/graph-assistant/faq.mdx b/website/src/pages/vi/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/vi/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/vi/graph-horizon/_meta.js b/website/src/pages/vi/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/vi/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/vi/graph-horizon/migration-guide.mdx b/website/src/pages/vi/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/vi/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/vi/graph-horizon/overview.mdx b/website/src/pages/vi/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/vi/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/vi/graph-horizon/what-changes.mdx b/website/src/pages/vi/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/vi/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/vi/token-api/evm-tokens/_meta.js b/website/src/pages/vi/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/vi/token-api/evm-tokens/_meta.js +++ b/website/src/pages/vi/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/vi/token-api/svm-tokens/_meta.js b/website/src/pages/vi/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/vi/token-api/svm-tokens/_meta.js +++ b/website/src/pages/vi/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/vi/token-api/svm-tokens/holders.mdx b/website/src/pages/vi/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/vi/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/vi/token-api/tvm-tokens/_meta.js b/website/src/pages/vi/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/vi/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/vi/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/vi/token-api/tvm-tokens/tokens.mdx b/website/src/pages/vi/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/vi/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata. diff --git a/website/src/pages/zh/ai-suite/_meta.js b/website/src/pages/zh/ai-suite/_meta.js index c9e51dfd35fb..db5b6fbe12fe 100644 --- a/website/src/pages/zh/ai-suite/_meta.js +++ b/website/src/pages/zh/ai-suite/_meta.js @@ -2,7 +2,6 @@ import titles from './_meta-titles.json' export default { 'ai-introduction': titles['ai-introduction'], - 'graph-assistant': titles['graph-assistant'], 'subgraph-mcp': titles['subgraph-mcp'], 'token-api-mcp': titles['token-api-mcp'], } diff --git a/website/src/pages/zh/ai-suite/graph-assistant/_meta.js b/website/src/pages/zh/ai-suite/graph-assistant/_meta.js deleted file mode 100644 index 74da5e0686a7..000000000000 --- a/website/src/pages/zh/ai-suite/graph-assistant/_meta.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'quick-start': '', - introduction: '', - 'how-to-guide': '', - faq: '', -} diff --git a/website/src/pages/zh/ai-suite/graph-assistant/faq.mdx b/website/src/pages/zh/ai-suite/graph-assistant/faq.mdx deleted file mode 100644 index 0388ac49bb25..000000000000 --- a/website/src/pages/zh/ai-suite/graph-assistant/faq.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graph Assistant FAQ -sidebarTitle: 'FAQ' ---- - -This page summarizes some of the most common questions for developers using Graph Assistant. - -1. What is The Graph Assistant? - -The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required. - -2. What is an agentic application? - -An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself. - -3. Which networks and data does Graph Assistant support? - -The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum One, Optimism, and Polygon. - -4. Is there a usage limit or quota? - -Yes, 10 questions per hour. - -5. What if the Assistant can't interpret my question? - -When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly. diff --git a/website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx deleted file mode 100644 index 463130894ad8..000000000000 --- a/website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: How To Use The Graph Assistant -sidebarTitle: 'How-to Guide' ---- - -## Overview - -You type a natural language question into the chat interface, such as: - -```yaml -'On Uniswap, return the top-10 pools by total value locked in USD.' -``` - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information. - -### Behind the Scenes - -The Assistant: - -1. Interprets your intent -2. Maps it to the correct Subgraphs or Token API endpoint -3. Executes optimized queries -4. Returns clean, structured results - -You don't need to write queries or understand a Subgraph's schema, you simply ask. - -### Example Use Cases - -**Protocol Analytics** - -- “Compare daily active users on Aave vs. Compound in May 2025.” -- “Show me the total value locked (TVL) for XYZDAO over the last quarter.” - -**Token Insights** - -- “What are the top 10 tokens by market cap on Ethereum right now?” -- “How many XYZ did I receive between May 1 and May 15?” - -**Historical Data Retrieval** - -- “Fetch the token price history of XYZ for the last six months.” -- “What was the average gas price on Ethereum during April?” - -**Portfolio Monitoring** - -- “List my wallet’s current token balances and their USD equivalents.” -- “Calculate profit/loss on XYZ since xyz date.” - -**Cross-Chain Comparison** - -- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.” -- “How many XYZ swaps occurred on Arbitrum yesterday?” - -To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities. diff --git a/website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx deleted file mode 100644 index 65fdf0f96028..000000000000 --- a/website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Introduction ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code. - -## Overview - -[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code. - -- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code. -- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets. - -## Core Features - -| Feature | Description | -| --- | --- | -| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. | -| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. | -| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. | -| **No Setup Required** | No need to configure data sources or write queries. | -| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. | - -## Help Shape What's Next - -This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you: - -- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly. -- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported. diff --git a/website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx deleted file mode 100644 index 13f8478b8d2b..000000000000 --- a/website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Quick Start ---- - -> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime. - -This guide provides step-by-step instructions for getting started with Graph Assistant quickly. - -## Step-by Step - -### Step 1. Create an Account - -Go to: [Graph Assistant](https://thegraph.com/graph-assistant) - -- Click Sign Up (or Log In if you already have an account). -- Use your Google, GitHub, X, email or wallet credentials to log in. -- No additional setup is required. - -### Step 2. Open the Assistant Chat - -After logging in: - -- You'll see Graph Assistant's interface. -- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant. - -### Step 3: Ask Your First Question - -> [!IMPORTANT] All users can process 10 free queries per user per hour. - -In the input bar, type a natural-language query (everyday language). - -Example: - -```yaml -Show me the 24-hour trading volume of XYZ token on Ethereum -``` - -> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information. - -The Assistant will: - -- Digest your question -- Fetch onchain data using Subgraphs or the Token API -- Return a clean, formatted response with the data you need diff --git a/website/src/pages/zh/graph-horizon/_meta.js b/website/src/pages/zh/graph-horizon/_meta.js new file mode 100644 index 000000000000..19d249237f38 --- /dev/null +++ b/website/src/pages/zh/graph-horizon/_meta.js @@ -0,0 +1,5 @@ +export default { + overview: '', + 'what-changes': '', + 'migration-guide': '', +} diff --git a/website/src/pages/zh/graph-horizon/migration-guide.mdx b/website/src/pages/zh/graph-horizon/migration-guide.mdx new file mode 100644 index 000000000000..16fd438010f6 --- /dev/null +++ b/website/src/pages/zh/graph-horizon/migration-guide.mdx @@ -0,0 +1,45 @@ +--- +title: Graph Horizon Migration Guide +sidebarTitle: Migration Guide +--- + +For updated progress and schedule for the upgrade please [Graph Horizon: Mainnet schedule](https://www.notion.so/edgeandnode/Graph-Horizon-Mainnet-schedule-2928686fc7c28058b906fb6c6dfbdb63?source=copy_link). + +## Who Needs to Take Action? + +The Graph Horizon upgrade has been designed to minimize disruption across the network. Here's what different participants need to know: + +### Indexers + +**Action Required**: Indexers must upgrade their infrastructure to support Graph Horizon. + +The upgrade involves updating indexer software components and infrastructure to be compatible with the new Horizon architecture. + +🚨 **Important**: Graph Horizon is a breaking change to the protocol. Indexers who do not upgrade will eventually lose access to indexing rewards and query fees. Existing allocations opened before Graph Horizon will continue to accrue rewards and fees, but non-upgraded indexers will be unable to open new allocations. + +For detailed upgrade instructions, see the [Indexer Upgrade Guide](https://www.notion.so/edgeandnode/Graph-Horizon-indexer-stack-upgrade-guide-2658686fc7c2808984fbcc55e535e3b2?source=copy_link). + +### Delegators + +**No Action Required**: Delegations will continue to work seamlessly. + +Your delegated stake will automatically transition to the new Horizon system, specifically it will be assigned to the `SubgraphService` data service for the original indexer that was delegated to. You don't need to undelegate, re-delegate, or make any changes to your existing delegations. + +### Curators + +**No Action Required**: Curation signals will be preserved. + +All existing curation signals on subgraphs will remain intact and continue to function as expected in the Horizon upgrade. No action is needed from curators. + +### End Users & Developers + +**No Action Required**: Subgraph queries will continue without interruption. + +Applications querying subgraphs will experience no disruption. The upgrade is designed to be transparent to end users and developers building on The Graph. + +## Support + +If you have questions about the upgrade process please reach out: + +- [The Graph Discord](https://discord.gg/graphprotocol) +- [The Graph Forum](https://forum.thegraph.com/) diff --git a/website/src/pages/zh/graph-horizon/overview.mdx b/website/src/pages/zh/graph-horizon/overview.mdx new file mode 100644 index 000000000000..ab5026c61e26 --- /dev/null +++ b/website/src/pages/zh/graph-horizon/overview.mdx @@ -0,0 +1,48 @@ +--- +title: Graph Horizon Overview +sidebarTitle: Overview +--- + +This document provides a high level overview of Graph Horizon. For a deep dive the following GIPs are recommended: + +- [GIP-0066: Introducing Graph Horizon - A data services protocol](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0066-graph-horizon.md) +- [GIP-0068: Subgraph Service - A subgraph data service in Graph Horizon](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0068-subgraph-service.md) +- [GIP-0085: Graph Horizon: Arbitration Charter](https://github.com/graphprotocol/graph-improvement-proposals/blob/3da23cbba56fbd211de61f08c60b8c3e93ba5bc5/gips/0085-horizon-arbitration-charter.md) + +The Graph Protocol is evolving with Horizon, a major upgrade that transforms the protocol into a more flexible and modular data services platform. While The Graph's core mission of organizing the world's public data remains unchanged, Horizon introduces a new architecture that enables permissionless innovation and improved economic mechanisms. + +This upgrade represents the next evolution of The Graph, making it more composable, efficient, and capable of supporting various types of data services beyond just subgraphs. + +## Graph Horizon in a nutshell + +The Graph Protocol as originally designed and launched back in 2021 is comprised of three distinct parts: + +- Staking mechanisms to provide economic security to the network +- Payments mechanisms to allow users to pay for access to data +- Support for the subgraphs use case + +The protocol achieves this goals very well however it was designed specifically with the subgraph use case in mind. This resulted in those three components being very tightly coupled, making changes to the protocol hard to do and risky, and also not providing enough flexibility to support other use cases. + +Graph Horizon’s main goal is to transform The Graph into a protocol capable of serving a multitude of data services, not just subgraphs. It achieves this by extracting the core functionality into primitives that can be reused by arbitrary data service implementations: + +- Core staking protocol +- Core payments protocol +- Arbitrary data service implementations + +These primitives can be permissionlessly composed by developers by means of the Data Service Framework. + +## The Data Service Framework + +Horizon introduces a modular Data Service Framework that allows different types of data services to be built on top of The Graph's core staking and payments infrastructure. + +The **`SubgraphService`** is the first and currently only data service implementation, supporting the existing functionality of indexing subgraphs and serving queries. This modular approach means that in the future, other data services could be added to support different use cases like SQL queries, data streams, or other data delivery mechanisms. A key benefit of Horizon is that new data services can be developed and deployed permissionlessly with minimal cost and development time, as they can leverage the existing staking and payments infrastructure. + +## Enhanced Payment System + +### Integrated Payments Protocol + +While the current protocol uses TAP (Timeline Aggregation Protocol) for payments, Horizon brings the payments infrastructure directly into the core protocol. The payments protocol in Horizon was designed as a generalized version of TAP v1, allowing integration with TAPv2 (GraphTally) but also any other arbitrary payment collection system. + +### GraphPayments and PaymentsEscrow + +A new set of contracts `GraphPayments` and `PaymentsEscrow` contracts handle the escrow and distribution of fees to all relevant parties. This contracts enforce things like the protocol tax and ensures that payments are properly distributed between data services, delegators, and indexers, making the payment process transparent. diff --git a/website/src/pages/zh/graph-horizon/what-changes.mdx b/website/src/pages/zh/graph-horizon/what-changes.mdx new file mode 100644 index 000000000000..cfffea952a4a --- /dev/null +++ b/website/src/pages/zh/graph-horizon/what-changes.mdx @@ -0,0 +1,88 @@ +--- +title: What changes with Graph Horizon? +sidebarTitle: What's new +--- + +## For Indexers + +### Provisions: A New Way to Manage Stake + +Previously, when indexers staked GRT, it was automatically available for use across all protocol operations. This made sense since the protocol only supported one use case, that one of subgraphs. With Horizon, indexers must explicitly assign stake to a desired data service before it being available for operations for that specific data service. This is known as creating a data service "provision" or “provisioning stake”. This gives indexers more control over how their stake is used and which services they want to support. Once stake is “provisioned” and assigned, it’s up to the data service to work out how that stake can be utilized. For example, in the specific case of the `SubgraphService` the sequence would be as follows: + +- Indexer stakes GRT to the protocol +- Indexer assigns staked GRT to the `SubgraphService` data service +- Indexer uses (part of) provisioned stake to create allocations + +### Data Service Registration + +Registration is now handled by each data service when needed. For the `SubgraphService`, indexers register directly with it rather than using a separate `ServiceRegistry` contract. Each data service can define its own registration requirements, or may not require registration at all. + +### Payment Collection Changes + +Collecting payments, for example query fees for serving subgraphs, now requires locking a portion of stake as collateral. The amount of stake locked is determined by a `stake-to-fees` ratio - for example, collecting 10 GRT in fees might require locking 50 GRT in stake temporarily. This ensures economic security for the query services provided. + +### Subgraph Service: Long-Lived Allocations + +One of the most significant changes is the allocation lifecycle. In the current protocol, indexers must close and recreate allocations every 28 days to collect rewards. With the new `SubgraphService`, allocations can remain open indefinitely. Indexers simply present Proofs of Indexing (POIs) periodically to collect rewards without closing allocations. + +While allocations no longer need to be closed, indexers must now present POIs regularly to keep allocations fresh. If an allocation becomes stale due to not presenting POIs in time, the indexer forfeits rewards for that period. Unlike the current protocol where rewards can still be collected retroactively, Horizon enforces stricter timing requirements to ensure active participation. + +⚠️ **Important:** At Horizon launch the indexer stack will continue to operate using the current “short lived” allocation lifecycle for an easier transition. This means that allocations will be recycled typically every 28 days same as they do in the current version of the protocol. A future version of the indexer-agent will take advantage of “long lived” allocations. + +### Subgraph Service: legacy allocations + +During a transition period after the upgrade, indexers can continue to close their existing “legacy” allocations on the old system while opening new ones on the `SubgraphService`. New allocations will only be allowed to be opened using the `SubgraphService` so any indexer wanting to continue to operate would have to migrate. + +### Clarification on indexing rewards + +Horizon does not change the way indexing rewards work, the rewards formula remains the same. The only thing that changes is that in Horizon the calculation considers both legacy and horizon allocations when determining the amount of stake allocated to a subgraph. This does not change how rewards are issued nor the amount that is issued. For example, this two scenarios will have the same amount of rewards distributed: + +- Legacy allocation 1 with 10k GRT + Legacy allocation 2 with 10k GRT +- Legacy allocation 1 with 10k GRT + Horizon allocation 1 with 10k GRT + +### Serving queries and the gateway behavior + +The indexer stack will support both the current and Horizon gateway infrastructure, which means with the same indexer stack version indexers will be able to serve queries before and after the Horizon upgrade. It’s worth clarifying however the gateway behavior: + +- Before Horizon, the gateway will serve queries using TAPv1 receipts. +- After Horizon, the gateway will _only_ serve queries using TAPv2 (GraphTally) receipts. This means that indexers that have not upgraded their stack to Horizon will stop receiving queries. The gateway infrastructure will continue to accept old TAPv1 receipts and vouchers to ensure those can be redeemed and no fees are lost. + +## For Delegators + +### Per Data-Service Delegation + +Delegation is now more specific - delegators must choose both an indexer AND a data service to delegate to. This gives delegators more control and ensures their stake is only used for services they've explicitly approved. Existing delegations will automatically migrate to the `SubgraphService`. + +For practical purposes, The Graph's user interfaces will only support delegation to the `SubgraphService`. While Horizon's architecture allows delegation to other data services, supporting them would require UI changes or new interfaces. In the future as new data services emerge new user interfaces will likely do so, or existing ones will be upgraded to support them. + +### Potential Future Slashability + +While delegation is currently not slashable, the new system includes the capability for delegation to become slashable in the future. This would add an additional layer of economic security to the network by increasing the amount of stake at risk. + +Note that delegation slashing will not be enabled by default. If it is ever enabled, the system includes protection mechanisms where indexer stake would always be slashed first before any delegator funds are touched, providing a buffer for delegators. + +### No More Delegation Tax + +The 0.5% delegation tax has been completely removed, making it more economical for delegators to participate in the network. + +### Multiple Undelegation Requests + +Delegators can now have multiple undelegation requests processing simultaneously (up to 100), providing more flexibility in managing their stake. + +## Changes to Slashing + +### Flexible slashing percentage + +Instead of fixed slashing percentages, arbitrators now have the flexibility to determine appropriate slash amounts based on the severity and context of infractions (up to a cap of 10% of the indexer’s stake). This allows for more nuanced and fair dispute resolution. Note however that the new Arbitration Charter will recommend using a fixed slashing percentage unless the Arbitration team deems it necessary to adjust. The recommended value is 2.5% of the indexer’s stake. + +### Fisherman protection + +Fishermen can now reclaim their bonds if disputes aren't resolved within the dispute period, preventing their funds from being locked indefinitely. + +## What Stays the Same + +While Horizon brings significant improvements, several core elements remain unchanged: + +- **Curation mechanism**: The way subgraphs are signaled and curated remains the same +- **Indexing rewards formula**: The calculation and distribution of indexing rewards follows the same formula +- **GRT token**: The Graph Token (GRT) remains unchanged diff --git a/website/src/pages/zh/token-api/evm-tokens/_meta.js b/website/src/pages/zh/token-api/evm-tokens/_meta.js index 8098de7e23ab..2aeed42ff9f1 100644 --- a/website/src/pages/zh/token-api/evm-tokens/_meta.js +++ b/website/src/pages/zh/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - 'balances-historical': '', - 'balances-native': '', - balances: '', - holders: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + 'balances-historical': '', + holders: '', } diff --git a/website/src/pages/zh/token-api/svm-tokens/_meta.js b/website/src/pages/zh/token-api/svm-tokens/_meta.js index 78cef8966836..1de31437004c 100644 --- a/website/src/pages/zh/token-api/svm-tokens/_meta.js +++ b/website/src/pages/zh/token-api/svm-tokens/_meta.js @@ -1,7 +1,8 @@ export default { - 'balances-native': '', - balances: '', - owner: '', tokens: '', transfers: '', + balances: '', + 'balances-native': '', + holders: '', + owner: '', } diff --git a/website/src/pages/zh/token-api/svm-tokens/holders.mdx b/website/src/pages/zh/token-api/svm-tokens/holders.mdx new file mode 100644 index 000000000000..6d1cd7475946 --- /dev/null +++ b/website/src/pages/zh/token-api/svm-tokens/holders.mdx @@ -0,0 +1,9 @@ +--- +title: Token Holders +template: + type: openApi + apiId: tokenApi + operationId: getV1SvmHolders +--- + +Returns top token holders ranked by balance. diff --git a/website/src/pages/zh/token-api/tvm-tokens/_meta.js b/website/src/pages/zh/token-api/tvm-tokens/_meta.js index 7cc4cd31e7a7..9bf85775e9f9 100644 --- a/website/src/pages/zh/token-api/tvm-tokens/_meta.js +++ b/website/src/pages/zh/token-api/tvm-tokens/_meta.js @@ -1,4 +1,5 @@ export default { + tokens: '', 'transfers-native': '', transfers: '', } diff --git a/website/src/pages/zh/token-api/tvm-tokens/tokens.mdx b/website/src/pages/zh/token-api/tvm-tokens/tokens.mdx new file mode 100644 index 000000000000..ee8a74b3a673 --- /dev/null +++ b/website/src/pages/zh/token-api/tvm-tokens/tokens.mdx @@ -0,0 +1,9 @@ +--- +title: Token Metadata +template: + type: openApi + apiId: tokenApi + operationId: getV1TvmTokens +--- + +Provides TVM token contract metadata.