Update submodule references and improve CI workflow
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled

- Update submodule references for explorer-monorepo and smom-dbis-138 to latest commits.
- Modify CI workflow to include shellcheck installation and enforce error severity for script checks.
- Update contract addresses in configuration and documentation to reflect the new canonical addresses for CCIPWETH9Bridge and CCIP Router.
- Revise integration test documentation to align with updated contract addresses and deployment statuses.

Made-with: Cursor
This commit is contained in:
defiQUG
2026-03-24 22:50:52 -07:00
parent 95522d3bca
commit 2a6d3cfc7f
43 changed files with 281 additions and 101 deletions

View File

@@ -106,7 +106,7 @@
| R1 | Verify every deployed contract on Blockscout | After each deployment |
| R2 | Keep CONTRACT_ADDRESSES_REFERENCE and ADDRESS_MATRIX_AND_STATUS updated | When new contracts deployed/deprecated |
| R3 | Run check-contracts-on-chain-138.sh; fix MISSING/EMPTY | Periodically or after deploy |
| R4 | Use canonical CCIPWETH9Bridge (0x971c...); do not use deprecated | Always |
| R4 | Use canonical CCIPWETH9Bridge (`0xcacfd227A040002e49e2e01626363071324f820a`); do not use deprecated | Always |
| R5 | Never commit .env or private keys; rotate if exposed | Always |
| R6R7 | API keys in .env; restrict deployer and RPC admin | Access review |
| R8R9 | Set RPC_URL_138; use GAS_PRICE on Chain 138 | Before deploy / every forge script |

View File

@@ -50,7 +50,7 @@
| # | Action | Notes |
|---|--------|-------|
| R4 | Do not use deprecated CCIPWETH9Bridge; use 0x971c... and set env | Always |
| R4 | Do not use deprecated CCIPWETH9Bridge; use `0xcacfd227A040002e49e2e01626363071324f820a` and set env | Always |
| R5 | Never commit .env or private keys; rotate exposed keys | Always |
| R6 | API keys in .env.example placeholders | — |
| R7 | Restrict deployer key and RPC admin access | Access review |

View File

@@ -72,7 +72,7 @@
### W0-2: sendCrossChain (real)
**Blocker:** `PRIVATE_KEY` and LINK approved in `.env`; bridge `0x971cD9D156f193df8051E48043C476e53ECd4693`.
**Blocker:** `PRIVATE_KEY` and LINK approved in `.env`; bridge `0xcacfd227A040002e49e2e01626363071324f820a`.
**Steps:**

View File

@@ -11,7 +11,7 @@
| Task | Blocker | Command / doc |
|------|---------|----------------|
| W0-1 NPMplus RPC fix (405) | Host on LAN (192.168.11.x) | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) § W0-1. `bash scripts/run-wave0-from-lan.sh` or `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh`. |
| W0-2 sendCrossChain (real) | PRIVATE_KEY, LINK approved | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) § W0-2. `bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]`. Bridge: `0x971cD9D156f193df8051E48043C476e53ECd4693`. |
| W0-2 sendCrossChain (real) | PRIVATE_KEY, LINK approved | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) § W0-2. `bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]`. Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`. |
| W0-3 NPMplus backup | NPM_PASSWORD in .env | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) § W0-3. `bash scripts/verify/backup-npmplus.sh` or `scripts/run-wave0-from-lan.sh`. |
---

View File

@@ -27,7 +27,7 @@
| **PRIVATE_KEY** | Deploy, bridge send, forge script | 64-char hex; same wallet holds LINK for CCIP fees |
| **RPC_URL_138** | Deploy, verify, on-chain checks | Use IP:port for deploy: `http://192.168.11.211:8545` |
| **ETH_MAINNET_RPC_URL** / **ETHEREUM_MAINNET_RPC** | Mainnet verify, CCIP, relay | Infura/Alchemy |
| **CCIPWETH9_BRIDGE_CHAIN138**, **CCIPWETH10_BRIDGE_CHAIN138** | Bridge scripts, token-aggregation, routing | Canonical: WETH9 `0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5`; WETH10 see §3 gap |
| **CCIPWETH9_BRIDGE_CHAIN138**, **CCIPWETH10_BRIDGE_CHAIN138** | Bridge scripts, token-aggregation, routing | Canonical: WETH9 `0xcacfd227A040002e49e2e01626363071324f820a`; WETH10 `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
| **CHAIN_138_DODO_PMM_INTEGRATION** | Token-aggregation indexer, quotes | `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` |
| **CUSDT_ADDRESS_138**, **CUSDC_ADDRESS_138** | Scripts, token-aggregation | Canonical in EXPLORER_TOKEN_LIST_CROSSCHECK §5 |
| **DATABASE_URL** | Token-aggregation DB, migrations | When using PostgreSQL (e.g. VMID 5000) |
@@ -83,8 +83,8 @@
| Gap | Location | Recommendation |
|-----|----------|----------------|
| **CCIPWETH10 on Chain 138** | CONTRACT_ADDRESSES_REFERENCE.md: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`. Reconcile script / some code may output `0xF5a87528cEb72312979DB0C51509489caF940721`. routing-registry.json and cross-chain-bridges use `0xe0E932...`. | Verify on Blockscout which contract is the active CCIP WETH10 bridge; align reconcile script and env.additions.example to that address. |
| **CCIPWETH9 on Chain 138** | Docs mention both `0x971cD9...` and `0x9cba0D04...`. On-chain check and routing-registry use `0x9cba0D04...`. | Treat `0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5` as canonical for “working” WETH9 bridge; document the other in CONTRACT_ADDRESSES_REFERENCE as alternate/deploy if applicable. |
| **CCIPWETH10 on Chain 138** | CONTRACT_ADDRESSES_REFERENCE.md: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`. Older bootstrap defaults may still mention `0xF5a87528cEb72312979DB0C51509489caF940721`, but the active routing registry and env-backed defaults now use `0xe0E932...`. | Keep `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` as the canonical WETH10 bridge and update any remaining legacy bootstrap references if they resurface. |
| **CCIPWETH9 on Chain 138** | Docs mention both `0x971cD9...` and `0xcacfd227...`. On-chain check and routing-registry use `0xcacfd227...`. | Treat `0xcacfd227A040002e49e2e01626363071324f820a` as canonical for “working” WETH9 bridge; document the other in CONTRACT_ADDRESSES_REFERENCE as alternate/deploy if applicable. |
### 4.2 Missing or placeholder env

View File

@@ -53,7 +53,7 @@ Tasks below do **not** depend on obtaining API keys (Li.Fi, CoinGecko, etc.). Th
| ID | Task | Type | Prerequisite | Command / note |
|----|------|------|--------------|----------------|
| **W0-1** | NPMplus RPC fix (405) | Op | Host on LAN | `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` — or `bash scripts/run-wave0-from-lan.sh` (omit `--skip-rpc-fix`). |
| **W0-2** | sendCrossChain (real) | Op | PRIVATE_KEY, LINK approved for fee | `scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` — omit `--dry-run`. Bridge: 0x971cD9D156f193df8051E48043C476e53ECd4693. |
| **W0-2** | sendCrossChain (real) | Op | PRIVATE_KEY, LINK approved for fee | `scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` — omit `--dry-run`. Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`. |
| **W0-3** | NPMplus backup | Op | NPM_PASSWORD in .env, NPMplus up | `bash scripts/verify/backup-npmplus.sh`. Or `scripts/run-wave0-from-lan.sh` (omit `--skip-backup`). |
**Combined (W0-1 + W0-3):** `bash scripts/run-wave0-from-lan.sh` from LAN (options: `--dry-run`, `--skip-backup`, `--skip-rpc-fix`).

View File

