Skip to content

Implement cross-chain guild identity resolution per RFC #427

Description

@Lakes41

Difficulty: Expert
Type: Feature
Recommended labels (if available in this repo): enhancement, protocol, multi-chain

Background

docs/rfcs/cross-chain-guild-identity.md documents a design for resolving a single guild identity across multiple EVM chains, but the SDK currently only has single-chain provider/config plumbing (src/config/networkConfig.ts, per-chain contract clients).

Problem

GuildPass communities that deploy membership contracts on more than one chain currently have no SDK-level way to resolve 'this wallet's guild identity' as a unified concept spanning chains — each chain must be queried and reconciled manually by the consumer.

Expected Outcome

A resolveGuildIdentity(walletAddress, guildId) API that implements the RFC's identity-linking design, querying configured chains for the guild and returning a unified identity object with per-chain membership/role details plus an aggregated view.

Suggested Implementation

Follow the RFC's data model precisely. Extend networkConfig.ts to support multiple chain configs per guild. Add a resolution module under src/access/ or a new src/identity/ directory that fans out per-chain contract reads (using the existing provider infrastructure) and merges results per the RFC's precedence/aggregation rules. Handle partial-chain failures explicitly (e.g. one chain's RPC is down) per whatever degradation behavior the RFC specifies.

Acceptance Criteria

  • Implementation matches the data model and resolution rules described in docs/rfcs/cross-chain-guild-identity.md
  • Correctly aggregates membership/roles across at least 2 configured chains in tests
  • Partial chain failure (one RPC down) is handled per the RFC's specified degradation behavior, not a silent full failure
  • Unit tests cover full-success, partial-failure, and all-chains-failed scenarios
  • pnpm test:run and pnpm typecheck pass

Likely Affected Files/Directories

  • docs/rfcs/cross-chain-guild-identity.md
  • src/config/networkConfig.ts
  • src/access/access.service.ts
  • src/contracts/contractClient.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesOfficial Campaign | FWC26Official FWC26 campaign issue — eligible for campaign scoring and rewards

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions