비트코인은 과연 해킹당할 수 있을까(feat. 푸아송 분포) 2편

in #kr6 years ago

안녕하세요

1편에 이어 2편으로 돌아왔습니다.

(1편 링크 !!)

https://steemit.com/kr-bitcoin/@forkdance/feat-gambler-s-ruin-1

!*******************************************************************************************!

.
.
.

앞서 1편에서는 도박꾼의 파산 문제와 비슷하게 따라잡아야 할 블럭의 수 'Z '가

늘어날수록 공격자의 성공 확률이 낮아진다는 것을 알게 되었습니다.

이제 우리는 실제 계산을 통하여 얼마나 힘들어지는지 눈으로 확인해 봅시다.

이때 사용되는 함수는 푸아송 분포 함수 입니다.

푸아송 분포는 단위 시간 안에 어떤 사건이 몇 번 발생할 것인지를 표현하는 확률분포입니다.

일반적으로 축구 팀의 우승 확률을 계산한다거나 하룻동안 발생하는 출생자 수를 예측하고

어떤 진도 이상의 지진이 발생하는 수 등등의 일반적인 통계 예측에 사용되는

확률 함수 입니다. (대충 많이들 쓰는 함수꼴이라 생각해요 ㅎㅎ)

.
.
.
.

정해진 시간 안에 어떤 사건이 일어날 횟수에 대한 기댓값을 λ 라고 했을 때

그 사건이 n 회 일어날 확률은 다음과 같습니다. (e는 자연상수)

.
.
.

이때 사토시는 이 λ 를 아래와 같이 정의했죠.

비트코인에서 수신자는 해당 거래가 블록에 추가되고

그 뒤에 z블록이 연결될 때까지 기다리게 됩니다.

그는 공격자가 (블록 처리를) 진척시킨 규모를 알지 못하지만,

정직한 블록이 예상되는 블록당 시간 평균치를 따른다고 가정하면,

공격자의 잠재적 진척도는 기대값을 갖는 푸아송 분포(Poisson distribution)가 될 것 입니다.

현재 공격자가 여전히 따라잡을 수 있는 확률을 얻기 위해,

그가 해당 시점부터 따라잡을 수 있는 확률로 만들어낼

각 진척 규모별 푸아송 밀도를 곱하게 됩니다.

그리고 수학적으로 정리하면....... (무한꼬리 합산을 피하는부분인데 넘어가겠습니다.)

.
.
.
.
.
.
.

(여기서 k는 다음 블록을 발견하는 사건의 수이고 z는 따라잡아야 하는 블럭의 수 입니다. )

대충보면 아래의 식이 좀 어려워 보일 수도 있습니다.

하지만 우리는 수학자가 아니라 식을 이용하는것 뿐이기에

그냥 대입을 해서 어떤 값을 보여주는 지 보기만 하면 됩니다.

물론!! 손으로는 절대 못푸니까 코딩을 해서 컴퓨터에게 대신 일을 시켜 봅니다 .

(이건 그냥 저 위 식을 코딩으로 바꾼거 뿐이에요)

이 코딩을 실행하면 아래와 같은 유의미한 결과가 나옵니다.

바로 z에 따라 지수적으로 P(대문자 입니다 !!! 성공 확률, 소문자 p와는 달라요~~) 값이

감소 하는 확률을 볼 수 있습니다.

(q가 0.1일때)

(q가 0.3일때)

.
.
.
.
.

우리는 여기서 공격자의 성공확률이 10%, 30%로 일정할때, (물론 100%는 말도 안되지만)

z(따라잡아야 하는 블럭의 수)가 늘어날때마다 <<<지수적으로>>> 성공 확률이 낮아짐을

확인할 수 있었습니다.

10블럭만 넘어가도 절대 성공 못할만한 확률이 나오게 됩니다.

심지어 성공확률을 0.1% 미만이라고 정해두고 계산해보면

공격자가 340블럭을 따라 잡을려면 공격자의 공격 성공률( 즉 도박에서 이길 확률, 실력)
q 가 45퍼센트는 되야 합니다.

그래도 해킹 성공확률이 0.1% 미만이라는거.....

z 값이 커야 신뢰도도 높아지는데 그만큼 성공률이 줄어들다니....

.
.
.
.
.
.
.

따라서 우리는 비트코인을 해킹하는 건 말도 안되는 비효율성을 보여주며

아무 의미가 없음을 알게 되었습니다.

이상 비트코인은 과연 해킹당할 수 있을까! 였습니다!!!

Sort:  

재미있네요. 수학은 어렵지만 쉽게 풀어주셨네요.

감사합니다 ㅎㅎ

혹시 이해가 잘 안가시는 부분이 있으면 질문해 주세요 ㅎㅎ

Coin Marketplace

STEEM 0.20
TRX 0.12
JST 0.028
BTC 64453.36
ETH 3507.44
USDT 1.00
SBD 2.56