Part 2, in this blog we look at the block lattice more in-depth, what makes it tick, how does it validate transactions, and so much more.
Nano has introduced a brand new block-lattice architecture in which accounts individually have their own blockchain that creates the lattice and achieves consensus by Proof of Stake (PoS) voting. Transactions are instant, with no fees, and Nano has no limit in terms of scalability, making Nano a very good candidate for peer-to-peer transactions. There is (virtually) no mining, and the amount of power required is minuscule making every day transactions for consumers a reality.
Unlike other cryptocurrencies Nano assigns every user their own blockchain or account-chain that records the accounts transaction and balance history. Only the account owner may update their chain. A transfer will require two transactions, one to send an amount, and the other to receive.
Inner workings (Block Lattice)
The block lattice isn’t one single long blockchain, it is in effect a database of blockchains where each user (node) gets their own blockchain that only they can add onto.
Users send funds by creating two blocks: one send block on their personal blockchain and one receive block on the recipients blockchain. Users receive funds by “pocketing” any outstanding receive blocks into their personal blockchain (this works automated upon log-in).
This means users do not need to be online to receive funds, whenever a user decides to access their funds, the wallet itself will automatically “pocket” any outstanding receive blocks onto their blockchain. Pocketing funds essentially means signing the receive block with your private key, so that it can be added to your personal blockchain.
- Once a node has accepted a “receiving” transaction, it runs the confirmation protocol
- It subsequently digitally signs the transaction after confirming it
- It then adds the block into its ledger (status pending)
- It then broadcasts the block out to the network to announce the block it has observed.
- The node then waits and observes incoming publish and confirm messages to see if any conflicting blocks are published.
- Non-voting nodes will transmit unsigned public blocks
- Voting nodes will sign the block with their voting key and publish a confirm message
- A message / transaction is considered confirmed if there are no conflicting blocks and when a 50% vote quorum has been reached
- If there is a conflicting block the node will wait 4 voting periods (15 secs per voting period, 1 minute total) and confirm the winning block, rejecting the losing block.
- If the node that was waiting receives the rejection, it will reject the block from its chain.
The network operates asynchronously, I.e. it isn’t necessary for any user to be online to receive the double-entry “receiving” transactions, the individual blockchain will synchronise upon the next log-in and the pending receiving transactions will be cleared then (either manually or automated). The transactions will run through the confirmation procedure at this point and the node then waits for the confirmation messages.
Visual representation of asynchronous transactions in the block lattice, for more information see chapter 5, block lattice visualisation.
Nano works around a principle of Network flooding, I.e. it expects all nodes to be aware of all transactions when they occur, in order to do so, a node broadcasts a block it hasn’t seen before to all other nodes in the network that it is aware of.
The nodes receiving it do the same (if they hadn’t seen the block previously), etc. until the entire network is aware of the transaction. This gives the greatest probability of all nodes receiving a copy of all transactions; or at least a probability high enough that 100% does not need to be achieved.
Visual representation of network flooding, see chapter 6 for more information.
Network Echo Period
In an ideal situation, each node will receive a duplicate copy of the same transaction at some point (through network flooding), the time between receiving this new transaction the first time and receiving of the last duplicate copy is referred to as the network echo period.
This gives a complete view of transactions accepted by all other nodes on the network and this period is probabilistically based on the network latency between nodes.
A node can establish a reasonably bound for itself for the duration of its own network echo.
Visual representation of network echo, see chapter 7 for more information.
Specific to Nano
The following is specific to how Nano operates, depending on how you’d set up your own version of the block lattice, you may or may not use all of the below.
In Nano, there is a different confirmation system based on “representatives”. In general, all that is needed is your cryptographic signature on your “send” and “receive” blocks. When the node syncs, it runs through the ledger to ensure that the signatures are authentic (remember that all of this is done in a matter of seconds).
In order to prevent double-spend attacks, Nano has a “representative system”. A representative in the system is basically an address with a lot of money. The representative acts as the arbiter of which double spent block to go through and propagate through the system. I’ll elaborate a lot more on potential attack vectors in chapter 4.
Incentive for Running Full Nodes
A very common question for Nano is, who is going to pay for running the full nodes, in most crypto currencies there is an incentive for miners to run full nodes because they can collect mining fees (coins and transaction fees); there is no mining in Nano however.
A node is basically a computer that facilitates transactions across the global network. Nodes may be added or removed at any time by anyone on the internet and the cryptocurrency, as a whole, will continue to function. Cryptocurrencies tend to need a minimum number of nodes to prevent attacks on the network, but that’s another topic (see chapter 4 on attacks).
Use Case for Nodes
Every exchange needs to host their own nodes as a point of withdrawals and deposits. Let’s assume every exchange needs 5 nodes on average for load balancing purposes and upgrades. (They will need more or less than that, depending on traffic, but 5 is a nice little conservative estimate.) Now let’s figure that once these coins become popular, they will be available on roughly 100 exchanges around the world. Again, a conservative estimate, as there are hundreds of popular exchanges around the world, with new ones popping up all the time. This gives us 500 nodes for exchanges, once Nano is widely adopted in the exchange industry.
There is also a commercial need to run nodes. Businesses small and large are joining the cryptocurrency space, and they need to host nodes to provide for our services. Let’s suppose there are thrice as many online stores, marketplaces, and services than exchanges.
I think this is pretty conservative, given that there are way more online stores than there are online exchanges on the internet. Let’s assume they will need an average of only three nodes each, since they will probably have less traffic than a highly popular exchange. This gives us a total of 900 nodes in the commercial space.
We will also have many smart devices in our future. Forbes references a paper that predicts 75 billion IoT devices by 2025. Let’s say that just 0.001% of these devices will need to run full nodes in order to achieve a high quality of service. That gives an additional 750 thousand full nodes running on the network in due time.
So with all these industries combined, there will surely be a strong baseline of nodes at any given time. I predict that Nano will gradually and naturally ramp up their node numbers over the coming years, as they gain more and more popularity.
I believe the block lattice to be a next step in blockchain technology, vastly embracing and dramatically improving on what Bitcoin and The Blockchain has offered to the world. This technology has the potential to become a very big part of everyone’s daily lives, depending on the use cases that are being developed based on the block lattice, I for one can think of a myriad (and I’m working on a few at BlockchainLabs.ai).
My thanks to the Nano / Raiblocks / XRB / Block lattice team for giving us such a fantastic piece of technology!
Acknowledgements / References
• Title page “Intelligent Solutions” courtesy of http://www.hloom.com/cover-pages/
• Page header / footer “Abstract blue lights” created by Kotkoa – Freepik.com
Read the original article on Steemit