
가스비 설계에는 몹시 까다로운 딜레마가 내포되어 있습니다. 낮게 고정된 가스비가 사용자 입장에서 대대적 이점이라는 것은 두말할 나위가 없는 사실이지만, 그만큼 악용 하기도 쉬워지기 때문에 네트워크 상황을 고려했을 때 마냥 좋은 것만은 아니랍니다. 민감하고 중요한 문제인 만큼 클레이튼 팀은 최적의 방안을 찾기 위해 오래 고민해왔습니다. 그리고 이러한 배경에서 도입된 것이 Klaytn v1.9.0 릴리즈와 함께 선 보이게 된 동적 가스비 메커니즘입니다.
Klaytn v1.9.0 은 이더리움의 하드포크처럼 과거 버전과 호환되지 않는 변경이 포함되어 있습니다. 따라서 모든 Baobab/Cypress 노드들은 타겟 블록 번호 전에 v1.9.0 또는 그 이상으로 업그레이드해야 합니다. 이번 하드포크의 이름은 ‘마그마’ 입니다. 클레이튼 하드포크의 명칭은 화산과 관련 있습니다. 이 하드포크에는 [KIP 71] 에서 제안된 동적 가스 가격 메커니즘의 구현이 포함되어 있습니다.
계획된 하드포크 일정은 아래와 같습니다:
마그마 하드포크 블록넘버 & 예정일
- Baobab 테스트넷: 98347376 11:00 AM (UTC+9) Aug 8
- Cypress 메인넷: 99841497 11:00 AM (UTC+9) Aug 29
참고: 이 버전은 스냅샷 동기화를 지원하기 위해 데이터베이스의 버전을 업데이트합니다. 업데이트 후에는 이전 버전으로 다운그레이드 할 수 없습니다.
참고: dApp 개발자의 경우, 해당 페이지를 읽고 동적 가스 가격 메커니즘을 이해하실 수 있습니다.
참고: Snapshot sync 기능이 업데이트 되었습니다. 하지만, 현재 default 기능은 아닙니다. Snapshot sync를 위해서 다른 피어들에게 state snapshot이 생성되어야 하지만, 아직 준비가 되지 않았습니다. 수동으로 — syncmode snap
플래그와 함께 기능을 활성화 시킬 수 있지만, 충분한 피어들이 state snapshot을 생성할 때 까지 몇 주 소요될 것으로 예상합니다. 해당 기능은 현재 베타버전입니다.
# 프로토콜 업그레이드(하드포크) 기능
- 고정되어 있던 가스비가 네트워크 상황에 따라 동적으로 적용됩니다. (#1442 #1452 #1493 #1501 #1518 #1519 #1530 #1537 #1538)
- 동적 가스비 관련 API가 추가됩니다. (#1520)
klay_upperBoundGasPrice
: 동적 가스비의 최고값을 반환합니다.klay_lowerBoundGasPrice
: 동적 가스비의 최저값을 반환합니다.- 마그마 하드포크 이후에 트랜잭션이 실행 가능하도록 가스비를 제안해주는
klay_gasPrice
값이2 * currentBlock.baseFee
로 변경됩니다. (#1534) - 부모체인 상태 동기화 업데이트 (#1427)
## 신규 기능
- Account/Storage 스냅샷 싱크를 이용하여 빠르게 최신블록까지 싱크할 수 있습니다. (#1434 #1435 #1441 #1443 #1450 #1451 #1455 #1456 #1457 #1469 #1473 #1524)
## 개선사항
- 다른 changeSet 크기를 가지고 있는 블록헤더들은 무효처리됩니다. (#1220)
- 블록 생성 주기를 네트워크가 혼잡하지 않는 경우에 더 빠르게 처리합니다. (#1340)
- callTracer 및 fastCallTracer가 SELFDESTRUCT 명령을 수행할 때, 좀 더 상세한 트레이스 결과를 출력합니다. (#1343)
- BadBlock 로그를 수정하고, 저장되는 위치를 변경하였습니다. (#1371)
- 가스비 대납 트랜잭션에서 보내는 계정과 가스비 대납 계정이 같은 경우에 대한 검증 로직을 추가하였습니다.(#1372)
- 이더리움에 적용된 rlp 패키지와 관련 로직을 추가하였습니다. (#1385)
klay_call
,klay_estimateGas
의 결과가 원복되는 경우에 대한 에러 메시지를 추가하였습니다. (#1408)- 기존에는 Docker를 이용하여 EN만 실행할 수 있었으나, 이제는 EN, PN, CN 모두 실행이 가능합니다. (#1476)
- 바이너리 버전을 보여주기위한 새로운 메트릭을 추가하였습니다. (#1488)
## 수정
- 내부 insta-fail을 처리하기 위한 트레이서 수정하였습니다. (#1352)
- HandleGovernanceVote 에서 checkVote() 가 실패할 때 투표 제거하였습니다.(#1367)
- 닫힌 ch를 즉시 읽기위해 multiChannelPeer ReadMsg 루프 수정하였습니다. (#1389)
- 트랜잭션 정렬에서 잠재적인 buffer-over-run 수정하였습니다. (#1398)
- 서비스 체인과 관련된 동시성 API 콜 버그 수정하였습니다. (#1438)
- 검증자가 6명 이하인 경우, 필요한 합의 메세지 증가하였습니다. (#1462)
- GetStakingInfo 결과값에 누락된 지니 필드 채웠습니다. (#1464)
- 스냅샷과 관련된 잘못된 API 반환 수정하였습니다. (#1468)
- 가격 필드가 없는 거래에대해 무료로 DoCall을 수정하였습니다. (#1540)
- 트레이서의 출력 변환 로직에 대한 유효성 검사 강화하였습니다. (#1549)
## 기타
더 자세한 정보는 이 링크를 참고해주세요. 클레이튼 미디엄에 구독해 더 많은 소식을 만나보세요. 감사합니다!