Loading...

퀀텀 2.0, 하드포크와 업그레이드

2019-09-23 21:30

글의 배경

퀀텀(Qtum) 재단은 비트코인과 이더리움 가상 기계(EVM)의 최신 기술에 맞춰 업데이트를 하는 동시에 블록체인 기층 기반 시설도 꾸준히 개발해왔습니다. 이러한 노력하에 퀀텀 메인넷은 2년간 안정적으로 운영되어 왔지만 개발 과정에서 블록체인의 발전과 사용에 영향을 주는 현 시스템과 지분증명(POS) 합의 알고리즘의 한계점들을 발견했습니다.

빠르게 발전하는 블록체인 기술에 맞춰 퀀텀 재단은 단계적으로 블록체인의 기층 프로토콜을 업그레이드하고 퀀텀 2.0을 론칭할 예정입니다. 이 글을 통해 퀀텀 2.0의 첫 하드포크 업그레이드에 관한 내용을 공유드리고자 합니다.

QIP (Qtum Improvement Proposals)란?

QIP (Qtum Improvement Proposals)는 퀀텀 개발자들과 커뮤니티 멤버들이 퀀텀 기반 기술 업그레이드에 대한 건의와 제안들을 뜻합니다. 모든 제안들은 퀀텀 깃허브에 게재되고 누구든지 공개적으로 제안에 대한 의견을 제시할 수 있습니다. 퀀텀 개발팀은 광범위하게 인정받은 제안을 개발하여 블록체인에 반영을 하고 있습니다.

업그레이드의 목적과 동기

이번 업그레이드는 메인넷 론칭 후 퀀텀이 진행하는 첫 번째 하드포크입니다. 이번 업그레이드에는 아래와 같은 4 가지 합의 알고리즘과 관련된 QIP가 포함됩니다.

  • QIP-5: 컨트랙트 트랜잭션 아웃풋 스크립트에 서명 검증 추가

  • QIP-6: Qtum EVM에 btc_ecrecover 프리컴파일된 컨트랙트 추가

  • QIP-7: Qtum EVM 을 최신 이더리움 콘스탄티노플로 업그레이드

  • QIP-9: 스테이킹 난이도 조정 알고리즘을 수정하여 블록 생성 안정화

이 중에 QIP-5와 QIP-7은 퀀텀 블록체인에 새로운 특성을 부여하여 복잡한 스마트 컨트랙트 활용 시나리오를 가능케하며 추후 업그레이드(예를 들면 프라이빗 자산)를 위한 기술적 기초를 마련할 예정입니다. QIP-6는 스마트 컨트랙트의 개발 편의성을 높이는 동시에 비용을 절감할 것이고 QIP-9은 퀀텀 네트워크의 안정성을 향상시킬 예정입니다.

하드포크 업그레이드가 필요한 이유

퀀텀은 완전히 탈중앙화된 네트워크로 각 노드는 독립된 노드/지갑 프로그램을 운영하고 있습니다. 그러므로 합의 알고리즘에 따라 모든 노드가 퀀텀 네트워크의 거래와 블록에 대해 합의를 이루지만 노드를 운영하는 개인만이 본인이 운영하는 노드의 프로그램 버전을 조정할 수 있습니다. 일부 노드가 다수와 다른 합의 알고리즘을 채택한다면 네트워크는 두 갈래로 나뉘게 됩니다.

일반적인 업데이트는 합의 알고리즘을 수정하지 않으므로 일부 노드가 업데이트를 하지 않더라도 네트워크가 이전 버전을 지원하여 둘로 나뉘지 않습니다. 하지만 이번 업데이트에는 합의 알고리즘에 대한 수정을 포함하므로 업데이트한 노드들과 그렇지 않은 노드들은 서로 호환되지 않아 네트워크가 나뉘는 ‘하드포크’를 유발하게 됩니다.

예기치 못한 피해를 예방하기 위해 하드포크 예정일 전에 프로그램 업그레이드를 권하고 있습니다.

