@cardano-sdk/e2e 0.17.2-patch.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.env.example +1 -1
  2. package/CHANGELOG.md +29 -2
  3. package/dist/cjs/factories.d.ts.map +1 -1
  4. package/dist/cjs/factories.js +3 -6
  5. package/dist/cjs/factories.js.map +1 -1
  6. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  7. package/dist/esm/factories.d.ts.map +1 -1
  8. package/dist/esm/factories.js +3 -6
  9. package/dist/esm/factories.js.map +1 -1
  10. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  11. package/docker-compose.yml +8 -0
  12. package/local-network/README.md +1 -1
  13. package/local-network/scripts/cardano-node-ogmios.sh +1 -1
  14. package/local-network/scripts/get-epoch.sh +0 -1
  15. package/local-network/scripts/make-babbage.sh +61 -61
  16. package/local-network/scripts/mint-handles.sh +1 -1
  17. package/local-network/scripts/mint-tokens.sh +0 -1
  18. package/local-network/scripts/mnemonic_keys.sh +7 -7
  19. package/local-network/scripts/nodes-configuration.sh +1 -1
  20. package/local-network/scripts/plutus-transaction.sh +8 -10
  21. package/local-network/scripts/pools/update-node-utils.sh +221 -232
  22. package/local-network/scripts/reference-input-transaction.sh +30 -38
  23. package/local-network/scripts/start.sh +1 -2
  24. package/local-network/templates/babbage/byron-configuration.yaml +9 -14
  25. package/package.json +20 -20
  26. package/src/factories.ts +3 -14
  27. package/test/k6/README.md +3 -4
  28. package/test/long-running/delegation-rewards.test.ts +104 -58
  29. package/test/projection/offline-fork.test.ts +1 -1
  30. package/test/projection/single-tenant-utxo.test.ts +2 -2
  31. package/test/tsconfig.json +1 -0
  32. package/test/web-extension/extension/background/cip30.ts +5 -1
  33. package/test/web-extension/specs/wallet.spec.ts +2 -2
  34. package/test/tsconfig.tsbuildinfo +0 -1
@@ -71,6 +71,14 @@ services:
71
71
  - ./local-network/config/network:/config
72
72
  - sdk-ipc:/sdk-ipc
73
73
 
74
+ handle-provider-server:
75
+ environment:
76
+ HANDLE_POLICY_IDS_FILE: /sdk-ipc/handle_policy_ids
77
+ TOKEN_METADATA_SERVER_URL: stub://
78
+ volumes:
79
+ - ./local-network/config/network:/config
80
+ - sdk-ipc:/sdk-ipc
81
+
74
82
  volumes:
75
83
  sdk-ipc:
76
84
  driver: local
@@ -32,7 +32,7 @@ Supported OS:
32
32
  - `maxTxSize`: Maximum transaction size (default 16kB).
33
33
  - `initialFunds`: How initial ADA is distributed.
34
34
  - `epochLength`: For the epoch duration.
35
-
35
+
36
36
  2. `templates/babbage/alonzo-babbage-test-genesis.json`
37
37
 
38
38
  - `maxTxExUnits`: Maximum ExUnits per transaction.
@@ -7,7 +7,7 @@
7
7
  # connect / reconnect to the ogmios server.
8
8
 
9
9
  # If the test set the file, wait for its removal before starting the container
10
- while [ -f /sdk-ipc/prevent_ogmios ] ; do sleep 10 ; done
10
+ while [ -f /sdk-ipc/prevent_ogmios ]; do sleep 10; done
11
11
 
12
12
  # Start the cardano-node-ogmios as normal
13
13
  /root/cardano-node-ogmios.sh
@@ -15,4 +15,3 @@ if [ ! -S "$CARDANO_NODE_SOCKET_PATH" ]; then
15
15
  else
16
16
  cardano-cli query tip --testnet-magic 888 | jq .epoch
17
17
  fi
18
-
@@ -16,8 +16,8 @@ source ./scripts/nodes-configuration.sh
16
16
 
17
17
  UNAME=$(uname -s) SED=
18
18
  case $UNAME in
19
- Darwin ) SED="gsed";;
20
- Linux ) SED="sed";;
19
+ Darwin) SED="gsed" ;;
20
+ Linux) SED="sed" ;;
21
21
  esac
