SlideShare una empresa de Scribd logo
1 de 67
캐스퍼(Casper)
이더리움의 지분증명(PoS: Proof of Stake) 방식의 합의 알고리즘
문영훈
version 0.1
final edit: 2017. 11. 29
based on Casper the Friendly Finality Gadget (Vitalik Buterin, Virgil Griffith / Oct 29, 2017)
목차
캐스퍼: 이더리움의 지분증명(PoS: Proof of Stake) 방식의 합의 알고리즘
• 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반
한 합의 알고리즘
• 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으
로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결
• 검증자의 집합이 동적으로 변경 (dynamic validator set)
• “경제적 완결성 (economic finality)”을 보장
• Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal
mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명
(PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS
방식으로 구현
캐스퍼란?
• 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반
한 합의 알고리즘
• 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으
로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결
• 검증자의 집합이 동적으로 변경 (dynamic validator set)
• “경제적 완결성 (economic finality)”을 보장
• Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal
mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명
(PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS
방식으로 구현
캐스퍼란?
• 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반
한 합의 알고리즘
• 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으
로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결
• 검증자의 집합이 동적으로 변경 (dynamic validator set)
• “경제적 완결성 (economic finality)”을 보장
• Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal
mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명
(PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS
방식으로 구현
캐스퍼란?
• 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반
한 합의 알고리즘
• 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으
로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결
• 검증자의 집합이 동적으로 변경 (dynamic validator set)
• “경제적 완결성 (economic finality)”을 보장
• Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal
mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명
(PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS
방식으로 구현
캐스퍼란?
• 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반
한 합의 알고리즘
• 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으
로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결
• 검증자의 집합이 동적으로 변경 (dynamic validator set)
• “경제적 완결성 (economic finality)”을 보장
• Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal
mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명
(PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS
방식으로 구현
캐스퍼란?
• 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반
한 합의 알고리즘
• 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으
로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결
• 검증자의 집합이 동적으로 변경 (dynamic validator set)
• “경제적 완결성 (economic finality)”을 보장
• Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal
mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명
(PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS
방식으로 구현
캐스퍼란?
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
용어정의 (1/2)
블록 #0
블록 #1
블록 #100
블록 #200
블록 #99
.
.
.
.
.
.
블록 #201
.
.
.
블록 #101
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블
록, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
용어정의 (1/2)
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블
록, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
용어정의 (1/2)
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
용어정의 (1/2)
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이
며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값,
자신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
(v, s, t, h(s), h(t))
source
target
validator
용어정의 (1/2)
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이
며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값,
자신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
(v, b1, b2, 1, 3)
용어정의 (1/2)
Prepare, Commit → Vote
source: https://ethresear.ch/t/casper-ffg-with-one-message-type-and-simpler-fork-choice-rule/103
이전 버전의 캐스퍼는 검증자들이 prepare와
commit 두 종류의 메세지를 보낼 수 있었던 반면 9
월 말 이후 업데이트된 버전의 캐스퍼에서는 검증
자들이 vote 라는 한 가지 종류의 메세지만을 보낼
수 있도록 설계. 캐스퍼 프로토콜이 계속해서 빠르
게 변화함을 알 수 있음
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source
로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B)
사이에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접
할 필요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
블록 #0
블록 #1
블록 #100
블록 #200
블록 #99
.
.
.
.
.
.
블록 #201
.
.
.
블록 #101
supermajority link
블록#0 → 블록 #200
용어정의 (1/2)
검증자의 2/3 이상의
투표 메세지 필요!
두 개의 체크포인트가
인접할 필요 없음
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
충돌(conflict)
용어정의 (1/2)
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
용어정의 (1/2)
• 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록
, 블록 #100, #200, …)
• 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예
치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이
상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함
• 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며
검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자
신의 전자서명 데이터로 구성
• supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로
하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이
에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필
요 없음
• 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체
크포인트가 충돌(conflict)한다고 함
• justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함
• finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으
로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
FINALIZED!
용어정의 (1/2)
검증자 v는 아래의 조건을 만족시키는 다음과 같은 서로 다른 투표 메세지를 공개할 수 없다
< v, s1, t1, h(s1), h(t1) > < v, s2, t2, h(s2), h(t2) >
I. h(t1) = h(t2) i.e. 검증자는 같은 target 높이를 갖는 두 개의 서로 다른 투표 메세지를 공개할 수
없다
II. h(s1) < h(s2) < h(t2) < h(t1) i.e. 검증자는 자신이 투표한 범위 내 다른 투표 메세지를 공개할 수
없다
캐스퍼 프로토콜
검증자 v는 아래의 조건을 만족시키는 다음과 같은 서로 다른
투표 메세지를 공개할 수 없다
< v, s1, t1, h(s1), h(t1) > < v, s2, t2, h(s2), h(t2) >
I. h(t1) = h(t2) i.e. 검증자는 같은 target 높이를 갖는 두 개의 서
로 다른 투표 메세지를 공개할 수 없다
II. h(s1) < h(s2) < h(t2) < h(t1) i.e. 검증자는 자신이 투표한 범위
내 다른 투표 메세지를 공개할 수 없다
캐스퍼 프로토콜
검증자 v는 아래의 조건을 만족시키는 다음과 같은 서로 다른
투표 메세지를 공개할 수 없다
< v, s1, t1, h(s1), h(t1) > < v, s2, t2, h(s2), h(t2) >
I. h(t1) = h(t2) i.e. 검증자는 같은 target 높이를 갖는 두 개의 서
로 다른 투표 메세지를 공개할 수 없다
II. h(s1) < h(s2) < h(t2) < h(t1) i.e. 검증자는 자신이 투표한 범위
내 다른 투표 메세지를 공개할 수 없다
캐스퍼 프로토콜
• Accountable Safety: “1/3 이상의 검증자(validator)의 예치금이 몰수당하지 않는 한
두 개의 상충(conflicting)되는 체크포인트(checkpoint)가 완결(finalize)될 수 없다.”
• Plausible Liveness: “과거 이벤트(e.g. 예치금 몰수, 블록의 지연, 검열공격 등)와 관
계없이 2/3 이상의 검증자가 프로토콜을 따른다면 그 어떤 검증자의 예치금 몰수
없이 항상 새로운 체크포인트를 완결할 수 있다.”
캐스퍼의 두 가지 기본속성
• Accountable Safety: “1/3 이상의 검증자(validator)의 예치금이 몰수당하지 않는 한
두 개의 상충(conflicting)되는 체크포인트(checkpoint)가 완결(finalize)될 수 없다.”
• Plausible Liveness: “과거 이벤트(e.g. 예치금 몰수, 블록의 지연, 검열공격 등)와 관
계없이 2/3 이상의 검증자가 프로토콜을 따른다면 그 어떤 검증자의 예치금 몰수
없이 항상 새로운 체크포인트를 완결할 수 있다.”
캐스퍼의 두 가지 기본속성
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고
가정
• 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I
을 어긴 것으로 이들의 예치금이 몰수
• am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정
• bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인
트의 체인 r → b1 → b2 → · · · → bn 이 존재
• 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과
같을 수 없음.
• 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면
• h(bj-1) < h(am)
• 하지만 이는 캐스퍼 프로토콜 II 에 위배
정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn
은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
• Accountable Safety: “1/3 이상의 검증자(validator)의 예치금이 몰수당하지 않는 한
두 개의 상충(conflicting)되는 체크포인트(checkpoint)가 완결(finalize)될 수 없다.”
• Plausible Liveness: “과거 이벤트(e.g. 예치금 몰수, 블록의 지연, 검열공격 등)와 관
계없이 2/3 이상의 검증자가 프로토콜을 따른다면 그 어떤 검증자의 예치금 몰수
없이 항상 새로운 체크포인트를 완결할 수 있다.”
캐스퍼의 두 가지 기본속성
• a 를 가장 큰 높이를 가지는 justified 된 체크포인트, b 를 검증자
가 투표한 최대 높이의 target 체크포인트라 하자
• 이 때 h(a’) = h(b) + 1 을 만족시키는 a 의 자손 체크포인트 a’ 에
대해 캐스퍼 프로토콜을 위반하지 않으며 supermajority link a →
a’ 생성 가능 (i.e. a’ 이 justified)
• a’ 이 justified 된 이후 a’ 으로부터 a’ 의 direct child 에 대한
supermajority link 를 생성함으로써 a’ 을 finalize 시킬 수 있음
정리 2. (Plausible Liveness) finalized된 체인의 children이 존재하는
경우, supermajority link를 추가하여 새로운 체크포인트를 finalize 할
수 있다
a
b
• a 를 가장 큰 높이를 가지는 justified 된 체크포인트, b 를 검증자
가 투표한 최대 높이의 target 체크포인트라 하자
• 이 때 h(a’) = h(b) + 1 을 만족시키는 a 의 자손 체크포인트 a’ 에
대해 캐스퍼 프로토콜을 위반하지 않으며 supermajority link a →
a’ 생성 가능 (i.e. a’ 이 justified)
• a’ 이 justified 된 이후 a’ 으로부터 a’ 의 direct child 에 대한
supermajority link 를 생성함으로써 a’ 을 finalize 시킬 수 있음
정리 2. (Plausible Liveness) finalized된 체인의 children이 존재하는
경우, supermajority link를 추가하여 새로운 체크포인트를 finalize 할
수 있다
a
b
a’
• a 를 가장 큰 높이를 가지는 justified 된 체크포인트, b 를 검증자
가 투표한 최대 높이의 target 체크포인트라 하자
• 이 때 h(a’) = h(b) + 1 을 만족시키는 a 의 자손 체크포인트 a’ 에
대해 캐스퍼 프로토콜을 위반하지 않으며 supermajority link a →
a’ 생성 가능 (i.e. a’ 이 justified)
• a’ 이 justified 된 이후 a’ 으로부터 a’ 의 direct child 에 대한
supermajority link 를 생성함으로써 a’ 을 finalize 시킬 수 있음
정리 2. (Plausible Liveness) finalized된 체인의 children이 존재하는
경우, supermajority link를 추가하여 새로운 체크포인트를 finalize 할
수 있다
a
b
a’
a’’
• 기존 작업증명(PoW) 방식의 포크 선택 규칙은 “가장 긴 체인 위에 블록을 추
가”시키는 것. 하지만 캐스퍼의 경우 그와 같은 포크 선택 규칙을 도입하는
경우 체인 자체가 더 이상 justify 되거나 finalize 될 수 없는 경우가 발생할 수
있음
• 따라서 캐스퍼의 포크 선택 규칙은 “가장 긴 justified 된 체크포인트의 체인을
포함하고 있는 체인 위에 블록을 추가”
캐스퍼 포크 선택 규칙 (fork choice rule)
• 기존 작업증명(PoW) 방식의 포크 선택 규칙은 “가장 긴 체인 위에 블록을 추
가”시키는 것. 하지만 캐스퍼의 경우 그와 같은 포크 선택 규칙을 도입하는
경우 체인 자체가 더 이상 justify 되거나 finalize 될 수 없는 경우가 발생할 수
있음
• 따라서 캐스퍼의 포크 선택 규칙은 “가장 긴 justified 된 체크포인트의 체인을
포함하고 있는 체인 위에 블록을 추가”
캐스퍼 포크 선택 규칙 (fork choice rule)
FINALIZED
채굴자들이 가장 긴 체인을 채
굴하므로 a 의 finalization에
참여한 검증자들의 자발적인
예치금 몰수 없이 새로운 블록
에 finalize 불가
a
b
JUSTIFIED
b 대신 a 위에 채굴a
b
• 기존 작업증명(PoW) 방식의 포크 선택 규칙은 “가장 긴 체인 위에 블록을 추
가”시키는 것. 하지만 캐스퍼의 경우 그와 같은 포크 선택 규칙을 도입하는
경우 체인 자체가 더 이상 justify 되거나 finalize 될 수 없는 경우가 발생할 수
있음
• 따라서 캐스퍼의 포크 선택 규칙은 “가장 긴 justified 된 체크포인트의 체인을
포함하고 있는 체인 위에 블록을 추가”
캐스퍼 포크 선택 규칙 (fork choice rule)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · )
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
동적 검증자 집합 (Dynamic Validator Set)
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · )
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
동적 검증자 집합 (Dynamic Validator Set)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · )
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
동적 검증자 집합 (Dynamic Validator Set)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · )
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
동적 검증자 집합 (Dynamic Validator Set)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · )
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
동적 검증자 집합 (Dynamic Validator Set)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ).
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
동적 검증자 집합 (Dynamic Validator Set)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ).
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
동적 검증자 집합 (Dynamic Validator Set)
• 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의
safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가
자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황
을 가정해야 함
• 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록
#1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ).
• 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven
consensus” 방식에 적용하기 힘듬
• 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증
거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는
다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음
• 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른
쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금
몰수 없이 finalized 될 수 있음
• 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지
를 받는 경우에만 supermajority link로 인정
동적 검증자 집합 (Dynamic Validator Set)
source: https://medium.com/@VitalikButerin/safety-under-
dynamic-validator-sets-ef0c3bbdf9f6
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
블록 #0
블록 #1
블록 #100
블록 #200
블록 #99
.
.
.
.
.
.
블록 #201
.
.
.
블록 #101
supermajority link
블록#0 → 블록 #100
supermajority link
블록#100 → 블록
#200
dynasty = 1
dynasty = 2
dynasty = 3
블록 #300
supermajority link
블록#200 → 블록
#300
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
블록 #0
블록 #1
블록 #100
블록 #200
블록 #99
.
.
.
.
.
.
블록 #201
.
.
.
블록 #101
dynasty = 1
dynasty = 2
dynasty = 3
블록 #300
참가자 v의 예치 메시지
v 검증자로서 참여 시작
DS(v) = 3
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
블록 #0
블록 #1
블록 #100
블록 #200
블록 #99
.
.
.
.
.
.
블록 #201
.
.
.
블록 #101
dynasty = 1
dynasty = 2
dynasty = 3
블록 #300
참가자 v의 탈퇴 메시지
v 검증자로서 탈퇴
DE(v) = 3
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
블록 #0
블록 #1
블록 #100
블록 #200
블록 #99
.
.
.
.
.
.
블록 #201
.
.
.
블록 #101
dynasty = 1
dynasty = 2
dynasty = 3
블록 #300
참가자 v1의 예치 메시지
참가자 v2의 탈퇴 메시지
V = dynasty 1의 검증자 집합
Vf (3) = V + {v1}
Vr (3) = V — {v2}
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
체크포인트 #45
새로운 검증자 집합: B
A에 의해 서명
체크포인트 #46
새로운 검증자 집합: C
A + B 에 의해 서명
체크포인트 #47
새로운 검증자 집합: D
B + C 에 의해 서명
supermajority link
supermajority link
A: forward validator set
B: rear validator set
• dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의
finalized된 체크포인트의 개수를 나타냄
• 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty
값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째
블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함
• 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw
message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의
dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end
dynasty 혹은 DE(v)라 함
• forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)}
• rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)}
• supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward
validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는
supermajority link를 갖음
• finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의
supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority
link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다
고 함
용어정의 (2/2)
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
justified
c
c’
c’’
supermajority
link
supermajority links justifying c
included before c’’
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
source: https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
source: https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
Slasher: 예치금을 예치하고 잘못된 행동시 예치금을 몰수
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
검증자의 예치금에 대한 출금지연(withdraw delay)을
통해 클라이언트가 주기적으로 justified chain 에 대한
정보를 획득하면 장거리 공격을 막을 수 있음
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
검증자의 1/3 이상이 동시에 검증에 참여하지 못하는 경우 (i.e. 네트워크 분할,
악의적 행동 등) 체크포인트가 finalized 되지 못함
검증자가 검증에 참여하지 않는 경우 “inactivity leak”을 통해 검증자의 예치금
을 조금씩 줄여나가는 방법. 감소된 이더(ether)를 검증자에게 일정시간 이후
돌려주어야 하는지 여부 및 구체적인 공식(formula)는 경제적 인센티브 설계의
영역.
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
검증자의 1/3 이상이 동시에 검증에 참여하지 못하는 경우 (i.e. 네트워크 분할,
악의적 행동 등) 체크포인트가 finalized 되지 못함
검증자가 검증에 참여하지 않는 경우 “inactivity leak”을 통해 검증자의 예치금
을 조금씩 줄여나가는 방법. 감소된 이더(ether)를 검증자에게 일정시간 이후
돌려주어야 하는지 여부 및 구체적인 공식(formula)는 경제적 인센티브 설계의
영역.
• “nothing-at-stake” problem
• long range revision
• catastrophic crash
다양한 공격의 방어
source:
https://github.com/ethereum/research/blob/master/papers/cas
per-basics/casper_basics.pdf
inactivity leak 으로 인해 충돌하는 두 개의 체크포인트
가 동시에 finalize 될 가능성이 있음. 이러한 다양한 공
격을 방지하는 방법은 아직까지 열린문제로 남아있음
• 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로
토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니
즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표
• 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도
accountable safety와 plausible liveness 를 충족한다는 것을 증명
• 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후
포크 선택 규칙에 대한 formal specification
• 캐스퍼 내 경제적 인센티브에 대한 분석
Future Work
• 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로
토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니
즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표
• 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도
accountable safety와 plausible liveness 를 충족한다는 것을 증명
• 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후
포크 선택 규칙에 대한 formal specification
• 캐스퍼 내 경제적 인센티브에 대한 분석
Future Work
• 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로
토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니
즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표
• 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도
accountable safety와 plausible liveness 를 충족한다는 것을 증명
• 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후
포크 선택 규칙에 대한 formal specification
• 캐스퍼 내 경제적 인센티브에 대한 분석
Future Work
• 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로
토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니
즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표
• 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도
accountable safety와 plausible liveness 를 충족한다는 것을 증명
• 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후
포크 선택 규칙에 대한 formal specification
• 캐스퍼 내 경제적 인센티브에 대한 분석
Future Work
• 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로
토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니
즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표
• 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도
accountable safety와 plausible liveness 를 충족한다는 것을 증명
• 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후
포크 선택 규칙에 대한 formal specification
• 캐스퍼 내 경제적 인센티브에 대한 분석
Future Work
Resources
• Casper the Friendly Finality Gadget (Vitalik Buterin, Virgil Griffith / final update: Oct 29, 2017):
https://github.com/ethereum/research/blob/master/papers/casper-basics/casper_basics.pdf
• Casper PoS & Smart Contract Consensus Overview (Karl Floersch / Jun 30, 2017):
https://www.youtube.com/watch?v=MyDocEQfBGA&t=1090s
• Minimal Slashing Conditions (Vitalik Buterin / Mar 2, 2017): https://medium.com/@VitalikButerin/minimal-slashing-conditions-20f0b500fc6c
• Safety Under Dynamic Validator Sets (Vitalik Buterin / Mar 5, 2017): https://medium.com/@VitalikButerin/safety-under-dynamic-validator-
sets-ef0c3bbdf9f6
• Ethereum Casper 101 (Jon Choi / Oct 22, 2017): https://medium.com/@jonchoi/ethereum-casper-101-7a851a4f1eb0
• Ethereum Research: https://ethresear.ch/
• Proof of Stake FAQ: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ
• Incentives in Casper the Friendly Finality Gadget (Vitalik Buterin / Sep 4, 2017):
https://github.com/ethereum/research/blob/master/papers/casper-economics/casper_economics_basic.pdf
• Proof of Stake Design Philosophy (Vitalik Buterin / Dec 31, 2016): https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-
506585978d51
• Proof of Stake: How I Learned to Love Weak Subjectivity (Vitalik Buterin / Nov 25, 2014): https://blog.ethereum.org/2014/11/25/proof-stake-
learned-love-weak-subjectivity/

