With the Istanbul upgrade nearing, some in the Ethereum community are grappling with the implications of coming smart contract gas repricings.
Istanbul is the last “Ethereum 1.0” hard fork upgrade scheduled to take place before the multi-phase “Ethereum 2.0” Serenity upgrade starts next year. Notably, Istanbul is implementing Ethereum Improvement Proposal (EIP) 1884 among a handful of other EIPs. An effort to help Ethereum mature, EIP 1884 will make certain smart contracts have to pay more ether — or gas — to run.
“This EIP proposes repricing certain opcodes, to obtain a good balance between gas expenditure and resource consumption,” the proposal’s creators explain on GitHub.
The problem with such repricings? They are set to brick some smart contracts that weren’t written with flexibility in mind, i.e. not considering that “Opcode” prices could change. Sequences of opcodes are used to run programs in the Ethereum Virtual Machine.
Accordingly, such repricings have started to kick up attention and discussion in the Ethereum ecosystem.
In the 69th Ethereum Core Devs Meeting call held on August 23rd, it was noted “that some of dapps could break” and that developers would need to “keep an ear open to people who have those concerns within the community.”
Wei Tang, a Rust developer at Parity, voiced some of those concerns on August 29th, when he tweeted out a thread that laid out why he thought EIP 1884 was problematic. Tang concluded:
“One of the reasons why Windows [gained] popularity is because of backward compatibility. Linux has a policy that it will never break user-space programs. You can run ancient operating systems on modern CPUs. Ethereum shouldn’t be of exception if it wants to have a bright future.”
Hudson Jameson Offers His Two Cents … I Mean Gwei
Tang’s skepticism isn’t the first time EIP 1884 has been openly grappled with in the Ethereum community, but it did quickly generate wider discussion.
For example, Ethereum developer and Ethereum Core Devs Meeting moderator Hudson Jameson went on to publish an even longer thread on Tang’s comments. Jameson sympathized with Tang’s positions but outlined the network tradeoffs that were at stake. He also said that it was fairly clear at this point that opcode prices can change.
“We arguably have a precedent set that OPCODE prices can and will change so your contracts should not rely on the assumption that they will not change,” Jameson noted.
2/ I respect @sorpaas's position on this and he raises excellent points. I think we need to decide together how long Ethereum can have an attitude of trading off these types of breaking changes for the sake of state size management (at least until we have a sharding protocol
— Hudson Jameson (@hudsonjameson) August 30, 2019
It was a nuanced and diplomatic thread that didn’t see Jameson take a decisive stance. Instead, he called for further community discussion on the matter:
“During the most recent core developer meeting I appeared to argue in favor of contracts becoming broken due to 1884 and to not yet implement backwards compatibility. Now I am not sure what my position is. I hope to see some discussion on it over the next few weeks so I can.”
Buterin Chimes In
Like Jameson, Ethereum co-creator Vitalik Buterin has offered his personal opinion on the EIP 1884 discussions. On August 30th, Buterin said he wanted the proposal to make even bigger repricings but that it was important to consider wider implications at hand.
“I support EIP 1884 (and wish the repricings were larger) but this is still an important other side of the debate to highlight,” Buterin said.
In that same conversation, the developer said that the Ethereum community’s understanding of gas prices has progressed considerably, meaning there is now a better sense of where such prices should be:
“2015-16-era gas schedules were designed when we knew much less than now, and are not sustainable. I even support considering harsher stuff, like *CALL costing an extra 1 gas per byte of callee contract code, to keep witness size bounded. But it’s important to recognize tradeoffs.”