@@ -28,7 +28,7 @@ This document is the **single source of truth** for all next steps and remaining
| Step | Task | Status | Notes |
|------|------|--------|-------|
| 1 | Run `./scripts/deploy-and-configure-weth9-bridge-chain138.sh` (requires PRIVATE_KEY) | ✅ Done | Bridge at 0x971cD9D156f193df8051E48043C476e53ECd4693 |
| 1 | Run `./scripts/deploy-and-configure-weth9-bridge-chain138.sh` (requires PRIVATE_KEY) | ✅ Done | Bridge at `0xcacfd227A040002e49e2e01626363071324f820a` |
| 2 | Set `export CCIPWETH9_BRIDGE_CHAIN138=<printed_address>` in shell and .env | ✅ Done | Set in smom-dbis-138/.env |
| 3 | Execute sendCrossChain and verify transfer | ⏳ Pending | Ready for bridge operations |

View File

@@ -65,7 +65,7 @@ bash scripts/bridge/run-send-cross-chain.sh 0.01
bash scripts/bridge/run-send-cross-chain.sh 0.01 0xYourRecipientAddress
```
Bridge contract (reference): `0x971cD9D156f193df8051E48043C476e53ECd4693`. Ensure `CCIPWETH9_BRIDGE_CHAIN138` and `RPC_URL_138`/`CHAIN138_RPC` in `.env`.
Bridge contract (reference): `0xcacfd227A040002e49e2e01626363071324f820a`. Ensure `CCIPWETH9_BRIDGE_CHAIN138` and `RPC_URL_138`/`CHAIN138_RPC` in `.env`.
### W0-3: NPMplus backup (re-run anytime)

View File

@@ -195,7 +195,7 @@ forge script script/bridge/trustless/DeployTrustlessBridge.s.sol:DeployTrustless
## 8. Wave 0: sendCrossChain (real) and NPMplus backup
**sendCrossChain (real):** Requires `PRIVATE_KEY` and LINK approved in `.env`. Bridge: `0x971cD9D156f193df8051E48043C476e53ECd4693`.
**sendCrossChain (real):** Requires `PRIVATE_KEY` and LINK approved in `.env`. Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`.
```bash
bash scripts/bridge/run-send-cross-chain.sh 0.01 [recipient_address]

View File

@@ -21,7 +21,7 @@
| ID | Task | Command / note |
|----|------|------------------|
| W0-1 | Apply NPMplus RPC fix (405) | From LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| W0-2 | Execute sendCrossChain (real) | Omit `--dry-run` in `run-send-cross-chain.sh`; LINK approved; bridge 0x971cD9D156f193df8051E48043C476e53ECd4693 |
| W0-2 | Execute sendCrossChain (real) | Omit `--dry-run` in `run-send-cross-chain.sh`; LINK approved; bridge `0xcacfd227A040002e49e2e01626363071324f820a` |
| W0-3 | NPMplus backup (export/config) | NPM_PASSWORD in .env; `./scripts/backup/automated-backup.sh [--with-npmplus]` |
---

View File

@@ -29,7 +29,7 @@
| | Detail |
|---|--------|
| **Needed** | `PRIVATE_KEY` in `.env` (wallet with gas + LINK for fees); bridge `0x971cD9D156f193df8051E48043C476e53ECd4693`; recipient address. |
| **Needed** | `PRIVATE_KEY` in `.env` (wallet with gas + LINK for fees); bridge `0xcacfd227A040002e49e2e01626363071324f820a`; recipient address. |
| **Missing** | 1) A wallet private key you control. 2) LINK approved for the bridge fee (if the bridge charges LINK). 3) Optional: recipient address (script may have default). |
| **Where to get** | **PRIVATE_KEY:** Create or use an existing funded wallet; set in root or `smom-dbis-138/.env`. **LINK:** On Chain 138, approve LINK for the bridge contract (amount depends on fee). **Recipient:** Any valid address on the destination chain. |
| **Doc** | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) § W0-2; [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) §8. |

View File

@@ -26,7 +26,7 @@ Within each wave there are **no ordering requirements** between items; run them
| Item | Status | Action |
|------|--------|--------|
| **Execute sendCrossChain (real)** | ⏳ Pending | Remove `--dry-run` from `run-send-cross-chain.sh`; ensure LINK approved for fee token. Bridge at 0x971cD9D156f193df8051E48043C476e53ECd4693. |
| **Execute sendCrossChain (real)** | ⏳ Pending | Remove `--dry-run` from `run-send-cross-chain.sh`; ensure LINK approved for fee token. Bridge at 0xcacfd227A040002e49e2e01626363071324f820a. |
| **Apply NPMplus RPC fix (405)** | ⏳ If RPC 405 | From a host on LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` (sets block_exploits false for RPC). |
| **CT 2301** | ✅ Resolved | Recreated 2026-02-04; Besu config may need reinstall (copy from 2101/2201). |

View File

@@ -71,7 +71,7 @@ These can be done from your current environment (e.g. dev machine, WSL, CI) with
### W0-2: sendCrossChain (real)
**Blocker:** `PRIVATE_KEY` and LINK approved for fee in `.env`; bridge contract: `0x971cD9D156f193df8051E48043C476e53ECd4693`.
**Blocker:** `PRIVATE_KEY` and LINK approved for fee in `.env`; bridge contract: `0xcacfd227A040002e49e2e01626363071324f820a`.
**Detailed steps:**

View File

@@ -10,7 +10,7 @@
| ID | Task | Detailed steps |
|----|------|-----------------|
| **W0-1** | NPMplus RPC fix (405) | ✅ Done (2026-02-06 run). Re-run from host on LAN if needed: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| **W0-2** | Execute sendCrossChain (real) | 1) Ensure `PRIVATE_KEY` and LINK/fee token approved in `.env`. 2) Run `./scripts/bridge/run-send-cross-chain.sh <amount_eth> [recipient]` **without** `--dry-run`. 3) Example: `./scripts/bridge/run-send-cross-chain.sh 0.01` or with recipient: `./scripts/bridge/run-send-cross-chain.sh 0.01 0xYourAddress`. Bridge: `0x971cD9D156f193df8051E48043C476e53ECd4693`. |
| **W0-2** | Execute sendCrossChain (real) | 1) Ensure `PRIVATE_KEY` and LINK/fee token approved in `.env`. 2) Run `./scripts/bridge/run-send-cross-chain.sh <amount_eth> [recipient]` **without** `--dry-run`. 3) Example: `./scripts/bridge/run-send-cross-chain.sh 0.01` or with recipient: `./scripts/bridge/run-send-cross-chain.sh 0.01 0xYourAddress`. Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`. |
| **W0-3** | NPMplus backup | 1) Set `NPM_PASSWORD` in `.env`. 2) When NPMplus container is up, run: `bash scripts/verify/backup-npmplus.sh` or `./scripts/backup/automated-backup.sh [--with-npmplus]`. 3) Re-run if previous backup had API/auth warnings. |
---

View File

@@ -13,7 +13,7 @@
| # | Task | Command / doc |
|---|------|----------------|
| 1 | **W0-1 NPMplus RPC fix (405)** | From LAN: `bash scripts/run-wave0-from-lan.sh` or `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh`. Verify: `bash scripts/verify/verify-end-to-end-routing.sh`. |
| 2 | **W0-2 sendCrossChain (real)** | `bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` (omit `--dry-run`). Requires PRIVATE_KEY and LINK approved. Bridge: `0x971cD9D156f193df8051E48043C476e53ECd4693`. |
| 2 | **W0-2 sendCrossChain (real)** | `bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` (omit `--dry-run`). Requires PRIVATE_KEY and LINK approved. Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`. |
| 3 | **W0-3 NPMplus backup** | `bash scripts/verify/backup-npmplus.sh` or `bash scripts/run-wave0-from-lan.sh` (no `--skip-backup`). Requires NPM_PASSWORD. |
| 4 | **Blockscout verification** | `source smom-dbis-138/.env 2>/dev/null; ./scripts/verify/run-contract-verification-with-proxy.sh`. Retry one: `--only ContractName`. |
| 5 | **Fix E2E 502s** | `./scripts/maintenance/run-all-maintenance-via-proxmox-ssh.sh --e2e` or `./scripts/maintenance/address-all-remaining-502s.sh --run-besu-fix --e2e`. Runbook: [502_DEEP_DIVE_ROOT_CAUSES_AND_FIXES.md](502_DEEP_DIVE_ROOT_CAUSES_AND_FIXES.md). |

