Liveness / Safety blockchain 블록의 생성 과정은 safety와 liveness를 동시에 만족시킬 수 없다. 이는 1985년에 발표된 FLP Impossibility를 통해 증명되었다. FLP Impossibility 위 논문에서는 ‘비동기 네트워크 환경에서는 Safety와 Liveness를 동시에 만족시키는 분산된 합의 알고리즘은 존재할 수 없다.’를 수학적으로 증명하였는데, 이는 곧 분산 시스템 기반의 Blockchain 환경에서 Liveness와 Safety를 모두 만족하며 합의하는 것은 불가능하다는 것을 의미한다. 때문에 블록체인에서는 이를 극복하기 위해 다음 방법들을 사용한다. 합의를 재정의한다. 비동기성을 포기한다. Liveness over Safety Liveness를 ..
블록체인에서 발신자가 트랜잭션을 네트워크에 브로드캐스팅하기 전에 트랜잭션을 개인 키로 디지털 서명하는 데, 이를 통해 데이터 출처 인증과 부인 방지를 제공하며 이를 통해 발신자가 비트코인 같은 자산의 정당한 소유자임을 증명한다. 디지털 서명에는 몇 가지 중요한 속성이 있는데, 진본성, 위조 불가능성, 재사용 불가능성 등이다. 진본성 수신자가 디지털 서명을 검증할 수 있다. 위조 불가능성 메시지를 보낸 사람만 개인 키를 사용해 서명 기능을 사용할 수 있게 한다. 재사용 불가능성 디지털 서명을 메시지에서 분리해 다른 메시지에 다시 사용하지 못한다. RSA 디지털 서명 알고리즘 RSA 암호화를 활용한 디지털 서명은 다음과 같은 단계를 거친다. 데이터 패킷의 해시 값 계산 해시를 수신자가 다시 계산한 다음 원본..
블록체인의 핵심에는 분산 시스템이 있다고할 수 있다. 노드는 분산 시스템에 대한 개별 참가자로 정의할 수 있으며 모든 노드는 서로 데이터를 주고받을 수 있다. 이러한 노드들은 정상적이거나 악의적인 사용자일 수도 있으며 각각의 노드는 메모리와 프로세스를 갖고 있따. 이때 비합리적인 행동을 보이는 노드를 비잔틴 장군 문제(Byzantine Generals Problem)에서 이름을 따서 비잔틴 노드라고도 한다. # 비잔틴 장군 문제 1982년 램포트와 그 외 사람들이 '비잔틴 장군 문제(The Byzantine Generals Problem)'이라는 연구 논문에서 사고 실험을 제안했는데 이 문제에서 비잔틴 군은 각기 다른 부대를 이끌고 있는 장군들이 도시를 공격하거나 퇴각하려고 계획을 세우고 있다. 장군들끼..