Consensus in Distributed Systems 이더리움연구회 Consensus in Distributed Systems 박진형, 박찬현, 이동식, 이부형, 전창석, 홍종화이더리움연구회 4 기기술리서치분과 1

Size: px
Start display at page:

Download "Consensus in Distributed Systems 이더리움연구회 Consensus in Distributed Systems 박진형, 박찬현, 이동식, 이부형, 전창석, 홍종화이더리움연구회 4 기기술리서치분과 1"

Transcription

1 Consensus in Distributed Systems 박진형, 박찬현, 이동식, 이부형, 전창석, 홍종화이더리움연구회 4 기기술리서치분과 1

2 2

3 목차 1. 개요 블록체인의등장 분산시스템 (Distributed System) FLP Impossibility Byzantine Fault Tolerance (BFT) Two Generals Problem Byzantine Generals Problem (BGP) Solution 1: Oral Message (OM) Solution 2: Signed Message (SM) Generalized BFT 블록체인에서의 BFT 해결 Practical Byzantine Fault Tolerance (PBFT) Introduction & Proof Algorithm Properties Normal Case Operation Checkpoint View Change Use Case: Tendermint Consensus Process Use Case: Tendermint test with 4 nodes Conclusion Appendix Introduction CAP 이론소개 CAP 이론의한계 PACELC Theorem

4 1. 개요 기술의발달은너무나빨라서사람들이채적응하기도전에또다른신기술들의영향을받는다. 특히, 4 차산업혁명이라는거대한물결속에기술의진보는우리사회에더큰영향을끼치고있다. 인공지능, 데이터마이닝, 클라우드컴퓨팅등 4 차산업을대표하는미래유망신사업분야에높은관심이쏠리는이유다. 최근에는암호화폐의기반기술인블록체인이기존의금융서비스판도를바꿀것이라는기대감속에새롭게조명을받고있다. 불과몇년전까지만해도블록체인은 뜬구름잡는이야기 였지만지금은수많은사람들이연구하고다양한사업을창출하는핵심기반이되고있다. 1.1 블록체인의등장 블록체인은사토시나카모토 (Satoshi Nakamoto) 라는익명의인물이비트코인 : P2P 전자화폐시스템 (Bitcoin: Peer-To-Peer Electronic Cash System) [1] 이라는 9 쪽짜리논문을공개하면서세상에본격적으로등장했다. ( 엄밀히따지면사토시논문에는블록체인이라는단어는나오지않는다 ) 2008 년 10 월에공개된이논문은현재의중앙화금융시스템에대한도전장이자, 개인간온라인직접거래 (P2P) 의가능성을보여준획기적인사례였다. 그이유는분산컴퓨팅분야에서오래전부터풀지못했던비잔티움장군문제 (Byzantine Generals problem) 에대한실용적인해결책을제시했기때문이다. 간단히설명하자면, 사토시는악의적인노드가존재할수있는네트워크상에서도합의를이끌어낼수있음을작업증명방식 (Proof of Work) 을통해제시했다. 이해법은분산컴퓨팅과학에서획기적인발자취를남기고, 신뢰할수있는디지털화폐시대의초석을마련한것으로평가된다. 그러나, 사실탈중앙화를이루고자하는블록체인세상은하루아침에탄생한것은아니다. 블록체인의시작은사이퍼펑크 (Cyber Punk) 운동 [2] 이벌어진 1980 년대로거슬러올라간다. 사이퍼펑크운동은정부가개인의사생활정보에접근하지못하도록암호 (cypher) 체계를개발하고사용해야한다고주장한다. 사이퍼펑크운동은데이비드차움 (David Chaum) 의이캐시 (Ecash), 아담백 (Adam Back) 의해시캐시 (HashCash), 웨이다이 (Wei Dai) 의비머니 (B-money), 그리고닉재보 (Nick 4

5 Szabo) 의비트골드 (Bit Gold) 등중요한암호및거래기술을만드는초석이되었다. 즉, 블록체인은사이퍼펑크 (Cyber Punk) 들의지속적인노력과분산시스템에대한수많은연구의집약체라고볼수있다. 비트코인이세상에나오기까지의과정은아빈나라야나 (Arvind Narayana) 과제레미클락 (Jeremy Clark) 의글 Bitcoin s Academic Pedigree [3] 을통해서도자세히알수있다. ( 해당리서치는지난 3 기발표회 [4] 에서도확인할수있다. ) < 그림 1.1. 비트코인이나오기까지의아이디어연대표 > 5

6 < 그림 1.1> 을보면알수있듯이다양한이론들이접목되어발전한형태가현재의블록체인기술이다. 암호학과디지털재화, 합의과정, 타임스탬프, 증명방식등다양한분야의기술들이블록체인기술에영감을주면서발전하고있다. 특히, 분산시스템하에서블록체인기술이가지는의의는아주큼으로, 분산시스템과 IT 인프라아키텍처를소개하고자한다. 1.2 분산시스템 (Distributed System) 분산시스템 (Distributed System) [5,6] 이란기존의중앙집중처리를하던시스템에서탈피하여, 통신네트워크를통해서로약결합된 (Loosely Coupled) 처리기들의집합을의미한다. 즉, 사용자는하나의단일시스템으로보지만뒤에서는여러다양한컴퓨터들로구성되어있다. 분산시스템의장점은개별컴퓨터의안정성이낮아도무관하므로저렴한비용의장비로도구축할수있다. 또한, 더많은컴퓨터를이용해서시스템전체의성능을향상할수있어확장성이좋다는특징을가지고있다. 그러나분산시스템은서버의수가증가하면이를운영하기위한구조가점점더복잡해진다. 더불어서버가고장이나더라도이로인한영향을최소화하기위해서는서버의역할을세세하게검토해야한다. 서버를운영하는방법은여러가지형태로존재하며크게집약형과분할형으로구분된다. 몇가지대표적인예시를알아보자. 집약형아키텍처집약형아키텍처는흔히옛날영화에나오는방하나에기계와거대한장치들이있는장면을떠올리면된다. 집약형은대형컴퓨터를이용해모든업무를처리하는형태이다. 하나의컴퓨터로모든처리를하므로집약형이라고부른다. 그러나한대의컴퓨터로모든처리를감당해야하므로대부분은컴퓨터를구성하는주요부품들이모두다중화되어있다. 6

7 클라이언트-서버형클라이언트-서버형은수직분할형의하나로업무애플리케이션, 미들웨어, 데이터베이스등의소프트웨어를물리서버상에서운영하고, 이들의소프트웨어를클라이언트혹은단말이라고불리는소형컴퓨터가접속해이용하는형태이다. 클라이언트-서버는클라이언트 (client) 가전용소프트웨어를설치해야하며, 업무애플리케이션이갱신이될때마다클라이언트소프트웨어가업데이트되야한다. 또한, 서버의처리가집중되면확장성의한계가발생할수있다. 이를발전시킨것이 3 계층형아키텍처이다. 3 계층형아키텍처 3 계층형은클라이언트-서버형을발전시킨형태로위에서프리젠테이션계층, 애플리케이션계층, 데이터계층의 3 층구조로분할되어있다. 이는서버부하의집중을개선한것으로클라이언트는정기적인업데이트를하지않아도된다는장점이있다. 그러나클라이언트-서버보다복잡하다는단점이존재한다. 이외에도수평분할형아키텍처나지리분할형아키텍처등다양한아키텍처가존재한다 년대부터는웹이발전함에따라경량웹 (Thin Client) 처리방식이제공되기시작했다. 이는 HTML 을렌더링한결과만을제공하기때문에가볍다는장점이있다. 이후경량웹방식은단일웹페이지애플리케이션 (SPA, Single Page Application) 으로발전하였다. Ajax(Asynchronous Javascript + XML) 등을이용한다양한웹서비스가증가하다보니비동기식처리가많아지게되었다. 동기 (Synchrony) 는누군가에게일을부탁하고그일이끝나기까지기다리는것이고, 비동기 (Asynchrony) 는 끝나면말해 라고하고다른일을하는것을의미한다. 비동기의경우다른작업을하면서호출을한처리가되었는지계속해서체크를한다. 이후가상화기술의발전으로스토리지부터, 서버컴퓨팅, 네트워크, 운영체제에이르기까지모든자원을추상화할수있게되었다. 이렇게발전하게된클라우드컴퓨팅으로인해더인프라를직접구축하지않아도적은비용으로서비스를개발할수있는환경이조성되었다. 7

8 < 그림 1.2. 컴퓨터의발전 > 블록체인 P2P 컴퓨팅 P2P 컴퓨팅이란네트워크에참여한모든컴퓨터가동일한역할과기능을수행하는방식을의미한다. 이는클라이언트가서버의역할을동시에수행한다는의미이다. P2P 네트워크는중앙집중형, 링형, 계층형, 완전분산형등다양한방법으로연결이될수있다. 이더리움 (Ethereum) 플랫폼 [7] 의경우, P2P 기반에서완전분산형방식으로컴퓨팅프로세스, 파일, 메시지공유기능을활용하여다양한응용서비스를지원하고자한다. 이처럼다양한아키텍쳐가상황에맞게발전하며, 오늘날다양한블록체인시스템발전의촉매제역할을하고있다. 8

9 2. FLP Impossibility 분산시스템이론중빼놓을수없는이론은바로 FLP Impossibility 이다. FLP Impossibility 는 1985 년피셔 (Fischer), 린치 (Lynch), 패터슨 (Paterson) 이공동으로저술한 Impossibility of Distributed Consensus with One Faulty Process [8] 논문에서나온이론이다. 이는비동기식네트워크환경에서실패할가능성이있는노드가단하나라도있을경우 Safety 와 Liveness 이두가지속성을모두만족하는합의알고리즘은존재할수없음을증명하였다. 비동기네트워크 (asynchronous network) 특성상통신지연시간을예측할수없어특정문제로인해노드가작동에실패한것인지아니면단순히네트워크지연으로인해응답시간이오래걸린것인지알수없다. FLP Impossibility 를이야기하기이전에 FLP 이론에등장하는단어에대한정의를하고자한다. 동기성 (Synchronous) 동기성이란시스템에콜 ( 요청 ) 을하였을때콜이끝날때까지노드가대기하고완료가되면결과값을반환 (return) 하는네트워크를의미한다. 소프트웨어의관점에서는하나의과정 (routine) 이완벽하게끝나야반환을하는형태를의미한다. 비동기성 (Asynchronous) 비동기성이란하나의콜을하고, 완료의유무와상관없이응답 (respond) 를하는것을의미한다. 콜이후에노드는다른작업을병행할수있으며, 콜이완벽하게반환이되면결과물을다시가져오는형태이다. 다음정의를한특징을바탕으로분산네트워크에서는네트워크간의통신을동기성과비동기성으로구분한다. 동기성네트워크 (Synchronous Network) 의경우메시지를전송하고, 이를전파하는과정 (Message Propagation) 에서네트워크의정보전파시간을완전히조절할수있는것을의미한다. 또한, 모든노드는자신이보낸메시지에도달하는시간을조절혹은예측을 9

10 할수있다. 이때, 정확하게도달시간을예상할수있어야하므로이를방해하는어떤경우의지연 (Delay) 도일어날수없다. 이와달리비동기성네트워크 (Asynchronous Network) 의경우메시지를전송하고, 이를전파하는과정에서네트워크의정보전파시간을예측할수없는경우를의미한다. 네트워크상에존재하는수많은방해노드 (Botnet) 과 DDoS 공격등으로인해노드간의메시지가완전하게유실되거나사라지는가능성이있음을전제로한다. 다음의동기성과비동기성을중첩한경우는부분동기성네트워크 (Partial Synchronous) 라고하며, 네트워크통신상태를사용자가어느정도조절할수있는경우를의미한다. 네트워크상에서의방해가있더라도일정시간하 (Upper Bound) 에는반드시메시지를응답받을수있다. 이는 Chapter 4 의 PBFT 에서더알아보자. FLP 이론은앞서언급한바와같이비동기성네트워크 ( 부분동기성네트워크도포함 ) 환경에서실패가능성이단하나라도있을경우 Safety 와 Liveness 모두를만족하기힘들다는이론이다. 여기서는다루지않지만, Paxos 와같이궁극적으로최종합의가되는경우 (Eventual Liveness) 는가능하지만, 시간의범위 (Time Bounded) 가정해진경우는불가능하다. FLP Impossibility 에따르면, 분산네트워크는다음조건들을만족한다고가정하였다. 1) Termination: 모든동작하는노드들은언젠가는어떤값을결정한다. 2) Agreement: 노드들은모두동일한값을결정한다. 3) Validity: 결정된값은어떤과정을통해결정되어야한다. 가령, 노드가어떤메시지를받던항상 0 의값을출력하는알고리즘을가지고있다면이를만족시키지못한다. FLP Impossibility 는다음의가정을바탕으로크게두가지로정리하여증명 [9] 한다. 1) 비동기성네트워크에서노드의합의는결정성 (Deterministic) 을가지지않고, 노드의실패여부등으로인해비결정성 (Non-deterministic) 을가지게된다. 10

11 2) 1) 의정리를바탕으로아직합의가이루어지지않은상황은무한히합의가 이루어지지않는상황으로이어지는것이가능하다. 이는합의가발생하지않을수있다는의미이며, 비동기성네트워크에서는합의가 보장되는합의알고리즘은불가능하다는것이다. 다음의증명정리를바탕으로 FLP 이론을 3 가지의경우로간단하게정리할수있다. 1) 증명에서가정되는합의는결정성 (Deterministic) 을가진다. 2) 노드가실패할수있는환경은결정성 (Deterministic) 을가지지않는환경이다. 3) 결정성 (Deterministic) 을가지지않는환경에서는어떠한경우에도결정성을가질수없다. FLP Impossibility 에서는다음과같은증명을통해비동기식네트워크에서는 Safety 와 Liveness 를모두만족하며합의하는것은불가능하다고이야기한다. 블록체인에서는이 FLP Impossibility 를우회하기위해다음과같은방법을이용한다. 1) 합의를재정의한다. (Liveness over Safety) 2) 비동기성을포기한다. (Safety over Liveness) 블록체인에서이두가지방법으로 FLP Impossibility 를우회하는방법을차례대로 알아보자. 11

12 3. Byzantine Fault Tolerance (BFT) 현재분산네트워크시스템에서는 BFT 기반의합의알고리즘이많이사용되고있다. BFT (Byzantine Fault Tolerance) 는분산네트워크안에서악의의노드 (Byzantine) 가네트워크에존재하는경우에도선의의노드들이안전하게네트워크를사용할수있는합의방법은무엇인지연구하는분야이다. 현재 BFT 가어떻게블록체인기술에서활용되고있는지알아보기이전에, 1982 년레슬리램포트 (Leslie Lamport) [10] 외 2 명이발간한논문을중심으로 BGP (Byzantine Generals' Problem) 를살펴보면서초기의분산네트워크합의알고리즘연구방향과그내용을살펴본다. 3.1 Two Generals' Problem 두장군문제는신뢰할수없는네트워크에서의노드간메시지가올바르게전송되기위한조건을논의하면서처음나온개념이다 년에출판된논문 " SOME CONSTRAINTS AND TRADEOFFS IN THE DESIGN OF NETWORK COMMUNICATIONS" [11] 에서처음논의를시작했고, 두장군문제라는용어는 1978 년에만들어졌다. 이는네트워크를구성하는노드를장군으로가정하고, 두장군이공동의적을공격하는시나리오이다. 두장군은적진을사이에두고공격시각을합의해야하는상황이다. 다음은합의를위해두장군이고려해야하는사항들이다. 1) 반드시두장군이동시에공격해야만이길수있다. 2) 공격시각을합의하기위해각자의메신저를보낸다. 3) 메신저는메시지전달을위해반드시적진을통과해야한다. 이때장군들은공격시간을결정하기위해다음과같은생각을할수있다. 12

13 1) 장군 A 가메신저를통해장군 B 에게공격시간을전달 2) 장군 B 가장군 A 의메시지를확인후회신 3) 장군 A 가장군 B 의회신메시지를확인 4) 결정된공격시각에일제히공격! < 그림 3.1. 공격시각결정방법 [12]> 다음과같은공격시간이추가되었을때장군들은고민에빠지게된다. 가령장군 A 가 "11 월 1 일오전 8 시에공격 " 이라는메시지를작성해서장군 B 에게보낸다. 장군 B 가장군 A 의메시지를받고 " 공격확인 " 이라는응답메시지를장군 A 에게보낸다. 장군 A 가메시지를받으면합의는성공적으로이루어진다. 그러나, 장군 A 가보낸메시지를가지고떠난메신저가도중에적군에게잡힐수도있다. 장군 A 의메신저가적군의경계를무사히뚫고장군 B 에게메시지를전달했다고해도장군 B 의메신저가적군에게잡힐수도있다. 이경우메시지가잘전달될확률이항상 100 보다낮기때문에장군들은합의에도달할수없다. 이는누구도메시지가잘도착했는지알수있는방법이없다는것을의미한다. 13

