비트코인 사용원리

마지막 업데이트: 2022년 5월 23일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
출처=Harrison Kugler/Unsplash

비트코인 사용원리

친구가 되시면 친구의 새글 및 활동에 대한
알림을 받아보실 수 있습니다.

htiger31 님에게 친구신청을 하시겠습니까?

친구 신청을 했습니다.
상대가 수락하면 친구가 됩니다.

친구 신청을 실패했습니다.
잠시 후 다시 시도해 주세요.

친구 신청 가능 수를 초과했습니다.

[판교테크노밸리][정보 및 자료] 블록체인의 원리- 비트코인의 기반 기술인 블록체인에 대한 기본 개념과 원리 소개[소프트웨어정책연구소]

[ 정보 및 자료 ] 블록체인의 원리 - 비트코인의 기반 기술인 블록체인에 대한 기본 개념과 원리 소개 [ 소프트웨어정책연구소 ]

비트코인의 기반 기술인 블록체인에 대한 기본 개념과 원리 소개

◾ 비트코인은 죽을지 모르나 블록체인은 살아남을 것

◾ 블록체인을 핀테크에 활용하려는 시도가 여러 방면에서 진행 중

◾ 블록체인의 실체를 정확히 이해하고 활용가능성을 판단하는데 도움을 주는 목적으로 작성

비트코인의기반기술블록체인의원리
왜 또 블록체인인가 ?

2
●비트코인의기술기반인블록체인에대한원리를다룬자료의부족. 블록체인의가능성에대한판단이어려움
●IBM, Goldman Sachs, JP Morgan 등해외에서는블록체인의혁신성을인식하고활용하려는움직임이있음. 국내에도스타트업중심으로활동이있으나소규모
●비트코인은거품이있었으나고비를넘기고여전히확산중. 비트코인은죽을지모르나블록체인은살아남을것

가트너Hype cycle 2015
3가트너Hype cycle 2015
3http://www.gartner.com/newsroom/id/3114217
Cryptocurrencies

비트코인통계4비트코인통계4https://blockchain.info/charts http://www.coindesk.com/price/
시가총액하루거래건수2014/01 2016/01
2014/01 2016/01
가격2014/01 2016/01

5
Hash Hashcash Blockchain
비대칭키거래기록(비트코인)
1997 2008
Peer-to-peer 아키텍처
P2P와 비대칭키 부분은 본 발표에서 깊이 다루지 않음블록체인은분산되고, 독립적이며, 개방된공통장부(원장, ledger) 관리기술비트코인은이공통장부를거래기록용도로활용한애플리케이션

6
X Y
쉬움매우어려움한방향계산은쉬우나역방향계산은매우어려운수식간단한예) 특정소수로나눈값의나머지함수(modular)
가령 7로나눈나머지함수MOD7
X=19 일때, Y=MOD7(19) = 5 간단히계산Inverse-MOD7(5) = 5, 12, 19, … 등무수히많음(단순나머지함수는 X를정확히찾아내는것이불가능하지만개념이해를위해제시)

7
X Y
해쉬값(Y)에서원래입력값(X)을알아내는방법(SHA-1 이라는해쉬함수를쓰는경우)
정확한 Y가나오는 X를찾으려면Y가 160비트일때최대 2160번시도SHA-1(X) 계산X에모든수대입SHA-1
SHA: Secure Hash Algorithm
공개표준해쉬함수로결과값은160비트로고정

●입력에서출력으로한방향계산은쉬우나역으로출력값에서입력값을계산하는것은불가능하거나매우어려운함수. 역함수계산은대입법뿐
●출력값은미리정해진길이(비트수)의데이터로규정. 모든출력값은같은길이
●Y는 X의요약. 주로 X의무결성을검증하는용도로사용
●Hashcash는 160비트SHA-1, 비트코인은 256비트SHA-2 를사용8
X Y
SHA-1(X) 계산대입SHA-1

9
●해쉬를거꾸로생각해보자. 한쪽방향계산은아주많은계산을해야하나, 반대방향은금방계산할수있다
●역방향계산에대한제약을조금풀면?
. 원래의해쉬는정확한 Y값을계산하는 X를찾아야하기때문에어려움. Y가주어지고대응하는 X를찾기위해모든 X값을대입하는과정을완화
●어떤수(K) 보다작은 Y가나오는 X값을찾기. K = 000…00111111…111 라면?
X YSHA-1
SHA-1(X) = Y 인 X 찾기에서SHA-1(X) ≤K 인X 찾기로완화

10
X YSHA(X)
X SHA(X)
Y가 160비트일때20비트모두 0
140비트아무숫자1001………010
160비트특정숫자제약완화2160 중하나에서 220 중하나로!
=
00…0 10………..1
X=0부터차례로대입해봐야함10
X YSHA(X)
X SHA(X)
Y가 160비트일때20비트모두 0
140비트아무숫자1001………010
160비트특정숫자제약완화2160 중하나에서 220 중하나로!
=
00…0 10………..1
X=0부터차례로대입해봐야함
해쉬
제약
완화

●한쪽방향계산은쉽고역방향계산은적절한난이도
●역방향계산하는쪽은어느정도노력소모. X값찾기
●정방향계산하는쪽은단번에계산하여정답인지확인이가능. X값을해쉬하여제약을만족하는지확인
●스팸메일필터로서의용도!
. 메일을보내기위해노력(계산)을들여야함 (역방향)
. 메일받은사람이보낸사람의노력을들였는지확인하는것은단번에함 (정방향)
11

12
Hashcash 스팸메일필터링12
Hashcash 스팸메일필터링http://www.icsi.berkeley.edu/pubs/networking/2008-ccs-spamalytics.pdf
스팸메일송신자수신자1
수신자2
수신자n
스팸메일은천만번중하나정도의효과(2008 미국조사)
보낼때 1인당시간이많이걸린다면? 즉비용이많이든다면?
→스팸메일을보내는노력에비해효과가현저히떨어짐한명당 1초씩걸리면?
→백일에 1명정도의효과→가치상실수신자가송신자의노력을 ‘검증’할수있다면?
정상사용자는문제없다→보내기를누르고 1초후에전송메일보낼때노력을했다는증거를함께보내자Proof of Work

X-Hashcash: 1:20:130303:[email protected]::McMybZIhxKXu57jd:FOvXX
Hi there,

From: [email protected]: [email protected]
Random Counter 변수Hash
(160bit SHA-1) 0xAB982C81………
160비트=40 Hexa number
0x000006CB985C21…
Counter값을찾으면그값(FOvXX)이포함된헤더와함께메일전송해쉬함수의특성상수신자는한번계산으로이값의앞자리 20비트가 0이라는조건을만족하는지검증가능……..
앞자리 20비트가 0인counter 값을찾을때까지counter 값을바꿔가며Hash 계산X값Y값

14
. “일일이대입"을구현하기위해counter 값이있음. 입력값(X)의제일뒤에counter 값필드를두고그값을차례로증가하여 (즉입력값을바꿔가며) 조건에맞는 Y가나올때까지 Hash 계산을반복. 같은해쉬값의반복적이용을막기위해수신인은한번받은해쉬값을보관. 메일을받으면이미받은해쉬인지확인Random Counter1:20:130303:[email protected]::McMybZIhxKXu57jd:FOvXX
수신자주소X값14
. “일일이대입"을구현하기위해counter 값이있음. 입력값(X)의제일뒤에counter 값필드를두고그값을차례로증가하여 (즉입력값을바꿔가며) 조건에맞는 Y가나올때까지 Hash 계산을반복. 같은해쉬값의반복적이용을막기위해수신인은한번받은해쉬값을보관. 메일을받으면이미받은해쉬인지확인Random Counter1:20:130303:[email protected]::McMybZIhxKXu57jd:FOvXX
수신자주소X값
X-Hashcash 상세

●해쉬를역으로활용하여메일보내는노력(Proof-of-work) 을증명. 노력이신뢰를높인다
●검증은간편
●제3자개입없이개인대개인간의검증15

Hashcash 메일헤더를블록형태로표현하면17
버전0인비트수날짜수신자주소랜덤카운터메일마다바뀌는값바뀌는값에맞춰찾아내야하는값메일이아닌다른형식의블록에도Proof-of-Work 를적용할수있다블록SHA( 블록) ≤K 인카운터값찾기Hashcash 메일헤더를블록형태로표현하면17
버전0인비트수날짜수신자주소랜덤카운터메일마다바뀌는값바뀌는값에맞춰찾아내야하는값메일이아닌다른형식의블록에도Proof-of-Work 를적용할수있다블록SHA( 블록) ≤K 인카운터값찾기

