NOCUST 101

NOCUST is the construct at the core of Liquidity Network payment hubs. A few months ago the team wrote an academic paper describing how it works. More importantly, we formalized and demonstrated its security properties. Formalism is very important to be convinced that these layer 2 constructs work. Unfortunately, it is something that many of the teams in the Blockchain space have neglected. However, academic papers are often difficult to read and often only accessible to technical researchers.

In this blog post we will explain the basics of NOCUST so anyone, with only a small amount of knowledge about Ethereum, can understand it.


What are we trying to achieve?

Let’s start by explaining what “Non-custodial financial intermediaries” are? Your regular bank is a custodian. This means that you trust them to hold and invest your savings, as well as executing your payments on your behalf. Hopefully, your bank will not go bankrupt and will not attempt to steal your money, but unfortunately, these things do happen.

Now imagine a non-custodian bank! You would no longer have to trust your bank to look after your funds. In addition, they wouldn’t be able to run away with your funds or invest them poorly. Whatever happens, your money is always safe, you can always retrieve it and you can sleep at night…phew! In 2018, with the advent of Blockchain technologies, this is made possible. “Everyone can be their own bank” they said! By keeping your private key safe you are your own custodian. However, we quickly run into the issues with early Blockchain technology. It is slow, transactions are expensive and nothing is private. At present, Ethereum can process approximately 15 transactions per second at full capacity. To put this into context, at full capacity, the Visa network can transact approximately 50,000 transactions per second. In addition, the user experience is poor and a user often has to wait for a couple of minutes before a transaction is settled. Lastly, fees are unpredictable — imagine jumping on the bus and being charged a different amount each time.

Layer-2 scaling solutions such as NOCUST solve all these issues! A NOCUST based payment hub allows its users to make transactions off-chain, without touching the blockchain and without any trusted third-party. It has the advantage of having instant transaction confirmation (no more waiting around) and zero gas costs (not just stable, but non-existent). It can also reduce the load on the blockchain and can, therefore, scale to billions of transactions per second.

NOCUST leverages the power of a smart contract as a programmable root of trust. As illustrated above, a payment hub is composed of 2 crucial components. A smart-contract on the blockchain and a payment hub operator. The operator is a single individual running a server, he can be seen as the “Non-custodial banker”, let’s call him Henry.

If Bob wishes to use the payment hub he can just join by connecting to the server. There is no need to do any on-chain transaction for that. Bob can also deposit some funds into the smart contract to have some ETH available to send off-chain. Now Bob wants to send some ETH off-chain to Alice, another user of the same payment hub. Bob needs to talk to Henry, the payment hub operator. As soon as Henry gave his approval the payment is effective, no need to wait for any block confirmations. We have transferred some ETH from Bob to Alice without having to wait and none of them paid any gas fees!

How does that work under the hood? And more importantly, is it secure? Can Henry steal Alice or Bob’s money? Let’s see below…

First, the important thing to notice is that all users funds are pooled and stored into the NOCUST smart contract. Users can make deposits or withdraw their balance by interacting with the smart contract. This means that even if Henry disappears, get kidnapped by aliens or his server gets bombed you will still be able to retrieve your funds by requesting a withdrawal on the smart contract. However, a crucial question remains, how does the smart-contract know the balance that can be withdrawn if transfers happen off-chain?

Checkpoints

At a regular time interval, the smart contract is expecting a checkpoint from Henry. A checkpoint consists of a root hash of a special account state Merkle tree. Put another way, this root hash is a list of all of the account balances, of all users of the payment hub. The smart-contract will then use this small list to compute how much users are allowed to withdraw.
Currently, our payment hub on the Ethereum mainnet is expecting a checkpoint from Henry every 36 hours. Therefore, every 36 hours the account balances of all the users in the payment hub can be updated at once in one single operation on the blockchain. If we have 1’000 users each making100 transfers over a period of 36 hours using their regular blockchain wallet it would result in 100’000 transactions on the Blockchain. While if they use their NOCUST wallet, this would result in one single transaction on the blockchain executed by Henry.

We now we have two new questions, what if Henry is cheating? And how are the transfers instant?

What if Henry is cheating?

So Henry is setting the balance of everybody in the checkpoint… How do we make sure that Henry is being honest? How do we make sure that Henry can’t cheat his user’s? NOCUST addresses this issue by providing an efficient dispute mechanism to ensure that the payment-hub can operate only when Henry is being honest. Users can use the smart contract to open a dispute if they disagree with Henry’s checkpoints. The dispute resolution requires Henry to prove his honesty. If users win the dispute against Henry the last fraudulent checkpoint is canceled and the payment hub is being shut down for everybody! From that point in time the only possible operation is to withdraw your funds from the smart-contract. Therefore, if users are willing to verify Henry’s checkpoints and are willing to challenge if they detect any inconsistencies, they are safe from Henry cheating.

Because the disputes happen in an impartial smart contract that relies on the security of the underlying Blockchain, nobody can interfere with the dispute resolution. A checkpoint is disputable during the 36 hours following his submission. Once the dispute period has passed, the checkpoint is considered valid.

Obviously, the biggest challenge for NOCUST is to cover all the possible attack scenarios that Henry and other malicious users can potentially set up to attempt to steal money. This will be the topic of another upcoming blog post.

Instant transactions

Earlier we promised you instant transfers, but now accounts are only being updated once every 36 hours. This could mean a very long confirmation time. I have to wait for the next checkpoint for my account balance to be updated. Additionally, each checkpoint has to go through a dispute period of 36 hours. Therefore, an off-chain transfer needs between 36 and 72 hours before being fully confirmed. This is a lot worse than the 15-second Ethereum block interval that I have to wait with my regular wallet. How is this problem addressed?

NOCUST transfers have instant transaction finality because Henry provides some collateral money as a guarantee for the transactions that are not yet included in the checkpoint. So even though the transaction that I received is not fully confirmed, if something goes wrong in the future, for example, the hub loses a dispute. There is a pool of collateral where I can be compensated for my transfer, that has not yet been confirmed.

In summary, NOCUST revolutionises the way people trade and interact. Through a network of payment hubs, free, instant and secure off-chain transfers and the exchange of digital assets is made possible without the oversight of any third parties. NOCUST gives people complete ownership over their funds, making a future of inclusion and trust without the need for a third party a reality.


The Liquidity App can be downloaded from:

Android App: https://play.google.com/store/apps/details?id=com.liquiditynetwork.wallet

iOS App: https://itunes.apple.com/ch/app/liquidity-network-wallet/id1395924630?l=en&mt=8

For questions please join us on Telegram https://t.me/liquiditynetwork/ or our dedicated developer Telegram or more technical questions.