v1.8.0 Release Notes
Klaytn v1.8.0 contains the protocol upgrade which results in incompatible changes like Ethereum hard forks. All nodes need to be upgraded to this version before the target block number.
The planned hard fork schedule is as follows:
-
Baobab Testnet (Baobab block number 86513895, planned date: March 24th)
- EthTxType hard fork: #86513895
(IstanbulEVM and LondonEVM hard fork already applied on Baobab)
- EthTxType hard fork: #86513895
-
Cypress Mainnet (Cypress block number 86816005, planned time: 13:00 ~ 14:00 UTC+9, March 31st)
- 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 how to use 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 transactions types to support Ethereum transaction types:
TxTypeEthereumAccessList
andTxTypeEthereumDynamicFee
(#1142 #1158)
What’s New in v1.8.0
- Defined
EthereumTxTypeEnvelope
(#1171) - Implemented EIP-2930 signer and London signer for the new transaction types (#1142 #1158)
- Introduced
eth
namespace APIs 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
, andklay_feeHistory
(#1156) - Introduced the
rpc.eth.noncompatible
flag that disables Ethereum API format compatibility (#1072) - Added
baseFeePerGas
field in the block header API returns (#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
Binaries
Cautions regarding the hard fork
The new version is expected 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, this change in gas cost may cause an Out of Gas. So far we have determined problems for cases when upgradeable contracts that inherited OpenZeppelin’s BaseAdminUpgradeabilityProxy.sol and BaseUpgradeabilityProxy.sol implement a fallback function identical to Proxy.sol. Please check if the function is 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 a service that requires 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
andklay
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 pf 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"