@@ -70,22 +70,19 @@ module ibc::acknowledge_packet {
70
70
71
71
use std::vector;
72
72
73
+ const E_NOT_ENOUGH_PACKETS : u64 = 34001 ;
74
+
73
75
public entry fun acknowledge_packet <T : key + store + drop >(
74
- port_id: address ,
75
76
packet_source_channels: vector <u32 >,
76
77
packet_destination_channels: vector <u32 >,
77
- packet_datas : vector <vector <u8 >>,
78
+ packet_data : vector <vector <u8 >>,
78
79
packet_timeout_heights: vector <u64 >,
79
80
packet_timeout_timestamps: vector <u64 >,
80
81
acknowledgements: vector <vector <u8 >>,
81
- maker: address ,
82
82
proof: vector <u8 >,
83
- proof_height: u64
83
+ proof_height: u64 ,
84
+ relayer: address
84
85
) {
85
- let port = ibc::get_port_id <T >();
86
- // assert!(port == port_id, E_UNAUTHORIZED);
87
- assert !(port == port_id, 2 );
88
-
89
86
let packets: vector <Packet > = vector ::empty ();
90
87
let i = 0 ;
91
88
while (i < vector ::length (&packet_source_channels)) {
@@ -94,39 +91,26 @@ module ibc::acknowledge_packet {
94
91
packet::new (
95
92
*vector ::borrow (&packet_source_channels, i),
96
93
*vector ::borrow (&packet_destination_channels, i),
97
- *vector ::borrow (&packet_datas , i),
94
+ *vector ::borrow (&packet_data , i),
98
95
*vector ::borrow (&packet_timeout_heights, i),
99
96
*vector ::borrow (&packet_timeout_timestamps, i)
100
97
)
101
98
);
102
99
i = i + 1 ;
103
100
};
104
101
let l = vector ::length (&packets);
105
- // assert!(l > 0, E_NOT_ENOUGH_PACKETS);
106
- assert !(l > 0 , 1 );
102
+ assert !(l > 0 , E_NOT_ENOUGH_PACKETS );
107
103
108
- let first_packet = *vector ::borrow (&packets, 0 );
109
- let source_channel_id = packet::source_channel_id (&first_packet);
110
- let destination_channel_id = packet::destination_channel_id (&first_packet);
104
+ let source_channel_id = packet::source_channel_id (vector ::borrow (&packets, 0 ));
111
105
112
106
let channel = ibc::ensure_channel_state (source_channel_id);
113
107
let client_id = ibc::ensure_connection_state (channel::connection_id (&channel));
114
108
115
- let commitment_key;
116
- let commitment_value;
117
- if (l == 1 ) {
118
- commitment_key = commitment::batch_receipts_commitment_key (
119
- commitment::commit_packet (&first_packet)
120
- );
121
- commitment_value = commitment::commit_ack (
122
- *vector ::borrow (&acknowledgements, 0 )
123
- );
124
- } else {
125
- commitment_key = commitment::batch_receipts_commitment_key (
109
+ let commitment_key =
110
+ commitment::batch_receipts_commitment_key (
126
111
commitment::commit_packets (&packets)
127
112
);
128
- commitment_value = commitment::commit_acks (acknowledgements);
129
- };
113
+ let commitment_value = commitment::commit_acks (acknowledgements);
130
114
131
115
let err =
132
116
ibc::verify_commitment (
@@ -144,22 +128,21 @@ module ibc::acknowledge_packet {
144
128
let i = 0 ;
145
129
while (i < l) {
146
130
let packet = *vector ::borrow (&packets, i);
147
- let commitment_key =
148
- commitment::batch_packets_commitment_key (
149
- commitment::commit_packet (&packet)
150
- );
151
- ibc::remove_commitment (commitment_key);
152
-
131
+ ibc::mark_packet_as_acknowledged (&packet);
153
132
let acknowledgement = *vector ::borrow (&acknowledgements, i);
154
- // onAcknowledgementPacket(...)
155
133
156
134
let param =
157
- helpers::pack_acknowledge_packet_params (packet, acknowledgement, @ibc );
135
+ helpers::pack_acknowledge_packet_params (packet, acknowledgement, relayer );
158
136
engine::dispatch <T >(param);
159
137
160
138
dispatcher::delete_storage <T >();
161
139
162
- ibc::emit_acknowledge_packet (packet, acknowledgement, maker);
140
+ ibc::emit_acknowledge_packet (
141
+ packet,
142
+ commitment::commit_packet (&packet),
143
+ acknowledgement,
144
+ relayer
145
+ );
163
146
164
147
i = i + 1 ;
165
148
}
0 commit comments