하드포크 관련 QIP 개요

QIP-5

개요

컨트랙트 트랜잭션 아웃풋 스크립트에 서명 검증을 추가하여 주소에 퀀텀을 보유하지 않고도 소유권 주장과 컨트랙트 실행을 가능하게 합니다.

동기

퀀텀 네트워크에서 스마트 컨트랙트 사용하려면 이에 대한 가스 비용을 지불해야 합니다. 그러므로 스마트 컨트랙트를 실행 시 주소에 잔액 보유가 요구됩니다(매우 작은 액수라도 보유해야 함). 가장 보편적인 컨트랙트 실행인 QRC20 토큰 송금을 예로 들어보겠습니다. A 주소가 1,000 개의 QC 토큰(퀀텀 네트워크에서 발행된 QRC20 스테이블 코인)을 보유하고 있다고 가정했을 때 1,000개의 토큰을 송금하기 위해 A 주소는 가스 비용으로 지출할 일정 액수의 퀀텀 코인을 보유하고 있어야 합니다(일반적으로 0.04-0.10 QTUM). A 주소에 퀀텀 코인이 전혀 없다면 가스 비용 지불이 불가하여 1,000개의 QC를 새로운 주소로 송금할 수 없게 됩니다.

현 버전에서의 유일한 해결방안은 A 주소에 퀀텀 코인을 송금한 다음 QC 토큰을 송금하는 것입니다. 이는 퀀텀 블록체인의 소중한 UTXO 리소스를 낭비할 뿐만 아니라 사용자 경험에도 매우 큰 악영향을 주고 있습니다. 또한 보다 복잡한 스마트 컨트랙트 활용 시나리오(예측 시장, 탈중앙화 거래소 등)에 있어서도 한계로 작용할 수밖에 없습니다.

장점

OP_SENDER 연산부호를 추가하면서 QIP-5는 컨트랙트 주소 소유권을 증명하는 방법을 제공하여 해당 주소에 퀀텀 코인이 없는 상황에서 스마트 컨트랙트 활용이 가능하게 했습니다. 이는 기존 시스템에 대한 작은 수정이지만 스마트 컨트랙트 생태계에 큰 변화를 일으킬 것으로 봅니다.

  • 퀀텀 코인을 보유하지 않은 주소들도 스마트 컨트랙트를 실행할 수 있게 하여 (예를 들면 QRC20 토큰 송금) 토큰 송금에 대한 보통 사용자들의 사용 경험을 향상시킬 예정입니다. (주의: 스마트 컨트랙트 비용이 무료로 전환된다는 것이 아니라 다른 주소를 통한 지불이 가능해지는 것입니다.)

  • 다양한 서비스가 생겨날 것으로 예상됩니다. 사용자는 서비스 이용만 하고 서비스 제공자가 비용을 지불하는 것이 가능해집니다.

  • 한 번의 트랜잭션에서 여러 개의 주소가 여러 개의 컨트랙트를 실행하는 것이 가능해져 컨트랙트의 활용성이 높아집니다.

  • 퀀텀 블록체인의 UTXO 리소스를 절약합니다.
잠재적 리스크

QIP-5는 새로운 합의 알고리즘을 추가하지만 기존의 알고리즘과 호환이 되어 이론적으로는 보안상의 리스크는 존재하지 않습니다. 하지만 기존의 기반 시설에는 영향을 줄 예정입니다.

  • 해당 기능을 사용하기 위해 추가적인 RPC 명령어를 개발해야 하고 서비스 제공자는 블록체인 기반 시설 업그레이드를 주기적으로 진행해야 합니다.

  • 스크립트가 추가됨으로 서비스 제공자는 해당 스크립트에 대해 추가적으로 검증을 해야 하고 그렇지 않으면 이런 유형의 거래를 인식하지 못할 수 있습니다.

QIP-6

개요

Qtum EVM에 btc_ecrecover 프리컴파일된 컨트랙트 추가하여 일반 컨트랙트가 바로 실행할 수 있게 할 예정입니다.

