Introduction to DAG and Blockchain-less Cryptocurrencies
We examine a new cybersecurity project, IOTA, that looks to replicate the success of Bitcoin without its reliance on blockchain technology.
Join the DZone community and get the full member experience.
Join For Free
Blockchains have a lot of issues.
Even the most devoted advocates of the technology cannot dispute that the problems of scalability and, in the case of Bitcoin, high transaction fees are huge bottlenecks that are preventing blockchains from large-scale adoption.
There are some proposals circling around the space which, supposedly, might repair Bitcoin’s and Ethereum’s congestion problem (such as Segregated Witness and Bidirectional Payment Channels) but none of them have been battle-tested yet. They hold vast promise, but there are no guarantees, at this point, that they will deliver as expected.
There are also a few projects that have decided to take a more radical approach and ditch the blockchain data structure altogether. For example IOTA, the project I’m going to discuss in this article has built a cryptocurrency of a new type using something called DAG (Directed Acyclic Graph).
In this post, I’ll describe how Directed Acyclic Graphs work, in simple terms, and explain the benefits of using it.
Blockchain vs. DAG
In a nutshell, blockchains are cryptographically verifiable lists. They are single Linked Lists - common data structures where each new entry (block) includes a reference to a previous one.
This flat, sequential nature of blockchains is what gives us the ability to trace back any block written in a ledger. But it is also the root of the scalability issue and the reason why new blocks on Bitcoin are appended every 10 minutes.
A Directed Acyclic Graph is a different type of data structure. It’s an implementation of Graph, and it allows the networks using it to circumvent some of the blockchain’s most daunting limitations.
In DAGs, all the nodes are pointed in the same direction, and no element can reference back to itself (loop). It is a tree-like data structure which is similar to a file directory structure where folders contain subfolders which branch off into other subfolders and so on.
Another example of DAG is a conventional ancestry tree. From a theoretical standpoint, it isn’t a tree; it is actually a directed acyclic graph, as in a tree-like structure there must be unique paths between every two nodes.
Unlike Bitcoin or Ethereum, DAG-powered networks allow appending parallel nodes as long as everything flows in the same direction. This opens a lot of possibilities.
How IOTA Uses DAG
IOTA is currently the most talked about blockchainless cryptocurrency. The project has been covered a lot by major outlets due to its unique features and claims to have completely removed miners and transaction fees.
On Bitcoin, miners compete in solving a mathematical puzzle for the opportunity to write to the blockchain’s history. Those who possess lots of hashing power have the edge over those who don’t, and there's a relatively small group of people (those with the most advanced mining hardware) that usually collect the rewards for securing the blockchain. On IOTA, however, everyone’s a miner; everyone is responsible for both issuing and validating transactions.
What this means is that if you’d like to submit a transaction to IOTA, you must validate two previous transactions yourself (and also provide a small amount of PoW to prevent spam on the network).
The implications of this are enormous. Since everyone participates in executing a consensus, there isn’t a centralized consensus pool (like there is on Bitcoin where a few big companies control all the hashing power), and there are also no transaction fees. The network can easily scale, and each new member contributes a little to making IOTA faster by just joining in. In contrast to traditional blockchains, IOTA becomes more robust and speedy as it gets more adoption and usage.
Besides that, IOTA enables attaching data to transactions, which is particularly useful in the context of machine-to-machine interactions.
Concerns About IOTA
Though IOTA truly is ground-breaking in terms of vision, it has not been without a few issues.
IOTA uses its own cryptographic algorithm, which, according to the majority of experienced cryptographers, is a huge red flag. Much like the messaging platform Telegram, that has rolled out its own crypto, the project has received lots of criticism because of this.
In 2017, MIT issued a report outlining a major weakness in IOTA’s system. The issue has been patched since, but, as most projects that use new, untested crypto algorithms, IOTA is likely to face other problems of this type in the future.
In its current state, IOTA is a fairly small network that malicious actors could mount an attack on without much trouble. On Bitcoin, as you might know, miners who collectively control over 50% of the network’s hash rate can collude and start invaliding legitimate transactions, double-spending crypto coins, etc. But to attack IOTA one only needs 33% of the network hashing power. And amassing it, for someone who owns GPUs, is relatively easy.
The security issue might go away in the future when there are more members and the network is strong enough to sustain against a 33% attack on its own. In the meantime, however, IOTA has resorted to using a centralized server - Coordinator (Coo) - to resolve the problem. Every transaction on IOTA has to be validated through a node that the IOTA Foundation runs centrally. Therefore, currently, IOTA has a single point of failure and is no more decentralized than, for example, Ripple.
Conclusion
IOTA is one of the most promising projects I’ve seen in years. If it does deliver on its promises, at least on the major ones, it might make blockless distributed ledgers a new standard in the world of crypto. However, as I’ve mentioned before, it’s still early days. So let’s not get our hopes up too much. We have yet see if any of these revolutionary ideas can come to fruition.
Opinions expressed by DZone contributors are their own.
Trending
-
How To Approach Java, Databases, and SQL [Video]
-
Microservices With Apache Camel and Quarkus (Part 2)
-
Writing a Vector Database in a Week in Rust
-
Health Check Response Format for HTTP APIs
Comments