Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
355 lines
8.8 KiB
Markdown
355 lines
8.8 KiB
Markdown
# DBIS Chain 138 Token Lists
|
|
|
|
Production-ready token lists for ChainID 138 (DBIS Chain), following the [Uniswap Token Lists Specification](https://github.com/Uniswap/token-lists).
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### Validate Token List
|
|
|
|
```bash
|
|
node scripts/validate-token-list.js lists/dbis-138.tokenlist.json
|
|
```
|
|
|
|
### Verify On-Chain
|
|
|
|
```bash
|
|
node scripts/verify-on-chain.js lists/dbis-138.tokenlist.json
|
|
```
|
|
|
|
### Prepare Release
|
|
|
|
```bash
|
|
./scripts/release.sh patch # or minor, major
|
|
```
|
|
|
|
### Sign Token List
|
|
|
|
```bash
|
|
./scripts/sign-list.sh sign
|
|
```
|
|
|
|
---
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
token-lists/
|
|
├── lists/
|
|
│ └── dbis-138.tokenlist.json # Main token list
|
|
├── logos/ # Token logos (future)
|
|
├── scripts/
|
|
│ ├── validate-token-list.js # Schema & validation
|
|
│ ├── checksum-addresses.js # EIP-55 checksum validation
|
|
│ ├── validate-logos.js # Logo URL validation
|
|
│ ├── verify-on-chain.js # On-chain verification
|
|
│ ├── release.sh # Release automation
|
|
│ └── sign-list.sh # minisign signing
|
|
├── docs/
|
|
│ ├── TOKEN_LIST_POLICY.md # Inclusion/delisting policy
|
|
│ ├── INTEGRATION_GUIDE.md # Integration instructions
|
|
│ ├── CHANGELOG.md # Version history
|
|
│ └── TOKEN_LIST_AUTHORING_GUIDE.md # Authoring guide
|
|
└── minisign.pub # Public key for verification
|
|
```
|
|
|
|
---
|
|
|
|
## Token List Contents
|
|
|
|
Current version: **1.2.0**
|
|
|
|
### Tokens
|
|
|
|
1. **ETH/USD Price Feed** (Oracle)
|
|
- Address: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6`
|
|
- Decimals: 8
|
|
- Category: Oracle, Price Feed
|
|
|
|
2. **WETH** (Wrapped Ether)
|
|
- Address: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`
|
|
- Decimals: 18
|
|
- Category: DeFi, Wrapped
|
|
|
|
3. **WETH10** (Wrapped Ether v10)
|
|
- Address: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F`
|
|
- Decimals: 18
|
|
- Category: DeFi, Wrapped
|
|
|
|
4. **LINK** (Chainlink Token)
|
|
- Address: `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03`
|
|
- Decimals: 18
|
|
- Category: DeFi, Oracle, CCIP
|
|
|
|
5. **cUSDT** (Compliant Tether USD)
|
|
- Address: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22`
|
|
- Decimals: 6
|
|
- Category: Stablecoin, DeFi, Compliant
|
|
|
|
6. **cUSDC** (Compliant USD Coin)
|
|
- Address: `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
|
|
- Decimals: 6
|
|
- Category: Stablecoin, DeFi, Compliant
|
|
|
|
---
|
|
|
|
## Validation
|
|
|
|
All token lists are validated against:
|
|
|
|
- Uniswap Token Lists JSON Schema
|
|
- EIP-55 address checksumming
|
|
- Chain ID strict validation (must be 138)
|
|
- Duplicate detection (addresses and symbols)
|
|
- Logo URL accessibility
|
|
- On-chain contract verification
|
|
|
|
### Running Validations
|
|
|
|
```bash
|
|
# Full validation
|
|
node scripts/validate-token-list.js lists/dbis-138.tokenlist.json
|
|
|
|
# Check address checksums
|
|
node scripts/checksum-addresses.js lists/dbis-138.tokenlist.json
|
|
|
|
# Fix checksummed addresses
|
|
node scripts/checksum-addresses.js lists/dbis-138.tokenlist.json --fix
|
|
|
|
# Validate logos
|
|
node scripts/validate-logos.js lists/dbis-138.tokenlist.json
|
|
|
|
# Verify on-chain
|
|
node scripts/verify-on-chain.js lists/dbis-138.tokenlist.json
|
|
```
|
|
|
|
---
|
|
|
|
## CI/CD
|
|
|
|
### PR Validation
|
|
|
|
GitHub Actions automatically validates token lists on pull requests:
|
|
|
|
- JSON schema validation
|
|
- Address checksum validation
|
|
- Duplicate detection
|
|
- Logo validation (non-blocking)
|
|
- On-chain verification (optional, non-blocking)
|
|
|
|
### Release Process
|
|
|
|
1. Update version using release script:
|
|
```bash
|
|
./scripts/release.sh patch # or minor, major
|
|
```
|
|
|
|
2. Create git tag:
|
|
```bash
|
|
git tag -a v1.2.0 -m "Release v1.2.0"
|
|
git push --tags
|
|
```
|
|
|
|
3. GitHub Actions release workflow will:
|
|
- Run all validations (required)
|
|
- Perform on-chain verification (required)
|
|
- Generate checksums
|
|
- Sign token list
|
|
- Create GitHub Release
|
|
|
|
---
|
|
|
|
## Hosting
|
|
|
|
Token lists are hosted at:
|
|
|
|
- **GitHub Pages**: `https://{user}.github.io/{repo}/token-lists/lists/dbis-138.tokenlist.json`
|
|
- **GitHub Raw**: `https://raw.githubusercontent.com/{user}/{repo}/main/token-lists/lists/dbis-138.tokenlist.json`
|
|
- **DBIS Domain** (if configured): `https://tokens.d-bis.org/lists/dbis-138.tokenlist.json`
|
|
|
|
---
|
|
|
|
## Integration
|
|
|
|
See [INTEGRATION_GUIDE.md](docs/INTEGRATION_GUIDE.md) for detailed integration instructions for:
|
|
|
|
- MetaMask
|
|
- Ledger
|
|
- dApps
|
|
- Explorers/Indexers
|
|
- Custom applications
|
|
|
|
---
|
|
|
|
## Policy
|
|
|
|
See [TOKEN_LIST_POLICY.md](docs/TOKEN_LIST_POLICY.md) for:
|
|
|
|
- Inclusion requirements
|
|
- Delisting criteria
|
|
- Governance process
|
|
- Versioning policy
|
|
|
|
---
|
|
|
|
## Security
|
|
|
|
### Signature Verification
|
|
|
|
Token lists are signed with minisign for integrity verification:
|
|
|
|
```bash
|
|
# Verify signature
|
|
minisign -V -p minisign.pub -m lists/dbis-138.tokenlist.json -x lists/dbis-138.tokenlist.json.sig
|
|
```
|
|
|
|
### Public Key
|
|
|
|
The public key is included in the repository: `minisign.pub`
|
|
|
|
Private key is stored securely in GitHub Secrets for CI/CD signing.
|
|
|
|
---
|
|
|
|
## Contributing
|
|
|
|
### Adding Tokens
|
|
|
|
1. Create issue or pull request with token details
|
|
2. Ensure token meets inclusion requirements
|
|
3. Code owners review and approve
|
|
4. Validations run automatically via CI/CD
|
|
|
|
### Updating Tokens
|
|
|
|
1. Update token metadata in `lists/dbis-138.tokenlist.json`
|
|
2. Run validations locally
|
|
3. Create pull request
|
|
4. CI/CD validates changes
|
|
|
|
### Removing Tokens
|
|
|
|
1. Create issue explaining removal reason
|
|
2. Code owners review and approve
|
|
3. Update token list (major version bump)
|
|
4. Update CHANGELOG.md
|
|
|
|
---
|
|
|
|
## Dependencies
|
|
|
|
- Node.js >= 16.0.0
|
|
- pnpm (package manager)
|
|
- `@uniswap/token-lists` (official Uniswap Token Lists package)
|
|
- ethers.js (for address validation and on-chain verification)
|
|
- ajv & ajv-formats (for JSON schema validation)
|
|
- minisign (for signing, optional for verification)
|
|
|
|
Install dependencies:
|
|
|
|
```bash
|
|
pnpm install
|
|
```
|
|
|
|
### Package Integration
|
|
|
|
This project uses the official `@uniswap/token-lists` package for:
|
|
- JSON Schema validation
|
|
- TypeScript type definitions
|
|
- Specification compliance
|
|
|
|
The validation scripts automatically use the package schema, with fallback to URL fetch if the package is unavailable.
|
|
|
|
---
|
|
|
|
## Chainlists Submission
|
|
|
|
Files for submitting to Chainlists.org are in the `chainlists/` directory:
|
|
|
|
- `chainlists/chain-138.json` - Chain configuration in Chainlists format
|
|
- `chainlists/SUBMISSION_GUIDE.md` - Submission instructions
|
|
|
|
### Validate Chain Configuration
|
|
|
|
```bash
|
|
node scripts/validate-chainlists.js chainlists/chain-138.json
|
|
```
|
|
|
|
### Submit to Chainlists
|
|
|
|
See `chainlists/SUBMISSION_GUIDE.md` for detailed submission instructions.
|
|
|
|
The chain configuration includes:
|
|
- Chain ID: 138
|
|
- RPC URLs (primary and fallback)
|
|
- Block explorer
|
|
- Native currency information
|
|
- Chain metadata
|
|
|
|
---
|
|
|
|
## Links
|
|
|
|
- [Uniswap Token Lists Specification](https://github.com/Uniswap/token-lists)
|
|
- [@uniswap/token-lists npm package](https://www.npmjs.com/package/@uniswap/token-lists)
|
|
- [JSON Schema](https://uniswap.org/tokenlist.schema.json)
|
|
- [Chainlists Repository](https://github.com/ethereum-lists/chains)
|
|
- [Chainlists Website](https://chainlist.org)
|
|
- [EIP-55: Mixed-case checksum address encoding](https://eips.ethereum.org/EIPS/eip-55)
|
|
- [EIP-155: Simple replay attack protection](https://eips.ethereum.org/EIPS/eip-155)
|
|
- [Semantic Versioning](https://semver.org/)
|
|
|
|
## Token Lists Available
|
|
|
|
### ChainID 138 (DBIS Chain)
|
|
- **File**: `lists/dbis-138.tokenlist.json`
|
|
- **Tokens**: 6 (WETH, WETH10, LINK, cUSDT, cUSDC, ETH/USD Oracle)
|
|
- **Version**: 1.3.0
|
|
- **Status**: ✅ Complete and validated
|
|
|
|
### Cronos (ChainID 25)
|
|
- **File**: `lists/cronos.tokenlist.json`
|
|
- **Tokens**: 10 (WETH9, WETH10, LINK, USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW)
|
|
- **Version**: 1.0.0
|
|
- **Status**: ✅ Complete (DBIS CCIP + ISO-4217W deployments)
|
|
|
|
### Avalanche C-Chain (ChainID 43114)
|
|
- **File**: `lists/avalanche.tokenlist.json`
|
|
- **Tokens**: 2 (WETH9, WETH10)
|
|
- **Version**: 1.0.0
|
|
- **Status**: ✅ Complete (DBIS CCIP deployments)
|
|
|
|
### Arbitrum One (ChainID 42161)
|
|
- **File**: `lists/arbitrum.tokenlist.json`
|
|
- **Tokens**: 2 (WETH9, WETH10)
|
|
- **Version**: 1.0.0
|
|
- **Status**: ✅ Complete (DBIS CCIP deployments)
|
|
|
|
### Ethereum Mainnet (ChainID 1)
|
|
- **File**: `lists/ethereum-mainnet.tokenlist.json`
|
|
- **Tokens**: 1 (USDT)
|
|
- **Version**: 1.0.0
|
|
- **Status**: ✅ Complete and validated
|
|
|
|
### ALL Mainnet (ChainID 651940)
|
|
- **File**: `lists/all-mainnet.tokenlist.json`
|
|
- **Tokens**: 9 (AUSDT, USDT, USDC, WETH, WALL, HYDX, HYBX, CHT, AUDA)
|
|
- **Version**: 1.0.0
|
|
- **Status**: ✅ Complete
|
|
|
|
## Documentation
|
|
|
|
- [Token List Authoring Guide](../docs/11-references/TOKEN_LIST_AUTHORING_GUIDE.md)
|
|
- [Integration Guide](docs/INTEGRATION_GUIDE.md)
|
|
- [Token List Policy](docs/TOKEN_LIST_POLICY.md)
|
|
- [Uniswap Comparison](docs/UNISWAP_COMPARISON.md)
|
|
- [DefiLlama Analysis](docs/DEFILLAMA_ANALYSIS.md)
|
|
- [ALL Mainnet Extraction Guide](ALL_MAINNET_TOKEN_EXTRACTION_GUIDE.md)
|
|
- [ALL Mainnet Submission Guide](ALL_MAINNET_COMPLETE_SUBMISSION.md)
|
|
|
|
---
|
|
|
|
**Last Updated**: 2025-12-22
|
|
|