동기

솔리디티에서 ecrecover 함수는 타원 곡선 서명을 이와 매칭되는 퍼블릭 키 주소로 복원할 수 있습니다. 퀀텀 스마트 컨트랙트의 msg.sender는 비트코인과 유사한 P2PKH 주소를 채택하고 있는데 ecrecover 함수가 복원한 주소 양식은 이더리움 주소 양식과 같아서 이 둘을 직접 비교할 수 없습니다. 이런 이슈는 컨트랙트에 대한 개발자들의 논리적 판단을 복잡하게 만들고 있습니다. 현재로선 해당 이슈를 해결하기 위해 추가적인 라이브러리 컨트랙트를 실행해야 하지만 이는 더 많은 가스를 소비하게 하여 스마트 컨트랙트 활용 비용을 높이게 됩니다.

장점

QIP-6는 프리컴파일 컨트랙트를 통해 btc_ecrecover이라는 함수를 실현합니다. 새로운 함수는 기존 함수들의 모든 인터페이스와 호환되며 아래와 같은 장점들을 제공할 예정입니다.

  • Btc_ecrecover이 복원한 주소는 msg.sender의 주소와 동일한 형식을 갖추고 있어 직접적인 비교가 가능하여 컨트랙트 개발 과정의 복잡한 판단 과정을 간소화합니다.

  • 프리컴파일된 컨트랙트는 가스 비용을 크게 줄여서 스마트 컨트랙트의 활용 비용을 낮춥니다.
잠재적 리스크

QIP-6는 기존 시스템에 변화를 주지 않고 새로운 함수는 기존 함수 인터페이스와 완벽하게 호환됨으로 이론적으로는 리스크가 존재하지 않습니다.

QIP-7

개요

Qtum EVM 을 최신 이더리움 콘스탄티노플로 업그레이드

동기

현재 퀀텀은 EVM의 초기 버전을 사용하고 있습니다. 퀀텀 메인넷 론칭한 뒤 EVM은 지속적인 업그레이드를 진행하며 비잔틴 버전과 콘스탄티노플 버전을 선보였고 가변 길이 반환, 정적 컨트랙트 실행 등 개발자 친화적인 기능들을 새로운 버전의 가상 기계(Virtual machine)에 추가했고 컨트랙트와 애플리케이션 개발에 있어 해당 기능들의 수요는 점점 늘어나고 있습니다.

장점

QIP-7은 EVM 비잔틴과 콘스탄티노플 버전의 모든 신기능들을 포함하고 있어 더욱 복잡한 스마트 컨트랙트와 애플리케이션 개발을 가능케 합니다. 예를 들어, 퀀텀은 QIP-19에서 프라이빗 자산을 지원하려 합니다. 이와 관련된 스마트 컨트랙트 개발에는 EVM의 새로운 기능들이 필요합니다. 또한 업그레이드가 완료되면 이론적으로 이더리움 상의 모든 스마트 컨트랙트와 애플리케이션은 퀀텀 블록체인으로 이식이 가능해집니다. 물론 저층 UTXO 모델의 독특한 안전성과 안정성은 그대로 유지됩니다.

잠재적 리스크

비잔틴 버전과 콘스탄티노플 버전의 EVM은 이더리움 메인넷에 적용되어 안정성을 검증받았고 순방향 호환도 되어 있어 리스크가 적습니다. 하지만 퀀텀은 EVM 계정 모델과 다른 UTXO 모델을 적용하고 있어 기존의 스마트 컨트랙트를 이식할 때 개발자들은 퀀텀 EVM의 특성을 주의해야 합니다.

QIP-9

개요

QIP-9는 두 가지 업데이트를 진행할 예정입니다.

  1. 퀀텀 지분증명(POS) 시스템의 스테이킹 난이도 조정 알고리즘을 수정하여 블록 생성 시간을 안정시키고 최초에 디자인된 평균 블록 생성 시간인 128초로 낮출 예정입니다.

  2. 네트워크 웨이 평가 알고리즘을 수정하여 보다 더 정확한 값을 제공할 예정입니다. (합의 알고리즘과는 무관)
