In this topic, I’m going to discuss about what are all the components that are there in Intel’s Hyperledger Sawtooth that you should know when you’re starting to develop blockchain applications with it.
I already wrote why anyone should see Hyperledger Sawtooth over Hyperledger Fabric in my previous topic, which you can checkout here:
The sawtooth validators are the actual nodes that share the data and the ledger. Validators communicate to each other to distribute the transactions and the data. It uses TCP connection and port 8800. There must be at least one validator to run the network.
In Hyperledger Sawtooth, the smart contracts are called as the transaction processors, which helps in validating each of the transactions with a business rules. Sawtooth support various languages to write transaction processors and the popular ones are
- Python: https://github.com/hyperledger/sawtooth-core/tree/master/sdk/python
- Rust: https://github.com/hyperledger/sawtooth-core/tree/master/sdk/rust
- Go: https://github.com/hyperledger/sawtooth-sdk-go
- Java: https://github.com/hyperledger/sawtooth-sdk-java
- C++: https://github.com/hyperledger/sawtooth-sdk-cxx
The next important component is the REST Api which is used to submit transactions to a transaction processor. The REST Api is connected with a validator with help of TCP in Port 4004 and has a open HTTP port 8080 to accept incoming transactions that are to be submitted. Rest API makes the transaction submitting process so simple and efficient.
Finally Ledger Sync is something that wont come out of the box, but still it’s one of a crucial component when it comes to a end to end blockchain product. The main use of ledger sync is to create database with the world state of sawtooth network. This state is extracted from the ledger (Leafs of Merkle Tree) and used for performing queries to data. Again sawtooth provides the flexibility of using any programming languages to create ledger sync. This works with help of data subscribers in sawtooth’s client SDK.
I’ve open sourced a Configurable Ledger Sync for Protobuf based Hyperledger Sawtooth Network, You can get the source code here:
Here is the table describing about the various language support for sawtooth’s TP SDK and Client SDK