View File

@@ -29,7 +29,7 @@
- WETH9: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` (same as Ethereum mainnet **by design**; canonical bytecode verified on 138)
- WETH10: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f`
- Bridges:
- WETH9 Bridge: `0x971cD9D156f193df8051E48043C476e53ECd4693`
- WETH9 Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`
- WETH10 Bridge: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
**5) EIP-1559**
@@ -103,7 +103,7 @@ Chain 138 intentionally uses the **same addresses as Ethereum mainnet** for WETH
|-----------------------|---------------------|--------|
| **WETH9** (wrapped-native) | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | Same as mainnet; canonical WETH9 bytecode verified on 138 (see `smom-dbis-138/scripts/verify-weth9-canonical.js`). |
| **WETH10** | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | Same as mainnet. |
| **WETH9 Bridge** (CCIP) | `0x971cD9D156f193df8051E48043C476e53ECd4693` | In `config/contract-addresses.conf` as `ADDR_CCIPWETH9_BRIDGE`. |
| **WETH9 Bridge** (CCIP) | `0xcacfd227A040002e49e2e01626363071324f820a` | In `config/contract-addresses.conf` as `ADDR_CCIPWETH9_BRIDGE`. |
| **WETH10 Bridge** (CCIP) | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | In `config/contract-addresses.conf` as `ADDR_CCIPWETH10_BRIDGE`. |
So the **intended wrapped-native (WETH9-equivalent) address** on Chain 138 is **`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`**. The explorer is correct to show it; the chain is not “mainnet” but uses that address by design.
@@ -155,7 +155,7 @@ Verification run: config and live endpoints checked against the values above.
| RPC URL (HTTPS/WS) | `explorer-monorepo/frontend/public/explorer-spa.js` | `RPC_FQDN` = `https://rpc-http-pub.d-bis.org`, `RPC_WS_FQDN` = `wss://rpc-ws-pub.d-bis.org`, `RPC_IP` = `http://192.168.11.221:8545` |
| ChainId | same file | `CHAIN_ID = 138`, MetaMask `chainId: '0x8A'` |
| WETH9 / WETH10 | same file | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`, `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` |
| WETH9/WETH10 bridges | same file | `0x971cD9D156f193df8051E48043C476e53ECd4693`, `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
| WETH9/WETH10 bridges | same file | `0xcacfd227A040002e49e2e01626363071324f820a`, `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
| Blockscout env | `scripts/run-blockscout-config-direct.sh` | `ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.221:8545`, `CHAIN_ID=138`, `ETHEREUM_JSONRPC_VARIANT=besu` |
| API proxy | `explorer-monorepo/scripts/fix-nginx-serve-custom-frontend.sh` | `location /api/``proxy_pass http://127.0.0.1:4000` |

View File

@@ -66,7 +66,7 @@ This document provides a comprehensive master list of all secrets discovered acr
| Secret Name | Location | Value | Status |
|------------|----------|-------|--------|
| `LINK_TOKEN` | Multiple `.env` files | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | ✅ Public |
| `CCIP_ROUTER` | Multiple `.env` files | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ Public |
| `CCIP_ROUTER` | Multiple `.env` files | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | ✅ Public |
| `CCIP_FEE_TOKEN` | Multiple `.env` files | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | ✅ Public |
| `TOKEN_FACTORY` | `proxmox/smom-dbis-138/.env` | `0xEBFb5C60dE5f7C4baae180CA328D3BB39E1a5133` | ✅ Public |
| `TOKEN_REGISTRY_ADDRESS` | `proxmox/smom-dbis-138/.env` | `0x91Efe92229dbf7C5B38D422621300956B55870Fa` | ✅ Public |

View File

@@ -21,18 +21,15 @@ Since transactions sent via MetaMask (like nonce 25) work successfully, configur
### WETH9 Bridge Configuration
**Contract Address**: `0x89dd12025bfCD38A168455A44B400e913ED33BE2`
**Contract Address**: `0xcacfd227A040002e49e2e01626363071324f820a`
**Function**: `addDestination(uint64,address)`
**Parameters**:
- `chainSelector`: `5009297550715157269` (Ethereum Mainnet)
- `destination`: `0x8078a09637e47fa5ed34f626046ea2094a5cde5e`
- `destination`: `0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6`
**Calldata** (for reference):
```
0x4c4c4c4c5009297550715157269000000000000000000000008078a09637e47fa5ed34f626046ea2094a5cde5e
```
**Calldata**: Generate it with `cast calldata "addDestination(uint64,address)" 5009297550715157269 0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6`
### WETH10 Bridge Configuration
@@ -42,7 +39,7 @@ Since transactions sent via MetaMask (like nonce 25) work successfully, configur
**Parameters**:
- `chainSelector`: `5009297550715157269` (Ethereum Mainnet)
- `destination`: `0x105f8a15b819948a89153505762444ee9f324684`
- `destination`: `0x04E1e22B0D41e99f4275bd40A50480219bc9A223`
---
@@ -51,15 +48,15 @@ Since transactions sent via MetaMask (like nonce 25) work successfully, configur
1. **Connect to ChainID 138** in MetaMask
2. **Go to "Send" or use a dApp interface**
3. **For WETH9**:
- To: `0x89dd12025bfCD38A168455A44B400e913ED33BE2`
- To: `0xcacfd227A040002e49e2e01626363071324f820a`
- Data: Use function `addDestination(uint64,address)` with parameters:
- `5009297550715157269`
- `0x8078a09637e47fa5ed34f626046ea2094a5cde5e`
- `0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6`
4. **For WETH10**:
- To: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
- Data: Use function `addDestination(uint64,address)` with parameters:
- `5009297550715157269`
- `0x105f8a15b819948a89153505762444ee9f324684`
- `0x04E1e22B0D41e99f4275bd40A50480219bc9A223`
---
@@ -77,4 +74,3 @@ Expected: 7/7 networks configured ✅
---
**Last Updated**: $(date)

View File

@@ -24,7 +24,7 @@
"dateUtc": "REPLACE_ISO_UTC"
},
{
"role": "General Counsel",
"role": "Chief Legal Officer",
"name": "REPLACE_NAME",
"dateUtc": "REPLACE_ISO_UTC"
}

View File

