Files
explorer-monorepo/docs/LINK_TOKEN_DEPLOYMENT_READINESS.md

234 lines
5.8 KiB
Markdown
Raw Permalink Normal View History

# LINK Token Deployment Readiness Report
**Date**: 2025-12-24
**ChainID**: 138
**Status**: ✅ **READY FOR DEPLOYMENT**
---
## Test Results Summary
### ✅ Passed Tests
1. **Environment Variables**
- ✅ PRIVATE_KEY: Valid and configured
- ✅ Deployer Address: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
- ✅ RPC_URL: `http://192.168.11.250:8545`
2. **Network Connectivity**
- ✅ RPC accessible (block: 175408+)
- ✅ Chain ID matches (138)
3. **Deployer Account**
- ✅ Balance: 999,630,748.4 ETH (more than sufficient)
- ✅ Nonce: 50
4. **Contract Files**
- ✅ MockLinkToken.sol found at: `/home/intlc/projects/smom-dbis-138/contracts/tokens/MockLinkToken.sol`
- ✅ DeployMockLinkToken.s.sol found at: `/home/intlc/projects/smom-dbis-138/script/DeployMockLinkToken.s.sol`
5. **Foundry Installation**
- ✅ Foundry installed
- ✅ Cast installed
6. **Deployment Scripts**
-`scripts/force-deploy-link.sh` - Ready
-`scripts/deploy-link-token.sh` - Ready
-`scripts/deploy-via-rpc-json.sh` - Ready
### ⚠️ Warnings
1. **Contract Compilation**
- ⚠️ Direct compilation in source project may require dependencies
-`force-deploy-link.sh` creates standalone contract (no dependencies needed)
2. **Existing LINK Token**
- ⚠️ LINK_TOKEN configured in .env: `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4`
- ⚠️ Contract not found on-chain (previous deployment attempt failed)
---
## Contract Specification
### MockLinkToken Contract
**Location**: `/home/intlc/projects/smom-dbis-138/contracts/tokens/MockLinkToken.sol`
**Properties**:
- Name: "Chainlink Token"
- Symbol: "LINK"
- Decimals: 18
- Type: ERC20 (minimal implementation)
**Functions**:
- `mint(address to, uint256 amount)` - Mint tokens
- `transfer(address to, uint256 amount)` - Transfer tokens
- `transferFrom(address from, address to, uint256 amount)` - Transfer from
- `approve(address spender, uint256 amount)` - Approve spender
- `balanceOf(address)` - Get balance
- `allowance(address owner, address spender)` - Get allowance
- `totalSupply()` - Get total supply
**Initial Supply**: 1,000,000 LINK (1M) minted to deployer
---
## Deployment Methods
### Method 1: Using force-deploy-link.sh (Recommended)
This script creates a standalone contract and deploys it:
```bash
cd /home/intlc/projects/proxmox/explorer-monorepo
./scripts/force-deploy-link.sh [GAS_PRICE]
```
**Example**:
```bash
./scripts/force-deploy-link.sh 20000000000 # 20 gwei
```
**Advantages**:
- ✅ No external dependencies
- ✅ Creates contract inline
- ✅ Multiple deployment methods (forge script, forge create, cast send)
- ✅ Automatic verification
### Method 2: Using Source Project Script
```bash
cd /home/intlc/projects/smom-dbis-138
forge script script/DeployMockLinkToken.s.sol:DeployMockLinkToken \
--rpc-url http://192.168.11.250:8545 \
--broadcast \
--legacy \
--gas-price 20000000000
```
**Requirements**:
- Source project must have all dependencies installed
- May need: `forge install` for dependencies
### Method 3: Using deploy-via-rpc-json.sh
Direct JSON-RPC deployment (bypasses forge):
```bash
cd /home/intlc/projects/proxmox/explorer-monorepo
./scripts/deploy-via-rpc-json.sh [GAS_PRICE] [GAS_LIMIT]
```
**Example**:
```bash
./scripts/deploy-via-rpc-json.sh 20000000000 10000000
```
---
## Deployment Checklist
Before deploying, ensure:
- [x] PRIVATE_KEY is set in .env
- [x] RPC_URL is accessible
- [x] Deployer has sufficient balance (✅ 999M+ ETH)
- [x] Network is operational (✅ Block 175408+)
- [x] Chain ID is correct (✅ 138)
- [x] Foundry is installed
- [x] Deployment script is ready
**Note**: Previous deployment attempts failed due to network-level restrictions. The DEBUG API should be enabled to get revert reasons if deployment fails again.
---
## Post-Deployment Steps
After successful deployment:
1. **Update .env**
```bash
LINK_TOKEN=<deployed_address>
```
2. **Mint Initial Supply** (if not done automatically)
```bash
cast send $LINK_TOKEN "mint(address,uint256)" \
$DEPLOYER 1000000e18 \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--legacy
```
3. **Fund Bridge Contracts**
```bash
# WETH9 Bridge: 10 LINK
cast send $LINK_TOKEN "transfer(address,uint256)" \
$WETH9_BRIDGE 10e18 \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--legacy
# WETH10 Bridge: 10 LINK
cast send $LINK_TOKEN "transfer(address,uint256)" \
$WETH10_BRIDGE 10e18 \
--rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
--legacy
```
4. **Update Token Lists**
- Update `token-lists/lists/dbis-138.tokenlist.json`
- Update `token-list.json`
5. **Run Database Migration**
```bash
psql -U postgres -d explorer -f backend/database/migrations/0009_add_link_token.up.sql
```
---
## Troubleshooting
### If Deployment Fails
1. **Check DEBUG API** (if enabled):
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["<tx_hash>",{"tracer":"callTracer"}],"id":1}' \
http://192.168.11.250:8545 | jq
```
2. **Check Transaction Status**:
```bash
cast receipt <tx_hash> --rpc-url http://192.168.11.250:8545
```
3. **Check Network Logs**:
- Besu logs: `journalctl -u besu-rpc -n 100`
- Network permissions
- Gas limits
### Common Issues
- **"Intrinsic gas exceeds gas limit"**: Increase gas limit
- **"Transaction reverted"**: Check DEBUG API for revert reason
- **"Contract not found"**: Wait for confirmation or check transaction status
---
## Next Steps
1. ✅ Run deployment test suite
2. ⏳ Deploy LINK token contract
3. ⏳ Verify deployment
4. ⏳ Mint initial supply
5. ⏳ Fund bridge contracts
6. ⏳ Update configurations
7. ⏳ Complete prerequisites
---
**Status**: All components verified and ready for deployment.