Más contenido relacionado

La actualidad más candente

An Overview of Stablecoin
An Overview of StablecoinAn Overview of Stablecoin
An Overview of Stablecoin
101 Blockchains
 

La actualidad más candente (20)

Cryptocurrencies: The Mechanics Economic and Finance
Cryptocurrencies: The Mechanics Economic and FinanceCryptocurrencies: The Mechanics Economic and Finance
Cryptocurrencies: The Mechanics Economic and Finance
 
Cryptocurrency
CryptocurrencyCryptocurrency
Cryptocurrency
 
Overview of Blockchain Consensus Mechanisms
Overview of Blockchain Consensus MechanismsOverview of Blockchain Consensus Mechanisms
Overview of Blockchain Consensus Mechanisms
 
[Cryptica 22] Finspot: A real-world asset tokenization in practice - Jovan Mi...
[Cryptica 22] Finspot: A real-world asset tokenization in practice - Jovan Mi...[Cryptica 22] Finspot: A real-world asset tokenization in practice - Jovan Mi...
[Cryptica 22] Finspot: A real-world asset tokenization in practice - Jovan Mi...
 
Stablecoin
StablecoinStablecoin
Stablecoin
 
Bitcoin and the future of cryptocurrency
Bitcoin and the future of cryptocurrencyBitcoin and the future of cryptocurrency
Bitcoin and the future of cryptocurrency
 
