brunch

You can make anything
by writing

C.S.Lewis

by Amang Kim Jun 28. 2018

30. 비트코인과 수학공식 (2/2)

비트코인, 블록체인, 그리고, 수학, 확률

[시작하기전에] 어쩌다 보니, 제가 브런치에 글을 적기 시작한지 2년이 훌쩍 넘어갔네요. "근본적한계에 대한 단상"이라는 매거진으로 30번째 글이 되었습니다. 그동안 미천한 필력에도 불구하고, 관심을 가져주신 분들께 감사의 말씀 전합니다.


이전 글에서 이야기 했듯이 비트코인 백서에 있는 공식들 다음 4개 이고(그림1참조), 그중에 1번째 공식에 대해서 이야기 했었다. 혹시라도, 이전 글이 궁금하시다면 다음 링크를 참고 하시라 (브런치 링크 참조)

그림1. 블록체인백서에 나온 수학 공식들

오늘 다룰 공식은 2)~4)의 수학공식을 이야기할려고 한다. 우선, 공식들을 설명하기전에 우선 알아야 할 것이 있는데, 정리를 하자면 다음과 같다

(1) 백서에서는 포아손 분포(Poission Distribution)를 이야기 하고 있지만, 사실상 포아손 프로세스(Poission Process)를 의미 한다. 

(2) 분포와 프로세스의 가장 큰 차이점은 시계열성(Time Series)의 여부이다.

(3) 분포는 단순한 확률이지만, 프로세스는 확률모델(Stochastic Process)이다.

(4) 물론, 수식상으로는 포아손 확률과 포아손 프로세스는 한끗(?)차이이다. 

(5) 현재 장부가 공식적으로 확정 된 시점부터 그 다음 장부가 확정 될 때까지 새로 만들어지는 장부의 확정을 기준으로 가능성(확률)을 계산하기 때문이다.

(6) 프로세스를 단순한 분포로 다룰수 있는 이유는 시계열의 모델(Stochastic Model)이라고 하더라도, 확률의 계산은 "한순간"을 다루기 때문이다.

(7) 이러한 "한순간"이 시간 순으로 엮으면 시계열, 혹은 Stochastic Process가 된다.

(8)
(9) 

(10) 우리가 최종적으로 분석 하고자 하는 것은 "공격자가 그 다음 장부를 조작된 채로 만들어질 가능성(확률)의 기대값(Expected Value)"이다.