@@ -24,12 +24,17 @@
"dateUtc": "2026-03-25T21:00:00Z"
},
{
"role": "General Counsel",
"role": "Chief Legal Officer",
"name": "TRH. Pandora C. Walker, Esq.",
"dateUtc": "2026-03-25T21:00:00Z"
},
{
"role": "Director",
"name": "Mr. Romeo L. Miles",
"dateUtc": "2026-03-25T21:00:00Z"
}
],
"rosterCrossReference": "Mr. Romeo L. Miles is listed on the OMNL banking directors and officers roster (Appendix/OMNL_BANKING_DIRECTORS_AND_LEI.md).",
"rosterCrossReference": "All three signatories appear on the OMNL banking directors and officers roster (Appendix/OMNL_BANKING_DIRECTORS_AND_LEI.md). Adjust formal titles in board resolutions and SUBREG if they differ from the roles listed here.",
"provenance": {
"hybxLedgerSource": "215k-row hybx_batch_001_ledger.csv generated by scripts/omnl/generate-transaction-package-evidence.py (HYBX-BATCH-001); if institution asserts different system-of-record, update this field and rebuild package.",
"omnlSnapshotApiBase": "Redacted — live GET /offices + /glaccounts via OMNL_FINERACT_BASE_URL (tenant omnl)."
@@ -45,5 +50,5 @@
"reportPdfSha256": "4129431831deaf7602e782c31bf851c4443386d0760742fceb438132c74f5dac",
"reportBindingNote": "SHA-256 of Appendix/INDEPENDENT_AUDIT_4_995_REQUIREMENTS_HYBX-BATCH-001.md (requirements exhibit). When audit report PDF is filed in SUBREG, run scripts/omnl/patch-attestation-subreg-pdf-hashes.sh and rebuild the zip."
},
"assertion": "OMNL certifies that the criteria in Appendix/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md are satisfied for this package and that category scores are fair. Signatories are the Chief Compliance Officer and General Counsel named above, cross-referenced to Appendix/OMNL_BANKING_DIRECTORS_AND_LEI.md. Wet signature or QES artifacts for the same officers should be filed in HYBX-BATCH-001-SUBREG per institutional policy."
"assertion": "OMNL certifies that the criteria in Appendix/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md are satisfied for this package and that category scores are fair. Signatories are the Chief Compliance Officer, Chief Legal Officer, and Director named above, cross-referenced to Appendix/OMNL_BANKING_DIRECTORS_AND_LEI.md. Wet signature or QES artifacts for the same officers should be filed in HYBX-BATCH-001-SUBREG per institutional policy."
}

View File

@@ -0,0 +1,183 @@
# BscScan support package — due diligence
**Contract (BNB Smart Chain, chain id 56):** `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
**Explorer:** [bscscan.com/address/0xe0e93247376aa097db308b92e6ba36ba015535d0](https://bscscan.com/address/0xe0e93247376aa097db308b92e6ba36ba015535d0)
**Purpose:** Evidence and narrative for BscScan support / token update review (impersonation warning, `# Suspicious`, `Suspicious_Token20774`).
**Prepared:** 2026-03-25 (repo snapshot). Refresh on-chain dates and balances when submitting.
---
## 1. Executive summary
- The contract on **BSC** is a **verified** `WETH` token: standard **WETH9-style** wrap/unwrap of **native BNB** (deposit/withdraw), **not** a honeypot masquerading as unrelated bytecode.
- **Name/symbol** on-chain are `Wrapped Ether` / `WETH`, which triggers BscScans **impersonation** heuristics because the **commonly expected “WETH” on BSC** is the **Binance-Peg / canonical bridged ETH** token at a **different** address (see section 5).
- The **deployer** is the projects known deployment key: `0x4A666F96fC8764181194447A7dFdb7d471b301C8` (used across this repository for Chain 138 and CCIP-related deployments).
- **Important nuance:** The **same 0x address** on **another chain** can be a **different contract**. On **Chain 138** and **Ethereum mainnet**, `0xe0E932…` is documented in this project as **CCIPWETH10Bridge** (different bytecode than the BSC `WETH.sol` instance). BscScans page reflects **BSC bytecode only** — verified as `WETH.sol`.
**Ask to BscScan (suggested):** Review for **false positive** impersonation; consider **official nametag** or **token profile** clarifying “project-deployed wrapped native for CCIP/relay — not Binance-Peg WETH”; optionally suggest **distinct display name** if policy allows (on-chain strings may remain unchanged unless redeployed).
---
## 2. On-chain facts (BSC) — verify before sending
| Item | Value / action |
|------|----------------|
| **Address** | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
| **Verification** | Contract source verified (exact match). Compiler **v0.8.20+commit.a1b79de6**, optimizer **200** runs, **london**. |
| **Contract name (verification)** | `WETH` |
| **Token strings** | `name` = Wrapped Ether, `symbol` = WETH, `decimals` = 18 |
| **Creator** | `0x4A666F96fC8764181194447A7dFdb7d471b301C8` |
| **Creation tx** | `0xf98a95e8c8399aeee513f874780e9896759124e9be3bfe5fd3a3882c67208d71` (confirm on BscScan) |
| **BscScan UI** | Impersonation banner; tags e.g. `Suspicious_Token20774`, `# Suspicious` |
Re-check **holder count**, **liquidity**, and **recent transfers** on BscScan before submission; paste screenshots into the ticket if useful.
---
## 3. Source code provenance (repository)
The verified source matches the projects `WETH.sol` (WETH9-style wrapper). Reference copy:
- **File:** `smom-dbis-138/contracts/tokens/WETH.sol`
- **NatSpec** states intent for **ChainID 138** in the comment; on **BSC** the same artifact was deployed for **wrapped native** interoperability (comment is chain-specific wording, deployment is multi-chain).
**Behavior (high level):**
- `deposit()` / `receive()` credit `balanceOf` with `msg.value` (wrap native).
- `withdraw(uint256)` sends native back (unwrap).
- `totalSupply()` returns `address(this).balance`.
- Standard `transfer` / `transferFrom` / `approve` with allowance handling.
No admin mint, no proxy upgrade hooks in this file — ordinary **non-upgradeable** wrapper pattern.
---
## 4. Same address, different chains (clarification for reviewers)
EVM addresses are **per-chain**. **Equal hex** across chains does **not** imply equal bytecode.
| Network | Role of `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` in project docs |
|---------|---------------------------------------------------------------------|
| **BSC (56)** | `WETH.sol`-style token (BscScan verification). Relay config references this address on BSC as destination wrapped asset (see section 6). |
| **Chain 138** | **CCIPWETH10Bridge**`contracts/ccip/CCIPWETH10Bridge.sol` (different contract than BSC bytecode). See `docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md`. |
| **Ethereum (1)** | **CCIPWETH10Bridge** at same hex per `smom-dbis-138/docs/deployment/CONTRACT_OWNERSHIP_VERIFICATION.md`. |
**Polygon (137):** Project docs list **WETH9** at the **same** `0xe0e932…` address (another chain, wrapper deployment — confirm on Polygonscan if cited to BscScan).
This explains why **Etherscan** may show a **bridge** at `0xe0…` while **BscScan** shows **WETH**: different chains, different deployed bytecode at the colliding address.
---
## 5. Canonical “WETH” on BSC (contrast)
Widely used **Binance-Peg Ethereum / BSC WETH** (bridged ETH representation) is **not** this contract. Example reference used in this repos routing/config context:
- **BSC WETH (canonical / widely listed):** `0x2170Ed0880ac9A755fd29B2688956BD959F933F8` (verify against your token lists and BscScans official listings).
**Our position:** `0xe0E932…` on BSC is a **separate**, **project-deployed** wrapper using **WETH9-like** `name`/`symbol` for **cross-chain naming parity**, **not** a claim to be the official Binance-Peg WETH contract.
---
## 6. Internal configuration (evidence of legitimate use)
**Relay / destination asset (BSC)**`smom-dbis-138/services/relay/.env.bsc` (template in repo):
- `DEST_CHAIN_ID=56`
- `DEST_WETH9_ADDRESS=0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
- `RELAYER_ADDRESS=0x4A666F96fC8764181194447A7dFdb7d471b301C8`
**Canonical project config:**
- `config/contract-addresses.conf`: `ADDR_CCIPWETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0"` (Chain **138** bridge address — same hex, different chain than BSC token).
**Public-facing / operator docs (non-exhaustive):**
- `docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md` — CCIPWETH10Bridge on 138
- `docs/11-references/ADDRESS_MATRIX_AND_STATUS.md`
- `docs/07-ccip/CCIP_SECURITY_DOCUMENTATION.md`, `CCIP_SENDER_CONTRACT_REFERENCE.md`
- `docs/04-configuration/METAMASK_CONFIGURATION.md` — bridge interactions on **138** (same hex as bridge, not BSC token)
---
## 7. Ownership and control
- **`WETH.sol`** has **no** owner/admin in code (see `CONTRACT_OWNERSHIP_VERIFICATION.md` pattern for other chains: “No ownership (standard ERC20)” for WETH9 deployments).
- **Deployer** `0x4A66…` is the consistent project deployer across CCIP and token scripts (see workspace operator docs).
If BscScan requests **proof of control**: sign a message or complete **contract ownership** flows they specify; verified source already ties bytecode to published Solidity.
---
## 8. Risk and honesty (for support and users)
- **Users** must **never** trust **symbol “WETH”** alone on BSC — **always** verify **contract address** against the projects published lists.
- The team **acknowledges** the **naming collision** with widely known WETH branding; ideal long-term mitigation is **distinct on-chain name/symbol** on **future** deployments (requires **new contract**, migration, and integrator updates).
- **This DD is not legal or investment advice** and does not guarantee BscScan will remove any flag.
---
## 9. Suggested token profile text (token update form)
Adapt to BscScan character limits and policies:
> **Project:** [Your legal/project name]
> **Description:** Project-deployed WETH9-style wrapped **native BNB** for CCIP/relay and cross-chain testing. **Not** Binance-Peg Ethereum (`0x2170…933F8`). Do not confuse with official BSC bridged WETH.
> **Website / docs:** [Link to public doc listing this BSC address explicitly]
> **Social:** [Official channels]
Link directly to this file or a **public** mirror that lists **BSC `0xe0E932…`** as **intentional**.
---
## 10. Evidence checklist (attach to ticket)
- [ ] Link to **BscScan** contract + **Read Contract** `name`/`symbol`/`decimals`
- [ ] **Creation transaction** link
- [ ] **Verified source** screenshot or link
- [ ] **Deployer** address and short bio (same as Chain 138 / CCIP docs)
- [ ] **Contrast:** canonical BSC WETH `0x2170…` vs this address (table)
- [ ] **Optional:** GitHub or public repo path to `smom-dbis-138/contracts/tokens/WETH.sol` (if repository is public)
- [ ] **Optional:** Signed message from deployer per BscScan instructions
---
## 11. Draft message to BscScan support (template)
Subject: **Token review — impersonation false positive — `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` (BSC)**
Body (edit placeholders):
> Hello BscScan team,
>
> We request review of the **impersonation / suspicious** flags on contract **`0xe0E93247376aa097dB308B92e6Ba36bA015535D0`** (BSC).
>
> **Facts:**
> - Contract is **verified** as a standard **WETH9-style** wrapper (`deposit`/`withdraw` native BNB); source matches our published `WETH.sol`.
> - **Deployer:** `0x4A666F96fC8764181194447A7dFdb7d471b301C8` (consistent across our CCIP deployments).
> - We are **not** claiming to be **Binance-Peg WETH** (`0x2170Ed0880ac9A755fd29B2688956BD959F933F8`). The on-chain **name/symbol** reuse is for cross-chain parity; we understand this collides with user expectations on BSC.
> - Note: the **same hex address** on **Ethereum/Chain 138** points to **different bytecode** (our CCIP bridge). BSC shows **only** the WETH wrapper.
>
> **Ask:** Reassess the **impersonation** classification; if appropriate, add an **official nametag** or allow an updated **token profile** clarifying “project wrapped BNB — not official BSC WETH.”
>
> Evidence: [links + attachments].
>
> Thank you.
---
## 12. References in this repository
| Document | Relevance |
|----------|-----------|
| `smom-dbis-138/contracts/tokens/WETH.sol` | BSC-verified source match |
| `smom-dbis-138/contracts/ccip/CCIPWETH10Bridge.sol` | Bridge **on other chains** at same hex |
| `config/contract-addresses.conf` | Chain 138 bridge hex |
| `smom-dbis-138/services/relay/.env.bsc` | BSC destination wrapped asset |
| `docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md` | Chain 138 address matrix |
| `smom-dbis-138/docs/deployment/CONTRACT_OWNERSHIP_VERIFICATION.md` | Deployer / multi-chain table |
| `docs/11-references/TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md` | Deploy-all / WETH deploy behavior |
---
**Document maintainer:** Update after any redeploy, rename, or BscScan decision; keep public-facing address list in sync.

