@@ -176,9 +176,45 @@ impl SequencerNodeArgs {
176176 utils:: print_intro ( self , & node. backend ( ) . chain_spec ) ;
177177 }
178178
179- // Launch the node
180179 let handle = node. launch ( ) . await . context ( "failed to launch forked node" ) ?;
181180
181+ #[ cfg( feature = "paymaster" ) ]
182+ let mut paymaster = if self . paymaster . enabled && !self . paymaster . is_external ( ) {
183+ use crate :: sidecar:: bootstrap_paymaster;
184+
185+ let paymaster = bootstrap_paymaster (
186+ & self . paymaster ,
187+ config. paymaster . unwrap ( ) . url . clone ( ) ,
188+ * handle. rpc ( ) . addr ( ) ,
189+ & handle. node ( ) . config ( ) . chain ,
190+ )
191+ . await ?
192+ . start ( )
193+ . await ?;
194+
195+ Some ( paymaster)
196+ } else {
197+ None
198+ } ;
199+
200+ #[ cfg( feature = "vrf" ) ]
201+ let mut vrf = if self . cartridge . vrf . enabled && !self . cartridge . vrf . is_external ( ) {
202+ use crate :: sidecar:: bootstrap_vrf;
203+
204+ let vrf = bootstrap_vrf (
205+ & self . cartridge . vrf ,
206+ * handle. rpc ( ) . addr ( ) ,
207+ & handle. node ( ) . config ( ) . chain ,
208+ )
209+ . await ?
210+ . start ( )
211+ . await ?;
212+
213+ Some ( vrf)
214+ } else {
215+ None
216+ } ;
217+
182218 // Wait until an OS signal (ie SIGINT, SIGTERM) is received or the node is shutdown.
183219 tokio:: select! {
184220 _ = katana_utils:: wait_shutdown_signals( ) => {
@@ -188,6 +224,16 @@ impl SequencerNodeArgs {
188224
189225 _ = handle. stopped( ) => { }
190226 }
227+
228+ #[ cfg( feature = "paymaster" ) ]
229+ if let Some ( ref mut s) = paymaster {
230+ s. shutdown ( ) . await ?;
231+ }
232+
233+ #[ cfg( feature = "vrf" ) ]
234+ if let Some ( ref mut s) = vrf {
235+ s. shutdown ( ) . await ?;
236+ }
191237 } else {
192238 let node = Node :: build ( config. clone ( ) ) . context ( "failed to build node" ) ?;
193239
0 commit comments