How does Bitcoin work?
728x90
SMALL

비트코인이란?

  • 비트코인은 프로토콜의 묶음이다. : 이는 비트코인이라는 암호화폐를 규정하는 규칙이다.
  • 비트코인 프로토콜이 동작하도록 구현한 sw 있다.
  • sw 실행이 되면, 코인이 생성되고 계정에서 다른 계정으로 보낼 있다.
  • 비트코인 계좌이체(주소 이동) transaction, 트랜잭션이라 한다.
  • 이러한 transaction 모여서 block 생성된다. 블락 여러개의 트랜잭션

요약: 비트코인 프로토콜은 비트코인 코드가 sw 의해 실행되어 transaction 만들어내는 것.

 

지불 시스템이 검열되지 않도록 하는 것이 사토시 나카모토의 의도였다.

즉, payments가 직접적으로 (벤더를 거치지 않고) 되는 것이 핵심이다.

 

 

탈중앙화 

De-centralization vs Centralization

은행의 장부가 있다고 하자. balance 잔액이다.

bookkeeper역할을 현실에서는 은행이 한다.

그리고 계좌에 관해 소유주가 누구인지 은행이 열람할 있다.

 

그러나 비트코인은 다르다. 소유주를 없어 익명성이 보장된다.

비트코인으로 수신한 내역을 원화나 달러로 환전하는 경우는 내가 누군지 드러날 있다.

 

지금부터 비트코인의 개념을 

'어떻게 비트코인을 고안했을지' 가상의 사고과정을 따라가보며 설명해보겠다.

 

문제: 하나의 central 장부관리자가 필요하다.

transaction 발생하면, 유효성 검증 역시 은행이 해왔다.

이런 장부 정리를 지금까지 은행이 해왔다.

) 잔액이 오만원. 물건 또한 오만원. 물건을 사고, 동시에 다른 친구에게 계좌이체를 통해 이체함. 이론적으로 불가능하다.

은행 입장에서는 무엇이 먼저 시도되었는지가 중요하다.

transaction valid 검증은 오래걸린다.

 

그런데, 특정 벤더에게 유효성 검증에 대한 권한이 위임되는 것을 거부하는 것이 비트코인의 철학이다.

 

해결: Book 복제하자.

장부를 여러군데 복사하면, 군데가 훼손되거나, 조작되더라도 안전할 것이다.

누구나, 어디에나 저장할 있도록하자.

원한다면 또한 일정 부분 역할을 있다.

다수가 장부를 관리하기 시작하면, 정말 똑같은지 보장이 필요. consistency 유지가 필요.

 

이 consistency를 어떻게 유지할 것인가?

사람의 인심에 의존, 사람은 선하니 조작하지 않을 것이다, 가정하지 않고,

사람의 이기심에 의존하자. 사람이 다수가 인정하는 내용을 내가 추종하는게 나의 이익에 부합하기 때문에 따라가게 하도록 하자.

누군가 조작한다면, 다수가 무시하면 된다. 다수가 선량해서가 아니라, 인정해 이유가 없기 때문이다.

 

누구나, 아무때나 join 하거나 떠날 있다. P2P network 전형적인 특징.

 

문제: account 설정하는 데에 permission 필요하다.

은행은 비대면 개설을 하더라도, 본인 인증이 필요하다. 주도권을 은행이 쥐고 있다.

 

 

해결: 비트코인의 계좌(address) 공개 키의 해시 값이다.

공개 키를 위한 예시) 공인인증서의 비밀번호는 private key 보호하는 key이다.

public Key address 삼으면, 누구도 비트코인을 빼갈 없다.

 

계좌가 몇개든간에, addr public key 해시값을 알려주면, 나는 안전하게 돈을 지키면서 돈을 받을 있다.

이 때 비밀번호는 필요없고, 전자 서명을 사용한다.

비트코인에서는 account number address라고 부른다.

원하는 만큼의 addr 만들 있다, wallet이라는 sw 쓰면 모두를 관리할 수 있다.

하나의 private key 해커가 알아냈더라도, 나머지는 여전히 안전하다.

 

 

문제: transaction ordering

transaction 발생 수가 많은데, 정확한 순서가 노드마다, 비트코인에 참여하는 computer마다 다를 있다. (순서가 중요한 이유: 중복된 지불의 상황 등)

 

은행만 하더라도 여러 지점이 존재한다. 매일 transaction 발생하고, 전체적으로 통일된 db 만들 것이다. 그것이 각각에 전달되어야 한다.

, sync 맞춰야 한다.

 

비트코인: transaction 모아서 block 이루도록 하자.

예시

A가 B에게 100 지불

C D에게 50 지불

내용을 화살표 방향대로 전파한다.

중에 무엇을 먼저 받는지에 따라(도착한 transaction 따라) order 달라진다.

수신한 transaction 따라 block 집어넣도록하면, 각각의 block 내용이 달라진다.

 

 

 

해결: Block

block by block으로 chain 만든다. 트랜잭션마다 체인을 만들면 너무 길어짐.

우리가 합의(consensus) 이뤄야하는 단위가 커져서 문제가 작아진다.

-> transaction batch(다수) 묶어서, block 단위로하자.

 

트랜잭션이 모든 다른 노드에 전달된 시점 이후 합의가 일어나도록 하자.

 

pending(현재 block 포함되지 않은, 새로 생겨난) transaction 새로 집어넣어 붙여나감

장부 관리자: 트랜잭션 검증 , propagate한다.

이는 transaction 순서를 정하는 것보다 용이하다.

비트코인의 경우 평균적으로 10 간격으로 block 만들어지도록 설정되어있다. 난이도 조절이 실시간으로 이루어짐.

