v1.8.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.8.0은 프로토콜 업그레이드(하드포크)를 포함하고 있습니다. 이더리움의 하드포크처럼 과거 버전과 호환되지 않는 변경이기 때문에 모든 노드들은 정해진 블록번호 이전에 반드시 v1.8.0 이상 버전으로 업데이트를 해야합니다.

하드포크 일정은 다음과 같습니다.

  • Baobab Testnet (Baobab 블록번호 86513895, 예상 일정 3월 24일)

    • EthTxType hard fork: #86513895 (Baobab에는 이미 IstanbulEVM 과 LondonEVM 하드포크가 적용되었음)

  • Cypress Mainnet (Cypress 블록번호 86816005, 예상 일정 3월 31일)

    • IstanbulEVM hard fork: #86816005

    • LondonEVM hard fork: #86816005

    • EthTxType hard fork: #86816005

주의: Istanbul EVM 하드포크에는 EVM 명령코드의 가스 코스트 변경 및 API 사용법의 변화가 포함되어 있습니다. 이 변경으로 인하여 기존에 동작하던 컨트랙트가 동작하지 않을 수 있으니 문서 하단의 “하드포크에 따른 주의사항” 부분을 꼭 확인해주시길 바랍니다.

Protocol Upgrade Features

  • 새 트랜잭션 타입을 지원하는 EthTxType 하드포크를 적용하여 다음 이더리움 트랜잭션 타입을 사용할 수 있습니다: TxTypeEthereumAccessList, TxTypeEthereumDynamicFee (#1142 #1158)

신규 기능

  • EthereumTxTypeEnvelope 정의 (#1171)

  • 새로운 트랜잭션 타입에 사용될 EIP-2930 signer와 London signer를 구현했습니다 (#1142 #1158)

  • 이더리움 API 포맷을 지원하기 위해 eth 네임스페이스 API를 추가했습니다 (#1076 #1077 #1083 #1088 #1093 #1095 #1121 #1123 #1124 #1127 #1129 #1130 #1134 #1172)

  • 새로운 klay 네임스페이스 API도 추가되었습니다: klay_maxPriorityFeePerGas, klay_createAccessList, and klay_feeHistory (#1156)

  • 이더리움 API 포맷 호환성을 비활성화시키는 rpc.eth.noncompatible 플래그도 도입했습니다 (#1072)

  • 블록헤더 API 반환값에 baseFeePerGas 필드를 추가했습니다 (#1183)

  • State Snapshot을 구현했습니다 (#1112 #1116 #1152 #1154 #1155 #1173 #1174)

  • Process crash tolerance를 위해 auto-restart daemon을 구현했습니다 (#1101)

Improvements

  • 노드가 시작될 때 계정 관리자 account manager unlock 타이밍을 조절 했습니다 (#1141)

  • 한번의 투표를 통해 여러 validators 들을 추가/제거 할 수 있게되었습니다 (#1110)

  • governance 투표 API에 사용되는 검증로직을 강화하였습니다. (#1109)

  • blockchain.go에서 사용하는 뮤텍스 락들을 하나로 통합하였습니다 (#1099)

Fixes

  • governance 캐시 초기화 과정에서의 버그를 수정했습니다 (#1168)

  • klay_gasPrice API가 정확한 가스 가격을 출력하도록 수정했습니다 (#1211)

  • 트랜잭션 필드 업데이트 과정에서 발생할 수 있는 race 이슈를 수정했습니다 (#1091)

  • call tracer의 리턴 오브젝트의 깊이가 깊어질 때 발생할 수 있는 패닉현상을 수정했습니다 (#1203)

기타

  • Cypress 네트워크의 하드포크 블록번호를 다음과 같이 설정하였습니다 (#1230)

    • IstanbulEVM hard fork: 86816005

    • LondonEVM hard fork: 86816005

    • EthTxType hard fork: 86816005

  • Baobab 네트워크의 하드포크 블록번호를 다음과 같이 설정하였습니다 (#1230)

    • EthTxType hard fork: 86513895

하드포크에 따른 주의사항

이번 버전은 기존의 서비스 중인 Klaytn DApp에도 많은 영향을 미치므로 서비스 운영자 및 개발자들은 아래 내용과 함께 사전 공유된 Toward Ethereum Equivalence #1 #2 #3 #4 를 읽어보시길 권장드립니다.

DApp 서비스 제공자들을 위한 내용

기존에 동작하던 스마트 컨트랙트에서 Out of Gas 에러가 발생할 수 있습니다.

IstanbulEVM 하드포크에는 EVM 명령코드의 가스 코스트 변경내역(Klaytn v1.7.0 Release Note의 Protocol Upgrade Features 참조)이 포함되어 있습니다. fallback 함수와 같이 제한된 가스 코스트로 동작될 수 있는 함수에 많은 동작을 수행하고 있었다면, 가스 코스트의 변화로 인해 Out of Gas가 발생할 수 있습니다. 현재 확인된 바로는 OpenZeppelin의 BaseAdminUpgradeabilityProxy.sol, BaseUpgradeabilityProxy.sol을 상속받은 Upgradable contract가 Proxy.sol 과 동일한 fallback 함수를 구현하고 있을 때 문제가 될 수 있습니다. 유사하게 구현된 경우 확인 바라며, Gas Cost의 변화는 앞으로도 발생할 수 있으니 fallback 함수 등에는 가능한 로그 출력 외의 무거운 동작 사용을 자제해주시길 바랍니다(관련내용 참조). (참고).

일부 Precompiled Contract 주소가 변경됩니다.

이더리움 Precompiled Contract 와의 호환성을 위해 vmLog(0x09), feePayer(0x0a), validateSender(0x0b)의 주소가 이전됩니다. 하드포크 이전에 이미 배포된 컨트랙트는 하드포크 이후에도 동작변화 없이 기존과 동일하게 사용가능하며, 하드포크 이후 배포된 컨트랙트에만 적용됩니다. 이와 관련한 상세내용은 Toward Ethereum Equivalence #2 — Precompiled Contract 주소 변경을 참조해 주시기 바랍니다.

새롭게 도입되는 트랜잭션 타입을 지원하기 위해서는 caver 버전을 v1.8.0 이상으로 업데이트해야합니다.

EthTxType 하드포크부터는 새로운 트랜잭션 타입의 사용이 가능해집니다. 블록 익스플로어와 같이 타인의 트랜잭션도 조회해야하는 서비스에서 신규 타입 지원이 필요하다면 caver 버전을 v1.8.0 (js, java) 이상으로 업데이트해주시길 바랍니다. 신규 타입에 대한 상세내용은 Toward Ethereum Equivalence #4 — 이더리움 트랜잭션 타입에서 확인할 수 있습니다.

EN 운영자를 위한 정보

v1.8.0 부터 ethklay API 의 리턴 형식이 달라집니다.

기존에는 eth 네임스페이스를 이용하여 API를 요청하여도 klay를 사용하는 것과 동일하게 동작하였습니다. But starting with v1.8.0, the eth namespace APIs will adopt Ethereum API return formats. 이 변경과 관련된 상세 내용은 Toward Ethereum Equivalence #3 — Supporting Ethereum API formats에서 확인하실 수 있습니다. 만약, 이전 버전처럼 ethklay처럼 사용하고 싶으시다면 --rpc.eth.noncompatible 실행 옵션을 추가해주시면 됩니다.

EN의 기본으로 허용하는 API 리스트에 eth를 추가하는 것을 권장드립니다.

eth 네임스페이스 API를 지원하게 되며, EN의 기본 허용 API에 eth가 추가되었습니다. 기존에 사용하시던 EN도 kend.conf 파일의 RPC_APIWS_API 설정에 eth 를 추가하여야 eth API를 사용하실 수 있습니다. 또한, hardhat과 같은 이더리움 도구에서 사용하는 net, web3 API도 기본 허용 리스트에 추가되게 됩니다. v1.8.0의 기본 허용 API 목록: RPC_API=”klay,net,eth,web3", WS_API=”klay,net,eth,web3"

Last updated