블록에 Hashcash 아이디어적용18
바뀌는값바뀌는값에맞춰찾아내야하는값블록내용을보증하기위한노력의증거불특정다수가블록내용을검증하고그노력에대한보상을해주는체계내용이늘어나면?
SHA( 블록) ≤K 인nonce 값찾기블록Nonce( 카운터)
블록에 Hashcash 아이디어적용18
바뀌는값바뀌는값에맞춰찾아내야하는값블록내용을보증하기위한노력의증거불특정다수가블록내용을검증하고그노력에대한보상을해주는체계내용이늘어나면?
SHA( 블록) ≤K 인nonce 값찾기블록Nonce( 카운터)

블록 0
Nonce( 블록0) 비트코인 사용원리
해쉬
블록 1
블록 0의
해쉬값
SHA( 블록0)
Nonce( 블록1)

●스팸메일필터보다중요한응용을위해난이도강화
●해쉬함수는공개표준해쉬함수중256-bit SHA-2 (SHA-256) 사용
●K값강화. 해쉬결과범위조정. 256비트중선행0비트수는 40개→앞의 40자리는 0, 나머지 216자리는튜닝가능블록체인에서난이도강화20
●스팸메일필터보다중요한응용을위해난이도강화
●해쉬함수는공개표준해쉬함수중256-bit SHA-2 (SHA-256) 사용
●K값강화. 해쉬결과범위조정. 256비트중선행0비트수는 40개→앞의 40자리는 0, 나머지 216자리는튜닝가능블록체인에서난이도강화20

블록의연결- Chain of Hash values
21
Block 100
Chain
Block 101
SHA256
Block 100 에대해SHA256
해쉬값의앞자리 40비트가 0
이되는Nonce 값을찾기SHA256
00000000006CB9…….80AE 0x
40비트256비트표준해쉬함수SHA256 사용전체블록을해쉬할필요가있을까?
SHA256
Nonce Nonce
Block 100 해쉬값Block 99 해쉬값블록의연결- Chain of Hash values
21
Block 100
Chain
Block 101
SHA256
Block 100 에대해SHA256
해쉬값의앞자리 40비트가 0
이되는Nonce 값을찾기SHA256
00000000006CB9…….80AE 0x
40비트256비트표준해쉬함수SHA256 사용전체블록을해쉬할필요가있을까?
SHA256
Nonce Nonce
Block 100 해쉬값Block 99 해쉬값

22
블록헤더만해쉬한다-효율성Block 100 Block 102 Block 101
●블록의내용인payload 를해쉬하여블록헤더에포함
●해쉬는내용의요약. payload 의해쉬가헤더에포함. 헤더만해쉬해서연결해도본문(payload) 을요약한효과SHA25680Bytesheader
(이전블록과payload 정보에서생성)
SHA256 블록99 해쉬값블록100 해쉬값블록101 해쉬값블록100 payload 해쉬값Hash
SHA256
블록101 payload 해쉬값블록102 payload 해쉬값Hash Hash
payload
22
블록헤더만해쉬한다-효율성Block 100 Block 102 Block 101
●블록의내용인payload 를해쉬하여블록헤더에포함
●해쉬는내용의요약. payload 의해쉬가헤더에포함. 헤더만해쉬해서연결해도본문(payload) 을요약한효과SHA25680Bytesheader
(이전블록과payload 정보에서생성)
SHA256 블록99 해쉬값블록100 해쉬값블록101 해쉬값블록100 payload 해쉬값Hash
SHA256
블록101 payload 해쉬값블록102 payload 해쉬값Hash Hash
payload

23
블록체인의구조이전블록해쉬현재블록의트랜잭션요약및기타정보nonce
블록크기현재블록의트랜잭션정보버전이전블록해쉬현재블록의트랜잭션요약및기타정보nonce
블록크기현재블록의트랜잭션정보버전이전블록해쉬현재블록의트랜잭션요약및기타정보nonce
블록크기현재블록의트랜잭션정보버전
23
블록체인의구조이전블록해쉬현재블록의트랜잭션요약및기타정보nonce
블록크기현재블록의트랜잭션정보버전이전블록해쉬현재블록의트랜잭션요약및기타정보nonce
블록크기현재블록의트랜잭션정보버전이전블록해쉬현재블록의트랜잭션요약및기타정보nonce
블록크기현재블록의트랜잭션정보버전

●블록은이전블록의해쉬값을포함. 새블록을만들기위해이전블록을가지고충분한노력을들인증거- Proof-of-work
. 다른곳에서만든블록이정당한지검증이용이
●체인이길어질수록블록의신뢰도증가
●블록의내용은따로해쉬하여헤더에저장. 블록의검증을헤더만가지고할수있음. 실제비트코인은단순해쉬가아니고좀더복잡한방법(이진해쉬트리)을이용하나여기서는생략
●새블록은누가만드나?
24

블록체인네트워크25
노드블록체인각노드가블록체인을가지고모두독자적으로작업하는P2P 네트워크블록체인네트워크25
노드블록체인각노드가블록체인을가지고모두독자적으로작업하는P2P 네트워크

●각노드, 즉컴퓨터는독자적으로블록체인의내용을검증할수있다. 아무도믿지않아도됨
●각노드는독자적으로블록체인에블록을추가할수있다. 그러나 1등만전파됨→다른노드가인정해줌
●모든노드는정해진규칙하에서동작. 자신의이익을극대화하는방향으로규칙이설계
●참여를유인하는인센티브가있어야한다. 비트코인은 1등에게신규발행비트코인과블록내거래의수수료지급. 이과정이채굴(mining) 임. 다른응용에서도적절한인센티브를설계해야함26

●블록을만드는데노력을들였다는것을객관적으로증명하는방법. 누구나블록을만들자격이있다. 누구나블록이정당한지검증할수있다
●Distributed Ledger Management
. 블록을연결하여하나의공통문서(기록혹은장부, ledger)를축적해가는방법. 블록이연결될수록이전블록의신뢰는점점커짐. 위에쌓이는새블록은아래에놓인이전블록이옳다는것을검증하고쌓인것이기때문. 체인의구조에의해직전블록의해쉬값만검증해도모든블록이옳다는것을검증한것임. (주의) 여기서검증했다는것은많은노력을들여블록체인을만들었다는의미이며완전무결하다는의미는아님
●중앙집중적인관리주체없이블록체인의동작과검증이가능
●완전분산화된Peer-to-peer 네트워크에서운영이가능한아키텍처. 피어가많을수록더안전해짐27

●블록체인을통화에적용한응용사례. 블록의 payload에거래내역보관
●Hashcash의proof-of-work 는정체가뭔가?
. 이메일을보내기위해노력한증거, 즉신뢰
●통화의정체는뭔가?
. 같은가치의다른것으로교환할수있다는신뢰. 신뢰는제3자에의해보증됨 . 발행국가. 이신뢰는절대 100%가아님. 신뢰가가치임
●일정한노력을들여획득했다는신뢰를줄수있으면통화로쓸수있다는아이디어28

●채굴, Mining 은새블록을만드는작업. 이전블록의해쉬값을찾아낸것이Proof-of-work
. 채굴은조금씩코인을쌓아가는과정이아니라 10분에한번씩벌어지는달리기경주나로또와유사. 전세계에서채굴에참여한모든컴퓨터가평균 10분에한번씩전세계의거래(트랜잭션)를모아조건을만족하는 Hash값을구하여새블록생성
●새 Block이만들어지면즉시다른노드에전송. 계산중에다른노드가만든블록이입수되면즉시계산중단하고그다음블록을만드는계산에착수. 새블록이블럭체인에추가된노드만채굴보상금수령 (신규발행+ 거래수수료: 코인베이스거래)
. 평균 10분에한노드만비트코인을받도록지속적으로튜닝
●동시에여러노드가채굴에성공하면?
. 채굴보상금은즉시사용할수없음 (수령후 100 블록추가된이후)
29
●채굴, Mining 은새블록을만드는작업. 이전블록의해쉬값을찾아낸것이Proof-of-work
. 채굴은조금씩코인을쌓아가는과정이아니라 10분에한번씩벌어지는달리기경주나로또와유사. 전세계에서채굴에참여한모든컴퓨터가평균 10분에한번씩전세계의거래(트랜잭션)를모아조건을만족하는 Hash값을구하여새블록생성
●새 Block이만들어지면즉시다른노드에전송. 계산중에다른노드가만든블록이입수되면즉시계산중단하고그다음블록을만드는계산에착수. 새블록이블럭체인에추가된노드만채굴보상금수령 (신규발행+ 거래수수료: 코인베이스거래)
. 평균 10분에한노드만비트코인을받도록지속적으로튜닝
●동시에여러노드가채굴에성공하면?
. 채굴보상금은즉시사용할수없음 (수령후 100 블록추가된이후)
29
비트코인
채굴

