#9 - 비트코인 발행은 누가하지? 비트코인 거래는 언제끝날까요?


안녕하세요. 어미새입니다.



지난 8편에서 비트코인 채굴 최종 보상 시점에 대하여 포스팅을 진행하였습니다.

포스팅에 내용에 대하여 @piljae님께서 이런 질문을 해주셨습니다. "그럼 마이너는 6confirm이 지나야 코인베이스 거래라는 걸 통해서 보상을 받게 되는 건가요?" 그리고 @seungjae1012님께서 "저도 어미새님을 괴롭히고 싶어요. 궁금한게 있는데요. 블록 보상을 받는 과정이 어떻게되나요..? 그냥 채굴자가 나중에 "나 80000블록 캤음, 12.5BTC 잔액 올림" 이라고 전파하면 승인 내주는 구조인가요? 그리고 코인 일련번호는 어떻게 발행하여 생기는 것인지.. 궁금합니다 :)"이러한 질문을 해주셨습니다.


두분은 저보다 블록체인 기술과 비트코인에 대한 이해도가 훨씬 높으신분인것같습니다. 그리고 제가 이해하지 못하거나 조금 더 확인해봐야 하는 방향성에 대해 알려주는 그런 느낌을 지울수가 없습니다. 그래서 두 분의 질문에 대한 답을 드리고자합니다. 그리고 이 부분은 여러분들에게도 큰 도움이 될 것 같습니다!


비트코인 발행?



이때가지 계속해서 발생하던 의문점에 약간의 실마리를 잡은 기분입니다. 비트코인은 중앙 통제기구가 없습니다. 그렇다면 누가 비트코인을 발행하여 주는건지 너무나도 궁금 하지 않나요?


비트코인의 발행은 채굴자가 스스로 한다.


블록에는 크게 블록헤더와, 블록바디 정보로 구성된다고 설명해드렸습니다. 그리고 블록 바디에는 다수의 거래내용이 포함되고 있다고 설명해드렸습니다. 이때 채굴자(마이너)는 블록바디의 첫 번째 거래 내역에 자신이 보상받을 비트코인의 수량과 해당 블록의 거래 수수료의 합을 작성하게됩니다.


즉 자신이 만든 블록에 첫번째 거래내역에 자신이 보상받을 내용을 기입함으로써 셀프 보상을 받게되고 이러한 행동이 비트코인을 새롭게 발행하는 행위가 됩니다.