Cryptocurrency
Cryptocurrency Cryptocurrency
Cryptocurrency
 
Blockchain testing strategy
Blockchain testing strategyBlockchain testing strategy
Blockchain testing strategy
 
EVM - The Heart of Ethereum
EVM - The Heart of EthereumEVM - The Heart of Ethereum
EVM - The Heart of Ethereum
 
Messari Report Crypto Theses for 2022
Messari Report Crypto Theses for 2022Messari Report Crypto Theses for 2022
Messari Report Crypto Theses for 2022
 
Attacks on Smart Contracts
Attacks on Smart ContractsAttacks on Smart Contracts
Attacks on Smart Contracts
 
Cryptocurrency
Cryptocurrency  Cryptocurrency
Cryptocurrency
 
An Introduction to Ripple XRP
An Introduction to Ripple XRPAn Introduction to Ripple XRP
An Introduction to Ripple XRP
 
Hyperledger Fabric
Hyperledger FabricHyperledger Fabric
Hyperledger Fabric
 
Bitcoin Protocols 1.0 and 2.0 Explained in the Series: Blockchain: The Inform...
Bitcoin Protocols 1.0 and 2.0 Explained in the Series: Blockchain: The Inform...Bitcoin Protocols 1.0 and 2.0 Explained in the Series: Blockchain: The Inform...
Bitcoin Protocols 1.0 and 2.0 Explained in the Series: Blockchain: The Inform...
 
