Files
metamask-integration/scripts/prepare-token-list-submissions.sh
2026-03-02 12:14:14 -08:00

256 lines
6.5 KiB
Bash
Executable File

#!/bin/bash
# Prepare token list for submission to aggregators (CoinGecko, Uniswap, etc.)
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
TOKEN_LIST="$PROJECT_ROOT/../token-lists/lists/dbis-138.tokenlist.json"
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
log_info "========================================="
log_info "Token List Submission Preparation"
log_info "========================================="
log_info ""
# Validate token list
if [ ! -f "$TOKEN_LIST" ]; then
log_error "Token list not found: $TOKEN_LIST"
exit 1
fi
if ! jq empty "$TOKEN_LIST" 2>/dev/null; then
log_error "Token list JSON is invalid"
exit 1
fi
log_success "Token list JSON is valid"
# Extract token list info
TOKEN_LIST_NAME=$(jq -r '.name' "$TOKEN_LIST")
TOKEN_LIST_VERSION=$(jq -r '.version | "\(.major).\(.minor).\(.patch)"' "$TOKEN_LIST")
TOKEN_COUNT=$(jq '.tokens | length' "$TOKEN_LIST")
log_info "Token List: $TOKEN_LIST_NAME v$TOKEN_LIST_VERSION"
log_info "Tokens: $TOKEN_COUNT"
log_info ""
# Create submission directory
SUBMISSION_DIR="$PROJECT_ROOT/token-list-submissions"
mkdir -p "$SUBMISSION_DIR"
# Copy token list
cp "$TOKEN_LIST" "$SUBMISSION_DIR/dbis-138.tokenlist.json"
log_success "Created: $SUBMISSION_DIR/dbis-138.tokenlist.json"
# Create CoinGecko submission package
log_info "Creating CoinGecko submission package..."
cat > "$SUBMISSION_DIR/coingecko-submission.md" << EOF
# CoinGecko Token List Submission - ChainID 138
## Network Information
- **Chain ID**: 138
- **Network Name**: DeFi Oracle Meta Mainnet
- **RPC URL**: https://rpc.d-bis.org
- **Explorer**: https://explorer.d-bis.org
## Token List
- **File**: dbis-138.tokenlist.json
- **Version**: $TOKEN_LIST_VERSION
- **Tokens**: $TOKEN_COUNT
## Submission Method
1. Go to https://www.coingecko.com/en/api
2. Navigate to Token List submission
3. Upload dbis-138.tokenlist.json
4. Provide network information
5. Submit for review
## Contact
For questions about this submission, please contact the network maintainers.
## Token List URL
Once hosted, the token list will be available at:
\`https://[hosted-url]/dbis-138.tokenlist.json\`
EOF
log_success "Created: $SUBMISSION_DIR/coingecko-submission.md"
# Create Uniswap submission package
log_info "Creating Uniswap submission package..."
cat > "$SUBMISSION_DIR/uniswap-submission.md" << EOF
# Uniswap Token List Submission - ChainID 138
## Network Information
- **Chain ID**: 138
- **Network Name**: DeFi Oracle Meta Mainnet
- **RPC URL**: https://rpc.d-bis.org
- **Explorer**: https://explorer.d-bis.org
## Token List
- **File**: dbis-138.tokenlist.json
- **Version**: $TOKEN_LIST_VERSION
- **Tokens**: $TOKEN_COUNT
## Submission Method
1. Go to https://tokenlists.org/
2. Click "Submit a List"
3. Provide token list URL (once hosted)
4. Fill out submission form
5. Submit for review
## Requirements
- [x] Token list follows Token Lists schema
- [x] All tokens are deployed on-chain
- [x] Token metadata is accurate
- [x] Logo URLs are accessible
- [x] Network is stable
## Contact
For questions about this submission, please contact the network maintainers.
EOF
log_success "Created: $SUBMISSION_DIR/uniswap-submission.md"
# Create 1inch submission package
log_info "Creating 1inch submission package..."
cat > "$SUBMISSION_DIR/1inch-submission.md" << EOF
# 1inch Token List Submission - ChainID 138
## Network Information
- **Chain ID**: 138
- **Network Name**: DeFi Oracle Meta Mainnet
- **RPC URL**: https://rpc.d-bis.org
- **Explorer**: https://explorer.d-bis.org
## Token List
- **File**: dbis-138.tokenlist.json
- **Version**: $TOKEN_LIST_VERSION
- **Tokens**: $TOKEN_COUNT
## Submission Method
1. Contact 1inch team via their support channels
2. Provide token list URL (once hosted)
3. Request ChainID 138 integration
4. Provide network information
## Requirements
- [x] Token list follows Token Lists schema
- [x] All tokens are deployed on-chain
- [x] Network has sufficient liquidity
- [x] Network is stable
## Contact
- 1inch Support: https://help.1inch.io/
- 1inch Discord: https://discord.gg/1inch
EOF
log_success "Created: $SUBMISSION_DIR/1inch-submission.md"
# Create general submission guide
cat > "$SUBMISSION_DIR/SUBMISSION_GUIDE.md" << 'EOF'
# Token List Submission Guide
This directory contains materials for submitting the ChainID 138 token list to various aggregators.
## Files
- `dbis-138.tokenlist.json` - The token list file
- `coingecko-submission.md` - CoinGecko submission instructions
- `uniswap-submission.md` - Uniswap/tokenlists.org submission instructions
- `1inch-submission.md` - 1inch submission instructions
## Prerequisites
Before submitting, ensure:
1. ✅ Token list is hosted on a public URL (HTTPS)
2. ✅ All tokens are deployed and verified on-chain
3. ✅ Token metadata is accurate
4. ✅ Logo URLs are accessible
5. ✅ Network is stable and operational
## Submission Order
1. **Host Token List** (Priority 1)
- Host on GitHub Pages, IPFS, or custom domain
- Ensure HTTPS and CORS headers are configured
2. **Submit to Token Lists** (Priority 2)
- Submit to tokenlists.org (Uniswap)
- This enables auto-discovery in MetaMask
3. **Submit to CoinGecko** (Priority 3)
- Enables price data and market information
4. **Submit to 1inch** (Priority 4)
- Enables DEX aggregation support
## Token List URL Format
Once hosted, the token list should be accessible at:
```
https://[your-domain]/dbis-138.tokenlist.json
```
## Verification
After submission, verify:
- [ ] Token list is accessible via URL
- [ ] Tokens appear in MetaMask Portfolio
- [ ] Token logos display correctly
- [ ] Token metadata is accurate
- [ ] Network is listed on aggregators
## Support
For questions or issues with submissions, contact the network maintainers.
EOF
log_success "Created: $SUBMISSION_DIR/SUBMISSION_GUIDE.md"
# List tokens
log_info ""
log_info "Tokens in list:"
jq -r '.tokens[] | " - \(.symbol) (\(.name)): \(.address)"' "$TOKEN_LIST"
log_info ""
log_info "========================================="
log_info "Submission Preparation Complete!"
log_info "========================================="
log_info ""
log_info "Files created in: $SUBMISSION_DIR"
log_info ""
log_info "Next steps:"
log_info "1. Host token list on public URL"
log_info "2. Review submission guides"
log_info "3. Submit to aggregators"
log_info ""