View File

@@ -15,7 +15,7 @@
## 🔐 Contract Access Control
### CCIP Router
- **Address**: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e`
- **Address**: `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817`
- **Access Control**: Standard CCIP Router implementation
- **Owner Function**: `owner()` function not available (may use different access control pattern)
- **Admin Functions**: Standard CCIP Router admin functions
@@ -27,12 +27,12 @@
- **Address**: `0x105F8A15b819948a89153505762444Ee9f324684`
- **Access Control**: Standard CCIP Sender implementation
- **Owner Function**: `owner()` function not available
- **Router Reference**: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e`
- **Router Reference**: `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817`
**Note**: Access control details need to be retrieved from contract source code or deployment logs.
### CCIPWETH9Bridge
- **Address**: Use env `CCIPWETH9_BRIDGE_CHAIN138` (set after `scripts/deploy-and-configure-weth9-bridge-chain138.sh`); canonical: `0x971cD9D156f193df8051E48043C476e53ECd4693`. **Deprecated (do not use):** `0x89dd12025bfCD38A168455A44B400e913ED33BE2` — old bridge with router mismatch. See [CONTRACT_INVENTORY_AND_VERIFICATION.md](../11-references/CONTRACT_INVENTORY_AND_VERIFICATION.md).
- **Address**: Use env `CCIPWETH9_BRIDGE_CHAIN138` (set after `scripts/deploy-and-configure-weth9-bridge-chain138.sh`); canonical: `0xcacfd227A040002e49e2e01626363071324f820a`. **Deprecated (do not use):** `0x89dd12025bfCD38A168455A44B400e913ED33BE2` — old bridge with router mismatch. See [CONTRACT_INVENTORY_AND_VERIFICATION.md](../11-references/CONTRACT_INVENTORY_AND_VERIFICATION.md).
- **Access Control**: Bridge contract access control
- **Owner Function**: `owner()` function not available
- **Admin Functions**: Bridge-specific admin functions
@@ -138,4 +138,3 @@ If contracts are verified on Blockscout, check the source code for:
**Last Updated**: $(date)
**Status**: ⚠️ **INCOMPLETE** - Owner addresses need to be retrieved

View File

@@ -41,14 +41,14 @@ This is why this address appears in CCIP transfers - it's the **destination brid
## 🔗 Related Contracts
### CCIP Router
- **Address**: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e`
- **Address**: `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817`
- **Relationship**: The CCIP Sender interacts with the CCIP Router to send messages
- **Fee Token**: `0x514910771AF9Ca656af840dff83E8264EcF986CA` (LINK)
- **Base Fee**: 1000000000000000 wei
- **Data Fee Per Byte**: 100000000 wei
### Bridge Contracts
- **CCIPWETH9Bridge**: Use env CCIPWETH9_BRIDGE_CHAIN138 or address `0x971cD9D156f193df8051E48043C476e53ECd4693`. **Deprecated (do not use):** `0x89dd12025bfCD38A168455A44B400e913ED33BE2` — old bridge, router mismatch. See [CONTRACT_INVENTORY_AND_VERIFICATION.md](../11-references/CONTRACT_INVENTORY_AND_VERIFICATION.md).
- **CCIPWETH9Bridge**: Use env CCIPWETH9_BRIDGE_CHAIN138 or address `0xcacfd227A040002e49e2e01626363071324f820a`. **Deprecated (do not use):** `0x89dd12025bfCD38A168455A44B400e913ED33BE2` — old bridge, router mismatch. See [CONTRACT_INVENTORY_AND_VERIFICATION.md](../11-references/CONTRACT_INVENTORY_AND_VERIFICATION.md).
- **CCIPWETH10Bridge**: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
---
@@ -89,7 +89,7 @@ This is why this address appears in CCIP transfers - it's the **destination brid
The CCIP Sender contract is used by the CCIP Monitor service. Configuration in `/opt/ccip-monitor/.env`:
```bash
CCIP_ROUTER_ADDRESS=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
CCIP_ROUTER_ADDRESS=0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817
CCIP_SENDER_ADDRESS=0x105F8A15b819948a89153505762444Ee9f324684
RPC_URL_138=http://192.168.11.211:8545
CHAIN_ID=138
@@ -270,7 +270,7 @@ The CCIP Monitor service (VMID 3501) listens to these events and tracks:
CCIP_SENDER=0x105F8A15b819948a89153505762444Ee9f324684
# Related Contracts
CCIP_ROUTER=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
CCIP_ROUTER=0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817
LINK_TOKEN=0x514910771AF9Ca656af840dff83E8264EcF986CA
# RPC Endpoint (admin/deployment) — use standard RPC_URL_138
@@ -286,4 +286,3 @@ EXPLORER_URL=https://explorer.d-bis.org/address/0x105F8A15b819948a89153505762444
**Last Updated**: $(date)
**Status**: ✅ Contract deployed and operational on Chain 138

