안녕하세요, 코인논객 오공입니다.
이번 이더리움 콘스탄티노플 포크의 연기와 관련하여 나름대로 정리해봤습니다.
콘스탄티노플을 약 하루 앞두고 스마트컨트렉트 전문보안업체인 체인시큐리티가 중대한 보안 버그 발견하였고 그와 관련 내용을 공개(https://link.medium.com/ipjIwg0HvT)하였습니다.
앞서 이번 콘스탄티노플 하드포크는 총 5개 개선안이 포함되어 있었고(https://www.ddengle.com/traders_free/10677435), 이 중 데이터 스토리지에 대한 공정한 가격책정 방안 제시하고 적은 가스(GAS, ETH 네트워크 상의 수수료)로 스마트 컨트랙트 생성 가능케 하는 개선안(EIP1283, https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1283.md)에서 보안 결함이 발견되었습니다.
세부적으로는, 송수신 같은 기능의 가스비용을 낮추는 것과 관련하여, 사용자 몰래 자금을 옮기는 문제 즉 ‘재진입공격(Reentrancy Attack)’의 위험이 있다는 것이 이번 결함의 핵심입니다.
‘재진입성’이란 함수들이 동시에 호출이 되어도 문제가 없는 함수의 성질을 의미하는데요, 이때 재진입성을 만족하지 않은 함수가 있는 경우를 ‘재진입 문제’ 또는 ‘재진입 공격’이라고 부릅니다.
가령, 사용자가 스마트계약에 따라 자금 송금시, 1)잔고 확인 -> 2)호출한 주소로 송금 -> 3)잔고 업데이트 순으로 처리되는데,
이때 공격자는 송금시(2번) 특정함수를 활용하여 인출함수를 다시 호출하게되면, 잔고가 업데이트(3번)되기전에 자금을 또 송금받을수 있습니다.
이렇게 된이상 제 생각으로는 향후 단기 일정의 경우의 수는 다음과 같을수도 있습니다.
1> 최대한 빠른 수습 및 큰 이상이 없다는 판단하에 콘스탄티노플 포크 재추진(1-2월)
2> 논의 중인 ProgPoW(ASIC차단코드)포크 추진확정시, 콘스탄티노플 포크와 동시 추진(2-5월)
3> ProgPoW포크가 없거나 또는 별도추진하되, 추가테스트 및 감사가 길어져 공백을 두고 콘스탄티노플 재추진(3월 또는 그이후)
뭐,, 그외의 경우가 될지도 모르겠지만 이번주 금요일에 있을 ‘Ethereum Core Devs Meeting #53(https://github.com/ethereum/pm/issues/70)’때 이 부분을 다룰 예정이라고 하니 현재로서는 지켜봐야할것 같습니다.
*사실 본 이슈 관련으로 긴급 개발자 회의가 있었고 공식/비공식적으로 추가 논의가 있지 않을까 싶습니다.(https://www.reddit.com/r/ethereum/comments/agcutg/constantinople_hard_fork_will_be_postponed/)
어쨌든 이번 콘스탄티노플 하드포크가 이전의 연기에도 불구하고 또다시 연기되어 개인적으로도 아쉽고 불만도 있지만, 사용자 자금을 위험에 빠질수 있는 개선안에 대해 포크를 즉각 연기시키기로 한 특단의 조치가 그나마 다행이라고 생각합니다. 다만, 커뮤니티의 불안감이 커지기 전에 빠른 수습과 포크 재추진 날짜가 정해지길 바래봅니다.
*’좋아요’와 ‘댓글’ 환영합니다^^