v1.7.0

Package Downloads

Linux

Cypress Packages

Baobab Packages

Common Packages

MacOS

Cypress Packages

Baobab Packages

Common Packages

Windows

  • Not supported yet

Release Notes

Klaytn v1.7.0 contains important changes for the protocol upgrade which may result in incompatible changes like Ethereum Hard-forks. This version enables the protocol upgrade for Baobab testnet at block #75373312, estimated for November 15th. Cypress mainnet will be subject to the same protocol upgrade in the next version.

Protocol Upgrade Features

  • Introduces Ethereum's Istanbul hard-fork items

    • EIP-152: Introduces a precompiled contract, BLAKE2F at address 0x09 (#960 #1010)

    • EIP-1108: Reprices the gas cost of precompiled contracts, ECADD, ECMUL, and Pairing Check (#987)

    • EIP-1344: Introduces a new opcode, CHAINID at 0x46 (#952)

    • EIP-1844: Introduces a new opcode, SELFBALANCE at 0x47. It reprices the gas cost of SLOAD, BALANCE, and EXTCODEHASH (#958)

    • EIP-2200: Changes the gas metering algorithm of the opcode SSTORE (#996)

  • Moves addresses of Klaytn precompiled contracts (#912)

    • vmLog: 0x09 → 0x3fd

    • feePayer: 0x0a → 0x3fe

    • validateSender: 0x0b → 0x3ff

    • Contracts deployed before the incompatible change activation will continue to work as before even for the transaction executed after the activation.

  • Changes the gas calculation logic for the data field of legacy type transactions (#986)

    • With this change, the same data fee calculation logic will be applied for all transaction types.

  • Enhances the validation and gas calculation logic of multi-sig transactions (#1001)

    • The signature verification fee for multi-sig transactions is in proportion to the number of unique signatures.

    • Transactions that contain more signatures than the maximum number of the account's accountKey are invalid.

    • The transaction which contains at least one invalid signature is invalid.

  • Reduces computation costs of over-priced opcodes (#1033)

    • Affected opcodes: addmod, mulmod, not, xor, shl, shr, and sar.

  • Introduces a minimum staking amount for validators as a governance item (#920 #963 #1023 #1024 #1034)

    • If a validator doesn’t stake enough KLAY, the node will not be selected as a proposer or a committee member.

  • Randomly selects new committee members on every round change (#997)

New Features

  • Introduces two klay APIs that return a block header: klay_getHeaderByNumber and klay_getHeaderByHash (#975)

  • Introduces two istanbul APIs that return demoted validators (#974)

    • istanbul_getDemotedValidators: Returns the demoted validators at a given block number.

    • istanbul_getDemotedValidatorsAtHash: Returns the demoted validators at a given block hash.

    • A demoted validator is one of the validators but cannot be a proposer or committee member due to insufficiently staking KLAY.

  • Introduces the dumpgenesis command which returns the genesis block in JSON format (#992)

  • Introduces CustomRetryer for DynamoS3DB to retry requests for all error cases (#982)

  • Introduces experimental flags related to block generation time (#989)

    • BlockGenerationIntervalFlag: Determines the block generation interval between two successive blocks (Only for CNs)

    • BlockGenerationTimeLimitFlag: Sets the vm execution time limit during block generation (Only for CNs)

    • OpcodeComputationCostLimitFlag: Sets the computation cost limit for a transaction

Improvements

  • Changed the block parameter type from blockNumber or blockHash to blockNumberOrHash (#975)

    • Affected APIs: klay_accountCreated, klay_getAccount, klay_getAccountKey, klay_getBalance, klay_getCode, klay_getTransactionCount, klay_isContractAccount, klay_getBlockByNumber, klay_getBlockTransactionCountByNumber, klay_getBlockWithConsensusInfoByNumber, klay_getCommittee, klay_getCommitteeSize, klay_getCouncil, klay_getCouncilSize, klay_getStorageAt, klay_getLogs, klay_newFilter, klay_call, klay_getTransactionByBlockNumberAndIndex, debug_dumpBlock, debug_getBlockRlp, debug_printBlock, and governance_itemsAt

  • Added SetHeader method to Klaytn client (#1020)

  • Utilized dirtyStorage more accurately (#993)

  • Set the request body size limit of fastHttpServer with maxRequestContentlength (#1029)

  • Enabled UseOpcodeComputationCost EVM option on debug API (#1035)

  • Updated istanbul consensus engine to verify headers synchronously (#957)

  • Enhanced the state migration feature to support non-single type DB (#954)

Fixes

  • Handled abnormal returns of state.NewForPrefetching (#1011)

  • Fixed abnormal application of governance votes in edge cases (#1018)

Miscellaneous

  • Renamed two admin APIs (#971)

    • admin_startRPC → admin_startHTTP

    • admin_stopRPC → admin_stopHTTP

    • Old names have been deprecated, but are still available.

Last updated