Comments (5)
Receive data from a gossip socket:
Ncp::new() --> streamer::blob_receiver() --> Blob::recv_from(sock);
from bitconch-core.
RPU(Request Processing Unit)
Fetch Stage | Request Stage | Respond Stage |
---|---|---|
streamer::receiver(); packets::run_read_from(); | RequestStage::process_request_packets();Streamer::recv_batch(); request_processor.process_requests(); | streamer::responder();packet::Blob::send_to(); |
from bitconch-core.
NCP(Network Control Plane)
Receive packets by UDP socket
streamer::blob_receiver();
Send received packets by UDP socket
streamer::responder();
Crdt::listen();
|
handle_blob();
|
Process request based on Request Protocol defined in crdt
Crdt::handle_protocol();
from bitconch-core.
TPU(Transaction Process Unit)
workflow:
Clients --> Fetch Stage --> SigVerify Stage --> Banking Stage --> WriteStage Stage --> Validators
Fetch Stage:
Receive packet from client
streamer::receiver(socket, exit.clone(), sender.clone(), "fetch-stage"))
SigVerify Stage:
Verify received packets
let r = if sigverify_disabled {
sigverify::ed25519_verify_disabled(&batch)
} else {
sigverify::ed25519_verify(&batch)
};
Banking Stage:
Start NUM_THREADS thread to processing packets:
BankingStage::process_packets();
BankingStage::process_transactions();
bank.process_transactions();
Write Stage:
recover and open the ledger for writing
LedgerWriter::recover(ledger_path);
Process any Entry items that have been published by the RecordStage.
WriteStagei::write_and_send_entries()
vote_stage::send_leader_vote()
from bitconch-core.
Transaction Validation Unit
Fetch Stage:
Picked up incoming blobs from the replicate socket and repair socketJ:
BlobFetchStage::new_multi_socket(blob_sockets, exit.clone()); -->
streamer::blob_receiver(socket, exit.clone(), sender.clone());
Retransmit Stage:
RetransmitStage::new(
&crdt,
window,
entry_height,
Arc::new(retransmit_socket),
repair_socket,
blob_fetch_receiver,
); ----->
Crdt::retransmit(&crdt, b, sock);
Replicate Stage:
Transactions in blobs are processed and applied to the bank:
ReplicateStage::new(
keypair,
bank.clone(),
crdt,
blob_window_receiver,
ledger_path,
exit.clone(),
); --->
- streamer::responder("replicate_stage", Arc::new(send), vote_blob_receiver);
- LedgerWriter::open(p, false);
from bitconch-core.
Related Issues (20)
- Remove duplicate codes
- Support transaction history query on blockexplorer
- Upgrade block explorer to v1.1.2
- Add comments for source codes
- Fix node crash issue. HOT 5
- Upgrade javascript api (bitconch-web3j) to v1.1.4
- Upgrade Bitconch node engine RPC interface
- leader service && validator service crashed by "cannot allocate memory" HOT 3
- Correct typos and comments in the existing codes
- Reboot leader service failed due to "Resource temporarily unavailable"
- Adding some new features to morgan
- Fixing the " memory usage growing too fast by explorer" problem
- explorer service back online
- Test for balance transfer fails.
- Technical Weekly Report (Oct 22) HOT 4
- Technical Weekly Report (Oct 28) HOT 4
- New docker building scripts
- Seperate go source and rust into different repo
- Dependabot couldn't find the submodule vendor/bus-rust
- error: could not find `Cargo.toml` in `/home/ubuntu/Desktop/bitconch-core1` or any parent directory
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bitconch-core.