동기

퀀텀의 블록 생성 시간은 128초로 디자인되어 있습니다. 퀀텀의 탈중앙화된 지분증명 (Proof-of-Stake) 시스템은 자동적으로 난이도를 조절하여 블록 생성 시간을 평균적으로 128초로 유지하도록 디자인되어 있습니다. 하지만 현재 난이도 조정 알고리즘의 버그는 두 가지 문제를 일으키고 있습니다. 1) 일부 생성 시간이 지나치게 긴 경우와 2) 평균 블록 생성 시간이 144초로 길어진 점입니다. 이렇게 평균 블록 생성 시간은 최초 디자인된 것보다 길어졌고 이는 TPS와 블록 보상을 각각 12.5% 낮추는 결과를 낳았습니다.

네트워크 웨이는 퀀텀 네트워크에 스테이킹된 코인의 추정치로 블록 보상 예측에 사용됩니다. 퀀텀은 완전히 탈중앙화된 네트워크로 네트워크 전체의 웨이는 스테이킹 난이도를 통해서만 알 수 있습니다. 하지만 기존의 네트워크 웨이 계산법은 변동이 크고 네트워크의 상태를 정확하게 반영하지 못하는 문제가 있었습니다.

장점
  • QIP-9은 향상된 난이도 조정 알고리즘을 제공하여 블록 생성 시간의 지수 이동평균치를 기반으로 난이도를 조정합니다. 향상된 알고리즘은 블록 생성 시간이 긴 경우를 줄이고 평균 블록 생성 시간을 128초에 가깝게 조정할 예정입니다. 빨라진 블록 생성은 퀀텀의 TPS와 블록 보상 증가시킬 것으로 추정됩니다.

  • QIP-9은 네트워크 웨이 계산법 변경을 통해 네트워크 웨이 평가 방법을 향상시켜 기존 계산법 보다 더 안정적이고 정확하게 네트워크의 스테이킹 상태를 반영할 예정입니다.
잠재적 리스크
  • QIP-9에 포함된 난이도 조정 알고리즘은 보안 리스크가 없습니다.

  • 네트워크 웨이 평가 알고리즘은 보다 안정적으로 네트워크 가치를 평가하지만 실제 네트워크 웨이가 빠르게 변동하는 경우, 이를 빠르게 반영하지는 못해 개선의 여지가 있습니다. 하지만 이런 개선은 합의 알고리즘과 관련이 없으므로 추후에 일반적인 업데이트를 통해 다시 개선할 수 있습니다.
하드포크 배포 계획

이번 하드포크를 위한 코드는 충분히 개발됐고 반년에 가까운 시간 동안 테스트를 진행했습니다. 이번 업그레이드는 퀀텀 테스트넷에 우선적으로 실행하고 일정 기간 동안 테스트넷에서 안정적으로 운영한 뒤 공식적으로 퀀텀 메인넷에 반영할 예정입니다.

업그레이드는 사전에 설정된 블록 높이에서 자동적으로 실행될 것입니다. 테스트넷에서는 2019년 9월 20일에 446,320번째 블록에서 실행되었고 메인넷에서는 2019년 10월 16-17일 사이에 466,600번째 블록에서 반영될 예정입니다. 순조로운 업그레이드를 위해 사용자분들께서는 퀀텀 재단에서 공식 배포한 최신 버전의 지갑을 사용해주시길 바랍니다.

업그레이드는 퀀텀 코어(Qtum Core) 지갑과 이를 활용한 풀노드에만 적용됩니다. 퀀텀 일렉트럼 지갑, 하드웨어 지갑 또는 웹 지갑 등 다른 지갑을 사용하시는 사용자분들께는 적용되지 않습니다.

업그레이드의 영향

