"지연작업증명"의 두 판 사이의 차이
잔글 (→참고자료) |
잔글 (→같이 보기) |
||
75번째 줄: | 75번째 줄: | ||
* [[해시캐시]] | * [[해시캐시]] | ||
− | {{알고리즘}} | + | {{알고리즘|검토 필요}} |
[[분류:합의 알고리즘]] | [[분류:합의 알고리즘]] |
2019년 4월 7일 (일) 20:35 판
지연작업증명(DPoW, Delayed Proof of Work)은 자체 블록체인 이외에 추가로 기존 비트코인의 블록체인도 함께 사용함으로써 위변조가 더욱 어렵게 만드는 합의 알고리즘이다. 슈퍼넷(Supernet)이 설계하였으며, 익명성을 보장하는 프라이버시 코인인 코모도(Komodo)가 지연작업증명 방식을 사용하고 있다. 지연작업증명 방식은 네트워크 보안을 강화하기 위해 비트코인 블록체인의 해시파워를 사용하는 작업증명 합의 알고리즘의 수정 버전이다. 디포우라고도 읽는다.
개요
지연작업증명은 단일 하이브리드 합의 시스템 내에 존재하는 여러 가지 방법을 활용하는 솔루션이다. 이는 비트코인의 작업증명 방식으로 보안을 유지하는 동시에 지분증명 방식의 에너지 효율성을 따진다. 따라서 지연작업증명은 가장 빈약한 블록체인조차도 비트코인이 가지는 해시레이트의 이점을 활용할 수 있게 해준다. 또한 이는 비트코인의 전력 사용만으로 비트코인 자체는 물론 작업증명 전체 생태계를 안전하고 친환경적으로 만든다.
지연작업증명 방식은 초기 합의 알고리즘을 보완한 방식이다. 따라서 지연작업증명 블록체인의 코어는 지분증명과 작업증명 모두를 지원한다. 더불어 지연작업증명 방식은 어떤 작업증명 블록체인에도 연결될 수 있다. 하지만 비트코인이 가진 최상의 해시레이트 때문에 다른 선택을 할 이유는 없다.
어떤 방식으로 합의 알고리즘을 초기화하더라도 다른 암호화폐는 지연작업증명 방식의 블록체인을 이용하여 자신의 네트워크를 보호할 수 있다. 지연작업증명 방식에 연결된 다른 암호화폐도 마찬가지로 비트코인의 해시레이트를 보안에 이용하는데, 이는 지연작업증명 방식의 블록체인이 비트코인의 해시레이트를 보안에 이용하기 때문이다. 예를 들면, A라는 코인이 지연작업증명 방식의 트랜잭션을 지연작업증명 방식의 블록체인으로 보낸다. 이때 지연작업증명 방식의 블록체인은 트랜잭션을 비트코인 블록체인으로 보낼 것이다. 결과적으로 모든 암호화폐는 비트코인 블록체인에 직접 그 자신을 연결할 수 있지만 트랜잭션에 따른 수수료의 차이 때문에 이미 동작하고 있던 기존의 지연작업증명 시스템을 활용하고자 할 것이다.[1]
특징
공증노드
비트코인 블록체인에 데이터를 기록하기 위해서는 공증노드가 필요하다. 때문에 지연작업증명 합의 알고리즘은 두 종류의 노드로 구성되어야만 한다. 일반노드는 누구나 운영할 수 있지만 공증노드는 별도로 선출되어야만 한다. 전체 블록체인에 종속적인 어떤 데이터를 생성하려면 시빌공격(sybil attack)은 꼭 막아야 한다. 게다가 크고 무작위로 선정된 피어집합보다는 고성능의 소규모 세트를 이용해 보다 더 높은 신뢰성와 일관성을 갖출 수 있다. 블록생성 권한을 부여받은 증인노드를 선정하기 위해서는 지분증명 지분을 이용한다. 이런 유형의 모델이 작업증명이 필요로 하는 노드들의 조건에 잘 부합하는데 이를 공증노드라 한다.
공증노드는 지분을 가진 이들에 의해 선정된다. 이때, 공증노드는 블록보상을 받는다. 때문에 재정적 이해관계에 놓인 이들은 자신들의 제어 하에 있거나, 적어도 그들에게 우호적인 공증노드를 뽑으려고 할 것이다. 이러한 시스템은 순수한 관점에서 보자면 완전히 분산화 되어 있는 것은 아니지만 넓게 분포한 지분들로부터 선정된 64개의 공증노드는 51% 공격을 거의 불가능하게 하는 훌륭한 지표로 삼을 수 있다.
마침내 비트코인 블록체인상의 지연작업증명 방식의 블록체인으로부터 블록들에 대한 공증을 책임질 64개의 공증노드로 이루어진 그룹이 구성되었다. 이 그룹은 강력한 경제적 보상을 통해 공증노드와 이들을 선정할 지분 참여자들을 정직하게 행동하며 거짓 없는 투표를 하도록 유도한다.[2]
공격기법
다음은 온라인상의 공증노드를 목표로 하는 공격기법과 모든 공증노드가 일시적으로 멈춰버리는 경우에 대한 설명이다.
- 이중지불 공격 : 이중지불 공격이란 원본 파일에 저장된 가치를 지불한 뒤, 해당 파일을 복사하여 다른 사람에게 또 지불하는 것을 말한다.[3] 이중지불 공격에서 상대편은 네트워크상에서 확인된 트랜잭션을 되돌려놓으려고 한다. 공격목표는 공격자가 우선 자신의 계좌로부터 수신측인 피해자로 지불하는 트랜잭션을 발생시킨다. 그 후에 컨펌을 받고 충돌을 일으키는 트랜잭션을 거래내역에 집어넣어 해당 트랜잭션을 복구시켜버린다. 비트코인으로부터 공증을 받은 트랜잭션에 이중지불 공격이 제대로 성공하기 위해서는 비트코인 블록체인 또한 기록을 갱신해야 한다. 그래서 해당 공격은 현실성이 떨어진다.
- 트랜잭션 거부 공격 : 트랜잭션 거부 공격은 어떤 특정한 트랜잭션이 컨펌을 받을 수 없게 하는 방법이다. 예를 들면, 공격자는 특정 계정을 목표로 하고 계정 소유자가 외부로 트랜잭션을 내보내지 못하게 한다. 그러나 노드가 어떤 공증노드이던지 직간접적으로 연결되어 있는 한, 트랜잭션의 유효성은 결국 컨펌을 받게 될 것이다.
- 이클립스 공격 : 이클립스 공격은 P2P 메시지 전달 매커니즘을 파괴시켜 노드로 전달되는 메시지를 훼손시키는 공격이다. 노드가 이클립스 공격의 대상이 되기 위해서는 공격자의 노드에만 연결되어 있어야 한다. 이를 방어하는 최선의 방법은 외부로부터 검증된 체인팁을 가지고 있는 것이다. 그러나 단지 하나의 정상적인 노드와 연결이 되어 있기만 하더라도 공격받은 노드에서 정상적인 메인체인을 찾아낼 수 있을 것이다. 대부분의 경우, 지연작업증명 방식의 체인에 존재하는 공증된 데이터는 부트스트랩을 허용하고 있다. 하지만 공격자가 처음부터 완전히 새로운 체인을 만들어낸 경우, 비트코인 체인을 통해 정상적인 매커니즘에 의한 것인지 확인할 수 있다.
- Nothing at stake와 과거 다수결 공격 : 이클립스 공격 설명에서처럼 공증된 메인체인 상에 단 하나의 정상적인 노드만으로도 새로운 노드가 참조하기에 충분하다. 지연작업증명 체인에서 공증데이터가 온전한 상태라면 그 자체로 진짜 체인을 찾아내기 위한 조건을 갖춘 것이다. 공격자가 가짜 체인을 만들었다고 해도 단 하나의 순수노드에 대해 데이터 공증을 위해서 비트코인의 체인을 참조하게 된다. 따라서 새로 추가되는 노드는 정상적인 공증 메인체인으로 재구성될 수 있다.
- 51% 공격 : 51% 공격은 블록체인의 전체 노드 중 50%를 초과하는 해시 연산력을 확보한 뒤, 거래 정보를 조작함으로써 이익을 얻으려는 해킹 공격이다. 공격자가 공증노드의 과반수 이상을 제어할 수 있게 된다면 51% 공격이 실현되는 것이다. 이 경우 공격자는 블록체인으로 특정 트랜잭션이 전송되지 않게 할 수 는 있지만, 한 번이라도 비트코인 체인에서 블록에 공증을 받았다면 공격자가 제어하는 과반수의 공증노드로 공증여부를 취소할 수는 없다. 공격자가 공증노드로부터 새롭게 블록이 생성되지 못하게 하는 경우에는 별도의 합의 방법을 통해 새로운 블록을 생성시킬 것이다.
- 공증노드 공격 : 모든 공증노드가 동시에 오프라인이 되면 지연작업증명 네트워크는 초기 합의 알고리즘에 따른 통상적인 블록체인 형태가 된다. 과거 공증데이터에 대한 기록은 지연작업증명 블록체인에 그대로 남지만 보통의 블록체인에 대한 공격이 성공하게 되면 그 이력을 덮어써 버릴지도 모른다. 그러나 이러한 상황이 발생하면 공증데이터는 비트코인 블록체인을 참조할 것이다.
지연작업증명 합의 알고리즘은 일반노드도 직접 비트코인 블록체인으로부터 공증데이터를 확인할 수 있는 더욱 발전된 형태를 지니고 있다. 이러한 경우 보통노드도 제대로 공증된 메인체인을 찾아내 공증블록을 무효화시키려는 블록의 유입을 막아낼 수 있다.
우아한 성능저하
공증노드 없이는 비트코인이 제공하는 보안성을 확보할 수 없다. 하지만 지연작업증명 네트워크는 적절한 설계를 통해 초기에 합의된 보안을 사용함으로써 보안성을 유지하고 있다. 우아한 성능저하를 실현하는 방법으로 UTXO(Unspent Transaction Output) 및 다른 매개변수를 사용하는 피어코인(Peercoin) 방식의 지분증명을 이용할 수 있다. 각 노드는 정상적으로 투자를 진행하고 공증노드는 제3의 체인에게도 똑같은 방식을 이용하여 공증된 해시값의 오버레이를 제공한다.
피어코인에서는 작업증명과 지분증명 방식이 공존한다. 계산된 해시값을 대체함으로써 작업증명에 비해 지분증명 계산법이 더 많이 쓰인다. 비슷한 방법을 사용해 두 가지의 완전히 다른 방법으로 블록을 얻을 수도 있다. 이 블록을 가지고 시스템에서 공증자가 지분을 취득할 수 있게 옵션을 제공한다. 물론 공증노드가 없는 경우, 일부 최종 유저노드가 해당하는 지분을 가져가게 된다.
또 다른 옵션으로 합의 알고리즘을 시작하는데 작업증명 방식을 시용할 수도 있다. 이 경우 공증노드와 다른 일반노드 모두가 채굴에 참여한다. 하지만 일반노드가 보통 난이도로 채굴하는 데 반해 공증노드는 최저 난이도로 채굴할 수 있다.
만일 어떤 이유로 인해 공증노드가 사라진다면 보통 난이도를 가진 다른 노드들이 계속해서 채굴하고 블록을 찾아낼 수 있을 것이다. 노드들은 이미 지연작업증명 블록체인으로부터 공증 받은 데이터를 얻을 자격이 있다. 따라서 이미 공증된 기록들은 비트코인 만큼이나 안전하다고 볼 수 있다. 지연작업증명 방식은 공증노드에 종속적이지 않기 때문에 공증노드 없이도 블록체인은 동작을 멈추지 않는다. 만약 모든 노드가 오프라인이 되면 이후 새로 생성되는 데이터는 비트코인 블록체인으로부터 더는 공증 받을 수 없다. 비록 다른 일반노드는 서명된 비트코인 그룹으로 트랜잭션을 보낼 수 없지만 지연작업증명 블록체인으로부터 기존에 공증된 기록을 읽고 유효성 검사를 할 수는 있다.
지연작업증명 방식은 서로 다른 컴포넌트로 이루어진 시스템이다. 이 컴포넌트들은 함께 일하도록 디자인되어있다. 하지만 블록을 생성하는 핵심기능은 독립적으로 수행할 수 있다. 따라서 결국 지연작업증명 방식에서는 선택된 공증노드에서 만들어진 공증된 데이터로부터 블록을 생성할 수 있으며 견고하고 분산화 된 작업이 가능하다.[2]
위임된 지분증명
지연작업증명 방식에서 모든 최종 유저노드가 지분증명 지분을 취할 필요가 거의 없다. 지연작업증명 방식은 공증노드를 이용하여 보안을 유지하기 때문이다. 매 천 개의 블록마다 남겨지는 거래내역 스냅샷을 이용하면 모든 주소의 잔액을 알아낼 수 있다. 이 거래내역을 공개키 암호방식(Public-key cryptography) 기준으로 정렬하면, 각각의 주소는 모든 노드에서 같은 순서에 위치한다. 각각의 블록과 공증노드는 주소값의 1/N번째 값으로 최선의 지분증명 값을 계산해낸다. 이 값은 코인을 획득하게 된 주소를 효율적으로 검색할 수 있게 하기 위해 모든 다른 공증노드에게 공유된다. 해당 주소를 담당하는 공증노드는 블록을 생성하고 서명을 한다. 우승한 주소로는 5%의 APR 지분을 지급하고 자기 자신에게 블록에 대한 보상을 지급한다. 이 프로세스는 계좌통합을 유도하여 지분보상을 극대화시키며 주소의 개수가 늘어나는 것을 막을 수 있다. 또한 블록 당 요구하는 연산능력을 관리 가능한 수준으로 유지할 수 있다.
대부분의 공증노드는 획득한 블록을 승인해줘야 한다. 또한 각 공증노드는 등록된 우승한 주소가 아무 문제가 없음을 보장할 수 있도록 모든 유효한 주소값에 대해 무작위 탐색을 수행할 수 있다. 이는 무차별 대입을 이용한 재구성 발생의 가능성을 막기 위함이다. 매 천 개의 블록마다 거래내역 스냅샷을 남기기 때문에 지분증명 계산에 참조되는 주소잔액은 과거의 1000~2000개의 블록 사이에 남아있다. 어떤 주소가 블록을 획득하게 될지 천 개 블록보다 앞서 미리 알 방법이 없는데, 이러한 방법을 통해 우승 주소 주변으로 자산을 이동시켜두는 지분투자방식을 방지할 수 있게 한다.
만일 잔액변동이 전혀 없다면 향후 주어질 천 개의 블록값과 어떤 주소가 우승할지, 그리고 다음 스냅샷에서 주어지는 보상 블록을 획득할 수 있도록 결정적 변수값을 계산해낼 수 있게 될 것이다. 어쩌면 우승할 주소값들을 연속적으로 미리 계산하여 정확한 금액만큼만 자산을 이동시켜놓을 수도 있다. 이로 인해 특정인이 이익을 독점할 뿐만 아니라 다음 참여자가 똑같은 행동을 반복하는 것도 막을 수가 없는 문제가 일어난다. 또한 지분획득 프로세스를 완전히 우회하여 UTXO가 소비되었을 때 발생하는 이자를 가져가버릴 가능성 또한 존재한다. 이러한 방법들이 실제로 시도되고 있지만, 정확히 지연지분증명 합의 방식이 일으키는 문제라고 할 수 없다.[4]
각주
- ↑ 땡글IN, 〈코모도 Komodo dPoW 백서 번역 및 요약입니다. White Paper 1/2〉, 《땡글》, 2017-09-11
- ↑ 2.0 2.1 호오라, 〈(백서 번역 완료) 코모도 백서 번역 오픈 프로젝트〉, 《땡글》, 2017-03-01
- ↑ 해시넷, 〈(해시넷 블록체인 시리즈 4) 블록체인의 문제점과 대안 (작업증명 문제, 체인 알고리즘 문제, 오라클 문제)〉, 《네이버 블로그》, 2018-08-29
- ↑ 땡글IN, 〈코모도 Komodo dPoW 백서 번역 및 요약입니다. White Paper 2/2〉, 《땡글》, 2017-09-12
참고자료
- 코모도 백서 - "KOMODO - advanced blockchain technology, focused on freedom", Komodo Platform – version 1.1, 2018-06-03
- 해시넷, 〈(해시넷 블록체인 시리즈 4) 블록체인의 문제점과 대안 (작업증명 문제, 체인 알고리즘 문제, 오라클 문제)〉, 《네이버 블로그》, 2018-08-29
- 호오라, 〈(백서 번역 완료) 코모도 백서 번역 오픈 프로젝트〉, 《땡글》, 2017-03-01
- 땡글IN, 〈코모도 Komodo dPoW 백서 번역 및 요약입니다. White Paper 1/2〉, 《땡글》, 2017-09-11
- 땡글IN, 〈코모도 Komodo dPoW 백서 번역 및 요약입니다. White Paper 2/2〉, 《땡글》, 2017-09-12
같이 보기
|