이전 게시물에서 채굴과 노드에 대해 간단히 알아보았다.
채굴이란 블록체인 네트워크에 노드로 트랜잭션을 검증하여 분산원장에 기록하고, 보상으로 암호하폐를 얻는 일련의 과정을 말한다. 새로운 블록을 만드는 것이 바로 채굴의 핵심이다.
비트코인의 경우, 새로운 블록이 10분마다 생성되는데, 보상으로 비트코인을 채굴에 참여한 작업자 중 해시퍼즐이라는 문제를 푼 작업자(a.k.a 채굴자)에게 지급하게 되며 해시퍼즐은 특정한 조건을 갖춘 해시를 찾아내는 과정을 말한다.
노드(Node)가 비트코인 네트워크에 접속하면, 비트코인 채굴자는 다음과 같이 몇 가지 작업을 수행한다.
💡 비트코인에서 트랜잭션 검증하는 단계
1) 원본 데이터를 자신의 '개인키'로 암호화를 진행하여 '디지털 서명'을 진행
2) 원본 데이터와 '디지털 서명'된 데이터를 노드에 전파
3) 트랜잭션을 받은 노드는 해당 트랜잭션이 진짜인지에 대한 검증을 위해 트랜잭션을 송신한 노드의 공개키를 이용하여 난독화(암호화)를 진행
4) 난독화된 거래 데이터와, 원본 데이터를 비교하여 수정된 데이터가 있는지 데이터의 무결성을 검증
5) 수신 받은 트랜잭션이 진짜 거래로 판단될 경우 블록체인에 해당 트랜잭션을 업데이트하고 블록체인 네트워크에 연결된 노드들에게 해당 트랜잭션을 또 전파
블록 헤더에 있는 논스(nonce)와 트랜잭션의 논스(nonce)의 차이
블록 헤더에 있는 논스는 입력값 중의 하나로 해서 계산되는 블록의 해시값을 찾아낼 때 쓰인다.(특정 해싱값보다 작아지게 하는 값으로 쓰인다)
이더리움에서 트랜잭션의 논스(nonce)는 발신 주소의 속성이며, 해당 주소에서 발생한 확인된 트랜잭션 건수를 세어서 동적으로 계산되는 값으로 쓰인다.
💡 비트코인의 작업증명(PoW)의 블록생성시간은 10분인데, 더 많은 채굴자들이 등장하고, 빨리 채굴할수록 채굴 난이도가 상승하게 되어있다.
비트코인 채굴자의 보상은 일정량을 지속적으로 보상하는 것이 아니라, 반감기로 인하여 2009년 초반에는 블록 하나를 생성할 때마다 50개의 비트코인을 보상으로 받을 수 있었지만, 2018년에는 12.5개의 비트코인을 블록 보상으로 받을 수 있는 등 4년 주기로 보상에도 변화가 생긴다.
비트코인의 총 공급량은 약 2100만개이며, 반감기로 채굴되는 비트코인수량이 적어질수록 그에따른 희소성 가치가 부각될 것이다.
💡 이더리움은 어떻게 채굴할까?
네트워크의 채굴 노드는 기존 비트코인의 SHA-256 방식이나 라이트코인의 스크립트(Scrypt) 방식을 사용하지 않고, 이더해시(Ethash)라는 독자적인 알고리즘 기반의 pow 방식으로 채굴한다.
채굴을하면 코인으로 받는 보상 말고도 트랜잭션을 확인하고 유효성을 검증하는데 일조한 검증자에게 트랜잭션 수수료가 보상으로 지급된다.
트랜잭션 수수료란?
사용자가 암호화폐를 전송, 입금, 출금 하며 낸 거래 수수료 (이더리움의 경우 가스비도 해당)
💡 대분분 암호화폐는 두 가지 이유에서 트랜잭션 수수료를 사용함.
➕네트워크상의 스팸 공격을 줄이기 위해서
거래 수수료는 대규모 스팸 공격과 이를 실행하는 데 무척 많은 비용이 들도록 한다.
➕거래 수수료는 트랜잭션을 확인하고 유효성을 검증하는 사용자에게 인센티브를 제공
이를 네트워크에 일조하는 행동에 대한 보상이라 이해할 수 있다.
대부분의 블록체인에서 트랜잭션 수수료는 합리적인 수준으로 저렴하지만, 네트워크 트래픽에 따라 상당히 비싸질 수도 있다. 얼마의 수수료를 지불하기로 결정하느냐에 따라 트랜잭션이 다음 블록에 추가되는 우선 순위가 정해진다.
1초당 처리할 수 있는 트랜잭션의 개수를 의미한다. 원장이 분산화되고, 참여 노드가 증가할수록 TPS는 느려지고, 수수료는 증가하게 된다.(트릴레마 게시물에서 다뤘다)
채굴을 하는 채굴자들이 모여서 만들어진 채굴자 조합(풀)이라고 이해할 수 있다.
그런데 A를 돕는 C가 15라는 해시파워를 지니고 나타난다면 A와 C의 해시파워가 도합 25가되어 B의 해시파워를 넘어서게 된다. 결국, B보다 A와 C가 블록을 먼저 생성하게 된다. 이러한 개념에서 발생된 것이 바로 채굴자 집단인 채굴 풀이다.해시파워(Hash power)란, 블록체인 네트워크에서 채굴자들이 가지고 있는 채굴 역량을 뜻한다.
해시레이트란, 연산 처리능력을 측정하는 단위로 해시 속도를 의미함.
그래서 채굴 풀이란걸 이용해서 돈이 적은사람도 PoS 채굴 풀에 합류해서 함께 파이를 나눠서 이익을 얻고, 사용자들은 돈만 제공해주고 노드는 채굴풀이 돌리니 보상에서 일정 수수료를 제외하고 자신이 받아가는 형태의 새로운 채굴풀이 등장하게 된다. 이런 형태의 채굴 풀이 위임지분 증명(DPoS)방식이 사용하는 채굴 풀인데, 이것은 사용자가 시스템에 스테이킹을 해두고 투표를 통해 채굴자(노드)를 선정하는 시스템이된다.스테이킹(Staking)이란, 자신이 보유하고 있는 가상화폐 중 일정 지분량을 고정하는 것으로, 가상 화폐의 보유자는 가격의 등락과 상관없이 가상 화폐를 예치하고, 예치 기간 일정 수준의 이익을 얻을 수 있다.
어떤 행동에 대해 ‘토큰’을 보상함으로써 특정 행동을 유도하는 경제 생태계를 말한다. 보상으로 주어지는 토큰은, 다른 유형의 물건이나 다른 서비스와 교환할 수 있는 지역화폐이다. 블록체인 분야에서는 토큰을 활용해 생태계에서 목표로 하는 행동을 유도하는 시스템으로 사용되고 있다.
수년간 블록체인 발전을 통해 형성된 새로운 경제모델을 말한다. 블록체인에서 사용하는 코인 또는 토큰을 활용해 서비스를 제공하여 이윤을 창출하는 방법과 참여자들에게 보상을 주어 활성화하는 방법, 분산원장의 거버넌스 등을 결합한 경제 생태계를 통칭한다. 위의 토큰 이코노미는 크립토 이코노미를 구성하는 중요한 일부분이다.
💡 처음 Dapp 에서 기반으로했던 플랫폼에서만 사용할 수 있게끔 개발된 토큰이었지만, 후에 독자적인 플랫폼을 구축함으로써 ‘코인’으로 전환 할 수 있는 방법도 존재한다.
메인넷 론칭이 완료되면 기존 Dapp에서 개발된 토큰은 독자적인 플랫폼을 지닌 코인으로 불린다.
블록체인 네트워크에 연결되어 있는 각각의 서버들을 노드라고 한다. 노드는 맡은 역할에 따라 다양한 기능을 수행한다. 즉, 노드를 서버라고 했을 때, 서버의 역할이 데이터 저장만 하는 게 아닌 것처럼 노드역시 다양한 기능을 수행하게 된다.
노드는 트랜잭션을 제안하고 검증할 수 있으며, 합의를 이루고, 블록체인을 보호하기 위해 채굴을 수행하기도 한다.
제네시스블록(Genesis block)은 블록체인에서 생성된 첫 번째 블록이다. 해당 블록체인네트워크에 시작 이라는 상징적 의미를 가진다.
Proof of Work의 약자이며 유효한 블록을 만드는 데 충분한 계산 자원을 소모했다는 증명이다. 이때, 메인체인을 선택하는 데 있어 가장 가장 긴 체인을 채택하는 알고리즘인 고스트 프로토콜(Ghost protocol)을 사용하여 블록이 결정된다.
블록이 결정되는 방법 - 고스트 프로토콜(Ghost protocol)
고스트 프로토콜은 어느 체인이 가장 긴 것인지 계산할 때 고아블록도 포함함으로써 네트워크 보안 손실 문제를 해결한다. 다시 말해 어느 블록이 가장 큰 전체 작업증명을 가지고 있는지 계산함에 있어서, 그 블록의 부모블록과 조상뿐만 아니라, 그 블록의 고아자손까지도 더한다는 것 이다.
💡 PoW 의 대표적인 코인에는 비트코인, 라이트코인, 비트코인 캐시 등이 있다.
비트코인에서 작업증명은 반복적인 과정을 통해 무작위로 특정한 조건(해싱값)을 만족하는 논스 값을 찾아내어 그에 대한 대가로 비트코인을 받게 된다.
실제 Difficulty Target이 이렇게 표현되지는 않는다. 이해를 돕기 위해 쉽게 표현한 것 이다.
이전 포스팅에서 블록들은 각각 해시값으로 표현될 수 있다는 것을 알게 됐다. 난이도가 4로 설정되었다고 가정한다면, 블록을 Hashing(비트코인에서는 SHA-256 해시함수 사용)해서 앞자리 4개가 0인 해시값을 만들 수 있도록 하는 논스값을 찾아야한다. 논스를 찾는 방법은 무차별 대입 방법밖에 없다. 이 과정에서 컴퓨터의 계산 능력이 필요하며, 서로 다른 노드들이 같은 문제를 풀기위해 경쟁한다. 경쟁을 통해 결국 하나의 블록이 생성되므로, 블록 생성에 성공한 블록 외의 다른 컴퓨터가 사용한 전력은 고스란히 낭비된다. 즉, 자신의 해시파워가 높을수록 원하는 값을 얻기가 쉬워지지만, 그러려면 엄청난 금액의 채굴기와 전기료를 감당해야 한다.
https://m.blog.naver.com/sunchan683/221606846917
논스를 찾는 방법은 무차별 대입 방법밖에 없다. 특정 개수의 0이 있는 패턴을 찾은 채굴자는 블록을 즉시 브로드캐스팅하고, 다른 채굴자들은 블록을 승인하게 된다.
💡 여기서 난이도는 2016개의 블록이 생성될 때마다 조정된다.
가장 큰 장점은 높은 보완성이다. 블록체인의 취약점으로 알려진 51% 공격을 손쉽게 방어 할 수 있다. 51% 공격이란 악의적인 공격자가 그들의 행위를 성공시키기 위해서 51% 이상의 컴퓨팅 파워를 확보해야만 한다는 것이지만, 현실적으로 작업증명에서 51%이상을 획득하는 것은 천문학적인 비용이 발생하기 때문에 발생하기 매우 어렵다.
채굴난이도가 높아지면서 개인 채굴자는 채굴을 할 수 없는 수준까지 도달했다. 또한 연산에 필요한 고사양 장비가 필요하게 되고, 과도한 전력소모로 인해 에너지 낭비가 커졌다. 비트코인 채굴에 소모되는 전력량이 연간 약 48테라와트시로 추정된다. 이는 연간 페루, 홍콩을 넘어 싱가포르의 연간 전력에 비슷한 수치이며, 이러한 구조는 자연스럽게 기업형 채굴자들이 등장하게 된다. 이와 더불어 그들의 단합으로 채굴권이 집중되는 문제가 발생하게 되고, 결국 이런 이유로 인해 탈중앙으로부터 멀어지게 될 수도 있다.
Proof-of-Stake의 약자이며, 네트워크 참여자 모두가 블록을 검증할 수 있는 기회를 갖게되는 방식인데, 해당 암호화폐를 보유하고 있는 지분의 크기만큼 다음 블록의 검증노드로 선택될 확률이 높아진다. PoS는 컴퓨팅 파워 낭비가 심한 PoW와는 달리 자신의 지분(Stake). 즉 스테이킹한 자산을 통해 블록을 생성하기 때문에 무의미한 전력낭비가 없고 다른 코인으로 이탈 가능성이 적다(코인이 스테이킹 되면서 시장에 공급 하락으로 가격상승을 유발함). 이와 더불어 검증시간이 짧은 특징이 있다.
다시 말해 Nothing at Stake는 말 그대로 어느 쪽이든 잃을 것이 없다는 것이다.
참고 쉽게 설명하는 블록체인, Proof of Stake란 뭔가요? - 2 [PoS의 문제점과 해결책 (Nothing at Stake)]
암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 이 대표자들끼리 합의하여 의사결정을 내리는 합의 알고리즘이다. 지분 증명(PoS)이 자산을 가진 사람들이 전부 참여할 수 있는 방식이라면, 위임지분증명(DPoS)은 특정 인원에게만 지분 증명(PoS)을 할 수 있도록 권한을 위임하는 것이다.
선출된 대표자들은 블록을 생성하고, 블록을 확정하기 위해선 2/3 이상의 승인이 필요하다. 대표자의 지위는 일정 시간 이내에 블록 셋업에 참여해야 유지가 된다.
Klaytn에는 컨센서스 노드(CN), 프록시 노드(PN) 및 엔드포인트 노드(EN, (구)레인저 노드(Ranger node))라는 세 가지 유형의 노드가 있다.
컨센서스 노드는 CCO(Core Cell Operators)에 의해 관리되며 블록 생성을 담당한다.
Klaytn은 Istanbul BFT라는 합의 메커니즘을 사용하고 있습니다. IBFT는 블록체인 네트워크의 특성을 반영하여 변형된 버전의 PBFT이다.
IBFT(Istanbul Byzantine Fault Tolerance)는 즉각적인 최종성을 보장하는 권한 증명(PoA) 블록체인 합의 알고리즘이다. 기본적으로 PBFT의 형식을 따라가며 블록을 모아서 전송한다는 개념이 추가되었다. PBFT의 유효성 검사기 집합은 정적이지만 IBFT는 동적 유효성 검사기 집합이 있다는 점에서 PBFT와 다르다. 이를 통해 IBFT 합의 메커니즘 기반 블록체인은 PBFT 합의 메커니즘 기반 체인보다 빠르게 트랜잭션을 확인할 수 있다.
작동 방식은 다음과 같다.
블록체인의 기본 기능 자체를 수정하는 포크를 말하며, 블록체인의 문제 해결 및 업그레이드 방식의 하나로서, 업그레이드 이후에는 기존 문제를 해결하고 이전 블록체인과 전혀 다른 프로토콜을 가지는 블록체인이 된다. 이러한 하드포크 이후에 채굴 노드들은 새로운 버전으로 반드시 업그레이드를 해야 한다고 해서 하드포크라고 한다. 즉, 문제가 해결되고 새로운 체인이 만들어짐.
기존 블록체인의 기능을 일부 수정하는 포크를 말하며, 소프트포크를 하면, 기존 블록체인의 기본 구조는 변경되지 않고 부분적인 기능개선만 이루어지기 때문에 기존 블록체인 노드들은 간단한 시스템 업그레이드만으로도 새로운 시스템으로 이전할 수 있게 된다. 즉, 문제를 해결되지만 새로운 체인이 만들어지진 않음.
세그윗(SegWit)이란, Segregated Witness의 약자로서, 비트코인의 블록에서 디지털 서명 부분을 분리함으로써 블록당 저장 용량을 늘리는 소프트웨어 업그레이드이다.
💡 2017년 8월 1일을 기준 비트코인은 세그윗이라는 소프트포크를 진행하였다. 기존의 비트코인은 거래내역을 기록하는 블록 크기가 1MB에 불과하여 초당 7건, 하루 최대 60만건의 거래내역밖에 처리하지 못하는 한계가 있었는데, 이 문제를 해결하기 위해 비트코인 블록에서 디지털 서명 부분을 분리하여 별도로 저장함으로써, 블록당 저장 용량을 늘릴 수 있게 되었다.
한편, 세그윗을 진행할 경우 중국의 채굴업자들이 사용하던 에이식부스트(AsicBoost : 비트코인채굴 속도를 약 20% 정도 높이는 방법 ) 방식의 비트코인 채굴이 불가능해지게 되기 때문에, 중국의 채굴업체들을 중심으로 기존 에이식(ASIC) 채굴기를 사용한 비트코인 채굴을 지속하기 위해 기존 비트코인 블록에서 분리된 비트코인캐시(BCH, Bitcoin Cash)라는 이름의 새로운 암호화폐를 생성하였다.
암호화폐의 채굴자와 보유자의 이해관계가 상충되어 일어난 하드포크이다.
소프트포크 방안
더 다오와 해커들이 훔쳐간 지갑 사이의 이동을 정지하는 방법으로 이것은 해커가 사용할 수 없도록 만드는 것이며, 기록도 그대로 놔두는 것이다. 하지만 차단된 자금은 동결 상태가 되므로 원주인에게 되돌아가지 못한다.
하드포크 방안
하드포크를 이용해 블록체인을 다시 재작성해 이전의 기록을 무효화시키고 기존 해커들이 가져간 이더리움을 기존 보유자들에게 주기 위해 새 블록체인으로 옮기기로 결정한다. 즉 새로운 암호화폐를 탄생을 의미한다.
비대응안
"코드가 법이다"라는 원칙에 따라, 해킹 결과로 이루어진 거래도 인정해야 한다는 주장도 있었다. 각 사용자의 실수나 개별 프로젝트의 사정을 이유로 블록체인의 기록을 변경하는 것을 허용하지 않아야 한다는 주장이다.
처음에 이더리움 개발진은 소프트포크를 통해 이 문제를 해결하려고 했으나, 소프트포크 예정 시간에 디도스(DDoS) 공격이 제보되는 바람에 취소하고, 하드포크 방식으로 입장을 선회해 2016년 7월 20일 하드포크를 시행하게 된다.
블록체인의 새로운 버전은 "메인" 이더리움(ETH)이며, 해킹이 수정된 버전이다. 기존의 오리지널 블록체인은 바로 '이더리움 클래식(ETC)'이다.💡 기존의 코인의 소멸을 반대하는 이들은 하드포크가 암호화폐와 블록체인의 기본철학(누구도 위조·변조할 수 없는 신뢰 시스템)에 어긋나는 것이라고 느끼며, 해커가 오픈소스 및 투명한 스마트 계약으로 만들어진 기존의 코드 부분을 악용했을 뿐이라고 주장했다.
다시 말해, 더 다오의 스마트 계약은 단순히 유효한 명령을 수행했고, 외부 당사자에 의해 깨지거나 변경되지 않았다는 점에서 전통적인 의미로 해킹되지 않았으므로, 그 결과를 인정해야 한다는 것이 그들의 주장이었다.