Intel has just released a new product on Github called “Sawtooth Lake” – a highly modular platform for building, deploying and running distributed ledgers to provide companies that don’t need a central authority with the ability to run their own Blockchains.
Sawtooth Lake will allow companies that have no need for a central authority essentially to run their own Blockchain, providing a permanent digital record.
In Sawtooth Lake the data model and transaction language are implemented in a “transaction family” and Intel will provide three transaction families that are sufficient for building, testing and deploying a marketplace for digital assets:
- EndPointRegistry – A transaction family for registering ledger services.
- IntegerKey – A transaction family used for testing deployed ledgers.
- MarketPlace – A transaction family for buying, selling and trading digital assets.
This set of transaction families provides an “out of the box” ledger that implements a fully functional marketplace for digital assets.
Sawtooth Lake abstracts the core concepts of consensus, isolates consensus from transaction semantics, and provides two consensus protocols with different performance trade-offs. The first, called PoET for “Proof of Elapsed Time”, is a lottery protocol that builds on trusted execution environments (TEEs) provided by Intel’s SGX to address the needs of large populations of participants. The second, Quorum Voting, is an adaptation of the Ripple and Stellar consensus protocols (Ripple and Stellar developed consensus protocols that extend traditional Byzantine Fault Tolerance for open participation) and serves to address the needs of applications that require immediate transaction finality.
For the purpose of achieving distributed consensus efficiently, a good lottery function has several characteristics:
- Fairness: The function should distribute leader election across the broadest possible population of participants.
- Investment: The cost of controlling the leader election process should be proportional to the value gained from it.
- Verification: It should be relatively simple for all participants to verify that the leader was legitimately selected.
Sawtooth Lake provides a Nakamoto consensus algorithm called PoET that uses a trusted execution environment (TEE) such as Intel® Software Guard Extensions (SGX) to ensure the safety and randomness of the leader election process without requiring the costly investment of power and specialized hardware inherent in most “proof” algorithms. Their approach is based on a guaranteed wait time provided through the TEE.
Basically, every validator requests a wait time from a trusted function. The validator with the shortest wait time for a particular transaction block is elected the leader. One function, say “CreateTimer” creates a timer for a transaction block that is guaranteed to have been created by the TEE. Another function, say “CheckTimer” verifies that the timer was created by the TEE and, if it has expired, creates an attestation that can be used to verify that validator did, in fact, wait the allotted time before claiming the leadership role.
The PoET leader election algorithm meets the criteria for a good lottery algorithm. It randomly distributes leadership election across the entire population of validators with distribution that is similar to what is provided by other lottery algorithms. The probability of election is proportional to the resources contributed (in this case, resources are general purpose processors with a trusted execution environment). An attestation of execution provides information for verifying that the certificate was created within the TEE (and that the validator waited the allotted time). Further, the low cost of participation increases the likelihood that the population of validators will be large, increasing the robustness of the consensus algorithm.
Intel’s “proof of processor” algorithm scales to thousands of participants and will run efficiently on any Intel processor that supports SGX.
The Sawtooth Lake platform is distributed in source code form with an Apache license. You can get the code here and start building your own distributed ledger.