Compare commits
3 Commits
0.7.0-rc.4
...
v0.7.0-rc.
Author | SHA1 | Date | |
---|---|---|---|
|
a6cb2f1bcf | ||
|
28af9a39b4 | ||
|
8cf5620b87 |
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana"
|
name = "solana"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.7.0-rc.2"
|
version = "0.7.0-rc.5"
|
||||||
documentation = "https://docs.rs/solana"
|
documentation = "https://docs.rs/solana"
|
||||||
homepage = "http://solana.com/"
|
homepage = "http://solana.com/"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@@ -32,7 +32,7 @@ fn bench_process_transaction(bencher: &mut Bencher) {
|
|||||||
|
|
||||||
let rando1 = KeyPair::new();
|
let rando1 = KeyPair::new();
|
||||||
let tx = Transaction::new(&rando0, rando1.pubkey(), 1, last_id);
|
let tx = Transaction::new(&rando0, rando1.pubkey(), 1, last_id);
|
||||||
assert!(bank.process_transaction(&tx.clone()).is_ok());
|
assert!(bank.process_transaction(&tx).is_ok());
|
||||||
|
|
||||||
// Finally, return the transaction to the benchmark.
|
// Finally, return the transaction to the benchmark.
|
||||||
tx
|
tx
|
||||||
|
@@ -40,7 +40,7 @@ impl BankingStage {
|
|||||||
.name("solana-banking-stage".to_string())
|
.name("solana-banking-stage".to_string())
|
||||||
.spawn(move || loop {
|
.spawn(move || loop {
|
||||||
if let Err(e) = Self::process_packets(
|
if let Err(e) = Self::process_packets(
|
||||||
&bank.clone(),
|
&bank,
|
||||||
&verified_receiver,
|
&verified_receiver,
|
||||||
&signal_sender,
|
&signal_sender,
|
||||||
&packet_recycler,
|
&packet_recycler,
|
||||||
|
@@ -224,7 +224,7 @@ fn main() {
|
|||||||
|
|
||||||
let signal = Arc::new(AtomicBool::new(false));
|
let signal = Arc::new(AtomicBool::new(false));
|
||||||
let mut c_threads = vec![];
|
let mut c_threads = vec![];
|
||||||
let validators = converge(&leader, &signal.clone(), num_nodes, &mut c_threads);
|
let validators = converge(&leader, &signal, num_nodes, &mut c_threads);
|
||||||
assert_eq!(validators.len(), num_nodes);
|
assert_eq!(validators.len(), num_nodes);
|
||||||
|
|
||||||
let mut client = mk_client(&leader);
|
let mut client = mk_client(&leader);
|
||||||
@@ -395,7 +395,7 @@ fn converge(
|
|||||||
let window = default_window();
|
let window = default_window();
|
||||||
let gossip_send_socket = udp_random_bind(8000, 10000, 5).unwrap();
|
let gossip_send_socket = udp_random_bind(8000, 10000, 5).unwrap();
|
||||||
let ncp = Ncp::new(
|
let ncp = Ncp::new(
|
||||||
&spy_ref.clone(),
|
&spy_ref,
|
||||||
window.clone(),
|
window.clone(),
|
||||||
spy_gossip,
|
spy_gossip,
|
||||||
gossip_send_socket,
|
gossip_send_socket,
|
||||||
|
@@ -421,6 +421,9 @@ impl Crdt {
|
|||||||
v.debug_id(),
|
v.debug_id(),
|
||||||
v.version
|
v.version
|
||||||
);
|
);
|
||||||
|
if self.table.get(&v.id).is_none() {
|
||||||
|
inc_new_counter!("crdt-insert-new_entry", 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
self.update_index += 1;
|
self.update_index += 1;
|
||||||
let _ = self.table.insert(v.id, v.clone());
|
let _ = self.table.insert(v.id, v.clone());
|
||||||
|
@@ -195,7 +195,7 @@ impl FullNode {
|
|||||||
let bank = Arc::new(bank);
|
let bank = Arc::new(bank);
|
||||||
let mut thread_hdls = vec![];
|
let mut thread_hdls = vec![];
|
||||||
let rpu = Rpu::new(
|
let rpu = Rpu::new(
|
||||||
&bank.clone(),
|
&bank,
|
||||||
node.sockets.requests,
|
node.sockets.requests,
|
||||||
node.sockets.respond,
|
node.sockets.respond,
|
||||||
exit.clone(),
|
exit.clone(),
|
||||||
@@ -205,18 +205,18 @@ impl FullNode {
|
|||||||
let blob_recycler = BlobRecycler::default();
|
let blob_recycler = BlobRecycler::default();
|
||||||
let crdt = Arc::new(RwLock::new(Crdt::new(node.data).expect("Crdt::new")));
|
let crdt = Arc::new(RwLock::new(Crdt::new(node.data).expect("Crdt::new")));
|
||||||
let (tpu, blob_receiver) = Tpu::new(
|
let (tpu, blob_receiver) = Tpu::new(
|
||||||
&bank.clone(),
|
&bank,
|
||||||
&crdt.clone(),
|
&crdt,
|
||||||
tick_duration,
|
tick_duration,
|
||||||
node.sockets.transaction,
|
node.sockets.transaction,
|
||||||
&blob_recycler.clone(),
|
&blob_recycler,
|
||||||
exit.clone(),
|
exit.clone(),
|
||||||
writer,
|
writer,
|
||||||
);
|
);
|
||||||
thread_hdls.extend(tpu.thread_hdls());
|
thread_hdls.extend(tpu.thread_hdls());
|
||||||
let window = FullNode::new_window(ledger_tail, entry_height, &crdt, &blob_recycler);
|
let window = FullNode::new_window(ledger_tail, entry_height, &crdt, &blob_recycler);
|
||||||
let ncp = Ncp::new(
|
let ncp = Ncp::new(
|
||||||
&crdt.clone(),
|
&crdt,
|
||||||
window.clone(),
|
window.clone(),
|
||||||
node.sockets.gossip,
|
node.sockets.gossip,
|
||||||
node.sockets.gossip_send,
|
node.sockets.gossip_send,
|
||||||
@@ -278,7 +278,7 @@ impl FullNode {
|
|||||||
let bank = Arc::new(bank);
|
let bank = Arc::new(bank);
|
||||||
let mut thread_hdls = vec![];
|
let mut thread_hdls = vec![];
|
||||||
let rpu = Rpu::new(
|
let rpu = Rpu::new(
|
||||||
&bank.clone(),
|
&bank,
|
||||||
node.sockets.requests,
|
node.sockets.requests,
|
||||||
node.sockets.respond,
|
node.sockets.respond,
|
||||||
exit.clone(),
|
exit.clone(),
|
||||||
@@ -295,7 +295,7 @@ impl FullNode {
|
|||||||
let window = FullNode::new_window(ledger_tail, entry_height, &crdt, &blob_recycler);
|
let window = FullNode::new_window(ledger_tail, entry_height, &crdt, &blob_recycler);
|
||||||
|
|
||||||
let ncp = Ncp::new(
|
let ncp = Ncp::new(
|
||||||
&crdt.clone(),
|
&crdt,
|
||||||
window.clone(),
|
window.clone(),
|
||||||
node.sockets.gossip,
|
node.sockets.gossip,
|
||||||
node.sockets.gossip_send,
|
node.sockets.gossip_send,
|
||||||
@@ -304,7 +304,7 @@ impl FullNode {
|
|||||||
|
|
||||||
let tvu = Tvu::new(
|
let tvu = Tvu::new(
|
||||||
keypair,
|
keypair,
|
||||||
bank.clone(),
|
&bank,
|
||||||
entry_height,
|
entry_height,
|
||||||
crdt.clone(),
|
crdt.clone(),
|
||||||
window.clone(),
|
window.clone(),
|
||||||
|
@@ -93,7 +93,7 @@ mod tests {
|
|||||||
let c = Arc::new(RwLock::new(crdt));
|
let c = Arc::new(RwLock::new(crdt));
|
||||||
let w = Arc::new(RwLock::new(vec![]));
|
let w = Arc::new(RwLock::new(vec![]));
|
||||||
let d = Ncp::new(
|
let d = Ncp::new(
|
||||||
&c.clone(),
|
&c,
|
||||||
w,
|
w,
|
||||||
tn.sockets.gossip,
|
tn.sockets.gossip,
|
||||||
tn.sockets.gossip_send,
|
tn.sockets.gossip_send,
|
||||||
|
@@ -78,7 +78,7 @@ impl SigVerifyStage {
|
|||||||
verified_sender: Arc<Mutex<Sender<VerifiedPackets>>>,
|
verified_sender: Arc<Mutex<Sender<VerifiedPackets>>>,
|
||||||
) -> JoinHandle<()> {
|
) -> JoinHandle<()> {
|
||||||
spawn(move || loop {
|
spawn(move || loop {
|
||||||
if let Err(e) = Self::verifier(&packet_receiver.clone(), &verified_sender.clone()) {
|
if let Err(e) = Self::verifier(&packet_receiver, &verified_sender) {
|
||||||
match e {
|
match e {
|
||||||
Error::RecvTimeoutError(RecvTimeoutError::Disconnected) => break,
|
Error::RecvTimeoutError(RecvTimeoutError::Disconnected) => break,
|
||||||
Error::RecvTimeoutError(RecvTimeoutError::Timeout) => (),
|
Error::RecvTimeoutError(RecvTimeoutError::Timeout) => (),
|
||||||
|
@@ -63,7 +63,7 @@ impl Tpu {
|
|||||||
let packet_recycler = PacketRecycler::default();
|
let packet_recycler = PacketRecycler::default();
|
||||||
|
|
||||||
let (fetch_stage, packet_receiver) =
|
let (fetch_stage, packet_receiver) =
|
||||||
FetchStage::new(transactions_socket, exit, &packet_recycler.clone());
|
FetchStage::new(transactions_socket, exit, &packet_recycler);
|
||||||
|
|
||||||
let (sigverify_stage, verified_receiver) = SigVerifyStage::new(packet_receiver);
|
let (sigverify_stage, verified_receiver) = SigVerifyStage::new(packet_receiver);
|
||||||
|
|
||||||
|
19
src/tvu.rs
19
src/tvu.rs
@@ -70,7 +70,7 @@ impl Tvu {
|
|||||||
/// * `exit` - The exit signal.
|
/// * `exit` - The exit signal.
|
||||||
pub fn new(
|
pub fn new(
|
||||||
keypair: KeyPair,
|
keypair: KeyPair,
|
||||||
bank: Arc<Bank>,
|
bank: &Arc<Bank>,
|
||||||
entry_height: u64,
|
entry_height: u64,
|
||||||
crdt: Arc<RwLock<Crdt>>,
|
crdt: Arc<RwLock<Crdt>>,
|
||||||
window: Window,
|
window: Window,
|
||||||
@@ -83,22 +83,27 @@ impl Tvu {
|
|||||||
let (fetch_stage, blob_fetch_receiver) = BlobFetchStage::new_multi_socket(
|
let (fetch_stage, blob_fetch_receiver) = BlobFetchStage::new_multi_socket(
|
||||||
vec![replicate_socket, repair_socket],
|
vec![replicate_socket, repair_socket],
|
||||||
exit,
|
exit,
|
||||||
&blob_recycler.clone(),
|
&blob_recycler,
|
||||||
);
|
);
|
||||||
//TODO
|
//TODO
|
||||||
//the packets coming out of blob_receiver need to be sent to the GPU and verified
|
//the packets coming out of blob_receiver need to be sent to the GPU and verified
|
||||||
//then sent to the window, which does the erasure coding reconstruction
|
//then sent to the window, which does the erasure coding reconstruction
|
||||||
let (window_stage, blob_window_receiver) = WindowStage::new(
|
let (window_stage, blob_window_receiver) = WindowStage::new(
|
||||||
&crdt.clone(),
|
&crdt,
|
||||||
window,
|
window,
|
||||||
entry_height,
|
entry_height,
|
||||||
retransmit_socket,
|
retransmit_socket,
|
||||||
&blob_recycler.clone(),
|
&blob_recycler,
|
||||||
blob_fetch_receiver,
|
blob_fetch_receiver,
|
||||||
);
|
);
|
||||||
|
|
||||||
let replicate_stage =
|
let replicate_stage = ReplicateStage::new(
|
||||||
ReplicateStage::new(keypair, bank, crdt, blob_recycler, blob_window_receiver);
|
keypair,
|
||||||
|
bank.clone(),
|
||||||
|
crdt,
|
||||||
|
blob_recycler,
|
||||||
|
blob_window_receiver,
|
||||||
|
);
|
||||||
|
|
||||||
Tvu {
|
Tvu {
|
||||||
replicate_stage,
|
replicate_stage,
|
||||||
@@ -225,7 +230,7 @@ pub mod tests {
|
|||||||
|
|
||||||
let tvu = Tvu::new(
|
let tvu = Tvu::new(
|
||||||
target1_kp,
|
target1_kp,
|
||||||
bank.clone(),
|
&bank,
|
||||||
0,
|
0,
|
||||||
cref1,
|
cref1,
|
||||||
dr_1.1,
|
dr_1.1,
|
||||||
|
@@ -36,7 +36,7 @@ fn converge(leader: &NodeInfo, num_nodes: usize) -> Vec<NodeInfo> {
|
|||||||
let spy_ref = Arc::new(RwLock::new(spy_crdt));
|
let spy_ref = Arc::new(RwLock::new(spy_crdt));
|
||||||
let spy_window = default_window();
|
let spy_window = default_window();
|
||||||
let ncp = Ncp::new(
|
let ncp = Ncp::new(
|
||||||
&spy_ref.clone(),
|
&spy_ref,
|
||||||
spy_window,
|
spy_window,
|
||||||
spy.sockets.gossip,
|
spy.sockets.gossip,
|
||||||
spy.sockets.gossip_send,
|
spy.sockets.gossip_send,
|
||||||
|
Reference in New Issue
Block a user