Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
267 changes: 267 additions & 0 deletions docs/HyperEVM_Configuration_Calldata.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
# HyperEVM Configuration Calldata

This document contains the raw calldata for configuring ETH/Base -> HyperEVM OFT pathways.
These transactions need to be executed via Etherscan/Basescan using the Porto wallet.

## Important: Authorization Requirements

| Transaction | Target Contract | Who Can Execute | Wallet |
|-------------|-----------------|-----------------|--------|
| TX 1-2 | OFT contracts | **Owner only** | MPC Wallet (`0x97b5e4a707A4D5AB4A58b2c93bc8d249a63Ff153`) |
| TX 3-6 | LZ Endpoint | **Delegate only** | Deployer (`0x6E3dadcAf328ebB58753e89a3e589F5C5e988dF8`) |

### Current Delegate Status (Verified)

| Chain | OFT Contract | Current Delegate |
|-------|--------------|------------------|
| Ethereum | `0x722ff7C0665F4b1823c9C4cFcDF73A43de5865BD` | `0x6E3dadcAf328ebB58753e89a3e589F5C5e988dF8` ✅ |
| Base | `0x5b2193fDc451C1f847bE09CA9d13A4Bf60f8c86B` | `0x6E3dadcAf328ebB58753e89a3e589F5C5e988dF8` ✅ |

**Good news:** The deployer is already set as the delegate for both OFT contracts. This means:
- **TX 1-2**: Must be executed via Porto (MPC wallet)
- **TX 3-6**: Can be executed by the deployer directly (no MPC needed)

### setDelegate Calldata (if delegation needs to change)

**On ETH OFT Adapter** (`0x722ff7C0665F4b1823c9C4cFcDF73A43de5865BD`):
```
0xca5eb5e100000000000000000000000097b5e4a707a4d5ab4a58b2c93bc8d249a63ff153
```

**On Base OFT** (`0x5b2193fDc451C1f847bE09CA9d13A4Bf60f8c86B`):
```
0xca5eb5e100000000000000000000000097b5e4a707a4d5ab4a58b2c93bc8d249a63ff153
```

---

## Overview

| Chain | # of Transactions | OFT Contract |
|-------|-------------------|--------------|
| Ethereum | 6 | `0x722ff7C0665F4b1823c9C4cFcDF73A43de5865BD` (UpOFTAdapter) |
| Base | 6 | `0x5b2193fDc451C1f847bE09CA9d13A4Bf60f8c86B` (UpOFT) |

**HyperEVM OFT (peer):** `0x642fFC3496AcA19106BAB7A42F1F221a329654fe`

**LayerZero Endpoint:** `0x1a44076050125825900e736c501f859c50fE728c` (same on ETH & Base)

---

## Ethereum Transactions (6 total)

### TX 1: setPeer on UpOFTAdapter

| Field | Value |
|-------|-------|
| **To** | `0x722ff7C0665F4b1823c9C4cFcDF73A43de5865BD` |
| **Function** | `setPeer(uint32 _eid, bytes32 _peer)` |
| **Value** | 0 ETH |

**Calldata:**
```
0x3400288b000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000642ffc3496aca19106bab7a42f1f221a329654fe
```

---

### TX 2: setEnforcedOptions on UpOFTAdapter

| Field | Value |
|-------|-------|
| **To** | `0x722ff7C0665F4b1823c9C4cFcDF73A43de5865BD` |
| **Function** | `setEnforcedOptions(EnforcedOptionParam[])` |
| **Value** | 0 ETH |

**Calldata:**
```
0xb98bd07000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000016000301001101000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000000000000000000000000769f00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002c000301001101000000000000000000000000000493e0010013030000000000000000000000000000000f42400000000000000000000000000000000000000000
```

---

### TX 3: setSendLibrary on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setSendLibrary(address _oapp, uint32 _eid, address _newLib)` |
| **Value** | 0 ETH |

**Calldata:**
```
0x9535ff30000000000000000000000000722ff7c0665f4b1823c9c4cfcdf73a43de5865bd000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000bb2ea70c9e858123480642cf96acbcce1372dce1
```

---

### TX 4: setReceiveLibrary on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod)` |
| **Value** | 0 ETH |

**Calldata:**
```
0x6a14d715000000000000000000000000722ff7c0665f4b1823c9c4cfcdf73a43de5865bd000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000c02ab410f0734efa3f14628780e6e695156024c20000000000000000000000000000000000000000000000000000000000000000
```

---

### TX 5: setConfig (SendLib) on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setConfig(address _oapp, address _lib, SetConfigParam[])` |
| **Value** | 0 ETH |

**Calldata:**
```
0x6dbd9f90000000000000000000000000722ff7c0665f4b1823c9c4cfcdf73a43de5865bd000000000000000000000000bb2ea70c9e858123480642cf96acbcce1372dce10000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000769f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000002710000000000000000000000000173272739bd7aa6e4e214714048a9fe699453059000000000000000000000000000000000000000000000000000000000000769f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000589dedbd617e0cbcb916a9223f4d1300c294236b0000000000000000000000000000000000000000000000000000000000000000
```

---

