BitCoin에서 거래
- 비트코인을 보유한 소유자가 비트 코인의 일부를 다른 사람에게 전송하는 것을 승인하고 네트워크에 공유하는 것
- 거래 시 수수료가 발생함
- 송금되는 비트 코인에 대해서는 부인 방지를 위해 소유주의 서명이 필요함
- 입력값 Input은 항상 출력값 Output의 총합보다 커야 함
- A에게 100 BTC가 있고 30 BTC의 음식을 사먹었다면, input값은 100이고 output값은 핫도그 값인 30 + 약 69가 됨
- 거래 수수료가 발생하기 때문. 수수료는 채굴에 성공한 사람에게 주어짐
- input > output의 총합 ⇒ 100 > 30 + 69 → 100 > 99. 거래가 승인됨
BitCoin에서의 거래 단위
- 비트코인은 0.000000001 비트코인까지 거래가 가능함
- 가장 작은 단위를 사토시라고 함
- 0.000000001 == 1 사토시
- 0.0001 BTC == 1 Millibitcoin
- 비트코인은 분산화된 P2P 시스템으로 중앙 서버나 통제소가 존재하지 않음
- 비트코인은 채굴 Mining 과정을 통해 생성됨
채굴 Mining
- 새로운 비트코인이 생성되면 통화 공급량이 추가되어 유통량이 증가함
- 거래를 공식적으로 검증, 승인하는 절차로, 채굴 과정을 거쳐 블록에 포함되기 전에는 블록체인의 일부가 되지 못함
- 약 10분마다 블록체인 네트워크에 참여하고 있는 채굴자가 솔루션을 찾기 위해 경쟁함 → 누군가 솔루션을 찾아내면 reset
- 암호 해시 알고리즘을 기반으로 하는 수학 문제를 풀기 위해 경쟁함
- 각 채굴자는 Full node 네트워크로부터 승인된 최근 블록을 받게 되면 현재 경쟁 라운드에서의 채굴은 실패했음을 알고 바로 다음 새 블록 채굴 과정을 시작함
- 매 블록마다 난이도를 조절할 수 있음
- 마이닝을 성공한 채굴자에게는 블록의 수수료가 주어지며, 블록의 검증은 함께 채굴을 시도한 채굴자에게 맡김
- 이 모든 참여자에게는 채굴에 대한 보상이 주어짐
- 검증이 끝나면 블록에 체인이 연결되고, 이 과정을 10분마다 반복함
블록 구조
- 고정값으로 난이도에 맞는 Nonce를 찾음
- Nonce는 시도할 때마다 +1
작업 증명 Proof Of Work
- 새로운 블록의 Nonce값을 찾아내어 새로운 블록의 해시값을 찾아 완료하는 것으로 합의 알고리즘 중 하나
- 채굴을 통해 작업 증명을 진행함
- 블록의 해시가 특정 숫자보다 낮게 나올 때까지 반복하면서 Nonce값을 찾음
- 블록체인의 보안을 유지하기 위해 해시값을 구하는 과정임
if) 난이도 : 0x00000000F... (32byte)
유효한 해시값 : 0x000000000F... (32byte) → 유효한 해시값은 난이도의 0 개수보다 많거나 같음
☆ 해시값은 버전, 블록 생성 시각, 난이도, Nonce, 이전 블럭의 해시, merklehash를 sha256을 사용해 구함
☆ 이 중 변경 가능한 값은 Nonce뿐이라서 유효한 해시값을 찾을 수 있는 Nonce를 찾아야 함 → 최초 발견자가 채굴 보상을 받음
블록체인에서 비대칭키 암호화
- 송금 시 부인 방지를 위해 송금자가 private key로 서명 후 송금
- 수신자는 송금자의 public key로 서명을 검증한 후 확인함
- 만들어진 블록을 블록체인 네트워크로 보냄
- 블록을 받은 채굴자는 그 블록을 주위 채굴자에게 보내고 Nonce값을 찾기 위한 연산을 시작함
- 1등이 나오면 송금자의 public key로 잔액이 맞는지 채굴자 자신의 블록체인과 비교하여 검사하고, 검증을 완료하면 1등에게 수수료를 지금함
- 1~5를 반복함
왜 해시값을 송신자의 개인 키로 암호화(서명)할까?
- 전체 거래 내역을 송신자의 개인 키로 암호화하는 것보다 32byte의 해시만 암호화하는 것이 속도가 빠름 → 효율적
- 단순히 부인 방지를 위한 서명 검증을 하기 위해 개인 키로 암호화하는 것이기 때문에 전체 내역을 암호화하는 것은 비효율적임
만약 B와 A가 36번 블록을 채굴하던 중에 B가 먼저 Nonce값을 찾고, 결과를 주위 채굴자에게 알린 뒤, 37번 블록 채굴을 시도함. 하지만 네트워크 속도 문제로 B의 성공 사실을 A가 받기 전 A도 36번 블록을 채굴하는데 성공한다면?
- 위의 상황 발생 시 분기가 만들어짐
- 분기 이후 블록이 6개가 쌓일 때까지 기다리다가 블록이 적게 쌓인 곳을 폐기하고 새로운 블록을 재검증 함
⇒ 블록 생성 후 1시간이 지나야 완전한 블록체인이 됨