234 lines
5.8 KiB
Markdown
234 lines
5.8 KiB
Markdown
|
|
# 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.
|
||
|
|
|