# Token Mechanism Documentation

**Date**: 2025-01-12  
**Network**: ChainID 138

---

## Overview

This document describes the token mechanism used for WETH9 and WETH10 tokens in the CCIP bridging system.

---

## Token Mechanism: Lock & Release / Lock & Mint

### Mechanism Type
**Lock & Release / Lock & Mint** - Standard WETH wrapping mechanism

### How It Works

1. **Wrapping (ETH → WETH)**:
   - User sends ETH to WETH contract
   - WETH contract locks ETH
   - WETH tokens are minted to user (1:1 ratio)
   - ETH is held in WETH contract

2. **Unwrapping (WETH → ETH)**:
   - User sends WETH tokens to WETH contract
   - WETH tokens are burned
   - ETH is released to user (1:1 ratio)

3. **Cross-Chain Bridging**:
   - Source Chain: WETH tokens are locked/burned
   - Destination Chain: WETH tokens are minted/released
   - Maintains 1:1 ratio across chains

---

## WETH9 Token

### Contract Address
- **Address**: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`
- **Standard**: WETH9 (with known `decimals()` issue)

### Key Functions

#### `deposit()`
Wraps ETH to WETH9.
- Sends ETH to contract
- Mints WETH9 tokens (1:1 ratio)

#### `withdraw(uint256)`
Unwraps WETH9 to ETH.
- Burns WETH9 tokens
- Releases ETH (1:1 ratio)

#### `totalSupply()`
Returns total WETH9 supply.

**Note**: `decimals()` returns 0 (known issue with WETH9 standard).

### 1:1 Ratio Verification

The contract maintains a 1:1 ratio between:
- Contract ETH balance
- WETH9 total supply

**Verification Script**: `scripts/inspect-weth9-contract.sh`

**Status**: ✅ Verified - 1:1 ratio confirmed

---

## WETH10 Token

### Contract Address
- **Address**: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f`
- **Standard**: WETH10 (fixed `decimals()` issue)

### Key Functions

#### `deposit()`
Wraps ETH to WETH10.
- Sends ETH to contract
- Mints WETH10 tokens (1:1 ratio)

#### `withdraw(uint256)`
Unwraps WETH10 to ETH.
- Burns WETH10 tokens
- Releases ETH (1:1 ratio)

#### `totalSupply()`
Returns total WETH10 supply.

#### `decimals()`
Returns 18 (fixed in WETH10 standard).

### 1:1 Ratio Verification

The contract maintains a 1:1 ratio between:
- Contract ETH balance
- WETH10 total supply

**Verification Script**: `scripts/inspect-weth10-contract.sh`

**Status**: ✅ Verified - 1:1 ratio confirmed

---

## Rationale

### Why Lock & Release / Lock & Mint?

1. **Simplicity**: Standard WETH mechanism, well-understood
2. **Security**: ETH is locked in contract, cannot be lost
3. **Transparency**: 1:1 ratio is verifiable on-chain
4. **Compatibility**: Works with existing WETH infrastructure

### Why Both WETH9 and WETH10?

1. **WETH9**: Standard, widely used, but has `decimals()` issue
2. **WETH10**: Fixed `decimals()` issue, better wallet compatibility
3. **User Choice**: Users can choose based on their needs

---

## Implementation Details

### Wrapping Process

```solidity
// User sends ETH to WETH contract
WETH.deposit{value: amount}();

// Contract:
// 1. Receives ETH
// 2. Mints WETH tokens to user (1:1)
// 3. ETH remains in contract
```

### Unwrapping Process

```solidity
// User sends WETH to contract
WETH.withdraw(amount);

// Contract:
// 1. Burns WETH tokens
// 2. Releases ETH to user (1:1)
```

### Cross-Chain Bridging

```solidity
// Source Chain:
// 1. User wraps ETH → WETH
// 2. User approves bridge
// 3. Bridge locks/burns WETH
// 4. CCIP message sent

// Destination Chain:
// 1. CCIP message received
// 2. Bridge mints/releases WETH
// 3. User receives WETH (1:1)
```

---

## Verification Results

### WETH9 Verification
- **Date**: 2025-01-12
- **Contract Balance**: Matches total supply
- **Total Supply**: Matches contract balance
- **Status**: ✅ 1:1 ratio verified

### WETH10 Verification
- **Date**: 2025-01-12
- **Contract Balance**: Matches total supply
- **Total Supply**: Matches contract balance
- **Status**: ✅ 1:1 ratio verified

---

## Testing

### Test Scripts

1. **WETH9 Ratio Verification**:
   ```bash
   ./scripts/inspect-weth9-contract.sh
   ```

2. **WETH10 Ratio Verification**:
   ```bash
   ./scripts/inspect-weth10-contract.sh
   ```

3. **Token Mechanism Test Suite** (Task 40):
   ```bash
   ./scripts/test-token-mechanism.sh
   ```

---

## Related Documentation

- [WETH9 1:1 Ratio Verification](./WETH9_1_TO_1_RATIO_VERIFICATION.md)
- [CCIP Configuration Status](./CCIP_CONFIGURATION_STATUS.md)
- [Complete Task Catalog](./CCIP_COMPLETE_TASK_CATALOG.md)

---

**Last Updated**: 2025-01-12

