Vitalik Buterin: Finally Thinking Right
A couple of weeks back, I wrote a piece titled Vitalik Buterin: What Was He Thinking? After reading the disparaging comments by Buterin about the state of Ethereum, many readers were quick to agree. A common response was: if Ethereum is in bad shape, go and fix it. Easy to say but in the current decentralized world, these things take time.
Well, it is a good sign that at least Vitalik’s thinking process is going in the right direction. In a research forum last week, he introduced an on chain scaling solution that could create a mass transaction validation amounting to 500 per second.
How important could this be? Remember, these days the level is only about 15. As usual, there are challenges, such as computational intensivity. But since it is an on chain solution, it seems that issues like security that come with off chain solutions would be eliminated. Moreover, nothing is mentioned that would eliminate certain off chain solutions for small transactions.
We have excerpted a portion of Vitalik’s description taken directly from the forum. If you are deep into software development, this explanation should be easy to visualize. If you are like me, a perpetual student of technology, this stuff may be a bit too much. Either way, it is better to get the story in Buterin’s own words.
Excerpts From Research Conference
We can actually scale asset transfer transactions on ethereum by a huge amount, without using layer 2’s that introduce liveness assumptions (eg. channels, plasma), by using ZK-SNARKs to mass-validate transactions. Here is how we do it.
There are two classes of user: (i) transactor, and (ii) relayer. A relayer takes a set of operations from transactors, and combines them all into a transaction and makes a ZK-SNARK to prove the validity, and publishes the ZK-SNARK and the transaction data in a highly compressed form to the blockchain. A relayer gets rewarded for this by transaction fees from transactors.
The system is managed by a contract, whose state consists solely of two bytes32 values representing Merkle roots: address book (A) and balances+nonces (B). A starts off as a Merkle root of 224 zero entries, and B as a Merkle tree of 224 (0, 0) tuples.
There are three types of operations for transactors: (i) registration, (ii) deposit/withdraw and (iii) sending.
To register, a user needs to provide a Merkle branch showing some index i, where either i=0 and A[i]=0, or i > 0 and A[i] = 0 and A[i-1] != 0. The Merkle tree is updated so that A[i] now equals the msg.sender’s address, and the Merkle branch is logged so that a client reading logs can get all of the data they need to create their own Merkle branches.
To deposit or withdraw, a user needs to provide a Merkle branch showing some index i, where A[i] equals the msg.sender’s address, along with the corresponding branch for B[i], and the amount they want to deposit or withdraw, D (negative for withdrawals). The contract checks that B[i] + D >= 0. If D > 0, it verifies that (if the system is for ETH) msg.value == D * 10**12 (ie. the base unit of the system is 10−6 ETH) or otherwise calls transferFrom(msg.sender, self, D * 10**12) to the appropriate ERC20 token contract. If D < 0, it sends the ETH or token to msg.sender. The contract then updates the Merkle root so that B[i] += D. Note that for efficiency, we can combine together the registration and deposit steps for not-yet-registered transactors.
To send, a user constructs the data: from address index (3 bytes), to address index (3 bytes), amount (ETH’s ~100m supply requires 47 bits, so we can say 6 bytes, but most of the time <=4), fee (one byte floating point, top 5 bits are exponent, bottom 3 are mantissa), nonce (2 bytes). The user broadcasts (from, to, amount, fee, nonce) plus a signature.
Thinking In The Right Direction
What to make of Vitalik’s idea? There are two things. The first has to do with Ethereum 2.0 which encompasses innovations like Casper and sharding. When this will be ready is anybody’s guess. Secondly, ETH investors of late have been starved for encouragement from Mr. Buterin.
Those who have declared Ethereum dead and ETH bound for zero may dismiss this solution as just talk. It is hard to dispute that the crypto world is filled with lots of staried eyed promises these days. Nevertheless, for others who were financially harmed by Vitalik’s last comments, this is welcome news. At least his thinking is finally going in the right direction.
Featured image courtesy of Shutterstock.