암호화폐 3

Go로 만드는 블록체인 part 8 - Network

현재 구현하고 있는 암호화폐는 기본적으로 분산 네트워크에서 각각의 참여자들이 원장을 공유하며, 거래의 데이터를 합의를 통해 관리하는 탈중앙화 기술이다. 하나의 데이터베이스에 데이터를 저장하던 기존의 구조와 다르게 분산한 것이 가장 큰 특징이다. 이는 P2P 네트워크와 블록체인에 기초하며 분산 원장 기술을 사용한다. 분산 원장이란, 여러 사람이 액세스 할 수 있는 사이트 및 지역 등에서 합의하여 공유 및 동기화되는 데이터베이스를 뜻한다. 중앙화 되어있는 데이터베이스와 달리 탈중앙화 된 원장은 본질적으로 보안적 측면에서 더 안전하며, 합의 알고리즘을 통하여 데이터의 위변조를 방지한다. P2P 네트워크 P2P 네트워크란 무엇일까? P2P는 Peer to Peer를 뜻하는데, 여기서 Peer란 동등/대등한 지위..

Blockchain 2022.02.08

Go로 만드는 블록체인 part 7 - Merkle Tree

이전 포스트와 비슷한 맥락에서, 이번엔 다른 개념을 사용하여 조금 더 최적화해보도록 하겠다. Block Structure 우선 Bitcoin의 블록 구조를 살펴보도록 하겠다. 블록은 크게 Header와 Body로 나누어 살펴볼 수 있다. 이 둘은 서로 정보를 비교하며 무결성을 높이게 된다. Bitcoin의 block body에는 Transaction이 담겨있다. 아래의 표는 Bitcoin의 block header 구조이다. Version 버전 Target Bits 작업 증명 난이도 Previous Block Hash 이전 블록의 해시 Time Stamp 블록 생성 시간 Merkle Root 트랜잭션 해시 값 Nonce 작업 증명을 위한 임의의 값 type Block struct { TimeStampint..

Blockchain 2022.02.03

Go로 만드는 블록체인 part 6 - UTXO 집합

지금까지는 BoltDB에 저장된 블록의 수가 그리 많지 않았다. UTXO를 계산할 때 모든 블록을 순회하며 확인하고 있는데, 지금은 문제가 없지만 만약 블록이 실제 비트코인만큼 존재한다면 엄청난 과부하를 피할 수 없을 것이다. 그래서 이번 포스트에서는 UTXO들만 따로 저장하여 계산하는 방식으로 개선해보도록 하겠다 UTXO란? Part 4에서도 다뤘었지만 한번 더 짚고 넘어가도록 하겠다. Unspent Transaction Output의 약자로, 소비되지 않은 Transaction의 출력이란 뜻이다. 이 UTXO를 새로운 chainstate라는 이름의 bucket을 생성하고 따로 저장해 줄 것이다. UTXO의 소유권 이동 원리 vin ScriptSig []byte // Unlock script 다른 사람..

Blockchain 2022.02.01