@@ -3,11 +3,11 @@ use std::ops::Mul;
3
3
use cosmwasm_schema:: cw_serde;
4
4
use cosmwasm_std:: {
5
5
attr, coin, entry_point, from_binary, to_binary, Addr , Api , Binary , CosmosMsg , Decimal , Deps ,
6
- DepsMut , Env , IbcBasicResponse , IbcChannel , IbcChannelCloseMsg , IbcChannelConnectMsg ,
7
- IbcChannelOpenMsg , IbcEndpoint , IbcMsg , IbcOrder , IbcPacket , IbcPacketAckMsg ,
8
- IbcPacketReceiveMsg , IbcPacketTimeoutMsg , IbcReceiveResponse , IbcTimeout , Order ,
9
- QuerierWrapper , Reply , Response , StdError , StdResult , Storage , SubMsg , SubMsgResult , Timestamp ,
10
- Uint128 ,
6
+ DepsMut , Env , Ibc3ChannelOpenResponse , IbcBasicResponse , IbcChannel , IbcChannelCloseMsg ,
7
+ IbcChannelConnectMsg , IbcChannelOpenMsg , IbcEndpoint , IbcMsg , IbcOrder , IbcPacket ,
8
+ IbcPacketAckMsg , IbcPacketReceiveMsg , IbcPacketTimeoutMsg , IbcReceiveResponse , IbcTimeout ,
9
+ Order , QuerierWrapper , Reply , Response , StdError , StdResult , Storage , SubMsg , SubMsgResult ,
10
+ Timestamp , Uint128 ,
11
11
} ;
12
12
use cw20_ics20_msg:: helper:: {
13
13
denom_to_asset_info, get_prefix_decode_bech32, parse_asset_info_denom,
@@ -202,9 +202,9 @@ pub fn ibc_channel_open(
202
202
_deps : DepsMut ,
203
203
_env : Env ,
204
204
msg : IbcChannelOpenMsg ,
205
- ) -> Result < ( ) , ContractError > {
205
+ ) -> Result < Option < Ibc3ChannelOpenResponse > , ContractError > {
206
206
enforce_order_and_version ( msg. channel ( ) , msg. counterparty_version ( ) ) ?;
207
- Ok ( ( ) )
207
+ Ok ( None )
208
208
}
209
209
210
210
#[ entry_point]
@@ -271,7 +271,15 @@ pub fn ibc_packet_receive(
271
271
) -> Result < IbcReceiveResponse , Never > {
272
272
let packet = msg. packet ;
273
273
274
- do_ibc_packet_receive ( deps. storage , deps. api , & deps. querier , env, & packet) . or_else ( |err| {
274
+ do_ibc_packet_receive (
275
+ deps. storage ,
276
+ deps. api ,
277
+ & deps. querier ,
278
+ env,
279
+ & packet,
280
+ & msg. relayer . into_string ( ) ,
281
+ )
282
+ . or_else ( |err| {
275
283
// reset relayer & token fees to prevent re-entrancy when failing
276
284
TOKEN_FEE_ACCUMULATOR . clear ( deps. storage ) ;
277
285
RELAYER_FEE_ACCUMULATOR . clear ( deps. storage ) ;
@@ -353,6 +361,7 @@ fn do_ibc_packet_receive(
353
361
querier : & QuerierWrapper ,
354
362
env : Env ,
355
363
packet : & IbcPacket ,
364
+ relayer : & str ,
356
365
) -> Result < IbcReceiveResponse , ContractError > {
357
366
let msg: Ics20Packet = from_binary ( & packet. data ) ?;
358
367
// let channel = packet.dest.channel_id.clone();
@@ -364,7 +373,7 @@ fn do_ibc_packet_receive(
364
373
// if denom is native, we handle it the native way
365
374
if denom. 1 {
366
375
return handle_ibc_packet_receive_native_remote_chain (
367
- storage, api, & querier, env, & denom. 0 , & packet, & msg,
376
+ storage, api, & querier, env, & denom. 0 , & packet, & msg, relayer ,
368
377
) ;
369
378
}
370
379
@@ -379,6 +388,7 @@ fn handle_ibc_packet_receive_native_remote_chain(
379
388
denom : & str ,
380
389
packet : & IbcPacket ,
381
390
msg : & Ics20Packet ,
391
+ relayer : & str ,
382
392
) -> Result < IbcReceiveResponse , ContractError > {
383
393
let config = CONFIG . load ( storage) ?;
384
394
@@ -430,7 +440,7 @@ fn handle_ibc_packet_receive_native_remote_chain(
430
440
) ?;
431
441
cosmos_msgs. append ( & mut collect_fee_msgs (
432
442
storage,
433
- config . relayer_fee_receiver . to_string ( ) ,
443
+ relayer . to_string ( ) ,
434
444
RELAYER_FEE_ACCUMULATOR ,
435
445
) ?) ;
436
446
// increase channel balance submsg. We increase it first before doing other tasks
@@ -448,14 +458,17 @@ fn handle_ibc_packet_receive_native_remote_chain(
448
458
. set_ack ( ack_success ( ) )
449
459
. add_messages ( cosmos_msgs)
450
460
. add_submessages ( submsgs)
451
- . add_attribute ( "action" , "receive_native" )
452
- . add_attribute ( "sender" , msg. sender . clone ( ) )
453
- . add_attribute ( "receiver" , msg. receiver . clone ( ) )
454
- . add_attribute ( "denom" , denom)
455
- . add_attribute ( "amount" , msg. amount . to_string ( ) )
456
- . add_attribute ( "success" , "true" )
457
- . add_attribute ( "token_fee" , token_fee)
458
- . add_attribute ( "relayer_fee" , relayer_fee) ;
461
+ . add_attributes ( vec ! [
462
+ ( "action" , "receive_native" ) ,
463
+ ( "sender" , & msg. sender) ,
464
+ ( "receiver" , & msg. receiver) ,
465
+ ( "denom" , denom) ,
466
+ ( "amount" , & msg. amount. to_string( ) ) ,
467
+ ( "success" , "true" ) ,
468
+ ( "token_fee" , & token_fee. to_string( ) ) ,
469
+ ( "relayer_fee" , & relayer_fee. to_string( ) ) ,
470
+ ( "relayer" , relayer) ,
471
+ ] ) ;
459
472
if !ibc_error_msg. is_empty ( ) {
460
473
res = res. add_attribute ( "ibc_error_msg" , ibc_error_msg) ;
461
474
}
0 commit comments