Thumbnail
보안 · 네트워크 블록체인

블록체인 Dapp 이더리움_오픈제펠린 SDK 대시보드

(4.7)
11개의 수강평 ∙  476명의 수강생
공개되지 않은 강의로
수강이 제한됩니다.
지식공유자: coldmind
총 12개 수업 (51분)
수강기한: 
무제한
수료증: 미발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변: 미제공
coldmind 프로필
이더리움 Istanbul 하드포크에 의한 영향도
coldmind 2019.10.26

최근 기사에 의하면 이더리움의 하드포크 Istanbul 이 예정되어 있습니다. 

그런데 이 강좌에서 다룬 오픈제펠린의 Upgradable Contract가 이번 하드포크에 의해 중대한(?) 영향을 받을 것 같습니다. 이번 하드포크에서는 EIP1884 라고 하는 것이 적용될 예정인데 간단히 말하면 상태변수를 읽는 SLOAD라는 opcode의 가스를 200에서 400으로 올린다는 내용입니다. 

오픈제펠린의 Upgradable Contract 는 프록시 컨트랙트의 폴백함수를 통해 구현 컨트랙트에 delegatecall을 하는 패턴으로 되어 있습니다 그런데 현재 EVM은 다른 컨트랙트에서 프록시 컨트랙트의 폴백함수를 호출하면서 이더 전송을 하는 경우(send 또는 transfer를 호출하는 경우 2300) gas stipend가 적용되도록 되어 있습니다.  문제는 프록시 컨트랙트의 폴백함수는 최소한 2개의 SLOAD를 수행해야 합니다(예를 들어 구현 컨트랙트의 어드레스를 읽기). 따라서 1200 gas 가 더 소요되는 셈입니다.

따라서 구현 컨트랙트의 로직에 전달되는 가스가 줄어드는 결과가 되므로 그 동안 정상동작했던 컨트랙트 중 일부는 오류가 발생할 가능성이 제기되고 있습니다. 

오픈제펠린에서는 이번 이슈를 검토 중에 있으므로 이 강좌를 수강하신 여러분들도 인지하시기 바랍니다. 다음 링크를 참고하시기 바랍니다(실습 예제는 해당 사항이 없음). 

[오픈제펠린 포럼]