블록체인분기30그림블록체인분기30그림https://en.bitcoin.it/wiki/File:Blockchain.png
검은색은메인블록각노드는채굴에서긴블록을선호따라서가장긴블록으로수렴일시적으로두개의체인이형성다음블록이먼저채굴된것이살아남게됨분기가두블록까지연장된경우최초블록block 0
b#1 b#n
b#n+1
b#n+1
긴블록선호정책으로해소각노드의이익을극대화하는정책짧은블록에노력을투자하면손해높이깊이

●각블록체인은모두정당한기록임. 다른채굴자가만들어서서로다른거래가들어있고, 해쉬값도다른형태
●분기의수렴. 노드가같은높이인데서로다른블록체인을받으면길이가긴것을택함. 시간이지나면서짧은블록체인은점차사라지게됨. 실제로깊이가 1인분기는 1주에 1번꼴로발생하나 2인경우는거의없음. 버그(2013 년 3월)를제외하면최장분기는 4 블록(2번발생)
●정산. 거래에는영향이없음-거래를블록으로묶을때서로다르게묶은것일뿐. 짧은블록체인에포함되었던거래는채굴자가다시검증. 코인베이스거래는영향을받음-분기된블록을만든채굴자중하나에게만보상금제공. 100 block maturation time
. 비트코인에서는 100단계까지늘어난후에실제발급된비트코인을사용하도록하라는제안(규정?)을하고있음- 10 분에하나씩추가되면 100단계가되는데 1000분= 16 시간 40분이걸림. 즉하루정도후에사용할수있게됨.
31

●블록체인의 payload에거래기록보관. 전세계에오직하나의거래장부(ledger) 만존재 (궁극적으로는)
●각비트코인은거래내역이아니라실세계의화폐(코인)와유사. 화폐인데액면가가미리정해진것이아니라거래의결과에의해결정됨. 예) 100 원내고 30원을쓰고 70원을거슬러받으면. 내 100원이사라지고. 새로내 70원이생기고. 상대방의 30원도새로생긴다
●디지털서명과지급할주소표현은비대칭키이용32

33
이전블록해쉬값Payload 해쉬값Hash
거래1(코인베이스거래)
거래2
거래n
입력값UTXO
출력값-신규코인생성UTXO: Unspent Transaction Output
아직소비되지않고내지갑에남아있는비트코인화폐출력값-신규코인생성입력값UTXO
이거래가검증되고승인되면입력값은소멸되고(화폐가소비됨) 출력값은새로생성됨.
이출력값은다른거래에서입력값으로사용됨(cf) 코인베이스거래는매칭되는입력값없이생기는것으로여기서의생성과는다른경우…

거래세부구성34
입력값UTXO 를지시출력값판매자주소에생성(대개공개키)
출력값내주소로잔액생성출력값다른거래의출력과거의거래현재거래signature
출력값은한번쓰면사라짐→검증단순수수료= 총입력값-총출력값 (자동지정)
수수료가높으면채굴에서우선순위가높아짐거래세부구성34
입력값UTXO 를지시출력값판매자주소에생성(대개공개키)
출력값내주소로잔액생성출력값다른거래의출력과거의거래현재거래signature
출력값은한번쓰면사라짐→검증단순수수료= 총입력값-총출력값 (자동지정)
수수료가높으면채굴에서우선순위가높아짐

35
두가지키의쌍으로생성(PrivateKey, PublicKey) 혹은 (개인키, 공유키)
개인키로암호화한것은공유키로, 공유키로암호화한것은개인키로풀수있음개인키는자신이보관하고공유키는공개함개인키공유키디지털사인비밀메시지(지급주소)
내공유키로풀리면내개인키로암호화한것임내공유키로암호화한것은내개인키로만풀수있음

구매자
10,000
10,000
10,000
판매자
7,000
7,000
7,000-a
결과
구매자
3,000
2,750
3000-b
비고수수료
0 수수료
없음
250 채굴
수수료
(가변)
a+b 수수료
화폐
비트코인
신용카드

. 신뢰는불특정다수의채굴(Proof of Work) 과정에서온다. 검증은각채굴자의개별적검증. 비트코인에서는이동한기록. 지불할때내가가진화폐를주고잔액을받는다. 비트코인에서는내가가진코인을없애고수신인의새코인을만들고, 잔액만큼의내코인도37
. 신뢰는불특정다수의채굴(Proof of Work) 과정에서온다. 검증은각채굴자의개별적검증. 비트코인에서는이동한기록. 지불할때내가가진화폐를주고잔액을받는다. 비트코인에서는내가가진코인을없애고수신인의새코인을만들고, 잔액만큼의내코인도37
비트코인의
거래
요약

슬기로운 탐구생활

비트코인을 얻는 방법에는 대체로 세 가지가 있습니다. 즉 이를 거래소에서 구입하는 것과 상품 및 서비스를 제공한 대가로 받는 것과 새로운 비트코인을 채굴하는 방법입니다. 채굴(mining)은 블록체인이라고 불리는 비트코인의 공공 원장에 거래 기록을 추가하는 과정을 가리킵니다. 채굴의 존재 이유는 모든 거래의 정확성을 확인하고 네트워크 상에 있는 모든 참여자들이 이 원장을 열람할 수 있도록 하려는 것입니다. 이는 또한 합당한 비트코인 거래와 다른 곳에서 쓴 돈을 다시 지출(re=spending)하는 것을 구분하는 데도 사용됩니다.

이러한 네트워크를 블록체인이라고 부르는 이유는 이는 그야 말로 블록이 체인처럼 연결되어 있기 때문이며 이는 일정한 기간 동안에 이뤄진 모든 거래의 리스트를 가리킵니다. 거래의 블록이 생성될 경우 채굴자들(miners)은 이를 기록에 남기게 됩니다. 이들은 이 블록 정보에 복잡한 수학적 공식을 적용하고 나중에 이를 무작위적으로 보이는 문자와 숫자의 순서인 '해시(hash)로 바꿉니다.

해시는 거래 블록에 대한 정보로만 구성되지는 않고 다른 데이터도 포함됩니다. 무엇보다 중요한 것은 블록체인에 저장된 과거 블록의 해시도 포함된다는 점 입니다. 거래 블록 같은 데이터 집단으로부터 해시를 생성하는 것은 그렇게 어려운 일은 아니지만 해시 문자열을 보고 어떤 데이터가 사용되었는지를 알아내는 것은 거의 불가능에 가깝습니다. 더구나 모든 해시는 독특하며 비트코인 블록에서 단 한 문자만 변경시켜도 해시 문자열은 모두 바뀌게 됩니다.

위의 예에서 알 수 있다시피 인풋으로 얼마나 많은 데이터가 사용되었든 관계없이 해시는 항상 길이가 같습니다. 이 같은 특성으로 인해서 해시는 마지 디지털 밀랍봉인과 같은 역할을 합니다. 누군가가 거래 한 블록을 건드렸을 경우 이 해시는 즉각적으로 변경되며 블록체인 상에 있는 다른 모든 해시 순서도 바뀌게 됩니다. 따라서 블록체인 네트워크 내에서 사기를 시도할 경우 이는 아주 쉽게 포착될 수 있습니다.

한 마디로 채굴자들은 모든 거래를 확인하고 그럼으로써 모든 거래가 정상적임을 확인해주는 일을 함으로써 비트코인 커뮤니티에 공헌을 하는 것입니다. 새로운 거래가 '봉인(seal-off)'될 경우(즉 채굴자가 정확한 해시 순서를 성공적으로 만들어냈을 경우) 채굴자들은 보상을 받게 됩니다.