하드포크가 실행되는 블록 높이에 도달했을 때 업데이트된 지갑들은 그렇지 않은 지갑들과 분리됩니다. 이는 이전 버전의 노드와 지갑들은 메인 체인을 통해 거래를 하거나 스테이킹 하는 것이 불가능하다는 뜻입니다. 해당 거래와 스테이킹은 다수의 노드가 업그레이드됨에 따라 최종적으로 운영이 중지될 분리된 체인에 기록되게 됩니다. 분리된 체인의 노드들은 굉장히 낮은 네트워크 웨이를 보게 될 것이고 해당 체인에서 스테이킹을 하면 대량의 블록 보상을 획득할 것입니다. 하지만 분리된 체인의 거래 기록들은 지갑이 업데이트가 되면 사라질 것입니다. 또한 하드포크가 진행될 기간에는 거래 확정 시간이 길어질 수 있습니다. (송금, 거래소 입출금 등)

준비사항

순조로운 업그레이드를 위해 퀀텀 재단은 하드포크가 실행되기 전에 모든 거래소와 서비스 제공자(지갑, 익스플로러), 채굴자와 일반 사용자들에게 해당 내용을 고지할 예정입니다.

정식 배포 전에 퀀텀 개발팀은 반년에 가까운 내부 실험을 성공적으로 진행했고 업그레이드는 메인넷에 적용하기 한 달 전 테스트넷에 적용하여 추가적인 검증 절차와 변경사항을 점검할 예정입니다.

모든 사용자들은 퀀텀 코어 (Qtum Core) 지갑과 노드를 최신 버전으로 업데이트해주시길 바랍니다. 또한 업데이트를 하지 않을 경우 발생할 문제점들도 숙지해주시길 바랍니다.

추후에 또 하드포크가 예정되어 있나요?

합의 알고리즘과 관련된 업데이트는 하드포크가 요구됩니다. 하드포크를 실행할 때마다 이번과 같이 사용자들에게 공지를 할 예정입니다. X86 가상 기계(Virtual machine), 프라이빗 자산, 스마트 컨트랙트 스테이킹 기능 등 퀀텀 계획의 실현에는 하드포크가 요구됩니다. 퀀텀 개발팀은 하드포크가 필요한 업그레이드들을 통합하여 하드포크 횟수를 최소화할 예정입니다.

사용자가 해야 할 일

메인넷에 업그레이드가 반영되기 전에 퀀텀 코어(Qtum Core) 지갑을 최신 버전으로 업데이트해주시길 바랍니다.

기타 참여자들은 아래와 같이 업그레이드를 준비해주시길 바랍니다.

거래소와 지갑
  • 하드포크 실행 전후로 퀀텀 코인과 QRC20 토큰의 입출금에 유의를 해주시길 바라고 메인넷에서 충분한 확정 길이를 확인한 후 거래를 승인해주시길 바랍니다.

  • QRC20 토큰 송금 지원 프로그램(QIP-5 관련)을 업그레이드하여 가시 비용 지불과 관련된 새로운 기능을 활성화하시길 바랍니다.
서비스 제공자 (익스플로러 등)
  • 하드포크 후에 OP-SENDER과 관련된 거래 결과 인식이 불가한 상황을 피하기 위해 QIP-5와 관련된 기능의 개발을 권고 드립니다.
채굴자 (마이닝풀, 개인 채굴자)
  • 업그레이드 전후로 네트워크 웨이와 블록 보상에 유의해주시길 바랍니다. 평균 블록 생성 시간이 128초로 낮아지면서 블록 보상이 증가할 예정입니다.
개발자
  • 신기능을 활용한 컨트랙트와 애플리케이션은 테스트넷에서 우선 개발하고 메인넷 업그레이드 후 메인넷에서 배포가 가능합니다.

  • QIP-5를 여러 활용 시나리오에 적용시킬 수 있습니다.

참고 자료:

QIP-5 관련

QIP-6 관련

QIP-7 관련

QIP-9 관련

비잔틴

콘스탄티노플

QIP-19 관련

퀀텀 공식 커뮤니티

Naver Blog

Telegram

Kakao Talk

Facebook