@@ -3,16 +3,16 @@ use async_trait::async_trait;
33use std:: sync:: Arc ;
44
55use crate :: {
6- entities:: { BlockNumber , CardanoDbBeacon , Epoch , ProtocolMessage , SignedEntityType } ,
6+ entities:: {
7+ BlockNumber , CardanoDbBeacon , Epoch , ProtocolMessage , ProtocolMessagePartKey ,
8+ SignedEntityType ,
9+ } ,
710 signable_builder:: { SignableBuilder , SignableSeedBuilder } ,
811 StdResult ,
912} ;
1013
11- #[ cfg( test) ]
12- use mockall:: automock;
13-
1414/// ArtifactBuilder Service trait
15- #[ cfg_attr( test, automock) ]
15+ #[ cfg_attr( test, mockall :: automock) ]
1616#[ async_trait]
1717pub trait SignableBuilderService : Send + Sync {
1818 /// Compute signable from signed entity type
@@ -48,11 +48,8 @@ impl MithrilSignableBuilderService {
4848 cardano_stake_distribution_builder,
4949 }
5050 }
51- }
5251
53- #[ async_trait]
54- impl SignableBuilderService for MithrilSignableBuilderService {
55- async fn compute_protocol_message (
52+ async fn compute_signed_entity_protocol_message (
5653 & self ,
5754 signed_entity_type : SignedEntityType ,
5855 ) -> StdResult < ProtocolMessage > {
@@ -84,8 +81,38 @@ impl SignableBuilderService for MithrilSignableBuilderService {
8481 "Signable builder service can not compute protocol message with block_number: '{block_number}'"
8582 ) ) ?,
8683 } ;
87- let protocol_message = self
84+
85+ Ok ( protocol_message)
86+ }
87+
88+ async fn compute_seeded_protocol_message (
89+ & self ,
90+ protocol_message : ProtocolMessage ,
91+ ) -> StdResult < ProtocolMessage > {
92+ let next_aggregate_verification_key = self
8893 . seed_signable_builder
94+ . compute_next_aggregate_verification_key_protocol_message_part_value ( )
95+ . await ?;
96+ let mut protocol_message = protocol_message;
97+ protocol_message. set_message_part (
98+ ProtocolMessagePartKey :: NextAggregateVerificationKey ,
99+ next_aggregate_verification_key,
100+ ) ;
101+
102+ Ok ( protocol_message)
103+ }
104+ }
105+
106+ #[ async_trait]
107+ impl SignableBuilderService for MithrilSignableBuilderService {
108+ async fn compute_protocol_message (
109+ & self ,
110+ signed_entity_type : SignedEntityType ,
111+ ) -> StdResult < ProtocolMessage > {
112+ let protocol_message = self
113+ . compute_signed_entity_protocol_message ( signed_entity_type)
114+ . await ?;
115+ let protocol_message = self
89116 . compute_seeded_protocol_message ( protocol_message)
90117 . await ?;
91118
@@ -98,7 +125,7 @@ mod tests {
98125 use super :: * ;
99126
100127 use crate :: {
101- entities:: { BlockNumber , Epoch , ProtocolMessage } ,
128+ entities:: { BlockNumber , Epoch , ProtocolMessage , ProtocolMessagePartValue } ,
102129 signable_builder:: { Beacon as Beaconnable , SignableBuilder } ,
103130 StdResult ,
104131 } ;
@@ -121,7 +148,7 @@ mod tests {
121148
122149 #[ async_trait]
123150 impl SignableSeedBuilder for SignableSeedBuilderImpl {
124- async fn compute_seeded_protocol_message ( & self , protocol_message : ProtocolMessage ) -> StdResult <ProtocolMessage >;
151+ async fn compute_next_aggregate_verification_key_protocol_message_part_value ( & self ) -> StdResult <ProtocolMessagePartValue >;
125152 }
126153 }
127154
@@ -164,9 +191,9 @@ mod tests {
164191 let mut mock_container = MockDependencyInjector :: new ( ) ;
165192 mock_container
166193 . mock_signable_seed_builder
167- . expect_compute_seeded_protocol_message ( )
194+ . expect_compute_next_aggregate_verification_key_protocol_message_value ( )
168195 . once ( )
169- . return_once ( move |_ | Ok ( ProtocolMessage :: new ( ) ) ) ;
196+ . return_once ( move || Ok ( "next-avk-123" . to_string ( ) ) ) ;
170197 mock_container
171198 . mock_mithril_stake_distribution_signable_builder
172199 . expect_compute_protocol_message ( )
@@ -188,9 +215,9 @@ mod tests {
188215 let mut mock_container = MockDependencyInjector :: new ( ) ;
189216 mock_container
190217 . mock_signable_seed_builder
191- . expect_compute_seeded_protocol_message ( )
218+ . expect_compute_next_aggregate_verification_key_protocol_message_value ( )
192219 . once ( )
193- . return_once ( move |_ | Ok ( ProtocolMessage :: new ( ) ) ) ;
220+ . return_once ( move || Ok ( "next-avk-123" . to_string ( ) ) ) ;
194221 mock_container
195222 . mock_cardano_immutable_files_full_signable_builder
196223 . expect_compute_protocol_message ( )
@@ -213,9 +240,9 @@ mod tests {
213240 let mut mock_container = MockDependencyInjector :: new ( ) ;
214241 mock_container
215242 . mock_signable_seed_builder
216- . expect_compute_seeded_protocol_message ( )
243+ . expect_compute_next_aggregate_verification_key_protocol_message_value ( )
217244 . once ( )
218- . return_once ( move |_ | Ok ( ProtocolMessage :: new ( ) ) ) ;
245+ . return_once ( move || Ok ( "next-avk-123" . to_string ( ) ) ) ;
219246 mock_container
220247 . mock_cardano_transactions_signable_builder
221248 . expect_compute_protocol_message ( )
@@ -238,9 +265,9 @@ mod tests {
238265 let mut mock_container = MockDependencyInjector :: new ( ) ;
239266 mock_container
240267 . mock_signable_seed_builder
241- . expect_compute_seeded_protocol_message ( )
268+ . expect_compute_next_aggregate_verification_key_protocol_message_value ( )
242269 . once ( )
243- . return_once ( move |_ | Ok ( ProtocolMessage :: new ( ) ) ) ;
270+ . return_once ( move || Ok ( "next-avk-123" . to_string ( ) ) ) ;
244271 mock_container
245272 . mock_cardano_stake_distribution_signable_builder
246273 . expect_compute_protocol_message ( )
0 commit comments