2017년 10월 현재 채굴 보상은 블록당 12.5 BTC로 정해져 있으며 이 액수는 21만 블록이 지날 때마다 절반으로 줄어들게 되어 있습니다. 전체적인 비트코인 발행 수는 한정되어 있고 따라서 더 많은 코인이 채굴될수록 그 가치는 더욱 높아질 수밖에 없습니다. 따라서 블록당 비트코인의 수는 불가피하게 줄어들 수밖에 없지만 채굴자에게 주어지는 보상 가치는 전과 동일하거나 더 높아지게 됩니다.

이론적으로는 다양한 종류의 정보로부터 해시를 생산하는 것은 아주 쉬우며 컴퓨터를 통해 얼마든지 가능한 일입니다. 그런 까닭에 사용자들이 매초마다 수천 개의 거래 블록으로부터 해시를 만들어내고 몇 분마다 여러 개의 BTC를 가져가는 일이 없도록 하기 위해 비트코인 네트워크는 이 프로세스를 어렵게 만들어야 했던 것 입니다.

이는 소위 '작업증명(PoW)'을 통해서 이루어집니다. 이는 서비스 요청자로부터 일정한 작업을 요청하는 시스템을 의미하며 많은 경우 컴퓨터의 프로세싱 시간을 가리킵니다. 작업증명을 만들어내는 일은 그 가능성이 낮은 무작위적 과정으로서 유효한 작업증명을 생성하려면 상당한 정도의 시행착오를 겪어야 합니다. 비트코인에 있어서 해시는 그러한 작업증명의 역할을 합니다. 채굴활동을 좀더 어렵게 만들기 위해 '비트코인 채굴난이도(Bitcoin Difficulty)'라는 것이 실행되기도 합니다. 이는 새로운 블록을 찾아내는 가장 쉬운 채굴 방법과 비교해서 얼마나 어려운지를 측정하는 기준입니다.

이 측정 기준은 매번 2016 블록을 처리할 때마다 다시 계산이 됩니다. 이러한 방법을 도입한 이유는 한 블록을 채굴하는데 소요되는 시간을 약 10분 정도로 일정하게 유지하기 위해서입니다. 채굴꾼들이 네트워크에 점점 더 많이 참여함에 따라 블록 생성률은 불가피하게 높아질 수밖에 없습니다. 그래서 난이도가 다시 계산된 다음에 그 난이도는 블록 생성률을 다시 떨어뜨리기 위해 올라가야 합니다. 사기성이 농후한 채굴꾼이 만들어낸 일정한 난이도 수준에 미치지 못하는 블록은 네트워크 상의 다른 참여자들에 의해 거부되고 그럼으로써 아무런 가치를 갖지 못하게 됩니다.

따라서 이러한 과정은 상당한 정도의 노력이 필요하게 되며 이 모든 과정을 통해서 새로운 화폐가 서서히 생성되는 것 입니다. 새로운 코인이 발행되는 속도는 금 같은 1차 상품이 채굴되어 생산되는 속도와 비슷하며 그런 까닭에 이 과정을 채굴이라고 부르는 것입니다.

채굴기는 크게 채굴용 소프트웨어와 채굴용 하드웨어로 구분할 수 있습니다. 전자는 말 그대로 채굴 연산을 수행하는 소프트웨어이며, 후자는 그 소프트웨어를 구동하기 위한 하드웨어를 말합니다. 초창기의 비트코인에서는 비트코인 클라이언트(지금의 Bitcoin-Core)가 그 자체로 채굴 소프트웨어의 역할을 했으며, 채굴용 하드웨어는 평범한 PC의 CPU였습니다. 당시 사토시 나카모토는 "CPU만 있다면 누구나 공평하게 똑같이 경쟁할 수 있으니 (CPU 채굴이) 좋다" 며 CPU만을 이용한 채굴을 옹호하였고, GPU로 비트코인을 채굴하는 행위를 최대한 미루어야(postpone the GPU arms race) 한다고 말하기도 했습니다.

하지만 비트코인에 사용되는 SHA-256 해시 알고리즘은 그 특성상 CPU보다 GPU를 이용한 연산이 압도적으로 빨랐고, 이것은 돈이 된다는 것을 의미했습니다. 이에 따라 GPU 채굴 붐이 시작되었으며, 이러한 추세는 2014년 즈음까지 계속되었습니다. 하지만 이 판도는 ASIC를 이용한 채굴 장비가 등장하면서 급격히 붕괴하였습니다. ASIC는 주문형 반도체를 이르는 말로, 여기에서는 하드웨어 단에서부터 채굴 연산만을 수행할 수 있도록 설계된 집적회로를 말합니다. Bitmain사의 Antminer를 필두로 한 ASIC 채굴장비들은 채굴 이외에는 아무 쓸모 없는 실리콘덩어리에 불과했으나, 채굴 성능만은 CPU나 GPU에 비교할 수 없을 정도로 빨랐기에 GPU 채굴 장비를 빠른 속도로 대체하였습니다.

ASIC 채굴기 제조업체와 채굴기 보유자가 하나의 세력처럼 자리잡아 "1CPU당 1표", "탈중앙화"라는 비트코인의 정체성을 위협하기 시작하자, 후발주자인 이더리움 등의 암호화폐는 ASIC 제작이 어려운 독자적 해시 알고리즘을 채택하기 시작했습니다. 이는 GPU 채굴 수요를 또 다시 폭증시켰고, 결국 2017년경에는 그래픽카드 공급의 대대적인 부족이라는 결과를 낳게 된 것 입니다.

저러면 그냥 CPU 전용으로 회귀시키면 되지 않을까 싶겠지만, 일단 생성된 블록체인은 되돌릴 수가 없고 새로운 화폐를 만든다고 해도 제온이나 에픽이 동날 가능성이 큽니다. 비트코인 채굴 하드웨어에는 크게 CPU 마이너, GPU 마이너, ASIC 마이너의 3종류가 존재한다고 할 수 있습니다. 이 중 CPU 마이너와 GPU 마이너에는 일반적인 컴퓨터 부품이 사용된다. CPU 마이너보다는 GPU 마이너가 압도적으로 많이 사용되므로, 아래에서는 주로 GPU 마이너에 대해 설명합니다.

암호화폐의 채굴 난이도가 지속적으로 상승해 일반 컴퓨터로는 채굴이 사실상 불가능해졌습니다. 때문에 채굴을 전문적으로/효율적으로 할 수 있는 시스템이 필요했고 그로 인해 등장한 게 채굴기입니다. 보통 채굴에 큰 영향을 주지 않는 CPU, 램, 저장장치는 싼 것을 장착해 비용을 절감하고 제일 중요한 그래픽카드를 여러 개 끼웁니다. 이때 발열을 잡기 위해 그래픽카드를 메인보드에 직접 장착하는 대신 별도의 받침대에 장착하고 라이저 카드를 이용해 그래픽카드와 메인보드를 연결합니다.

2017년 11월 기준, 암호화폐 중 비트코인의 채굴 난이도는 산업용 전기료로도 감당하기 힘들 만큼 높아졌습니다. 따라서 신규로 시장에 유입되는 새로운 암호화폐를 노릴 게 아니면 그만두는 게 좋습니다. 채굴기 돌릴 전기로 고철을 재활용하는 게 더 이익입니다. 무엇보다 산업용 전기 혹은 산업용 보다 더 저렴한 요금으로 책정받는 농업용 전기로 채굴하는것은 한전이 정해놓은 약관을 위반하는 행위이기 때문에 한전 직원이 현장실사를 하던 도중에 적발하면 그 즉시 그동안 사용한 요금에 대한 추가 징수와 가산세를 지불해야 하는 일이 발생하므로 단가가 비싼 가정용 혹은 일반용 전기를 써야만 합니다. 무엇보다 단가가 싼 전기로 채굴하는 것에 대한 사회적 시선또한 곱지않은 점 까지 한몫 하기도 있습니다.

그래픽카드를 여러 장 장착하기 때문에 온도를 쉽게 잡기 위해 그리고 조립을 편하게 하기 위해 부품이 외부에 노출되는 프레임을 사용합니다. 하단부에 메인보드와 파워를 장착하고 상단부에는 라이저 카드와 그래픽카드를 장착합니다. 규격화 되어 있는 게 아니고 수많은 업자들이 제작하는 거라 프레임의 길이나 형태가 다 제각각이니 자신이 쓰려는 부품에 알맞는 프레임을 골라야 합니다. 길이가 너무 짧아서 그래픽카드 간의 간격이 좁아 발열을 못 잡거나, 그래픽카드는 6개인데 그래픽카드 고정용 나사 구멍이 5개라 하나를 장착 못하는 경우가 생길 수 있습니다.

