Links

v1.10.0

Package Downloads

RPM

Cypress Packages
Baobab Packages
Common Packages

Linux

Cypress Packages
Baobab Packages
Common Packages

MacOS

Cypress Packages
Baobab Packages
Common Packages

Windows

  • Not supported yet

Release Notes

Klaytn v1.10.0 contains a hardfork upgrade that results in backward incompatible changes. All Baobab/Cypress nodes would thus have to be upgraded to v1.10.0 or higher before the target block number. The name of the hardfork is “Kore”. The hardfork contains an implementation of the on-chain governance voting method (KIP81), a new GC reward structure (KIP82), and EVM changes.
The planned hardfork schedule is as follows:
  • Baobab: 111736800 10:00 AM (UTC+9) Jan 10
  • Cypress: March 2023, to be announced with the next release

Cautions regarding the v1.10.0 upgrade and Kore hardfork

Following are some important cautions for Klaytn ecosystem participants. Please read this before applying v1.10.0 upgrade and Kore hardfork.
  • For block explorers (Scope, Finder) and Governance Analysis tools
    • After Kore hardfork, governance voting will be processed in a smart contract according to KIP-81. The existing block header voting mechanism will be used only as a fallback for the contract-based voting mechanism. The finalized governance data can be retrieved from governance_chainConfigAt(num) or klay_chainConfigAt(num) API. More detailed documentation for voting data analysis will be published later after deploying governance contracts.
    • After Kore hardfork, block reward will be distributed to all valid stakers (CNs) as well as block proposers according to KIP-82. The Gini coefficient will be disregarded for the proposer selection, thus enabling a fairer distribution of rewards among proposers. Reward distribution details including the burn amount can be retrieved via the new klay_getRewards(num) API.
  • For node operators
    • All nodes should update their version to v1.10.0 before the Kore hardfork block number. The cypress hardfork block number will be specified in the next Klaytn version after confirming the safety of the hardfork in Baobab network.
    • After the v1.10.0 upgrade, NTP time synchronization will be essential by default. If your node has difficulty synchronizing with the NTP server, add the --ntp.disable flag in your node configuration.
    • After the v1.10.0 upgrade, node operators can restrict some features of debug APIs with the rpc.unsafe-debug.disable flag. Although debug APIs are supposed to be open to trusted users, some APIs can cause a critical issue when they are exposed to malicious users. Check the details about the restriction in the “Further comments” section of this PR.
    • After v1.10.0 upgrade, new node flags will be introduced: --snapshot, --ntp.disable, --ntp.server, --rpc.evmtimeout. Read below for more details.
  • For dApp developers
    • After the v1.10.0 upgrade, node operators can restrict some features of debug APIs if they set a special configuration. Check the details about the restriction in the “Further comments” section of this PR.
    • After the Kore hardfork, opDifficulty will be replaced with opRandom with the adoption of EIP-4399. It means that opcode 0x44 will return the previous blockhash of this block instead of the difficulty of the block.
    • After Kore hardfork, gas costs of SLOAD, *CALL, BALANCE, EXT* and SELFDESTRUCT will increase when they are used for the first time in a transaction, and decrease after the second time with the adoption of EIP-2929. And the gas cost of ModExp precompiled contract will be defined with the adoption of EIP-2565.
    • After Kore hardfork, the gas refund for SELFDESTRUCT and SSTORE will be reduced with the adoption of EIP-3529.
    • After Kore hardfork, a new contract starting with 0xEF byte will fail to be deployed with the adoption of EIP-3541.
  • For ecosystem participants,
    • After the v1.10.0 upgrade, gini coefficient will be disabled in block proposer selection. It means that all CN will generate blocks with even probability. The reward will be distributed in another way according to KIP-82. A portion of the block minting amount is allocated to stakers, which is proportional to the KLAY staking amount of each CN.

Protocol Upgrade(Kore Hardfork) Features