View File

@@ -84,7 +84,7 @@ cast call 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 "balanceOf(address)(uint256
Check source escrow:
```bash
cast call 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 "balanceOf(address)(uint256)" 0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5 --rpc-url https://rpc-http-pub.d-bis.org
cast call 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 "balanceOf(address)(uint256)" 0xcacfd227A040002e49e2e01626363071324f820a --rpc-url https://rpc-http-pub.d-bis.org
```
## 6. Related Files

View File

@@ -189,7 +189,7 @@ Or manually:
Navigate to contract on Blockscout:
- Oracle Proxy: https://explorer.d-bis.org/address/0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6
- CCIP Router: https://explorer.d-bis.org/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
- CCIP Router: https://explorer.d-bis.org/address/0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817
### 3. Check Verification Status
@@ -208,4 +208,3 @@ Navigate to contract on Blockscout:
---
**Last Updated**: $(date)

View File

@@ -172,7 +172,7 @@ forge verify-contract 0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6 \
--chain-id 138 --rpc-url "$RPC" --verifier blockscout --verifier-url "$VERIFIER" --flatten
# CCIPWETH9Bridge
forge verify-contract 0x971cD9D156f193df8051E48043C476e53ECd4693 \
forge verify-contract 0xcacfd227A040002e49e2e01626363071324f820a \
contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge \
--chain-id 138 --rpc-url "$RPC" --verifier blockscout --verifier-url "$VERIFIER" --flatten
@@ -286,4 +286,3 @@ If automated verification fails, you can verify contracts manually through the B
**Last Updated**: 2026-02-23
**Status**: ✅ Ready for use with ChainID 138

View File

