Skip to content

Commit 5aa0d3b

Browse files
sdshorsefacts
andauthored
fix: Zero out salts to get Docker Compose helper working (#395)
* fix: Zero out salts to get Docker Compose helper working When using this for local developing, the use of salts seems to interfere with running the `l2-deployer` container. Fix by zeroing out the hashes. * chore: extract salts to env vars * chore: use prod parameters by default * fix: use .env.local for docker tests * Run on BuildJet builders * Increase timeouts --------- Co-authored-by: horsefacts <[email protected]>
1 parent bfbd487 commit 5aa0d3b

File tree

7 files changed

+208
-50
lines changed

7 files changed

+208
-50
lines changed

.env.example

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,46 @@
11
# Price feed addresses
2-
# These defaults are the Optimism mainnet addresses.
32
STORAGE_RENT_PRICE_FEED_ADDRESS=0x13e3ee699d1909e989722e753853ae30b17e08c5
43
STORAGE_RENT_UPTIME_FEED_ADDRESS=0x371EAD81c9102C9BF4874A9075FFFf170F2Ee389
54

65
# Storage rent params
7-
# Default address is Anvil test account 1
8-
STORAGE_RENT_ROLE_ADMIN_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
9-
STORAGE_RENT_VAULT_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
10-
STORAGE_RENT_ADMIN_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
11-
STORAGE_RENT_OPERATOR_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
12-
STORAGE_RENT_TREASURER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
6+
STORAGE_RENT_ROLE_ADMIN_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
7+
STORAGE_RENT_VAULT_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
8+
STORAGE_RENT_ADMIN_ADDRESS=0xD84E32224A249A575A09672Da9cb58C381C4837a
9+
STORAGE_RENT_OPERATOR_ADDRESS=0x0000000000000000000000000000000000000000
10+
STORAGE_RENT_TREASURER_ADDRESS=0x0000000000000000000000000000000000000000
1311

1412
# ID registry params
15-
# Default address is Anvil test account 1
16-
ID_REGISTRY_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
13+
ID_REGISTRY_OWNER_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
1714

1815
# Key registry params
19-
# Default address is Anvil test account 1
20-
KEY_REGISTRY_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
16+
KEY_REGISTRY_OWNER_ADDRESS=0x2D93c2F74b2C4697f9ea85D0450148AA45D4D5a2
2117

2218
# Metadata validator params
23-
# Default address is Anvil test account 1
24-
METADATA_VALIDATOR_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
19+
METADATA_VALIDATOR_OWNER_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
2520

2621
# Bundler params
27-
# Default addresses are Anvil test account 1
28-
BUNDLER_TRUSTED_CALLER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
29-
BUNDLER_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
22+
BUNDLER_TRUSTED_CALLER_ADDRESS=0x2D93c2F74b2C4697f9ea85D0450148AA45D4D5a2
23+
BUNDLER_OWNER_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
3024

31-
# RecoveryProxy params
32-
# Default addresses are Anvil test account 1
33-
RECOVERY_PROXY_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
25+
# Recovery proxy params
26+
RECOVERY_PROXY_OWNER_ADDRESS=0xFFE52568Fb0E7038Ef289677288BB704E5c9E82e
3427

3528
# Fname resolver params.
36-
# Default owner is Anvil test account 1
3729
FNAME_RESOLVER_SERVER_URL=https://fnames.farcaster.xyz/ccip/{sender}/{data}.json
3830
FNAME_RESOLVER_SIGNER_ADDRESS=0xBc5274eFc266311015793d89E9B591fa46294741
39-
FNAME_RESOLVER_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
31+
FNAME_RESOLVER_OWNER_ADDRESS=0x138356f24c7A16BE48978dE277a468F6C16A19a5
4032

4133
# RPC endpoints for OP testnet and mainnet.
42-
L2_MAINNET_RPC_URL=
4334
L1_MAINNET_RPC_URL=
35+
L2_MAINNET_RPC_URL=
36+
37+
# Salts
38+
STORAGE_RENT_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c65360d99ba6ea4e0161f2b96c
39+
ID_REGISTRY_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c63e0688f6d95afa008febf4d7
40+
KEY_REGISTRY_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c62af4de6e1f0355029f357f47
41+
SIGNED_KEY_REQUEST_VALIDATOR_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c6610c0841333604016684800c
42+
BUNDLER_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c6e451fc0a34ec4c008c9a31fa
43+
RECOVERY_PROXY_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c6110eaaca06f77900dac1cad3
4444

4545
# Deployer address.
46-
# Default address is Anvil test account 1
47-
DEPLOYER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
46+
DEPLOYER=0x6D2b70e39C6bc63763098e336323591eb77Cd0C6

.env.local

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Price feed addresses
2+
# These defaults are the Optimism mainnet addresses.
3+
STORAGE_RENT_PRICE_FEED_ADDRESS=0x13e3ee699d1909e989722e753853ae30b17e08c5
4+
STORAGE_RENT_UPTIME_FEED_ADDRESS=0x371EAD81c9102C9BF4874A9075FFFf170F2Ee389
5+
6+
# Storage rent params
7+
# Default address is Anvil test account 1
8+
STORAGE_RENT_ROLE_ADMIN_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
9+
STORAGE_RENT_VAULT_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
10+
STORAGE_RENT_ADMIN_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
11+
STORAGE_RENT_OPERATOR_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
12+
STORAGE_RENT_TREASURER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
13+
14+
# ID registry params
15+
# Default address is Anvil test account 1
16+
ID_REGISTRY_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
17+
18+
# Key registry params
19+
# Default address is Anvil test account 1
20+
KEY_REGISTRY_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
21+
22+
# Metadata validator params
23+
# Default address is Anvil test account 1
24+
METADATA_VALIDATOR_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
25+
26+
# Bundler params
27+
# Default addresses are Anvil test account 1
28+
BUNDLER_TRUSTED_CALLER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
29+
BUNDLER_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
30+
31+
# RecoveryProxy params
32+
# Default addresses are Anvil test account 1
33+
RECOVERY_PROXY_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
34+
35+
# Fname resolver params.
36+
# Default owner is Anvil test account 1
37+
FNAME_RESOLVER_SERVER_URL=https://fnames.farcaster.xyz/ccip/{sender}/{data}.json
38+
FNAME_RESOLVER_SIGNER_ADDRESS=0xBc5274eFc266311015793d89E9B591fa46294741
39+
FNAME_RESOLVER_OWNER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
40+
41+
# RPC endpoints for OP testnet and mainnet.
42+
L2_MAINNET_RPC_URL=
43+
L1_MAINNET_RPC_URL=
44+
45+
STORAGE_RENT_CREATE2_SALT=0x0000000000000000000000000000000000000000000000000000000000000000
46+
ID_REGISTRY_CREATE2_SALT=0x0000000000000000000000000000000000000000000000000000000000000000
47+
KEY_REGISTRY_CREATE2_SALT=0x0000000000000000000000000000000000000000000000000000000000000000
48+
SIGNED_KEY_REQUEST_VALIDATOR_CREATE2_SALT=0x0000000000000000000000000000000000000000000000000000000000000000
49+
BUNDLER_CREATE2_SALT=0x0000000000000000000000000000000000000000000000000000000000000000
50+
RECOVERY_PROXY_CREATE2_SALT=0x0000000000000000000000000000000000000000000000000000000000000000
51+
52+
# Deployer address.
53+
# Default address is Anvil test account 1
54+
DEPLOYER=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

.env.prod

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Price feed addresses
2+
STORAGE_RENT_PRICE_FEED_ADDRESS=0x13e3ee699d1909e989722e753853ae30b17e08c5
3+
STORAGE_RENT_UPTIME_FEED_ADDRESS=0x371EAD81c9102C9BF4874A9075FFFf170F2Ee389
4+
5+
# Storage rent params
6+
STORAGE_RENT_ROLE_ADMIN_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
7+
STORAGE_RENT_VAULT_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
8+
STORAGE_RENT_ADMIN_ADDRESS=0xD84E32224A249A575A09672Da9cb58C381C4837a
9+
STORAGE_RENT_OPERATOR_ADDRESS=0x0000000000000000000000000000000000000000
10+
STORAGE_RENT_TREASURER_ADDRESS=0x0000000000000000000000000000000000000000
11+
12+
# ID registry params
13+
ID_REGISTRY_OWNER_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
14+
15+
# Key registry params
16+
KEY_REGISTRY_OWNER_ADDRESS=0x2D93c2F74b2C4697f9ea85D0450148AA45D4D5a2
17+
18+
# Metadata validator params
19+
METADATA_VALIDATOR_OWNER_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
20+
21+
# Bundler params
22+
BUNDLER_TRUSTED_CALLER_ADDRESS=0x2D93c2F74b2C4697f9ea85D0450148AA45D4D5a2
23+
BUNDLER_OWNER_ADDRESS=0x53c6dA835c777AD11159198FBe11f95E5eE6B692
24+
25+
# Recovery proxy params
26+
RECOVERY_PROXY_OWNER_ADDRESS=0xFFE52568Fb0E7038Ef289677288BB704E5c9E82e
27+
28+
# Fname resolver params.
29+
FNAME_RESOLVER_SERVER_URL=https://fnames.farcaster.xyz/ccip/{sender}/{data}.json
30+
FNAME_RESOLVER_SIGNER_ADDRESS=0xBc5274eFc266311015793d89E9B591fa46294741
31+
FNAME_RESOLVER_OWNER_ADDRESS=0x138356f24c7A16BE48978dE277a468F6C16A19a5
32+
33+
# RPC endpoints for OP testnet and mainnet.
34+
L1_MAINNET_RPC_URL=
35+
L2_MAINNET_RPC_URL=
36+
37+
# Salts
38+
STORAGE_RENT_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c65360d99ba6ea4e0161f2b96c
39+
ID_REGISTRY_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c63e0688f6d95afa008febf4d7
40+
KEY_REGISTRY_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c62af4de6e1f0355029f357f47
41+
SIGNED_KEY_REQUEST_VALIDATOR_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c6610c0841333604016684800c
42+
BUNDLER_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c6e451fc0a34ec4c008c9a31fa
43+
RECOVERY_PROXY_CREATE2_SALT=0x6d2b70e39c6bc63763098e336323591eb77cd0c6110eaaca06f77900dac1cad3
44+
45+
# Deployer address.
46+
DEPLOYER=0x6D2b70e39C6bc63763098e336323591eb77Cd0C6

.github/workflows/ci.yml

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ env:
1616
jobs:
1717
build-image:
1818
timeout-minutes: 5
19-
runs-on: ubuntu-latest
19+
runs-on: ${{ vars.BUILDJET_DISABLED == 'true' && 'ubuntu-latest' || 'buildjet-16vcpu-ubuntu-2204' }}
2020
steps:
2121
- uses: actions/checkout@v3
2222
with:
@@ -30,6 +30,10 @@ jobs:
3030
- name: Install Docker buildx
3131
uses: docker/setup-buildx-action@v2
3232

33+
- name: Copy .env.local
34+
run: cp .env.local .env
35+
shell: bash
36+
3337
- name: Build Docker images defined in Docker Compose file
3438
uses: docker/bake-action@v3
3539
with:
@@ -40,21 +44,57 @@ jobs:
4044
run: docker compose up --detach
4145

4246
- name: Check that Anvil is running
47+
uses: nick-fields/retry@v2
48+
with:
49+
timeout_seconds: 15
50+
retry_wait_seconds: 5
51+
max_attempts: 10
52+
shell: bash
53+
command: '[ "$(cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266)" = 1000000000000000000 ]' # Default address
54+
on_retry_command: docker compose logs && docker compose ps && cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
55+
56+
- name: Wait for contract to be deployed
4357
uses: nick-fields/retry@v2
4458
with:
4559
timeout_seconds: 5
4660
retry_wait_seconds: 5
47-
max_attempts: 3
61+
max_attempts: 10
4862
shell: bash
49-
command: '[ "$(cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266)" = 10000000000000000000000 ]' # Default address
63+
command: |
64+
set -e -o pipefail
65+
docker compose logs | grep Bundler | awk '{ print $5 }'
5066
on_retry_command: docker compose logs
5167

68+
- name: Get contract addresses
69+
run: |
70+
echo "ID_CONTRACT_ADDRESS=$(docker compose logs | grep IdRegistry | awk '{ print $5 }')" >> $GITHUB_ENV
71+
echo "KEY_CONTRACT_ADDRESS=$(docker compose logs | grep KeyRegistry | awk '{ print $5 }')" >> $GITHUB_ENV
72+
echo "STORAGE_CONTRACT_ADDRESS=$(docker compose logs | grep StorageRegistry | awk '{ print $5 }')" >> $GITHUB_ENV
73+
echo "BUNDLER_CONTRACT_ADDRESS=$(docker compose logs | grep Bundler | awk '{ print $5 }')" >> $GITHUB_ENV
74+
shell: bash
75+
76+
- name: Confirm ID Registry contract was deployed
77+
shell: bash
78+
run: '[ $(cast call $ID_CONTRACT_ADDRESS "owner()") = 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266 ]'
79+
80+
- name: Confirm Key Registry contract was deployed
81+
shell: bash
82+
run: '[ $(cast call $KEY_CONTRACT_ADDRESS "owner()") = 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266 ]'
83+
84+
- name: Confirm Storage Registry contract was deployed
85+
shell: bash
86+
run: '[ $(cast call $STORAGE_CONTRACT_ADDRESS "paused()") = 0x0000000000000000000000000000000000000000000000000000000000000000 ]'
87+
88+
- name: Confirm Bundler contract was deployed
89+
shell: bash
90+
run: '[ $(cast call $BUNDLER_CONTRACT_ADDRESS "owner()") = 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266 ]'
91+
5292
test:
5393
strategy:
5494
fail-fast: true
5595

5696
timeout-minutes: 15
57-
runs-on: ubuntu-latest
97+
runs-on: ${{ vars.BUILDJET_DISABLED == 'true' && 'ubuntu-latest' || 'buildjet-16vcpu-ubuntu-2204' }}
5898
steps:
5999
- uses: actions/checkout@v3
60100
with:
@@ -80,7 +120,7 @@ jobs:
80120
run: forge snapshot --check --match-contract Gas
81121

82122
coverage:
83-
runs-on: ubuntu-latest
123+
runs-on: ${{ vars.BUILDJET_DISABLED == 'true' && 'ubuntu-latest' || 'buildjet-2vcpu-ubuntu-2204' }}
84124
steps:
85125
- uses: actions/checkout@v3
86126

docker-compose.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,15 @@ services:
6060
entrypoint: |
6161
sh -c '
6262
set -e
63+
git config --global --add safe.directory "*"
6364
export RPC_URL="http://l2-anvil:${PORT:-8545}"
6465
echo "Waiting for Anvil..."
6566
while ! nc -z l2-anvil "${PORT:-8545}"; do sleep 0.1; done
6667
echo "Anvil online"
6768
echo "Enabling impersonation"
6869
cast rpc anvil_autoImpersonateAccount true --rpc-url "$$RPC_URL" > /dev/null
70+
echo "Funding deployer"
71+
cast rpc anvil_setBalance "$$DEPLOYER" 0xde0b6b3a7640000 --rpc-url "$$RPC_URL" > /dev/null
6972
echo "Deploying contract"
7073
forge install
7174
forge script -v script/DeployL2.s.sol --rpc-url "$$RPC_URL" --unlocked --broadcast --sender "$$DEPLOYER"
@@ -100,12 +103,15 @@ services:
100103
entrypoint: |
101104
sh -c '
102105
set -e
106+
git config --global --add safe.directory "*"
103107
export RPC_URL="http://l1-anvil:${PORT:-8545}"
104108
echo "Waiting for Anvil..."
105109
while ! nc -z l1-anvil "${PORT:-8545}"; do sleep 0.1; done
106110
echo "Anvil online"
107111
echo "Enabling impersonation"
108112
cast rpc anvil_autoImpersonateAccount true --rpc-url "$$RPC_URL" > /dev/null
113+
echo "Funding deployer"
114+
cast rpc anvil_setBalance "$$DEPLOYER" 0xde0b6b3a7640000 --rpc-url "$$RPC_URL" > /dev/null
109115
echo "Deploying contract"
110116
forge install
111117
forge script -v script/DeployL1.s.sol --rpc-url "$$RPC_URL" --unlocked --broadcast --sender "$$DEPLOYER"

0 commit comments

Comments
 (0)