Introduction to Blockchains
Introduction to BlockchainsIntroduction to Blockchains
Introduction to Blockchains
 
Random Tokenomics Talk
Random Tokenomics TalkRandom Tokenomics Talk
Random Tokenomics Talk
 
An Overview of Stablecoin
An Overview of StablecoinAn Overview of Stablecoin
An Overview of Stablecoin
 
BLOCKCHAIN
BLOCKCHAINBLOCKCHAIN
BLOCKCHAIN
 
Bitcoin history
Bitcoin historyBitcoin history
Bitcoin history
 

캐스퍼(Casper): 이더리움(Ethereum)의 지분증명(PoS) 방식의 합의 알고리즘

  • 1. 캐스퍼(Casper) 이더리움의 지분증명(PoS: Proof of Stake) 방식의 합의 알고리즘 문영훈 version 0.1 final edit: 2017. 11. 29 based on Casper the Friendly Finality Gadget (Vitalik Buterin, Virgil Griffith / Oct 29, 2017)
  • 2. 목차 캐스퍼: 이더리움의 지분증명(PoS: Proof of Stake) 방식의 합의 알고리즘
  • 3. • 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반 한 합의 알고리즘 • 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으 로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결 • 검증자의 집합이 동적으로 변경 (dynamic validator set) • “경제적 완결성 (economic finality)”을 보장 • Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명 (PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS 방식으로 구현 캐스퍼란?
  • 4. • 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반 한 합의 알고리즘 • 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으 로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결 • 검증자의 집합이 동적으로 변경 (dynamic validator set) • “경제적 완결성 (economic finality)”을 보장 • Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명 (PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS 방식으로 구현 캐스퍼란?
  • 5. • 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반 한 합의 알고리즘 • 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으 로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결 • 검증자의 집합이 동적으로 변경 (dynamic validator set) • “경제적 완결성 (economic finality)”을 보장 • Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명 (PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS 방식으로 구현 캐스퍼란?
  • 6. • 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반 한 합의 알고리즘 • 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으 로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결 • 검증자의 집합이 동적으로 변경 (dynamic validator set) • “경제적 완결성 (economic finality)”을 보장 • Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명 (PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS 방식으로 구현 캐스퍼란?
  • 7. • 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반 한 합의 알고리즘 • 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으 로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결 • 검증자의 집합이 동적으로 변경 (dynamic validator set) • “경제적 완결성 (economic finality)”을 보장 • Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명 (PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS 방식으로 구현 캐스퍼란?
  • 8. • 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 방식의 합의 알고리즘에 기반 한 합의 알고리즘 • 규칙을 어기는 검증자를 식별하고 이들의 예치금을 몰수(slashing)하는 방식으 로 책임을 물을 수 있으며 이를 통해 “nothing-at-stake” 문제를 해결 • 검증자의 집합이 동적으로 변경 (dynamic validator set) • “경제적 완결성 (economic finality)”을 보장 • Casper the Friendly Finality Gadget(FFG)는 블록 제안 메커니즘(proposal mechanism) 위에 overlay로서 구현되며 캐스퍼의 첫 번째 버전은 작업증명 (PoW) 방식의 제안 메커니즘 위에 지분증명(PoS)을 구현하는 hybrid PoW/PoS 방식으로 구현 캐스퍼란?
  • 9. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 용어정의 (1/2)
  • 10. 블록 #0 블록 #1 블록 #100 블록 #200 블록 #99 . . . . . . 블록 #201 . . . 블록 #101 • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블 록, 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 용어정의 (1/2)
  • 11. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블 록, 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf 용어정의 (1/2)
  • 12. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 용어정의 (1/2)
  • 13. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이 며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 (v, s, t, h(s), h(t)) source target validator 용어정의 (1/2)
  • 14. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이 며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf (v, b1, b2, 1, 3) 용어정의 (1/2)
  • 15. Prepare, Commit → Vote source: https://ethresear.ch/t/casper-ffg-with-one-message-type-and-simpler-fork-choice-rule/103 이전 버전의 캐스퍼는 검증자들이 prepare와 commit 두 종류의 메세지를 보낼 수 있었던 반면 9 월 말 이후 업데이트된 버전의 캐스퍼에서는 검증 자들이 vote 라는 한 가지 종류의 메세지만을 보낼 수 있도록 설계. 캐스퍼 프로토콜이 계속해서 빠르 게 변화함을 알 수 있음
  • 16. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source 로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접 할 필요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 블록 #0 블록 #1 블록 #100 블록 #200 블록 #99 . . . . . . 블록 #201 . . . 블록 #101 supermajority link 블록#0 → 블록 #200 용어정의 (1/2) 검증자의 2/3 이상의 투표 메세지 필요! 두 개의 체크포인트가 인접할 필요 없음
  • 17. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf 충돌(conflict) 용어정의 (1/2)
  • 18. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf 용어정의 (1/2)
  • 19. • 체크포인트(checkpoint): 높이가 100의 배수 (100*k)인 블록 (e.g. 제네시스 블록 , 블록 #100, #200, …) • 예치금(deposit): 검증자가 검증에 참여하기 위해 캐스퍼 스마트 컨트랙트에 예 치해야 하는 금액. 지분증명의 보안은 예치금의 총량에 비례하기 때문에 “2/3 이 상의 검증자”란 “예치금의 합이 총 예치금의 2/3 이상이 되는 검증자”를 말함 • 투표(vote): 검증자가 자신이 올바르다고 생각하는 블록에 투표하는 메세지이며 검증자에 대한 정보, 두 개의 체크포인트(source와 target)와 각각의 높이값, 자 신의 전자서명 데이터로 구성 • supermajority link: 체크포인트 A, B에 대해 2/3 이상의 검증자가 A를 source로 하고 B를 target으로 하는 투표 메세지를 네트워크 상에 공개한 경우 (A, B) 사이 에 supermajority link가 있다고 하며 A → B 로 표현. 이 때 A와 B가 인접할 필 요 없음 • 충돌(conflict): 두 개의 체크포인트가 서로 다른 branch에 위치하는 경우 두 체 크포인트가 충돌(conflict)한다고 함 • justified: 체크포인트 c 는 (1) c 가 제네시스 블록이거나 (2) justified 된 c’에서 c 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 justified되었다고 함 • finalized: 체크포인트 c 가 justified 되어 있으며 c 에서 c 의 direct child 인 c’ 으 로의 supermajority link (i.e. c’ → c)가 존재하는 경우 c가 finalized되었다고 함 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf FINALIZED! 용어정의 (1/2)
  • 20. 검증자 v는 아래의 조건을 만족시키는 다음과 같은 서로 다른 투표 메세지를 공개할 수 없다 < v, s1, t1, h(s1), h(t1) > < v, s2, t2, h(s2), h(t2) > I. h(t1) = h(t2) i.e. 검증자는 같은 target 높이를 갖는 두 개의 서로 다른 투표 메세지를 공개할 수 없다 II. h(s1) < h(s2) < h(t2) < h(t1) i.e. 검증자는 자신이 투표한 범위 내 다른 투표 메세지를 공개할 수 없다 캐스퍼 프로토콜
  • 21. 검증자 v는 아래의 조건을 만족시키는 다음과 같은 서로 다른 투표 메세지를 공개할 수 없다 < v, s1, t1, h(s1), h(t1) > < v, s2, t2, h(s2), h(t2) > I. h(t1) = h(t2) i.e. 검증자는 같은 target 높이를 갖는 두 개의 서 로 다른 투표 메세지를 공개할 수 없다 II. h(s1) < h(s2) < h(t2) < h(t1) i.e. 검증자는 자신이 투표한 범위 내 다른 투표 메세지를 공개할 수 없다 캐스퍼 프로토콜
  • 22. 검증자 v는 아래의 조건을 만족시키는 다음과 같은 서로 다른 투표 메세지를 공개할 수 없다 < v, s1, t1, h(s1), h(t1) > < v, s2, t2, h(s2), h(t2) > I. h(t1) = h(t2) i.e. 검증자는 같은 target 높이를 갖는 두 개의 서 로 다른 투표 메세지를 공개할 수 없다 II. h(s1) < h(s2) < h(t2) < h(t1) i.e. 검증자는 자신이 투표한 범위 내 다른 투표 메세지를 공개할 수 없다 캐스퍼 프로토콜
  • 23. • Accountable Safety: “1/3 이상의 검증자(validator)의 예치금이 몰수당하지 않는 한 두 개의 상충(conflicting)되는 체크포인트(checkpoint)가 완결(finalize)될 수 없다.” • Plausible Liveness: “과거 이벤트(e.g. 예치금 몰수, 블록의 지연, 검열공격 등)와 관 계없이 2/3 이상의 검증자가 프로토콜을 따른다면 그 어떤 검증자의 예치금 몰수 없이 항상 새로운 체크포인트를 완결할 수 있다.” 캐스퍼의 두 가지 기본속성
  • 24. • Accountable Safety: “1/3 이상의 검증자(validator)의 예치금이 몰수당하지 않는 한 두 개의 상충(conflicting)되는 체크포인트(checkpoint)가 완결(finalize)될 수 없다.” • Plausible Liveness: “과거 이벤트(e.g. 예치금 몰수, 블록의 지연, 검열공격 등)와 관 계없이 2/3 이상의 검증자가 프로토콜을 따른다면 그 어떤 검증자의 예치금 몰수 없이 항상 새로운 체크포인트를 완결할 수 있다.” 캐스퍼의 두 가지 기본속성
  • 25. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 26. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 27. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 28. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 29. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 30. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 31. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 32. • 두 개의 충돌하는 체크포인트 am 과 bn 이 모두 finalize 되었다고 가정 • 만약 h(am) = h(bn) 라면 1/3 이상의 검증자가 캐스퍼 프로토콜 I 을 어긴 것으로 이들의 예치금이 몰수 • am 과 bn 높이가 다른 경우 h(am) < h(bn) 가정 • bn 이 finalize 되었으므로 supermajority link로 이루어진 체크포인 트의 체인 r → b1 → b2 → · · · → bn 이 존재 • 캐스퍼 프로토콜 I 에 의해 어떠한 h(bi) 도 h(am) 혹은 h(am+1) 과 같을 수 없음. • 이 때 h(bj) > h(am+1) 을 만족하는 최소값을 j 라 하면 • h(bj-1) < h(am) • 하지만 이는 캐스퍼 프로토콜 II 에 위배 정리 1. (Accountable Safety) 두 개의 충돌하는 체크포인트 am과 bn 은 동시에 finalize 될 수 없다검증자 집합이 동적으로 변하지 않는 기본적인 경우
  • 33. • Accountable Safety: “1/3 이상의 검증자(validator)의 예치금이 몰수당하지 않는 한 두 개의 상충(conflicting)되는 체크포인트(checkpoint)가 완결(finalize)될 수 없다.” • Plausible Liveness: “과거 이벤트(e.g. 예치금 몰수, 블록의 지연, 검열공격 등)와 관 계없이 2/3 이상의 검증자가 프로토콜을 따른다면 그 어떤 검증자의 예치금 몰수 없이 항상 새로운 체크포인트를 완결할 수 있다.” 캐스퍼의 두 가지 기본속성
  • 34. • a 를 가장 큰 높이를 가지는 justified 된 체크포인트, b 를 검증자 가 투표한 최대 높이의 target 체크포인트라 하자 • 이 때 h(a’) = h(b) + 1 을 만족시키는 a 의 자손 체크포인트 a’ 에 대해 캐스퍼 프로토콜을 위반하지 않으며 supermajority link a → a’ 생성 가능 (i.e. a’ 이 justified) • a’ 이 justified 된 이후 a’ 으로부터 a’ 의 direct child 에 대한 supermajority link 를 생성함으로써 a’ 을 finalize 시킬 수 있음 정리 2. (Plausible Liveness) finalized된 체인의 children이 존재하는 경우, supermajority link를 추가하여 새로운 체크포인트를 finalize 할 수 있다 a b
  • 35. • a 를 가장 큰 높이를 가지는 justified 된 체크포인트, b 를 검증자 가 투표한 최대 높이의 target 체크포인트라 하자 • 이 때 h(a’) = h(b) + 1 을 만족시키는 a 의 자손 체크포인트 a’ 에 대해 캐스퍼 프로토콜을 위반하지 않으며 supermajority link a → a’ 생성 가능 (i.e. a’ 이 justified) • a’ 이 justified 된 이후 a’ 으로부터 a’ 의 direct child 에 대한 supermajority link 를 생성함으로써 a’ 을 finalize 시킬 수 있음 정리 2. (Plausible Liveness) finalized된 체인의 children이 존재하는 경우, supermajority link를 추가하여 새로운 체크포인트를 finalize 할 수 있다 a b a’
  • 36. • a 를 가장 큰 높이를 가지는 justified 된 체크포인트, b 를 검증자 가 투표한 최대 높이의 target 체크포인트라 하자 • 이 때 h(a’) = h(b) + 1 을 만족시키는 a 의 자손 체크포인트 a’ 에 대해 캐스퍼 프로토콜을 위반하지 않으며 supermajority link a → a’ 생성 가능 (i.e. a’ 이 justified) • a’ 이 justified 된 이후 a’ 으로부터 a’ 의 direct child 에 대한 supermajority link 를 생성함으로써 a’ 을 finalize 시킬 수 있음 정리 2. (Plausible Liveness) finalized된 체인의 children이 존재하는 경우, supermajority link를 추가하여 새로운 체크포인트를 finalize 할 수 있다 a b a’ a’’
  • 37. • 기존 작업증명(PoW) 방식의 포크 선택 규칙은 “가장 긴 체인 위에 블록을 추 가”시키는 것. 하지만 캐스퍼의 경우 그와 같은 포크 선택 규칙을 도입하는 경우 체인 자체가 더 이상 justify 되거나 finalize 될 수 없는 경우가 발생할 수 있음 • 따라서 캐스퍼의 포크 선택 규칙은 “가장 긴 justified 된 체크포인트의 체인을 포함하고 있는 체인 위에 블록을 추가” 캐스퍼 포크 선택 규칙 (fork choice rule)
  • 38. • 기존 작업증명(PoW) 방식의 포크 선택 규칙은 “가장 긴 체인 위에 블록을 추 가”시키는 것. 하지만 캐스퍼의 경우 그와 같은 포크 선택 규칙을 도입하는 경우 체인 자체가 더 이상 justify 되거나 finalize 될 수 없는 경우가 발생할 수 있음 • 따라서 캐스퍼의 포크 선택 규칙은 “가장 긴 justified 된 체크포인트의 체인을 포함하고 있는 체인 위에 블록을 추가” 캐스퍼 포크 선택 규칙 (fork choice rule) FINALIZED 채굴자들이 가장 긴 체인을 채 굴하므로 a 의 finalization에 참여한 검증자들의 자발적인 예치금 몰수 없이 새로운 블록 에 finalize 불가 a b
  • 39. JUSTIFIED b 대신 a 위에 채굴a b • 기존 작업증명(PoW) 방식의 포크 선택 규칙은 “가장 긴 체인 위에 블록을 추 가”시키는 것. 하지만 캐스퍼의 경우 그와 같은 포크 선택 규칙을 도입하는 경우 체인 자체가 더 이상 justify 되거나 finalize 될 수 없는 경우가 발생할 수 있음 • 따라서 캐스퍼의 포크 선택 규칙은 “가장 긴 justified 된 체크포인트의 체인을 포함하고 있는 체인 위에 블록을 추가” 캐스퍼 포크 선택 규칙 (fork choice rule)
  • 40. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ) • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 동적 검증자 집합 (Dynamic Validator Set) source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6
  • 41. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ) • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6 동적 검증자 집합 (Dynamic Validator Set)
  • 42. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ) • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6 동적 검증자 집합 (Dynamic Validator Set)
  • 43. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ) • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6 동적 검증자 집합 (Dynamic Validator Set)
  • 44. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ) • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6 동적 검증자 집합 (Dynamic Validator Set)
  • 45. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ). • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6 동적 검증자 집합 (Dynamic Validator Set)
  • 46. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ). • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6 동적 검증자 집합 (Dynamic Validator Set)
  • 47. • 이전의 경우에는 검증자가 일정하게 유지되는 경우를 가정하여 캐스퍼 프로토콜의 safety와 liveness를 증명. 하지만 이더리움과 같은 비허가성 블록체인에서는 검증자가 자발적으로 검증에 참여하거나 탈퇴할 수 있어 검증자 집합이 동적으로 변화하는 상황 을 가정해야 함 • 한 가지 방법은 하나의 블록이 finalize 된 후에 새로운 블록을 생성하는 방식 (e.g. 블록 #1 생성 → 블록 #1 finalize → 블록 #2 생성 → 블록 #2 finalize → · · · ). • 하지만 이 방식은 블록의 생성과 finalization이 동시에 일어나는 캐스퍼의 “interwoven consensus” 방식에 적용하기 힘듬 • 캐스퍼의 interwoven consensus 방식에 적용하기 위해 블록의 finalization에 대한 증 거가 다음 블록 이전에 블록체인에 포함된다면 검증자 집합을 변경하고 포함되지 않는 다면 검증자 집합을 변경하지 않는 방식을 생각해 볼 수 있음 • 하지만 이 경우에도 블록이 finalize되었는지 합의할 수 있는 방법이 없기 때문에 오른 쪽과 같이 하나의 부모 블록에서 서로 다른 검증자 집합을 갖는 두 개의 블록이 예치금 몰수 없이 finalized 될 수 있음 • 캐스퍼는 이전 검증자 집합의 2/3 이상과 신규 검증자 집합의 2/3 이상의 투표 메세지 를 받는 경우에만 supermajority link로 인정 동적 검증자 집합 (Dynamic Validator Set) source: https://medium.com/@VitalikButerin/safety-under- dynamic-validator-sets-ef0c3bbdf9f6
  • 48. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2)
  • 49. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2) 블록 #0 블록 #1 블록 #100 블록 #200 블록 #99 . . . . . . 블록 #201 . . . 블록 #101 supermajority link 블록#0 → 블록 #100 supermajority link 블록#100 → 블록 #200 dynasty = 1 dynasty = 2 dynasty = 3 블록 #300 supermajority link 블록#200 → 블록 #300
  • 50. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2) 블록 #0 블록 #1 블록 #100 블록 #200 블록 #99 . . . . . . 블록 #201 . . . 블록 #101 dynasty = 1 dynasty = 2 dynasty = 3 블록 #300 참가자 v의 예치 메시지 v 검증자로서 참여 시작 DS(v) = 3
  • 51. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2) 블록 #0 블록 #1 블록 #100 블록 #200 블록 #99 . . . . . . 블록 #201 . . . 블록 #101 dynasty = 1 dynasty = 2 dynasty = 3 블록 #300 참가자 v의 탈퇴 메시지 v 검증자로서 탈퇴 DE(v) = 3
  • 52. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2) 블록 #0 블록 #1 블록 #100 블록 #200 블록 #99 . . . . . . 블록 #201 . . . 블록 #101 dynasty = 1 dynasty = 2 dynasty = 3 블록 #300 참가자 v1의 예치 메시지 참가자 v2의 탈퇴 메시지 V = dynasty 1의 검증자 집합 Vf (3) = V + {v1} Vr (3) = V — {v2}
  • 53. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2) 체크포인트 #45 새로운 검증자 집합: B A에 의해 서명 체크포인트 #46 새로운 검증자 집합: C A + B 에 의해 서명 체크포인트 #47 새로운 검증자 집합: D B + C 에 의해 서명 supermajority link supermajority link A: forward validator set B: rear validator set
  • 54. • dynasty: 블록 b 의 dynasty는 b 의 부모 블록으로부터 루트(root)까지의 finalized된 체크포인트의 개수를 나타냄 • 검증자가 되고 싶은 참가자 v의 예치 메시지(deposit message)가 d의 dynasty 값을 갖는 블록에 추가되면 해당 참가자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하며 d+2 를 start dynasty 혹은 DS(v)라 함 • 마찬가지로 검증을 그만 두고 싶은 검증자 v의 탈퇴 메시지(withdraw message)가 d의 dynasty값을 갖는 블록에 추가되면 해당 검증자는 d+2의 dynasty값을 갖는 첫 번째 블록부터 검증자로서 참여하지 않으며 d+2 를 end dynasty 혹은 DE(v)라 함 • forward validator set: Vf (d) ≡ {ν : DS(ν) ≤ d < DE(ν)} • rear validator set: Vr (d) ≡ {ν : DS(ν) < d ≤ DE(ν)} • supermajority link: d의 dynasty 값을 갖는 rear validator set 및 forward validator set의 2/3 이상이 s → t 로의 투표 메시지를 공개한 경우 (s, t)는 supermajority link를 갖음 • finalized: 체크포인트 c 가 justified 되었고 c 의 direct child 인 c’ 으로의 supermajority link (i.e. c → c’)가 존재하며 c 를 justify하는 모든 supermajority link 가 c’ 의 자녀(child) 이전에 블록체인에 추가된 경우 c 가 finalized 되었다 고 함 용어정의 (2/2) source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf justified c c’ c’’ supermajority link supermajority links justifying c included before c’’
  • 55. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어
  • 56. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어 source: https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
  • 57. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어 source: https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/ Slasher: 예치금을 예치하고 잘못된 행동시 예치금을 몰수
  • 58. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf 검증자의 예치금에 대한 출금지연(withdraw delay)을 통해 클라이언트가 주기적으로 justified chain 에 대한 정보를 획득하면 장거리 공격을 막을 수 있음
  • 59. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어 검증자의 1/3 이상이 동시에 검증에 참여하지 못하는 경우 (i.e. 네트워크 분할, 악의적 행동 등) 체크포인트가 finalized 되지 못함 검증자가 검증에 참여하지 않는 경우 “inactivity leak”을 통해 검증자의 예치금 을 조금씩 줄여나가는 방법. 감소된 이더(ether)를 검증자에게 일정시간 이후 돌려주어야 하는지 여부 및 구체적인 공식(formula)는 경제적 인센티브 설계의 영역.
  • 60. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어 검증자의 1/3 이상이 동시에 검증에 참여하지 못하는 경우 (i.e. 네트워크 분할, 악의적 행동 등) 체크포인트가 finalized 되지 못함 검증자가 검증에 참여하지 않는 경우 “inactivity leak”을 통해 검증자의 예치금 을 조금씩 줄여나가는 방법. 감소된 이더(ether)를 검증자에게 일정시간 이후 돌려주어야 하는지 여부 및 구체적인 공식(formula)는 경제적 인센티브 설계의 영역.
  • 61. • “nothing-at-stake” problem • long range revision • catastrophic crash 다양한 공격의 방어 source: https://github.com/ethereum/research/blob/master/papers/cas per-basics/casper_basics.pdf inactivity leak 으로 인해 충돌하는 두 개의 체크포인트 가 동시에 finalize 될 가능성이 있음. 이러한 다양한 공 격을 방지하는 방법은 아직까지 열린문제로 남아있음
  • 62. • 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로 토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니 즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표 • 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도 accountable safety와 plausible liveness 를 충족한다는 것을 증명 • 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후 포크 선택 규칙에 대한 formal specification • 캐스퍼 내 경제적 인센티브에 대한 분석 Future Work
  • 63. • 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로 토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니 즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표 • 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도 accountable safety와 plausible liveness 를 충족한다는 것을 증명 • 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후 포크 선택 규칙에 대한 formal specification • 캐스퍼 내 경제적 인센티브에 대한 분석 Future Work
  • 64. • 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로 토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니 즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표 • 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도 accountable safety와 plausible liveness 를 충족한다는 것을 증명 • 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후 포크 선택 규칙에 대한 formal specification • 캐스퍼 내 경제적 인센티브에 대한 분석 Future Work
  • 65. • 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로 토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니 즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표 • 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도 accountable safety와 plausible liveness 를 충족한다는 것을 증명 • 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후 포크 선택 규칙에 대한 formal specification • 캐스퍼 내 경제적 인센티브에 대한 분석 Future Work
  • 66. • 제안 메커니즘(proposal mechanism)이 타협(compromise)되면 캐스퍼 프로 토콜이 새로운 블록을 finalize 할 수 없음. 현재 작업증명 기반의 제안 메커니 즘에서 지분증명(PoS) 기반의 제안 메커니즘으로 전환하는 것이 목표 • 보상과 벌금을 통해 검증자 집합이 동적으로 변화하는 경우에도 accountable safety와 plausible liveness 를 충족한다는 것을 증명 • 지분증명 방식의 합의 알고리즘에서 발생할 수 있는 공격상황을 가정한 후 포크 선택 규칙에 대한 formal specification • 캐스퍼 내 경제적 인센티브에 대한 분석 Future Work
  • 67. Resources • Casper the Friendly Finality Gadget (Vitalik Buterin, Virgil Griffith / final update: Oct 29, 2017): https://github.com/ethereum/research/blob/master/papers/casper-basics/casper_basics.pdf • Casper PoS & Smart Contract Consensus Overview (Karl Floersch / Jun 30, 2017): https://www.youtube.com/watch?v=MyDocEQfBGA&t=1090s • Minimal Slashing Conditions (Vitalik Buterin / Mar 2, 2017): https://medium.com/@VitalikButerin/minimal-slashing-conditions-20f0b500fc6c • Safety Under Dynamic Validator Sets (Vitalik Buterin / Mar 5, 2017): https://medium.com/@VitalikButerin/safety-under-dynamic-validator- sets-ef0c3bbdf9f6 • Ethereum Casper 101 (Jon Choi / Oct 22, 2017): https://medium.com/@jonchoi/ethereum-casper-101-7a851a4f1eb0 • Ethereum Research: https://ethresear.ch/ • Proof of Stake FAQ: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ • Incentives in Casper the Friendly Finality Gadget (Vitalik Buterin / Sep 4, 2017): https://github.com/ethereum/research/blob/master/papers/casper-economics/casper_economics_basic.pdf • Proof of Stake Design Philosophy (Vitalik Buterin / Dec 31, 2016): https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy- 506585978d51 • Proof of Stake: How I Learned to Love Weak Subjectivity (Vitalik Buterin / Nov 25, 2014): https://blog.ethereum.org/2014/11/25/proof-stake- learned-love-weak-subjectivity/