우선 영어실력이 미천한지라 여러분들도 해당 내용을 집적 확인했으면 하는 마음에 비트코인 위키에 있는 자료를 공유해 드리겠습니다. (https://en.bitcoin.it/wiki/Transaction#general_format_.28inside_a_block.29_of_each_input_of_a_transaction_-_Txin)


Generation

Generations have a single input, and this input has a "coinbase" parameter instead of a scriptSig. The data in "coinbase" can be anything; it isn't used. Bitcoin puts the current compact-format targetand the arbitrary-precision "extraNonce" number there, which increments every time the Nonce field in the block header overflows. Outputs can be anything, but Bitcoin creates one exactly like an IP address transaction. The extranonce contributes to enlarge the domain for the proof of work function. Miners can easily modify nonce (4byte), timestamp and extranonce (2 to 100bytes).

general format (inside a block) of each input of a transaction - Txin

The input sufficiently describes where and how to get the bitcoin amout to be redeemed. If it is the (only) input of the first transaction of a block, it is called the generation transaction input and its content completely ignored. (Historically the Previous Transaction hash is 0 and the Previous Txout-index is -1.)

general format (inside a block) of each output of a transaction - Txout

The output sets the conditions to release this bitcoin amount later. The sum of the output values of the first transaction is the value of the mined bitcoins for the block plus possible transactions fees of the other transactions in the block.

넵 비트코인 발행은결국 채굴자(마이너)가 스스로 얼만큼의 비트코인을 지급받을지에 대해서 기입함으로써 비트코인일 발행되는겁니다.


비트코인 발행량



최초에 비트코인 발행량은 50BTC였습니다. 그리고 이 수치는 210,000블록(약 4년)마다 보상이 절반씩 줄어들게 설계되어 있습니다. 현재에는 12.5BTC와 블록에 포함된 거래 수수료를 보상으로 지급받습니다.

그리고 언젠가는 이 수치는 0이되며, 블록을 생성한 댓가의 보상은 해당 블록의 거래 수수료만 지급을 받게됩니다.

(이건 제 뇌피셜입니다만.. 블록을 생성하여 보상받는 비용이 블록을 생성하기 위해 투자되는 비용보다 높아야지만 비트코인 시스템이 계속적으로 안전하게 돌알갈 것 같습니다. )

그렇기 때문에 추후에는 비트코인의 채굴하는 난이도가 현저히 낮아져서 채굴에 대한 비용이 줄어들게 하거나 혹은 비트코인의 거래 수수료를 높여 보상이 많아지는 방향으로 진행되지 않을까 싶습니다.


그럼 비트코인 발행량이 줄어드는 시기는 정확히 언제일까요? 아래의 사이트에 접속하면 비트코인 발향량이 줄어드는 시기를 확인할 수 있습니다.

(http://www.bitcoinblockhalf.com/)


정말 블록체인 기술과 가상화폐에 대한 사이트들이 엄청나게 많은 것 같습니다. 언제다 공부하지.. 어미새무륵..


자 비트코인을 받을 수 있는 수량과 규칙에 대한 설명이 끝났습니다. 이제 채굴에 대한 보상을 어느 시점에서 받는지 명확하게 학습해야 합니다. 우선 채굴자가 블록바디의 첫번째 거레에 자신이 보상 받을 비트코인에 대한 수량을 기입했음으로 해당 블록의 거래가 완전히 끝나는 시점이 블록을 보상 받는 시점이지 않을까? 라는 의문점에서 거래가 끝나는 시점이 언제인지 명확하게 자료조사를 시작하였습니다.



Confirmation



우선 비트코인 위키(Confirmation)에서 이야기하는 Confirmation은 아래와 같습니다.


After a transaction is broadcast to the Bitcoin network, it may be included in a block that is published to the network. When that happens it is said that the transaction has been mined at a depth of 1 block. With each subsequent block that is found, the number of blocks deep is increased by one. To be secure against double spending, a transaction should not be considered as confirmed until it is a certain number of blocks deep.


위의 내용을 조금 쉽게 설명해보면 이중지출을 막기 위해서는 자신의 거래가 포함된 블록 뒤로 일정 수의 블록이 연결될 때 까지 거래가 끝났다고 간주하면 안된다는 내용입니다. 지난 포스팅 8편에서 '스테일 블록'에 대한 설명과 이어지는 부분입니다. 동시에 새로운 '블록'이 생성되어 노드에 연결되고 일정한 수의 블록이 이어지지 않으면 '스테일 블록'이 발생할 우려가 있기 때문에 거래가 끝났다고 판단하면 안된다는 내용인것 같습니다.



How Many Confirmations Is Enough



The classic bitcoin client will show a transaction as "n/unconfirmed" until the transaction is 6 blocks deep. Merchants and exchanges who accept bitcoins as payment can and should set their own threshold as to how many blocks are required until funds are considered confirmed. When potential loss due to double spending as nominal, as with very inexpensive or non-fungible items, people may choose not to wait for a transaction to be confirmed, and complete the exchange as soon as it is seen on the network. Most exchanges and other merchants who bear the risk from double spending require 6 or more blocks.


There is nothing special about the default, often-cited figure of 6 blocks. It was chosen based on the assumption that an attacker is unlikely to amass more than 10% of the hashrate, and that a negligible risk of less than 0.1% is acceptable. Both these figures are arbitrary, however; 6 blocks are overkill for casual attackers, and at the same time powerless against more dedicated attackers with much more than 10% hashrate.[1]



이중 지출을 막기 위해서는 기본적인 수치는 6개 이상의 블록이 필요하다고 합니다. 공격자가 10%가 넘는 해시레이트를 보유하고 있을때 6개의 노드도 무력화 될 수 있기 때문에 6개의 블록 또한 완벽한 수치는 아니라고합니다.


Freshly-mined coins cannot be spent for 100 blocks. It is advisable to wait some additional time for a better chance that the transaction will be propagated by all nodes. Some older bitcoin clients won't show generated coins as confirmed until they are 120 blocks deep.


새롭게 만들어진 코인은 100 블록까지 쓸 수 가없습니다. 그리고 오래된 비트코인 클라이언트는 120 블록이 이어질때까지 새로운 코인을 보여주지 않는다고 합니다.


정리를 조금해보면...

  1. 채굴자(마이너)는 새롭게 생성할 '블록'에 자신이 보상받을 비트코인의 정보를 기입하여 '블록'을 생성합니다.
  2. 새롭게 발행된 비트코인은 100~120 블록 이후 사용이 가능합니다.

즉 채굴에 대한 '보상'은 100 ~ 120 블록이 지나야지 온전한 보상을 받을 수 있는겁니다. 그리고 추가로 6블록 이후라는 내용은 거래가 온전히 끝났음을 의미하는 일반적인 수치로 사용되고 있었습니다. 하지만 이 또한 높은 해시율을 가진 공격자에의해서 무너질 수 있습니다. 그렇기 때문에 충분한 블록수를 확인한 후 거래가 완전히 이루어졌다고 판단해야 한다고 합니다.


그리고.. 정말 눈물나게 번역기와 고통을 받고 있다가 문득 한글로된 비트코인 백서가 없을까? 하고 찾던 중... 눈물이나네요 있었어요.. (http://s.kwma.kr/pdf/BitCloud/bitcloudwpkor_p43.pdf)


제가 가지고 있는 사전 지식이 0이기 때문에 블록체인 기술에 대한 학습과 더불어 비트코인에 대해서 알아보는 과정에 굉장히 구멍이 많습니다. 위의 내용도 학습한 내용을 토대로 최대한 정리하고 정리하여 공유해 드리는 내용입니다만... 구멍이 있을 수 있습니다.


이번 포스팅이 두 질문에 대한 명쾌한 답이 되었으면 좋겠지만 부족한 점이 있다면 또 댓글로 소통하고 같이 발전할 수 있는 시간이 되었으면 좋겠습니다 ^^;


이상 긴글 읽어주셔서 감사합니다!


[참고자료]
https://en.wikipedia.org/wiki/Bitcoin#Mining
https://en.bitcoin.it/wiki/Confirmation
https://en.bitcoin.it/wiki/Irreversible_Transactions
https://bitcoin.org/bitcoin.pdf

H2
H3
H4
3 columns
2 columns
1 column
11 Comments