
They say one human-year is equivalent to seven dog-years, and a similar ratio goes for crypto and the traditional industries. That being said, we are so thrilled to finally release Klaytn v.1.8.0 after five months since our last big update. We will explain what has changed, and what the changes mean for you.
Klaytn v1.8.0 contains a protocol upgrade which results in backwards incompatible changes, like the Ethereum hard forks. All nodes would thus have to be upgraded to v1.8.0 or higher before the target block number.
The planned hard fork schedule is as follows:
Baobab Testnet (Baobab block number 86513895, planned date: March 24)
- EthTxType hard fork: #86513895
(IstanbulEVM and LondonEVM hard fork already applied on Baobab)
Cypress Mainnet: Block number 86816005, estimated time is 12:30 ~ 13:30 (UTC+9), 31st March 2022.
- IstanbulEVM hard fork: #86816005
- LondonEVM hard fork: #86816005
- EthTxType hard fork: #86816005
Note: Istanbul EVM hard fork includes changes in the gas cost for the EVM opcode as well as in using the APIs. The existing contracts may not function as expected due to these changes, so please refer to the [Cautions on the Protocol Update] section of this article.
Protocol Upgrade Features
– Introduced EthTxType hard fork that enables new transaction types to support Ethereum transaction formats: TxTypeEthereumAccessList
and TxTypeEthereumDynamicFee
(#1142 #1158)
What’s New in v1.8.0
– EthereumTxTypeEnvelope
has been defined (#1171)
– You can use the EIP-2930 signer and London signer for the new transaction types (#1142 #1158)
– eth
namespace APIs are now available to support Ethereum API format (#1076 #1077 #1083 #1088 #1093 #1095 #1121 #1123 #1124 #1127 #1129 #1130 #1134 #1172)
– Added new klay
namespace APIs: klay_maxPriorityFeePerGas
, klay_createAccessList
, and klay_feeHistory
(#1156)
– With the rpc.eth.noncompatible
flag, you can disable Ethereum API format compatibility (#1072)
– Added baseFeePerGas
field in the block header API return values (#1183)
– Implemented State Snapshot (#1112 #1116 #1152 #1154 #1155 #1173 #1174)
– Implemented auto-restart daemon for crash tolerance (#1101)
Improvements
– Adjusted account manager unlock timing when a node starts (#1141)
– Allowed add/remove multiple validators in a single vote (#1110)
– Enhanced the validation logic of governance voting API (#1109)
– Unified mutexes in blockchain.go (#1099)
Fixes
– Fixed a governance cache initializing bug (#1168)
– Fixed klay_gasPrice
API to return proper gas price values (#1211)
– Fixed race condition issues triggered by transaction fields update (#1091)
– Fixed call tracer panic caused by deep return objects (#1203)
ETC
– Set hard fork block numbers for Cypress network (#1230)
– IstanbulEVM hard fork: 86816005
– LondonEVM hard fork: 86816005
– EthTxType
hard fork: 86816005
– Set a hard fork block number for Baobab network (#1230)
– EthTxType
hard fork: 86513895
Cautions regarding the hard fork
The new version is going to affect Klaytn DApps currently in service, so if you are a service operator or a developer, we recommend you also read the series Toward Ethereum Equivalence #1 #2 #3 #4 along with the instructions below.
For DApp Services Providers
You may experience Out of Gas errors with old smart contracts.
The IstanbulEVM hard fork EVM includes changes in the gas cost for the opcode (Please refer to “Protocol Upgrade Features” in the Klaytn v1.7.0 Release Notes). If your contract had a lot of functions that require limited gas cost like fallback, the change in gas cost may cause an Out of Gas error. So far we have determined these cases for upgradeable contracts that inherited OpenZeppelin’s BaseAdminUpgradeabilityProxy.sol
and BaseUpgradeabilityProxy.sol
implementing a fallback function identical to Proxy.sol
. Please check if your functions are implemented in a similar way. Also keep in mind that gas costs are subject to constant change, so please refrain from using actions with heavy loads in the fallback except for printing logs (reference).
Some Precompiled Contract addresses will be changed.
The addresses vmLog(0x09)
, feePayer(0x0a)
, validateSender(0x0b)
will be transferred to ensure compatibility with Ethereum’s precompiled contracts. It only applies to contracts deployed after the hard fork; contracts deployed before that will remain usable. For more details, please refer to Toward Ethereum Equivalence #2 — Changes in Precompiled Contract Addresses.
Update your caver to v1.8.0 or higher to support the new transaction types
You will be able to use the new transaction types with the EthTxType
hard fork. If you need the new transaction formats for services that require accessing the transactions of other accounts, make sure to update your caver to v1.8.0 (js, java) or higher. For more details on the new types, please refer to Toward Ethereum Equivalence #4 — Ethereum transaction types.
For EN Operators
New return values for eth
and klay
APIs
Before, you could make an API call using the eth
namespace and it worked the same as klay
namespace. But starting with v1.8.0, the eth
namespace APIs will adopt Ethereum API return formats. You can find out more in Toward Ethereum Equivalence #3 — Supporting Ethereum API formats. If you want to stick to the behaviors of the old version and use eth
like klay
, just add the — rpc.eth.noncompatible
init option.
Add eth
in the EN’s default allowed API list.
eth
namespace APIs are supported for ENs, and eth
has been added to the default allowed list. You need to add eth
to the configurations of RPC_API
and WS_API
in the kend.conf
file in order to use eth
APIs. net
, web3
APIs used with Ethereum tools like hardhat have also been added to the list. To sum up, the default API white list in v1.8.0 includes: RPC_API=”klay,net,eth,web3″, WS_API=”klay,net,eth,web3″
v1.8.1 Release Notes (Added March 18)
This version contains a fix that enhances MetaMask compatibility. It affects the return format of block header APIs. So, it is recommended that you update the ENs using the eth_getHeader
-related APIs to this version.
- Block header API returns
baseFeePerGas
field only after theEthTxType
hard fork (#1247)
v1.8.2 Release Notes (Added March 23)
- Fixed to return the same receipt status with Ethereum when serving
eth_getTransactionReceipt
- Removed
EthereumTxTypeEnvelope
from raw transaction API returns - Fixed to return nil for non-existing block using
eth
namespace APIs