22
22
 
23
23
  case $(uname) in
@@ -40,10 +40,12 @@ sprocket() {
40
40
 
41
41
  UNAME=$(uname -s) DATE=
42
42
  case $UNAME in
43
- Darwin ) DATE="gdate";;
44
- Linux ) DATE="date";;
45
- MINGW64_NT* ) UNAME="Windows_NT"
46
- DATE="date";;
43
+ Darwin) DATE="gdate" ;;
44
+ Linux) DATE="date" ;;
45
+ MINGW64_NT*)
46
+ UNAME="Windows_NT"
47
+ DATE="date"
48
+ ;;
47
49
  esac
48
50
 
49
51
  NETWORK_MAGIC=888
@@ -54,13 +56,13 @@ START_TIME="$(${DATE} -d "now + 30 seconds" +%s)"
54
56
  ROOT=network-files
55
57
 
56
58
  if test -d "${ROOT}/byron-gen-command"; then
57
- echo "Existing \"${ROOT}/byron-gen-command\" directory will be deleted"
59
+ echo "Existing \"${ROOT}/byron-gen-command\" directory will be deleted"
58
60
  rm -rf "${ROOT}/byron-gen-command"
59
61
  fi
60
62
 
61
63
  mkdir -p "${ROOT}"
62
64
 
