@@ -29,12 +29,73 @@ echo "Containers size: $START_CONTAINERS_SIZE"
2929echo " Volumes size: $START_VOLUMES_SIZE "
3030echo " =============================================="
3131
32- # Your existing script starts here
3332container_running () {
3433 docker ps --format ' {{.Names}}' | grep -q " ^$1 $"
3534 return $?
3635}
3736
37+ # Function to fund the escrow smart contract
38+ # 1. first read .env variables from local-network/.env
39+ # 2. then read contract addresses from local-network/contracts.json
40+ # 3. finally, use the cast command to approve and deposit GRT to the escrow
41+ # this should be done just after deploying the gateway
42+ # otherwise it does not move forward in its setup process
43+ # causing false error during deployment of our local testnet
44+ fund_escrow () {
45+ echo " Funding escrow for sender..."
46+
47+ if [ -f " local-network/.env" ]; then
48+ source local-network/.env
49+ else
50+ echo " Error: local-network/.env file not found"
51+ return 1
52+ fi
53+
54+ GRAPH_TOKEN=$( jq -r ' ."1337".GraphToken.address' local-network/contracts.json)
55+ TAP_ESCROW=$( jq -r ' ."1337".TAPEscrow.address' local-network/contracts.json)
56+
57+ if [ -z " $GRAPH_TOKEN " ] || [ -z " $TAP_ESCROW " ]; then
58+ echo " Error: Could not read contract addresses from contracts.json"
59+ return 1
60+ fi
61+
62+ # Use constants from .env
63+ SENDER_ADDRESS=" $ACCOUNT0_ADDRESS "
64+ SENDER_KEY=" $ACCOUNT0_SECRET "
65+ AMOUNT=" 10000000000000000000"
66+
67+ echo " Using GraphToken at: $GRAPH_TOKEN "
68+ echo " Using TapEscrow at: $TAP_ESCROW "
69+ echo " Using sender address: $SENDER_ADDRESS "
70+
71+ # Approve GRT for escrow
72+ echo " Approving GRT..."
73+ docker exec chain cast send \
74+ --rpc-url http://localhost:8545 \
75+ --private-key $SENDER_KEY \
76+ $GRAPH_TOKEN " approve(address,uint256)" $TAP_ESCROW $AMOUNT
77+
78+ # Deposit to escrow
79+ echo " Depositing to escrow..."
80+ docker exec chain cast send \
81+ --rpc-url http://localhost:8545 \
82+ --private-key $SENDER_KEY \
83+ $TAP_ESCROW " deposit(address,uint256)" $SENDER_ADDRESS $AMOUNT
84+
85+ # Verify deposit
86+ echo " Verifying deposit..."
87+ ESCROW_BALANCE=$( docker exec chain cast call \
88+ --rpc-url http://localhost:8545 \
89+ $TAP_ESCROW " getEscrowAmount(address,address)(uint256)" $SENDER_ADDRESS $SENDER_ADDRESS )
90+ echo " Escrow balance: $ESCROW_BALANCE "
91+ if [[ " $ESCROW_BALANCE " == " 0" ]]; then
92+ echo " Error: Failed to fund escrow"
93+ return 1
94+ fi
95+ echo " Successfully funded escrow"
96+ return 0
97+ }
98+
3899if container_running " indexer-service" && container_running " tap-agent" && container_running " gateway" ; then
39100 echo " ====================================================================================="
40101 echo " All services are already running. To test changes to your indexer code, you can use:"
@@ -171,10 +232,6 @@ rm docker-compose.override.yml
171232timeout 30 bash -c ' until docker ps | grep indexer | grep -q healthy; do sleep 5; done'
172233timeout 30 bash -c ' until docker ps | grep tap-agent | grep -q healthy; do sleep 5; done'
173234
174- # Mine some blocks
175- # This is important for the gateway
176- (./local-network/scripts/mine-block.sh 10) 2> /dev/null || true
177-
178235echo " Building gateway image..."
179236docker build -t local-gateway:latest ./local-network/gateway
180237
@@ -190,6 +247,18 @@ docker run -d --name gateway \
190247
191248echo " Waiting for gateway to be available..."
192249
250+ # Try to fund escrow up to 3 times
251+ for i in {1..3}; do
252+ echo " Attempt $i to fund escrow..."
253+ if fund_escrow; then
254+ break
255+ fi
256+ if [ $i -lt 3 ]; then
257+ echo " Waiting before retry..."
258+ sleep 10
259+ fi
260+ done
261+
193262# Ensure gateway is ready before testing
194263timeout 100 bash -c ' until curl -f http://localhost:7700/ > /dev/null 2>&1; do echo "Waiting for gateway service..."; sleep 5; done'
195264
0 commit comments