14 < 그림 3.2. 두장군문제 > 3.2 Byzantine Generals Problem (BGP) BGP (Byzantine Generals' Problem) 는앞서설명한두장군문제를일반화한주제로셋이상이네트워크에참여할때서로합의를도출하기위한방법을논의한다. 두장군문제와같이공동의적을상대로승리하고싶은장군들을예시로제시하고더불어메시지위조가가능하며담합도할수있는배신자를등장시킨다. 여기서의논의주제는배신자가존재할경우에도합의에성공하려면배신자를포함하여몇명의장군이있어야할지를정하는것이다. BGP 에서기본적으로제시하는가정은다음과같다. 1) 적은어느정도의병력이모여서한번에공격을해야이길수있는상대이다. 이를 위해여러부대가적진을둘러싸고있으며각장군들은합의를통해공격을해야할지 말아야할지를결정해야하는상황이다. 14

15 2) 각부대는하나의장군이이끌고있으며메신저가전달하는메시지를통해서만서로소통이가능하다. 3) 메신저는반드시적진을통과해야지만다른부대로갈수있다. 4) 장군들중한명의사령관이 " 공격 " 혹은 " 후퇴 " 를결정하여메시지를모든장군에게전달한다. 5) 메시지를받은장군들은나머지장군들에게사령관으로부터받은메시지를전달한다. ( 장군들은서로연결되어있다.) 6) 일정시간이후각장군들은자신이받은메시지를종합하여 " 공격 " 혹은 " 후퇴 " 를결정하여명령을이행한다. ( 동기화 ) 메신저 (Messenger) 가메시지를전달하는도중에실패할확률이있다. 적군에게 포획당하거나살해당하는등실패를할수있다. 혹은장군들중에비잔틴즉, 악의적인 배신자가섞여있을수있다. 배신자는두가지경우로생각할수있다. 1. 배신자는메시지내용을위조할수있다. 2. 사령관도배신자가될수있다. 만약사령관이 " 공격 " 명령을하달했을때메시지를받은장군들이모두 " 공격 " 을이행해야전쟁에서승리할수있다. 그렇기때문에배신자의방해가있더라도모두같은결정을할수있어야한다. 이에램포트 (Lamport) 는추가적으로아래의두가지조건을제시한다. (IC, Interactive Consistency) IC1: 배신자가아닌모든장군들은같은명령을이행한다. IC2: 만약사령관이배신자가아니라면, 배신자를제외한모든장군들은 사령관의명령을이행한다. BGP 가생길수있는최소조건은아래와같이합의대상이 3 명일때이다. 15

16 V(i) 가 i 번째장군이받은메시지의집합이라고할때, 일정시간이후배신자가아닌 장군들은자신이받은메시지내용으로 " 공격 " 과 " 후퇴 " 중하나를선택하여이행한다. ( 과반수우선선택기준 ) 1) 사령관이배신자일경우 V(1) = {" 공격 ", " 공격 "} -> 장군 1 은 " 공격 " 으로판단 V(2) = {" 후퇴 ", " 공격 "} -> 장군 2 는 " 후퇴 " 로판단 2) 장군 2 가배신자일경우 V(1) = {" 공격 ", " 후퇴 "} -> 장군 1 은 " 공격 " 으로판단 < 그림 3.3. 사령관이배신자일경우 ( 왼쪽 ), 장군 2 가배신자일경우 ( 오른쪽 ) m 의수를늘려서 (m = 2, 3,... ) 장군의수가총 3m 일때를생각해보면배신자집단에 사령관이포함될경우정직한장군들이잘못된결정을하도록조작할수있음을알수있다. 16

17 안정적인합의를위해서는장군들은모두같은알고리즘을통해메시지를전달하고, 전달받은메시지에서 " 공격 " 이나 " 후퇴 " 중하나의의미를도출할수있어야한다. 이를위해램포트 (Lamport) 는두가지알고리즘을제시한다. 첫번째는구두메시지 (Oral Message, OM) 이고두번째는서명된메시지 (Signed Message, SM) 이다. 3.3 Solution 1: Oral Message (OM) 알고리즘 OM 에서의기본가정은아래와같다. 1) 장군들이보낸모든메시지는올바르게전달된다. 2) 메시지를받은장군들은누가보낸메시지인지알수있다. 3) 더이상메시지가도착하지않음을인지할수있다. Algorithm OM(m) BGP 를해결하기위해램포트가제안하는 OM 알고리즘은아래와같다. OM(0) 1) 사령관은모든장군들에게메시지 (" 공격 " 과 " 후퇴 " 중하나 ) 를보낸다. 2) 모든장군들은사령관이보낸메시지를수신하여 " 공격 " 과 " 후퇴 " 중하나를결정한다. OM(m), m은배신자의수 1) 사령관은모든장군들에게메시지 (" 공격 " or " 후퇴 " 중하나 ) 를보낸다. 2) 각 i에대해사령관에게장군 i가받은메시지를 v(i) 라고한다. 만약장군 i 가아무런메시지를받지못했다면그장군은 " 후퇴 " 로결정한다. 장군 i는 OM(m 1) 의사령관역할로 v(i) 를다른 (n-2) 명의장군들에게보낸다. 3) 장군들은메시지를받고 majority(v(1), v(2),..., v((n 1))) 을통해 " 공격 " 과 " 후퇴 " 중하나를결정한다. 4) majority(v(1), v(2),..., v((n 1))) 을통해 " 공격 " 과 " 후퇴 " 중하나를결정한다. 17

18 majority() 가값을결정하는기준은다음과같다. A. 장군이받은메시지에서 " 공격 " 과 " 후퇴 " 중많은쪽을택한다. 만약아무런메시지를받지못했다면 " 후퇴 " 한다. B. 만약 1 번에과반수를선택할수없는경우, 중앙값을선택한다. ( 메시지가순서집합의형태일때 ) 앞에서장군의수가 3m 이하일경우에는 BGP 를해결할수없음을얘기했기때문에, 여기서는 3m + 1 일경우를가정하여알고리즘 OM 을설명한다. 배신자가 1 명일경우 합의에참여하는장군의수는사령관포함총 4 명이다. 1) 사령관이배신자일경우 V(1) = {" 공격 ", " 후퇴 ", " 공격 "}-> 장군 1 은 " 공격 " 으로결정 V(2) = {" 후퇴 ", " 공격 ", " 공격 "}-> 장군 2 는 " 공격 " 으로결정 V(3) = {" 공격 ", " 후퇴 ", " 공격 "}-> 장군 3 은 " 공격 " 으로결정 2) 장군 2 가배신자일경우 V(1) = {" 공격 ", " 공격 ", " 후퇴 "}-> 장군 1 은 " 공격 " 으로결정 V(3) = {" 공격 ", " 공격 ", " 후퇴 "}-> 장군 3 은 " 공격 " 으로결정 두가지경우모두배신자가아닌장군들이모두 " 공격 " 으로결정하였음으로합의에 성공하여전쟁에승리할것이라예상할수있다. 18

