v1.7.0 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
, andPairing 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 ofSLOAD
,BALANCE
, andEXTCODEHASH
(#958)EIP-2200
: Changes the gas metering algorithm of the opcodeSSTORE
(#996)
- Moves addresses of Klaytn precompiled contracts (#912)
vmLog
: 0x09 → 0x3fdfeePayer
: 0x0a → 0x3fevalidateSender
: 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
, andsar
.
- Affected opcodes:
- 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
andklay_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
orblockHash
toblockNumberOrHash
(#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
, andgovernance_itemsAt
- Affected APIs:
- 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.