diff --git a/.gitignore b/.gitignore index 5b36681..22976d4 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ out/ cache/ broadcast/ .cronos-verify/ +.verify-dodo/ # IDE .vscode/ diff --git a/docs/04-configuration/CRONOS_EXPLORER_OPERATIONS.md b/docs/04-configuration/CRONOS_EXPLORER_OPERATIONS.md index eb2f14a..acedf33 100644 --- a/docs/04-configuration/CRONOS_EXPLORER_OPERATIONS.md +++ b/docs/04-configuration/CRONOS_EXPLORER_OPERATIONS.md @@ -65,7 +65,7 @@ Per [Contract Deployment and Verification](https://docs.cronos.org/for-dapp-deve |----------|---------| | WETH9 | `0x99B3511A2d315A497C8112C1fdd8D508d4B1E506` | | WETH10 | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | -| CCIPWETH9Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | +| CCIPWETH9Bridge | `0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab` | | CCIPWETH10Bridge | `0x105F8A15b819948a89153505762444Ee9f324684` | --- @@ -78,7 +78,7 @@ Use `eth_getCode` to confirm contracts have bytecode: ```bash RPC="https://evm.cronos.org" -for addr in 0x99B3511A2d315A497C8112C1fdd8D508d4B1E506 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e 0x105F8A15b819948a89153505762444Ee9f324684; do +for addr in 0x99B3511A2d315A497C8112C1fdd8D508d4B1E506 0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab 0x105F8A15b819948a89153505762444Ee9f324684; do code=$(cast code $addr --rpc-url $RPC 2>/dev/null) echo "$addr: $([ ${#code} -gt 10 ] && echo 'OK' || echo 'MISSING')" done @@ -96,6 +96,7 @@ done 2. Follow the step-by-step runbook: `docs/deployment/CRONOS_VERIFICATION_RUNBOOK.md` 3. Check status: `./scripts/deployment/check-cronos-verification-status.sh` 4. Or: Open https://explorer.cronos.org/verifyContract, enter address, select compiler/optimization, paste flattened source +5. If the API returns `Invalid parameter(s)` or `JSON files not found`, prefer the web UI and upload the generated `*_standard_input.json` file instead of retrying the API blindly. --- diff --git a/docs/deployment/CRONOS_VERIFICATION_RUNBOOK.md b/docs/deployment/CRONOS_VERIFICATION_RUNBOOK.md index a1d7d3a..6b98c55 100644 --- a/docs/deployment/CRONOS_VERIFICATION_RUNBOOK.md +++ b/docs/deployment/CRONOS_VERIFICATION_RUNBOOK.md @@ -18,7 +18,7 @@ Contracts were **deployed with `via_ir = true`** (Foundry default). Flattened-so |----------|---------|-------| | WETH9 | `0x99B3511A2d315A497C8112C1fdd8D508d4B1E506` | [View](https://explorer.cronos.org/address/0x99B3511A2d315A497C8112C1fdd8D508d4B1E506) | | WETH10 | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | [View](https://explorer.cronos.org/address/0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6) | -| CCIPWETH9Bridge | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | [View](https://explorer.cronos.org/address/0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e) | +| CCIPWETH9Bridge | `0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab` | [View](https://explorer.cronos.org/address/0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab) | | CCIPWETH10Bridge | `0x105F8A15b819948a89153505762444Ee9f324684` | [View](https://explorer.cronos.org/address/0x105F8A15b819948a89153505762444Ee9f324684) | --- @@ -78,6 +78,7 @@ For each contract: - **Unmatched** — Ensure you use **Standard-Json-Input**, not flattened source. Flattened source will always fail (via_ir mismatch). - **Constructor args rejected** — Use the exact ABI-encoded values above; include or omit `0x` per the form. - **Contract name dropdown empty** — The JSON must compile cleanly; re-export with the script if needed. +- **`Invalid parameter(s)` / `JSON files not found` from the API** — Treat this as an explorer-side validation failure, not a contract failure. Use the web UI at `https://explorer.cronos.org/verifyContract`, upload the generated `*_standard_input.json` file, and enter the constructor args manually if the API rejects the multipart request. --- diff --git a/scripts/deployment/check-cronos-api.sh b/scripts/deployment/check-cronos-api.sh index 13a70d6..5cdfd6b 100755 --- a/scripts/deployment/check-cronos-api.sh +++ b/scripts/deployment/check-cronos-api.sh @@ -12,7 +12,7 @@ RPC="${CRONOS_RPC_URL:-https://evm.cronos.org}" CONTRACTS=( "0x99B3511A2d315A497C8112C1fdd8D508d4B1E506:WETH9" "0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6:WETH10" - "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e:CCIPWETH9Bridge" + "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab:CCIPWETH9Bridge" "0x105F8A15b819948a89153505762444Ee9f324684:CCIPWETH10Bridge" ) diff --git a/scripts/deployment/check-cronos-verification-status.sh b/scripts/deployment/check-cronos-verification-status.sh index cc76ff4..57c5f02 100755 --- a/scripts/deployment/check-cronos-verification-status.sh +++ b/scripts/deployment/check-cronos-verification-status.sh @@ -12,7 +12,7 @@ RPC="${CRONOS_RPC_URL:-https://evm.cronos.org}" CONTRACTS=( "0x99B3511A2d315A497C8112C1fdd8D508d4B1E506:WETH9" "0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6:WETH10" - "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e:CCIPWETH9Bridge" + "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab:CCIPWETH9Bridge" "0x105F8A15b819948a89153505762444Ee9f324684:CCIPWETH10Bridge" ) diff --git a/scripts/deployment/export-cronos-verification-sources.sh b/scripts/deployment/export-cronos-verification-sources.sh index 6f58dcb..bf30963 100755 --- a/scripts/deployment/export-cronos-verification-sources.sh +++ b/scripts/deployment/export-cronos-verification-sources.sh @@ -19,7 +19,7 @@ CONTRACTS=( ADDRESSES=( "0x99B3511A2d315A497C8112C1fdd8D508d4B1E506" "0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6" - "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" + "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab" "0x105F8A15b819948a89153505762444Ee9f324684" ) diff --git a/scripts/deployment/verify-cronos-contracts.sh b/scripts/deployment/verify-cronos-contracts.sh index 20ebb6e..6e81fa0 100755 --- a/scripts/deployment/verify-cronos-contracts.sh +++ b/scripts/deployment/verify-cronos-contracts.sh @@ -52,7 +52,7 @@ verify "0x99B3511A2d315A497C8112C1fdd8D508d4B1E506" "contracts/tokens/WETH.sol:W verify "0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6" "contracts/tokens/WETH10.sol:WETH10" || FAIL=$((FAIL+1)) # CCIPWETH9Bridge - constructor(router, weth9, linkToken) -verify "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" "contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge" \ +verify "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab" "contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge" \ "--constructor-args $(cast abi-encode 'constructor(address,address,address)' 0xE26B0A098D861d5C7d9434aD471c0572Ca6EAa67 0x99B3511A2d315A497C8112C1fdd8D508d4B1E506 0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85)" || FAIL=$((FAIL+1)) # CCIPWETH10Bridge - constructor(router, weth10, linkToken)