@@ -59,7 +59,7 @@ DOCKER_PLATFORM=--platform $(BUILD_PLATFORM)
5959endif
6060
6161# Go artifacts
62- GO_ARTIFACTS := $(addprefix cartesi-rollups-,node cli evm-reader advancer validator claimer jsonrpc-api prt)
62+ GO_ARTIFACTS := $(addprefix cartesi-rollups-,node cli evm-reader advancer validator claimer jsonrpc-api prt machine-tool )
6363
6464# fixme(vfusco): path on all oses
6565CGO_CFLAGS: = -I$(PREFIX ) /include
129129 @echo export CARTESI_CONTRACTS_APPLICATION_FACTORY_ADDRESS=" 0xC549F89cF1ca43eDDECC64Ac2208F4b283B1c483"
130130 @echo export CARTESI_CONTRACTS_SELF_HOSTED_APPLICATION_FACTORY_ADDRESS=" 0x6145C5996a71a379E030aEb0440df79D60833418"
131131 @echo export CARTESI_CONTRACTS_DAVE_APP_FACTORY_ADDRESS=" 0x33FFf0b681c90664dD048a60400AE2D827a4c5bb"
132+ @echo export CARTESI_DEVNET_ERC20_PORTAL_ADDRESS=" 0x22E57511C30CcE6CDaa742E13CE3b774fDC663b1"
133+ @echo export CARTESI_DEVNET_TEST_ERC20_ADDRESS=" 0x88A2120B7068E78692C8fd12E751d610B6377E4d"
132134 @echo export CARTESI_DEVNET_WITHDRAWAL_OUTPUT_BUILDER_ADDRESS=" 0x0745787835A019cd4dae8EDB541Fbc0647793d63"
133135 @echo export CARTESI_AUTH_MNEMONIC=\" test test test test test test test test test test test junk\"
134136 @echo export CARTESI_DATABASE_CONNECTION=" postgres://postgres:password@localhost:5432/rollupsdb?sslmode=disable"
@@ -295,6 +297,8 @@ reject-loop-dapp: applications/reject-loop-dapp ## Reject loop dapp
295297
296298exception-loop-dapp : applications/exception-loop-dapp # # Exception loop dapp
297299
300+ erc20-withdrawal-dapp : applications/erc20-withdrawal-dapp # # ERC-20 withdrawal test dapp
301+
298302applications/reject-loop-dapp : # # Create reject-loop-dapp test application
299303 @echo " Creating reject-loop-dapp test application"
300304 @mkdir -p applications
@@ -305,6 +309,18 @@ applications/exception-loop-dapp: ## Create exception-loop-dapp test application
305309 @mkdir -p applications
306310 @cartesi-machine --ram-length=128Mi --store=applications/exception-loop-dapp --final-hash -- ioctl-echo-loop --vouchers=1 --notices=1 --reports=1 --exception=1 --verbose=1
307311
312+ applications/erc20-withdrawal-dapp : test/dapps/erc20-withdrawal/install.sh # # Create ERC-20 withdrawal test application
313+ @echo " Creating ERC-20 withdrawal test application"
314+ @mkdir -p applications
315+ @PORTAL=$$ {CARTESI_DEVNET_ERC20_PORTAL_ADDRESS:-0x22E57511C30CcE6CDaa742E13CE3b774fDC663b1}; \
316+ TOKEN=$$ {CARTESI_DEVNET_TEST_ERC20_ADDRESS:-0x88A2120B7068E78692C8fd12E751d610B6377E4d}; \
317+ cartesi-machine --ram-length=128Mi \
318+ --flash-drive=label:accounts,length:4Mi,mke2fs:false,mount:false,user:dapp \
319+ --env=TRUSTED_ERC20_PORTAL=$$ PORTAL \
320+ --env=TRUSTED_ERC20_TOKEN=$$ TOKEN \
321+ --append-init-file=test/dapps/erc20-withdrawal/install.sh \
322+ --store=applications/erc20-withdrawal-dapp --final-hash -- /usr/local/bin/erc20-withdrawal-dapp
323+
308324deploy-echo-dapp : applications/echo-dapp # # Deploy echo-dapp test application
309325 @echo " Deploying echo-dapp test application"
310326 @./cartesi-rollups-cli deploy application echo-dapp applications/echo-dapp/
@@ -321,6 +337,46 @@ deploy-prt-echo-dapp: applications/echo-dapp ## Deploy echo-dapp test applicatio
321337 @echo " Deploying echo-dapp test application"
322338 @./cartesi-rollups-cli deploy application prt-echo-dapp applications/echo-dapp/ --prt
323339
340+ deploy-erc20-withdrawal-dapp : applications/erc20-withdrawal-dapp # # Deploy ERC-20 withdrawal test application
341+ @set -e; \
342+ APP=$$ {APP:-erc20-withdrawal-dapp}; \
343+ GUARDIAN=$$ {GUARDIAN:-0x70997970C51812dc3A010C7d01b50e0d17dc79C8}; \
344+ BUILDER=$$ {CARTESI_DEVNET_WITHDRAWAL_OUTPUT_BUILDER_ADDRESS:-0x0745787835A019cd4dae8EDB541Fbc0647793d63}; \
345+ DRIVE_START_INDEX=$$(jq -r '.config.flash_drive[] | select(.length == 4194304 ) | (.start / 4194304 | floor)' \
346+ applications/erc20-withdrawal-dapp/config.json); \
347+ WITHDRAWAL_CONFIG=$$(jq -cn \
348+ --arg guardian " $$ GUARDIAN" \
349+ --arg builder " $$ BUILDER" \
350+ --argjson drive " $$ DRIVE_START_INDEX" \
351+ ' {guardian:$$guardian,log2_leaves_per_account:0,log2_max_num_of_accounts:17,accounts_drive_start_index:$$drive,withdrawal_output_builder:$$builder}' ); \
352+ echo " Deploying $$ APP with accounts-drive start index $$ DRIVE_START_INDEX" ; \
353+ ./cartesi-rollups-cli deploy application " $$ APP" applications/erc20-withdrawal-dapp \
354+ --salt " $$ (openssl rand -hex 32)" \
355+ --withdrawal-config " $$ WITHDRAWAL_CONFIG" \
356+ --enable=false; \
357+ ./cartesi-rollups-cli app execution-parameters set " $$ APP" snapshot_policy EVERY_EPOCH; \
358+ ./cartesi-rollups-cli app status " $$ APP" enabled --yes
359+
360+ fund-wallet : # # Fund the default Anvil wallet with ETH and test ERC-20
361+ @set -e; \
362+ RPC_URL=$$ {CARTESI_BLOCKCHAIN_HTTP_ENDPOINT:-http://localhost:8545}; \
363+ TOKEN=$$ {CARTESI_DEVNET_TEST_ERC20_ADDRESS:-0x88A2120B7068E78692C8fd12E751d610B6377E4d}; \
364+ WALLET=$$ {WALLET:-$$(cast rpc --rpc-url "$$RPC_URL" eth_accounts | jq -r '.[0]' ) }; \
365+ ETH_WEI=$$ {ETH_WEI:-0x8ac7230489e80000}; \
366+ TOKEN_AMOUNT=$$ {TOKEN_AMOUNT:-1000000}; \
367+ echo " Funding $$ WALLET with $$ ETH_WEI wei" ; \
368+ cast rpc --rpc-url " $$ RPC_URL" anvil_setBalance " $$ WALLET" " $$ ETH_WEI" > /dev/null; \
369+ echo " Minting $$ TOKEN_AMOUNT test ERC-20 units to $$ WALLET" ; \
370+ cast send --rpc-url " $$ RPC_URL" --from " $$ WALLET" --unlocked " $$ TOKEN" " mint(uint256)" " $$ TOKEN_AMOUNT" > /dev/null
371+
372+ withdraw-wallet : cartesi-rollups-cli # # Send a test withdrawal request from the current signer
373+ @set -e; \
374+ APP=$$ {APP:-erc20-withdrawal-dapp}; \
375+ AMOUNT=$$ {AMOUNT:-25}; \
376+ PAYLOAD=$$(printf '0x01%016x' "$$AMOUNT" ) ; \
377+ echo " Sending withdrawal request to $$ APP: amount=$$ AMOUNT payload=$$ PAYLOAD" ; \
378+ ./cartesi-rollups-cli send " $$ APP" " $$ PAYLOAD" --hex --yes --json
379+
324380# Temporary test dependencies target while we are not using distribution packages
325381DOWNLOADS_DIR = test/downloads
326382CARTESI_TEST_MACHINE_IMAGES = $(DOWNLOADS_DIR ) /linux.bin
@@ -449,7 +505,7 @@ test-with-compose: ## Run all tests using docker compose with auto-shutdown
449505 @$(MAKE ) unit-test-with-compose
450506 @$(MAKE ) integration-test-with-compose
451507
452- integration-test-local : build echo-dapp reject-loop-dapp exception-loop-dapp # # Run integration tests locally (requires: make start && eval $$(make env))
508+ integration-test-local : build cartesi-rollups-machine-tool echo-dapp reject-loop-dapp exception-loop-dapp erc20-withdrawal -dapp # # Run integration tests locally (requires: make start && eval $$(make env))
453509 @cartesi-rollups-cli db init
454510 @if lsof -ti:10000 > /dev/null 2>&1 ; then \
455511 echo " Killing stale node on port 10000..." ; \
@@ -459,6 +515,7 @@ integration-test-local: build echo-dapp reject-loop-dapp exception-loop-dapp ##
459515 @export CARTESI_TEST_DAPP_PATH=$(CURDIR ) /applications/echo-dapp; \
460516 export CARTESI_TEST_REJECT_DAPP_PATH=$(CURDIR ) /applications/reject-loop-dapp; \
461517 export CARTESI_TEST_EXCEPTION_DAPP_PATH=$(CURDIR ) /applications/exception-loop-dapp; \
518+ export CARTESI_TEST_ERC20_WITHDRAWAL_DAPP_PATH=$(CURDIR ) /applications/erc20-withdrawal-dapp; \
462519 $(MAKE ) integration-test
463520
464521deploy-load-test-apps : applications/echo-dapp # # Deploy 3 echo-dapp instances for load testing
@@ -516,7 +573,7 @@ build-debian-package: install
516573 dpkg-deb -Zxz --root-owner-group --build $(DESTDIR ) $(DEB_FILENAME )
517574
518575.PHONY : \
519- build build-go $(GO_ARTIFACTS ) \
576+ build build-go $(GO_ARTIFACTS ) cartesi-rollups-machine-tool \
520577 clean clean-go clean-contracts clean-docs clean-devnet-files clean-dapps clean-test-dependencies clean-debian-packages \
521578 test unit-test unit-test-with-compose integration-test integration-test-with-compose integration-test-local test-with-compose ci-test coverage-report \
522579 generate generate-contracts generate-config generate-inspect check-generate generate-db \
@@ -525,4 +582,5 @@ build-debian-package: install
525582 devnet image tester-image debian-packager run-with-compose shutdown-compose \
526583 start start-devnet start-postgres stop stop-devnet stop-postgres restart restart-devnet restart-postgres \
527584 install copy-debian-package build-debian-package \
585+ deploy-erc20-withdrawal-dapp fund-wallet withdraw-wallet \
528586 env help version
0 commit comments