Overview

Cross Chain Entitlement Checking is a key feature in River Protocol, enabling the verification of entitlements that are stored on blockchains other than Base. Initially this set is restricted to other EVM chains Ethereum Mainnet, Optimism, Arbitrum, and Polygon. Other chains are planned to be added in the future.

Use Cases

  1. Asset Requirements Across Chains: For instance, a Space might necessitate members to hold a Crypto Punk on Ethereum Mainnet and a Degod on Polygon.
  2. Asset Quantity Requirements: Another example could be a Space that allows entry only to users who possess over 5 ETH across their linked wallets.

Entitlement Checks for Permissions

Cross Chain Entitlement Checks can be utilized for specific permissions such as Read, Write, or Mint. However, it’s important to note that permissions requiring direct contract transactions, like channel creation or role assignment, must rely solely on entitlements based on assets stored on the Base Chain.

Process for Minting a Member NFT

  1. Join Request: A user initiates a request to join a Space through the smart contract.
  2. Membership Fee Verification: The contract verifies whether the user has paid the necessary membership fee, if applicable.
  3. Cross-Chain Requirement Assessment: The contract determines if joining the Space requires a cross-chain entitlement check.
  4. Broadcasting the Request: If a cross-chain check is needed, the request is broadcast as an event from the smart contract, targeting a randomly selected NodeID from the active nodes in the node registry.
  5. Node Processing: The designated node picks up the request and retrieves the entry requirements for the Space, which are defined in the contract.
  6. Wallet Link and Evaluation: The node accesses all linked wallets of the user and assesses if the user fulfills the Space’s entry criteria.
  7. Minting Member NFT: Upon successful verification, the node sends a positive response back to the smart contract, triggering the automatic minting of the Member NFT for that Space to the user’s address.