@@ -8,13 +8,13 @@ SHELL:=/bin/bash
88# CONSTANTS
99
1010SOLC_VERSION := $(shell cat foundry.toml | grep solc | cut -d= -f2 | xargs echo || echo "0.8.23")
11- TEST_TREE_MARKDOWN =TEST_TREE .md
11+ TEST_TREE_MARKDOWN =TESTS .md
1212MAKEFILE =Makefile
1313DEPLOYMENT_SCRIPT =Deploy
1414DEPLOY_SCRIPT: =script/$(DEPLOYMENT_SCRIPT ) .s.sol:$(DEPLOYMENT_SCRIPT )
1515CREATE_SCRIPT: =script/Create.s.sol:Create
1616VERIFY_CONTRACTS_SCRIPT := script/verify-contracts.sh
17- SUPPORTED_VERIFIERS := etherscan blockscout sourcify routescan-mainnet routescan-testnet
17+ SUPPORTED_VERIFIERS := etherscan blockscout sourcify zksync routescan-mainnet routescan-testnet
1818MAKE_TEST_TREE_CMD =deno run ./test/script/make-test-tree.ts
1919LOGS_FOLDER := ./logs
2020VERBOSITY: =-vvv
@@ -28,6 +28,7 @@ DEPLOYMENT_ADDRESS = $(shell cast wallet address --private-key $(DEPLOYMENT_PRIV
2828NETWORK_NAME: =$(strip $(subst ',, $(subst ",,$(NETWORK_NAME ) ) ) )
2929CHAIN_ID: =$(strip $(subst ',, $(subst ",,$(CHAIN_ID ) ) ) )
3030VERIFIER: =$(strip $(subst ',, $(subst ",,$(VERIFIER ) ) ) )
31+ BLOCKSCOUT_HOST_NAME: =$(strip $(subst ',, $(subst ",,$(BLOCKSCOUT_HOST_NAME ) ) ) )
3132
3233DEPLOYMENT_LOG_FILE =deployment-$(NETWORK_NAME ) -$(shell date +"% y-% m-% d-% H-% M") .log
3334CREATION_LOG_FILE =creation-$(NETWORK_NAME ) -$(shell date +"% y-% m-% d-% H-% M") .log
@@ -44,18 +45,20 @@ ifeq ($(VERIFIER), etherscan)
4445 VERIFIER_URL := https://api.etherscan.io/api
4546 VERIFIER_API_KEY := $(ETHERSCAN_API_KEY)
4647 VERIFIER_PARAMS := --verifier $(VERIFIER) --etherscan-api-key $(ETHERSCAN_API_KEY)
47- endif
48-
49- ifeq ($(VERIFIER ) , blockscout)
48+ else ifeq ($(VERIFIER), blockscout)
5049 VERIFIER_URL := https://$(BLOCKSCOUT_HOST_NAME)/api\?
5150 VERIFIER_API_KEY := ""
5251 VERIFIER_PARAMS = --verifier $(VERIFIER) --verifier-url "$(VERIFIER_URL)"
53- endif
54-
55- # ifeq ($(VERIFIER), sourcify)
56- # endif
57-
58- ifneq ($(filter $(VERIFIER ) , routescan-mainnet routescan-testnet) ,)
52+ else ifeq ($(VERIFIER), sourcify)
53+ else ifeq ($(VERIFIER), zksync)
54+ ifeq ($(CHAIN_ID),300)
55+ VERIFIER_URL := https://explorer.sepolia.era.zksync.dev/contract_verification
56+ else ifeq ($(CHAIN_ID),324)
57+ VERIFIER_URL := https://zksync2-mainnet-explorer.zksync.io/contract_verification
58+ endif
59+ VERIFIER_API_KEY := ""
60+ VERIFIER_PARAMS = --verifier $(VERIFIER) --verifier-url "$(VERIFIER_URL)"
61+ else ifneq ($(filter $(VERIFIER), routescan-mainnet routescan-testnet),)
5962 ifeq ($(VERIFIER), routescan-mainnet)
6063 VERIFIER_URL := https://api.routescan.io/v2/network/mainnet/evm/$(CHAIN_ID)/etherscan
6164 else
@@ -67,9 +70,15 @@ ifneq ($(filter $(VERIFIER), routescan-mainnet routescan-testnet),)
6770 VERIFIER_PARAMS = --verifier $(VERIFIER) --verifier-url '$(VERIFIER_URL)' --etherscan-api-key $(VERIFIER_API_KEY)
6871endif
6972
70- # When invoked like `make deploy slow=true`
71- ifeq ($(slow ) ,true)
72- SLOW_FLAG := --slow
73+ # Additional chain-dependent params (Foundry)
74+ ifeq ($(CHAIN_ID ) ,88888)
75+ FORGE_SCRIPT_CUSTOM_PARAMS := --priority-gas-price 1000000000 --gas-price 5200000000000
76+ else ifeq ($(CHAIN_ID),300)
77+ FORGE_SCRIPT_CUSTOM_PARAMS := --slow
78+ FORGE_BUILD_CUSTOM_PARAMS := --zksync
79+ else ifeq ($(CHAIN_ID),324)
80+ FORGE_SCRIPT_CUSTOM_PARAMS := --slow
81+ FORGE_BUILD_CUSTOM_PARAMS := --zksync
7382endif
7483
7584# TARGETS
@@ -110,6 +119,7 @@ clean: ## Clean the build artifacts
110119test : export RPC_URL=""
111120test : export ETHERSCAN_API_KEY=
112121test-coverage : export RPC_URL=""
122+ test-coverage : export ETHERSCAN_API_KEY=
113123
114124.PHONY : test
115125test : # # Run unit tests, locally
@@ -174,18 +184,15 @@ $(TEST_TREE_FILES): $(TEST_SOURCE_FILES)
174184 cat $$ file | $(MAKE_TEST_TREE_CMD ) > $$ {file%.t.yaml}.tree ; \
175185 done
176186
177- # Copy the .env files if not present
178- .env :
179- cp .env.example .env
180- @echo " NOTE: Edit the correct values of .env before you continue"
181-
182187# # Deployment targets:
183188
184189.PHONY : predeploy
185190predeploy : # # Simulate a factory deployment
186191 @echo " Simulating the deployment"
187192 forge script $(DEPLOY_SCRIPT ) \
188193 --rpc-url $(RPC_URL ) \
194+ $(FORGE_BUILD_CUSTOM_PARAMS ) \
195+ $(FORGE_SCRIPT_CUSTOM_PARAMS ) \
189196 $(VERBOSITY )
190197
191198.PHONY : deploy
@@ -197,9 +204,10 @@ deploy: test ## Deploy the factory and verify the source code
197204 --retries 10 \
198205 --delay 8 \
199206 --broadcast \
200- $(SLOW_FLAG ) \
201207 --verify \
202208 $(VERIFIER_PARAMS ) \
209+ $(FORGE_BUILD_CUSTOM_PARAMS ) \
210+ $(FORGE_SCRIPT_CUSTOM_PARAMS ) \
203211 $(VERBOSITY ) 2>&1 | tee -a $(LOGS_FOLDER ) /$(DEPLOYMENT_LOG_FILE )
204212
205213# #
@@ -209,6 +217,8 @@ precreate: ## Simulate running Create.s.sol
209217 @echo " Simulating condition creation"
210218 forge script $(CREATE_SCRIPT ) \
211219 --rpc-url $(RPC_URL ) \
220+ $(FORGE_BUILD_CUSTOM_PARAMS ) \
221+ $(FORGE_SCRIPT_CUSTOM_PARAMS ) \
212222 $(VERBOSITY )
213223
214224.PHONY : create
@@ -220,26 +230,27 @@ create: test ## Run Create.s.sol to create new condition instances
220230 --retries 10 \
221231 --delay 8 \
222232 --broadcast \
223- $(SLOW_FLAG ) \
224233 --verify \
225234 $(VERIFIER_PARAMS ) \
235+ $(FORGE_BUILD_CUSTOM_PARAMS ) \
236+ $(FORGE_SCRIPT_CUSTOM_PARAMS ) \
226237 $(VERBOSITY ) 2>&1 | tee -a $(LOGS_FOLDER ) /$(CREATION_LOG_FILE )
227238
228239# # Verification:
229240
230241.PHONY : verify-etherscan
231242verify-etherscan : broadcast/$(DEPLOYMENT_SCRIPT ) .s.sol/$(CHAIN_ID ) /run-latest.json # # Verify the last deployment on an Etherscan (compatible) explorer
232- forge build
243+ forge build $( FORGE_BUILD_CUSTOM_PARAMS )
233244 bash $(VERIFY_CONTRACTS_SCRIPT ) $(CHAIN_ID ) $(VERIFIER ) $(VERIFIER_URL ) $(VERIFIER_API_KEY )
234245
235246.PHONY : verify-blockscout
236247verify-blockscout : broadcast/$(DEPLOYMENT_SCRIPT ) .s.sol/$(CHAIN_ID ) /run-latest.json # # Verify the last deployment on BlockScout
237- forge build
248+ forge build $( FORGE_BUILD_CUSTOM_PARAMS )
238249 bash $(VERIFY_CONTRACTS_SCRIPT ) $(CHAIN_ID ) $(VERIFIER ) https://$(BLOCKSCOUT_HOST_NAME ) /api $(VERIFIER_API_KEY )
239250
240251.PHONY : verify-sourcify
241252verify-sourcify : broadcast/$(DEPLOYMENT_SCRIPT ) .s.sol/$(CHAIN_ID ) /run-latest.json # # Verify the last deployment on Sourcify
242- forge build
253+ forge build $( FORGE_BUILD_CUSTOM_PARAMS )
243254 bash $(VERIFY_CONTRACTS_SCRIPT ) $(CHAIN_ID ) $(VERIFIER ) " " " "
244255
245256# #
@@ -270,24 +281,28 @@ refund: ## Refund the remaining balance left on the deployment account
270281 --value $$ REMAINING \
271282 $(REFUND_ADDRESS )
272283
284+ .PHONY : gas-price
285+ gas-price :
286+ @echo " Gas price ($( NETWORK_NAME) ):"
287+ @cast gas-price --rpc-url $(RPC_URL )
288+
289+ .PHONY : balance
290+ balance :
291+ @echo " Balance of $( DEPLOYMENT_ADDRESS) ($( NETWORK_NAME) ):"
292+ @BALANCE=$$(cast balance $(DEPLOYMENT_ADDRESS ) --rpc-url $(RPC_URL ) ) && \
293+ cast --to-unit $$ BALANCE ether
294+
273295# In the case we need to whipe stuck transactions, by submiting a 0 value transaction with a specific nonce and higher gas
274- # .PHONY: clean-nonces
275- # clean-nonces:
276- # for nonce in $(nonces); do \
277- # make clean-nonce nonce=$$nonce ; \
278- # done
279-
280- # .PHONY: clean-nonce
281- # clean-nonce:
282- # cast send --private-key $(DEPLOYMENT_PRIVATE_KEY) \
283- # --rpc-url $(RPC_URL) \
284- # --value 0 \
285- # --nonce $(nonce) \
286- # set the following 2 params in deploy target too if needed
287- # --priority-gas-price 1000000000 \
288- # --gas-price 6501000000000 \
289- # $(DEPLOYMENT_ADDRESS)
290-
291- # .PHONY: gas-price
292- # gas-price:
293- # cast gas-price --rpc-url $(RPC_URL)
296+ .PHONY : clean-nonces
297+ clean-nonces :
298+ for nonce in $( nonces) ; do \
299+ make clean-nonce nonce=$$ nonce ; \
300+ done
301+
302+ .PHONY : clean-nonce
303+ clean-nonce :
304+ cast send --private-key $(DEPLOYMENT_PRIVATE_KEY ) \
305+ --rpc-url $(RPC_URL) \
306+ --value 0 \
307+ --nonce $(nonce) \
308+ $(DEPLOYMENT_ADDRESS)
0 commit comments