Skip to content

Add Deployments and env examples#96

Open
luiz-lvj wants to merge 3 commits intomainfrom
scripts
Open

Add Deployments and env examples#96
luiz-lvj wants to merge 3 commits intomainfrom
scripts

Conversation

@luiz-lvj
Copy link
Copy Markdown
Collaborator

@luiz-lvj luiz-lvj commented Apr 9, 2026

Summary by CodeRabbit

  • New Features

    • Added comprehensive support for Base Sepolia testnet, including full deployment infrastructure with contract deployments and cross-chain address mappings to integrate with existing supported networks.
  • Chores

    • Extended environment configuration files to include Base network RPC endpoints, chain identifiers, and associated network parameters.
    • Updated deployment configurations across multiple supported test networks to enable Base Sepolia integration.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

📝 Walkthrough

Walkthrough

This PR adds Base testnet (base-sepolia) support to the project infrastructure by introducing environment configuration files for mainnet and testnet, creating deployment configuration for Base Sepolia with contracts and cross-network mappings, and updating the deployment script to recognize Base Sepolia chain ID 84532.

Changes

Cohort / File(s) Summary
Environment Configuration
.env.mainnet.example, .env.testnet.example
Added mainnet environment template with RPC endpoints and chain parameters across multiple L1/L2 networks. Updated testnet template to include Base configuration, populated previously empty Arbitrum entries, and introduced verification settings (etherscan).
Deployment Configurations
deployments/base-sepolia.json
New deployment file defining Base Sepolia contract addresses (broadcaster, receiver, input-settler-escrow, output-settler-simple, broadcaster-oracle) and cross-network copy mappings to Ethereum Sepolia.
Cross-Network Mappings
deployments/arbitrum-sepolia.json, deployments/ethereum-sepolia.json, deployments/linea-sepolia.json, deployments/optimism-sepolia.json, deployments/scroll-sepolia.json
Added or updated Base Sepolia contract address references in deployment files, including new prover entries in Ethereum Sepolia and copy address entries in other networks. Also populated missing contract entries in Optimism Sepolia (broadcaster-oracle, input-settler-escrow, output-settler-simple).
Deployment Script
scripts/deployment/DeployBase.s.sol
Added recognition of chain ID 84532 to map to "base-sepolia" in the chain name resolution logic.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Suggested reviewers

  • frangio
  • nahimterrazas

Poem

🐰 Hops with glee through Base-sepolia's gate,
Chain 84532, oh how we celebrate!
From Arbitrum to Scroll, the copies align,
Cross-network bridges, a design so fine! 🌉✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add Deployments and env examples' directly and accurately summarizes the main changes: adding deployment configuration files and environment example files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch scripts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
.env.mainnet.example (1)

61-65: Trim trailing blank lines to keep dotenv lint output clean.

This is minor, but removing the extra empty lines at the end avoids recurring linter noise.

✂️ Suggested cleanup
 ZKSYNC_GATEWAY_CHAIN_ID=9075
-
-
-
-
-
-
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.env.mainnet.example around lines 61 - 65, Remove the extra blank lines at
the end of the .env file so there are no trailing empty lines; simply trim the
file's trailing whitespace/newlines so the last meaningful env entry is the
final line, which will stop the dotenv linter from reporting noise.
.env.testnet.example (1)

53-53: Remove extra blank lines in the template.

Optional cleanup to reduce dotenv-linter warnings and keep the example compact.

✂️ Suggested cleanup
 BASE_L2_CROSS_DOMAIN_MESSENGER=0x4200000000000000000000000000000000000007
-
 
 # ZkSync Envs
 ZKSYNC_CHAIN_ID=300
 ZKSYNC_DIAMOND=0x9A6DE0f62Aa270A8bCB1e2610078650D539B1Ef9
 ZKSYNC_GATEWAY_ZK_CHAIN=0xFFDbb7B7F35A8b81618F64d95BCc878297759744
 ZKSYNC_L2_LOGS_ROOT_HASH_SLOT=15
 ZKSYNC_GATEWAY_CHAIN_ID=32657
-
-
-

