@@ -5,7 +5,7 @@ use authority_selection_inherents::{
5
5
use derive_new:: new;
6
6
use jsonrpsee:: core:: async_trait;
7
7
use partner_chains_demo_runtime:: {
8
- BlockAuthor , CrossChainPublic ,
8
+ AccountId , BlockAuthor , CrossChainPublic ,
9
9
opaque:: { Block , SessionKeys } ,
10
10
} ;
11
11
use sc_consensus_aura:: { SlotDuration , find_pre_digest} ;
@@ -32,6 +32,9 @@ use sp_native_token_management::{
32
32
NativeTokenManagementApi , NativeTokenManagementDataSource ,
33
33
NativeTokenManagementInherentDataProvider as NativeTokenIDP ,
34
34
} ;
35
+ use sp_partner_chains_bridge:: {
36
+ TokenBridgeDataSource , TokenBridgeIDPRuntimeApi , TokenBridgeInherentDataProvider ,
37
+ } ;
35
38
use sp_partner_chains_consensus_aura:: CurrentSlotProvider ;
36
39
use sp_runtime:: traits:: { Block as BlockT , Header , Zero } ;
37
40
use sp_session_validator_management:: SessionValidatorManagementApi ;
@@ -48,6 +51,7 @@ pub struct ProposalCIDP<T> {
48
51
native_token_data_source : Arc < dyn NativeTokenManagementDataSource + Send + Sync > ,
49
52
block_participation_data_source : Arc < dyn BlockParticipationDataSource + Send + Sync > ,
50
53
governed_map_data_source : Arc < dyn GovernedMapDataSource + Send + Sync > ,
54
+ bridge_data_source : Arc < dyn TokenBridgeDataSource < AccountId > + Send + Sync > ,
51
55
}
52
56
53
57
#[ async_trait]
65
69
T :: Api : BlockProductionLogApi < Block , CommitteeMember < CrossChainPublic , SessionKeys > > ,
66
70
T :: Api : BlockParticipationApi < Block , BlockAuthor > ,
67
71
T :: Api : GovernedMapIDPApi < Block > ,
72
+ T :: Api : TokenBridgeIDPRuntimeApi < Block > ,
68
73
{
69
74
type InherentDataProviders = (
70
75
AuraIDP ,
75
80
NativeTokenIDP ,
76
81
BlockParticipationInherentDataProvider < BlockAuthor , DelegatorKey > ,
77
82
GovernedMapInherentDataProvider ,
83
+ TokenBridgeInherentDataProvider < AccountId > ,
78
84
) ;
79
85
80
86
async fn create_inherent_data_providers (
90
96
native_token_data_source,
91
97
block_participation_data_source,
92
98
governed_map_data_source,
99
+ bridge_data_source,
93
100
} = self ;
94
101
let CreateInherentDataConfig { mc_epoch_config, sc_slot_config, time_source } = config;
95
102
@@ -145,6 +152,14 @@ where
145
152
)
146
153
. await ?;
147
154
155
+ let bridge = TokenBridgeInherentDataProvider :: new (
156
+ client. as_ref ( ) ,
157
+ parent_hash,
158
+ mc_hash. mc_hash ( ) ,
159
+ bridge_data_source. as_ref ( ) ,
160
+ )
161
+ . await ?;
162
+
148
163
Ok ( (
149
164
slot,
150
165
timestamp,
@@ -154,6 +169,7 @@ where
154
169
native_token,
155
170
payouts,
156
171
governed_map,
172
+ bridge,
157
173
) )
158
174
}
159
175
}
@@ -167,6 +183,7 @@ pub struct VerifierCIDP<T> {
167
183
native_token_data_source : Arc < dyn NativeTokenManagementDataSource + Send + Sync > ,
168
184
block_participation_data_source : Arc < dyn BlockParticipationDataSource + Send + Sync > ,
169
185
governed_map_data_source : Arc < dyn GovernedMapDataSource + Send + Sync > ,
186
+ bridge_data_source : Arc < dyn TokenBridgeDataSource < AccountId > + Send + Sync > ,
170
187
}
171
188
172
189
impl < T : Send + Sync > CurrentSlotProvider for VerifierCIDP < T > {
@@ -189,6 +206,7 @@ where
189
206
T :: Api : BlockProductionLogApi < Block , CommitteeMember < CrossChainPublic , SessionKeys > > ,
190
207
T :: Api : BlockParticipationApi < Block , BlockAuthor > ,
191
208
T :: Api : GovernedMapIDPApi < Block > ,
209
+ T :: Api : TokenBridgeIDPRuntimeApi < Block > ,
192
210
{
193
211
type InherentDataProviders = (
194
212
TimestampIDP ,
@@ -197,6 +215,7 @@ where
197
215
NativeTokenIDP ,
198
216
BlockParticipationInherentDataProvider < BlockAuthor , DelegatorKey > ,
199
217
GovernedMapInherentDataProvider ,
218
+ TokenBridgeInherentDataProvider < AccountId > ,
200
219
) ;
201
220
202
221
async fn create_inherent_data_providers (
@@ -212,6 +231,7 @@ where
212
231
native_token_data_source,
213
232
block_participation_data_source,
214
233
governed_map_data_source,
234
+ bridge_data_source,
215
235
} = self ;
216
236
let CreateInherentDataConfig { mc_epoch_config, sc_slot_config, time_source, .. } = config;
217
237
@@ -264,19 +284,28 @@ where
264
284
let governed_map = GovernedMapInherentDataProvider :: new (
265
285
client. as_ref ( ) ,
266
286
parent_hash,
267
- mc_hash,
287
+ mc_hash. clone ( ) ,
268
288
mc_state_reference. previous_mc_hash ( ) ,
269
289
governed_map_data_source. as_ref ( ) ,
270
290
)
271
291
. await ?;
272
292
293
+ let bridge = TokenBridgeInherentDataProvider :: new (
294
+ client. as_ref ( ) ,
295
+ parent_hash,
296
+ mc_hash,
297
+ bridge_data_source. as_ref ( ) ,
298
+ )
299
+ . await ?;
300
+
273
301
Ok ( (
274
302
timestamp,
275
303
ariadne_data_provider,
276
304
block_producer_id_provider,
277
305
native_token,
278
306
payouts,
279
307
governed_map,
308
+ bridge,
280
309
) )
281
310
}
282
311
}
0 commit comments