What is an Alias Conflict?
An alias conflict happens when a single alias string could refer to more than one protocol in the color palettes collection. This creates ambiguity in the automatic color matching system used by Dune Analytics.Real-World Conflict Examples
Example 1: BSC Conflict
Example 1: BSC Conflict
The Conflict:Basis Cash would need to use alternative aliases like
- “BSC” could refer to Binance Smart Chain (now BNB Chain)
- “BSC” could refer to Basis Cash (algorithmic stablecoin protocol)
"basis", "basis_cash".Example 2: LINK Conflict
Example 2: LINK Conflict
The Conflict:Less common protocols use more specific aliases:
- “LINK” could refer to Chainlink (oracle network)
- “LINK” could refer to Link Protocol (hypothetical)
Example 3: Version-Specific Conflicts
Example 3: Version-Specific Conflicts
The Conflict:
Multiple versions of the same protocol might share aliases:
- Uniswap V2
- Uniswap V3
- Uniswap V4
For version-specific coloring needs, users can override colors manually in their visualizations.
How Conflicts Are Detected
Automated CI Validation
The repository uses automated GitHub Actions to detect duplicate aliases on every pull request.- Detection Logic
- CI Workflow
- Example CI Failure
The CI workflow extracts all aliases and checks for duplicates using case-insensitive comparison:How It Works:
- Extracts each protocol and its aliases
- Converts all aliases to lowercase for comparison
- Tracks which protocol “owns” each alias
- Exits with error if duplicate found
Conflict Resolution Process
1
Identify the Conflict
When CI fails, review the error message to identify:
- The conflicting alias: Which alias is duplicated
- Affected protocols: Which two (or more) protocols share it
2
Analyze Protocol Priority
Determine which protocol should get priority for the conflicting alias:
- Usage Frequency
- Official Naming
- Community Convention
Most Common Wins:Which protocol appears more frequently in Dune Analytics queries?Example:
High Priority
Major chains, top DEXes, widely-used protocols
Lower Priority
Niche protocols, testnets, deprecated projects
- “BSC” → Binance Smart Chain (high usage) ✅
- Basis Cash must use alternative alias ❌
3
Choose Resolution Strategy
Select the appropriate strategy based on the conflict:
Strategy 1: Remove Conflicting Alias
Strategy 1: Remove Conflicting Alias
When to Use: The alias is less important for one protocolBefore:After:
Strategy 2: Use More Specific Aliases
Strategy 2: Use More Specific Aliases
When to Use: Both protocols need clear identificationBefore:After:
Strategy 3: Add Context to Protocol Name
Strategy 3: Add Context to Protocol Name
When to Use: Same protocol on different chainsBefore:After:
Strategy 4: Discuss Special Cases
Strategy 4: Discuss Special Cases
When to Use: Unclear which protocol should have priorityProcess:
- Comment on your PR explaining the conflict
- Tag maintainers for input
- Provide usage data if available
- Wait for community consensus
4
Update Your Pull Request
Make the necessary changes to resolve the conflict:
CI checks will automatically re-run when you push changes. Monitor the results to confirm the conflict is resolved.
5
Verify Resolution
Confirm that:
- CI checks now pass
- No duplicate aliases remain
- Both protocols have at least one unique alias
- Aliases accurately represent the protocols
- Changes are documented in PR description
Best Practices for Preventing Conflicts
Research Before Adding
Before creating a PR, search the existing JSON for potential conflicts:
Use Specific Aliases
When possible, use specific, unambiguous aliases:
- ✅
"uniswap_v3"instead of just"v3" - ✅
"arbitrum_nova"instead of just"nova" - ✅
"polygon_pos"instead of just"polygon"
Include Protocol Name
Always include the full protocol name (lowercase) as an alias:
Test Against Common Abbreviations
Avoid common two-letter abbreviations that might conflict:
- ❌
"op"- Could be Optimism or Ocean Protocol - ❌
"ai"- Too generic - ❌
"db"- Too generic
Common Conflict Scenarios
- Chain vs Protocol
- Ticker vs Name
- Version Conflicts
- Rebranding
Scenario: A protocol shares a name with a blockchainExample:
- Manta Network (L1 chain)
- Manta Protocol (privacy protocol)
Testing for Conflicts Locally
Before submitting your PR, you can test for conflicts locally:Getting Help with Conflicts
If you’re unsure how to resolve a conflict:- Comment on your PR describing the conflict and asking for guidance
- Tag maintainers for input on priority decisions
- Provide context about both protocols’ usage and official naming
- Be patient - complex conflicts may require community discussion
Conflict resolution is collaborative. Maintainers are here to help you find the best solution.