157 lines
3.2 KiB
Markdown
157 lines
3.2 KiB
Markdown
|
|
# Blockscout MetaMask Integration
|
||
|
|
|
||
|
|
Blockscout configuration for MetaMask Portfolio compatibility.
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
Blockscout must be configured to support MetaMask Portfolio's token auto-detection and balance display features.
|
||
|
|
|
||
|
|
## Required API Endpoints
|
||
|
|
|
||
|
|
### Token Metadata
|
||
|
|
|
||
|
|
Blockscout must provide token metadata via API:
|
||
|
|
|
||
|
|
```
|
||
|
|
GET /api/v2/tokens/{address}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Response**:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"address": "0x...",
|
||
|
|
"name": "Wrapped Ether",
|
||
|
|
"symbol": "WETH",
|
||
|
|
"decimals": 18,
|
||
|
|
"total_supply": "1000000000000000000000",
|
||
|
|
"holders_count": 100,
|
||
|
|
"transactions_count": 1000
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Token Holders
|
||
|
|
|
||
|
|
```
|
||
|
|
GET /api/v2/tokens/{address}/holders
|
||
|
|
```
|
||
|
|
|
||
|
|
### Account Token Balances
|
||
|
|
|
||
|
|
```
|
||
|
|
GET /api/v2/addresses/{address}/token-balances
|
||
|
|
```
|
||
|
|
|
||
|
|
## CORS Configuration
|
||
|
|
|
||
|
|
### Required CORS Headers
|
||
|
|
|
||
|
|
Blockscout must allow CORS requests from MetaMask Portfolio:
|
||
|
|
|
||
|
|
```
|
||
|
|
Access-Control-Allow-Origin: https://portfolio.metamask.io
|
||
|
|
Access-Control-Allow-Methods: GET, OPTIONS
|
||
|
|
Access-Control-Allow-Headers: Content-Type
|
||
|
|
Access-Control-Max-Age: 3600
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configuration
|
||
|
|
|
||
|
|
Add to Blockscout deployment:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
env:
|
||
|
|
- name: CORS_ALLOWED_ORIGINS
|
||
|
|
value: "https://portfolio.metamask.io,https://metamask.io,https://chainlist.org"
|
||
|
|
- name: ENABLE_CORS
|
||
|
|
value: "true"
|
||
|
|
```
|
||
|
|
|
||
|
|
## Token Logo Serving
|
||
|
|
|
||
|
|
### Logo URL Format
|
||
|
|
|
||
|
|
Token logos should be served from:
|
||
|
|
|
||
|
|
```
|
||
|
|
https://explorer.d-bis.org/images/tokens/{address}.png
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configuration
|
||
|
|
|
||
|
|
1. **Enable Logo Serving**: Enable logo serving in Blockscout
|
||
|
|
2. **Logo Storage**: Store logos in Blockscout or CDN
|
||
|
|
3. **Fallback**: Use default token logo if not found
|
||
|
|
4. **Format**: PNG format, 512x512 pixels
|
||
|
|
|
||
|
|
## Contract Verification
|
||
|
|
|
||
|
|
### Required for Token Metadata
|
||
|
|
|
||
|
|
All token contracts should be verified on Blockscout to provide accurate metadata:
|
||
|
|
|
||
|
|
1. **Verify Contracts**: Verify all token contracts
|
||
|
|
2. **Update Metadata**: Update token metadata as needed
|
||
|
|
3. **Monitor**: Monitor for contract updates
|
||
|
|
|
||
|
|
## API Rate Limiting
|
||
|
|
|
||
|
|
### Portfolio-Specific Limits
|
||
|
|
|
||
|
|
Configure rate limiting for Portfolio requests:
|
||
|
|
|
||
|
|
- **Default**: 120 requests/minute per IP
|
||
|
|
- **Portfolio**: Higher limits for Portfolio domain
|
||
|
|
- **API Keys**: Optional API keys for higher limits
|
||
|
|
|
||
|
|
## Testing
|
||
|
|
|
||
|
|
### Test Checklist
|
||
|
|
|
||
|
|
- [ ] Token metadata API works
|
||
|
|
- [ ] Token holders API works
|
||
|
|
- [ ] Account token balances API works
|
||
|
|
- [ ] CORS headers are present
|
||
|
|
- [ ] Token logos are accessible
|
||
|
|
- [ ] Contract verification works
|
||
|
|
- [ ] Rate limiting works correctly
|
||
|
|
|
||
|
|
### Test Commands
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Test token metadata API
|
||
|
|
curl https://explorer.d-bis.org/api/v2/tokens/0xYourTokenAddress
|
||
|
|
|
||
|
|
# Test CORS headers
|
||
|
|
curl -H "Origin: https://portfolio.metamask.io" \
|
||
|
|
-H "Access-Control-Request-Method: GET" \
|
||
|
|
-X OPTIONS \
|
||
|
|
https://explorer.d-bis.org/api/v2/tokens/0xYourTokenAddress
|
||
|
|
|
||
|
|
# Test token logo
|
||
|
|
curl https://explorer.d-bis.org/images/tokens/0xYourTokenAddress.png
|
||
|
|
```
|
||
|
|
|
||
|
|
## Monitoring
|
||
|
|
|
||
|
|
### Metrics
|
||
|
|
|
||
|
|
- API request rate
|
||
|
|
- CORS request rate
|
||
|
|
- Token metadata API usage
|
||
|
|
- Logo serving performance
|
||
|
|
- Error rates
|
||
|
|
|
||
|
|
### Alerts
|
||
|
|
|
||
|
|
- API errors
|
||
|
|
- CORS configuration issues
|
||
|
|
- Logo serving failures
|
||
|
|
- Rate limiting issues
|
||
|
|
|
||
|
|
## References
|
||
|
|
|
||
|
|
- [Blockscout API Documentation](https://docs.blockscout.com/for-developers/api)
|
||
|
|
- [MetaMask Portfolio](https://portfolio.metamask.io)
|
||
|
|
- [CORS Configuration](https://docs.blockscout.com/for-developers/api/cors)
|
||
|
|
|