@@ -62,9 +62,9 @@
| Contract | Address | Status | Notes |
|----------|---------|--------|-------|
| CCIP Router | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ | |
| CCIP Router | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | ✅ | |
| CCIP Sender | `0x105F8A15b819948a89153505762444Ee9f324684` | ✅ | |
| CCIPWETH9Bridge | `0x971cD9D156f193df8051E48043C476e53ECd4693` | ✅ | Use for sendCrossChain |
| CCIPWETH9Bridge | `0xcacfd227A040002e49e2e01626363071324f820a` | ✅ | Use for sendCrossChain |
| CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ | |
| CCIPWETH9Bridge (old) | `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | ⛔ | Deprecated |
@@ -188,7 +188,7 @@ Bridges (CCIPWETH9 / CCIPWETH10) and LINK funding per runbook. Addresses in `smo
| POOL_CUSDTCUSDC | `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8` |
| POOL_CUSDTUSDT | `0xa3Ee6091696B28e5497b6F491fA1e99047250c59` |
| POOL_CUSDCUSDC | `0x90bd9Bf18Daa26Af3e814ea224032d015db58Ea5` |
| CCIPWETH9_BRIDGE_CHAIN138 | `0x971cD9D156f193df8051E48043C476e53ECd4693` |
| CCIPWETH9_BRIDGE_CHAIN138 | `0xcacfd227A040002e49e2e01626363071324f820a` |
| CCIPWETH10_BRIDGE_CHAIN138 | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
| LINK_TOKEN | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` |
| COMPLIANT_USDT_ADDRESS / cUSDT | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |

View File

@@ -20,7 +20,7 @@ This document lists all contracts that have deployment scripts, grouped by repo
| Contract | Script | Status |
|----------|--------|--------|
| **CCIPWETH9Bridge** | `script/DeployCCIPWETH9Bridge.s.sol` | ✅ `0x971cD9D156f193df8051E48043C476e53ECd4693` |
| **CCIPWETH9Bridge** | `script/DeployCCIPWETH9Bridge.s.sol` | ✅ `0xcacfd227A040002e49e2e01626363071324f820a` |
| **WETH9** (optional) | — | Pre-deployed in genesis |
**Deploy (if needed):** `GAS_PRICE=1000000000 ./scripts/deploy-and-configure-weth9-bridge-chain138.sh`

View File

@@ -45,9 +45,9 @@ Contracts deployed after chain initialization:
|----------|---------|--------|---------|
| **Oracle Aggregator** | `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` | ✅ Deployed | Price feed aggregator (same address as Multicall — operator to confirm which contract is at this slot on explorer) |
| **Oracle Proxy** | `0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6` | ✅ Deployed | **MetaMask price feed** |
| **CCIP Router** | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ Deployed | Cross-chain router |
| **CCIP Router** | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | ✅ Deployed | Cross-chain router |
| **CCIP Sender** | `0x105F8A15b819948a89153505762444Ee9f324684` | ✅ Deployed | Cross-chain sender | [📄 Details](../07-ccip/CCIP_SENDER_CONTRACT_REFERENCE.md) |
| **CCIPWETH9Bridge** | `0x971cD9D156f193df8051E48043C476e53ECd4693` | ✅ Deployed | WETH9 cross-chain (working router) | **Use for sendCrossChain** |
| **CCIPWETH9Bridge** | `0xcacfd227A040002e49e2e01626363071324f820a` | ✅ Deployed | WETH9 cross-chain (working router) | **Use for sendCrossChain** |
| **CCIPWETH10Bridge** | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ Deployed | WETH10 cross-chain | |
| **MerchantSettlementRegistry** | `0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800` | ✅ Deployed | alltra-lifi-settlement | |
| **WithdrawalEscrow** | `0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D` | ✅ Deployed | alltra-lifi-settlement | |
@@ -119,7 +119,7 @@ CHAIN_ID=138
### CCIP Monitor Service (VMID 3501)
```bash
CCIP_ROUTER_ADDRESS=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
CCIP_ROUTER_ADDRESS=0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817
CCIP_SENDER_ADDRESS=0x105F8A15b819948a89153505762444Ee9f324684
RPC_URL_138=http://192.168.11.211:8545
CHAIN_ID=138
@@ -158,9 +158,9 @@ Use these addresses in config and .env. **smom-dbis-138/.env** has been reconcil
| DebtRegistry | `0x95BC4A997c0670d5DAC64d55cDf3769B53B63C28` |
| PolicyManager | `0x0C4FD27018130A00762a802f91a72D6a64a60F14` |
| TokenImplementation | `0x0059e237973179146237aB49f1322E8197c22b21` |
| CCIPWETH9_BRIDGE_CHAIN138 | `0x971cD9D156f193df8051E48043C476e53ECd4693` |
| CCIPWETH9_BRIDGE_CHAIN138 | `0xcacfd227A040002e49e2e01626363071324f820a` |
| LINK_TOKEN / CCIP_FEE_TOKEN | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` |
| CCIP_ROUTER | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` |
| CCIP_ROUTER | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` |
| UNIVERSAL_ASSET_REGISTRY | `0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575` |
| GOVERNANCE_CONTROLLER | `0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e` |
| UNIVERSAL_CCIP_BRIDGE | `0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8` |
@@ -200,9 +200,8 @@ Chain 138 WETH9 bridges (LINK fee and native ETH fee) have mainnet destination s
| Address | Note |
|---------|------|
| `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | **Deprecated** — old CCIPWETH9Bridge with router mismatch (no code at router). Use **CCIPWETH9Bridge** at `0x971cD9D156f193df8051E48043C476e53ECd4693` instead. See [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md). |
| `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | **Deprecated** — old CCIPWETH9Bridge with router mismatch (no code at router). Use **CCIPWETH9Bridge** at `0xcacfd227A040002e49e2e01626363071324f820a` instead. See [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md). |
---
**Related:** [DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS](DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md) (all contracts by deployer, network, verified status) | [EXPLORER_TOKEN_LIST_CROSSCHECK](EXPLORER_TOKEN_LIST_CROSSCHECK.md) (Explorer /tokens vs repo token lists) | [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md) (correlated matrix and status) | [EXPLORER_AND_BLOCKSCAN_REFERENCE](EXPLORER_AND_BLOCKSCAN_REFERENCE.md) (correct explorer vs blockscan.com) | [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md) | [CONTRACTS_TO_DEPLOY](CONTRACTS_TO_DEPLOY.md) | [CHAIN138_TOKEN_ADDRESSES](CHAIN138_TOKEN_ADDRESSES.md) | [TOKEN_MAPPING_AND_MAINNET_ADDRESSES](../07-ccip/TOKEN_MAPPING_AND_MAINNET_ADDRESSES.md) (138↔Mainnet token mapping)

View File

@@ -64,9 +64,9 @@ for addr in \
0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f \
0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 \
0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6 \
0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e \
0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817 \
0x105F8A15b819948a89153505762444Ee9f324684 \
0x971cD9D156f193df8051E48043C476e53ECd4693 \
0xcacfd227A040002e49e2e01626363071324f820a \
0xe0E93247376aa097dB308B92e6Ba36bA015535D0 \
0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 \
0x93E66202A11B1772E55407B32B44e5Cd8eda7f22 \
@@ -108,7 +108,7 @@ Manual verification: https://explorer.d-bis.org/address/<ADDRESS>#verify-contrac
### 3.2 Deprecated and security
- **Do not use** CCIPWETH9Bridge at `0x89dd12025bfCD38A168455A44B400e913ED33BE2`. Use only `0x971cD9D156f193df8051E48043C476e53ECd4693` and set `CCIPWETH9_BRIDGE_CHAIN138` in env.
- **Do not use** CCIPWETH9Bridge at `0x89dd12025bfCD38A168455A44B400e913ED33BE2`. Use only `0xcacfd227A040002e49e2e01626363071324f820a` and set `CCIPWETH9_BRIDGE_CHAIN138` in env.
- **Secrets:** Never commit `.env` or private keys. Use [MASTER_SECRETS_INVENTORY](../04-configuration/MASTER_SECRETS_INVENTORY.md) and rotate any exposed keys.
- **Access:** Restrict deployer key and RPC admin access (RPC_URL_138 = Chain 138 Core) to operators who need them.

View File

@@ -61,7 +61,7 @@
| Destination | Bridge type | Contract (138) | Status | Notes |
|-------------|-------------|----------------|--------|--------|
| Ethereum (1) | CCIP WETH9 / WETH10 | CCIPWETH9Bridge `0x971cD9D156f193df8051E48043C476e53ECd4693`, CCIPWETH10Bridge `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ | Relay path to mainnet (CCIPRelayBridge). |
| Ethereum (1) | CCIP WETH9 / WETH10 | CCIPWETH9Bridge `0xcacfd227A040002e49e2e01626363071324f820a`, CCIPWETH10Bridge `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ | Relay path to mainnet (CCIPRelayBridge). |
| BSC (56) | CCIP | Same bridges + addDestination(selector, receiver) | ✅ | Per CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING. |
| Polygon (137) | CCIP | Same | ✅ | |
| Arbitrum (42161) | CCIP | Same | ✅ | |

View File

@@ -63,9 +63,9 @@ Explorer: https://explorer.d-bis.org
| Contract | Address | Deployed by | Verified |
|----------|---------|-------------|----------|
| CCIP Router | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | Deployer | Unknown |
| CCIP Router | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | Deployer | Unknown |
| CCIP Sender | `0x105F8A15b819948a89153505762444Ee9f324684` | Deployer | Unknown |
| CCIPWETH9Bridge | `0x971cD9D156f193df8051E48043C476e53ECd4693` | Deployer | Unknown |
| CCIPWETH9Bridge | `0xcacfd227A040002e49e2e01626363071324f820a` | Deployer | Unknown |
| CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | Deployer | Unknown |
| CCIPReceiver (2026-02-13) | `0xC12236C03b28e675d376774FCE2C2C052488430F` | Deployer | Unknown |
@@ -106,6 +106,8 @@ Explorer: https://explorer.d-bis.org
### DODO PMM / liquidity
> Note: the Chain 138 DODO stack is deployed and on-chain confirmed, but explorer source publication is still pending manual UI acceptance as of 2026-03-24.
| Contract | Address | Deployed by | Verified |
|----------|---------|-------------|----------|
| DODOPMMIntegration | `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` | Deployer | Unknown |

View File

@@ -72,7 +72,7 @@ Tokens the deployer **can hold** as source (mintable to deployer on 138/Cronos,
| From (138, deployer holds) | To (Mainnet public stable) | Route | Status |
|----------------------------|----------------------------|--------|--------|
| WETH9 | WETH (then DEX) → USDT / USDC / DAI | CCIP WETH9 bridge `0x971cD9D156f193df8051E48043C476e53ECd4693` → Mainnet → swap via native DEX | ✅ Live (bridge); **requires Mainnet WETH funding of CCIPRelayBridge**; swap via DEX |
| WETH9 | WETH (then DEX) → USDT / USDC / DAI | CCIP WETH9 bridge `0xcacfd227A040002e49e2e01626363071324f820a` → Mainnet → swap via native DEX | ✅ Live (bridge); **requires Mainnet WETH funding of CCIPRelayBridge**; swap via DEX |
| WETH10 | Same | CCIP WETH10 bridge `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` → Mainnet → DEX | ✅ Live; **same prerequisite** |
| cUSDT | USDT / USDC / DAI | **No direct bridge.** Swap 138: cUSDT→cUSDC or cUSDT→WETH (no cUSDT→WETH pool documented); or cUSDT→cUSDC then no bridge for cUSDC. **Indirect:** cUSDT→cUSDC (DODO) then no 138→mainnet bridge for compliant stables. Use: **cUSDT/cUSDC → swap to WETH on 138 (no pool today)** then CCIP WETH→mainnet→DEX→USDT/USDC/DAI. | ⚠️ Swap leg on 138 to WETH not documented; bridge leg ✅ |
| cUSDC | USDT / USDC / DAI | Same as cUSDT; need 138 cUSDC→WETH path (not in docs). Then CCIP WETH→mainnet→DEX. | ⚠️ Same |

View File

@@ -44,6 +44,6 @@ Use [Chainlink CCIP Supported Networks](https://docs.chain.link/ccip/supported-n
To confirm the bridge fee token on Chain 138 (should match LINK above):
```bash
cast call 0x971cD9D156f193df8051E48043C476e53ECd4693 "feeToken()(address)" --rpc-url $RPC_URL_138
cast call 0xcacfd227A040002e49e2e01626363071324f820a "feeToken()(address)" --rpc-url $RPC_URL_138
# Expected: 0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03
```

View File

@@ -25,7 +25,7 @@
| WETH9, WETH10, Multicall | Genesis: 0xC02a..., 0xf4BB..., 0x99b3... | smom-dbis-138 |
| Oracle Aggregator, Oracle Proxy | 0x99b3..., 0x3304b7... | smom-dbis-138 |
| CCIP Router, CCIP Sender | 0x8078A0..., 0x105F8A... | smom-dbis-138 |
| CCIPWETH9Bridge, CCIPWETH10Bridge | 0x971cD9..., 0xe0E932... | smom-dbis-138 |
| CCIPWETH9Bridge, CCIPWETH10Bridge | 0xcacfd..., 0xe0E932... | smom-dbis-138 |
| LINK, cUSDT, cUSDC | 0xb772..., 0x93E6..., 0xf222... | smom-dbis-138 |
| TokenRegistry, TokenFactory | 0x91Efe..., 0xEBFb5C... | smom-dbis-138 |
| Price Feed Keeper | 0xD3AD68... | smom-dbis-138 |
@@ -35,7 +35,7 @@
| UniversalAssetRegistry, GovernanceController | 0xAEE4b7..., 0xA6891D... | smom-dbis-138 (phased core 2026-02-11) |
| UniversalCCIPBridge, BridgeOrchestrator | 0xCd42e8..., 0x89aB42... | smom-dbis-138 (phased core 2026-02-11) |
**Deprecated (Chain 138):** CCIPWETH9Bridge at `0x89dd...` — do not use; use `0x971cD9D156f193df8051E48043C476e53ECd4693`.
**Deprecated (Chain 138):** CCIPWETH9Bridge at `0x89dd...` — do not use; use `0xcacfd227A040002e49e2e01626363071324f820a`.
---
@@ -125,7 +125,7 @@
Summary:
1. **Chain 138:** Confirm all 26 deployed addresses on explorer.d-bis.org; run `./scripts/verify/check-contracts-on-chain-138.sh` and Blockscout verification; .env reconciled (one entry per variable).
2. **Deprecated:** Use CCIPWETH9Bridge `0x971c...` only; do not use `0x89dd...`.
2. **Deprecated:** Use CCIPWETH9Bridge `0xcacfd...` only; do not use `0x89dd...`.
3. **Phased core (138):** **Deployed 2026-02-11.** Addresses in CONTRACT_ADDRESSES_REFERENCE. To redeploy: run 01_DeployCore then 02_DeployBridges; set and document env.
4. **Trustless bridge:** Deploy from script/bridge/trustless/ when needed; update config/production placeholders.
5. **Mainnet/multichain:** Use DeployAll or chain-specific scripts; document addresses per chain.

View File

@@ -15,9 +15,9 @@
| **Multicall** | `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` | ✅ Deployed (genesis) | Confirm on Blockscout |
| **Oracle Aggregator** | `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` | ✅ Deployed | Confirm on Blockscout (same slot as Multicall?) |
| **Oracle Proxy** | `0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6` | ✅ Deployed | Confirm + verify (MetaMask price feed) |
| **CCIP Router** | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | ✅ Deployed | Confirm + verify |
| **CCIP Router** | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | ✅ Deployed | Confirm + verify |
| **CCIP Sender** | `0x105F8A15b819948a89153505762444Ee9f324684` | ✅ Deployed | Verify on Blockscout |
| **CCIPWETH9Bridge** | `0x971cD9D156f193df8051E48043C476e53ECd4693` | ✅ Deployed | Use for sendCrossChain; verify |
| **CCIPWETH9Bridge** | `0xcacfd227A040002e49e2e01626363071324f820a` | ✅ Deployed | Use for sendCrossChain; verify |
| **CCIPWETH10Bridge** | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | ✅ Deployed | Confirm + verify |
| **LINK** | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | ✅ Deployed | Confirm (CCIP fees) |
| **CompliantUSDT (cUSDT)** | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | ✅ Deployed | Confirm + verify |
@@ -27,7 +27,7 @@
| **Price Feed Keeper** | `0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04` | ✅ Deployed | Confirm + verify |
| **MerchantSettlementRegistry** | `0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800` | ✅ Deployed | Confirm + verify |
| **WithdrawalEscrow** | `0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D` | ✅ Deployed | Confirm + verify |
| **CCIPWETH9Bridge (old)** | `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | ⛔ Deprecated | Do not use; use `0x971c...` above |
| **CCIPWETH9Bridge (old)** | `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | ⛔ Deprecated | Do not use; use `0xcacfd...` above |
| **AddressMapper** | `0x439Fcb2d2ab2f890DCcAE50461Fa7d978F9Ffe1A` | ✅ Deployed 2026-02-12 | Confirm on Blockscout |
| **MirrorManager** | `0x6eD905A30c552a6e003061A38FD52A5A427beE56` | ✅ Deployed 2026-02-12 | Confirm on Blockscout |
| **Trustless bridge** | LOCKBOX138 (deployed), INBOX_ETH, BOND_MANAGER, etc. | ⏳ Mainnet stack when needed | Chain 138: Lockbox138 only; rest mainnet |
@@ -44,7 +44,7 @@
1. **Confirm on-chain** — Run `./scripts/verify/check-contracts-on-chain-138.sh` (36 addresses) or open each address at https://explorer.d-bis.org/address/<ADDRESS>.
2. **Verify source on Blockscout** — Use [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) and `scripts/verify/run-contract-verification-with-proxy.sh`.
3. **Do not use deprecated bridge** — Use **CCIPWETH9Bridge** at `0x971cD9D156f193df8051E48043C476e53ECd4693` only.
3. **Do not use deprecated bridge** — Use **CCIPWETH9Bridge** at `0xcacfd227A040002e49e2e01626363071324f820a` only.
4. **If deploying more contracts** — Use **`--with-gas-price 1000000000`** for all `forge script`/`forge create` on Chain 138. Phased core: [CONTRACTS_TO_DEPLOY](CONTRACTS_TO_DEPLOY.md), [CONTRACT_DEPLOYMENT_RUNBOOK](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md). RPC: Set `RPC_URL_138` in `smom-dbis-138/.env` (e.g. `http://192.168.11.211:8545` or `https://rpc-core.d-bis.org`). Set `PRIVATE_KEY` there too.
5. **Quick RPC check**`cast code <ADDRESS> --rpc-url https://rpc-core.d-bis.org` (non-empty = present).

