[basic] 비트코인 백서 읽기 <7> Combining and Splitting Value, Privacy, Calculations

captaink.eth | 강선장
9 min readJul 22, 2022

--

앞에서 우리는 거래가 생성되어 노드에 전파되고, PoW를 통해 블록이 생성되면 체인에 연결된다는 큰 흐름을 이해했습니다. 이번 챕터에선 이러한 과정의 시작이 되는 거래(transaction)의 특징에 대해 설명드리도록 하겠습니다.

9. Combining and Splitting Value

Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender.

It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction’s history.

잔고는 수 많은 거래들의 결과(transaction’s history)입니다. 은행에선 이 ‘잔고’를 이용해 거래를 수행합니다. 거래 발생 시 잔고를 가감하여 그 결과를 기록하게 되는 것이죠. 은행의 장부는 단일 주체에 의해 기록되고 작성된 것이기 때문에 거래 내역을 검증할 필요도 없고, 필요하더라도 신속하게 처리할 수 있습니다. 내가 기록한 가계부를 내가 의심하면서 들여볼 필요는 없다는 거죠.

그런데 블록체인이 만약 ‘잔고’를 블록으로 생성한다면 어떻게 될까요? 잔고는 계좌 당 하나씩 존재하기 때문에 계좌가 많아질수록 블록에 기록해야 할 정보가 지나치게 많아질 겁니다. 그러면 장부의 크기는 기하급수적으로 커질 것이고, 노드들은 비용을 감당하기 위해 수수료를 올리고, 결국 네트워크는 파국을 맞이하겠죠.

그래서 비트코인 네트워크는 잔고가 아닌 ‘거래’에 집중합니다. 비트코인에서 지불이란 거래 기록에 소유권의 상태를 기록하는 것을 의미합니다. 여기서 사용되지 않은 거래, UTXO(Unspent Transactions Outputs)라는 개념이 등장합니다.

비트코인 거래 기록 구조와 UTXO

비트코인 거래 기록은 입력값과 출력값들(multiple inputs and outputs)로 구성되어 있습니다. A가 B에게 1 BTC를 보내려는 상황을 예시로 들어 설명하겠습니다:

  1. A는 체인 상에 본인에게 소유권이 있는 입력값들(=잔고)을 확인합니다.
  2. 거래 기록에 사용하려는 입력값과 출력값 1 BTC를 기재하여 노드에게 발송합니다.
  3. 채굴자는 입력값과 출력값의 차액을 송금 수수료로 가져갑니다.
  4. 입력값은 모두 소모했으므로 더 이상 활용할 수 없어 삭제됩니다.

여기서, A가 출력값으로 보낸 1 BTC는 B입장에선 입력값으로 사용하기 전까지는 소모되지 않은 값입니다. 다시 말해, 사용되지 않은 거래, UTXO로 기록되는 거죠. 만약 B가 1 BTC를 사용하기로 한다면, 해당 UTXO도 삭제가 되고, 누군가에겐 새로운 UTXO가 만들어 집니다.

만약 A가 입력값으로 받은 UTXO가 5 BTC라면요? 출력값에 B에게 보내는 1 BTC와 스스로에게 보내는 4 BTC를 입력하면 됩니다.

이처럼 합치기와 나누기(Combining and Splitting)를 반복하면서 만들어지는 UTXO를 통해 효율적으로 거래 기록을 관리하면서 지불을 이행할 수 있습니다. 잔고가 없이도 거래의 상태만으로 잔고처럼 활용할 수 있기 때문입니다.

10. Privacy

The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is
similar to the level of information released by stock exchanges, where the time and size of individual trades, the “tape”, is made public, but without telling who the parties were.

As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.

전통 은행에선 ‘개인정보-제 3자-개인정보’라는 구조가 연결되어 있는 대신, 해당 정보에 대한 접근 권한을 제한함으로써 개인정보 보안을 달성합니다.

비트코인 네트워크의 경우 거래 기록이 공개되어 있는 대신, 개인정보와는 분리된 공개키(by keeping public keys anonymous)를 통해 거래를 수행함으로써 비슷한 수준의 개인정보 보안을 달성할 수 있습니다.

추가적인 보안 방법으로 여러 키(다중계정)를 만들어 거래를 진행하는 방식이 있긴 하지만, 모두 체인에 기록되기 때문에 결국 하나의 공개키로 연결되므로, 하나의 공개키를 사용하는 것과 같은 리스크에 노출되긴 합니다.

11. Calculations

해당 챕터는 수학적인 공식이 대부분이고, 제 실력으론 자세히 설명드리기 어렵습니다. 결론만 말씀드리자면:

  • q=악의를 가진 노드가 다음 블록을 찾을 확률
  • z=컨펌 수(악의를 가진 노드가 따라잡아야 할 블록의 갯수)

라는 전제 하에서, 계산을 하면 다음과 같은 결과가 나온다는 겁니다.

표시한 부분의 의미하는 바는, 악의를 가진 노드가 20%의 확률로 논스를 발굴한다고 할 때, 바꾸려는 블록 이후로 11 블록 이상이 생성된 상황이라면, 공격이 성공할 가능성은 0.1% 미만이라는 겁니다.

Pool별 Hashrate 비중(22. 7. 22)

보시다시피 가장 높은 해시를 차지하는 단일 풀은 18.92%인데, 저 풀은 수많은 채굴자들로 쪼개져 있어 사실상 단합이 불가능합니다. 만약 가능하더라도 블록이 이어지면 이어질수록 성공 확률은 낮아집니다.

만약에 공격에 성공하더라도, 본인이 갖고 있는 코인에 대해서만 조작이 가능하기 때문에 네트워크 붕괴로 겪는 손실이 더 클 것이므로, 공격 시도 자체에 대한 동기가 거의 없다고 봐야 합니다.

이제 마지막 챕터만 남았네요. 다음 게시물에서 뵙겠습니다.

👈🏻 이전 게시물: <6> Reclaming Disk Space, Simplified Payment Verification
👉 다음 게시물: <8> Conclusion

<참고자료>

저는 다음 두 채널에서 활동하고 있습니다. 언제든 편하게 와서 소통해주세요.

Treasure Hunt: https://t.me/look4treasure
고로치 같이투자 소통방: https://t.me/gachi2job1

--

--