일반적으로 ASIC이 개발 안 된 암호화폐의 경우 그래픽 카드를 동원해 채굴하고 FPGA나 ASIC이 개발되면 넘어가는 형태로 나옵니다. 이때문에 아직 ASIC이 개발안된 이더리움이 흥할 때 RX580 등의 신규 그래픽 카드 출시가 겹쳐서 한동안 그래픽카드 물량난이 일어난 적이 있습니다.

그래픽 카드를 여러 개 쓰는 만큼 안정적인 파워 공급이 필수입니다. 80플러스 인증은 기본으로 PCIe 6+2핀을 여러개 제공하는 파워 서플라이를 주로 사용합니다. 약 20만 원이 넘어가는 80플러스 플래티넘 인증을 받은 고용량(1200W+)의 파워 서플라이도 많이 사용하나 투자비용을 아끼기 위해 상대적으로 저용량(700W, 800W)의 파워 서플라이를 2개 묶어서 동시에 사용하는 경우가 많습니다. 비용절감을 위해 저가 부품을 주로 씁니다. 다만 메인보드는 잘 보고 사야 합니다. 채굴기 수요가 증가하자 채굴용 메인보드가 따로 나왔습니다.

현재 가장 효율이 좋은 건 ASIC 마이너이지만, 웬만하면 ASIC 마이너에 뛰어드는 건 하지 않는 게 좋은데 ASIC 채굴기가 개발된 암호화폐는 일반적으로 이미 채굴이 많이 진행되어서 상위권 채굴업자가 대량의 코인을 독점하고 있는 경우가 대다수입니다. 따라서 그래픽 카드 마이너마냥 ASIC 마이너를 샀다간 본전도 못 뽑을 수 있습니다. 그런데도 그래픽카드 마이너가 득세하는 이유는 간단한데 신규 암호화폐의 GPGPU 채굴방법이 나오는 데는 얼마 안 걸리기 때문에 신규 화폐를 선점해서 채굴을 하면 어느 정도 수지타산이 맞기 때문입니다.

비트코인 트랜잭션 작동원리

post-thumbnail

비트코인 공부를 한 후에, 이더리움에 대해서 알아보기 위해 이더리움 백서를 읽다보면, UTXO란 것이 나온다. 이 UTXO는 비트코인의 트랜잭션 모델에 관한 것이다.

이러한 UTXO에 대한 간략한 설명이 나와있긴 하지만, 어떤 식으로 UTXO가 생성되고 사용되며, 비트코인의 트랜잭션이 어떤 식으로 이루어지는지 좀 더 자세히 알아보고 싶어 공부해보게 되었다.

Unspent Transaction Output

비트코인 네트워크에선 UTXO를 소모해서 새로운 output을 만들어낸다.

input 스크립트에 의해 5btc가 소모되었고, cashier에게 지급하기 위한 1btc가 output 스크립트로 소모되었다. 그리고 transaction fee와 cashier에게 지급한 btc를 제외한 나머지 change는 나에게 다시 돌아와야 하는데, 이때, 새로운 output 스크립트를 만들어서 나의 계좌로 다시 들어온다.

중요한 것은 초기에 나의 5btc는 input 스크립트에 의해 소모되었으므로 새로운 output 스크립트로 나의 계좌에 돌아와야 한다는 것이다!

나의 입장에서 UTXO는 트랜잭션 이전에는 5btc에 해당하는 값이었고, 트랜잭션 이후에는 3.9btc에 해당하는 값이다.

그러나, 이러한 transaction 하나만으론 어떤 output이 unspent이고, 어떤 것이 spent인지 알수가 없다. 따라서, 다른 transaction도 함께 봐야 한다.

트랜잭션의 구조

비트코인의 트랜잭션은 input과 output 스크립트를 가지며, 한번 소비된 스크립트는 다시 소비될 수 없다. 또한, 위와 같이 한 트랜잭션의 input script가 다른 트랜잭션의 output script를 reference함으로써 partial order가 만들어진다.

이처럼 input과 output은 serialize(직렬화)되어서 stack machine으로 실행된다.

여기서 stack machine이 무엇일까?

가상머신(Virtual Machine)

컴퓨터 플랫폼과 실제 사용자 간의 환경을 조성해주는 소프트웨어이다.

개인 컴퓨터 안에 존재하는 또 다른 컴퓨터라고 이해하면 편하다.(물리적으로 간섭하진 않는다.)

사용목적에 따라 두 종류의 가상머신으로 나눌수 있는데, 하나는 process virtual machine이고, 또 하나는 system virtual machine이다.

Process Virtual Machine

보통 컴퓨터 프로그램은 해당 컴퓨터 머신의 프로세서(x86, x64, ARM)나 운영체제(Windows, MacOS, Linux)에 따라 다르게 컴파일을 해서 사용해야 한다.

하지만, process virtual machine을 사용해 머신에 가상머신을 환경에 맞게 설치하면 가상머신 위에서 실행시키는 프로그램을 머신의 환경과 독립시킬 수 있다.

즉, process VM의 목적은 컴퓨터 프로그램을 머신환경에 영향을 받지 않고 실행함에 있다.(다양한 하드웨어와 소프트웨어 환경에서 실행될 수 있다.)

