11use builder:: {
22 config:: BuilderConfig ,
33 service:: serve_builder,
4- tasks:: {
5- block:: sim:: Simulator ,
6- cache:: { BundlePoller , TxPoller } ,
7- metrics:: MetricsTask ,
8- submit:: SubmitTask ,
9- } ,
4+ tasks:: { block:: sim:: Simulator , metrics:: MetricsTask , submit:: SubmitTask } ,
5+ } ;
6+ use init4_bin_base:: {
7+ deps:: tracing:: { info, info_span} ,
8+ utils:: from_env:: FromEnv ,
109} ;
11- use init4_bin_base:: { deps:: tracing, utils:: from_env:: FromEnv } ;
12- use signet_sim:: SimCache ;
1310use signet_types:: constants:: SignetSystemConstants ;
1411use tokio:: select;
15- use tracing:: info_span;
1612
1713// Note: Must be set to `multi_thread` to support async tasks.
1814// See: https://docs.rs/tokio/latest/tokio/attr.main.html
@@ -21,74 +17,74 @@ async fn main() -> eyre::Result<()> {
2117 let _guard = init4_bin_base:: init4 ( ) ;
2218 let init_span_guard = info_span ! ( "builder initialization" ) ;
2319
20+ // Pull the configuration from the environment
2421 let config = BuilderConfig :: from_env ( ) ?. clone ( ) ;
2522 let constants = SignetSystemConstants :: pecorino ( ) ;
26- let token = config. oauth_token ( ) ;
2723
24+ // Spawn the EnvTask
25+ let env_task = config. env_task ( ) ;
26+ let ( block_env, env_jh) = env_task. spawn ( ) ;
27+
28+ // Spawn the cache system
29+ let cache_system = config. spawn_cache_system ( block_env. clone ( ) ) ;
30+
31+ // Prep providers and contracts
2832 let ( host_provider, quincey) =
2933 tokio:: try_join!( config. connect_host_provider( ) , config. connect_quincey( ) ) ?;
3034 let ru_provider = config. connect_ru_provider ( ) ;
31-
3235 let zenith = config. connect_zenith ( host_provider. clone ( ) ) ;
3336
37+ // Set up the metrics task
3438 let metrics = MetricsTask { host_provider } ;
3539 let ( tx_channel, metrics_jh) = metrics. spawn ( ) ;
3640
41+ // Make a Tx submission task
3742 let submit =
3843 SubmitTask { zenith, quincey, config : config. clone ( ) , outbound_tx_channel : tx_channel } ;
3944
40- let tx_poller = TxPoller :: new ( & config) ;
41- let ( tx_receiver, tx_poller_jh) = tx_poller. spawn ( ) ;
42-
43- let bundle_poller = BundlePoller :: new ( & config, token) ;
44- let ( bundle_receiver, bundle_poller_jh) = bundle_poller. spawn ( ) ;
45-
45+ // Set up tx submission
4646 let ( submit_channel, submit_jh) = submit. spawn ( ) ;
4747
48- let sim_items = SimCache :: new ( ) ;
49- let slot_calculator = config. slot_calculator ;
50-
51- let sim = Simulator :: new ( & config, ru_provider. clone ( ) , slot_calculator) ;
52-
53- let ( basefee_jh, sim_cache_jh) =
54- sim. spawn_cache_tasks ( tx_receiver, bundle_receiver, sim_items. clone ( ) ) ;
55-
56- let build_jh = sim. spawn_simulator_task ( constants, sim_items. clone ( ) , submit_channel) ;
48+ // Set up the simulator
49+ let sim = Simulator :: new ( & config, ru_provider. clone ( ) , block_env) ;
50+ let build_jh = sim. spawn_simulator_task ( constants, cache_system. sim_cache , submit_channel) ;
5751
52+ // Start the healthcheck server
5853 let server = serve_builder ( ( [ 0 , 0 , 0 , 0 ] , config. builder_port ) ) ;
5954
6055 // We have finished initializing the builder, so we can drop the init span
6156 // guard.
6257 drop ( init_span_guard) ;
6358
6459 select ! {
65- _ = tx_poller_jh => {
66- tracing:: info!( "tx_poller finished" ) ;
60+
61+ _ = env_jh => {
62+ info!( "env task finished" ) ;
6763 } ,
68- _ = bundle_poller_jh => {
69- tracing:: info!( "bundle_poller finished" ) ;
64+ _ = cache_system. cache_task => {
65+ info!( "cache task finished" ) ;
66+ } ,
67+ _ = cache_system. tx_poller => {
68+ info!( "tx_poller finished" ) ;
69+ } ,
70+ _ = cache_system. bundle_poller => {
71+ info!( "bundle_poller finished" ) ;
7072 } ,
71- _ = sim_cache_jh => {
72- tracing:: info!( "sim cache task finished" ) ;
73- }
74- _ = basefee_jh => {
75- tracing:: info!( "basefee task finished" ) ;
76- }
7773 _ = submit_jh => {
78- tracing :: info!( "submit finished" ) ;
74+ info!( "submit finished" ) ;
7975 } ,
8076 _ = metrics_jh => {
81- tracing :: info!( "metrics finished" ) ;
77+ info!( "metrics finished" ) ;
8278 } ,
8379 _ = build_jh => {
84- tracing :: info!( "build finished" ) ;
80+ info!( "build finished" ) ;
8581 }
8682 _ = server => {
87- tracing :: info!( "server finished" ) ;
83+ info!( "server finished" ) ;
8884 }
8985 }
9086
91- tracing :: info!( "shutting down" ) ;
87+ info ! ( "shutting down" ) ;
9288
9389 Ok ( ( ) )
9490}
0 commit comments