What brought Byzantium, an update to the Ethereum blockchain



Acne Buterin with friends celebrate the successful fork of Byzantium. October 16, 2017



October 16, 2017 at 05:22 UTC there was the fifth fork in the history of the Ethereum system - the second most popular cryptocurrency on the world market after Bitcoin. Ethereum's capitalization has grown particularly in recent months, in the wake of a stunning increase in the popularity of ICO tokens, which use the Ethereum token standard ERC-20 .



Software upgrade cannot be called completely successful. In the past few days, Ethereum software with Byzantium support has repeatedly responded due to serious bugs. The developers (pictured above) were in a hurry to meet the deadline before the planned fork. Not everyone believed that they would have time: some people expressed the opinion that with such serious bugs, it is better to postpone the fork for several days. But no. Update Byzantium took place according to plan.



Byzantium and the future Constantinople are two parts of a large Metropolis update. This is the largest of all the Ethereum upgrades foreseen in 2015, when the Ethereum development plan was drawn up.



Byzantium



Byzantium includes nine Ethereum enhancement protocols (Ethereum improvement protocols, EIP), that is, nine separate patches. These include fixing issues with complexity adjustment, REVERT operations, STATIC CALL operations, complexity delay function, and inserting transaction return data into the receipt. Here is the complete list of changes: EIP 100 , EIP 140 , EIP 196 , EIP 197 , EIP 198 , EIP 211 , EIP 214 , EIP 649 , EIP 658 .



All these patches should improve network efficiency and reduce the risks of exploits. Most of them introduce rather minor changes that are not immediately obvious to those who are not involved in the development of the protocol. But there are quite important changes.



For example, one of them is associated with processing a bad code in smart contracts. Payment will not work if there are programmer errors, and a programmed action may occur, depending on the type of error. In addition, this patch makes changes to the life cycle of the contract. So, now contract updates can be pre-programmed, that is, configured in the original code.



In addition, contracts get better protection. Special measures have been developed that protect against potential reentrancy attacks. If someone has not met with attacks of re-entry, then look at the code for such a contract :



pragma solidity ^0.4.8; import "./HoneyPot.sol"; contract HoneyPotCollect { HoneyPot public honeypot; function HoneyPotCollect (address _honeypot) { honeypot = HoneyPot(_honeypot); } function kill () { suicide(msg.sender); } function collect() payable { honeypot.put.value(msg.value)(); honeypot.get(); } function () payable { if (honeypot.balance >= msg.value) { honeypot.get(); } } }
      
      





Here we see how the re-entry attack is organized. The HoneyPot



contract will continuously send coins to the HoneyPotCollect



address, as long as it has money, until it is completely empty.



This code can be embedded in other people's contracts, from which Byzantium patches are trying to protect the system.



The new function of inserting transaction return data into the receipt allows light clients to determine the success of a transaction without actually performing it in the Ethereum virtual machine.



Another EIP 649 patch postpones the use of the “complexity bomb” with the transition to proof of ownership (PoS), which makes mining meaningless. It should protect against the fact that the transaction time becomes too long (now the air transactions pass in 25 seconds, which is much longer than the standard for Ethereum in 10 seconds). This patch should also reduce the remuneration of miners for the blocks from 5 ETH to 3 ETH, speed up and reduce the cost of mining.



Another patch corrects an error in the algorithm for changing the complexity of mining, so that now the block calculation speed will become more stable.



Finally, as part of Byzantium, there is something called zk-SNARK (Zero-knowledge Succinct Non-interactive ARgument of Knowledge) - confirmation of transactions with zero knowledge, the foundation of the anonymous cryptosystem protocol Zcash. Now in Ethereum, completely anonymous private transactions will be available.



The next after Byzantium is scheduled to be updated Constantinople, the second part of the upgrade Metropolis. There will be presented even more changes and fix new bugs that will surely come out in the future after the current updates. The system is only at the initial stage of development, and so far there are too many holes in it. But gradually, these holes are closing, so finding new exploits is becoming increasingly difficult.



The current fork is the first one, which is held in the conditions of wide public interest and great popularity of Ethereum, therefore special attention is riveted on it. Judging by the fork log , mining in the old block chain has stopped. All switched to a new one. And the course Ethereum almost recovered after some collapse on the eve of the fork.



In general, everything went well. And the Ethereum developers, along with Vitalik , have already marked this event in an intimate setting, that is, at home next to the table with forks lifted into the air.



All Articles