1414 ADDRS ,
1515 CONTRACTS ,
1616 deploy_contract ,
17+ derive_new_account ,
1718 eth_to_bech32 ,
1819 parse_events ,
1920 parse_events_rpc ,
2526)
2627
2728RATIO = 10 ** 10
29+ RELAYER_CALLER = "0x6F1805D56bF05b7be10857F376A5b1c160C8f72C"
2830
2931
3032class Status (IntEnum ):
@@ -171,6 +173,17 @@ def prepare_network(
171173
172174 version = {"fee_version" : "ics29-1" , "app_version" : "ics20-1" }
173175 path = cronos .base_dir .parent / "relayer"
176+ w3 = cronos .w3
177+ acc = derive_new_account (2 )
178+ sender = acc .address
179+ # fund new sender to deploy contract with same address
180+ if w3 .eth .get_balance (sender , "latest" ) == 0 :
181+ fund = 3000000000000000000
182+ tx = {"to" : sender , "value" : fund , "gasPrice" : w3 .eth .gas_price }
183+ send_transaction (w3 , tx )
184+ assert w3 .eth .get_balance (sender , "latest" ) == fund
185+ caller = deploy_contract (w3 , CONTRACTS ["TestRelayer" ], key = acc .key ).address
186+ assert caller == RELAYER_CALLER , caller
174187 if is_hermes :
175188 hermes = Hermes (path .with_suffix (".toml" ))
176189 call_hermes_cmd (
@@ -333,7 +346,7 @@ def get_balances(chain, addr):
333346
334347def ibc_multi_transfer (ibc ):
335348 chains = [ibc .cronos .cosmos_cli (), ibc .chainmain .cosmos_cli ()]
336- users = [f"user{ i } " for i in range (1 , 21 )]
349+ users = [f"user{ i } " for i in range (1 , 51 )]
337350 addrs0 = [chains [0 ].address (user ) for user in users ]
338351 addrs1 = [chains [1 ].address (user ) for user in users ]
339352 denom0 = "basetcro"
@@ -413,10 +426,12 @@ def ibc_incentivized_transfer(ibc):
413426 receiver = chains [1 ].address ("signer2" )
414427 sender = chains [0 ].address ("signer2" )
415428 relayer = chains [0 ].address ("signer1" )
429+ relayer_caller = eth_to_bech32 (RELAYER_CALLER )
416430 amount = 1000
417431 fee_denom = "ibcfee"
418432 base_denom = "basetcro"
419433 old_amt_fee = chains [0 ].balance (relayer , fee_denom )
434+ old_amt_fee_caller = chains [0 ].balance (relayer_caller , fee_denom )
420435 old_amt_sender_fee = chains [0 ].balance (sender , fee_denom )
421436 old_amt_sender_base = chains [0 ].balance (sender , base_denom )
422437 old_amt_receiver_base = chains [1 ].balance (receiver , "basecro" )
@@ -456,7 +471,12 @@ def ibc_incentivized_transfer(ibc):
456471 def check_fee ():
457472 amount = chains [0 ].balance (relayer , fee_denom )
458473 if amount > old_amt_fee :
459- assert amount == old_amt_fee + 20
474+ amount_caller = chains [0 ].balance (relayer_caller , fee_denom )
475+ if amount_caller > 0 :
476+ assert amount_caller == old_amt_fee_caller + 10 , amount_caller
477+ assert amount == old_amt_fee + 10 , amount
478+ else :
479+ assert amount == old_amt_fee + 20 , amount
460480 return True
461481 else :
462482 return False
@@ -471,17 +491,10 @@ def check_fee():
471491 ], actual
472492 path = f"transfer/{ dst_channel } /{ base_denom } "
473493 denom_hash = hashlib .sha256 (path .encode ()).hexdigest ().upper ()
474- assert json .loads (
475- chains [0 ].raw (
476- "query" ,
477- "ibc-transfer" ,
478- "denom-trace" ,
479- denom_hash ,
480- node = ibc .chainmain .node_rpc (0 ),
481- output = "json" ,
482- )
483- )["denom_trace" ] == {"path" : f"transfer/{ dst_channel } " , "base_denom" : base_denom }
484- assert get_balances (ibc .chainmain , receiver ) == [
494+ denom_trace = chains [0 ].ibc_denom_trace (path , ibc .chainmain .node_rpc (0 ))
495+ assert denom_trace == {"path" : f"transfer/{ dst_channel } " , "base_denom" : base_denom }
496+ current = get_balances (ibc .chainmain , receiver )
497+ assert current == [
485498 {"denom" : "basecro" , "amount" : f"{ old_amt_receiver_base } " },
486499 {"denom" : f"ibc/{ denom_hash } " , "amount" : f"{ amount } " },
487500 ]
0 commit comments