59 releases (breaking)

new 0.50.0 Jul 14, 2025
0.48.0 Jan 29, 2025
0.45.0 Sep 26, 2024
0.44.0 Jul 18, 2024
0.8.0-alpha.5 Mar 24, 2020

#1 in #proposer

Download history 3897/week @ 2025-03-24 3010/week @ 2025-03-31 2810/week @ 2025-04-07 2884/week @ 2025-04-14 5273/week @ 2025-04-21 4804/week @ 2025-04-28 3895/week @ 2025-05-05 3093/week @ 2025-05-12 2673/week @ 2025-05-19 3152/week @ 2025-05-26 3145/week @ 2025-06-02 3110/week @ 2025-06-09 4008/week @ 2025-06-16 5092/week @ 2025-06-23 3640/week @ 2025-06-30 5045/week @ 2025-07-07

18,072 downloads per month
Used in 24 crates (10 directly)

GPL-3.0-or-later…

1.5MB
19K SLoC

Basic implementation of block-authoring logic.

Example

// The first step is to create a `ProposerFactory`.
let mut proposer_factory = ProposerFactory::new(client.clone(), txpool.clone(), None);

// From this factory, we create a `Proposer`.
let proposer = proposer_factory.init(
	&client.header(client.chain_info().genesis_hash).unwrap().unwrap(),
);

// The proposer is created asynchronously.
let proposer = futures::executor::block_on(proposer).unwrap();

// This `Proposer` allows us to create a block proposition.
// The proposer will grab transactions from the transaction pool, and put them into the block.
let future = proposer.propose(
	Default::default(),
	Default::default(),
	Duration::from_secs(2),
);

// We wait until the proposition is performed.
let block = futures::executor::block_on(future).unwrap();
println!("Generated block: {:?}", block.block);

License: GPL-3.0-or-later WITH Classpath-exception-2.0

Dependencies

~33–70MB
~1M SLoC