Also applies to: 63-65

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.env.testnet.example at line 53, Remove the extra blank lines in the
environment template: collapse consecutive empty lines so the file has no
unintended multi-line gaps (ensure single blank line separation only where
semantically needed), and apply the same cleanup to the other occurrences
mentioned; then re-run dotenv-linter or similar to confirm no warnings remain.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@deployments/optimism-sepolia.json`:
- Line 17: The JSON entry for the deployment key "base-sepolia" uses an address
with an incorrect EIP-55 checksum; replace the current value
"0x853C0c8873FB6c2c71777373AD71BEa04f3755A6" with the correctly checksummed
address "0x853c0C8873fB6c2C71777373Ad71BEA04F3755A6" in the "base-sepolia" field
so the file contains the proper EIP-55 formatted address.
- Around line 7-9: The "input-settler-escrow" entry currently set to
0x15eA18EAcD9C35b454CF1456ed1bD05636B46147 should be verified against LI.FI's
published deployment (0x000025c3226C00B2Cdc200005a1600509f4e00C0); confirm
whether the present value is an intentional separate deployment or a mistake,
and if it's wrong replace the value in deployments/optimism-sepolia.json under
the "input-settler-escrow" key with the correct checksummed address from the
authoritative source, ensure the address uses EIP-55 checksum casing, run a
repo-wide search for references to the old address and update any linked
deployment artifacts or tests (and update the commit message to note the address
correction).

---

Nitpick comments:
In @.env.mainnet.example:
- Around line 61-65: Remove the extra blank lines at the end of the .env file so
there are no trailing empty lines; simply trim the file's trailing
whitespace/newlines so the last meaningful env entry is the final line, which
will stop the dotenv linter from reporting noise.

In @.env.testnet.example:
- Line 53: Remove the extra blank lines in the environment template: collapse
consecutive empty lines so the file has no unintended multi-line gaps (ensure
single blank line separation only where semantically needed), and apply the same
cleanup to the other occurrences mentioned; then re-run dotenv-linter or similar
to confirm no warnings remain.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fdb04276-45e2-4781-bdcf-6ea1bec7ca00

📥 Commits

Reviewing files that changed from the base of the PR and between b7df689 and c0bae1a.

📒 Files selected for processing (9)
  • .env.mainnet.example
  • .env.testnet.example
  • deployments/arbitrum-sepolia.json
  • deployments/base-sepolia.json
  • deployments/ethereum-sepolia.json
  • deployments/linea-sepolia.json
  • deployments/optimism-sepolia.json
  • deployments/scroll-sepolia.json
  • scripts/deployment/DeployBase.s.sol

Comment on lines +7 to +9
"broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248",
"input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147",
"output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify new contract addresses for checksum validity, on-chain existence, and duplicates

NEW_ADDRESSES=(
  "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248"
  "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147"
  "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847"
)

echo "=== Validating EIP-55 Checksums ==="
for addr in "${NEW_ADDRESSES[@]}"; do
  python3 -c "
from eth_utils import to_checksum_address
addr = '$addr'
try:
    checksum_addr = to_checksum_address(addr.lower())
    if addr == checksum_addr:
        print(f'✓ {addr} - Valid checksum')
    else:
        print(f'✗ {addr} - Invalid checksum (expected: {checksum_addr})')
except Exception as e:
    print(f'✗ {addr} - Error: {e}')
"
done

echo -e "\n=== Checking On-Chain Deployment on Optimism Sepolia ==="
for addr in "${NEW_ADDRESSES[@]}"; do
  echo "Checking $addr..."
  code=$(cast code "$addr" --rpc-url https://sepolia.optimism.io 2>&1)
  if [[ "$code" == "0x" ]] || [[ -z "$code" ]]; then
    echo "✗ No contract code found at $addr"
  else
    echo "✓ Contract code exists at $addr"
  fi
done

echo -e "\n=== Checking for Duplicate Addresses ==="
cat deployments/optimism-sepolia.json | jq -r '.. | strings | select(startswith("0x"))' | sort | uniq -d | while read dup; do
  echo "⚠ Duplicate address found: $dup"
done

Repository: openintentsframework/broadcaster

Length of output: 969


🏁 Script executed:

#!/bin/bash
# Attempt EIP-55 checksum validation using Node.js

# Install web3 if needed
npm list web3 &>/dev/null || npm install -g web3 &>/dev/null

node <<'EOF'
const Web3 = require('web3');
const web3 = new Web3();

const addresses = [
  "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248",
  "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147",
  "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847"
];

console.log("=== EIP-55 Checksum Validation ===");
addresses.forEach(addr => {
  try {
    const checksummed = web3.utils.toChecksumAddress(addr);
    if (addr === checksummed) {
      console.log(`✓ ${addr} - Valid checksum`);
    } else {
      console.log(`✗ ${addr} - Invalid checksum (expected: ${checksummed})`);
    }
  } catch (e) {
    console.log(`✗ ${addr} - Error: ${e.message}`);
  }
});
EOF

Repository: openintentsframework/broadcaster

Length of output: 910


🌐 Web query:

0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248 Optimism Sepolia broadcaster-oracle EIP-55

💡 Result:

EIP-55 (checksummed) form: 0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248 (mixed-case is the checksum encoding per EIP-55) [1]
Lowercase (non-checksummed) form: 0x0a6edd8a400b6db1bbe0d21ecef07c4fce983248 [1]

I could not find any authoritative public source that labels 0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248 specifically as the “broadcaster-oracle” contract on Optimism Sepolia from the searches performed. You can independently validate whether the capitalization is a correct EIP-55 checksum using an address checksum checker. [2]

Sources: [1] [2]


🌐 Web query:

0x15eA18EAcD9C35b454CF1456ed1bD05636B46147 Optimism Sepolia input-settler-escrow

💡 Result:

On Optimism Sepolia, LI.FI’s documented Input Settler Escrow contract address is:

0x000025c3226C00B2Cdc200005a1600509f4e00C0 [1]

So the address you provided:

0x15eA18EAcD9C35b454CF1456ed1bD05636B46147

does not match LI.FI’s published Input Settler Escrow deployment for Optimism Sepolia (LI.FI states these contracts are deployed to the same addresses across the listed testnets, including Optimism Sepolia) [1].

Source

  1. LI.FI Intents docs – “System Overview” (Smart Contracts section lists “Input Settler Escrow” and notes same-address deployments on testnets including Optimism Sepolia) [1]

🌐 Web query:

0x1DCE289d62C2068584C5D0CFb5C1fD538e832847 Optimism Sepolia output-settler-simple

💡 Result:

0x1DCE289d62C2068584C5D0CFb5C1fD538e832847 is an OP Sepolia (chainId 11155420) contract address (often labeled output-settler-simple / OutputSettlerSimple in intent-based settlement systems). OP Sepolia’s explorers are Etherscan and Blockscout. [2], [3]

In the LI.FI Intents architecture, OutputSettlerSimple is the (currently) primary “output settler” contract responsible for output-side settlement and supports multiple order types (limit + Dutch variants, including exclusive versions). [1]

Sources: [1] [2] [3]


Verify the input-settler-escrow address—published documentation indicates a different deployment.

The address 0x15eA18EAcD9C35b454CF1456ed1bD05636B46147 does not match LI.FI's documented Input Settler Escrow contract on Optimism Sepolia, which is deployed at 0x000025c3226C00B2Cdc200005a1600509f4e00C0. Confirm whether the address in this file is intentionally different (e.g., a separate deployment) or if the wrong address was added. The other two addresses (broadcaster-oracle and output-settler-simple) are correctly deployed and checksummed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@deployments/optimism-sepolia.json` around lines 7 - 9, The
"input-settler-escrow" entry currently set to
0x15eA18EAcD9C35b454CF1456ed1bD05636B46147 should be verified against LI.FI's
published deployment (0x000025c3226C00B2Cdc200005a1600509f4e00C0); confirm
whether the present value is an intentional separate deployment or a mistake,
and if it's wrong replace the value in deployments/optimism-sepolia.json under
the "input-settler-escrow" key with the correct checksummed address from the
authoritative source, ensure the address uses EIP-55 checksum casing, run a
repo-wide search for references to the old address and update any linked
deployment artifacts or tests (and update the commit message to note the address
correction).