19 < 그림 3.4. OM(1), 사령관이배신자일경우 > ` < 그림 3.5. OM(1), 장군 2 가배신자일경우 > 19

20 알고리즘 OM 은 n 3m + 1일때안전하게사용할수있지만, 재귀적으로동작하기때문에배신자의수가늘어날수록메시지의전달과정이지수적으로 ( 기하급수적으로 ) 늘어난다. 예를들어, 배신자가 3 명이라면 OM(3) < OM(2) < OM(1) < OM(0) 과정을거친다. 즉, OM 알고리즘을 (m + 1) 번거쳐야합의에도달할수있다는의미이다. 이에따른복잡도는아래표와같이나타낼수있다. 배신자의수 (m) 복잡도 (n 은장군의수 ) 0 O(n) 1 O(n^2) 2 O(n^3) 3 O(n^4) < 표 3.1. 메시지교환횟수에따른 OM 의복잡도 > 3.4 Solution 2: Signed Message (SM) 램포트 (Lamport) 의두번째해결방안은메시지에서명을붙임으로써누가보낸 메시지인지인지할수있도록하는방법이다. 기존 OM 의가정에다음의가정이추가된다. 1) 배신자가아닌장군의서명은위조될수없으며, 메시지를수신한장군은서명된 메시지의내용이변경되었을경우인지할수있다. 2) 작성된서명은누구나검증할수있다. 서명한메시지는다음과같이정의한다. 사령관을포함한장군들은각자의식별자 (ID) 를가진다. - v: 0 -> 사령관이서명한메시지 v v (value: " 공격 " or " 후퇴 " 둘중하나의값을가짐 ): 메시지내용 0: 사령관의 ID 20

21 - v: i: j -> 장군 i 와장군 j 의서명이담긴메시지 v j: 메시지 v 에서명한장군 j i: 메시지 v: j 에서명한장군 i SM 알고리즘의동작과정은아래와같다. - 사령관은모든장군들에게서명하고 v: 0을보낸다. - 각 i에대해, a. 장군 i 가처음사령관의메시지 v: 0를받았다면, - V(i) = {v - v: 0에자신의서명을붙여서 v: 0: i를다른장군들에게전달한다. b. 장군 i가메시지 v: 0: j 1 : j 2 :... j k 를받았는데, V(i) 에 v가없다면 (i.e., 계속 공격 을받았는데, 방금온메시지는 퇴각 이라면 ) - V(i) 에 v를추가한다. - j(1)~j(k) 를제외한다른장군들에게메시지 v: 0: j 1 : j 2 :... j k : i를전달한다. 더이상메시지가오지않을때, choice(v(i)) 의값을실행하여공격할지퇴각할지 결정한다. < 그림 3.6. 선택을위해사용하는함수 choice> 21

22 앞에서배신자가 1 명일때장군이 4 명이상이라면합의가가능함을보였으니 (n 3m + 1) 3 명의장군이합의하는경우를생각해보자. 사령관이합의를방해하기위해한명에게는 " 공격 " 이라고전달하고, 다른한명에게는 " 퇴각 " 이라고지시한다. 장군들은아직까지사령관이배신자인지모르기때문에다른장군에게받은메시지를그대로전달한다. 배신자가아닌장군 1 과 2 가받은메시지는아래와같다. V(1) = {" 공격 ": 0, " 후퇴 ": 0: 2} -> 장군 1 은 " 후퇴 " 로결정 V(2) = {" 후퇴 ": 0, " 공격 ": 0: 1} -> 장군 2 는 " 후퇴 " 로결정 장군 1 과 2 는두번째로받은메시지를통해사령관이배신자임을알고 " 공격 " 명령을수행하지않을것이다. 배신자가아닌두장군이 " 후퇴 " 라는합의를얻었기때문에 IC1 을만족했다고할수있다. (choice(v(1)) = choice(v(2))), IC2 는사령관이배신자가아닌경우에만고려 ) 또한, 알고리즘 SM 에서의첫번째가정에의해배신자가아닌장군의서명은위조할수없기때문에장군 1, 2 중하나가배신자라면두번째메시지에사령관의서명이없었을것이다. < 그림 3.7. SM(1), 사령관이배신자일경우 > 22

23 만약앞의케이스에배신자장군 3 을추가해도 SM(m) 으로합의에성공할수있을지알아본다. 메시지교환과정은 SM(1) 과거의비슷하나, 장군 1 은장군 2 에게메시지 {" 후퇴 " 0: 2} 를받고장군 3 에게메시지 {" 후퇴 " 0: 2: 1} 을보내는과정과장군 2 가장군 1 에게메시지 {" 공격 ": 0: 1} 을받고장군 3 에게메시지 {" 공격 ": 0: 1: 2} 를보내는두과정이추가된다. < 그림 3.8. SM(2), 사령관과장군 3 이배신자일경우 > 장군 1, 2 가받은메시지와최종결정은아래와같다. V(1) = {" 공격 ": 0, " 후퇴 ": 0: 2} -> 장군 1 은 " 후퇴 " 로결정 V(2) = {" 후퇴 ": 0, " 공격 ": 0: 1} -> 장군 2 는 " 후퇴 " 로결정 생각할수있는최소경우인장군의수 n 이 m + 2 일때합의가가능함을보였으므로, n m + 2 일때알고리즘 SM 을이용하면일치된합의를통해전쟁을승리로이끌수있다. 이상으로 Byzantine Generals Problem 에대해알아보았다. 다음의논문을통해 3m 일 23

24 경우합의가불가능함을알수있었다. 또한, 램포트의솔루션을통해다음과같은경우 합의가가능함을알수있게되었다. 1. 알고리즘 OM 을사용하면 n 3m + 1 일때합의가능 2. 알고리즘 SM 을사용하면 n m + 2 일때합의가능 그러나램포트의논문에따르면많은제약조건을가지게되고실제사용하는네트워크 안에서노드간합의를하는과정은이보다어렵다는것을예상할수있다. 3.5 Generalized BFT 지금까지 BGP 를통해 3m + 1 이상의노드가존재할때 m 명의악의적인노드가있더라도합의가될수있음을알아보았다. 그러나논문의증명을통해알수있듯이램포트는 3m + 1보다작은노드의상황에서합의 (Consensus) 가되지않는다는방식으로증명을하였다. 본단락에서는이를일반화한증명을통해왜전체 3m+1 의노드 (m 명의악의적인노드 ) 가필요한지알아보고자한다. 여기전체 N 개의노드로구성이된네트워크가있다고가정한다. 이중악의적인비잔틴노드가 b 개, 정직한노드가 h 개있다. 이노드들은전체 N 개의노드들중 t 개이상이동의한다음상태 (state) 가있으면해당상태로이동한다. 이네트워크안에서는투표가비동기적 (asynchronous) 으로일어난다. 여기서일어나는합의가 Safety 와 Liveness 모두를만족할때까지가능한 t 의범위를계산해본다. N = h + b 여기새로운상태 A 와 B 가제안되었다. 이때각각의상태에대한투표가진행된다. 정직한노드들은각각절반씩상태 A 와 B 를지지를하게된다.( 상태 A 와 B 이렇게두가지선택이있기때문에확률적으로 1/2 이다 ). 이렇게투표를한정직한노드들은자신의상태에대한투표를다른노드들에게전달한다. 24

25 < 그림 3.9. 정직한노드들의투표와전파 > 정직한노드들이상태에투표를전파하였다. 남은노드들은비잔틴, 즉악의적인노드들이다. 비잔틴한노드들은네트워크를원할하지못하게하는것이목적이기때문에정직한노드들의전파를모두받고선택을하게된다. 이때비잔틴한노드들은거짓된투표정보를전파한다. 상태 A 에는 B 가맞다는투표를, 상태 B 에는 A 가맞다는정보를동시에보낸다. 이럴경우각상태 A 와 B 는투표를다음과같이얻게된다. 상태 (State) 들이득표한투표수 상태 A 상태 B 상태 A 로의투표수 상태 B 로의투표수 h 2 < 표 3.2. 상태 (State) 가득표한투표수 > h 2 + b h 2 + b h 2 25

26 다음표를보면알수있듯이만약 t < h/2 + b 일경우노드가다음상태로진행되기 위한최저투표수이상의표를받은상태가존재하게된다. 따라서네트워크의일부는 A, 나머지는 B 로진행되어분할이된다. 이는블록체인네트워크에서자주듣게되는 네트워크포크 (Fork) 상태가된다. 이를방지하기위해서는 t > h + b가되야한다. 2 < 그림 비잔틴노드의투표와최종상태투표수 > 방금비잔틴노드들의악의적인투표를막기위해서는 t > h + b 가되야한다고 2 이야기했다. 이는네트워크특성중 Safety 를만족하기위함이다. 그렇다면비잔틴한 노드들은 Liveness 의방해를아예합의에참여안함으로방해할수있다. 이경우는다음 그림을통해알아보자. 26

27 < 그림 새로운상태 C 에대한투표 > 새로운상태인 C 가제안이되었다고가정한다. 여기에정직한노드들은 h 개만큼의지지투표를상태 C 에게보낼것이다. 비잔틴한노드들은네트워크의 Liveness 를방해하기위해투표를하지않았다. 이경우합의의대상인 C 에문제가없다면다음상태인 C 로네트워크는진행이되어야한다. 만약 t>h 인경우, 최종투표수가합의를위한최소표의수보다크기때문에네트워크가상태 C 로진행되지못한다. 따라서 Liveness 가보장이되기위해서는 t <= h 여야만보장이될수있다. 지금까지이야기한것을정리하면다음과같다. N = h + b t > h 2 + b t <= h 이를정리하면다음과같은결론이도출된다. h > h 2 + b, h = N b N b > 2b N > 3b b < 1 3 N 27

28 따라서 b<1/3n 일때 Safety 와 Liveness 모두를만족시킬수있다는결론이나오게된다. 이는 BFT 에서이야기하는 3m+1 의노드가있을때 m 개의악의적인노드가있더라도합의가가능하다는결론과동일하다. 지금까지일반화증명을통해 BFT 를해결법을알아보았다. 다음에서는블록체인에서어떤방식으로 BFT 문제를해결했는지알아본다. 3.6 블록체인에서의 BFT 해결 [13,14, 23] 블록체인중가장처음제시된비트코인의합의알고리즘중작업증명방식 (Proof of Work, POW) 는타임스탬프 (Timestamp) 와서명 (Sign, 블록체인에서는 Key) 을통해이문제를해결한다. 1) 장군은메시지를보내기위해 10 분의시간을가진다. (nonce 를찾기위한컴퓨팅작업 ) 2) 메시지는모든장군 ( 이전포함 ) 의메시지와메시지를보내기위해 10 분을들였다는증거를포함한다. 다음의규칙이추가됨에따라중간의비잔틴장군이존재하더라도다른장군들은이장군이거짓임을밝혀낼수있다. 혹은초기에메시지를받은장군이존재하더라도앞선시나리오처럼정직한장군들이성을함락할수있게된다. 지금까지비트코인의합의알고리즘 (Proof-of-Work) 을통해 BFT 의해결과정또한알아보았다. 비트코인의합의알고리즘은사토시나카모토의이름을딴나카모토컨센서스 (Nakamoto Consensus) 로도불리며, 작업증명방식에따라언제나어려운문제에대한답 (Nonce) 을마이너 (Miner) 가찾으면블록이생성되어체인을이어나가게된다. 이렇게만들어진가장긴체인은유효 (valid) 한체인이며, 정격체인 (canonical chain) 이라부른다. 이방식은 FLP Impossibility 를우회하는방법중 Liveness over Safety 의방법을택한것이며, 비트코인의경우 Liveness 를먼저확보하고 6 컨펌 ( 약 60 분 ) 을통해완결성 (Finality) 을가져 Safety 를보완한다. 28

29 FLP Impossibility 를우회하는두번째방법인 Safety over Liveness 의방식으로는 BFT 계열의합의알고리즘이있다. 부분동기성네트워크모델인 PBFT 와이를응용하는 블록체인을통해어떻게문제를해결하는지알아보자. 29

30 4. Practical Byzantine Fault Tolerance (PBFT) 4.1. Introduction PBFT 합의알고리즘은비잔틴노드가존재할수있는비동기분산시스템상황에서도참여한노드가성공적으로합의를달성할수있도록고안된방안이다. 미구엘카스트로 (Miguel Castro) 와바바라리스코프 (Barbara Liskov) [15] 가 1999 년에제안한이 BFT 계열합의알고리즘은일정수준의배신자노드가존재하더라도비동기네트워크에서합의에도달함을보여준다. 현재 PBFT 모델은다양한비허가형 (permissioned) 및허가형 (permissionless) 블록체인시스템에서적용되고있으며, 특히분산환경에서의노드간의결함감내를보장하기위해사용된다 Service Properties PBFT 알고리즘은분산시스템에서다른노드들간의복제 (Replicate) 가가능한상태머신 (state machine) 을모델로하며, 각노드는서비스상태 (service state) 1 를유지하면서서비스운영 (service operation) 2 을실행한다. 기존의상태머신복제 (state machine replication) 시스템과마찬가지로, 노드 (replica) 는두가지요구사항을따른다. 1. 노드는결정론적 (deterministic) 이다. 결정론적시스템에서는특정입력값이들어오면항상똑같은과정을거쳐동일한결과를만들어낸다. 2. 노드는동일한상태 (state) 에서시작한다. 따라서, 해당조건에서는모든정직한노드는요청실행순서를합의하기때문에특정 실패가발생해도 safety 를보장한다. 1 Service state: 하나의서비스가작업을수행하기위해읽고쓰는데이터를나타낸다. 2 Service operation: 하나의서비스가어떻게잘운영할지정리하는서비스운영단계이다. 30

31 System Model Assumption 네트워크에노드가연결되어있는비동기성 (asynchronous) 분산시스템을 가정하기때문에메시지전달이실패, 지연, 중복, 또는무작위순서가될수있다. 비잔틴노드가임의적으로행동할수있는 Byzantine failure 모델을가정한다. 또한, 독립적인노드의실패가능성을열어두어, 특정노드의실패가개별노드의직접적인영향을주지않도록한다. 즉, 한노드가악의적인공격으로입은피해가다른노드의영향을주어서는안되기때문에서로다른서비스코드 (service code) 와운영시스템 (operating system) 을실행시켜야하며, 루트패스워드 (root password) 와관리자계정또한모두서로달라야한다. Replicated service 에심각한장애를일으키기위해아주강력한비잔틴공격자의상황을가정하여정직한노드의시스템을지연시킨다. 단, 정직한노드를무기한지연시키는것은불가능하며정직한노드의유효한서명을위조할수는없다 Cryptography 암호기법을통해서 spoofing 및 replay 공격을방지하고악의적인메시지를구별한다. 메시지에는퍼블릭키서명 (Public-key signatures), 메시지인증코드 (MAC), 충돌회피해시함수 (CRHF) 에서나온메시지다이제스트 (message digest) 3 를포함한다. 전체노드는퍼블릭키서명을통해해당메시지를인증한다. 노드 i가서명한메시지 m은 < m > σi 으로, 메시지다이제스트는 D(m) 으로표기한다. 3 메시지다이제스트 (Message Digest) 메시지다이제스트는고정된크기의메시지로, 해쉬함수를이용해서생성된다. 해쉬함수가안전성이보장된다는가정하에서, 메시지다이제스트서명은메시지자체에서명을하는것과동일한보안서비스를제공한다. ( 31

32 4.2 Algorithm Properties Safety: 모든정직한노드는실패가발생하더라도메시지요청실행순서를합의한다. Liveness: 리더 primary 노드의문제가생기더라도시스템은멈추지않는다. PBFT 메시지합의과정은크게 Pre-Prepare, Prepare, Commit [17] 순으로이어진다. 클라이언트의요청이성공적으로실행이되면답변 (reply) 을받게된다. PBFT 알고리즘의 대략적인진행방향은다음과같다. 1) 클라이언트가서비스운영 (service operation) 을호출하기위해 primary 노드에게요청을전송한다. 2) Primary 노드는해당클라이언트의메시지요청을수집하고정렬하여나머지노드 (backups) 에게전송한다. 3) 각노드는해당요청사항을실행하여검증절차를거친다. 모든검증작업이끝나면해당메시지에대한답변을클라이언트에게전송한다 4) 클라이언트는 f+1 개이상의동일한결과를서로다른노드로부터전달받으면해당요청사항이문제없이처리된것을확인한다. < 그림 4.1. PBFT Consensus Algorithm [16]> 32

33 본격적으로합의알고리즘의진행방향을알아보기전에몇가지개념을다시한번 정의하고자한다. v n σ m p 뷰번호 (view number) 순서번호 (sequence number) 서명 (signature) 요청메시지 (requested message) Primary 리더노드 (primary replica) < m > σ i 노드 i 가서명한메시지 D(m) 메시지다이제스트 m < 표 4.1. PBFT 용어설명 > Request 클라이언트는 < REQUEST, o, t, c > σ c 형태로 primary p 에게메시지를전송한다. Primary 가클라이언트요청 m을수신하면, 이를정렬하여나머지백업노드들에게전송한다. 그러나프로토콜에서처리되는메시지의수가기준치를초과하면 primary 노드는프로토콜을즉각적으로실행하지못한다. 따라서, 이경우에는, 메시지요청을버퍼 (buffer) 시켜서뒤이어서전송한다. 이를통해메시지트래픽및 CPU 오버헤드를줄일수있다 The Client 메시지요청이시작되는클라이언트 (client) 의관점에서일련의합의과정을알아보자. 먼저, 클라이언트 c 는 < REQUEST, o, t, c > σ c 메시지를 primary 에게전송하여 state machine operation 의실행을요청한다. 요청을받은 primary 는이를정리해서노드 (backup) 에게전송한다. 각노드는전달받은요청 (request) 에대한답변을 33

34 클라이언트에게직접전달한다. 답변의형태는 < REPLY, v, t, c, i, r > σ i 이며, 의미는다음과같다. v는현재뷰번호 (view number) 이다. 클라이언트는뷰 (view) 를확인하여현재 primary 가누구인지확인한다. 뷰 (view) 는쉽게말해, 리더노드인 primary 와나머지 backup 노드가한번활동하는기간이다. 뷰번호 (View number) 를확인하여클라이언트는현재 primary 에게요청 (request) 메시지를보내게되는데, 이때전송방식은점대점 (point-to-point) 4 을사용한다. t 는요청에대한타임스탬프, i 는노드의숫자를나타내며, r 은요청한 operation 에대한실행결과이다. < 그림 4.2. Client Request & Reply [16]> 클라이언트는유효한서명및동일한 t 와 r 이담긴메시지답변을각각의노드에게서 f+1 개일때까지기다린다. 그전까지는결과값 r 을수락해서는안된다. 만약클라이언트가답변을제때받지못했다면, 이번엔해당요청을모든노드에게전송한다. 요청은이미처리가된상황이고단순히네트워크문제로메시지전달이지연된 4 Point to point: 한명의송신자가한명의수신자에게메시지를보내는방식으로계속해서대화를나누며빠른응답을필요로 하는경우에주로사용된다. 34

35 경우라면노드는해당요청에대한답변을재전송해야한다. 따라서, 모든노드는각각의클라이언트에게보낸마지막답변메시지 (reply message) 를항상기억해야한다. 반대로, primary 가요청 (request) 을백업노드에게전송하지않아서, 메시지가처리되지않았을수있다. 이때, 다수의노드들은현재 primary 가악의적인노드라판단하고 view change 를발생시킨다. View change 는리더인 primary 를교체하는작업으로 <4.5. view change> 에서더자세히알아본다. 4.3.Normal Case Operation Pre-prepare 및 prepare 는요청순서를제안한 primary 가악의적인노드일지라도동일한뷰 (view) 에서보내진요청을정렬화시키기위한단계이다. Prepare 및 commit 은커밋된요청을뷰 (view) 전반에걸쳐서순서를정돈하는단계이다 Pre-prepare 단계 클라이언트로부터요청이도착하면가장먼저 primary 는유효한요청에 sequence number n 을부여하는데, 이는요청순서를의미한다. Primary 는 pre-prepare 메시지를나머지노드에게전송하고자신의 log 에해당메시지를저장한다. 이때, 메시지 m은 piggyback 5 ( 같이태워서보냄 ) 형식으로보내게되어데이터전송효율성을높인다. Pre-prepare 메시지는 PRE PREPARE, v, n, d > σ p, m > 형태로전송된다. 해당메시지의의미는다음과같다. v: 메시지가전송되는 view n: 메시지요청순서 (sequence number) 5 Piggyback 이란? 수신자는수신받은데이터에대한확인 (Acknowledgement) 를즉각적으로보내지않고, 우선기다리고있다가전송할데이터가있는경우에함께보낸다. 이렇게하는이유는수식자측에서데이터를잘받았다는확인서 (Ack) 를보낼때일정량의대역폭을사용하게된다. 수신자는송신자에게데이터를전송할때, 나머지데이터도함께태워서보내면이런비효율성을줄일수있다. 35

36 d: 메시지 m 의다이제스트 (digest) σ p : 메시지의유효성을증명하는 primary 의서명 m: 클라이언트가요청한메시지 < 그림 4.3. Pre-prepare Phase [16]> 이제노드 (backup) 들은 pre-prepare 메시지의진위여부를확인후수락하는작업에 착수한다. 메시지의참인성립조건은다음과같다. v, n, d, σ 모두유효해야한다. 다른다이제스트가포함된 view v와 sequence number n을수신하지않아야한다. Pre-prepare 메시지의 sequence number 는 low water mark h와 high water mark H 사이에존재해야한다. 특히, 마지막 (h<n H) 조건은악의적인 primary 노드가가장큰수를선택함으로써 sequence number 의공간을모두차지하는것을방지한다. (4.4. Checkpoint 부분에서 (h<n H) 조건에대해서더자세히알아본다. 36

37 Prepare 단계 Backup 노드 i 가 PRE PREPARE, v, n, d > σ p, m > 메시지를수락하면 prepare 단계에진입하게된다. 이제 < PREPARE, v, n, d, i > σ i 메시지를다른모든노드들에게전송하고자신의 log 에저장한다. Primary 를포함한노드들은다음조건을확인하면해당 prepare 메시지를수락하고자신의 log 에저장한다. 메시지의서명이유효하다. 메시지의 view number 와노드의현재 view 가일치하다. Sequence number 는 h 와 H 사이다. Pre-prepare 와 prepare 단계에서는동일한 view 에서보낸메시지순서를정렬한다. 이두단계를통해정직한노드들은동일한 view 내에메시지에대한전체순서를합의하게된다. 노드들은동일한뷰 (view), 순서번호 (sequence number), 다이제스트 (digest) 를가지고있는지확인하면서 prepare 메시지와 pre-prepare 메시지가일치하는지검증한다. 서로다른노드로부터 pre-prepare 메시지와일치하는 prepare 메시지 2f 개를수집하면검증절차가완료되고, 이를 prepared 된상태라부른다. < 그림 4.4. Pre-prepare & Prepare(Prepared)> 37

38 만약노드 i 입장에서 prepared(m, v, n, i) 메시지가참이라면정직한노드 j 에게는 prepared(m`, v, n, j) 은거짓이며, 따라서 D(m`)!=D(m) 조건은성립된다. 이조건이참인이유는 prepared(m, v, n, i) 와 R=3f+1 을통해최소 f+1 개의정직한노드는 sequence number n 을가진 view v내에메시지 m에해당하는 pre-prepare 또는 prepare 를보냈기때문이다 Commit Phase 노드 i는 prepared(m, v, n, i) 메시지가참이되면 < COMMIT, v, n, D(m), i > σ i 메시지를노드들에게전송한다. 각노드들은다음조건을확인하면해당 commit 메시지를수락하고자신의 log 에저장한다. 메시지의서명이유효하다. 메시지의 view number 와노드의현재 view 가일치하다. Sequence number 는 h 와 H 사이다. Commit 단계에서는 committed 와 committed-local 이존재한다. committed(m, v, n) : f+1 개의정직한노드가존재하는상황에서 prepared(m, v, n, i) 가참인경우 committed local(m, v, n, i) : prepared(m, v, n, i) 가참이고노드 i 가자신의메시지를포함해서다른노드로부터 pre-prepare m 과일치하는 2f+1 개의 commit 메시지를받은경우 38

39 < 그림 Commit Phase> 바로이부분에서 commit 단계가필요한이유다. 노드 i 는다른노드로부터 preprepare m 과일치하는 2f+1 개의 commit 메시지를받는다고했다. 그렇다면왜 prepare 메시지가아닌 pre-prepare 메시지와대조작업을하는것일까? 아래예를통해확인해보자. 2f+1 개의 prepare 메시지를받지못한 ( 정직한 ) 노드가있다고가정해보자. 네트워크연결이끊어졌거나잠시동안오프라인상태여서메시지를못받았을것이다. 따라서, 이들은당연히 prepared 단계를시작하지못하였다. 그러나약간의시간이지난후, 2f+1 개의노드가 commit 메시지를전파했다는사실을듣는다면, 그때서야 (m, v, n, i) 을커밋해도된다는확신을하게된다. 즉, 정직한노드라면내부적으로커밋한요청메시지의순서번호 (sequence number) 를합의하게된다. 결론적으로, 메시지전달은순서대로진행되지않기때문에노드는요청메시지를뒤죽박죽 (out-of-control) 으로커밋 (commit) 할수있다. 그럼에도메시지처리문제가발생하지않는이유는해당요청메시지가실행되기전까지, 각노드는 pre-prepare, prepare 그리고 commit 단계마다메시지를자신의 log 에저장해두기때문이다. 39

40 4.4 Checkpoint (Garbage Collection) PBFT 알고리즘은 safety 를보장하기위해노드가메시지를자신의 log 에저장하도록한다. 최소 f+1 개의정직한노드가요청을실행했다는사실을알기전까지는메시지를보관해야한다. 하지만, 지속적으로쌓여가는메시지를적절히관리하지않으면노드의 log 는비대해지고결국비율효적인상태가된다. 이런문제를해결하기위해서일정기간을두고안정된체크포인트 (stable checkpoint) 를만들어낸다. 체크포인트 (Checkpoint) 란노드의 log 에저장해두었던메시지를정리하여폐기하는단계로써, 검증이안정적으로완료되면 stable checkpoint 가만들어진다. 그럼이제구체적으로체크포인트가어떻게진행되는지알아보자. 먼저, 노드 i는체크포인트를만들고 < CHECKPOINT, n, d, i > σ i 메시지를나머지노드에게전송한다. 해당메시지의의미는다음과같다. n 은상태 (state) 에서실행된마지막메시지의순서번호 (sequence number) 이며 d 는상태 (state) 의다이제스트이다. 다른노드가서명한동일한다이제스트 d 를가진 sequence number n에해당하는 2f+1 개의체크포인트메시지를모으기전까지는자신의 log 에해당메시지를모아둔다. 유효한체크포인트메시지 2f+1 개가모이면, 이체크포인트는안전하다고증명 (proof) 된다. 안전성이증명된체크포인트 (stable checkpoint) 에서는노드는자신의 log 의 sequence number 보다작거나같은 pre-prepare, prepare, commit 메시지를모두버린다. 또한, 체크포인트에는메시지를얼마나받아들이고제한할지를결정하는 low water mark h 와 high water mark H 가존재한다. 매번 operation 을실행한후메시지처리과정을진행하는것은비용적으로비효율적이다. 따라서, 체크포인트 (state snapshot 상태 ) 는일정주기를두고생성된다. Low water mark 는마지막 stable checkpoint 의 sequence number 에해당하여, 메시지의 sequence number 가 H 에도달하게되면, 40

41 체크포인트작업을시작한다. High-water mark 와 low-water mark 의직관적인이해를 돕기위해데이터처리가어떻게이루어지는지알아본다. < 데이터전송에서 High-water mark 와 Low-water mark 에대한이해 >[18] High-water mark 와 low-water mark 는데이터처리를원활하게하기위한장치이다. Buffer 는일부의데이터를잠깐저장하는제한된공간이다. 아래의그림에서 media server 는 buffer 의 water-mark 를통해얼마만큼의데이터를전송할지결정한다. Buffer 가 low-water mark 보다데이터를덜갖고있으면, media player 는더많은데이터를전송해달라는신호를보내고, 반대로데이터가 high-water mark 를넘으면, media player 는데이터를그만보내라는신호를보내게된다. < 그림 Low-water mark & High-water mark> 41

42 4.5. View Change 리더노드가요청메시지를멀티캐스트하지않고일정시간이지나게되면리더변경절차인 view change 가발생한다. View change 는 liveness 를확보하는단계로써, primary 노드가비잔틴일경우에도시스템이계속해서작동하도록하는단계이다. 즉, primary 의메시지를기다리는 backup 노드들은무기한기다리지않으며, 타임아웃되면리더를변경하는 <VIEW-CHANGE> 를발생시킨다. Backup 노드의타이머조건은다음과같다. 타이머 (Timer) 가시작되는조건 -이미다른타이머가작동하지않고메시지요청을수신했을때 타이머 (Timer) 를정지하는조건 - 메시지요청실행을더이상기다리지않을때 타이머 (Timer) 를재시작하는조건 - 특정시점을기다리면서다른요청을실행할때 특정 view 내의 backup 노드 i의타이머가만료되면, view v+1 로이동하기위한 view change 가시작된다. View change 가시작되면, 노드는 checkpoint, view-change, new-view message 를제외한다른메시지를일절받지않으며, < VIEW CHANGE, v + 1, n, C, P, i > σ i 메시지를모든노드에게전송한다. 해당메시지의의미는다음과같다. v + 1: 새로운 view 번호 n: 노드 i가알고있는가장최신의 stable checkpoint s의순서번호 (sequence number) C: s가올바른 checkpoint 인지증명하는 2f+1 개의유효한체크포인트메시지 P: 노드 i의 prepared 메시지중에서 n 보다큰 sequence number 를가진요청메시지집합 42

43 < 그림 4.7. View Change & New-View> v+1 에서 primary p 가다른노드로부터 2f 개의유효한 view-change 메시지를 전달받으면, < NEW VIEW, v + 1, V, O > σ P 메시지를다른모든노드에게전송한다. 해당메시지의의미는다음과같다. v + 1: 새로운 view 번호 V : primary 가받은유효한 view-change 메시지 + primary 가보낸 viewchange 메시지 (v+1) O: pre-prepare 메시지집합 ( 피기백 (piggyback) 요청은제외 ) 앞서서보았듯이, 2f+1 개이상의노드가메시지를검증하면나머지노드를기다리지않기때문에일부노드는요청메시지 m 또는 stable checkpoint 가다른노드와정확히일치하지않을수있다. 따라서, view-change 가일어나서새롭게교체된 primary 가유효한작업을시행하려면 backup 노드들과메시지반영상태를 sync 할필요가있다. 이때필요한작업이유효한집합 O 의계산이다. Pre-prepare 메시지집합인 O 가만들어지는과정은다음과같다. 먼저, V 의메시지들중가장최근의 stable checkpoint 의순서번호 (sequence number) 를 min-s 라하고, V의 prepare 메시지들중가장높은순서번호 (sequence 43

44 number) 를 max-s 라한다. 모든 sequence number n 이 min-s< n < max-s 에대해, primary 는새로운 pre-prepare 메시지를만든다. 이경우두가지의경우를생각해볼 수있다. Case 1: V내의 P가 sequence number n 인메시지집합이적어도하나인경우, < PRE PREPARE, v + 1, n, d > σ p 메시지를생성한다. Case 2: 메시지집합이하나도없는경우, < PRE PREPARE, v + 1, n, d null > σ p 메시지를생성한다. 이제 Primary 는 O 의 pre-prepare 메시지를자신의 log 에붙이게되면, v+1 로진입하게 되어메시지를다시수신받게된다. Backup 노드들이 v+1 의 NEW-VIEW 메시지를 받아들이는조건은다음과같다. 서명이유효하다. 포함되어있는 view-change 메시지가유효하다. 집합 O 의계산이유효하다. 검증을완료한노드들은 NEW-VIEW 를받아들이고 normal-case operation 대로다시 진행하게된다. 44

45 5. Use Case: Tendermint PBFT 가어떤방식으로합의에도달하는지증명을통해알아보았다. 블록체인에서는 PBFT 를어떻게응용하여사용하는지대표적인코스모스 (Cosmos) 프로젝트의 텐더민트 (Tendermint) [19,20] 를통해알아보자. 텐더민트는코스모스네트워크 (Cosmos Network) 에서사용하는합의엔진으로써, 전통적인 PBFT 합의프로세스를블록체인에맞게적용한대표적인사례이다. PBFT 와 Tendermint 모두최대 1/3 개의비잔틴노드가존재하는상황에서도성공적으로합의에도달한다. 텐더민트의전체합의프로세스는 PBFT 와유사하지만약간의용어차이가존재함으로 알아보자. PBFT Primary Replica Pre-prepare phase Prepare phase Commit phase View change Tendermint Proposer Validator Propose step Prevote step Precommit step Round change < 표 5.1. Terminology of PBFT & Tendermint> 45

46 텐더민트투표프로세스 (Voting Process) 는 < 그림 5.1> 과같은방식으로이루어진다. < 그림 5.1.Tendermint voting process> 텐더민트는비잔틴결함을감내하기위해 3f+1 규칙에따라최소 4 명의검증인이필요하다. 각검증인은퍼블릭키를통해신원을확인하며, 모든제안과투표는각검증인의프라이빗키를통해서명이이루어지는데, 이때디지털서명은비대칭암호키쌍 (asymmetric cryptographic key-pair) 을사용한다. 이를통해서, 제안과투표의유효성을검증할수있다. 합의 (consensus) 는라운드 0 에서시작하며검증인리스트 L에서의첫검증인이첫번째블록제안자가된다. 라운드별결과는항상 commit 을하거나다음라운드로이동하는결정 (decision) 두경우로나뉜다. 여러번의라운드를통해네트워크가비동기이거나검증인에게문제가생기는경우에도합의에도달할수있는기회가제공한다. 여러번의라운드가발생할수있는상황은다음과같다. 네트워크가지연될때 지정된블록제안자가온라인상태가아닐때 46

47 지정된블록제안자가생성한블록이유효하지않을때 지정된블록제안자가생성한블록을제때전송하지않을때 제안된블록은유효하나검증인들이 pre-commit 단계에진입할때 2/3 이상의 prevote 를제때수신하지못할때 제안된블록도유효하고충분한숫자의검증인이 2/3 이상의 prevote 하였지만 2/3 이상의 pre-commit 을수신하지못했을때 이런문제를극복하기위해텐더민트는매라운드마다새로운블록제안자가선택된다. 블록제안자선정방식은 <5.1.4 Leader Selection Procedure> 에서좀더자세히 알아본다 5.1. Consensus 1. 제안 (Proposals): 각라운드마다정직한제안자는새블록을생성한다. 제안이제때도착하지못하면, 해당제안자의순번은건너띈다. 2. 투표 (Votes): 최적의비잔틴결함내성을보장하기위해투표는 pre-vote 와 precommit 두단계를거친다. 동일한라운드 (round) 에서 2/3 이상의지분을가진검증인 (validator) 이 pre-commit 하면블록은커밋 (commit) 된다. 3. 잠금 (Locks): 텐더민트는두명의검증인이동일한높이에서서로다른블록을커밋하지못하도록잠금매커니즘 (Locking mechanism) 을활용한다. 잠금매커니즘은동일한높이에서이전 pre-votes 와 pre-commits 에따라서, 다음라운드에서검증인이 pre-vote 또는 pre-commit 할지결정하는방식이다 Proposal 한라운드는 Propose>Prevote>Precommit> 순서로진행되며, 동일한높이의블록제안 (proposal) 이매라운드의시작이다. 라운드별제안자는 Mempool( 블록이포함되기전의트랜잭션저장소 ) 에서최근수신된트랜잭션을가져와서, 블록을생성하고, 서명된 47

48 제안자메시지 (ProposalMsg) 를전송한다. ( 만약블록제안자가비잔틴이라면, 다른검증인에게다른제안을전송하게된다.) 결정론적인라운드로빈 (round robin) 방식을통해블록제안자순서가정해지기때문에각라운드별단한명의검증인만이유효하다. 만약제안이낮은숫자의라운드에서수신되거나비잔틴제안자에서온다면, 해당제안은거부된다. 텐더민트는투표와잠금매커니즘을통해 safety 를확보하며, 제안자순환을통해 liveness 를유지한다. 따라서, 한명의제안자가트랜잭션을제때처리하지않으면다른검증인이뒤이어서처리한다 Votes 투표는두단계 (Pre-vote, Pre-commit) 를거쳐서진행되며, 성공적으로 2/3 이상의검증인 (stake, 지분 ) 이동일라운드의같은높이의블록을 pre-commit 하면해당블록은성공적으로 commit 된다. 비잔틴검증인이존재할수있는비동기환경에서는단일투표단계는 safety 를충분히보장하지못한다. 단일투표단계에서는검증인들은제안이무엇인지서로알수있다. 그러나비잔틴결함을극복하기위해서는, 검증인은다른검증인들이해당제안에대해알고있는사실들을서로에게알려줘야한다. 쉽게말해서, 두번째투표단계를통해서검증인들은첫번째투표결과를충분히알수있어악의적인검증인의행동을알아차릴수있다. Pre-vote 에서의블록투표는블록을커밋하기위한준비단계이다. Pre-vote 에서 nil 에투표는다음라운드의이동을의미한다. 즉, 2/3 이상의검증인이제안을 prevote 하게되면올바른방향으로진행됨을알수있다. 한라운드에서하나의블록이 2/3 이상의 pre-vote 가이루어졌으면이를 polka 라부르며, 반대로 nil 에투표가진행되었다면 nil-polka 라한다. ( 현재는자주언급되는개념은아니지만해당글에서는 polka 의미를사용한다.) 만약검증인이 ProposalTimeout내에유효한제안을수신받지못하면, pre-vote 에는 nil을선택하게된다. 성공적으로검증인이 polka 를받으면, 해당블록의 pre-commit 투표를서명하고전파하는단계에돌입한다. 그러나종종네트워크비동기성때문에, 특정검증인은 polka 를받지못하는상황이있을수있다. 이경우검증인은해당블록을 pre- 48

49 commit 으로서명할수없기에 pre-commit 투표는 nil 에서명한다. 바꿔말하면, polka 를받지못한검증인이 pre-commit 을서명하면, 이는비잔틴행위이다. 이제검증인이한개블록의 2/3 이상의 pre-commit 을받으면, 해당블록은커밋 (commit) 되고, 다음높이에서새로운라운드 0 이시작된다. 마찬가지로, 검증인이 2/3 이상의 pre-commit nil 을수신하면다시블록을만들기위해다음라운드로이동한다 Locks 동일한블록높이에서에서서로다른두개의라운드및블록이만들어지는상황을피하기위해텐더민트는잠금매커니즘 (Locking mechanism) 을활용한다. 2/3 이상의 prevote 를의미하는 polka 를통해 pre-commit 이정당화된다. 잠금규칙에는 Prevotethe-Lock 과 Unlock-on-Polka 총 2 가지가있다. Prevote-the-Lock : 특정블록에잠긴검증인들은반드시 pre-vote 해야하며, 제안자인경우블록을반드시제안해야한다. 이를통해검증인들이첫라운드에서동일한높이에서한개의블록에대해 pre-commit 하고다음라운드에서다른블록의 polka 를외치는것을막기위함이다. (Safety 와연관된사항 ) Unlock-on-Polka: 검증인들은자신들이잠금된라운드보다높은라운드에서 polka 가이루어졌다면, 잠금을해제하고 (unlock) 새로운블록에서 precommit 을한다. 이를통해검증인들이어디한곳에갇혀합의에도달하지못하는상황을막는다. 쉽게말해, 시스템이멈추지않고계속동작하도록한다. (Liveness 와연관된사항 ) 49

50 검증인이매블록높이에서 round-1 에 nil 을투표해서잠금됬을경우, 새로운블록높이에서 polka 를보기전까지 pre-commit 할수없음을 Unlock-on-Polka 를통해알수있다. 잠금매커니즘의직관적인이해를돕기위해검증인예시를통해알아보자. A, B, C, D 총 4 명의검증인이있으며특정라운드 R 에서블록 X 에대한제안을가정한다. 블록 X 의 polka 가이루어졌지만 A 는확인하지못해 pre-commit nil 을한다. ( 물론나머지 B,C,D 검증인은 pre-commit 한상태 ) 이제비동기네트워크로단지지연이발생한상황에서모든검증인의 pre-commit 을확인한사람은 D 이며, B 와 C 는 D 의 pre-commit 을보지못했다고가정해보자. (B 와 C 는서로 pre-commit 한사실과 A 의 pre-commit nil 을확인한상태 ) D 는 2/3 가블록을 pre-commit 한사실을확인했음으로블록을커밋 (commit) 하지만나머지 B 와 C 는합의에필요한정족수를채우지못했음으로 R+1 로이동한다. 검증인 D 는이미블록 X 에커밋을했기때문에 R+1 라운드에는새로운제안자가블록 Y 를제안하고투표가진행될경우, safety 가훼손된다. ( 누구도비잔틴이아닌상황 ) 검증인 D 의경우나머지검증인 B 와 C 의 pre-commit 을보고블록 X 를커밋했기때문에, 잠금매커니즘을통해이미 pre-commit 한검증인 D 는블록 X 를유지한다. 특정라운드에 2/3 이상의 pre-commit 된블록이있을경우, 해당블록은잠금된다는사실을잊지말자. 즉, 더높은라운드에서새로운블록에유효한 polka 를만들어낼수없다. 이를 Prevote-the-Lock 이라한다. 그러나 liveness 를희생하지않기위해서는잠금을해제하는과정이필요하다. 특정라운드에검증인 A 와 B 가블록 X 에 pre-commit 했고검증인 C 와 D 가 pre-commit nil 을해서투표가양분된상황이라고가정해보자. 이경우모든검증인이다음라운드로이동하고 C 와 D 가 pre-vote 하기위한블록 Y 가제안된다. (A 와 B 는이미블록 X 에 pre-commit 했음으로잠금된상태 ) 이제검증인 A 가비잔틴노드여서, 블록 Y (block X 에잠금되었지만 ) 에또 pre-vote 를해서 polka 가만들어졌다고가정해보자. 이제, 검증인 B 는 polka 를보지못한상태여서 pre-commit nil 을한상황이지만검증인 C 와 D 는블록 Y 에 pre-commit 한상황이다. ( 악의적인검증인 A 는 off-line 으로전환한상태 ) 비잔틴합의에도달하지못하였음으로다음라운드로이동한다. 검증인 B 는여전히 50

51 블록 X 에잠금되어있고, 검증인 C 와 D 는블록 Y 에잠금되어있다. 비잔틴검증인인 A 는 offline 상태이기때문에절대합의 (polka) 에도달하지못한다. 이런딜레마를해결하기위해검증인 B( 블록 X 에잠금된상태 ) 가블록 Y 의 polka 를확인했다면, 잠금을해제하고블록 Y 에 pre-commit 할수있다. 이것이 Unlock-on-Polka가필요한이유다 Leader Selection Procedure <21> 앞서서소개한블록제안자선택절차에대해서알아본다. 텐더민트에서는각제안자는 결정론적 6 으로선택이이루어지며선택의횟수는아톰의총본딩물량 ( 자가 물량 + 위임자로부터받은물량 ) 에좌우된다. 예를들어, 모든검증인의아톰본딩총합이 100 아톰이라고가정해보자. 이때 A 라는검증인의총본딩물량이 10 아톰이라면 10% 확률로다음블록제안자가된다. 텐더민트검증인은라운드로빈방식으로블록제안자로선택된다. 라운드로빈방식이란리스트의최상위순번에서최하위순번으로차례대로순번이돌아간다는뜻이다. 마지막순번이끝나면다시제일위상위순번에게순서가돌아간다. 텐더민트제안자선택에서이순번을정하는핵심요소가바로투표력 (Voting power) 이다. 첫블록라운드가시작되면검증인의총투표력 ( 자가물량 + 위임자로부터스테이킹받은물량 ) 과아쿰 (Accum) 이 0 인상태서시작된다. 제안자선택에서는투표력을 Accum 으로표시하여이해를돕고있다. 각라운드가진행될때마다 IncrementAccum 기능을통해검증인의 Accum 이자신의투표력만큼상승한다. 이때, 각라운드별투표력이가장큰검증인이제안자로선택된다. 6 결정론적알고리즘 (deterministic algorithm) 은예측한그대로동작하는알고리즘이다. 어떤특정한입력이들어오면언제나 똑같은과정을거쳐서언제나똑같은결과를내놓는다. 51

52 검증인제안자선택방식은다음검증인 A,B,C,D 예시를통해좀더자세히 확인해보자. 먼저, < 표 5.2> 처럼, 검증인 A,B,C,D 의투표력이각각 10,20,30,40 으로총 투표력이 100 이라고가정해보자. < 표 5.2. Tendermint Proposer Selection Procedure> 첫라운드가시작되고각검증인의 Accum 은자신의투표력에비례하여 < 표 5.3> 과같이 상승하였다. < 표 5.3. Tendermint Proposer Selection Procedure> D 의 Accum 이가장높기때문에첫라운드는블록제안자는 D 가된다. 첫라운드 제안자가된 D 의 Accum 은총투표력 (100) 만큼떨어져서 < 표 5.4> 과같은수치가된다. 52

53 < 표 5.4. Tendermint Proposer Selection Procedure> 두번째라운드가시작되고각검증인의 Accum 은자신의투표력만큼상승한다. < 표 5.5. Tendermint Proposer Selection Procedure> 두번째라운드제안자는 Accum 이가장높은 C(60) 가된다. 제안자가된 C 의 Accum 은 총투표력 (100) 만큼떨어져서 < 표 5.6> 과같은수치가된다. < 표 5.6. Tendermint Proposer Selection Procedure> 53

54 세번째라운드가시작되고각검증인의 Accum 은자신의투표력만큼다시상승한다. < 표 5.7. Tendermint Proposer Selection Procedure> 세번째라운드의 B 가가장큰 60 Accum 을가지게되어블록제안자가된다. 제안자가 된 B 의 Accum 은총투표력 (100) 만큼떨어져서 < 표 5.8> 과같은수치가된다. < 표 5.8. Tendermint Proposer Selection Procedure> 네번째라운드가시작되고각검증인의 Accum 은자신의투표력만큼상승한다. < 표 5.9. Tendermint Proposer Selection Procedure> 54

55 네번째라운드의 D 가가장큰 Accum 을가지게되어블록제안자가된다. 제안자가된 D 의 Accum 은총투표력 (100) 만큼떨어져서 < 표 5.10.> 과같은수치가된다. < 표 Tendermint Proposer Selection Procedure> 지금까지텐더민트의 BFT+BPOS 컨센서스알고리즘을알아보았다. Internet of Blockchains 으로디자인된퍼블릭블록체인코스모스네트워크는이개선된합의알고리즘으로점점더구체화되고있으며, 다년간의개발의결실이얼마남지않은코스모스메인넷으로꽃피우게될것이다. 55

56 5.2. Use Case: Tendermint test with 4 nodes [22] 텐더민트의합의프로세스에이어이번에는실제로텐더민트가어떻게작동하는지 도커 (Docker) 를통해멀티노드를구성하여 PBFT 합의의작동테스트를진행해보았다. 테스트순서 docker-compose 를이용하여 4 개 node 의 tendermint core 를구동 각 tendermint core 에구동될 ABCI 서비스구동 (key & value 저장 ) 테스트 transaction 을발생및 Consensus (BPOS+PBFT) 의 +2/3 합의과정을확인 docker-compose 는개별 docker container 들을하나의네트워크로묶어주고구동, 정지및상태모니터링등을관리해주는도구이다. 테스트노드구성도 < 그림 5.2. docker-compose 4-nodes 구성 > 56

57 텐더민트검증자 (Validator) 는라운드로빈 (Round Robin) 방식으로블록제안자 (Proposer) 를선택하며이때, Voting Power 를기준으로순서가정해진다는사실을 앞서서확인하였다. ( 여기에서는각노드의 voting power 를동일하게 10 으로지정하였다 ) 구동및확인 1. docker-compose 로노드구동하기 < 그림 5.3. Docker-Compose 로노드구성 > 2. docker-compose node 인스턴스확인 57

58 < 그림 5.4. Docker-compose 로노드인스턴스확인 > 텐더민트의 Voting Process 확인 58

59 < 그림 5.5. 텐더민트의 Voting Process > 트랜잭션발생및블록생성확인순서 1. 트랜잭션발생 2. New Round 의 Proposer 선택 3. Proposer 의 Validation 과정 4. 생성된블록확인 1. 트랜잭션발생 key:value 값을블록에저장하는 kvstore abci 서비스로트랜잭션을발생시킨다. $ curl -s 'localhost:46657/broadcast_tx_commit?tx="abcd"' 2.New Round 의 Proposer 선택 텐더민트노드에서 validation 을위한 Proposer 선택은 Validation Power 를 기반으로하는 Round-Robin 방식으로선택된다. 59

60 < 그림 5.6. New Round 에서 Proposer 선택 > 각 node 의로그를확인해보면 node3 이현재발생한트랜잭션을처리하기위한블록 Proposer 로선택되었다는사실을 < 그림 5.6> 을통해확인할수있다. enterpropose: Our turn to propose 메시지확인 3.Proposer 의 Validation 과정다음으로, node3 의 Voting 과정을로그를통해서확인해보자. 다음은 99 Height 의새로운블록이생성되고 Voting validation 이완료되어새로운블록이생성되는과정의로그이다. 60

61 < 그림 5.7. Proposer 의 Validation 과정 > < 그림 5.7> 의로그를 Voting 순서에맞도록나누어서 < 텐더민트 Voting Process > 7 가지의과정으로확인해보자. < 그림 5.8. Consensus Process> 99 번으로 NewRound 가시작된다. 61

62 확인해보면다음과같이확인이된다. node3 이 Proposer 로선택되었다. 이때, Proposer node 의 ID 를 NODE1 : 7DF7317A9FB BDE9B8B10BA EB NODE2 : 35D F499AE56C BD00C6107 NODE3 : 645AB334CEE4FA0B1CAA45363D8A3E6F349D010E <-현재블록의 Validator> NODE4 : 500FB1138FC7FC1CC241ED6815C6EF923E < 그림 5.8. 현재블록의 Validator> < 그림 5.9. Added to Prevote> Added to prevote 로전체 4 개 Validator 중순차적으로 node3, node1, node2 가 검증자 (Validator) 로서 Prevote 를했음을알수있다. 62

63 전체노드의 +2/3 이 prevote 되길기다리다가, +2/3 를충족하는 순간 prevoted proposal 이 block 이 locking 된다. locking 이후에들어온 prevote 도들어오지만이미 +2/3 은충족된다. < 그림 Locking 이후 prevote 충족 > 다음단계로 Added to precommit 메시지가 조건을충족하게된다. 순차적으로들어와서 +2/3 precommit 의 < 그림 precommit 충족 > 63

64 +2/3 precommit 의조건이완료되면, 최종으로해당블록은 commit 된다. < 그림 5.12.> 의로그를통해최종생성된블록정보를확인할수있다. < 그림 로그최종생성된블록정보 > 64

65 생성된블록과트랜잭션정보를확인해보면 < 그림 5.13.> 과같이체크해볼수있다. < 그림 생성된블록과트랜잭션정보확인 > 텐더민트를실제로도커를이용해 4 개의노드로구성하여테스트를진행하였다. 이를통해실제로텐더민트가어떻게합의과정을이루는지알수있었다. 텐더민트의경우 2/3+1 개의합의가각스텝에서모여야하며어떤경우에도서로다른두블록이동시에생성되지않는다. 그러나이러한전송메시지는시간안에도달하는것을보장못하는비동기네트워크에서는사용되기어려울수있다. 앞서서언급하였듯이, 비동기시스템모델의경우메시지가전송되는것을보장하는상한시간이없기때문에메시지가전달실패또는거의무한히지연될수있다. 반대로시간안에메시지를보장하는동기성시스템모델을분산시스템에서사용하는것도무리가있다. 따라서텐더민트에서는동기성시스템과비동기시스템의특성을번갈아가면서 65

66 사용하는데, 이를부분동기성 (Partial Synchrony) 이라한다. 부분동기성시스템에서는정해진시간 (fixed time) 안에메시지가도착하는것은보장하지만얼마나걸리는지에대한시간 (unknown amount of time) 은알수없다. 다시말해, 네트워크안에서정해놓은시간안에는도착하지만그정해진시간을노드들은파악하지못함을이야기한다. 이처럼분산시스템혹은블록체인과같은 P2P 컴퓨팅방식을합의하는과정에서어려움을많이겪는다. 66

67 6. Conclusion 본리서치를통해분산시스템에서의합의과정은매우제한된조건에서만족함을알수있었다. 이는블록체인에서도완벽하게해결을하지못한다. 그러나최초에나온비트코인의작업증명방식은 FLP Impossibility 를우회적으로해결하기위해 Liveness over Safety 를선택하며, BFT 기반의텐더민트는 Safety over Liveness 를선택한다. 이더리움 (Ethereum) 의경우현재작업증명방식 (Proof-of Work) 을통해 Liveness 를지분증명방식 (Proof of Stake) 의형태인 Beacon chain 을통해 Safety 까지보장하려는 Casper the Friendly Finality Gadget (Casper FFG) 을목표로개발을하고있다. (Casper FFG 는토큰이코노미분과자료를통해경제학적인모델설계까지고려하고있음을확인할수있다.) 현재블록체인에서는수많은합의알고리즘방식이등장하고있다. 그러나흔히들혼동되는것은합의를하는과정과합의를가지는주체의차이이다. 가령 BFT 계열의합의알고리즘은이더리움, EOS, 텐더민트등이있다. 이들이합의하는과정을 BFT 계열로한다면이를실제로처리하는이들은우리가알고있는 PoS, DPoS, BPoS 등이다. 합의과정과주체를혼동하지않도록주의가필요하다. 앞선몇가지의논문을가지고분석을진행하였지만, 본리서치만으로합의하는과정을모두정리했다고볼수없다. 추후리서치를통해 Paxos 혹은하이퍼랫져 (Hyperledger) 등에서사용하는 Raft 등에대한리서치를통해분산시스템에서의합의과정을더욱심도있게연구할계획이다. 67

68 APPENDIX CAP and PACELC: The Classifying Criterion for Distributed Computer System 1. Introduction of CAP theorem 기술리서치분과는분산시스템내에서합의알고리즘에대한리서치를수행하였다. 이과정에서 CAP Theorem 을이용한 Private Blockchain 의합의알고리즘을분류하려는시도가있음을발견하였다. 해당문서는 Proof-of-Authority(PoA) 와 PBFT 를 CAP Theorem 을기준으로유형화하는논문 (PBFT vs proof-of-authority: applying the CAP theorem to permissioned blockchain: University of Southampton) [24] 이다. PBFT 리서치의일환으로해당논문에대한리서치를진행하던중, 많은이들이 CAP 과 FLP 의개념에대한혼동이있음을발견할수있었다. 해당이론은블록체인의근간이되는분산컴퓨팅의기초에직결되는아이디어이므로본분과에서는깊은관심을가지고리서치를진행하였다. 그러나, 이러한논문은거시적합의알고리즘자체에집중하고있는본연구보고서에적합하지않다고보았다. 미시적통신이론인 CAP 과 PACELC 을자세히설명하는것은본연구보고서의전반적인흐름과다르다고판단하였다. 그러나 CAP 과 PACELC [28] 이론은블록체인의근간이되는분산컴퓨팅분야에서비중있게다루어진다는점, 비중있게다루어지는이론임에도불구하고학계에서 CAP 이론에대한해석의여지가모두다르다는점, 국내에 PACELC 이론이자세히소개된적이없다는점을고려하여 Appendix( 부록 ) 에별도로서술하기로결정하였다. Appendix 에서는미시적통신의가부여부를판단하는 CAP 이론에대해알아보고자한다. 이후, CAP 의한계점을지적한뒤이를보완하는새로운개념인 PACELC 를설명하고자한다. PACELC 에기초해현존하는합의알고리즘을분류할것이다. 이를통하여다양한합의알고리즘이어떠한부분을강조하고포기하는지에대하여알아보고 FLP 와분명히다른것임을알아본다.. 68

69 2. CAP 이론소개 [26,27,28, 33, 35] 분산컴퓨팅시스템에서네트워크의원활한운영을촉진하기란어려운법이다. 컴퓨터과학자인에릭브루어 (Eric Brewer) 는 [25,26] 2000 년 7 월 19 일 PODC (Symposium on Principles of Distributed Computing) 에서 CAP 이론을발표하였다. CAP 이론은분산데이터베이스시스템을바탕으로, 네트워크분할허용 (Network Partition) 이이루어지는경우에일관성 (Consistency), 가용성 (Availability) 을동시에만족하는것은불가능하며이들사이에양자택일해야한다는이론이다. CAP 이론에따르면모든분산네트워크는일관성을지키는상황 (Consistency- Partition Tolerance: CP) 과가용성을지키는상황 (Availability-Partition Tolerance: AP) 으로나눌수있다고보았다. 모든노드는데이터를업데이트하는과정에서다른작업이불가능하다. 따라서업데이트가진행되는시간에는일시적으로데이터베이스에접속할수없게되어서비스가중지된다. 모든노드에정보를업데이트하여일관성 (Consistency) 을지키되가용성 (Availability) 을포기할것인가? 혹은일부노드에만정보를업데이트하여가용성 (Availability) 을지키되일관성 (Consistency) 를포기할것인가? 에대한문제이다. 각용어에대한의미에대해자세하게파악해보자. 2.1 네트워크분할허용 (Network Partition) - 노드간의통신이실질적으로어려운상태에도달하여네트워크가사실상 분할 (Partition) 되었을때도네트워크가정상적으로작동할수있는경우를의미한다. 네트워크분할허용을전제하는네트워크는노드간의통신이완전히불가능하거나비동기성네트워크 (asynchronous network) 에서메시지가유실될수있고, 현실성이떨어지는시간에메시지가전달될수있다. 이러한상황에서도최종사용자 (End- User) 입장에서는문제없이네트워크를이용할수있어야한다. 다시말해, 최종사용자가 69

70 하나의분산네트워크가여러가지의노드로나뉘었다는사실을인지하지못하도록하여야 한다. 분산네트워크가단일네트워크처럼보여야유의미하다고말할수있다. 모든분산네트워크는네트워크분할허용성 (Network Partition, P) 을보유할수밖에없다. 현실적으로노드간의네트워크통신은다양한환경적조건에따라서불안정해질수있기때문이다. 또한, 모든분산네트워크는비동기성네트워크 (asynchronous network) 상황에처해질가능성이존재한다. 분산네트워크는노드간의통신이불안정하더라도네트워크가정상적으로동작할수있도록한다는것에의의가있다. 따라서분산형네트워크에서분할허용성을가정하지않는다면사실상의미가없어지게된다. 즉, CAP 이론에서는네트워크분할허용 (P) 을기본으로전제한다. 2.2 일관성 (Consistency) - 모든요청은최신데이터또는에러를응답받는다. 일관성 (Consistency, C) 은최신데이터의전파속도및업데이트노드양에따라서그 강도가다르게분류된다. 그러나 CAP 이론이초창기에소개될때어느강도의일관성을 70

71 의미하는지에대해서실질적으로명시된바가없었다. 애시당초 CAP 이론은 Brewer 가 제시한가설에불과하였으므로구체적인근거를제시하지않았다. CAP 이론을추후에 Lynch 가증명할때 Linearizability(Atomic/Strong Consistency) 를일관성의기준으로설정하였다. 이외에도증명을위하여읽기와쓰기권한만을싱글스레드로순차적으로처리하는 Simple Service 를가정하였다. Linearizability 는 Operation A 가성공적으로종료된이후에 Operation B 가시작될때, Operation B 는 Operation A 의최종결과치를모든시스템에서하나의동일한상태 (the same state) 로같은논리적시간 (logical time) 에업데이트되어관찰할수있어야한다는기준이다. 즉, 한노드에서특정데이터의처리가완료되었을때다른노드가동시다발적으로업데이트된정보에접근할수있어야한다는것이다. 따라서 Lineraizability 는매우강력한형태의일관성을요구한다. 쉬운이해를담보하기위하여 Not Linearizable 한시스템을시나리오로 이야기해보자. 철수는근처펍에가서 2018 월드컵조별리그, 한국대독일의경기를보고있다. 영희는한국이이기지못할것으로생각하고, 학교에서시험공부를하고있던찰나여서경기를보지못하고있다. 경기가끝나고한국이 2:0 으로이겼다. 철수는감격한나머지포털사이트에접속해서경기결과를재확인했다. 철수는영희에게카카오톡으로메시지를보내경기결과를알려주었다. 한국이무려 2:0 으로승리했다는사실을듣고영희는포털사이트에접속했다. 그러나영희가접속한포털사이트에는여전히게임이진행되고있다라는표시가뜬다. 철수는최신업데이트가된정보를받을수있었다. 하지만영희는받지못했다. 철수와연결된서버노드는월드컵경기가끝나고결과를확인했다. 그러나영희와연결된서버노드는새로운결과를받지못했다. 즉, 가용성을우선시하고 Linearizable 한일관성을포기한것이다. 2.3 가용성 (Availability) - 정상적으로이루어진모든요청은정상적으로작동하고있는모든노드로부터응답을받을 수있다. 71

72 일반적으로우리가높은가용성 (High Availability) 라고일컫는경우는다음과같다. 우선높은가용성은시스템자체가모든요청에대한정상적인응답을할수있다는것을전제한다. 따라서모든요청은정상적으로작동하고있는노드중일부만응답을받을수있어도충분하다. 하나의정상노드만응답해도시스템은가용이가능하다고 (Available) 말할수있기때문이다. 또한높은가용성을가정하는데이터베이스는현실적인응답시간 (realistic response time) 을고려한다. 그러나 CAP 이론에서의미하는가용성은높은가용성보다훨씬높은난이도를요구한다. 높은가용성을보장하는서버는일반적으로 CAP 이론이주장하는가용성에해당하지않는다. CAP 이론에서주장하는가용성은다음과같다. 우선오류가없는노드가발송한메시지는오류가없는모든노드로부터응답을받을수있어야한다. 데이터저장소에대한모든동작이오류가없는모든노드로부터성공적으로리턴을받아야한다. 또한가지주목해야할점은 CAP 이론의가용성은응답시간에대한제한을걸어두지않는다 (unbounded response time) 는사실이다. 다시말하면응답시간 (Latency) 에대한고려가부재하다는것이다. 분산형네트워크는기본적으로응답시간이실사용에있어서중요한고려요소 (consideration) 이될수밖에없다. 기본적으로분산형네트워크는단일네트워크보다속도가느리다. 그이유는모든또는일부데이터를복제하여저장하고자하기때문에정보의전파과정에서일정한시간이필수적으로요구되기때문이다. 하나의데이터를복제하여저장해야하는노드의수가많아질수록속도가느려진다. 그렇다고해서속도가치명적으로느린네트워크는실제사용하기에큰장애가있을것이다. 가용성은응답시간과깊은관련이있음에도 CAP 이론에서는이를고려하지않는다는단점이있다. CAP 이론의가용성에따르면아무리늦게보내도받기만하면충분하다. 특정데이터를 20 시간뒤에받는다면 CAP 의가용성에는부합할지모르나실제사용시에는부적합하다고보아야한다. CAP 이론이이야기하는네트워크분할용이성 (Network Partition) 에따르면노드간의통신이완전히불가능한경우도상정한다. 이러한경우, 완전한 CP (Consistency- 72

73 Partition Tolerance) 시스템은존재할수없다. 노드간의통신이끊어진상황에서데이터를업데이트하는것이불가능하기때문이다. 분산네트워크의기본적인특징을설명하는 ACID 이론에따르면, 모든네트워크는고립성 (Isolated) 이존재한다. 트랜잭션이실행이되는중에생성하는연산의중간결과는다른트랜잭션이접근할수없다는것이다. 다시말하면, 트랜잭션을처리할때다른트랜잭션이연산작업중간에끼어들지못하는것이다. 트랜잭션실행내역이연속적이어야하기때문이다. 노드간의네트워크가물리적으로는끊어지지않았으나원활한통신을보장할수없는 경우에는다음과같은선택지가나타날수있다. Choosing Availability over Consistency (AP 시스템 ) AP 시스템은가용성을우선시하므로모든 request 에응답하게될것이다. 또한 stale reads 를허용하게될가능성이높고서로충돌되는데이터가쓰여질가능성이높다. 완벽한가용성을지니는시스템은정상적인모든노드가어떤상황에서라도응답할수있어야한다. 하나의노드가네트워크파티션으로고립되었을때고립된노드의데이터는일관성이깨지므로쓸모가없어진다. 그러나정상적으로응답을하면완벽한가용성을 73

74 지닌다. 이러한사실을모르는사용자는문제를인지하지못하고요청을계속해서보낼 것이다. Choosing Consistency over Availability (CP 시스템 ) CP 시스템은완벽한일관성을갖는분산시스템으로하나의트랜잭션이다른모든노드에완전히복제된후에야그다음작업으로넘어갈수있다. 네트워크가완전히분리되어노드간의통신이불가능한경우가용성을잃게된다. 노드간의통신이가능한현실적인경우에는성능의희생을필요로한다. 하나의노드라도문제가생기면트랜잭션은실패한다. 노드가늘어날수록지연시간은길어질수밖에없다. 일부 request 는경우에따라정상적인모든노드가 refuse 할수있다. 시스템전체를일시적으로정지시킬수도있고 (single-node data store clients) 또는아예쓰기를거부할수도있고 (Two-Phase Commit) 또는마스터노드만파티션부분 (partition component) 에쓰기를할수도있다. 예시로는 Membase 가있다. 3. CAP 이론의한계 [27,30,31, 33] CAP 이론은분산네트워크시스템에서새로운아이디어를제시했다는점에서의미가있으나엄밀하지못한이론이라는점에서실제분석에적용하기에는두가지의문제점이존재한다. 3.1 편협한정의로인한상대적인관점의부족 CAP 이론의가장큰문제점은일관성과가용성이배타적이라고전제한다는것이다. 일관성과가용성은상호배치되는속성인것은사실이다. 그러나일관성과가용성이무조건양자택일의관계라고주장하기에는어폐가있는것이사실이다. 완벽한 CP 시스템과 AP 시스템은존재하지않고필요하지도않다. 모든데이터베이스는상대적인관점을바탕으로설계된다. 가용성을중시하면서일관성을일부포기하거나, 일관성을중시하면서가용성을일부포기하는것이다. 그러나 CAP 이론은일관성과가용성중하나만을선택하라고강요한다. 74

75 이러한양자택일의속성은 CAP 이론이증명과정에서채택하는일관성과가용성의정의가편협하다는것에비롯된다. 한쪽이업데이트되면다른쪽도동시다발적으로업데이트되어야하며, 정상적인모든노드가모든요청을 100% 응답할수있어야한다는가정은실제세계에서이루어질수없는수준의가정이다. 실제설계에서채택되는상대적인관점을고려할수없다는것이 CAP 이론의가장큰문제점이다. 3.2 Network 에대한적용범위협소 CAP 이론에따르면네트워크분할용인성은노드간의통신이완전히불가능한경우를위주로고려한다. 다시말해서, 물리적인이유로인하여노드간의통신이불가능하여상호간의업데이트가전혀일어날수없는경우를위주로설명한다. 물론굳이물리적인이유가아니더라도소프트웨어적인문제로인하여유의미한시간에노드간데이터가정상적으로 ( 실질적으로 ) 통신될수없는경우까지포괄한다. 실제로작동하는데이터베이스에서완전히또는실질적으로통신이불가능한경우를찾기는쉽지않다. 모든데이터베이스는일반적으로노드끼리서로유의미한시간에데이터를주고받을수있는환경에있다. 이러한경우에는각노드간의정보업데이트가원활하게이루어질수있다. 이를부분동기성네트워크 (Partial Synchronous Network) 라고지칭하겠다. CAP 이론은부분동기성네트워크의경우를고려하지않는다. 네트워크분할용이성이포괄하는범위가지나치게협소하여노드간의통신이정상적으로이루어지는부분동기성네트워크의경우를무시하였기때문이다. 해당내용은가용성 (Availability) 부분에서이미자세하게소개하였다. 따라서실질적으로 CAP 이론을적용할수있는네트워크또는데이터베이스는많지않다. Single-reader replication 의사례를보면다음과같다. 이는하나의 single leader 를 replicated database 에쓰기작업을할수있는일반적인경우이다. 이러한설정에서 client 가 leader 로부터 partition 되는경우에해당데이터베이스는전혀사용가지가없게된다. 따라서엄밀한의미에서 CAP-available 하지않다는문제점이있다. 75

76 예를들어서, 새로운 data 가나왔는데제대로된응답을해주지못하기때문이다. 따라서 CA 시스템이아니다. 그렇다면이경우가 CP 시스템이라고할수있을까? 그렇지않다. client 가읽기작업을한다는것은일반적으로비동기성 (asynchronous) 을전제한다. 따라서클라이언트가읽기작업을하는순간에쓰기작업을수행하는리더보다뒤쳐질가능성이있다. 그러므로완전한 Lineraizability 를충족하는일관성이있다고보기어렵다. 편협한정의로인하여일관성과가용성이대치되지않는것이다. 4. PACELC Theorem [28, 29,30,34] [ 사진출처 : CAP 이론은분산시스템의특징을명료하게드러내준다. 고민할만한지점을던져준것은유의미한일이다. 그러나실제적용하기에는편협한정의로인하여여러이유로무리가있는것이사실이다. 일관성과가용성은상충관계에있지만절대적인것은아니다라는것이다. 다소약한가용성을지니지만상대적으로강한일관성을지닐수있고, 다소약한일관성을지니지만상대적으로강한가용성을지닐수있다. 가용성과일관성은서로대치되지만궁극적으로일치되는것을목표로하기때문에상대적이라는것을알수있다. 다른한가지는네트워크노드간의연결이원활한경우이다. 노드간의통신이원활한경우에는 CAP 이론이정의하는네트워크분할용이성 (Network Partition) 의정의에해당하지않는다. 결론적으로이러한경우는해석하지못한다. 분산네트워크에서는특정 76

77 노드가추후오류가나서임의의데이터에접근하지못하는경우를배제하기위하여다른노드에도데이터를복사하여저장한다. 이러한경우에도분산네트워크가지니는대칭적특성이드러난다. 이는앞서설명한것으로, 속도 (latency) 와일관성 (consistency) 간의문제이다. 최대한많은노드에데이터를하나하나전파할수록일관성은높아지지만속도는떨어지게된다. 네트워크에전파되는데이터의가용성역시 ACID 이론이설명하는고립성 (Isolated) 특징에따라낮아진다. 이러한 CAP 이론의한계를극복하기위하여나온것이바로 PACELC 이론이다. PACELC ( 파셀크라고읽는다 ) 는 CAP 의한계점을보완하기위하여등장한분류방법이다. PACELC 이론은네트워크노드간의통신이불가능한상황과가능한상황을나누어서판단할수있도록한다. 만일불가능한상황에는 CAP 이론의축을따른다. 노드통신이가능한경우에는속도와일관성을배치되는축으로놓는다. 또한, Latency 와 Availability (Partition 이없을경우 ) 및 Consistency 와 Availability (Partition 이있을경우 ) 에대해서양자택일을강요하기보다는하나의스펙트럼으로바라볼수있도록하는관점을제공한다. PACELC 에따라네트워크의유형을구분하려면선제적으로노드간의정상적통신이가능한상태인지를확인해야한다. 분산시스템에서노드끼리정보를교환할때타임아웃 (time-out) 이발생하는모든경우를통신의실패라고분류한다. 분산시스템에서정상적인통신이원천적으로불가능한경우를가정하는것을 Partition 되어있다고표현한다. 만약정상적인통신이가능하다는전제가있다면네트워크에 Partition 이일어나지않았다고표현할수있다. 77

78 PACELC 이론은기존의 CAP 이론이주창하는축에파란색축을하나더두었다. 이는지연시간과일관성을배치되는축으로두는형태이다. 아래쪽에위치할수록지연시간이짧아지며, 위쪽에위치할수록지연시간은길어지고일관성은높아진다. 네트워크노드간의통신이원활한상황에서일관성에치우칠수록더많은데이터를복제하여전파해야하기때문에지연시간이그만큼길어질수밖에없다. PACELC 이론은네트워크장애상황과원활상황에서시스템이어떻게작동하는지에따라시스템을 PC/EC, PC/EL, PA/EC, PA/EL 로나눈다. Siddhartra Reddy 에의하면, MySQL 은마스터-슬레이브로구성된경우 PA/EL 가기본적이고경우에따라 PA/EC 로분류될수있다. 기본값은마스터 (master) 가트랜잭션을발생시키면슬레이브 (slave) 에비동기적으로데이터를복제한다 (asynchronous replication). ( 기존네트워크를자세하게분류해놓은자료는 Siddhartra Reddy 의발표자료를참조 ) 78

79 PACELC 이론에따른분류는다음과같다. PC/EC: choosing consistency all the time (regardless of network partitions) PC/EL: choosing consistency when partition, and choosing latency otherwise PA/EL: sacrificing consistency all the time (regardless of network partitions) PA/EC: choosing consistency when no partition, and choosing latency otherwise 맺는말 기술리서치분과에서는 Proof-of-Authority(PoA) 와 PBFT 를 CAP Theorem 을기준으로유형화하는논문 (PBFT vs proof-of-authority: applying the CAP theorem to permissioned blockchain: University of Southampton) 을리서치하였다. 리서치를통해해당논문이 CAP 이론을기반으로 PoA 와 PBFT 를유형화한것이실제와맞지않다는판단을하였다. 예를들어논문에서는 PBFT 를 CP (Consistency-Partition Tolerance) 시스템으로분류하였다. 그러나 PBFT 는전체노드가동의하지않아도네트워크의 safety 를위해서투표과정을거친다. ⅔ 이상의노드가동의하면자동적으로블록이확정된다. 따라서 PACELC 이론을바탕으로다시분류하고자하였으나, 리서치주제결이맞지않다고판단하여이를시도하지않았다. 추후연구를통해각종합의알고리즘을 PACELC 이론에바탕하여분류하는시도를해보고자한다. 해당문서는비영리목적으로누구나공정이용및공유하실수있으나이용시반드시출처를 표기해주시기바랍니다. 해당문서를비영리목적이아닌영리목적으로무분별하게이용할 경우저작권법제 37 조에의거하여법적인제재를받을수있습니다. 79

80 Acknowledgments 홍종화 ( 분과장 ) hjh93411@gmail.com 분산시스템에서의합의과저을리서치하면서블록체인에서합의알고리즘이라고명시하는 PoS, DPoS 와 BFT, PBFT 의명확한구분을할수있었고, 문서로정리하면서국내에부족하고분산되어있는자료들을한글화하여정리할수있어서의미깊은시간이었다. 전창석 jcs191072@gmail.com 마지막으로소회를밝히는시점이다가오니끝난다는안도감과아쉬움이동시에밀려온다. 약한달여동안수십개의블로그글과논문들을읽고정리하면서많은것을배울수있는시간이었지만, 더만족스러운결과물을만들수있지않았을까라는아쉬움도남는다. 혼자였다면절대이긴여정을끝내지못했을것이다. 진형, 찬현, 부영, 종화, 동식님의헌신적인노력과블록체인에대한열정에감사와찬사를아낌없이보내고싶다. 이부형 na4980@gmail.com 4 기기술리서치분과에서는 BFT Consensus 를주제로초기기술제안과발전과정에대한연구를진행했습니다. 바쁜일과중에도늦게까지기술토론과리뷰에힘써주신분과원들에게감사의인사를드립니다. 분과활동기간동안많이배울수있는시간이었습니다. 또한성공적인 Devstamp 행사운영과함께이더리움연구회가앞으로더번창하길바랍니다. 감사합니다. 이동식 dongsik.lee@gmail.com 이번기회에 BFT Consensus 에대한명확한이해를할수있는문서를만들고자하는리서치분과의목표로시작한이번과제는종화, 부형, 진형, 찬현, 창석님들의부단한노력과리서치의결과물입니다. 아마도새로블록체인에입문하시는분이나, 그동안어렴풋이알고있지만명확하게이해하지못했던 BGP, BFT 에대한제대로된이해를할수있는좋은기회가될것입니다. 수많은논문들을일일이리뷰하고토론하고정리해주신종화, 부형, 진형, 찬현, 창석님께감사드립니다. 80

81 박찬현 블록체인기술의가장근본인비잔틴장애허용의기초들을리서치하고이해할수있는시간이되어서의미있었던것같습니다. 특히많은부분들에서거의당연시될정도로여겼던여러상수들과알고리즘들의분석과증명을정리할수있었기에추후연구자들에게도움이될수있는자료가될것같습니다. 이번 4 기기술리서치분과에서정리한자료를통해미래블록체인기술의발전과응용에도움이되기를기원하며 박진형 hophfg@yahoo.co.kr 이더리움연구회 4 기에서블록체인을진지하게연구하려는사람들과함께할수있어서매우기뻤습니다. 암호화폐시장은하락장이고블록체인산업은침체기에있지만, 이기술이지니는잠재력은무궁무진하다고믿습니다. 따라서블록체인의본질을지속적으로연구하는것이필요할것이라고봅니다. 4 기에서는블록체인의본질이라고할수있는분산네트워킹시스템에대해서진지하게연구하는시간을가졌습니다. BFT Consensus 에대한전반적인이해와 CAP PACLEC 이론까지밑바닥을리서치할수있었습니다. 이번분과에서하지못한연구주제는다음분과에계속하여연구함으로써블록체인에대한열정을이어나가고자합니다. 81

82 Reference [1] Bitcoin: Peer-To-Peer Electronic Cash System, Satoshi Nakamoto, (2008) [2] Cypherpunk, Wikipedia [3] Bitcoin s Academic Pedigree, Arvind Narayanan and Jeremy Clark, (2017) [4] 거인의어깨위에서미래를보다. < 비트코인에영향을준기술들과블록체인의현재와미래 >, 박재현, 블로그 [5] 그림으로보는 IT 인프라구조, 김완섭, 책, JPub, (2015) [6] 코어이더리움 (Core Ethereum), 박재현, 박혜영, 오재훈, 책, JPub, (2018) [7] Ethereum White Paper, Github [8] Impossibility of Distributed Consensus with One Faulty Process, Ficher, Lynch, Paterson, (1985) [9] A Brief Tour of FLP Impossibility, The Paper Trail, Henry Robinson,(2008) [10] Byzantine Generals Problem, Lamport, Shostak, Pease, (1982) [11] Akkoyunlu, Eralp A., Kattamuri Ekanadham, and Richard V. Huber. "Some constraints and tradeoffs in the design of network communications." ACM SIGOPS Operating Systems Review. Vol. 9. No. 5. ACM, [12] Two Generals Problem Explained, Finematics, video (2018) 82

83 [13] POW 를통한비잔틴오류허용 ( 비잔틴장군문제 ) 해결과정, 블로그 [14] 슭의개발블로그 : Safety & Liveness - FLP Impossibility 으로보는블록체인, 블로그 [15] Practical Byzantine Fault Tolerance, Castro, Liskov, [16] Practical Byzantine Fault Tolerance by Miguel Castro and Barbara Lisko, Matthhias Eberli, Anna Yudina [17] Practical Byzantine Fault Tolerance, Standford edu [18] What are high and low water marks in bit streaming, Stackoverflow [19] Tendermint github, [20] Tendermint: Byzantine Fault Tolerance in the Age of Blockchains, Ethan Buchman, (2016) n_ethan_201606_masc.pdf?sequence=7&isallowed=y [21] 코스모스사용자커뮤니티, 웹사이트, 전창석, 이기호 [22] Tendermint-starterkit, Github [23] L6: Byzantine Fault Tolerance, Distributed Systems Course 83

비잔틴 노드에 의한 네트워크 분기 시도와, 네트워크 정지 시도를 막기 위하여 네트 워크의 모든 노드들에 2번에 거쳐 합의 데이터를 전송한다. Tendermint와 같은 선행 연구들은 PBFT를 이용하여 비트코인으로 대표되는 작업증명 알고리즘을 사용하는 블록체인 시스템의

비잔틴 노드에 의한 네트워크 분기 시도와, 네트워크 정지 시도를 막기 위하여 네트 워크의 모든 노드들에 2번에 거쳐 합의 데이터를 전송한다. Tendermint와 같은 선행 연구들은 PBFT를 이용하여 비트코인으로 대표되는 작업증명 알고리즘을 사용하는 블록체인 시스템의 LFT: Byzantine Fault Tolerance를 지원하는 경량화된 고성능 합의 알고리즘 theloop June 23, 2017 Abstract 최초의 블록체인 구현 서비스인 비트코인은 작업증명 (Proof of Work) 알고리 즘을 이용하여 전 세계 규모의 네트워크에서 거래장부에 대한 합의를 이루었다. 그러나 비트코인에서 사용한 작업증명 알고리즘은

More information

PowerPoint Presentation

PowerPoint Presentation 정보보호블록체인 목차 2 블럭체인메커니즘 블록체인플랫폼 블록체인메커니즘 1. 블록체인메커니즘 : 거래정보전파 4 멀리있는노드들간거래내용과순서는다를수있음 출처 : https://homoefficio.github.io 1. 블록체인메커니즘 : 블록체인충돌해소 5 멀리있는노드들이거의동시에 nonce 값을찾아마지막블록인 P 에각새로운블록을추가하며인접노드들에게전파 출처

More information

말은 많은 Blockchain 2

말은 많은 Blockchain 2 loopchain-블록체인으로 진짜 서비스 만들어보기 말은 많은 Blockchain 2 진짜 만든 것은 있나? 뭐가 많이 있기는 한데 우리가 써먹어 볼건 있나요? 3 그런데 이런 일이 일어났습니다. 4 뭘 만든건가요?: 블록체인 기반 인증서 발급 각 증권사를 통해 인증서 발급 요청 후 인증서 발급에 필요한 정보를 기반으로 거래를 생성하고 이에 대한 Smart

More information

User interface design

User interface design Course Introduction Minsoo Ryu Hanyang University 교과목정보 1 강좌명 블록체인구조와원리 수업연도 2019 년수업학기 1 학기 과목구분전공학수번호 BLC6001 학점 - 이론 - 실습 3-3-0 수업코드 33451 교과목정보 설강대학한양대학교설강학과블록체인융합학과 강의시간 월 18:00 ~ 21:00 (X) 월 18:30

More information

Microsoft Word - 08_01_블록체인.docx

Microsoft Word - 08_01_블록체인.docx 아이리포지식창고 기출심화 - 01 블록체인합의알고리즘 양경주정보관리기술사 (kjyang75@gmail.com) 블록체인의핵심기술, 합의알고리즘 Concept KeyWord ( 블록체인정의 ) - 제3의공인기관이나중개자개입없이투명하고안전한거래를가능하게하는분산되고, 개방된공동장부관리기술 ( 합의알고리즘정의 ) - P2P 네트워크와같이정보도달에시간차가있는네트워크에서참가자가하나의결과에대한합의를얻기위한알고리즘

More information

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1 IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로

More information

Cloud Friendly System Architecture

Cloud Friendly System Architecture -Service Clients Administrator 1. -Service 구성도 : ( 좌측참고 ) LB(LoadBlancer) 2. -Service 개요 ucloud Virtual Router F/W Monitoring 개념 특징 적용가능분야 Server, WAS, DB 로구성되어 web service 를클라우드환경에서제공하기위한 service architecture

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 프라이빗블록체인소개와경량맞춤형블록체인 (it-chain) 구현사례공유 Kosslab 5 기전담개발자 이준범 2018-10-18 소개 이준범 Kosslab 5기전담개발자 카이스트소프트웨어아키텍처연구실석사졸업 중앙대학교컴퓨터공학부졸업 취미 : 카페에서코딩하기 관심분야 : 소프트웨어아키텍처, 머신러닝 ( 딥러닝,NMT), 블록체인 Github: https://github.com/junbeomlee

More information

항목

항목 Cloud 컴퓨팅기반분산파일시스템개요 개발실 UPDATE : 2012. 11 18 INDEX 1. 가용성 2. 확장성 3. PrismFS 4. Q&A 2 가용성 3 Gmail 장애 2011년 2월 27일 34000명의 Gmail 사용자들이일어나보니메일, 주소록, 채팅기록등이사라진것을발견 2011년 2월 28일 스토리지소프트웨어업데이트를진행하는중 Bug로인해발생했다고공지

More information

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770> 25 강. 수열의극한참거짓 2 두수열 { }, {b n } 의극한에대한 < 보기 > 의설명중옳은것을모두고르면? Ⅰ. < b n 이고 lim = 이면 lim b n =이다. Ⅱ. 두수열 { }, {b n } 이수렴할때 < b n 이면 lim < lim b n 이다. Ⅲ. lim b n =0이면 lim =0또는 lim b n =0이다. Ⅰ 2Ⅱ 3Ⅲ 4Ⅰ,Ⅱ 5Ⅰ,Ⅲ

More information

Microsoft Word - release note-VRRP_Korean.doc

Microsoft Word - release note-VRRP_Korean.doc VRRP (Virtual Router Redundancy Protocol) 기능추가 Category S/W Release Version Date General 7.01 22 Dec. 2003 Function Description VRRP 는여러대의라우터를그룹으로묶어하나의가상 IP 어드레스를부여해마스터로지정된라우터장애시 VRRP 그룹내의백업라우터가마스터로자동전환되는프로토콜입니다.

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

Yggdrash White Paper Kr_ver 0.18

Yggdrash White Paper Kr_ver 0.18 White paper (ver 0.18) 1 ,.,.?.,,,???..,,..,.,...,.,., p2p.. Team Yggdrash 2 1. 1.1 Why, Another, Blockchain? (,,?) 1.1.1, (TPS) / (Throughput),?. DApp., DB P2P..,.. DApp.... 2012 2 2018 2, 150GB, 14..

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

새로운 생태계

새로운 생태계 About BITCOIN 비트코인 설명 자료 한국비트코인거래소 Korbit / www.korbit.co.kr / 김진화 공동창업자 이사 louis@korbit.co.kr 1. 비트코인이란 지난 2009년 등장한 글로벌 금융거래 시스템이자 독립적인 디지털 화폐다. 기존 전자금융시스템과 달리, 금융기관의 개입 없이 개인간 빠르고 안전한 거래가 가능하다. Peer

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

<B3EDB4DC28B1E8BCAEC7F6292E687770>

<B3EDB4DC28B1E8BCAEC7F6292E687770> 1) 초고를읽고소중한조언을주신여러분들게감사드린다. 소중한조언들에도불구하고이글이포함하는오류는전적으로저자개인의것임을밝혀둔다. 2) 대표적인학자가 Asia's Next Giant: South Korea and Late Industrialization, 1990 을저술한 MIT 의 A. Amsden 교수이다. - 1 - - 2 - 3) 계량방법론은회귀분석 (regression)

More information

슬라이드 1

슬라이드 1 TCPdump 사용법 Neworks, Inc. (Tel) 070-7101-9382 (Fax) 02-2109-6675 ech@pumpkinne.com hp://www.pumpkinne.co.kr TCPDUMP Tcpdump 옵션 ARP 정보 ICMP 정보 ARP + ICMP 정보 IP 대역별정보 Source 및 Desinaion 대역별정보 Syn 과 syn-ack

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Windows 10 General Announcement v1.0-KO

Windows 10 General Announcement v1.0-KO Windows 10 Fuji Xerox 장비와의호환성 v1.0 7 July, 2015 머리말 Microsoft 는 Windows 10 이 Windows 자동업데이트기능을통해예약되어질수있다고 6 월 1 일발표했다. 고객들은 윈도우 10 공지알림을받기 를표시하는새로운아이콘을알아차릴수있습니다. Fuji Xerox 는 Microsoft 에서가장최신운영시스템인 Windows

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 WSA 10 주차 (18.09..) Ethereum 김도윤 (doyunism@gmail.com) 백서연구조합 (WSA: Whitepaper Study Alliance) Ethereum Scalability CryptoKitties, Ethereum Killer(DApp) Source : https://medium.com/@512jay/cryptokitties-5b5e2899267f/

More information

RHEV 2.2 인증서 만료 확인 및 갱신

RHEV 2.2 인증서 만료 확인 및 갱신 2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_

More information

놀이동산미아찾기시스템

놀이동산미아찾기시스템 TinyOS를이용한 놀이동산미아찾기시스템 윤정호 (mo0o1234@nate.com) 김영익 (youngicks7@daum.net) 김동익 (dongikkim@naver.com) 1 목차 1. 프로젝트개요 2. 전체시스템구성도 3. Tool & Language 4. 데이터흐름도 5. Graphic User Interface 6. 개선해야할사항 2 프로젝트개요

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

공정한합의알고리즘 : deb 합의알고리즘 (A fair consensus algorithm : deb consensus algorithm) 목차 1. 개요 2. 합의알고리즘의공정성 3. deb 합의알고리즘 4. 공정한노드의역할및신뢰성검증 5. 성능 6. deb 합의알고

공정한합의알고리즘 : deb 합의알고리즘 (A fair consensus algorithm : deb consensus algorithm) 목차 1. 개요 2. 합의알고리즘의공정성 3. deb 합의알고리즘 4. 공정한노드의역할및신뢰성검증 5. 성능 6. deb 합의알고 공정한합의알고리즘 : deb 합의알고리즘 (A fair consensus algorithm : deb consensus algorithm) 목차 1. 개요 2. 합의알고리즘의공정성 3. deb 합의알고리즘 4. 공정한노드의역할및신뢰성검증 5. 성능 6. deb 합의알고리즘특성 7. 결론 1. 개요 2008년분산원장 (distributed ledger) 개념과합의알고리즘인작업증명

More information

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

More information

untitled

untitled Oracle DBMS 로그인의접근제어우회 취약점분석 2006. 2. 9 인터넷침해사고대응지원센터 (KISC) 본보고서의전부나일부를인용시반드시 [ 자료 : 한국정보보호진흥원 (KISA)] 룰명시하여주시기바랍니다. 개요 o 2005년이후 Oracle Critical Patch Update(CPU) 는 Oracle사제품대상으로다수의보안패치및보안패치와관련된일반패치를발표하는주요수단임

More information

(Hyunoo Shim) 1 / 24 (Discrete-time Markov Chain) * 그림 이산시간이다연쇄 (chain) 이다왜 Markov? (See below) ➀ 이산시간연쇄 (Discrete-time chain): : Y Y 의상태공간 = {0, 1, 2,..., n} Y n Y 의 n 시점상태 {Y n = j} Y 가 n 시점에상태 j 에있는사건

More information

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에대하여 AB=BA 1 가성립한다 2 3 (4) 이면 1 곱셈공식및변형공식성립 ± ± ( 복호동순 ), 2 지수법칙성립 (은자연수 ) < 거짓인명제 >

More information

네트워크통신연결방법 네트워크제품이통신을할때, 서로연결하는방법에대해설명합니다. FIRST EDITION

네트워크통신연결방법 네트워크제품이통신을할때, 서로연결하는방법에대해설명합니다. FIRST EDITION 네트워크제품이통신을할때, 서로연결하는방법에대해설명합니다. FIRST EDITION 05-2012 개요 개요 네트워크상에연결되어있는기기들이통신을할때, 어떻게목적지를찾아가는지 (IP 주소, 서브넷마스크, 게이트웨이 ) 어떻게데이터를보내는지 (UDP/TCP, ) 에대한내용을설명합니다. 네트워크설정에따른특징을이해하여, 제품이설치된네트워크환경에따라알맞은설정을하도록합니다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 4 차산업혁명은 왜블록체인을찾는가? 목차 비트코인이란무엇인가? 비트코인의핵심, 블록체인 비트코인과블록체인이당면한기술적문제 4 차산업혁명, 왜블록체인을요구하는가? 블록체인의활용사례 블록체인의미래 2 비트코인이란무엇인가? 3 Bitcoin (2008) (In October 2008, posted to the Cypherpunks mailing list) Bitcoin

More information

0. 들어가기 전

0. 들어가기 전 컴퓨터네트워크 14 장. 웹 (WWW) (3) - HTTP 1 이번시간의학습목표 HTTP 의요청 / 응답메시지의구조와동작원리이해 2 요청과응답 (1) HTTP (HyperText Transfer Protocol) 웹브라우저는 URL 을이용원하는자원표현 HTTP 메소드 (method) 를이용하여데이터를요청 (GET) 하거나, 회신 (POST) 요청과응답 요청

More information

Microsoft PowerPoint - 26.pptx

Microsoft PowerPoint - 26.pptx 이산수학 () 관계와그특성 (Relations and Its Properties) 2011년봄학기 강원대학교컴퓨터과학전공문양세 Binary Relations ( 이진관계 ) Let A, B be any two sets. A binary relation R from A to B, written R:A B, is a subset of A B. (A 에서 B 로의이진관계

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Sequences with Low Correlation

Sequences with Low Correlation 레일리페이딩채널에서의 DPC 부호의성능분석 * 김준성, * 신민호, * 송홍엽 00 년 7 월 1 일 * 연세대학교전기전자공학과부호및정보이론연구실 발표순서 서론 복호화방법 R-BP 알고리즘 UMP-BP 알고리즘 Normalied-BP 알고리즘 무상관레일리페이딩채널에서의표준화인수 모의실험결과및고찰 결론 Codig ad Iformatio Theory ab /15

More information

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows

More information

2 노드

2 노드 2019/05/03 17:01 1/5 2 노드 2 노드 소개 노드를사용하여계층적분산모니터링을구축할수있습니다. 각노드는Zabbix 서버자체이며, 각각이놓인위치모니터링을담당합니다 Zabbix는. 분산설정은최대 1000 개의노드를지원합니다. 노드의설정을사용하는장점은다음과같습니다. 일부지역에걸친대규모네트워크에서여러수준의모니터링계층을구축합니다. 계층에서하노드는마스터노드에전송합니다.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

TTA Journal No.157_서체변경.indd

TTA Journal No.157_서체변경.indd 표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

Amazon EBS (Elastic Block Storage) Amazon EC2 Local Instance Store (Ephemeral Volumes) Amazon S3 (Simple Storage Service) / Glacier Elastic File Syste (EFS) Storage Gateway AWS Import/Export 1 Instance

More information

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770> IT OOKOOK 87 이론, 실습, 시뮬레이션 디지털논리회로 ( 개정 3 판 ) (Problem Solutions of hapter 9) . T 플립플롭으로구성된순서논리회로의해석 () 변수명칭부여 F-F 플립플롭의입력 :, F-F 플립플롭의출력 :, (2) 불대수식유도 플립플롭의입력 : F-F 플립플롭의입력 : F-F 플립플롭의출력 : (3) 상태표작성 이면,

More information

KOSSCON2018_BlockChain_오픈소스_블록체인과_상호호혜성

KOSSCON2018_BlockChain_오픈소스_블록체인과_상호호혜성 오픈소스블록체인과상호호혜성 이기호 KOSSCON 2018 Track 3 BlockChain 2018. 11. 29 소개 이기호 kiho.e.lee@gmail.com EOS BP Ratings EOS Worker Proposal System Emergency Committee Co-founder Nominee EOS Block Producer 정보공유커뮤니티

More information

RVC Robot Vaccum Cleaner

RVC Robot Vaccum Cleaner RVC Robot Vacuum 200810048 정재근 200811445 이성현 200811414 김연준 200812423 김준식 Statement of purpose Robot Vacuum (RVC) - An RVC automatically cleans and mops household surface. - It goes straight forward while

More information

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

- 목차 - 1. 개요 가. 아이콘 (ICON) 이란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. ICON 컨셉및특징 - 독자적인블록체인기술, Loopchain - ICON의블록체인네트워크, 넥서스 (NEXUS) - IISS (ICON I

- 목차 - 1. 개요 가. 아이콘 (ICON) 이란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. ICON 컨셉및특징 - 독자적인블록체인기술, Loopchain - ICON의블록체인네트워크, 넥서스 (NEXUS) - IISS (ICON I 아이콘 상장검토보고서 2018.03.21 - 목차 - 1. 개요 가. 아이콘 (ICON) 이란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. ICON 컨셉및특징 - 독자적인블록체인기술, Loopchain - ICON의블록체인네트워크, 넥서스 (NEXUS) - IISS (ICON Incentives Scoring System) 4.

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

PowerPoint Template

PowerPoint Template SOFTWARE ENGINEERING Team Practice #3 (UTP) 201114188 김종연 201114191 정재욱 201114192 정재철 201114195 홍호탁 www.themegallery.com 1 / 19 Contents - Test items - Features to be tested - Features not to be tested

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Spider For MySQL 실전사용기 피망플러스유닛최윤묵 Spider For MySQL Data Sharding By Spider Storage Engine http://spiderformysql.com/ 성능 8 만 / 분 X 4 대 32 만 / 분 많은 DB 중에왜 spider 를? Source: 클라우드컴퓨팅구 선택의기로 Consistency RDBMS

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table 쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table http://academy.hanb.co.kr 6장. 해시테이블 테이블 Hash Table 사실을많이아는것보다는이론적틀이중요하고, 기억력보다는생각하는법이더중요하다. - 제임스왓슨 - 2 - 학습목표 해시테이블의발생동기를이해한다. 해시테이블의원리를이해한다. 해시함수설계원리를이해한다. 충돌해결방법들과이들의장단점을이해한다.

More information

Web Scraper in 30 Minutes 강철

Web Scraper in 30 Minutes 강철 Web Scraper in 30 Minutes 강철 발표자 소개 KAIST 전산학과 2015년부터 G사에서 일합니다. 에서 대한민국 정치의 모든 것을 개발하고 있습니다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 스크래퍼/크롤러의 작동 원리를 이해한다. 목표

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

#WI DNS DDoS 공격악성코드분석

#WI DNS DDoS 공격악성코드분석 #WI-13-025 2013-07-19 내용요약 이보고서는 7 월 15 일 Fortinet 의 Kyle Yang 이작성한 6.25 DNS DDoS Attack In Korea 를참고하여작성된것임 공격대상이된 DNS 서버는 ns.gcc.go.kr 과 ns2.gcc.go.kr 로, 악성코드에 감염된좀비 PC 는 DNS 서버에대한도메인확인질의에대한응답을두 타깃으로보내지도록하는방법을이용하였음

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로 Lab. 1. I-V Characteristics of a Diode Lab. 6. 연산증폭기가산기, 미분기, 적분기회로 1. 실험목표 연산증폭기를이용한가산기, 미분기및적분기회로를구성, 측정및 평가해서연산증폭기연산응용회로를이해 2. 실험회로 A. 연산증폭기연산응용회로 (a) 가산기 (b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로 3. 실험장비및부품리스트

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

wtu05_ÃÖÁ¾

wtu05_ÃÖÁ¾ 한 눈에 보는 이달의 주요 글로벌 IT 트렌드 IDG World Tech Update May C o n t e n t s Cover Story 아이패드, 태블릿 컴퓨팅 시대를 열다 Monthly News Brief 이달의 주요 글로벌 IT 뉴스 IDG Insight 개발자 관점에서 본 윈도우 폰 7 vs. 아이폰 클라우드 컴퓨팅, 불만 검증 단계 돌입 기업의

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

<B3EDB9AEC0DBBCBAB9FD2E687770>

<B3EDB9AEC0DBBCBAB9FD2E687770> (1) 주제 의식의 원칙 논문은 주제 의식이 잘 드러나야 한다. 주제 의식은 논문을 쓰는 사람의 의도나 글의 목적 과 밀접한 관련이 있다. (2) 협력의 원칙 독자는 필자를 이해하려고 마음먹은 사람이다. 따라서 필자는 독자가 이해할 수 있는 말이 나 표현을 사용하여 독자의 노력에 협력해야 한다는 것이다. (3) 논리적 엄격성의 원칙 감정이나 독단적인 선언이

More information

슬라이드 1

슬라이드 1 www.altsoft.co.kr www.clunix.com COMSOL4.0a Cluster 성능테스트 2010 년 10 월 클루닉스 / 알트소프트 개요 개요 목차 BMT 환경정보 BMT 시나리오소개 COMSOL4.0a MPP 해석실행조건 BMT 결과 COMSOL4.0a 클러스터분석결과 ( 메모리 / 성능 ) COMSOL4.0a 클러스터최종분석결과 -2- 개요

More information

정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고

More information

PowerPoint Template

PowerPoint Template 설치및실행방법 Jaewoo Shim Jun. 4. 2018 Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2 SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet

More information

실험 5

실험 5 실험. OP Amp 의기초회로 Inverting Amplifier OP amp 를이용한아래와같은 inverting amplifier 회로를고려해본다. ( 그림 ) Inverting amplifier 위의회로에서 OP amp의 입력단자는 + 입력단자와동일한그라운드전압, 즉 0V를유지한다. 또한 OP amp 입력단자로흘러들어가는전류는 0 이므로, 저항에흐르는전류는다음과같다.

More information

i - ii - iii - 1 - 연도 보험급여 총계 (A) 장해급여 유족급여 일시금연금일시금연금 연금계 (B) 연금비중 (B/A, %) 기타 급여 1) 1998 14,511 3,377 979 1,657 30 1,009 7.0 8,467 1999 12,742 2,318 1,120 1,539 38 1,158 9.1 7,727 2000 14,563 2,237 1,367

More information

1) 인증서만들기 ssl]# cat >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

1) 인증서만들기 ssl]# cat   >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키 Lighttpd ( 멀티도메인 ) SSL 인증서신규설치가이드. [ 고객센터 ] 한국기업보안. 유서트기술팀 1) 인증서만들기 [root@localhost ssl]# cat www.ucert.co.kr.key www.ucert.co.kr.crt >www.ucert.co.kr.pem // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

FGB-P 학번수학과권혁준 2008 년 5 월 19 일 Lemma 1 p 를 C([0, 1]) 에속하는음수가되지않는함수라하자. 이때 y C 2 (0, 1) C([0, 1]) 가미분방정식 y (t) + p(t)y(t) = 0, t (0, 1), y(0)

FGB-P 학번수학과권혁준 2008 년 5 월 19 일 Lemma 1 p 를 C([0, 1]) 에속하는음수가되지않는함수라하자. 이때 y C 2 (0, 1) C([0, 1]) 가미분방정식 y (t) + p(t)y(t) = 0, t (0, 1), y(0) FGB-P8-3 8 학번수학과권혁준 8 년 5 월 9 일 Lemma p 를 C[, ] 에속하는음수가되지않는함수라하자. 이때 y C, C[, ] 가미분방정식 y t + ptyt, t,, y y 을만족하는해라고하면, y 는, 에서연속적인이계도함수를가지게확 장될수있다. Proof y 은 y 의도함수이므로미적분학의기본정리에의하여, y 은 y 의어떤원시 함수와적분상수의합으로표시될수있다.

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 1 2.1 대칭암호원리 제 2 장. 대칭암호와메시지기밀성 2 3 기본용어 평문 (Plaintext) - original message 암호문 (Ciphertext) - coded message 암호화 (Cipher) - algorithm for transforming plaintext to ciphertext 키 (Key) - info used in cipher

More information

LTC 라이트코인명세서

LTC 라이트코인명세서 LTC 2017-10-27 라이트코인명세서 본명세서는회원님들의이해에도움이되고자작성한내용이며, 투자권유의의도는일절없음을안내드립니다. Index 1 개요 2 기술명세서 O ver view 2-1 라이트코인 (Litecoin) 이란? 2-2 기술적특징 2-3 관련웹사이트 3 시장명세서 3-1 라이트코인의유통구조 3-2 시장현황 3-3 해외라이트코인상장거래소및거래현황

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - 30.ppt [호환 모드] 이중포트메모리의실제적인고장을고려한 Programmable Memory BIST 2010. 06. 29. 연세대학교전기전자공학과박영규, 박재석, 한태우, 강성호 hipyk@soc.yonsei.ac.kr Contents Introduction Proposed Programmable Memory BIST(PMBIST) Algorithm Instruction PMBIST

More information

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

½½¶óÀ̵å Á¦¸ñ ¾øÀ½ 하나의그룹 FH/FDMA 시스템에서 겹쳐지는슬롯수에따른성능분석 구정우 jwku@eve.yonsei.ac.kr 2000. 4. 27 Coding & Information Theory Lab. Department of Electrical and Computer Engineering, Yonsei Univ. 차례 (Contents) 1. 도입 (Introduction)

More information

Microsoft PowerPoint - ch10_회복과 병행 제어.pptx

Microsoft PowerPoint - ch10_회복과 병행 제어.pptx 13-01 트랜잭션 장애와회복 병행제어 병행수행과병행제어 병행수행 (concurrency) 여러사용자가데이터베이스를동시공유할수있도록여러개의트랜잭션을동시에수행하는것을의미 여러트랜잭션들이차례로번갈아수행되는인터리빙 (interleaving) 방식으로진행됨 병행제어 (concurrency control) 또는동시성제어 병행수행시같은데이터에접근하여연산을실행해도문제가발생하지않고정확한수행결과를얻을수있도록트랜잭션의수행을제어하는것을의미

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

초보자를 위한 분산 캐시 활용 전략

초보자를 위한 분산 캐시 활용 전략 초보자를위한분산캐시활용전략 강대명 charsyam@naver.com 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 그러나현실은? 서비스에필요한것은? 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 적절한기능 서비스안정성 트위터에매일고래만보이면? 트위터에매일고래만보이면?

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

그룹웨어와 XXXXX 제목 예제

그룹웨어와 XXXXX 제목 예제 데이터통신 데이타링크제어 차례 회선원칙 (line discipline) 흐름제어 (flow control) 오류제어 (error control) 2 회선원칙 링크에연결된장치간의상대적인관계 대등 (peer-to-peer) 관계 주종 (primary-secondary) 관계 회선구성 점대점 (point-to-point) 구성 다중점 (multipoint) 구성

More information

3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로

3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로 3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로성립한다. Theorem 7 두함수 f : X Y 와 g : X Y 에대하여, f = g f(x)

More information

= Fisher, I. (1930), ``The Theory of Interest,'' Macmillan ,

= Fisher, I. (1930), ``The Theory of Interest,'' Macmillan , Finance Lecture Note Series 학습목표 제4강 소유와 경영의 분리 효용함수(utility function): 효용함수, 한계효용(marginal utility), 한계대체율(marginal rate of substitution) 의 개념에 대해 알아본다 조 승 모2 (production possibility curve): 생산가능곡선과 한계변환율(marginal

More information