728x90

블록체인 데모

 

Tools - SuperDataScience

 

tools.superdatascience.com

 

Block

블록 번호, 논스, 데이터, 해시를 확인할 수 있으며, 블록 자체이기 때문에 이전 해시는 없다. 블록의 원리를 확인할 수 있다. 

데이터를 입력했을 때 빨간색으로 표시되는 것은 유효한 해시가 없기 때문으로 이 블록을 채굴해보게 되면 논스와 해시가 업데이트되고, 블록 번호와 데이터는 그대로 이다. 

위에 보이는 선행 제로는 특정 대상을 통과했음을 나타낸다. 

 

Blockchain

5개의 블록이 있는 블록체인 예시가 있고 이전 블록의 해시를 나타내는 새로운 필드가 포함되어 있다. 모두 암호화되어 연결되어 있으며, 각 블록은 유효한 해시를 가지고 있다. 

4개의 선행 제로로 시작하며 이 블록체인을 공격해보겠다. 우선 데이터를 추가하고, 블록을 채굴하여 블록체인을 유효하게 만들었다. 하지만 블록 데이터를 변경하게 된다면 어떻게 될까?

이전 해시는 변하지 않았지만 현재 블록의 해시가 변경되면서 뒤따르는 해시가 모두 변해버렸따. 이는 값을 입력하면 해시는 자동으로 재계산되어 이전 해시가 달라지며 링크가 깨지게 된다. 

결국에 이 블록과 다음 블록을 재채굴하면 빨간색으로 변하고 이 블록도 재채굴해야한다. 이러한 해시가 자동으로 재계산되는 특정한 구현 원리를 유념해야 한다. 

 

분산 P2P 네트워크 

블록체인을 피어로 분리하여 A,B,C로 모두 복사본이 있어 모두 같은 값을 가지게 된다. 그러나 공격자가 값 하나를 변경했을 때, 다른 피어와 값이 달라지게 된다. 

 

즉 분산되어 있으면, 공격자는 전체를 재계산을 하고 업데이트 전 모든 블록을 동시에 공격해야하는 어려움이 있다. 네트워크 피어가 많을 수록 공격이 어려워진다. 

 

728x90

합의 프로토콜 (Consensu protocol)

 

어떻게 동의하고 계속 증가하는지와 어떤 방향으로 블록을 추가하는지 네트워크 전반적으로 언제 블록을 추가하는지를 다루는 챕터로 합의 프로토콜은 이전 비잔틴 내결합성 게시글에서 언급되었다. 

 

[Blockchain A-Z:블록체인 만들기 완벽강의] 비잔틴 내결함성

비잔틴 내결함성탈중앙화 시스템에서도 아주 중요한 특징으로 예시가 되는 이야기는 비잔틴 제국이 공격하여 점령하고자 했떤 성을 가정하여 네 명의 장군이 공격하는 상황을 빗대어 설명하고

am0119.tistory.com

 


합의 프로토콜에서 해결해야 하는 문제는 크게 공격자로부터 네트워크를 보호하는 것과 합의 프로토콜이 블록체인의 경쟁 체인 문제를 해결해야한다는 것으로 두 가지로 나뉠 수 있다. 

 

1. 공격자로부터 네트워크를 보호

공격자가 체인끝에 블록을 놓고 새로운 블록을 추가하는 경우에 네트워크 보호 문제가 발생한다. 네트워크나 블록체인이 블록 채굴에 관해 12.5 비트코인으로 보상하는데, 이더리움에서 블록 추가를 위한 일정량의 이더이다. 

또한 채굴자는 해당 블록에 포함된 트랜잭션에 관한 수수료를 받으면서 채굴자에게 채굴에 대한 금전적인 인센티브가 주어진다. 하지만 악의적으로 트랜잭션을 추가했다면 보상이나 수수료를 받을 수 없다. 이는 막대한 전기료를 낼 수 없게 되는 페널티가 주어지게 되지만 이를 감수하지 않으려고 할 것이다. 

 

네트워크에 악의적인 블록이 추가된 것을 어떻게 알까? 

