-
Notifications
You must be signed in to change notification settings - Fork 19
feat(docs): 1.17.0 Docs Update — EFP, ERC-8004 #2327
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
shrugs
wants to merge
5
commits into
main
Choose a base branch
from
worktree-docs+next
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
fcaaf87
feat(docs): EFP Omnigraph example queries, skill, and plugin docs
shrugs ad03dc2
chore: drop changesets
shrugs 07080cd
docs: EFP SQL schema reference + category-driven example aside
shrugs 606ef73
docs: add ERC-8004 Complementary Protocols page; group EFP under it
shrugs ca2b301
docs: correct efp_account_metadata key dimensionality to (chain_id, a…
shrugs File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32 changes: 32 additions & 0 deletions
32
...nsnode.io/src/components/molecules/omnigraph-static-example/ExampleRequirementAside.astro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| --- | ||
| // Renders a plugin-requirement Aside for an Omnigraph example, driven by the example's category. | ||
| // Example pages pass their `id`; the component looks the example up and renders the matching aside | ||
| // (or nothing) so requirement notices stay consistent and live next to the example definition. | ||
| import { Aside } from "@astrojs/starlight/components"; | ||
|
|
||
| import { getOmnigraphExampleConfigById } from "@data/omnigraph-examples/config"; | ||
|
|
||
| interface Props { | ||
| id: string; | ||
| } | ||
|
|
||
| const { id } = Astro.props; | ||
| const category = getOmnigraphExampleConfigById(id)?.category; | ||
| --- | ||
|
|
||
| { | ||
| category === "EFP" && ( | ||
|
Comment on lines
+14
to
+18
|
||
| <Aside type="tip" title="EFP plugin required"> | ||
| <p> | ||
| These queries read{" "} | ||
| <a href="/docs/integrate/omnigraph/complementary/efp">Ethereum Follow Protocol (EFP)</a>{" "} | ||
| data, which requires the{" "} | ||
| <a href="/docs/integrate/omnigraph/complementary/efp"> | ||
| <code>efp</code> plugin | ||
| </a>{" "} | ||
| to be enabled on the connected ENSIndexer. It is enabled on the hosted{" "} | ||
| <a href="/docs/hosted-instances#ensnode-alpha">ENSNode 'Alpha'</a> instance. | ||
| </p> | ||
| </Aside> | ||
| ) | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
76 changes: 76 additions & 0 deletions
76
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/complementary/efp.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| --- | ||
| title: Ethereum Follow Protocol (EFP) | ||
| description: Query the Ethereum Follow Protocol (EFP) onchain social graph through the ENS Omnigraph API by enabling the efp plugin. | ||
| sidebar: | ||
| label: EFP (Social Graph) | ||
| --- | ||
|
|
||
| import { Aside, LinkCard } from "@astrojs/starlight/components"; | ||
| import OmnigraphStaticExampleSet from "@components/organisms/OmnigraphStaticExampleSet.astro"; | ||
|
|
||
| The [Ethereum Follow Protocol (EFP)](https://efp.app) is an onchain social graph for Ethereum accounts — a decentralized "who follows whom" primitive. Because EFP composes directly with ENS identity, the ENS Omnigraph API exposes it alongside ENS data, so you can read an account's follow graph **and** resolve each followed account's ENS name in a single query. | ||
|
|
||
| ## A complementary protocol for ENS | ||
|
|
||
| <Aside type="note" title="Strengthen ENS's role as the identity layer for social graphs"> | ||
| A social graph is only useful when its nodes have human-readable identity, and ENS is the | ||
| identity layer EFP already builds on. Harmonizing EFP with ENS in the ENS Omnigraph API lets ENS | ||
| capture the network effects and market distribution of onchain social — every followed account | ||
| resolves straight to an ENS name and profile. | ||
|
|
||
| As with every complementary protocol, this harmonization is achieved through an optional ENSNode | ||
| plugin at the API layer. Each operator of an ENSNode instance decides for themselves whether to | ||
| activate the `efp` plugin, so ENS gains the integration without permanently committing to it. | ||
|
|
||
| </Aside> | ||
|
|
||
| ## Enabling the plugin | ||
|
|
||
| EFP is indexed by the **`efp` plugin**. The Omnigraph's `Query.efp` and `Account.efp` fields return data only when the connected ENSIndexer has this plugin enabled; otherwise they resolve to `null` — treat that like any other unsupported-instance case, not a query error. | ||
|
|
||
| To enable it on your own instance, add `efp` to the ENSIndexer `PLUGINS` environment variable (a comma-separated list), for example: | ||
|
|
||
| ```bash | ||
| PLUGINS=unigraph,efp | ||
| ``` | ||
|
|
||
| The `efp` plugin's datasources are defined for the **mainnet** namespace (the EFP contracts on Base, OP Mainnet, and Ethereum Mainnet) and the local **ens-test-env** devnet. | ||
|
|
||
| :::note[Already enabled on the Alpha instance] | ||
| The hosted [ENSNode 'Alpha'](/docs/hosted-instances#ensnode-alpha) instance has the `efp` plugin enabled, so you can run every query on this page against it without hosting anything yourself. | ||
| ::: | ||
|
|
||
| ## What it indexes | ||
|
|
||
| The plugin indexes the full EFP onchain state into ENSDb: | ||
|
|
||
| - **Lists** — the ERC-721 NFTs that hold follow relationships, with their `owner` / `manager` / `user` roles and storage location. | ||
| - **List records** — the individual follows (address records), each with its **tags** (`block`, `mute`, `top8`, and custom tags). | ||
| - **Account metadata** — the onchain `(address, key) → value` store, including the `primary-list` key used to validate an account's primary list. | ||
|
|
||
| ## The API surface | ||
|
|
||
| EFP is exposed through two entry points: | ||
|
|
||
| - **`Account.efp`** — an account's EFP presence: validated, block/mute-filtered `following` / `followers` connections (whose edges are full `Account`s you can resolve straight into ENS names), the validated `primaryList`, and raw account `metadata`. | ||
| - **`Query.efp`** — list-centric queries: `list(by: { tokenId })`, `lists(where:)` by role address, and `listRecords(where:)` (the raw record set, including `block`/`mute`). | ||
|
|
||
| Prefer `Account.efp.following` / `followers` for the social-graph answer — they apply EFP's primary-list validation and block/mute filtering for you. Drop to the raw `Query.efp.listRecords` / `EfpList.records` only when you specifically need tags, storage location, or non-primary lists. | ||
|
|
||
| ## Example | ||
|
|
||
| <OmnigraphStaticExampleSet id="efp-follow-graph" hideBackToExamples /> | ||
|
|
||
| ## Learn more | ||
|
|
||
| <LinkCard | ||
| title="EFP examples" | ||
| description="Runnable Omnigraph queries for the EFP social graph, lists, and records." | ||
| href="/docs/integrate/omnigraph/examples" | ||
| /> | ||
|
|
||
| <LinkCard | ||
| title="EFP protocol docs" | ||
| description="The data model and validity rules behind EFP, at docs.efp.app." | ||
| href="https://docs.efp.app" | ||
| /> |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.