-
Notifications
You must be signed in to change notification settings - Fork 2
Update Scripts and add Mainnet deployments #95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2f03c6a
7bb0419
12fc2fb
2c2c8c3
627c2ef
d7fdcf3
be18414
6536f6f
f279fb4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88", | ||
| "buffer": "0x0000000048C4Ed10cF14A02B9E0AbDDA5227b071", | ||
| "broadcaster-oracle": "0xBf8d2e6961b5725e3A4499BF1A2A1CcAB219DC51", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "provers": { | ||
| "ethereum": { | ||
| "pointer": "0xB45B3985Ba20b20014FA73a7E7dAb1c171D869E6", | ||
| "prover": "0xFc8992F8dFf4e14573E6588dCc92dcDEa583DeBE" | ||
| } | ||
| }, | ||
| "copies": { | ||
| "ethereum": { | ||
| "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", | ||
| "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", | ||
| "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", | ||
| "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", | ||
| "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0xcBF1db810c116e21fbf957530b73768924Fb2D02", | ||
| "buffer": "0xeB69db5269d89EBF0324e06926BE4200CF7E77f8", | ||
| "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "copies": { | ||
| "ethereum": { | ||
| "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", | ||
| "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", | ||
| "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", | ||
| "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", | ||
| "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" | ||
| } | ||
| }, | ||
| "provers": { | ||
| "ethereum": { | ||
| "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", | ||
| "prover": "0xE91c715Fbef1CD5bd79f0fCbda3bA499031f3329" | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0x5a5C4f3D0F0Efaeed2aEc9B59B67eC62a4666D88", | ||
| "broadcaster-oracle": "0xBf8d2e6961b5725e3A4499BF1A2A1CcAB219DC51", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "provers": { | ||
| "arbitrum": { | ||
| "pointer": "0xC70F25F1C275A1803c511c898c660ee28E08D148", | ||
| "prover": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD" | ||
| }, | ||
| "linea": { | ||
| "pointer": "0x70eD7E966C589928e3320c30CF1aD86d49E175d3", | ||
| "prover": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30" | ||
| }, | ||
| "scroll": { | ||
| "pointer": "0x749a05534A0D023df7238205F6B8146978b23332", | ||
| "prover": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70" | ||
| }, | ||
| "optimism": { | ||
| "pointer": "0xfBB590FAA27E8e51411511f6aC2B868FDF18d607", | ||
| "prover": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98" | ||
| }, | ||
| "zksync": { | ||
| "pointer": "0xd7CB2eC1D83B93E92785116cF73a8e6F29079831", | ||
| "prover": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6" | ||
| }, | ||
| "base": { | ||
| "pointer": "0x8645f22Bc5d6b9531a76E20d3eD749A55117F47C", | ||
| "prover": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" | ||
| } | ||
| }, | ||
| "pushers": { | ||
| "linea": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", | ||
| "scroll": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", | ||
| "zksync": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", | ||
| "optimism": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", | ||
| "base": "0xcBF1db810c116e21fbf957530b73768924Fb2D02" | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", | ||
| "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", | ||
|
Comment on lines
+5
to
+6
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Compare pusher and buffer addresses across mainnet deployment files
echo "=== Comparing pusher and buffer addresses ==="
for f in deployments/arbitrum.json deployments/linea.json deployments/optimism.json deployments/scroll.json deployments/zksync.json; do
if [ -f "$f" ]; then
echo "--- $f ---"
jq '{pusher: .contracts.pusher, buffer: .contracts.buffer}' "$f" 2>/dev/null
fi
doneRepository: openintentsframework/broadcaster Length of output: 879 🏁 Script executed: #!/bin/bash
# Search for pusher and buffer contract references in the codebase
echo "=== Searching for pusher contract references ==="
rg -i "pusher" --max-count 20 -A 3 -B 3
echo ""
echo "=== Searching for buffer contract references ==="
rg -i "buffer" --max-count 20 -A 3 -B 3Repository: openintentsframework/broadcaster Length of output: 50389 🏁 Script executed: #!/bin/bash
# Check the deployment files for patterns and comments
echo "=== Full content of deployment files ==="
for f in deployments/arbitrum.json deployments/linea.json deployments/optimism.json deployments/scroll.json deployments/zksync.json; do
if [ -f "$f" ]; then
echo "--- $f ---"
cat -n "$f"
echo ""
fi
doneRepository: openintentsframework/broadcaster Length of output: 5916 🏁 Script executed: #!/bin/bash
# Search for Linea-specific configuration or notes
echo "=== Searching for Linea-specific documentation or comments ==="
find . -type f \( -name "*.md" -o -name "*.sol" -o -name "*.sh" -o -name "*.json" \) | xargs grep -l -i "linea" | head -20Repository: openintentsframework/broadcaster Length of output: 869 🏁 Script executed: #!/bin/bash
# Check Linea documentation
cat docs/provers/LINEA.mdRepository: openintentsframework/broadcaster Length of output: 14074 🏁 Script executed: #!/bin/bash
# Check deployment scripts for Linea-specific configuration
echo "=== Checking Linea deployment scripts ==="
find scripts/deployment -name "*inea*" -o -name "*inea*" | xargs cat -n 2>/dev/nullRepository: openintentsframework/broadcaster Length of output: 6535 Fix duplicate pusher and buffer addresses in linea.json. The 🤖 Prompt for AI Agents
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The contracts are right, it's a coincidence |
||
| "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "copies": { | ||
| "ethereum": { | ||
| "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", | ||
| "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", | ||
| "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", | ||
| "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", | ||
| "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" | ||
| } | ||
| }, | ||
| "provers": { | ||
| "ethereum": { | ||
| "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", | ||
| "prover": "0xc96707EF3F543aE9f81aAa81f92b11F3A6F825Dc" | ||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0xcf118D7a3635F9B18B4aa88bFCDB4fa51c73719D", | ||
| "buffer": "0x9F9F7687eBfaFABA830f741006Fd6D739f76f6A6", | ||
| "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "copies": { | ||
| "ethereum": { | ||
| "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", | ||
| "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", | ||
| "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", | ||
| "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", | ||
| "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" | ||
| } | ||
| }, | ||
| "provers": { | ||
| "ethereum": { | ||
| "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", | ||
| "prover": "0x0Adf8FefA84B09ebD31E7eDA9c381D4ADB44ca1d" | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0x536c398D9bBAf896b128C99bB7c78CfA3243AE27", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0x331475638c7B3356c3E1d1Ff0c1477F7D8B8fB04", | ||
| "buffer": "0x58b67c85CeCAa0e2c4476Ed1Be03970EFbce298c", | ||
| "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "copies": { | ||
| "ethereum": { | ||
| "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", | ||
| "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", | ||
| "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", | ||
| "zksync": "0x4148d6E5cF0a095dB68f20A99DBf1232D8BB1cC6", | ||
| "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" | ||
| } | ||
| }, | ||
| "provers": { | ||
| "ethereum": { | ||
| "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", | ||
| "prover": "0xe8cBb8F5B085ECE491673E6d1239081b77f0Ca9a" | ||
| } | ||
| } | ||
| } | ||
|
Comment on lines
+1
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Check if the broadcaster contract is verified on Scroll mainnet
echo "Checking Scroll mainnet broadcaster contract..."
curl -s "https://api.scrollscan.com/api?module=contract&action=getsourcecode&address=0x536c398D9bBAf896b128C99bB7c78CfA3243AE27" | jq '.result[0].ContractName // "Not verified or error"'Repository: openintentsframework/broadcaster Length of output: 198 🏁 Script executed: # Check the scroll.json file and verify its structure
file_path="deployments/scroll.json"
# Check if file exists and view it with line numbers to see trailing newline
echo "=== File content with line numbers ==="
cat -n "$file_path"
echo ""
echo "=== Check for trailing newline ==="
if [ -z "$(tail -c 1 "$file_path")" ]; then
echo "File HAS a trailing newline"
else
echo "File DOES NOT have a trailing newline"
fi
echo ""
echo "=== Validate JSON structure ==="
python3 << 'PYTHON_EOF'
import json
try:
with open('deployments/scroll.json', 'r') as f:
data = json.load(f)
print("✓ Valid JSON structure")
print(f"✓ Keys present: {list(data.keys())}")
# Validate address formats
all_addresses = []
def extract_addresses(obj):
if isinstance(obj, dict):
for v in obj.values():
if isinstance(v, str) and v.startswith('0x'):
all_addresses.append(v)
extract_addresses(v)
elif isinstance(obj, list):
for item in obj:
extract_addresses(item)
extract_addresses(data)
print(f"✓ Total addresses found: {len(all_addresses)}")
# Validate hex format
invalid_addresses = []
for addr in all_addresses:
if not (len(addr) == 42 and all(c in '0123456789abcdefABCDEF' for c in addr[2:])):
invalid_addresses.append(addr)
if invalid_addresses:
print(f"✗ Invalid address formats: {invalid_addresses}")
else:
print(f"✓ All {len(all_addresses)} addresses have valid format (42 chars, 0x prefix)")
except json.JSONDecodeError as e:
print(f"✗ Invalid JSON: {e}")
PYTHON_EOFRepository: openintentsframework/broadcaster Length of output: 1509 Add trailing newline to maintain POSIX compliance. The JSON structure and all 13 contract addresses are valid. The file is missing a final newline character; add it to the end of 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "contracts": { | ||
| "broadcaster": "0xE07Fe9bE1615fE5b3eCdbE07aDe090eDFEf65e80", | ||
| "receiver": "0x16681d01c9169aacaFB6BbCBaF4c7C3002C63059", | ||
| "pusher": "0x32e6E59958Cb6C7C528573a42456955E1EC3FF12", | ||
| "buffer": "0xe0f5B1750670FBea7f8c9D825DdBfa6A34a7727b", | ||
| "broadcaster-oracle": "0x0a6edD8A400b6db1bbe0d21Ecef07c4Fce983248", | ||
| "input-settler-escrow": "0x15eA18EAcD9C35b454CF1456ed1bD05636B46147", | ||
| "output-settler-simple": "0x1DCE289d62C2068584C5D0CFb5C1fD538e832847" | ||
| }, | ||
| "copies": { | ||
| "ethereum": { | ||
| "arbitrum": "0xfdB7609b3fFd817454fDF8409b01399DF4a45adD", | ||
| "linea": "0x347Fdf829FeE4289c520F23b3537e273EA41AE30", | ||
| "scroll": "0xa50B98CF3fcC4226eA724223DeA1B9F9ECDa3F70", | ||
| "optimism": "0x6B0e07592261540cF9D141d894b8A17FE1A04a98", | ||
| "base": "0xfBc1Edd87a700DBD7eaa3E038E54E6C7fFba1723" | ||
| } | ||
| }, | ||
| "provers": { | ||
| "ethereum": { | ||
| "pointer": "0x1c7ca0a4d176A03Fe93C1f5d6555f2ED724B6b04", | ||
| "prover": "0x0C413Eb0681c91e677BA6D4a8bBC0989a7962bd6" | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,8 +12,11 @@ import {DeployBase} from "../DeployBase.s.sol"; | |
| contract DeployBuffers is DeployBase { | ||
| function run() public { | ||
| string memory chainType = vm.envString("CHAIN_TYPE"); | ||
| string memory parentChain = vm.envString("PARENT_CHAIN"); | ||
| string memory childChain = vm.envString("CHILD_CHAIN"); | ||
|
|
||
| uint256 parentChainId = vm.envUint("PARENT_CHAIN_ID"); | ||
| uint256 childChainId = vm.envUint("CHILD_CHAIN_ID"); | ||
| string memory parentChain = _chainName(parentChainId); | ||
| string memory childChain = _chainName(childChainId); | ||
|
Comment on lines
14
to
+19
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use one source of truth for the child chain.
🤖 Prompt for AI Agents |
||
|
|
||
| address pusherAddress = _getPusherAddress(parentChain, childChain); | ||
| if (pusherAddress == address(0)) { | ||
|
|
@@ -38,7 +41,10 @@ contract DeployBuffers is DeployBase { | |
| buffer = address(new LineaBuffer(messenger, pusherAddress)); | ||
| } else if (keccak256(bytes(chainType)) == keccak256(bytes("scroll"))) { | ||
| buffer = address(new ScrollBuffer(messenger, pusherAddress)); | ||
| } else if (keccak256(bytes(chainType)) == keccak256(bytes("optimism"))) { | ||
| } else if ( | ||
| keccak256(bytes(chainType)) == keccak256(bytes("optimism")) | ||
| || keccak256(bytes(chainType)) == keccak256(bytes("base")) | ||
| ) { | ||
| buffer = address(new OptimismBuffer(messenger, pusherAddress)); | ||
| } else { | ||
| revert("Invalid chain type"); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Split Sepolia defaults out of the shared example.
These values are all network-specific Sepolia settings, but the rest of this PR now supports mainnet too. Copying
.env.exampleand only swapping RPC URLs or top-level chain IDs can leave rollup addresses and storage slots pointed at testnet, which is an easy way to produce broken mainnet deployments. Please either keep these blank or publish separate example env files per environment.🧰 Tools
🪛 dotenv-linter (4.0.0)
[warning] 23-23: [UnorderedKey] The LINEA_L2_MESSAGE_SERVICE key should go before the LINEA_ROLLUP key
(UnorderedKey)
[warning] 27-27: [UnorderedKey] The SCROLL_CHAIN key should go before the SCROLL_CHAIN_ID key
(UnorderedKey)
[warning] 29-29: [UnorderedKey] The L1_SCROLL_MESSENGER key should go before the SCROLL_CHAIN key
(UnorderedKey)
[warning] 30-30: [UnorderedKey] The L2_SCROLL_MESSENGER key should go before the SCROLL_CHAIN key
(UnorderedKey)
[warning] 34-34: [UnorderedKey] The OPTIMISM_ANCHOR_GAME_SLOT key should go before the OPTIMISM_CHAIN_ID key
(UnorderedKey)
[warning] 35-35: [UnorderedKey] The OPTIMISM_ANCHOR_STATE_REGISTRY key should go before the OPTIMISM_CHAIN_ID key
(UnorderedKey)
[warning] 44-44: [UnorderedKey] The ZKSYNC_GATEWAY_CHAIN_ID key should go before the ZKSYNC_GATEWAY_ZK_CHAIN key
(UnorderedKey)
🤖 Prompt for AI Agents