@@ -123,10 +123,12 @@ pub fn execute(
123123 Ok ( Response :: default ( ) )
124124 }
125125 IbcUnionMsg :: OnRecvPacket {
126+ caller,
126127 packet,
127128 relayer,
128129 relayer_msg,
129130 } => {
131+ let caller = deps. api . addr_validate ( & caller) ?;
130132 let relayer = deps. api . addr_validate ( & relayer) ?;
131133 if EXECUTING_PACKET . exists ( deps. storage ) {
132134 Err ( ContractError :: AlreadyExecuting )
@@ -136,6 +138,7 @@ pub fn execute(
136138 wasm_execute (
137139 env. contract . address ,
138140 & ExecuteMsg :: InternalExecutePacket {
141+ caller,
139142 packet,
140143 relayer,
141144 relayer_msg,
@@ -147,16 +150,23 @@ pub fn execute(
147150 }
148151 }
149152 IbcUnionMsg :: OnAcknowledgementPacket {
153+ caller,
150154 packet,
151155 acknowledgement,
152156 relayer,
153157 } => {
158+ let caller = deps. api . addr_validate ( & caller) ?;
154159 let relayer = deps. api . addr_validate ( & relayer) ?;
155- acknowledge_packet ( deps, env, info, packet, relayer, acknowledgement)
160+ acknowledge_packet ( deps, env, info, caller , packet, relayer, acknowledgement)
156161 }
157- IbcUnionMsg :: OnTimeoutPacket { packet, relayer } => {
162+ IbcUnionMsg :: OnTimeoutPacket {
163+ caller,
164+ packet,
165+ relayer,
166+ } => {
167+ let caller = deps. api . addr_validate ( & caller) ?;
158168 let relayer = deps. api . addr_validate ( & relayer) ?;
159- timeout_packet ( deps, env, info, packet, relayer)
169+ timeout_packet ( deps, env, info, caller , packet, relayer)
160170 }
161171 IbcUnionMsg :: OnChannelCloseInit { .. }
162172 | IbcUnionMsg :: OnChannelCloseConfirm { .. } => {
@@ -168,14 +178,15 @@ pub fn execute(
168178 }
169179 }
170180 ExecuteMsg :: InternalExecutePacket {
181+ caller,
171182 packet,
172183 relayer,
173184 relayer_msg,
174185 } => {
175186 if info. sender != env. contract . address {
176187 Err ( ContractError :: OnlySelf )
177188 } else {
178- execute_packet ( deps, env, info, packet, relayer, relayer_msg)
189+ execute_packet ( deps, env, info, caller , packet, relayer, relayer_msg)
179190 }
180191 }
181192 ExecuteMsg :: InternalWriteAck { ack } => {
@@ -265,6 +276,7 @@ fn timeout_packet(
265276 deps : DepsMut ,
266277 env : Env ,
267278 info : MessageInfo ,
279+ caller : Addr ,
268280 packet : Packet ,
269281 relayer : Addr ,
270282) -> Result < Response , ContractError > {
@@ -290,6 +302,7 @@ fn timeout_packet(
290302 deps,
291303 env,
292304 info,
305+ caller,
293306 packet,
294307 relayer,
295308 zkgm_packet. salt . into ( ) ,
@@ -305,6 +318,7 @@ fn timeout_internal(
305318 mut deps : DepsMut ,
306319 env : Env ,
307320 info : MessageInfo ,
321+ caller : Addr ,
308322 packet : Packet ,
309323 relayer : Addr ,
310324 salt : H256 ,
@@ -334,6 +348,7 @@ fn timeout_internal(
334348 deps. branch ( ) ,
335349 env. clone ( ) ,
336350 info. clone ( ) ,
351+ caller. clone ( ) ,
337352 packet. clone ( ) ,
338353 relayer. clone ( ) ,
339354 derive_batch_salt ( i. try_into ( ) . unwrap ( ) , salt) ,
@@ -354,7 +369,7 @@ fn timeout_internal(
354369 } ) ;
355370 }
356371 let multiplex = Multiplex :: abi_decode_params ( & instruction. operand , true ) ?;
357- timeout_multiplex ( deps, packet, relayer, path, multiplex)
372+ timeout_multiplex ( deps, caller , packet, relayer, path, multiplex)
358373 }
359374 _ => Err ( ContractError :: UnknownOpcode {
360375 opcode : instruction. opcode ,
@@ -364,6 +379,7 @@ fn timeout_internal(
364379
365380fn timeout_multiplex (
366381 deps : DepsMut ,
382+ caller : Addr ,
367383 packet : Packet ,
368384 relayer : Addr ,
369385 path : U256 ,
@@ -396,8 +412,9 @@ fn timeout_multiplex(
396412 Ok ( Response :: new ( ) . add_message ( wasm_execute (
397413 sender_addr,
398414 & IbcUnionMsg :: OnTimeoutPacket {
415+ caller : caller. into ( ) ,
399416 packet : multiplex_packet,
400- relayer : relayer. to_string ( ) ,
417+ relayer : relayer. into ( ) ,
401418 } ,
402419 vec ! [ ] ,
403420 ) ?) )
@@ -413,6 +430,7 @@ fn acknowledge_packet(
413430 deps : DepsMut ,
414431 env : Env ,
415432 info : MessageInfo ,
433+ caller : Addr ,
416434 packet : Packet ,
417435 relayer : Addr ,
418436 ack : Bytes ,
@@ -447,6 +465,7 @@ fn acknowledge_packet(
447465 deps,
448466 env,
449467 info,
468+ caller,
450469 packet,
451470 relayer,
452471 zkgm_packet. salt . into ( ) ,
@@ -466,6 +485,7 @@ fn acknowledge_internal(
466485 mut deps : DepsMut ,
467486 env : Env ,
468487 info : MessageInfo ,
488+ caller : Addr ,
469489 packet : Packet ,
470490 relayer : Addr ,
471491 salt : H256 ,
@@ -509,6 +529,7 @@ fn acknowledge_internal(
509529 deps. branch ( ) ,
510530 env. clone ( ) ,
511531 info. clone ( ) ,
532+ caller. clone ( ) ,
512533 packet. clone ( ) ,
513534 relayer. clone ( ) ,
514535 derive_batch_salt ( i. try_into ( ) . unwrap ( ) , salt) ,
@@ -534,7 +555,9 @@ fn acknowledge_internal(
534555 } ) ;
535556 }
536557 let multiplex = Multiplex :: abi_decode_params ( & instruction. operand , true ) ?;
537- acknowledge_multiplex ( deps, packet, relayer, path, multiplex, successful, ack)
558+ acknowledge_multiplex (
559+ deps, caller, packet, relayer, path, multiplex, successful, ack,
560+ )
538561 }
539562 _ => Err ( ContractError :: UnknownOpcode {
540563 opcode : instruction. opcode ,
@@ -674,8 +697,10 @@ fn acknowledge_fungible_asset_order(
674697 }
675698}
676699
700+ #[ allow( clippy:: too_many_arguments) ]
677701fn acknowledge_multiplex (
678702 deps : DepsMut ,
703+ caller : Addr ,
679704 packet : Packet ,
680705 relayer : Addr ,
681706 path : U256 ,
@@ -706,9 +731,10 @@ fn acknowledge_multiplex(
706731 Ok ( Response :: new ( ) . add_message ( wasm_execute (
707732 sender_addr,
708733 & IbcUnionMsg :: OnAcknowledgementPacket {
734+ caller : caller. into ( ) ,
709735 packet : multiplex_packet,
710736 acknowledgement : ack,
711- relayer : relayer. to_string ( ) ,
737+ relayer : relayer. into ( ) ,
712738 } ,
713739 vec ! [ ] ,
714740 ) ?) )
@@ -725,6 +751,7 @@ fn execute_packet(
725751 mut deps : DepsMut ,
726752 env : Env ,
727753 info : MessageInfo ,
754+ caller : Addr ,
728755 packet : Packet ,
729756 relayer : Addr ,
730757 relayer_msg : Bytes ,
@@ -734,6 +761,7 @@ fn execute_packet(
734761 deps. branch ( ) ,
735762 env,
736763 info,
764+ caller,
737765 packet,
738766 relayer,
739767 relayer_msg,
@@ -754,6 +782,7 @@ fn execute_internal(
754782 deps : DepsMut ,
755783 env : Env ,
756784 info : MessageInfo ,
785+ caller : Addr ,
757786 packet : Packet ,
758787 relayer : Addr ,
759788 relayer_msg : Bytes ,
@@ -792,6 +821,7 @@ fn execute_internal(
792821 deps,
793822 env,
794823 info,
824+ caller,
795825 packet,
796826 relayer,
797827 relayer_msg,
@@ -807,7 +837,16 @@ fn execute_internal(
807837 } ) ;
808838 }
809839 let multiplex = Multiplex :: abi_decode_params ( & instruction. operand , true ) ?;
810- execute_multiplex ( deps, env, packet, relayer, relayer_msg, path, multiplex)
840+ execute_multiplex (
841+ deps,
842+ env,
843+ caller,
844+ packet,
845+ relayer,
846+ relayer_msg,
847+ path,
848+ multiplex,
849+ )
811850 }
812851 OP_FORWARD => {
813852 if instruction. version > INSTR_VERSION_0 {
@@ -939,9 +978,11 @@ fn execute_forward(
939978 ) ?) )
940979}
941980
981+ #[ allow( clippy:: too_many_arguments) ]
942982fn execute_multiplex (
943983 deps : DepsMut ,
944984 env : Env ,
985+ caller : Addr ,
945986 packet : Packet ,
946987 relayer : Addr ,
947988 relayer_msg : Bytes ,
@@ -972,6 +1013,7 @@ fn execute_multiplex(
9721013 wasm_execute (
9731014 contract_address,
9741015 & IbcUnionMsg :: OnRecvPacket {
1016+ caller : caller. into ( ) ,
9751017 packet : multiplex_packet,
9761018 relayer : relayer. into ( ) ,
9771019 relayer_msg,
@@ -1009,6 +1051,7 @@ fn execute_batch(
10091051 mut deps : DepsMut ,
10101052 env : Env ,
10111053 info : MessageInfo ,
1054+ caller : Addr ,
10121055 packet : Packet ,
10131056 relayer : Addr ,
10141057 relayer_msg : Bytes ,
@@ -1023,6 +1066,7 @@ fn execute_batch(
10231066 deps. branch ( ) ,
10241067 env. clone ( ) ,
10251068 info. clone ( ) ,
1069+ caller. clone ( ) ,
10261070 packet. clone ( ) ,
10271071 relayer. clone ( ) ,
10281072 relayer_msg. clone ( ) ,
0 commit comments