MATH & ML

블록체인(Block chain) & 비트코인(BitCoin) 본문

Etc.

블록체인(Block chain) & 비트코인(BitCoin)

BlogYong 2018. 4. 20. 13:32

비트코인에서 기본적으로 쓰이는 함수가 cryptographic hash function이다.(어떤 3가지 조건을 만족하는 함수)

 이 함수는 avalanche effect가 있어서 인풋에 미세한 변화를 주면 아웃풋에 상당히 큰 변화가 일어난다.

그 해쉬함수의 종류에는 sha-256이라는 함수가 있다.  그 중에서도 Bitcoin에서는 SHA-256^2을 사용한다.

그 해쉬함수에 대해서 y가 주어졌을 때 H(x)=y를 만족하는 x를 찾는 것은 현실적으로 불가능하다. 하지만 적당한 y들에 대해서는 H(x)<y가 되는 x를 구하는것은 가능하다. 

계좌번호가 있어야 거래를 할 수 있듯이 그런게 있어야 하는데


민증 : private key

계좌번호 : public key


private key를 해쉬함수를 취해서 public key로 하고 이를 다시 한 번 sha-256을 통해 변환하면 address(public key hash)라고 한다. 2중보완이라고 생각하면 된다.

위의 자세한 과정은 bit coin내부에 내장되어있는 함수로 base 58, SHA-256이라는 게 있는데 위의 private key와 public key를 이 base 58과 sha-256을 이용하여 변환시켜 address로 바꾸는것이다.

비트코인내에는 script언어라는게 있는데 이는 80가지 for문같은 함수들로 이루어져있다. 

거래를 하기 위해서는 장부를 작성해야하며 이를 transaction이라고 한다. 이 장부 맨 위에 트랜색션의 내용들을 해쉬함수로 변환한 트랜색션 해쉬가 써있따(이름표같은 개념)

그래서 매번 거래 할 때마다 이 돈의 출처가 담긴 트랜색션 이름표가 그 트랜색션 내용에 적힌다.

거래가 계속되면 돈의 출처에 따라서 다 연결되어서 트랜색션이 계속 길어진다.

블록이라는 승인이 안된 트랜색션들을 모아서 한 곳에 모아서 mining을 한 완성체를 말한다.  블록은 각자 자신의 요약본에 해당하는 블록헤더를 가지고 있다. 

마이너라는 블록을 만드는 사람들이 트랜색션을 다 모아서 해쉬함수를 계속 둘씩 취해서 하나의 값으로 만든다. 이를 merkle root라고 하고 이를 확인하면 조작이 있었는지 없었는지 확인 할 수 있다.

H(prevBlock||merkleRoot||x)<Difficulty Target 이 되는 x를 찾는것을 마이닝이라고 하고 이 x 변수를 nonce라고 한다.(정답을 찾았을때의 그 x도 nonce라고한다)

이렇게 기본 평균적으로 10분마다 이게 풀리게 되어있는데 이 행위를 proof of~라고한다.


Comments