# v1.7.0

## Package Downloads <a href="#package-downloads" id="package-downloads"></a>

### RPM <a href="#rpm" id="rpm"></a>

Cypress Packages

* [kcnd-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kcnd-v1.7.0-0.el7.x86_64.rpm)
* [kpnd-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kpnd-v1.7.0-0.el7.x86_64.rpm)
* [kend-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kend-v1.7.0-0.el7.x86_64.rpm)

Baobab Packages

* [kcnd-baobab-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kcnd-baobab-v1.7.0-0.el7.x86_64.rpm)
* [kpnd-baobab-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kpnd-baobab-v1.7.0-0.el7.x86_64.rpm)
* [kend-baobab-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kend-baobab-v1.7.0-0.el7.x86_64.rpm)

Common Packages

* [kscnd-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kscnd-v1.7.0-0.el7.x86_64.rpm)
* [kspnd-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kspnd-v1.7.0-0.el7.x86_64.rpm)
* [ksend-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/ksend-v1.7.0-0.el7.x86_64.rpm)
* [kbnd-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kbnd-v1.7.0-0.el7.x86_64.rpm)
* [kgen-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/kgen-v1.7.0-0.el7.x86_64.rpm)
* [homi-v1.7.0-0.el7.x86\_64.rpm](https://packages.klaytn.net/klaytn/v1.7.0/homi-v1.7.0-0.el7.x86_64.rpm)

### Linux <a href="#linux" id="linux"></a>

Cypress Packages

* [kcn-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kcn-v1.7.0-0-linux-amd64.tar.gz)
* [kpn-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kpn-v1.7.0-0-linux-amd64.tar.gz)
* [ken-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/ken-v1.7.0-0-linux-amd64.tar.gz)

Baobab Packages

* [kcn-baobab-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kcn-baobab-v1.7.0-0-linux-amd64.tar.gz)
* [kpn-baobab-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kpn-baobab-v1.7.0-0-linux-amd64.tar.gz)
* [ken-baobab-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/ken-baobab-v1.7.0-0-linux-amd64.tar.gz)

Common Packages

* [kscn-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kscn-v1.7.0-0-linux-amd64.tar.gz)
* [kspn-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kspn-v1.7.0-0-linux-amd64.tar.gz)
* [ksen-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/ksen-v1.7.0-0-linux-amd64.tar.gz)
* [kbn-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kbn-v1.7.0-0-linux-amd64.tar.gz)
* [kgen-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kgen-v1.7.0-0-linux-amd64.tar.gz)
* [homi-v1.7.0-0-linux-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/homi-v1.7.0-0-linux-amd64.tar.gz)

### MacOS <a href="#macos" id="macos"></a>

Cypress Packages

* [kcn-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kcn-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [kpn-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kpn-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [ken-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/ken-v1.7.0-0-darwin-10.10-amd64.tar.gz)

Baobab Packages

* [kcn-baobab-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kcn-baobab-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [kpn-baobab-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kpn-baobab-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [ken-baobab-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/ken-baobab-v1.7.0-0-darwin-10.10-amd64.tar.gz)

Common Packages

* [kscn-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kscn-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [kspn-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kspn-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [ksen-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/ksen-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [kbn-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kbn-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [kgen-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/kgen-v1.7.0-0-darwin-10.10-amd64.tar.gz)
* [homi-v1.7.0-0-darwin-10.10-amd64.tar.gz](https://packages.klaytn.net/klaytn/v1.7.0/homi-v1.7.0-0-darwin-10.10-amd64.tar.gz)

### Windows <a href="#windows" id="windows"></a>

* Not supported yet

## Release Notes <a href="#release-notes" id="release-notes"></a>

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.

### 프로토콜 업그레이트 기능

* 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.
