프랙티컬 비잔틴 장애 허용 편집하기
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
'''프랙티컬 비잔틴 장애 허용'''('''PBFT''', Practical Byzantine Fault Tolerance)은 [[네오]], [[질리카]], [[하이퍼레저]], [[R3]], [[ITC]], [[텐더민트]] 등에서 사용하는 [[합의 알고리즘]]이다.이 기술은 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어졌다. | '''프랙티컬 비잔틴 장애 허용'''('''PBFT''', Practical Byzantine Fault Tolerance)은 [[네오]], [[질리카]], [[하이퍼레저]], [[R3]], [[ITC]], [[텐더민트]] 등에서 사용하는 [[합의 알고리즘]]이다.이 기술은 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어졌다. | ||
− | ==비잔틴 장군문제== | + | ==비잔틴 장군문제=== |
− | [[PBFT]]를 이해하기 위해서는 [[비잔틴 장군 문제]]를 먼저 알아야 한다. 비잔틴 군대는 장군이라는 대표자들간 합의를 통해 전술을 최종 결정한다. 만약 같은 곳을 동시에 공격한다면 충분히 이길 수 있는 상황이지만, 일부가 공격을 하지 않으면 지는 상황에 있다. 따라서 장군들이 모두 동일한 시간에 공격한다고 합의를 해야 하는 | + | [[PBFT]]를 이해하기 위해서는 [[비잔틴 장군 문제]]를 먼저 알아야 한다. 비잔틴 군대는 장군이라는 대표자들간 합의를 통해 전술을 최종 결정한다. 만약 같은 곳을 동시에 공격한다면 충분히 이길 수 있는 상황이지만, 일부가 공격을 하지 않으면 지는 상황에 있다. 따라서 장군들이 모두 동일한 시간에 공격한다고 합의를 해야 하는 상광인데 이들이 한곳에 모이기는 어렵다. 따라서 장군들간 전령을 통해 합의를 해야지만 이 과정에서 적국의 첩자가 메시지가 변경할 수도 있다. 따라서 이들 첩자들의 악의적 방해에도 합의가 제대로 될 방법이 필요하다. 블록체인과 비잔틴 장군 문제는 아주 밀접한 관련을 갖는다. [[블록체인]] [[네트워크]] 상에 새로운 블록들이 생성되는 과정에서 기존의 악의적인 공격으로 잘못된 [[블록]]이 생성될 수 있다. 이는 블록 안의 트랜잭션이 변경되어 재산적 피해로도 이어질 수 있다. 따라서 이를 막기 위한 합의 알고리즘이 필요하다. 간단하게 생각하면 모든 노드가 YES! 하면 되는거 아니야? 싶지만 그렇게 되면 악의적 공격이 하나라도 들어왔을 때 블록체인 네트워크는 마비된다. 따라서 어느 정도의 노드간 상태 비일치는 허용해주는 방법으로 [[합의 알고리즘]]이 만들어져야 한다.<ref name="PBFT 블로그">,tyami 〈[http://tyami.net/221268715771 PBFT(Practical Byzantine Fault Tolerance) 공부해보자]〉, 《네이버 블로그》, 2018-5-5</ref> |
==비잔틴 장애 허용== | ==비잔틴 장애 허용== | ||
− | 비잔틴 장애 허용이 바로 그것이다. 비잔틴 장애 허용에서는 일부노드(장군)의 결과가 달라도 어느 정도 | + | 비잔틴 장애 허용이 바로 그것이다. 비잔틴 장애 허용에서는 일부노드(장군)의 결과가 달라도 어느 정도 이상읙 uf과가 동일하면 합의된 것으로 본다. 즉, 다수결의 원칙을 따르는 합의 알고리즘이라고 할 수 있다. [[BFT]]는 여러 가지 방법이 있지만, 블록체인에서는 [[PBFT]]가 많이 쓰이는 듯 하다. <ref name = "PBFT 블로그"></ref> |
==프랙티컬 비잔틴 장애 허용== | ==프랙티컬 비잔틴 장애 허용== | ||
− | PBFT는 1999년 제안되었다. | + | PBFT는 1999년 제안되었다. pBFT는 PoW와 PoS의 단점인 파이널리티의 불확실성과 성능 문제를 해결한 것이다. [[블록체인]] 기반 기술에서 많이 채택되고 있는 상황이다. pBFT를 사용하는 코인은 [[질리카]], [[네오]], [[하이퍼레저]], [[R3]] 등에서 사용하는 [[합의 알고리즘]]으로서 pBFT는 Practical Byzantine Fault Tolerance (pBFT)는 프랙티컬 비잔틴 장애허용이라는 뜻이다. 프랙티컬 비잔틴 장애허용은 분산컴퓨팅의 한 이론으로 BFT를 속도와 실용적인 측면에서 개선한 형태다. 이 방식은 [[블록체인]] [[시스템]]에 있어서 약속된 행동을 하지 않고 고의로 잘못된 정보를 전달하는 [[비잔틴 노드]]가 존재할 수 있는 비동기 시스템일 때 모든 [[노드]]가 성공적인 합의를 이룰 수 있도록 개발된 증명 방식이라고 볼 수 있다. pBFT에 대해서 좀 더 자세히 알아보자면, pBFT는 네트워크의 모든 참여자를 미리 알고 있어야 한다. 먼저 참가자 1명이 리더가 되고 자신을 포함한 모든 참가자에게 요청을 보낸다. 그 요청에 대한 결과를 집계한 뒤 다수의 값을 사용해 블록을 확정한다. 부정한 노드 수를 n개라고 하면 노드수는 3n+1개여야 하며, 확정에는 n+1개 이상의 노드가 필요하다. pBFT는 [[비동기 네트워크]]에서 배신자 노드 f개 있을 때, 총 노드 갯수가 3f+1개 이상이면 해당 네트워크에서 이루어지는 합의는 신뢰할 수 있다는 것을 수학적으로 증명한 [[알고리즘]]이다. pBFT방식은 2/3 이상의 노드만 합의가 될 수 있게 개량한 버전이라고 볼 수 있다. pBFT는 2/3 이상의 노드가 합의하면 검증되기 때문에 속도가 향상된다고 볼 수 있으며 노드수가 적어져 보안에 유리하다는 점이 장점이라고 볼 수 있다.<ref>,BCEX KOREA 〈[https://blog.naver.com/bcexkorea/221438799103 PBFT와 BFT란? ]〉, 《네이버 블로그》, 2019-1-11</ref> |
==알고리즘== | ==알고리즘== | ||
16번째 줄: | 16번째 줄: | ||
== 참고자료 == | == 참고자료 == | ||
− | * energist, 〈[https://steemit.com/crypto/@energist/blockchain-study-pbft-practical-byzantine-fault-tolerance (Blockchain Study) PBFT(Practical Byzantine Fault Tolerance)]〉, 《스팀잇》 | + | * energist, 〈[https://steemit.com/crypto/@energist/blockchain-study-pbft-practical-byzantine-fault-tolerance (Blockchain Study) PBFT(Practical Byzantine Fault Tolerance)]〉, 《스팀잇》 |
− | |||
== 같이 보기 == | == 같이 보기 == | ||
− | |||
− | |||
* [[합의 알고리즘]] | * [[합의 알고리즘]] | ||
* [[네오]] | * [[네오]] | ||
28번째 줄: | 25번째 줄: | ||
* [[R3]] | * [[R3]] | ||
* [[ICT]] | * [[ICT]] | ||
+ | * [[텐더민트]] | ||
− | {{ | + | {{알고리즘|토막글}} |
+ | |||
+ | [[분류:합의 알고리즘]] |