### TX 6: setConfig (ReceiveLib) on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setConfig(address _oapp, address _lib, SetConfigParam[])` |
| **Value** | 0 ETH |

**Calldata:**
```
0x6dbd9f90000000000000000000000000722ff7c0665f4b1823c9c4cfcdf73a43de5865bd000000000000000000000000c02ab410f0734efa3f14628780e6e695156024c2000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000769f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000589dedbd617e0cbcb916a9223f4d1300c294236b0000000000000000000000000000000000000000000000000000000000000000
```

---

## Base Transactions (6 total)

### TX 1: setPeer on UpOFT

| Field | Value |
|-------|-------|
| **To** | `0x5b2193fDc451C1f847bE09CA9d13A4Bf60f8c86B` |
| **Function** | `setPeer(uint32 _eid, bytes32 _peer)` |
| **Value** | 0 ETH |

**Calldata:**
```
0x3400288b000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000642ffc3496aca19106bab7a42f1f221a329654fe
```

---

### TX 2: setEnforcedOptions on UpOFT

| Field | Value |
|-------|-------|
| **To** | `0x5b2193fDc451C1f847bE09CA9d13A4Bf60f8c86B` |
| **Function** | `setEnforcedOptions(EnforcedOptionParam[])` |
| **Value** | 0 ETH |

**Calldata:**
```
0xb98bd07000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000016000301001101000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000000000000000000000000769f00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002c000301001101000000000000000000000000000493e0010013030000000000000000000000000000000f42400000000000000000000000000000000000000000
```

---

### TX 3: setSendLibrary on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setSendLibrary(address _oapp, uint32 _eid, address _newLib)` |
| **Value** | 0 ETH |

**Calldata:**
```
0x9535ff300000000000000000000000005b2193fdc451c1f847be09ca9d13a4bf60f8c86b000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000b5320b0b3a13cc860893e2bd79fcd7e13484dda2
```

---

### TX 4: setReceiveLibrary on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod)` |
| **Value** | 0 ETH |

**Calldata:**
```
0x6a14d7150000000000000000000000005b2193fdc451c1f847be09ca9d13a4bf60f8c86b000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000c70ab6f32772f59fbfc23889caf4ba3376c84baf0000000000000000000000000000000000000000000000000000000000000000
```

---

### TX 5: setConfig (SendLib) on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setConfig(address _oapp, address _lib, SetConfigParam[])` |
| **Value** | 0 ETH |

**Calldata:**
```
0x6dbd9f900000000000000000000000005b2193fdc451c1f847be09ca9d13a4bf60f8c86b000000000000000000000000b5320b0b3a13cc860893e2bd79fcd7e13484dda20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000769f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000027100000000000000000000000002cca08ae69e0c44b18a57ab2a87644234daebae4000000000000000000000000000000000000000000000000000000000000769f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009e059a54699a285714207b43b055483e78faac250000000000000000000000000000000000000000000000000000000000000000
```

---

### TX 6: setConfig (ReceiveLib) on LZ Endpoint

| Field | Value |
|-------|-------|
| **To** | `0x1a44076050125825900e736c501f859c50fE728c` |
| **Function** | `setConfig(address _oapp, address _lib, SetConfigParam[])` |
| **Value** | 0 ETH |

**Calldata:**
```
0x6dbd9f900000000000000000000000005b2193fdc451c1f847be09ca9d13a4bf60f8c86b000000000000000000000000c70ab6f32772f59fbfc23889caf4ba3376c84baf000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000769f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009e059a54699a285714207b43b055483e78faac250000000000000000000000000000000000000000000000000000000000000000
```

---

## How to Execute via Etherscan/Basescan

1. **Go to the target contract** on Etherscan (for Ethereum TXs) or Basescan (for Base TXs)
2. **Connect your Porto wallet** via WalletConnect
3. **Navigate to "Contract" → "Write Contract"**
4. **For simpler transactions** (TX 1, 3, 4): Find the function and enter parameters manually
5. **For complex transactions** (TX 2, 5, 6): Use "Write Contract" with raw input data:
- Some explorers have a "Write as Proxy" or raw input option
- Alternatively, use the "Contract" → "Code" → "Write Contract" with the raw calldata

### Alternative: Using cast

You can also decode and verify the calldata using cast:

```bash
# Decode setPeer calldata
cast 4byte-decode 0x3400288b000000000000000000000000000000000000000000000000000000000000769f000000000000000000000000642ffc3496aca19106bab7a42f1f221a329654fe
```

---

## Regenerating Calldata

If you need to regenerate this calldata (e.g., for different addresses), run:

```bash
cd /Users/cosming/1.Coding/Superform/v2-periphery
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Local filesystem path committed in documentation

Low Severity

The "Regenerating Calldata" section contains an absolute local filesystem path (/Users/cosming/1.Coding/Superform/v2-periphery) that exposes a developer's machine username and directory structure. This is not useful for other developers and leaks personal info. It can be replaced with a relative path or a generic instruction.

Fix in Cursor Fix in Web

forge script script/GenerateHyperEVMCalldata.s.sol -vvv
```

---

*Generated: 2026-02-19*
Loading