(11) 블록체인 백서에서 다루는 장부생성에 관한 모델은 도박이론(Gambler's Ruin Problem)을 기반으로 하지만, 구하는 값은 공격자가 성공할 확률(즉, 정상노드가 실패할 할 확률)을 다룬다.

(12) 참고로 도박이론에서는 도박꾼이 돈을 벌 확률 확률(즉, 블록체인에서 정상적인 노드의 장부가 확정될 확률)을 다룬다. 


블록체인과 확률모델

이제 오늘 다루어야 할 수학공식을 하나씩 다뤄보도록 하겠다. 우선 백서의 내용을 보자:

위의 공식을 지난번처럼, 조금더 쉽게 풀어써보겠다. 우선 첫번째(2번) 공식은 다음과 같이 풀 수 있다:

위의 수학공식(및 조건들)들을 설명하자면 다음과 같다.

(13) 우리가 원하는 분석을 하기위해서 기본적으로 정상노드(honest nodes)가 다음 장부가 확정되기 전까지새로 만들어진 블록(혹은 장부)의 수는 항상 정해져 있고, 알고 있다고 가정 한다 (h가 정해짐)

(14) 이후 공격자에 대한 확률적 분석은 이 전제를 기반으로 한다.

(15) 반면, 공격자 노드들에의해 평균적으로 만들어지는 장부(블록)의 수는 정상노드와 공격자노드에 따라 결정 된다. 


예를 들어, 정상 노드(p_0)가 0.65, 공격자 노드(q_0)의 비율이 0.35라고 했을 때, 정상노드가 만드는 블록의 수가 650개라고 하면, 공격자가 만드는 블록의 평균 갯수(λ_q)는 350개가 된다. 

(16) 여기서 중요한 것은실제로 공격자가 만드는 블록의 정확한 수(X)는 알수가 없으나, 포아손 분포를 따른다.

(17) 계산한 값(λ_q)은 공격자가 만드는 평균 장부의 수는 포아손 분포의 인자(factor)가 된다.

아까와 마찬가지로 수학적으로 보기 편하도록(?) 위의 공식을 풀어 쓰자면 다음과 같다

백서에 있는 수식은 (2)식이다. 그리고, 이 수식은 두개의 수식으로 구성되어 있다. 보기편하게 G(X)라는 함수로 나누었다. 그렇다, G(s)가 아니라 G(X)이다. 그렇다면, G(X) 함수와 G(s)의 관계는 바로, 

가 된다. 우선 (3)식에 대한 설명을 하도록 하겠다.

(18) 공식적으로 장부가 확정된 이후, 그 다음 장부가 확정될 때까지 정상노드가 만들어지는 장부의 수가 h이고, 같은 주기동안 공격자가 만든 장부의 수를 s라고 하면, 공격자가 그 다음 (확정될) 장부를 조작하기 위해 추월해야 할 장부의 수는 h-s가 된다.

(19) 그리고, h-s만큼 떨어진 공격자의 장부로 그 다음 장부를 조작 할 가능성(확률)이 (3)식이다.

(20) 여기에, 공격자 노드(attackers)와 정상노드(honest nodes)의 비율(q_0, p_0)을 알고 있다면, 공격자노드의 그 다음 장부 조작의 가능성(확률)이 바로 (3)식이다. -- (3)식 첫번째

(21) 만약, 한 주기동안 만들어내는 공격자의 장부의 수가 정상노드가 만들어내는 장부의 수보다 큰 경우(즉, X>h), 그 다음 만들어지는 장부는 무조건 조작된 장부(공격자에 의해 만들어진 장부)이다. --(3)식 두번째

(22) 공격자(attacker)가 만드는 장부의 숫자는 X이고, random variable이다. s 또한 공격자가 만드는 장부의 숫자이다. 이 두 인자(X, s)는 같기도 하고, 다르기도 하다. ---이에 대한 정확한 차이를 알고 있다면, 당신은 확률론에 대해 상당한 내공을 가지고 있다는 의미이다. 


여러분들은 announce되는 장부가 서로 다를 때, 어느 장부가 정상인지 판단 하는 방법에 대해서 이야기를 들은적이 있을 것이다. 다들 아시겠지만, announce되는 장부가 다를 경우 가장 긴 장부가 최종적으로 확정된다. 이 경우, 공격자가 정상노드보다 성능이 월등한 컴퓨터로 더 많은 장부들을 생성한다면, 100% 합법적으로 조작된 장부가 확정이 되는 이유가 바로 여기에 있다 (참고 (19)번).

(23) 블록체인의 분석은 정상노드로부터 만들어진 장부의 숫자는 정해진 것(h; deterministic)으로 가정하고, 공격자가 만든 장부의 숫자는 불확실한 것(X; random)으로 가정한다.  

(24) 

(25) 


이제 마지막 수식(4)를 살펴보자. 백서의 내용은 다음과 같다.

이를 이전처럼, 수학적으로 조금더 쉽게 적어보면, 

(26) 이 수식은 사실 수식(3)과 "정확하게" 동일 한 수식이다. 


조금만 힌트를 주자면, (6)식을 다음과 같이 전개할 수 있다.

이 이후의 전개 방법은 독자 여러분께 맡기도록 하겠다. 


마치면서...

적다 보니 이렇게(?) 되었다. 다행이도 블록체인 백서의 수식이 그렇게 많지 않아 이 정도에서 마무리가 된 것 같다. 수학이 가지는 가장 큰 장점 가운데 하나는 말로 길게 설명해야 할 것을 단 몇줄로 요약이 가능하다는 점일 것이다. 물론, 수식을 제대로 이해하기 위해서는 수식에 있는 각각의 문자가 가지는 의미를 정확하게 알아야 한다. 물론, 수식에 있는 문자들의 의미를 제대로 이해한다는 것은 엄밀한 의미에서는 수학의 영역이 아닐지도 모른다. 하지만, 수학도 다른 언어들과 마찬가지로 "읽고 쓰기"가 중요하다. 그렇기에 익숙해지면 엄청 유용하다. 다른 언어들처럼 말이다.


    


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari