The latest upgrade to the popular Ethereum blockchain protocol – Byzantium –went live today, adding additional privacy and performance features.
Blockchains claim to offer users additional anonymity compared to standard systems because they're decentralised. Bitcoin is focused on cryptocurrencies, while the Ethereum network is built to run applications ranging from digital ledgers to video games.
Most notably, the updated network adds new opcodes programmers can use to make the network easier to work with. One, called "revert", lets them respond differently to function execution errors. For example, if a function for requesting funds from someone failed, a message could appear saying the requester wasn't authorised or their daily limits were reached.
"Revert" is activated for any Ethereum programs ("smart contracts") written in the standard Solidity language that were deployed before the blockchain switched to Byzantium, Ethereum developer Christian Reitwiessner told The Reg.
Byzantium also adds opcodes for supporting future, post-devcon updates to the Solidity compiler such as sharing data of any size between smart contracts, or accessing data without changing the blockchain state.
Elliot Shepherd, VP of technology at identitii (which has a blockchain database), told The Reg: "It's a shame that return values didn't make it into transaction receipts," but added, "the opcode changes look good, and should help us write clearer and safer smart contracts."
Byzantium also adds native support for certain mathematical operations that developers could use to help verify encrypted transactions, called zero-knowledge proofs. This would add an extra layer of privacy to the network because you wouldn't be able to tell a user's identity or account balance – only check that a transaction occurred.
Patrick McCorry, a post-doctoral scientist studying blockchains at University College London, helped build a decentralised voting system (for maximising voter privacy) on Ethereum using a third-party zero-knowledge-proof cryptography library. "The problem we faced was that running cryptography on Ethereum was really expensive," he told The Reg.
Users interact with smart contract programs by making transactions, which they "pay" for by using up "gas" they've purchased with Ethereum's currency, Ether. But because the network is shared among everybody, gas costs for computations can be high.
With the third-party library for these cryptographic functions in McCorry's system, it cost about 2.5 million gas, or $2, to prove an encrypted vote was "yes or no". So if there were 40 voters, it would cost about $80 to vote.
McCorry is going to be calculating new costs, but said native support for these cryptographic functions is "really exciting" because he figures perhaps users might now pay less than $1 per vote. Not dirt cheap, but much better.
The catch is that while it might be relatively simple for crypto-minded folk such as McCorry, it could still be hard for ordinary devs to use. Reitwiessner told The Reg his team is "working on" tools for making cryptography easier for the less numerically literate.
On its blog, Ethereum recommended that users update their clients for Byzantium (if they haven't already), or stay stuck on the old chain with the old rules. ®