Skip to content

Commit 50588c3

Browse files
authored
chore(aptos): add lens client event (#3809)
2 parents dbc48a2 + 3e064eb commit 50588c3

6 files changed

+104
-49
lines changed

aptos/ibc/sources/cometbls_lc.move

+7-3
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,19 @@
5959
// TITLE.
6060

6161
module ibc::cometbls_lc {
62+
use aptos_std::smart_table::{Self, SmartTable};
63+
6264
use std::vector;
6365
use std::bcs;
6466
use std::string::{Self, String};
65-
use aptos_std::smart_table::{Self, SmartTable};
6667
use std::object;
6768
use std::timestamp;
69+
use std::option::{Self, Option};
70+
6871
use ibc::ics23;
6972
use ibc::ethabi;
7073
use ibc::bcs_utils;
74+
use ibc::create_lens_client_event::CreateLensClientEvent;
7175
use ibc::groth16_verifier::{Self, ZKP};
7276
use ibc::height::{Self, Height};
7377

@@ -137,7 +141,7 @@ module ibc::cometbls_lc {
137141
client_id: u32,
138142
client_state_bytes: vector<u8>,
139143
consensus_state_bytes: vector<u8>
140-
): (vector<u8>, vector<u8>, String) {
144+
): (vector<u8>, vector<u8>, String, Option<CreateLensClientEvent>) {
141145
let client_state = decode_client_state(client_state_bytes);
142146
let consensus_state = decode_consensus_state(consensus_state_bytes);
143147

@@ -164,7 +168,7 @@ module ibc::cometbls_lc {
164168

165169
move_to(&client_signer, state);
166170

167-
(client_state_bytes, consensus_state_bytes, client_state.chain_id)
171+
(client_state_bytes, consensus_state_bytes, client_state.chain_id, option::none())
168172
}
169173

170174
public fun latest_height(client_id: u32): u64 acquires State {

aptos/ibc/sources/consensus_state_update.move renamed to aptos/ibc/sources/create_lens_client_event.move

+29-13
Original file line numberDiff line numberDiff line change
@@ -58,27 +58,43 @@
5858
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
5959
// TITLE.
6060

61-
module ibc::consensus_state_update {
62-
struct ConsensusStateUpdate {
63-
client_state_commitment: vector<u8>,
64-
consensus_state_commitment: vector<u8>,
65-
height: u64
61+
module ibc::create_lens_client_event {
62+
use std::string::String;
63+
64+
struct CreateLensClientEvent has copy, drop, store {
65+
client_id: u32,
66+
l2_chain_id: String,
67+
l1_client_id: u32,
68+
l2_client_id: u32
6669
}
6770

68-
public fun new(client_state_commitment: vector<u8>, consensus_state_commitment: vector<u8>, height: u64): ConsensusStateUpdate {
69-
ConsensusStateUpdate { client_state_commitment, consensus_state_commitment, height }
71+
public fun new(
72+
client_id: u32,
73+
l2_chain_id: String,
74+
l1_client_id: u32,
75+
l2_client_id: u32
76+
): CreateLensClientEvent {
77+
CreateLensClientEvent {
78+
client_id,
79+
l2_chain_id,
80+
l1_client_id,
81+
l2_client_id
82+
}
7083
}
7184

72-
public fun client_state_commitment(update: &ConsensusStateUpdate): vector<u8> {
73-
update.client_state_commitment
85+
public fun client_id(self: &CreateLensClientEvent): u32 {
86+
self.client_id
7487
}
7588

76-
public fun consensus_state_commitment(update: &ConsensusStateUpdate): vector<u8> {
77-
update.consensus_state_commitment
89+
public fun l2_chain_id(self: &CreateLensClientEvent): String {
90+
self.l2_chain_id
7891
}
7992

80-
public fun height(update: &ConsensusStateUpdate): u64 {
81-
update.height
93+
public fun l1_client_id(self: &CreateLensClientEvent): u32 {
94+
self.l1_client_id
8295
}
8396

97+
public fun l2_client_id(self: &CreateLensClientEvent): u32 {
98+
self.l2_client_id
99+
}
84100
}

aptos/ibc/sources/ibc.move

+20-1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ module ibc::ibc {
7979
use ibc::channel::{Self, Channel};
8080
use ibc::packet::{Self, Packet};
8181
use ibc::dispatcher;
82+
use ibc::create_lens_client_event;
8283

8384
friend ibc::recv_packet;
8485
friend ibc::channel_handshake;
@@ -152,6 +153,14 @@ module ibc::ibc {
152153
counterparty_chain_id: String
153154
}
154155

156+
#[event]
157+
struct CreateLensClient has copy, drop, store {
158+
client_id: u32,
159+
l2_chain_id: String,
160+
l1_client_id: u32,
161+
l2_client_id: u32
162+
}
163+
155164
#[event]
156165
struct UpdateClient has copy, drop, store {
157166
client_id: u32,
@@ -335,7 +344,7 @@ module ibc::ibc {
335344
let client_id = generate_client_identifier();
336345
let store = borrow_global_mut<IBCStore>(get_vault_addr());
337346

338-
let (client_state, consensus_state, counterparty_chain_id) =
347+
let (client_state, consensus_state, counterparty_chain_id, lens_client_event) =
339348
light_client::create_client(
340349
client_type,
341350
&get_ibc_signer(),
@@ -344,6 +353,16 @@ module ibc::ibc {
344353
consensus_state
345354
);
346355

356+
if (option::is_some(&lens_client_event)) {
357+
let event = option::extract(&mut lens_client_event);
358+
event::emit(CreateLensClient {
359+
client_id: create_lens_client_event::client_id(&event),
360+
l2_chain_id: create_lens_client_event::l2_chain_id(&event),
361+
l1_client_id: create_lens_client_event::l1_client_id(&event),
362+
l2_client_id: create_lens_client_event::l2_client_id(&event)
363+
});
364+
};
365+
347366
smart_table::upsert(&mut store.client_id_to_type, client_id, client_type);
348367

349368
// TODO(aeryz): fetch these status from proper exported consts

aptos/ibc/sources/light_client.move

+23-26
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ module ibc::light_client {
6262
use ibc::cometbls_lc;
6363
use ibc::state_lens_ics23_mpt_lc;
6464
use ibc::state_lens_ics23_ics23_lc;
65+
use ibc::create_lens_client_event::CreateLensClientEvent;
66+
6567
use std::string::{Self, String};
68+
use std::option::Option;
6669

6770
const E_UNKNOWN_CLIENT_TYPE: u64 = 1;
6871
const CLIENT_TYPE_STATE_LENS_ICS23_MPT: vector<u8> = b"state-lens/ics23/mpt";
@@ -75,37 +78,31 @@ module ibc::light_client {
7578
client_id: u32,
7679
client_state_bytes: vector<u8>,
7780
consensus_state_bytes: vector<u8>
78-
): (vector<u8>, vector<u8>, String) {
81+
): (vector<u8>, vector<u8>, String, Option<CreateLensClientEvent>) {
7982
if (string::bytes(&client_type) == &CLIENT_TYPE_COMETBLS) {
80-
let (client_state, consensus_state, counterparty_chain_id) =
81-
cometbls_lc::create_client(
82-
ibc_signer,
83-
client_id,
84-
client_state_bytes,
85-
consensus_state_bytes
86-
);
87-
return (client_state, consensus_state, counterparty_chain_id)
83+
return cometbls_lc::create_client(
84+
ibc_signer,
85+
client_id,
86+
client_state_bytes,
87+
consensus_state_bytes
88+
)
8889
} else if (string::bytes(&client_type) == &CLIENT_TYPE_STATE_LENS_ICS23_MPT) {
89-
let (client_state, consensus_state, counterparty_chain_id) =
90-
state_lens_ics23_mpt_lc::create_client(
91-
ibc_signer,
92-
client_id,
93-
client_state_bytes,
94-
consensus_state_bytes
95-
);
96-
return (client_state, consensus_state, counterparty_chain_id)
90+
return state_lens_ics23_mpt_lc::create_client(
91+
ibc_signer,
92+
client_id,
93+
client_state_bytes,
94+
consensus_state_bytes
95+
)
9796
} else if (string::bytes(&client_type) == &CLIENT_TYPE_STATE_LENS_ICS23_ICS23) {
98-
let (client_state, consensus_state, counterparty_chain_id) =
99-
state_lens_ics23_ics23_lc::create_client(
100-
ibc_signer,
101-
client_id,
102-
client_state_bytes,
103-
consensus_state_bytes
104-
);
105-
return (client_state, consensus_state, counterparty_chain_id)
97+
return state_lens_ics23_ics23_lc::create_client(
98+
ibc_signer,
99+
client_id,
100+
client_state_bytes,
101+
consensus_state_bytes
102+
)
106103
};
107-
abort E_UNKNOWN_CLIENT_TYPE
108104

105+
abort E_UNKNOWN_CLIENT_TYPE
109106
}
110107

111108
public fun status(client_type: String, client_id: u32): u64 {

aptos/ibc/sources/state_lens_ics23_ics23.move

+14-4
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,16 @@ module ibc::state_lens_ics23_ics23_lc {
6262
use std::vector;
6363
use std::bcs;
6464
use std::string::{Self, String};
65-
use aptos_std::smart_table::{Self, SmartTable};
65+
use std::option::{Self, Option};
6666
use std::object;
67-
// use std::timestamp;
67+
68+
use aptos_std::smart_table::{Self, SmartTable};
69+
6870
// use ibc::ics23;
6971
use ibc::ethabi;
7072
use ibc::bcs_utils;
7173
use ibc::height::{Self, Height};
74+
use ibc::create_lens_client_event::{Self, CreateLensClientEvent};
7275

7376
struct TendermintConsensusState has drop {
7477
timestamp: u64,
@@ -112,7 +115,7 @@ module ibc::state_lens_ics23_ics23_lc {
112115
client_id: u32,
113116
client_state_bytes: vector<u8>,
114117
consensus_state_bytes: vector<u8>
115-
): (vector<u8>, vector<u8>, String) {
118+
): (vector<u8>, vector<u8>, String, Option<CreateLensClientEvent>) {
116119
let client_state = decode_client_state(client_state_bytes);
117120
let consensus_state = decode_consensus_state(consensus_state_bytes);
118121

@@ -139,7 +142,14 @@ module ibc::state_lens_ics23_ics23_lc {
139142

140143
move_to(&client_signer, state);
141144

142-
(client_state_bytes, consensus_state_bytes, client_state.l2_chain_id)
145+
let lens_client_event = create_lens_client_event::new(
146+
client_id,
147+
client_state.l2_chain_id,
148+
client_state.l1_client_id,
149+
client_state.l2_client_id,
150+
);
151+
152+
(client_state_bytes, consensus_state_bytes, client_state.l2_chain_id, option::some(lens_client_event))
143153
}
144154

145155
public fun latest_height(client_id: u32): u64 acquires State {

aptos/ibc/sources/state_lens_ics23_mpt.move

+11-2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
// TITLE.
6060

6161
module ibc::state_lens_ics23_mpt_lc {
62+
use std::option::{Self, Option};
6263
use std::vector;
6364
use std::string::{String, Self};
6465

@@ -73,6 +74,7 @@ module ibc::state_lens_ics23_mpt_lc {
7374
use ibc::bcs_utils;
7475
use ibc::commitment;
7576
use ibc::cometbls_lc;
77+
use ibc::create_lens_client_event::{Self, CreateLensClientEvent};
7678

7779
const E_INVALID_CLIENT_STATE: u64 = 35200;
7880
const E_CONSENSUS_STATE_TIMESTAMP_ZERO: u64 = 35201;
@@ -145,7 +147,7 @@ module ibc::state_lens_ics23_mpt_lc {
145147
client_id: u32,
146148
client_state_bytes: vector<u8>,
147149
consensus_state_bytes: vector<u8>
148-
): (vector<u8>, vector<u8>, String) {
150+
): (vector<u8>, vector<u8>, String, Option<CreateLensClientEvent>) {
149151
let client_state = decode_client_state(client_state_bytes);
150152
let consensus_state = decode_consensus_state(consensus_state_bytes);
151153

@@ -169,7 +171,14 @@ module ibc::state_lens_ics23_mpt_lc {
169171

170172
move_to(&client_signer, state);
171173

172-
(client_state_bytes, consensus_state_bytes, client_state.l2_chain_id)
174+
let lens_client_event = create_lens_client_event::new(
175+
client_id,
176+
client_state.l2_chain_id,
177+
client_state.l1_client_id,
178+
client_state.l2_client_id,
179+
);
180+
181+
(client_state_bytes, consensus_state_bytes, client_state.l2_chain_id, option::some(lens_client_event))
173182
}
174183

175184
public fun latest_height(client_id: u32): u64 acquires State {

0 commit comments

Comments
 (0)