View File

@@ -12,7 +12,7 @@
**Status**: ✅ Service running and configured
**Integration Points**:
- **CCIP Router**: `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` ✅ Deployed
- **CCIP Router**: `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` ✅ Deployed
- **CCIP Sender**: `0x105F8A15b819948a89153505762444Ee9f324684` ✅ Deployed
- **RPC Connection**: ✅ Configured
@@ -45,7 +45,7 @@
### 3. Bridge Contracts ⏳
**Contracts Deployed**:
- **CCIPWETH9Bridge**: Use \`CCIPWETH9_BRIDGE_CHAIN138\` or \`0x971cD9D156f193df8051E48043C476e53ECd4693\` ✅ Deployed. **Deprecated:** \`0x89dd12025bfCD38A168455A44B400e913ED33BE2\` (do not use).
- **CCIPWETH9Bridge**: Use \`CCIPWETH9_BRIDGE_CHAIN138\` or \`0xcacfd227A040002e49e2e01626363071324f820a\` ✅ Deployed. **Deprecated:** \`0x89dd12025bfCD38A168455A44B400e913ED33BE2\` (do not use).
- **CCIPWETH10Bridge**: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` ✅ Deployed
**Integration**:
@@ -99,7 +99,7 @@ pct exec 3500 -- journalctl -u oracle-publisher -n 50
cast code 0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6 --rpc-url $RPC_URL
# Test CCIP Router
cast code 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e --rpc-url $RPC_URL
cast code 0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817 --rpc-url $RPC_URL
```
---