The new features of the Kore hardfork will be applied to the Baobab and Cypress networks according to their respective hardfork block numbers.
  • All committee members have an equal chance of being elected block proposers (#1655)
  • KIP-81: Implementing the on-chain governance voting method (#1512 #1604 #1614 #1623 #1639 #1640 #1711)
  • Upgrades to support contract-based on-chain governance mechanism
  • Stores the governance configuration on either block headers or a governance parameter contract
  • KIP-82: A New GC Reward Structure following the abolition of the Gini Coefficient (#1631 #1642 #1666 #1692 #1709 #1727 #1729 #1734)
    • Splits the block proposing reward into minting reward and staking reward
    • Distributes staking rewards for valid stakers for every block generation as well as block proproser reward
  • Introduces klay_getRewards API that returns reward distribution details including the burn amount of a specific block
  • EIP-2565: ModExp Gas Cost (#1705)
  • EIP-2929: Gas cost increases for state access opcodes (#1705)
  • EIP-3529: Reduction in refunds (#1705)
  • EIP-3541: Reject new contract code starting with the 0xEF byte (#1681)
  • EIP-4399: Supplant DIFFICULTY opcode with RANDOM (#1680)

Improvements

  • Made client.Client to be able to set new HTTP headers (#1632)
  • Added asynchronous snapshot data generation feature introducing --snapshot flag (#1634)
  • Enhanced time synchronization with NTP and introduced NTP configuration flags, --ntp.disable and --ntp.server (#1641 #1651 #1669)
  • Introduced gorilla websocket library and enables bi-directional communication (#1652)
  • Updated DeriveSha implementation type for Ethereum compatibility and made it an governance item (#1648 #1689 #1693 #1708 #1716)
  • Reduced memory usage of RPC server (#1650)
  • Added blockHash filter option to klay_getLogs API (#1653)
  • Accepted decimal block number for debug_setHead API (#1697)
  • Added snapshot sub-command to verify state database (#1701)
  • Introduced governance_chainConfigAt API and refines governance_chainConfig to support the upgraded governance feature (#1704 #1724)
  • Introduced rpc.unsafe-debug.disable flag that can restrict relatively vulnerable features of debug APIs to secure node from unusual APIs (#GHSA-4vx6-m7jv-g2ch #1722 1746)
  • Supported getStakingInfo, nodeAddress, chainConfig, and chainConfigAt, govParamsAt APIs in klay namespace as well as governance namespace. (#1731)
  • Introduced EVM execution timeout flag, --rpc.evmtimeout to manage node resource by node operators (#1736)

Fixes

  • Mitigated unintended gas exhaustion of ServiceChain bridge operators during ERC721 transfer (#1445)
  • Fixed nil access issues of non-WeightedRandom proposer selection (#1600)
  • Fixed rare database corruption issues caused by forced process termination via backup additional block (#1630)
  • Flushed storage snapshot data into database after processing (#1635)
  • Fixed to verify CommittedSeals always in istanbul consensus engine (#1678)
  • Resolved gov.changeSet corruption issue caused by debug.traceBlock API call (#1706)
  • Fixed unapplied block range filter issue in klay_getLogs API (#1715)
  • Fixed to use EmptyRootHashOriginal always in eth_getProof API (#1726)

Miscellaneous

  • Added Klaytn binary version information into Prometheus metric (#1488)
  • Provide better readability and more information on chaindatafetcher (#1587 #1611)
  • Integrated Datadog HTTP tracer (#1594 #1730)
  • Enhanced Homi to generate reward account keystores having reward# file name (#1605)
  • Added nil checking logic for MagmaHeader verification (#1608)
  • Modified Dockerfile to support TLS connection in golang (#1616)
  • Lowered the log level of "Returning since the addr is not a program account" to debug level (#1643)
  • Increased the size limit of P2P messaging protocol from 10MB to 12MB (#1658)
  • Updated Homi to allocate more balance for ServiceChain genesis (#1683)
  • Generated genesis.json, keys, and others from yaml configuration in homi (#1661)
  • Minor update (#1552 #1575 #1598 #1638 #1639 #1640 #1667 #1668 #1685 #1696 #1714 #1717 #1718 #1720 #1723 #1725 #1735)
Last modified 4mo ago