Distributed and assistive technologies
Technologies that can be considered ‘distributed’.
Stuart Haber and W. Scott Stornetta already envisioned a cryptographically secured chain of blocks whereby no one could tamper with timestamps of documents in 1991. In 1992, they upgraded their system to use Merkle trees, increasing efficiency and enabling the collection of more documents on a single block. Satoshi Nakamoto, a person or a group of people, developed the first application of the digital ledger technology in 2008, BitCoin.
Data is structured in blocks in order of transactions that are validated by miners.
Each block produces a unique hash that identifies the transaction. If one attempts to alter the details of the transaction, a different hash will be generated. This can be evidence of a corrupted and invalid transaction.
Transactions are published on a public ledger to which every node has access (transparency). The distributed nature of the public ledger makes it even more difficult for parties to tamper with information.
Miners can postpone or even cancel a transaction.
Traditional Blockchains rely on Proof of Work. These need many computations and as a result, the number of transactions per second is relatively low.
A transaction has to validate numerous transactions before being valid.
As blocks in blockchain multiply, it becomes increasingly difficult in terms of computations to achieve new blocks and mining becomes more power-intensive (expensive).
The hashgraph algorithm was invented by Leemon Baird for achieving consensus quickly, fairly, efficiently, and securely.
Hashgraph achieves transaction success solely via consensus timestamping to make sure that transactions on the network agree with each node on the platform.
On a Hashgraph network nodes do not have to validate transactions by Proof of Work or Proof of Stake. Consensus is built with the Gossip about Gossip and Virtual Voting techniques instead, increasing the number of transactions per second.
And consensus timestamping avoids the Blockchain issues of cancelling transactions or by putting them on future blocks.
These consensus techniques also facilitate fairness.
Developers do not need a license but need the platform coin instead. API calls cost a micro-payment to the company.
All use cases where trust is immutable and incorruptible, for example:
Cryptocurrency as a service for support for native micropayments
Micro-storage in the form of a distributed file service that apps can use
A DAG is a type of distributed ledger technology that relies on consensus algorithms. To prevail, transactions require majority support within the network. As a result, there is more cooperation and teamwork and nodes have equal rights. Such networks stick to the original goal of Distributed Ledger Technology, to democratise the internet economy.
No blocks. No chain. DAG is a structure that is connected like a mesh.
It connects current data transactions with previous ones.
With nodes having equal rights, nodes do not have to refer to another node.
A consensus-based system where nodes decide what happens to give a semblance of democracy as compared to platforms that go through a central command.
For a transaction to succeed, it has to validate only two of the previous transactions.
Transactions in DAGs adds throughput as many more validations happen.
Economic infrastructure for data sharing on the Internet of Things
Remote Patient Monitoring
Decentralised Peer-to-Peer energy trading
Holochain combines Blockchain, BitTorrent and Github ideas for creating a technology that distributes among nodes to avoid any instance of centralised control of the flow of data. A truly revolutionary technology. Blockchain seeks to decentralise transactions such that people can interact directly without the need for a middle party. Holochain distributes the interactions.
MetaCurrency is the root, their next-generation Operating System is called Ceptr, a Holochain with Holo being their first real-world application system.
Each node runs on a chain of its own, giving nodes the freedom to operate autonomously. Not all data needs to be shared with everyone. If two people wish to transfer value, and they agree, others do not have to know about it.
There is no need for miners. Transaction fees are almost non-existent. There is no tokenization on the platform. Smart contracts rule.
Users can store data using keys in the Holochain distributed hash table (DHT), but the data stays in actual locations “distributed” in various locations across the globe, relieving the network and improving scalability.
Holochain creates a network composed of various distributed ledger technology networks.
A developer will only need confirmation from the single-chain that makes up the whole DLT network.
Holochain liberates us from corporate control over our choices and information.
Scalable distributed apps with data integrity
p2p networks with validating distributed hash tables
A technology inspired by nature
Systems where not all parties need to participate:
Shared document updates
A truly decentralised web will require the network to provide privacy and trust by design. This requires algorithms that allow for trustless management. Zero knowledge proofs and/or cross-validation enables nodes to verify the existence and validity of exchanges. The challenge is to maintain a distributed consensus, without actually being able to see or make public any of the transaction details, guaranteeing privacy.
Zero Knowledge proofs
A blockchain is a data structure, a linear transaction log, replicated by devices whose users are rewarded for logging new transactions.
A change in any block invalidates every block after it, which means that an adversary can not tamper with historical transactions.
A user only gets rewarded if they are working on the same chain as everyone else, so each participant has an incentive to go with the consensus. The result is a shared definitive historical record.
It is not truly “trustless”, because most of its users are trusting the software, instead of trusting other people.
Blockchain systems do not magically make the data in them accurate or the people entering the data trustworthy, they merely enable any user to audit whether it has been tampered with.
Making it possible to download the blockchain from a broadcast node and decrypt the Merkle root from the Linux command line to independently verify transactions will only be used by the tech-savvy.
In Yao’s Millionaire’s Problem, two millionaires want to find out if they have the same amount of money without disclosing the exact amount. This problem is analogous to a more general problem where there are two numbers
b and the goal is to determine whether the inequality
a ≥ b is true or false without revealing the actual values of
b. Problems like these can be used in Zero Knowledge Protocols or Zero Knowledge Password Proofs (ZKPs). The latter, Zero Knowledge Password Proof, is a way of doing authentication where no passwords are exchanged, which means they cannot be stolen. The first term, Zero Knowledge Protocol, has appeared more frequently within blockchain circles.
Zero Knowledge Protocols
A protocol has to have the following properties to be considered Zero Knowledge Proof:
Completeness — If the statement is true, an honest verifier (that is, one following the protocol properly) will be convinced of this fact by an honest prover.
Soundness — If the statement is false, no cheating prover can convince an honest verifier that it is true, except with some small probability.
Zero-Knowledge — If the statement is true, no verifier learns anything other than the fact that the statement is true. In other words, just knowing the statement (not the secret) is sufficient to imagine a scenario showing that the prover knows the secret. This is formalized by showing that every verifier has some simulator that, given only the statement to be proved (and no access to the prover), can produce a transcript that “looks like” an interaction between the honest prover and the verifier in question.
Zero-knowledge proofs are probabilistic “proofs” (useful for “good enough” algorithms) rather than deterministic proofs, and techniques exist to decrease the soundness error to negligibly small values.
September 2017, the first ZKP was conducted on the Byzantium fork of Ethereum, and perhaps we can adapt it for our purpose.
The knowledge complexity of interactive proof systems, Shafi Goldwasser, Silvio Micali, Charles Rackoff, February 1989
How to Explain Zero-Knowledge Protocols to Your Children, Jean-Jacques Quisquater, Louis Guillou, Thomas Berson, 1990
A Survey of Noninteractive Zero-KnowledgeProof System and Its Applications, Huixin Wu and Feng Wang, May 2014
A Mind-Bending Cryptographic Trick Promises to Take Blockchains Mainstream, Mike Orcutt, November 2017
A smart contract is a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts allow the performance of credible transactions between disparate, anonymous parties without third parties (central authority, legal system, or external enforcement). These transactions are trackable and irreversible and serve to increase the integrity of the ledger.
Research Directions in Blockchain Data Management and Analytics, Hoang Tam Vo, Ashish Kundu, Mukesh Mohania, 2018
Voting models for consensus have certain security properties (they can be asynchronous Byzantine Fault Tolerant and achieve consensus even when some nodes are malicious and some messages are significantly delayed), but generally require that a large number of messages be sent amongst nodes to get to consensus. Hashgraph has come up with a voting mechanism where this would not be necessary …
I Want Your Vote! (Oh Wait I Already Know It), Paul Madsen, 2017
Gossip about gossip
Gossip about gossip, based on the gossip communication protocol, enables nodes to efficiently and rapidly exchange data with other nodes at internet scale. There are currently three known libraries that implement a gossip algorithm to discover nodes in a peer-to-peer network: Apache Gossip, gossip-python and Smudge.
Apache Gossip (UDP, Java)gossip-python (TCP)Smudge (UDP, Go)