63
- cat > "${ROOT}/byron.genesis.spec.json" <<EOF
65
+ cat >"${ROOT}/byron.genesis.spec.json" <<EOF
64
66
  {
65
67
  "heavyDelThd": "300000000000",
66
68
  "maxBlockSize": "2000000",
@@ -107,26 +109,26 @@ cp templates/babbage/alonzo-babbage-test-genesis.json "${ROOT}/genesis.alonzo.sp
107
109
  cp templates/babbage/byron-configuration.yaml "${ROOT}/configuration.yaml"
108
110
 
109
111
  $SED -i "${ROOT}/configuration.yaml" \
110
- -e 's/Protocol: RealPBFT/Protocol: Cardano/' \
111
- -e 's|GenesisFile: genesis.json|ByronGenesisFile: genesis/byron/genesis.json|' \
112
- -e '/ByronGenesisFile/ aShelleyGenesisFile: genesis/shelley/genesis.json' \
113
- -e '/ByronGenesisFile/ aAlonzoGenesisFile: genesis/shelley/genesis.alonzo.json' \
114
- -e 's/RequiresNoMagic/RequiresMagic/' \
115
- -e 's/LastKnownBlockVersion-Major: 0/LastKnownBlockVersion-Major: 6/' \
116
- -e 's/LastKnownBlockVersion-Minor: 2/LastKnownBlockVersion-Minor: 0/' \
117
- -e "s/minSeverity: Info/minSeverity: ${CARDANO_NODE_LOG_LEVEL}/" \
118
- -e "s/cardano.node.ChainDB: Notice/cardano.node.ChainDB: ${CARDANO_NODE_CHAINDB_LOG_LEVEL}/"
119
-
120
- echo "" >> "${ROOT}/configuration.yaml"
121
- echo "PBftSignatureThreshold: 0.6" >> "${ROOT}/configuration.yaml"
122
- echo "" >> "${ROOT}/configuration.yaml"
123
-
124
- echo "TestShelleyHardForkAtEpoch: 0" >> "${ROOT}/configuration.yaml"
125
- echo "TestAllegraHardForkAtEpoch: 0" >> "${ROOT}/configuration.yaml"
126
- echo "TestMaryHardForkAtEpoch: 0" >> "${ROOT}/configuration.yaml"
127
- echo "TestAlonzoHardForkAtEpoch: 0" >> "${ROOT}/configuration.yaml"
128
- echo "TestBabbageHardForkAtEpoch: 0" >> "${ROOT}/configuration.yaml"
129
- echo "TestEnableDevelopmentNetworkProtocols: True" >> "${ROOT}/configuration.yaml"
112
+ -e 's/Protocol: RealPBFT/Protocol: Cardano/' \
113
+ -e 's|GenesisFile: genesis.json|ByronGenesisFile: genesis/byron/genesis.json|' \
114
+ -e '/ByronGenesisFile/ aShelleyGenesisFile: genesis/shelley/genesis.json' \
115
+ -e '/ByronGenesisFile/ aAlonzoGenesisFile: genesis/shelley/genesis.alonzo.json' \
116
+ -e 's/RequiresNoMagic/RequiresMagic/' \
117
+ -e 's/LastKnownBlockVersion-Major: 0/LastKnownBlockVersion-Major: 6/' \
118
+ -e 's/LastKnownBlockVersion-Minor: 2/LastKnownBlockVersion-Minor: 0/' \
119
+ -e "s/minSeverity: Info/minSeverity: ${CARDANO_NODE_LOG_LEVEL}/" \
120
+ -e "s/cardano.node.ChainDB: Notice/cardano.node.ChainDB: ${CARDANO_NODE_CHAINDB_LOG_LEVEL}/"
121
+
122
+ echo "" >>"${ROOT}/configuration.yaml"
123
+ echo "PBftSignatureThreshold: 0.6" >>"${ROOT}/configuration.yaml"
124
+ echo "" >>"${ROOT}/configuration.yaml"
125
+
126
+ echo "TestShelleyHardForkAtEpoch: 0" >>"${ROOT}/configuration.yaml"
127
+ echo "TestAllegraHardForkAtEpoch: 0" >>"${ROOT}/configuration.yaml"
128
+ echo "TestMaryHardForkAtEpoch: 0" >>"${ROOT}/configuration.yaml"
129
+ echo "TestAlonzoHardForkAtEpoch: 0" >>"${ROOT}/configuration.yaml"
130
+ echo "TestBabbageHardForkAtEpoch: 0" >>"${ROOT}/configuration.yaml"
131
+ echo "TestEnableDevelopmentNetworkProtocols: True" >>"${ROOT}/configuration.yaml"
130
132
 
131
133
  # Copy the cost mode
132
134
  cardano-cli genesis create-staked --genesis-dir "${ROOT}" \
@@ -153,25 +155,24 @@ mv "${ROOT}/byron-gen-command/genesis.json" "${ROOT}/genesis/byron/genesis-wrong
153
155
  mv "${ROOT}/genesis.alonzo.json" "${ROOT}/genesis/shelley/genesis.alonzo.json"
154
156
  mv "${ROOT}/genesis.json" "${ROOT}/genesis/shelley/genesis.json"
155
157
 
156
- jq --raw-output ".protocolConsts.protocolMagic = ${NETWORK_MAGIC}" "${ROOT}/genesis/byron/genesis-wrong.json" > "${ROOT}/genesis/byron/genesis.json"
158
+ jq --raw-output ".protocolConsts.protocolMagic = ${NETWORK_MAGIC}" "${ROOT}/genesis/byron/genesis-wrong.json" >"${ROOT}/genesis/byron/genesis.json"
157
159
 
158
160
  rm "${ROOT}/genesis/byron/genesis-wrong.json"
159
161
 
160
-
161
162
  $SED -i "${ROOT}/genesis/shelley/genesis.json" \
162
- -e 's/"slotLength": 1/"slotLength": 0.2/' \
163
- -e 's/"activeSlotsCoeff": 5.0e-2/"activeSlotsCoeff": 0.1/' \
164
- -e 's/"securityParam": 2160/"securityParam": 10/' \
165
- -e 's/"epochLength": 432000/"epochLength": 1000/' \
166
- -e "s/\"maxLovelaceSupply\": 0/\"maxLovelaceSupply\": ${MAX_SUPPLY}/" \
167
- -e 's/"minFeeA": 1/"minFeeA": 44/' \
168
- -e 's/"minFeeB": 0/"minFeeB": 155381/' \
169
- -e 's/"minUTxOValue": 0/"minUTxOValue": 1000000/' \
170
- -e 's/"decentralisationParam": 1.0/"decentralisationParam": 0.7/' \
171
- -e 's/"major": 0/"major": 7/' \
172
- -e 's/"rho": 0.0/"rho": 0.1/' \
173
- -e 's/"tau": 0.0/"tau": 0.1/' \
174
- -e 's/"updateQuorum": 5/"updateQuorum": 2/'
163
+ -e 's/"slotLength": 1/"slotLength": 0.2/' \
164
+ -e 's/"activeSlotsCoeff": 5.0e-2/"activeSlotsCoeff": 0.1/' \
165
+ -e 's/"securityParam": 2160/"securityParam": 10/' \
166
+ -e 's/"epochLength": 432000/"epochLength": 1000/' \
167
+ -e "s/\"maxLovelaceSupply\": 0/\"maxLovelaceSupply\": ${MAX_SUPPLY}/" \
168
+ -e 's/"minFeeA": 1/"minFeeA": 44/' \
169
+ -e 's/"minFeeB": 0/"minFeeB": 155381/' \
170
+ -e 's/"minUTxOValue": 0/"minUTxOValue": 1000000/' \
171
+ -e 's/"decentralisationParam": 1.0/"decentralisationParam": 0.7/' \
172
+ -e 's/"major": 0/"major": 7/' \
173
+ -e 's/"rho": 0.0/"rho": 0.1/' \
174
+ -e 's/"tau": 0.0/"tau": 0.1/' \
175
+ -e 's/"updateQuorum": 5/"updateQuorum": 2/'
175
176
 
176
177
  for NODE_ID in ${SP_NODES_ID}; do
177
178
  TARGET="${ROOT}/node-sp${NODE_ID}"
@@ -186,7 +187,7 @@ for NODE_ID in ${SP_NODES_ID}; do
186
187
  mv "${ROOT}/byron-gen-command/delegate-keys.${BYRON_KEYS_POSFIX}.key" "${TARGET}/byron-delegate.key"
187
188
  mv "${ROOT}/byron-gen-command/delegation-cert.${BYRON_KEYS_POSFIX}.json" "${TARGET}/byron-delegation.cert"
188
189
 
189
- echo "${PORT}" > "${TARGET}/port"
190
+ echo "${PORT}" >"${TARGET}/port"
190
191
 
191
192
  done
192
193
 
@@ -194,14 +195,13 @@ done
194
195
  for ID in ${SP_NODES_ID}; do
195
196
  port="$(("$ID" + 3001))"
196
197
 
197
- if [ "$ID" -ge "$(("$NUM_SP_NODES" - 1))" ] # Wrap around
198
- then
198
+ if [ "$ID" -ge "$(("$NUM_SP_NODES" - 1))" ]; then # Wrap around
199
199
  port="$(("$port" - "$(("$NUM_SP_NODES" - 1))"))"
200
200
  fi
201
201
 
202
202
  secondPort="$(("$port" + 1))"
203
203
 
204
- cat > "${ROOT}/node-sp${ID}/topology.json" <<EOF
204
+ cat >"${ROOT}/node-sp${ID}/topology.json" <<EOF
205
205
  {
206
206
  "Producers": [
207
207
  {
@@ -224,9 +224,9 @@ for NODE in ${SP_NODES}; do
224
224
  (
225
225
  echo "#!/usr/bin/env bash"
226
226
  echo ""
227
- echo "export PATH=\$PWD/bin:\$PATH"
227
+ echo 'export PATH=$PWD/bin:$PATH'
228
228
  echo ""
229
- echo "cardano-node run \\"
229
+ echo 'cardano-node run \'
230
230
  echo " --config '${ROOT}/configuration.yaml' \\"
231
231
  echo " --topology '${ROOT}/${NODE}/topology.json' \\"
232
232
  echo " --database-path '${ROOT}/${NODE}/db' \\"
@@ -240,7 +240,7 @@ for NODE in ${SP_NODES}; do
240
240
  echo " | tee -a '${ROOT}/${NODE}/node.log'"
241
241
  echo ""
242
242
  echo "wait"
243
- ) > "${ROOT}/${NODE}.sh"
243
+ ) >"${ROOT}/${NODE}.sh"
244
244
 
245
245
  chmod a+x "${ROOT}/${NODE}.sh"
246
246
 
@@ -259,9 +259,9 @@ echo "Byron genesis hash: $byronGenesisHash"
259
259
  echo "Shelley genesis hash: $shelleyGenesisHash"
260
260
  echo "Alonzo genesis hash: $alonzoGenesisHash"
261
261
 
262
- $SED -i -E "s/ByronGenesisHash: \".*\"/ByronGenesisHash: \"${byronGenesisHash}\"/" ${ROOT}/configuration.yaml
263
- $SED -i -E "s/ShelleyGenesisHash: \".*\"/ShelleyGenesisHash: \"${shelleyGenesisHash}\"/" ${ROOT}/configuration.yaml
264
- $SED -i -E "s/AlonzoGenesisHash: \".*\"/AlonzoGenesisHash: \"${alonzoGenesisHash}\"/" ${ROOT}/configuration.yaml
262
+ $SED -i -E "s/ByronGenesisHash: '.*'/ByronGenesisHash: '${byronGenesisHash}'/" ${ROOT}/configuration.yaml
263
+ $SED -i -E "s/ShelleyGenesisHash: '.*'/ShelleyGenesisHash: '${shelleyGenesisHash}'/" ${ROOT}/configuration.yaml
264
+ $SED -i -E "s/AlonzoGenesisHash: '.*'/AlonzoGenesisHash: '${alonzoGenesisHash}'/" ${ROOT}/configuration.yaml
265
265
 
266
266
  # Create config folder
267
267
  rm -rf ./config/*
@@ -293,17 +293,17 @@ cp "${ROOT}"/genesis/shelley/genesis.alonzo.json ./config/network/genesis/alonzo
293
293
 
294
294
  mkdir -p "${ROOT}/run"
295
295
 
296
- echo "#!/usr/bin/env bash" > "${ROOT}/run/all.sh"
297
- echo "" >> "${ROOT}/run/all.sh"
298
- echo "" >> "${ROOT}/run/all.sh"
299
- echo "export PATH=\$PWD/bin:\$PATH" >> "${ROOT}/run/all.sh"
300
- echo "" >> "${ROOT}/run/all.sh"
296
+ echo "#!/usr/bin/env bash" >"${ROOT}/run/all.sh"
297
+ echo "" >>"${ROOT}/run/all.sh"
298
+ echo "" >>"${ROOT}/run/all.sh"
299
+ echo 'export PATH=$PWD/bin:$PATH' >>"${ROOT}/run/all.sh"
300
+ echo "" >>"${ROOT}/run/all.sh"
301
301
 
302
302
  for NODE in ${SP_NODES}; do
303
- echo "$ROOT/${NODE}.sh &" >> "${ROOT}/run/all.sh"
303
+ echo "$ROOT/${NODE}.sh &" >>"${ROOT}/run/all.sh"
304
304
  done
305
- echo "" >> "${ROOT}/run/all.sh"
306
- echo "wait" >> "${ROOT}/run/all.sh"
305
+ echo "" >>"${ROOT}/run/all.sh"
306
+ echo "wait" >>"${ROOT}/run/all.sh"
307
307
 
308
308
  chmod a+x "${ROOT}/run/all.sh"
309
309
 
@@ -64,7 +64,7 @@ wait_tx_complete() {
64
64
  return 1
65
65
  }
66
66
 
67
- echo $policyid > /sdk-ipc/handle_policy_ids
67
+ echo $policyid >/sdk-ipc/handle_policy_ids
68
68
  destAddr="addr_test1qr0c3frkem9cqn5f73dnvqpena27k2fgqew6wct9eaka03agfwkvzr0zyq7nqvcj24zehrshx63zzdxv24x3a4tcnfeq9zwmn7"
69
69
  utxo=$(cardano-cli query utxo --address "$addr" --testnet-magic 888 | awk 'NR == 3 {printf("%s#%s", $1, $2)}')
70
70
 
@@ -62,7 +62,6 @@ for i in "${!TOKENS[@]}"; do
62
62
  tokenList="${tokenList}+${AMOUNT} ${currencySymbol}.${TOKENS[i]}"
63
63
  done
64
64
 
65
-
66
65
  cardano-cli transaction build \
67
66
  --babbage-era \
68
67
  --change-address "$addr" \
@@ -1,13 +1,13 @@
1
1
  #!/bin/bash
2
2
  # Generating pair of keys for provided mnemonic
3
3
 
4
- echo "vacant violin soft weird deliver render brief always monitor general maid smart jelly core drastic erode echo there clump dizzy card filter option defense" > phrase.prv
5
- cat phrase.prv | cardano-address key from-recovery-phrase Shelley > rootkey.prv
6
- cat rootkey.prv | cardano-address key child 1852H/1815H/0H/0/0 > addr.prv
7
- cat rootkey.prv | cardano-address key child 1852H/1815H/0H/2/0 > stake.prv
8
- cat stake.prv | cardano-address key public --with-chain-code > stake.pub
9
- cat addr.prv | cardano-address key public --with-chain-code | cardano-address address payment --network-tag testnet > payment.addr
10
- cat payment.addr | cardano-address address delegation "$(cat stake.pub)" > base.addr
4
+ echo "vacant violin soft weird deliver render brief always monitor general maid smart jelly core drastic erode echo there clump dizzy card filter option defense" >phrase.prv
5
+ cat phrase.prv | cardano-address key from-recovery-phrase Shelley >rootkey.prv
6
+ cat rootkey.prv | cardano-address key child 1852H/1815H/0H/0/0 >addr.prv
7
+ cat rootkey.prv | cardano-address key child 1852H/1815H/0H/2/0 >stake.prv
8
+ cat stake.prv | cardano-address key public --with-chain-code >stake.pub
9
+ cat addr.prv | cardano-address key public --with-chain-code | cardano-address address payment --network-tag testnet >payment.addr
10
+ cat payment.addr | cardano-address address delegation "$(cat stake.pub)" >base.addr
11
11
  cardano-cli key convert-cardano-address-key --signing-key-file addr.prv --shelley-payment-key --out-file payment.skey
12
12
  cardano-cli key verification-key --signing-key-file payment.skey --verification-key-file Ext_ShelleyPayment.vkey
13
13
  cardano-cli key non-extended-key --extended-verification-key-file Ext_ShelleyPayment.vkey --verification-key-file payment.vkey
@@ -3,4 +3,4 @@
3
3
  AMOUNT_PER_NODE='10000000000000'
4
4
  NUM_SP_NODES=11
5
5
  SP_NODES_ID=$(seq 1 ${NUM_SP_NODES})
6
- SP_NODES=$(for i in ${SP_NODES_ID} ; do echo "node-sp${i}" ; done)
6
+ SP_NODES=$(for i in ${SP_NODES_ID}; do echo "node-sp${i}"; done)
@@ -21,16 +21,16 @@ clean() {
21
21
 
22
22
  getAddressBalance() {
23
23
  cardano-cli query utxo \
24
- --address "$1" \
25
- --testnet-magic 888 > fullUtxo.out
24
+ --address "$1" \
25
+ --testnet-magic 888 >fullUtxo.out
26
26
 
27
- tail -n +3 fullUtxo.out | sort -k3 -nr > balance.out
27
+ tail -n +3 fullUtxo.out | sort -k3 -nr >balance.out
28
28
 
29
29
  total_balance=0
30
30
  while read -r utxo; do
31
- utxo_balance=$(awk '{ print $3 }' <<< "${utxo}")
32
- total_balance=$(("$total_balance"+"$utxo_balance"))
33
- done < balance.out
31
+ utxo_balance=$(awk '{ print $3 }' <<<"${utxo}")
32
+ total_balance=$(("$total_balance" + "$utxo_balance"))
33
+ done <balance.out
34
34
 
35
35
  echo ${total_balance}
36
36
  }
@@ -72,8 +72,7 @@ cardano-cli transaction submit --testnet-magic 888 --tx-file tx-script.signed
72
72
 
73
73
  updatedBalance=$(getAddressBalance "$ALWAYS_SUCCEED_ADDR")
74
74
 
75
- while [ "$currentBalance" -eq "$updatedBalance" ]
76
- do
75
+ while [ "$currentBalance" -eq "$updatedBalance" ]; do
77
76
  updatedBalance=$(getAddressBalance "$ALWAYS_SUCCEED_ADDR")
78
77
  sleep 1
79
78
  done
@@ -106,8 +105,7 @@ cardano-cli transaction submit --testnet-magic 888 --tx-file test-alonzo.signed
106
105
 
107
106
  updatedBalance=$(getAddressBalance "$ALWAYS_SUCCEED_ADDR")
108
107
 
109
- while [ "$currentBalance" -eq "$updatedBalance" ]
110
- do
108
+ while [ "$currentBalance" -eq "$updatedBalance" ]; do
111
109
  updatedBalance=$(getAddressBalance "$ALWAYS_SUCCEED_ADDR")
112
110
  sleep 1
113
111
  done