"scroll-sepolia": "0x2635119429AFE9ed4b5dC38f71D12f1A241231Ec",
"zksync-sepolia": "0xf5e56d9d93267631f69dB9388d38e9c487830bD4"
"zksync-sepolia": "0xf5e56d9d93267631f69dB9388d38e9c487830bD4",
"base-sepolia": "0x853C0c8873FB6c2c71777373AD71BEa04f3755A6"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify base-sepolia copy address for checksum validity and on-chain existence

BASE_SEPOLIA_ADDR="0x853C0c8873FB6c2c71777373AD71BEa04f3755A6"

echo "=== Validating EIP-55 Checksum ==="
python3 -c "
from eth_utils import to_checksum_address
addr = '$BASE_SEPOLIA_ADDR'
try:
    checksum_addr = to_checksum_address(addr.lower())
    if addr == checksum_addr:
        print(f'✓ {addr} - Valid checksum')
    else:
        print(f'✗ {addr} - Invalid checksum (expected: {checksum_addr})')
except Exception as e:
    print(f'✗ {addr} - Error: {e}')
"

echo -e "\n=== Checking On-Chain Deployment on Base Sepolia ==="
echo "Checking $BASE_SEPOLIA_ADDR..."
code=$(cast code "$BASE_SEPOLIA_ADDR" --rpc-url https://sepolia.base.org 2>&1)
if [[ "$code" == "0x" ]] || [[ -z "$code" ]]; then
  echo "✗ No contract code found at $BASE_SEPOLIA_ADDR"
else
  echo "✓ Contract code exists at $BASE_SEPOLIA_ADDR"
fi

Repository: openintentsframework/broadcaster

Length of output: 428


🏁 Script executed:

#!/bin/bash
# Verify checksum using web3.py which is more commonly available

BASE_SEPOLIA_ADDR="0x853C0c8873FB6c2c71777373AD71BEa04f3755A6"

echo "=== Validating EIP-55 Checksum ==="
python3 <<EOF
from web3 import Web3

addr = "$BASE_SEPOLIA_ADDR"
try:
    checksum_addr = Web3.to_checksum_address(addr.lower())
    if addr == checksum_addr:
        print(f'✓ {addr} - Valid EIP-55 checksum')
    else:
        print(f'✗ {addr} - Invalid checksum')
        print(f'  Expected: {checksum_addr}')
except Exception as e:
    print(f'Error: {e}')
    # Fallback: manual verification using keccak
    import hashlib
    addr_clean = addr.lower().replace('0x', '')
    hash_obj = hashlib.sha3_256(addr_clean.encode()).digest()
    hash_str = hash_obj.hex()
    
    result = '0x'
    for i, char in enumerate(addr_clean):
        if char in '0123456789':
            result += char
        else:
            hash_value = int(hash_str[i], 16)
            result += char.upper() if hash_value >= 8 else char
    
    if result.lower() == addr.lower():
        print(f'✓ {addr} - Valid EIP-55 checksum (manual verification)')
    else:
        print(f'✗ {addr} - Invalid checksum (manual verification)')
        print(f'  Expected: {result}')
EOF

Repository: openintentsframework/broadcaster

Length of output: 244


🏁 Script executed:

#!/bin/bash
# Verify checksum using pure Python with hashlib

BASE_SEPOLIA_ADDR="0x853C0c8873FB6c2c71777373AD71BEa04f3755A6"

python3 <<'EOF'
import hashlib

addr = "0x853C0c8873FB6c2c71777373AD71BEa04f3755A6"

# Remove 0x prefix
addr_clean = addr[2:].lower()

# Compute Keccak-256 hash of the address
keccak_hash = hashlib.sha3_256(addr_clean.encode()).hexdigest()

# Build checksum address
checksum_addr = '0x'
for i, char in enumerate(addr_clean):
    if char in '0123456789':
        checksum_addr += char
    else:
        # If hash nibble >= 8, uppercase the letter
        hash_value = int(keccak_hash[i], 16)
        checksum_addr += char.upper() if hash_value >= 8 else char

print(f"Address to verify: {addr}")
print(f"Expected checksum: {checksum_addr}")
print(f"Match: {addr == checksum_addr}")

if addr == checksum_addr:
    print("✓ Valid EIP-55 checksum")
else:
    print("✗ Invalid checksum")
EOF

Repository: openintentsframework/broadcaster

Length of output: 231


Update base-sepolia copy address with correct EIP-55 checksum.

The address 0x853C0c8873FB6c2c71777373AD71BEa04f3755A6 exists on Base Sepolia but has an invalid EIP-55 checksum. Use the correctly checksummed address: 0x853c0C8873fB6c2C71777373Ad71BEA04F3755A6

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@deployments/optimism-sepolia.json` at line 17, The JSON entry for the
deployment key "base-sepolia" uses an address with an incorrect EIP-55 checksum;
replace the current value "0x853C0c8873FB6c2c71777373AD71BEa04f3755A6" with the
correctly checksummed address "0x853c0C8873fB6c2C71777373Ad71BEA04F3755A6" in
the "base-sepolia" field so the file contains the proper EIP-55 formatted
address.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant