3.7 KiB
3.7 KiB
Cross-Chain Entity Graph
Overview
This document specifies the cross-chain entity graph for tracking relationships between addresses, contracts, and protocols across multiple chains.
Graph Structure
See ../database/graph-schema.md for detailed Neo4j schema.
Node Types
- Address: Blockchain addresses (can exist on multiple chains)
- Contract: Smart contracts (chain-specific instances)
- Token: Token contracts
- Protocol: DeFi protocols (cross-chain presence)
Relationship Types
- TRANSFERRED_TO: Token transfers
- CALLED: Contract calls
- OWNS: Token ownership
- CLUSTERED_WITH: Address clustering (same entity)
- CCIP_MESSAGE_LINK: Cross-chain message links
Address Clustering
Clustering Heuristics
1. Multi-Signature Wallets:
- Addresses controlled by same set of signers
- High confidence
2. Transaction Patterns:
- Addresses that frequently transact together
- Similar transaction timing
- Medium confidence
3. Funding Patterns:
- Addresses funded from same source
- Sequential funding
- Medium confidence
4. Contract Deployment:
- Addresses deploying contracts with similar code
- Same deployer patterns
- Low-medium confidence
Confidence Scores
High (0.9+): Multi-sig, verified relationships Medium (0.7-0.9): Pattern-based clustering Low (0.5-0.7): Weak patterns, needs verification
Implementation
Algorithm:
- Analyze transaction patterns
- Calculate similarity scores
- Cluster addresses above threshold
- Store relationships in graph database
Contract/Protocol Tagging
Protocol Identification
Methods:
- Known Address Lists: Maintain list of known protocol addresses
- Code Similarity: Compare contract code
- Interaction Patterns: Analyze usage patterns
- Labels: User-submitted labels
Protocol Categories
- DEX: Decentralized exchanges
- Lending: Lending protocols
- Bridge: Cross-chain bridges
- NFT Marketplace: NFT trading platforms
- Governance: DAOs and governance protocols
Tagging System
Tags:
- Category tags (DEX, Lending, etc.)
- Protocol tags (Uniswap, Aave, etc.)
- Risk tags (verified, audited, etc.)
Cross-Chain Entity Resolution
Address Resolution
Challenge: Same entity may use different addresses on different chains
Solution:
- Use clustering to link addresses
- Use CCIP message links
- Use bridge transaction patterns
Entity Unification
Process:
- Identify entity across chains
- Create unified entity node
- Link chain-specific addresses to unified entity
- Aggregate metrics across chains
Graph Query Patterns
Find Entity Across Chains
MATCH (e:Entity)-[:HAS_ADDRESS]->(a:Address)
WHERE e.id = "entity_123"
RETURN a.address, a.chainId;
Find Cross-Chain Transactions
MATCH (a1:Address {address: "0x...", chainId: 138})
-[:CCIP_MESSAGE_LINK]->
(a2:Address {chainId: 1})
RETURN a2.address, a2.chainId;
Find Protocol Users Across Chains
MATCH (a:Address)-[r:INTERACTS_WITH]->(p:Protocol {name: "Uniswap"})
RETURN a.address, a.chainId, count(r) as interactions
ORDER BY interactions DESC;
Data Ingestion
Cross-Chain Data Sources
- Blockchain Data: Indexed transactions and transfers
- CCIP Messages: Cross-chain message links
- Bridge Transactions: Bridge usage patterns
- User Labels: User-submitted entity relationships
Update Frequency
Real-time: New transactions and transfers Batch: Clustering analysis (daily) On-demand: User-requested clustering
References
- Graph Database Schema: See
../database/graph-schema.md - CCIP Integration: See
../ccip/ccip-tracking.md - Multi-chain Indexing: See
multichain-indexing.md