"우로보로스 비잔틴 장애 허용"의 두 판 사이의 차이
(→정산증명 방법) |
(→정산증명 방법) |
||
9번째 줄: | 9번째 줄: | ||
==정산증명 방법== | ==정산증명 방법== | ||
− | ===t (t < n/4)=== | + | ===조건 1. t (t < n/4)=== |
*'''레저 보고'''(Ledger Reporting) : 거래 tx는 원장에 여러번 입력할 수 있다. 또한 원장에는 tx와 상충되는 거래가 포함될 수 있다. 원장에 주어진 tx의 각 입력은 tx에 대한 투표로 간주되며, 원장의 구문 분석은 완료된 트랜잭션만 계산한다. 이것들은 원장의 결산 부분에서 t + 1의 표를 받은 거래들이다. 두 개의 최종 거래가 상충될 경우, 원장에 의해 결정된 순서에서 t + 1 표에 도달하는 첫 번째 거래만 유지된다. 원장의 정착부에는 과거에 3t + 1개 이상의 슬롯이 모두 포함되어 있음을 상기한다. | *'''레저 보고'''(Ledger Reporting) : 거래 tx는 원장에 여러번 입력할 수 있다. 또한 원장에는 tx와 상충되는 거래가 포함될 수 있다. 원장에 주어진 tx의 각 입력은 tx에 대한 투표로 간주되며, 원장의 구문 분석은 완료된 트랜잭션만 계산한다. 이것들은 원장의 결산 부분에서 t + 1의 표를 받은 거래들이다. 두 개의 최종 거래가 상충될 경우, 원장에 의해 결정된 순서에서 t + 1 표에 도달하는 첫 번째 거래만 유지된다. 원장의 정착부에는 과거에 3t + 1개 이상의 슬롯이 모두 포함되어 있음을 상기한다. | ||
*'''멤풀 업데이트'''(Mempool Update) : 서버는 이전과 같이 수신된 모든 트랜잭션을 수집한다. 트랜잭션 tㅌ는 유효한 한 업데이트된 멤풀로 들어가고, 멤풀은 원장님 상태에 관해 안전한 상태로 유지된다. 원장의 상태는 완료된 트랜잭션만 기준으로 결정된다는 점을 상기해야한다. 그러므로 어떤 상충되는 거래가 원장에 존재할 수 있따는 사실에도 불구하고 원장의 정산 부분에서 다른 거래가 t + 1표에 도달하지 않은 한 거래가 멤풀로 진입할 수 있다. | *'''멤풀 업데이트'''(Mempool Update) : 서버는 이전과 같이 수신된 모든 트랜잭션을 수집한다. 트랜잭션 tㅌ는 유효한 한 업데이트된 멤풀로 들어가고, 멤풀은 원장님 상태에 관해 안전한 상태로 유지된다. 원장의 상태는 완료된 트랜잭션만 기준으로 결정된다는 점을 상기해야한다. 그러므로 어떤 상충되는 거래가 원장에 존재할 수 있따는 사실에도 불구하고 원장의 정산 부분에서 다른 거래가 t + 1표에 도달하지 않은 한 거래가 멤풀로 진입할 수 있다. |
2019년 9월 4일 (수) 13:54 판
우로보로스 비잔틴 장애 허용(OBFT; Ouroboros Byzantine Fault Tolerance)이란 간단한 결정론적 블록체인 기반 프로토콜로, 서버는 그들에게 이용 가능한 가장 긴 체인을 확장하는 거래의 블록을 분산시키는 미리 결정된 라운드 로빈(round-robin) 방식으로 돌아가게 된다. 서버는 거래의 결과로 클라이언트에 즉시 응답할 수 있으므로 거래의 결과를 얻을 수 있다.
개요
카르다노가 가지고 있는 기존 지분 증명 프로토콜의 한계, 그 중에서도 특히 Grinding Attack을 막기 위해 설계된 지분증명(Pos) 기반 합의 프로토콜로 우로보로스(Ouroboros)가 있는데, 이 기존의 우로보로스의 디자인에서 영감을 얻은 새로운 BFT 원장 합의 프로토콜이다. 2018년 11월에 발표된 페이퍼가 존재하며, 프로그래밍 언어 하스켈(Haskell) 과 러스트(Rust) 구현이 있다. 우로보로스 BFT를 사용하면 Shelley로의 구현 및 배포 시간을 단축할 수 있다고한다. 또한 우로보로스 비잔틴 장애 허용은 Byron이 사용하는 우로보로스 클래식과 우로보로스 제네시스 사이의 브리지(연결 다리) 역할을 한다.
구현 언어
- 하스켈 : 순수하고 단순한 함수형 프로그래밍 언어로 함수형 프로그래밍 분야의 학자들이 부작용의 해악에 대한 아이디어를 집어넣어 설계해 20년 이상 개발해왔다. 하스켈은 함수형 프로그래밍의 이상에 대한 순수한 표현 중 하나로 I/O 채널을 다루는 데 있어 신중한 메커니즘을 갖추고 있으며, 또한 불가피한 부작용도 갖고 있다. 그러나 그 부분을 제외한 나머지 부분은 완벽하게 기능한다. 커뮤니티는 매울 활발하여 십여 개의 하스켈 변형 버전이 나와 있다. 그 중에서는 독립형도 있고 자바 도는 파이썬과 같은 주류 프로젝트와 통합되는 형태도 있다.
- 러스트 : 러스트는 시스템 수준의 빠른 소프트웨어를 제작하기 위한 언어이다. 러스트는 빠르고, 안전하며, 무엇보다 합리적인 수준의 프로그래밍 난이도를 보장한다. 러스트는 또한 널리 사용되도록 설계되어 있으며 승자 독식의프로그래밍 언어 경쟁에서 '참가에 의의를 두는' 낙오된 언어가 되지 않도록 신경썻다. 러스트의 장점들은 브라우저뿐만 아니라 모든 소프트웨어에 필요하기 때문에 브라우저 프로젝트로 시작한 러스트는 프로그래밍 언어 프로젝트로 진화했다.
정산증명 방법
조건 1. t (t < n/4)
- 레저 보고(Ledger Reporting) : 거래 tx는 원장에 여러번 입력할 수 있다. 또한 원장에는 tx와 상충되는 거래가 포함될 수 있다. 원장에 주어진 tx의 각 입력은 tx에 대한 투표로 간주되며, 원장의 구문 분석은 완료된 트랜잭션만 계산한다. 이것들은 원장의 결산 부분에서 t + 1의 표를 받은 거래들이다. 두 개의 최종 거래가 상충될 경우, 원장에 의해 결정된 순서에서 t + 1 표에 도달하는 첫 번째 거래만 유지된다. 원장의 정착부에는 과거에 3t + 1개 이상의 슬롯이 모두 포함되어 있음을 상기한다.
- 멤풀 업데이트(Mempool Update) : 서버는 이전과 같이 수신된 모든 트랜잭션을 수집한다. 트랜잭션 tㅌ는 유효한 한 업데이트된 멤풀로 들어가고, 멤풀은 원장님 상태에 관해 안전한 상태로 유지된다. 원장의 상태는 완료된 트랜잭션만 기준으로 결정된다는 점을 상기해야한다. 그러므로 어떤 상충되는 거래가 원장에 존재할 수 있따는 사실에도 불구하고 원장의 정산 부분에서 다른 거래가 t + 1표에 도달하지 않은 한 거래가 멤풀로 진입할 수 있다.
각주
참고자료
- [하마] 이승현, 〈BFT 간략 정리 : PBFT , SimpleBFT, SBFT , BFT-SMaRt〉, 《티스토리》, 2019-03-05
- Alexander Russell, Aggelos Kiayias, 〈BOuroboros-BFT:A Simple Byzantine Fault Tolerant Consensus Protocol〉, 《iohk》, 2018-10
- 〈지금 배울 만한 9가지 최첨단 프로그래밍 언어〉, 《아이티월드》, 2014-11-06
- Serdar Yegulalp, 〈C·C++ 개발자 노린다···‘러스트’ 언어란? 뜨는 이유는?〉, 《CIO코리아》, 2018-12-07