예시로는 java virtual machine(JVM), .NET Framework(C#), V8(JavaScript) 등이 있다.

System Virtual Machine

실제 운영체제의 모든 기능을 제공해주는 가상머신이다.

MacOS에서 windows10을 사용하는 등의 예시가 있다.(아마도. )

Script

스크립트 언어는 이미 실행되고 있는 프로그램의 상태나 동작을 변경하기 위한 언어이다.

단독으로 실행되는 프로그램이 아니므로 main 함수가 없어도 되기 때문에 프로그램을 간략하게 작성할 수 있다.

가상머신에 스크립트 언어를 입력하면 바이트코드(bytecode)로 해석(interpret)되어 실행된다.

메모리 관리를 가상머신이 함으로써, JIT(just-in-time) compilation과 같은 최적화 기법을 사용해서 성능이 크게 개선되었다.

일반적으로 java, javaScript같은 언어는 가상머신으로 stack machine을 사용한다.

이는 비트코인 스크립트도 마찬가지이기 때문에 stack machine을 이용한 비트코인 스크립트 구현을 한 번 살펴보겠다.

비트코인 스크립트

P2PKH(Pay to Public Key Hash)

앞서 설명한 비트코인 트랜잭션을 직렬화시켜 다음과 같은 값들을 가져온다.

우선, input script는 unlocking script가 되고, output script는 locking script가 된다.

위의 그림에서 꺽쇠로 되어 있는 값은 변수(?)를 나타내고, 꺽쇠없이 대문자로 되어 있는 것은 명령어를 나타낸다.

위의 직렬화된 스크립트를 stack machine에 집어 넣어서 true가 나온다면, locking script, 즉 output script를 unlocking script(input script)가 소비(spent)할 수 있게 된다.

스택머신의 연산 과정은 다음과 같다.

마지막 명령어인 CHECKSIG의 값이 true가 나오면 해당 트랜잭션은 유효한 트랜잭션이라고 볼 수 있는 것이다.

💡 여기서 한가지 의문점.
굳이 왜 HASH160과 를 사용해서 public key hash값을 비교하는가?
그냥 바로 public key 값만을 비교할 수도 있는데.

이전에 비트코인의 원리에 대해 알아볼때, public key로 전자서명을 복호화할 수 있단 것을 알아봤다. 이러한 전자서명은 트랜잭션에 대한 내용을 해시하여 나온 해시값을 private key로 암호화하여 나온 것이기 때문에, 만약 PubKHash를 사용하지 않고 public key를 사용하게 되면, output script의 거래 내역에 대해서 알기 쉬워진다. 이를 방지하기 위해, public key를 한 번 해시하여 사용하는 것이다.

또, 여기서 public key hash가 바로 비트코인 address이다. 물론 통상적으로 알고 있는 주소값이랑은 다른 형식으로 표현되지만.(base58check encoding을 하지 않았기 때문에.)

Other standard transaction script

위에서 설명한 P2PKH 스크립트 외에도 스택머신에서 마지막으로 남는 것이 booleans인 여러 스크립트를 직접 만들어서 사용할 수도 있다.

그럼에도 불구하고, 표준으로 정해진 다섯 가지 정도의 스크립트가 있다.

이렇게 표준 트랜잭션을 정해놓은 이유는 miner들이 다양한 트랜잭션을 실행하면서 야기될 해킹과 실패의 위험을 방지하기 위해서이다.

비트코인의 트랜잭션은 스크립트 언어를 기반으로 스택머신에 의해 수행된다.

miner들은 블록에 이러한 표준 스크립트를 따르는 트랜잭션들을 수행해서 유효성을 검증한 다음에 블록에 트랜잭션을 추가한다.

UTXO는 input script, 즉 unlocking script에 의해서 소비되며 이렇게 소비된 output script(UTXO)는 재사용될 수 비트코인 사용원리 없기 때문에 만약, change가 있다면, 새로운 UTXO의 형태로 전달된다.

이러한 UTXO의 spent에 관한 합의 알고리즘이 Nakamoto’s consensus이다.

비트코인의 트랜잭션 모델에 한계가 존재하는데 크게 두 가지 정도로 볼 수 있다.

하나는 Turing-complete script가 아니라는 것이고, 또 다른 하나는 bootstrapping cost가 높다는 것이다. 이것에 대해선 비트코인의 한계점을 극복하기 위한 이더리움에 대해서 설명할 때 좀 더 자세히 살펴보겠다.

비트코인 사용원리

출처=Harrison Kugler/Unsplash

출처=Harrison Kugler/Unsplash

비트코인이 또다시 화두로 떠올랐다.

기관들의 유동성이 비트코인 시장으로 대거 몰려들면서 비트코인을 강하게 비판해 온 비평가들조차 연일 사상 최고가를 기록하는, 세상에 나온 지 12년밖에 안 된 비트코인을 함부로 깎아내릴 수 없게 됐다.

적어도 지난 3년이란 시간 동안 비트코인이 아직 건재하단 사실이 증명됐다. 가장 낙관적인 비트코인 지지자들에겐 ‘비트코인이야말로 이 시대의 가장 혁신적인 기술 중 하나’라는 믿음이 더욱더 굳건해지는 시간이다.

하지만 유명 보험기금이나 헤지펀드, 자산운용사들이 다른 투자 상품이나 암호화폐보다도 유독 비트코인만 사들이는 이유가 뭘까?

비트코인은 이전의 수많은 전례와 시행착오들을 기반으로 수십년간의 암호화 기술과 연구를 모아 놓은 집약체다. 비트코인이 개발되기 이전에도 여러 비슷한 시도들이 있었지만 완전한 혹은 완전에 가까운 탈중앙화 시스템을 구현한 디지털화폐는 비트코인이 최초였다.

비트코인 초보 투자자들을 위해서 이것이 무슨 의미인지, 그리고 비트코인이 독보적인 암호화폐가 될 수 있었던 기술적 특징은 어떤 것들이 있는지 소개해 보려 한다.

1. 비트코인은 암호화된 화폐다

사람들이 흔히 오해하는 것과 달리 비트코인 거래 내역은 비공개로 암호화되지 않는다. 사실상 공개돼 있다고 봐야 한다.

하지만 비트코인 시스템은 공개키 암호화 기술을 기반으로 한다. 공개키 암호화 기술이란 디지털 키 시스템의 복잡한 수학 연산을 활용해 데이터를 암호화하고, 암호를 풀 수 있는 열쇠가 없는 사람은 해당 데이터를 볼 수 없도록 데이터를 비공개화하는 컴퓨터과학 분야를 일컫는다.

모든 비트코인 이용자들은 공개키(비트코인을 전송받을 때 쓰이는 공개 주소를 생성할 수 있음)와 개인키를 각각 하나씩 갖게 된다. 이름에서 알 수 있듯 공개키는 공유할 수 있고, 개인키는 반드시 비공개로 저장해야 한다. 개인키가 공개되면 비트코인을 도난당할 수 있는데, 이에 관해선 뒤에서 더 설명하기로 한다.

개인키는 보유한 비트코인에 대한 소유권을 주장하는 데 꼭 필요하다. 엄밀히 말해 비트코인 지갑은 개인키를 저장하지 비트코인을 저장하는 것이 아니다. 비트코인은 블록체인상에 존재하며, 지갑 안에 든 키가 있어야 이용자들은 그 비트코인에 접근할 수 있는 것이다.

개인키는 거래를 승인할 때도 필요하다. 비트코인을 보내려면 거래하는 상대방의 공개 주소가 있어야 한다.

PGP(Pretty Good Privacy) 암호화 방식에 대해 잘 아는 사람이라면 비트코인 거래가 그와 비슷하다는 것을 알 수 있을 것이다. PGP 기술에서 암호화된 통신 기록을 안전하게 보호하는 원리가 비트코인 코드에도 그대로 적용된다. 차이점이라면 메시지 대신 비트코인 화폐를 안전하게 보호하도록 설계됐다는 거다.

비트코인을 대문자 B로 쓰면 비트코인 기술이나 프로토콜을 뜻하고, 소문자 b를 쓰면 디지털화폐를 의미한다.

암호화된 메시지를 전송하는 것처럼 비트코인은 개인간(P2P) 전송 방식으로 거래되며, 특유의 채굴 프로세스(뒤에서 설명할 것임) 때문에 제3자가 거래를 방해할 수 없게 돼 있다.

2. 비트코인은 검열 저항성을 지닌 개방형 블록체인이다

메시지를 보내는 것처럼 자유롭게 전송할 수 있기 때문에 비트코인엔 포용성이란 특징이 있다.

비트코인 창시자인 사토시 나카모토가 처음 비트코인을 개발했을 때 그는 개방형 블록체인을 만들겠다는 의도로 시스템을 설계했다. 이 말은 누구나 비트코인 기술을 활용해 가치를 보유하고 전송할 수 있다는 뜻이다.

사토시 나카모토는 또 검열 저항성을 지닌 시스템을 만들고자 했다. 이는 그 누구도 이용자의 네트워크 참여와 거래를 막을 수 없단 뜻이다. 누구도 이용자 지갑 안에 든 비트코인을 동결하거나 비트코인 거래를 막을 수 없다.

비트코인 거래가 처리되는 방식 때문에 중앙의 어떤 주체도 결제를 통제할 수가 없다. 페이팔(PayPal)이나 벤모(Venmo) 등과 같은 전자송금 서비스와 달리 비트코인은 앞서 언급한 암호화 기술로 인해 돈을 주고받는 사람 간에 직접 결제가 가능하다.

이 시스템의 근간을 이루는 것이 바로 비트코인 네트워크를 위한 올인원 지갑과 서버 역할을 하는 오픈소스 소프트웨어인 비트코인 코어(Bitcoin Core)다. 적합한 하드웨어만 갖추면 누구든지 이 소프트웨어를 다운로드받아 운영할 수 있다. 비트코인 코어는 비트코인 블록체인의 거래 원장 사본을 보관하고, 네트워크 안에 있는 다른 서버에 거래 내역을 알리는 역할도 한다.

풀 노드(full node)를 운영한다는 건 비트코인 프로토콜 관리에 있어서 궁극의 활동을 뜻한다. 비트코인 원장 전체에 대한 감사를 직접 수행하고, 자신이 하는 거래를 알릴 수 있기 때문이다.

하지만 풀 노드를 운영하지 않아도 비트코인 이용자들은 네트워크를 제한 없이 이용하면서 본인의 개인키를 관리하는 지갑을 사용할 수 있다. 단, 거래를 알리려면 다른 사람이 운영하는 네트워크 노드를 신뢰해야 한다.

3. 비트코인 거래는 영원하다

네트워크에서 발생하는 모든 거래의 기록을 보관하는 디지털 원장인 비트코인 블록체인은 변경이 불가능하다. 중앙에 있는 주체가 함부로 변경할 수도 없고, 네트워크를 조작해 보유하지도 않은 코인을 쓰는 일이 일어날 수도 없다.

비트코인 거래는 채굴자들의 글로벌 네트워크에서 기록되고 처리된다. 여기서 채굴자란 장비를 활용해 비트코인을 채굴하거나 유지하는 개인이나 집단을 의미한다. 채굴자들은 채굴 활동에 대한 보상으로 비트코인을 받는데, 이를 ‘블록 보상’이라 한다. 블록체인 시퀀스에서 새로운 블록을 찾아내 그 안에 미처리 상태의 최근 거래를 기록하는 채굴자에게 지급되는 보상을 뜻한다.

채굴을 좀 아는 사람이라면 채굴에 얼마나 많은 (전기 등) 에너지가 들어가는지도 잘 알 것이다. 이는 모두 치열해진 채굴 경쟁 때문인데, 비트코인 가격을 생각해보면 이렇게 많은 에너지가 들어가는 이유도 이해가 된다. 세상에 공짜가 어디 있나!

이렇듯 치열한 경쟁과 많은 에너지를 요구하는 구조가 네트워크를 안전하게 유지할 수 있게 도와준다. 거래는 처리하지만, 거래 원장에는 간섭하지 않도록 채굴자들에게 유인책을 제공하는 것이다. 이 일을 제대로 하지 못하면 채굴자들은 보상을 받지 못하고, 대규모 채굴업체의 경우 하드웨어와 운영비로 수천만달러의 손실을 떠안을 수도 있다.

어떤 채굴자가 거래를 조작한다고 했을 때, 이미 블록체인에 기록된 비트코인 거래를 변경할 수 있는 유일한 방법은 네트워크 내 전체 채굴자의 절반가량이 한 작업보다 더 많은 양의 작업을 수행하는 것이다. 거래 시점이 오래됐을수록 작업 시간은 더 늘어나게 된다.

비트코인 프로토콜을 공격하기 위해 얼마나 많은 에너지가 사용되는지 설명하자면, 비트코인 네트워크가 매년 소비하는 전력량은 오스트리아나 스위스 정도의 국가가 사용하는 연간 전력 소비량과 비슷하다.

따라서 3년 전에 있었던 거래 한건을 변경하려면 수억달러의 비용이 든다. 이론상으론 거래를 되돌리고 다시 쓰는 게 불가능한 일이 아니지만, 탈중앙화된 비트코인 채굴 방식 하에서 채굴 비용을 고려할 때 거의 불가능에 가깝다고 할 수 있다. (그리고 비트코인 역사상 지금껏 단 한 번도 롤백이 실행된 적이 없다)

4. 비트코인은 사실상 몰수가 불가능하다

물론 이용자의 부주의로 인해 코인이 도난당하거나 몰수되는 일이 발생할 수도 있다.

하지만 올바른 예방 대책을 취한다면 비트코인은 사실상 몰수가 불가하다. 개인키나 비트코인을 관리하는 비밀번호를 다른 사람들이 알 수 없도록 잘 보관만 한다면 코인을 보유한 사람이 완전히 통제할 수 있다.

보안을 강화하기 위해서 여러 기기에 코인에 접근할 수 있는 권한을 나눠 놓는 ‘다중서명 지갑’을 설정할 수도 있다. 또 이용자의 코인이 몰수당할 위험에 처했을 때, 가짜 비밀번호를 입력해 빈 계좌를 보여주는 안전 기능을 갖춘 지갑들도 있다.

뿐만 아니라 12~24자로 구성된 비밀문구를 만들어 개인 키를 외운 다음, 지갑을 없애고 대신 머릿속에 비트코인을 보관하는 방법도 있다. 다시 접속하려면 아무 지갑이나 다운받아(웬만한 지갑들은 이 비밀문구 기능을 지원하고 있다) 외워둔 비밀문구를 입력하고 브레인지갑(brainwallet) 속에 든 비트코인에 접근할 수 있다.

비밀문구를 종이에 적거나 극단적인 경우 금속판에 적어 악천 후에도 끄떡없을 정도로 안전하게 보관할 수 있다. 아니면 암호화시켜 USB에 담거나 인터넷 연결이 불가한 컴퓨터인 에어갭 노트북 안에 보관할 수도 있다.

인공위성이나 메시 네트워크(mesh network)를 통해 인터넷 없이 비트코인을 거래할 수도 있다.

5. 비트코인은 탈중화된 디지털 통화 시스템이다

비트코인은 P2P 결제 네트워크이자 개인들의 디지털 은행이다. 비트코인 경제는 코인을 구매하는 소비자들과 거래를 처리하고 유통될 비트코인을 새롭게 만들어 내는 채굴자들, 네트워크에 대한 감사를 실시하고 거래를 알리는 노드 운영자들, 비트코인 네트워크를 기반으로 운영되는 기업들, 그리고 그 사이에 있는 모든 관련자의 힘으로 만들어진다.

또한, 비트코인 경제는 자율 조절이 가능하다. 4년을 주기로 반감기를 통해 채굴할 수 있는 비트코인 수를 줄이는 메커니즘이 자동으로 실행된다. 향후 100년에 걸쳐 마지막 비트코인이 채굴될 때까지 채굴 보상은 점차 줄어들 것이다. 이 반감기가 있어 비트코인 총공급량이 2100만개를 넘지 않을 수 있으며, 가격 상승률도 예측할 수가 있다.

사토시 나카모토는 비트코인 백서 제목을 ‘비트코인: P2P 전자화폐 시스템’이라고 지었다. 보수적으로 봐도 이후 비트코인은 실제 현금처럼 자유롭게 쓸 수 있는 디지털 화폐가 됐다. 하지만 일각에서는 이를 비트코인이 통화로 사용될 목적을 가지고 개발된 것이란 신호로 해석한다.

그런 방식으로 비트코인을 사용할 수도 있으며, 현재 라이트닝 네트워크(Lightning Network) 같은 새로운 확장성 기술들이 거래를 더 저렴하고 빠르게 처리할 수 있는 인프라를 제공하고 비트코인 사용원리 있다.

하지만 궁극적으로 비트코인은 정해진 용도가 없다. 스퀘어(Square)나 마이크로스트레터지(MicroStrategy) 같은 기업들은 기업의 자산을 비트코인으로 바꿔 보관하고 있다.

또한, 비트코인을 검열 저항성을 지닌 개방형 네트워크로 만드는 요소들로 인해 비트코인이 권력을 남용하는 정부에 저항하는 반정부 세력을 후원하는 매력적인 기부 수단이 되거나, 금융 제재 대상이 되는 국가 또는 경제 위기에 처한 국가에 사는 사람들을 위한 금융 생명줄이 되고 있다.

물론 비트코인이 범죄자들에게 매력적인 기술인 것도 사실이다. 그러나 이들은 실제 네트워크 전체 이용자 중 소수에 불과하다. (그렇게 따지면 범죄자들이 현금을 사용하는 것도, 현금의 문제라고 봐야 한다) 그리고 모든 비트코인 거래는 공개적으로 이뤄지므로 불법 거래의 책임을 잘못이 없는 거래자 탓으로 돌리지 않기보다 쉽다. 물론 블록체인에서 일어나는 거래의 흔적을 추적하기 힘들게 만드는 프라이버시 기술들도 나날이 진보하고 있다.

비트코인의 핵심 기술은 이용자 자유와 금융의 자유라는 원칙에 그 뿌리를 두고 있다. 여기서부터 수많은 소프트웨어와 지갑, 프로토콜 등 개발자들이 비트코인의 기능성과 장기적인 지속가능성을 위해 개발하는 제품들이 생겨나고 있다.

이 밖에도 알아야 할 정보들이 무궁무진하다. 비트코인에 비트코인 사용원리 대해 보다 자세히 알고 싶다면 코인데스크가 정리한 "비트코인은 무엇인가"를 참조하기 바란다.

· This story originally appeared on CoinDesk, the global leader in blockchain news and publisher of the Bitcoin Price Index. view BPI.
· Translated by NewsPeppermint.

비트코인 트랜잭션: 원리 알아보기

비트코인 트랜잭션: 원리 알아보기

비트코인 트랜잭션은 지정된 금액의 비트코인에 대한 소유권을 한 개인으로부터 다른 개인으로 이전하기 위한 목적으로 서명된 정보입니다. 트랜잭션은 송금자의 미사용 비트코인, 송금 정보(트랜잭션 ID 또는 트랜잭션 해시로 표시), 송금액, 수령자의 공개 주소 등 모든 정보를 기록합니다. 트랜잭션은 유효성 검증을 위해 비트코인 네트워크로 브로드캐스팅되고, 검증을 통과하게 되면 송금을 위해 블록체인이라고 불리는 온라인 원장으로 이동합니다. 검증된 트랜잭션은 정보 블록에 추가되고, 해당 비트코인 사용원리 비트코인 사용원리 블록은 다른 블록에 연결되어 블록 체인이 만들어집니다.

블록체인 트랜잭션의 원리를 보다 쉽게 이해할 수 있도록 아래에 그림과 상세한 설명을 작성했습니다. 예시에서는 쉽게 설명하기 위해 인물의 이름을 사용했지만 비트코인 트랜잭션의 핵심 장점 중의 하나가 익명성이므로 거래 상대방은 서로의 개인정보를 공유할 수 없습니다. 실제로 비트코인 트랜잭션 완료에 필요한 것은 송금자와 수령자의 주소뿐입니다.

비트코인 트랜잭션의 입력값 및 출력값

알렉스가 나탈리에게 결제 대금으로 1 비트코인을 송금하면 트랜잭션은 다음과 같은 모습이 됩니다.

비트코인 트랜젝션 원리 및 개념 알아보기

이는 단순한 형태의 비트코인 트랜잭션이지만 다른 정보를 추가하면 좀 더 복잡한 구조가 됩니다. 예를 들어 알렉스의 1 비트코인은 이전 트랜잭션을 통해 안드레아스로부터 송금받은 결제 대금입니다. 알렉스가 안드레아스로부터 송금받은 것을 트랙잭션의 입력값이리고 하고, 알렉스가 나탈리에게 결제 대금으로 송금한 것을 출력값이라고 합니다. 입력값에는 항상 소스와 비트코인 금액이 표시되고, 출력값에는 도착지와 수령자 나탈리가 받을 비트코인 금액이 표시됩니다.

이 점을 알면 비트코인 트랜잭션은 다음과 같이 설명할 수 있습니다.

예에서 입력값과 출력값은 하나뿐이지만 비트코인 트랜잭션은 여러 입력값과 출력값을 포함할 수 있습니다. 비트코인 트랜잭션은 자체 인덱스와 시퀀스 번호를 가진 비트코인 사용원리 입력값과 출력값 목록을 포함하고 있습니다. 0번은 항상 첫 번째 항목으로 간주됩니다.

안드레아스와 알렉스 사이의 첫 번째 트랜잭션의 입력값과 출력값의 변화를 주목하십시오. 안드레아스는 이전 트랜잭션을 통해 고객으로부터 송금받은 3 비트코인을 가지고 있고 알렉스에게 1 비트코인을 송금해야 합니다. 비트코인 프로토콜의 놀라운 점은 암호화폐는 분할할 수 없다는 것입니다. 즉, 이 경우 안드레아스가 알렉스에게 1 비트코인만 송금하는 것은 불가능합니다. 그 대신 안드레아스는 알렉스에게 3 비트코인을 모두 보내고 잔금으로 2 비트코인을 받습니다.

트랜잭션 보안

안드레아스로부터 비트코인을 받은 후 알렉스는 자신이 당사자임을 증명해야 나탈리에게 비트코인을 송금할 수 있습니다. 이를 위해 알렉스는 개인키를 가지고 입력값 스크립트를 "풀어야" 합니다. 개인키에 대한 자세한 내용은 비트코인 키 및 주소를 참조하시기 바랍니다.

알렉스가 스크립트를 풀고나면 계속 진행하여 입력값의 비트코인을 쓸 수 있습니다. 나탈리가 알렉스로부터 송금받은 금액을 쓸 수 있으려면 알렉스가 나탈리가 풀어야 할 스크립트를 생성해야 하므로 이 사이클은 계속됩니다. 트랜잭션 버전, 락 타임(트랜잭션이 블록체인에 추가되는 시간), 기타 준수해야 할 세부 규칙 등 추가 정보가 트랜잭션 내역에 포함됩니다.

마지막으로 모든 금융 트랜잭션과 마찬가지로 일종의 신원 확인이 있습니다. 비트코인의 경우 트랜잭션 ID라는 형식으로 확인합니다.

트랜잭션이 생성되면 검증 프로세스를 위해 다른 노드로 전달됩니다. 그러면 검증 목적을 위해 비트코인 네트워크 노드가 해당 트랜잭션의 정보를 조사합니다. 모든 정보가 빠짐없이 있는가? 미사용 비트코인 금액이 실제로 존재하고 쓰지 않은 금액인가? 이중 지불 문제는 없는가? 트랜잭션 서명은 유효한가?

유효성이 확인되면 트랜잭션은 컨펌이 되고 다음 단계를 위해 트랜잭션 블록에 추가됩니다. 이는 마이닝 부분인데 트랜잭션이 블록체인 내에 있기 위해 필요한 것으로서 향후에 다루려고 합니다.

비트코인 관련 기사 보러가기

FX 외환 거래 관련 기사

고지: 본 문서/시각 자료는 개인 의견 및 생각을 바탕으로 작성된 것입니다. 해당 내용은 어떤 종류의 투자 자문 또는 거래 권유로 간주되지 말아야 합니다. 투자 서비스 구매를 강요하거나 미래 투자성과를 보장 또는 예측하려는 의도가 아닙니다. FXTM, 동사의 계열사, 대리인, 이사, 임원 또는 직원은 제공되는 어떠한 정보 또는 데이터에 대해서도 정확성, 유효성, 적시성, 완전성을 보장하지 않으며 이를 바탕으로 한 투자에 기인한 손실에 대해 법적 책임을 지지 않습니다.

위험 경고: 비트코인 사용원리 외환 및 CFD와 같은 레버리지 상품의 거래는 투자위험도가 높습니다. 본인이 감당할 수 없는 금액 이상으로 거래하면 원금 이상의 손실이 발생할 수 있습니다. 노출된 손실 위험을 충분히 이해하지 못한 상태에서 거래하지 말아야 합니다. 거래할 때는 항상 본인의 경험 수준을 고려해야 합니다. 관련 위험을 확실히 이해하기 어렵다면 별도의 투자자문을 구하십시오.

Scroll Top

FXTM은 다양한 국가 및 지역 관할권에서 인허가와 규제를 받고 있습니다.

ForexTime Limited (www.forextime.com/eu)는 키프로스 CySEC(Cyprus Securities and Exchange Commission)의 규제를 받고(라이선스 번호 185/12), 남아공 FSCA(Financial Sector Conduct Authority)의 인허가를 받아 영업합니다(FSP 번호 46614). 또한 당사는 영국 FCA(Financial Conduct Authority)에 등록되어 있어 있습니다(등록 번호 600475).

ForexTime (www.forextime.com/uk)는 영국 FCA(Financial Conduct Authority)의 인허가와 규제를 받습니다(라이선스 번호 777911).

Exinity Limited (www.forextime.com)는 모리셔스 공화국 FSC(Financial Services Commission)의 규제를 받는 투자중개사입니다(라이선스 번호: C113012295).

카드 거래는 FT Global Services Ltd (등록 번호: HE 335426, 등록 주소: Ioannis Stylianou, 6, Floor 2, Flat 202 2003, Nicosia, Cyprus)를 통해 처리됩니다. 카드 소지자 문의 주소: [email protected] 카드 가맹점 위치 주소: FXTM Tower, 35 Lamprou Konstantara, Kato Polemidia, 4156, Limassol, Cyprus.

Exinity Limited는 외환시장에서 금융서비스 업계 내 분쟁 해결을 중재하는 국제기구인 Financial Commission의 회원입니다.

위험 고지: 외환 및 레버리지 금융상품 거래는 투자위험도가 높아 원금 전액 손실 위험이 있습니다. 감당할 수 없는 금액 이상으로 투자하지 말고 관련 투자위험을 충분히 숙지해야 합니다. 일부 투자자는 레버리지 상품 거래가 적합하지 않을 수 있습니다. 거래하기 전에 본인의 투자경험 및 투자목적을 고려하되 필요 시 별도의 투자자문을 구해야 합니다. 거주 국가의 법률 규정에서 FXTM 서비스 이용이 허용되어 있는지 확인하는 것은 전적으로 고객의 책임입니다. FXTM의 위험 공시 전문을 읽어 보시기 바랍니다.

지역 제한: FXTM 브랜드는 미국, 모리셔스, 일본, 캐나다, 아이티, 수리남, 조선 민주주의 인민 공화국, 푸에르토 리코, 브라질, 키프로스 점령지 및 홍콩 거주자에게는 서비스를 제공하지 않습니다. 자세한 내용은 자주묻는질문의 규제 부분을 참조하시기 바랍니다.


0 개 댓글

답장을 남겨주세요