블록이 이렇게 추가되기 전에 네트워크로 전파되기 전에 각 단일 노드에서 위의 확인 절차를 거쳐 확인을 한다. 머클 해시나 이전 해시 필드 일치 여부, 타임 스탬프 등등을 확인하고 모두 통과하지 않으면 블록은 기각된다. 결과적으로 악의적인 블록이 체인에 추가되지 않도록 예방한다. 

 

2. 합의 프로토콜이 블록체인의 경쟁 체인 문제를 해결해야함 

대형 블록체인의 경우 전세계적으로 분산되어 있어 멀리 떨어진 노드 사이에 발생하는 지연에서 동시에 채굴이 가능할 수 있다. 

특별한 공격이 아닌 채굴방법도 동의하며 각 노드의 관점에서는 문제가 없지만 지연에 의한 채굴 문제가 발생할 수 있다.

블록은 내부에 다른 트랜잭션이 있을 수 있기 때문에 새로 생긴 주황색과 보라색 블록 둥중 어떤 블록을 증가시켜야하는 합의가 필요하게 된다.

두 블록을 수용하고 두 노드 사이에 필드를 분할할 수 없지만 만일 합의에 도달하지 않거나 합의 프로토콜이 없다면 두 체인은 충돌하여 2개로 분할되며 연쇄적으로 완전히 분할된 수많은 블록체인이 생성된다. 

합의 프로토콜 측면에서 다양한 유형의 합의 프로토콜이 있는 것이 중요하다. 

 

각 노드 간의 거리의 문제로 주황색 노드와 보라색 노드 간의 충돌이 발생한다. 주황색 노드는 보라색 노드에게 주황색 블록을 추가하라고 할 것이고, 반대로 보라색 노드는 보라색 블록을 추가하라고 할 것이다, 

여기서 비잔틴 내결함성 개념이 사용되게 된다. 합의 프로토콜이 메시지의 다수를 확인하고 실행하는 것이다.

블록체인에서의 합의 프로토콜은 각각 채굴한 블록을 다른 노드에게 전파하는 과정에서 충돌이 발생할 때 다른 블록들이 추가될때까지 기다린 후 어떤 체인이 긴 지를 알수 있다. 이는 어느 쪽이든 먼저 블록을 추가한 체인이 이기고 다른 체인을 교체하게 된다. 핵심은 가장 높은 해싱 파워를 가진 네트워크에서 가장 긴 체인을 생성하는 것이다. 

 

위의 경우 주황색 체인이 보라색 체인보다 해싱 파워가 2배 더 크기 때문에 암호화 퍼즐을 풀 확률이 2배가 더 높은 것이 된다. 즉 해싱 파워가 높을 수록 암호화 퍼즐을 풀 확률은 높아진다. 

결론적으로 블록체인에서 합의 프로토콜의 의미는 51%의 해싱 파워를 가졌거나 50% 이상의 해싱 파워를 가진 체인이 이긴다는 것이다. 블록체인에서는 비잔틴 장군 문제와 달리 30% 이상의 악의적인 참여자나 배진자가 있으면 합의에 도달하지 못한다. 
비잔틴 장군 문제는 70% 이상이 필요하지만 블록체인에서는 합의에 도달하려면 50% 이상이 필요하기 때문에 합의 프로토콜과 프로토콜은 비잔틴 장군 문제에서의 합의 프로토콜보다 강력하다.

이러한 원리로 충돌이 해결 되면 떨어진 보라색 노드들은 주류 블록체인에 있지 않은 블록으로 고아 블록(Orphaned Block)이 된다. 고아 블록은 채굴자들이 채굴했지만, 블록의 트랜잭션과 보상이 더 이상 유효하지 않게 된다.

 

 

작업 증명 (PoW)과 지분 증명(PoS)

작업 증명(PoW)와 지분 증명(PoS)가 가장 유명하며, 현재 비트코인, 이더리움에서 사용된다. 

골든 논스라는 특정 논스를 발견해야 블록을 생성하 수 있으며 채굴자가 해결하고 있는 암호화 과제로 해당 논스에 도달하기 까지 많은 하드웨어적 투자를 들여야한다. 마지막에 있는 해시는 암호화 퍼즐을 풀기위한 키로 발견해야 블록을 생성할 수 있다. 

+ Recent posts