경쟁하는 여러 노드들이 블락을 만들어서 P2P network 다른 노드에 뿌려 전파되기까지의 시간.

 

 

문제: 누가 block 생성하고, 얼마나 자주 생성할까?

block 생성자를 채굴자라고 한다.

문제의 다른 경쟁자를 물리치고 빨리 풀면 들고 결과 발표하는것과 비슷하다.

다른 사람, 다른 노드가 답이 맞다고 하면, 채굴이 인정됨.

대부분의 경우 hash power 채굴자가 이기게 되어있다.

 

헷갈릴 수 있는 것은, 검증의 방식이다.

선생님, 풀었어요라고 하면, 누구도, 네가 이겼어라고 인정하지 않는다. 선생의 역할이 없다.

그럼 누가 이겼는지 어떻게 아는가? 그렇게 인정하는게 나한테 도움이 되기때문에 모두가 consensus가 일치될 수 있도록 하는 것.

-> 어떠한 conductor 없다.

 

 

해결: 작업 증명

블락체인에 참여하고 있는 다른 노드들에게 증명하는 과정

채굴에는 보상이 따른다. 누구나 이길 가능성이 있다.

게임은 채굴하길 원하는 누구나 참여할 있다.

그러나 치팅, 부정행위가 포함되어서는 안됨. 결과가 분명하게 제시할 있는 proof 통해 입증되어야 .

다수가 인정할 있어야함. 그러도록, 증명할 있어야 한다.

 

 

채굴이 무엇인가?

genesis block 새로운 블락을 붙여나가는 과정.

 

다수가 인정하는 블락체인에 새로운 블락을 만들어 붙이는 것이 채굴이다.

새로운 블락을 만든다는 것은 블락에 들어갈 transaction(A addr -> B addr) 모으는 .

비트코인 네트워크를 통해 보내고자 하는 사람은 P2P network 트랙잭션을 뿌림. 트랜잭션이 채굴자에 의해 블락체인에 연결되면, 나의 트랜잭션은 다수에게 받아들여짐. 어떤 트랜잭션을 집어넣을지는 채굴자가 정할 있다.

트랜잭션마다 내용이 다르다.

연결을 통해, 마지막 블락체인과 암호학적으로 결합이 되도록 만든다. 그러면 사실을 수학적으로 증명할 있고, 누구도 증명이 불가하다.

crypto hash function 채택. hash func 역함수 계산이 어렵다. 굉장히 많은 computing power 필요하다.

붙인다는 다음과 같다: 채굴자가 원하는 트랜잭션을 블락 안에 임의로 집어넣을 있는 nonce 있다. nonce 어떤 값이든 채울 있다.

우리는 전체를 x라고한다. x hash func값인 y 어떤 target value보다 작아지도록하는 x 찾아내는 것이, 블락을 붙이는 것이다. 모든 계산을 해도 target value보다 작아지는 x 찾아내는 것이 불가능할수도 있지만, 그것은 미리 없다.

해시함수를 빨리 계산하는 것이 유리하다. 병렬연산이 유리하다.

 

 

여러 질문)

  1. 해시 값이 target value보다 커지면?
  • 채굴자가 바꿀 있는 값을 계속 바꿔야함.
  • 과정을 mining이라고 .
  1. 영감을 떠올려 수학 문제를 푸는게 아니다!
  • hash 계산 전용 hw 머신도 있다. 문제는 shortcut 없다.

 

보상: 내가 풀었음을 알려야

채굴자는 성공한 블락을 다른 사람에게 뿌림. 다른 사람은 채굴에 성공한 맞는지 확인하는 과정. 과정은 hash 계산 번이면 끝난다.

비트코인에서, 블락 채굴에 성공한 확률은 전적으로 hash power 달려있다.

(참고로, 비트코인은 SHA-256을 사용한다.)

 

 

문제: 비트코인 채굴자가 받는 보상

2009년에 블락당 50 비트코인... 현재 가치로 100만불일 것이다. wow

transaction fee: 이체 수수료. transaction 시작한 사람이 부담함.

철저하게 fee 높은 transaction 몰릴 것임.

block reward: 채굴자에게 무조건 주어짐. 비트코인이 없다가 새로 생겨나는 유일한 창구

내가 transaction 처리하기 위해 3자에게 부탁하거나, 채굴자의 명의 계좌를 요구하면 안됨. 검열됨

그러므로 모두 bitcoin으로 지급하자.

 

transaction fee: 이미 있는 비트코인이 옮겨감

 

시장 원리에 충실한 논리를 채택했다.

맘대로 fee 높이거나 낮추면 된다. 성공한 채굴자는 모든 transaction fee, block reward 갖게된다.

transaction 많이 밀려있다면 fee 올라갈 것이다.

 

 

초기는 50 bitcoin 지급함. 그때는 매우 작은 돈이었다.

이것이 원활히 유지되려면 채굴자를 끌어모아야한다. 초기 보상으로(bootstrap) 크게 주었다. 초기는 transaction 자체가 없었을 것이다. 그래서 block reward 컸다. 블락 리워드는 어떻게 지급되었을까?

bitcoin에는 coinbase transaction 있다. 유일하게 채굴자가 만드는 transaction이다. 자신에게 block reward 받도록하는 transaction이다. 하늘에서 떨어진거임. 새로운 비트코인이 계속해서 만들어짐.

 

채굴자의 수입원은 block reward이나 나중엔 상황이 바뀔

 
 

 


 
728x90
LIST

'Blockchain' 카테고리의 다른 글

Blockchain Overview & Introduction  (0) 2023.02.13