On Monday we began and completed a network and protocol upgrade for Perkle. This was a planned hard fork to enable several important new features, patches and performance improvements.
While working on smart contract templates and testing some newer Solidity functionality we ran into an issue with a new opcode only available in Constantinople and later forks of Ethereum. Specifically the EXTCODEHASH opcode (EIP-1052), which makes tasks such as checking another contract’s bytecode or analyzing and whitelisting contracts cheaper (less gas needed).
Example of opcode in use in the snippet below:
assembly { codehash := extcodehash(account) }
Because we really want to use this new opcode, and generally stay up to date with the leading version of the Ethereum protocol, we upgraded Perkle to be more in line with the Muir Glacier release of the protocol. The fork went smoothly.
Thank you to STEX for minimal downtime and mining pool owners, who were quick to update. As of publishing time for this post, Perkle miners looking for updated mining pools can go with the official Perkle mining pool or Comining.
At block 3,100,000 old clients became incompatible. If you’re managing a Perkle mining pool and haven’t upgraded your clients yet, you’ll want to do that as soon as possible to avoid mining blocks that are destined to become orphans.
The latest software is here:
Binary releases - https://github.com/esprezzo/perkle/releases
Source code - https://github.com/esprezzo/perkle
Here’s a list of the opcodes and EIPs included in this Perkle update:
- EIP-145: Bitwise shifting (improves messaging speed and reduces cost)
- EIP-152: Add Blake2 compression function F precompile (creates new interoperability capabilities for smart contracts)
- EIP-1014: An effort to facilitate scaling using state channels and off-chain transactions
- EIP-1052: Large scale code execution optimization (allowing contracts to check a contract’s bytecode without needing the bytecode itself, saving wasted gas)
- EIP-1108: Reduces alt_bn128 precompile gas costs
- EIP-1234: Reduces block reward from 3 to 2 and postpones difficulty increase (this needs to be updated in the official block explorer, which is still showing a reward of 3)
- EIP-1344: Adds ChainID opcode
- EIP-1884: Reprices certain resource-intensive opcodes to more closely match computing resources consumed
- EIP-2028: Reduces gas cost for calling transaction data (improves scalability)
- EIP-2200: Implements net gas metering (enables new smart contract storage capabilities)Rebalance net-metered SSTORE gas cost with consideration of SLOAD gas cost
- EIP-2384: Delays Ethereum difficulty bomb
Look out for our next blog post, which will be about the smart contract work that led to this fork!
Have an idea for a smart contract-based application? Is the thought of mastering Solidity or the cost of experimenting on Ethereum holding you back? Check out Esprezzo Dispatch! Dispatch is a tool for creating automated alerts and notifications using data from blockchains, cryptocurrencies and smart contracts.
And if you're interested in joining our community, we're chatting on Discord; join us!