What will Metropolis mean for Ethereum?

"What will Metropolis mean for Ethereum?" Great question. Metropolis is the third out of four planned transitions for Ethereum, which was deployed in a manner that expects certain major transitions between stages of development. The first stage of development was called "Frontier." Frontier involved the pre-sale of ether and the first pre-beta version of [the Ethereum network]. The current or stage of Ethereum that we are running today is called "Homestead." Homestead is planned to end in the next year and will transition to the third stage called Metropolis. It is predicted and named in advance that the final stage of Ethereum -- [where it will] settle, if you like -- will be called "Serenity." So Frontier, Homestead, Metropolis, and Serenity are the four evolutionary stages of Ethereum. Metropolis was actually planned for 2017, or perhaps even the end of 2016; because of the DAO incident, the [Ethereum Classic] fork, and several denial-of-service attacks that occurred during Homestead, instead the developers were delayed and distracted fixing security problems, doing a number of other hard forks to address certain vulnerabilities discovered in Homestead [code]. As a result, Metropolis has been delayed. It is expected in 2018 and moving pretty fast now.

Metropolis introduces a number of changes

Metropolis introduces a number of changes to Ethereum [that will] happen in two stages: "Byzantium," the first stage, and "Constantinople," the second stage. Each of those will be a hard fork, perhaps more than one hard fork, that will introduce changes into Ethereum. A couple of big [changes], specifically for Byzantium: the introduction of zk-SNARKs, the technology behind Zcash, to do zero-knowledge transactions... for very high levels of confidentiality and privacy. Native execution of zk-SNARKs has been a goal of Vitalik Buterin's for a while now. It will be introduced with Byzantium.

Moving towards proof-of-stake

The other very big change in the first stage of Metropolis, is the move towards proof-of-stake. Today, Ethereum operates using a proof- of-work mining algorithm called Ethash, that uses the SHA-3 hash function (a subset of Keccak). Similar to how Bitcoin's mining [uses] SHA-256, but with a few changes that... make it a bit more memory intensive, [in an attempt to] prevent the easy development of ASICs. In Byzantium, a new mechanism will be introduced, which is proof of stake. Proof-of-stake will be using a protocol called "Casper." [See video description notes for clarification!] Proof-of-stake is different from proof-of-work in that [transaction validation happens] without mining; instead it [involves] staking or betting an amount of ether in the validation of a block. If they validate a block that is broadly accepted by the network, they receive a small reward in proportion to the amount of stake they bet. If they approve a block that the rest of the network rejects, then they lose their stake. This mechanism of reward and punishment is different than the mechanism of mining... that requires computation with repeated hashing. Ethereum [will not] move directly to proof-of-stake. Instead, in the first stage, it [will] move to a hybrid environment... where it uses proof-of-work and proof-of-stake simultaneously.

Difficulty bomb

Another big change coming with Byzantium is the defusing of the difficulty bomb. Ethereum had a planned system within it called the difficulty bomb, intended to force the developers... to move to proof-of-stake by making it increasingly difficult to mine [ether] using proof-of-work. That difficulty bomb is expected to increase the [average] validation [time] of blocks from... every 14 seconds to more than 15 seconds in the next three months, then to 28 seconds within six months. Exponentially, the difficulty will increase until it is impossible to mine transactions on Ethereum. That is obviously not ideal. Due to the delays in the deployment of Metropolis, now the difficulty bomb is upon us. One of the first changes that happens with Byzantium... is pushing back the imposed difficulty, to give more time to deploy proof-of-stake.

Account abstractions

A couple of interesting developments in Metropolis, is the introduction of account abstractions. Gradually, Ethereum is moving to blur the line between the two account types that are available. At the moment, Ethereum has two types of accounts: externally owned accounts, or EOAs, owned by systems outside of Ethereum, with private public key pairs (for example, wallets); contracts are the other type of account, where money is managed by the code executed. They have some differences between them in the way that they are validated and pay for gas. These differences [will] gradually be abstracted so that they behave more and more the same. Eventually, Ethereum [will] only have one type of account, with no difference between an account that has... a private key (or other authorisation mechanism), and an account managed by smart contract code.

Intermediary accounts to pay for gas

They will behave identically. Another big change [will be] the ability for intermediary accounts to pay for gas. Today, if you run a transaction that executes smart contract code, that transaction has to pay for the gas. The smart contract itself can't pay for the gas. If the smart contract calls another smart contract, which calls another smart contract, etc. the gas is still paid by the first transaction that initiated this chain of calls. With Byzantium, the intention is to allow intermediate smart contracts to pay for gas themselves, so that... You [will] call a contract with the transaction. When that contract calls another contract, it can pay for all or some of that gas. I think that includes most of the changes we'll see in Byzantium, but of course it is still in flux. There may be more changes introduced in Byzantium, or maybe some of the changes will be pushed back into Constantinople, for the second part of the Metropolis upgrade.