|
기본적으로 리스크라는 것은 사람들이 생각하는 것과 항상 다르다. 많은 사람들이 위험하다고 생각하는 것이 실제로 안전한 경우가 많았고, 사람들이 안전하다고 생각하는 것은 오히려 위험한 것일때가 많았다.
리만브라더스 사태로 은행이 망하는 것을 본 사람들!!
비트코인은 탈중앙화된 가치라 은행처럼 내돈이 사라지지는 않는다!
블록체인 혁명속에서 4차 산업혁명은 존재한다. 4차 산업혁명 속에서 어떤 기회가 있고 어떤 기회를 잡아야 할 것인가는 본인의 선택이다.
1. 비트코인의 탄생
2009년 1월 3일 오후 블록해시 퍼즐을 풀기위해 기계음을 뱉어내던 컴퓨터다 드디어 첫 블록을 생산했다.
이른바 '제네시스 블록'
최초의 블록이자 최초의 블록체인이 세상에 태어난 것이다. 크기는 겨우 285바이트였고 첫블록을 채굴해 발행된 암호화폐 수량은 50비트코인이었다. 2008년 10월 31일 금요일 오후 2시 10분 9쪽짜리 첨부파일이 담긴 이메일 한통이 암호학 커뮤니티 메일링 리스트에 도달했다.
https://cafe.daum.net/panicbird/CSeG/607
제네시스 블록이 만들어진지 4,146일이 지난 2020년 5월 11일을 기점으로 그간 643,000여개의 블록이 만들어졌고 달랑 하나의 거래내역만 기록됐던 제네시스 블록과 달리 최근의 블록에는 2천개가 넘는 거래내역이 담겨있다.
제네시스 블록 | 643000블록 | |
블록번호 | 0 | 643000 |
생성시각 | 2009, 01, 03 | 2020, 05, 11 |
크기(바이트) | 285 | 911,357 |
기록된 거래내역 갯수 | 1 | 2717 |
블록보조금 | 50비트코인 | 6.25비트코인 |
트랙잭션 수수료 | 0비트코인 | 0.58689239 비트코인 |
난이도 | 1 | 16,947,802,333,946.61 |
사토시 나카모토는 지금까지 100만비트코인을 채굴한 것으로 추정되는데 비트코인 2500만원을 기준으로 25조원이다.
1.2 블록과 체인
전산학에서 블록이라는 용어는 통상 '동시에 처리하는 논리적 데이터 단위'를 의미
대개 바이트(8비트) 또는 워드(32비트)를 그 최소단위로 하며 과제에 따라 그 크기가 달라진다.
비트코인에서의 블록이란 정원이 최대 1메가바이트이고 대기시간이 약 10분인 엘리베이터에 비유할 수 있다.
즉 비트코인 블록이란 10분동안 네트워크에 제출된 모든 거래 요청서들을 1메가바이트가 넘지 않는 범위내에서 한꺼번에 모아서 처리한 다음 그 결과를 저장하는 논리적 단위인 셈이다.
우리가 문서를 저장할때 파일단위로 하는 것처럼
비트코인은 블록단위로 데이터를 저장한다고 이해하면 된다.
블록체인마다 다양한 형태로 자신만의 블록을 정의할 수 있다.
예컨대
'비트코인 캐시'는 단순히 비트코인의 블록용량을 8메가바이트로 확대조정한 아류 블록체인이며
'이더리움'은 가스라 부르는 메타단위를 사용해 블록의 크기는 동적으로 변하는데 대개 하나의 블록크기는 20-30킬로바이트를 유지하고 있다.
그러나 평균대기시간은 평균 15초에 불과해 비트코인 블록이 하나 생성되는 동안 이더리움 블록은 40개가 생성되므로 10분동안 생성되는 데어터 크기는 800-1200킬로바이트로서 비트코인과 유사하다.
비트코인 블록은 누구나 만들수 있는 자격이 있지만 쉽게 만들기 어렵다.
'해시퍼즐이라고 부르는 퀴즈'를 풀어야만 하기 때문이다. 블록들은 생성된 순서대로 먼저 만들어진 블록 뒤에 일렬로 보관된다. 이런 식으로 만들어진 모든 블록은 미치 체인에 묶인 것처럼 일렬로 늘어져서 저장되는데 이 모습을 묘사하기 위해 '블록들의 체인'이라는 용어가 사용되다가 '블록체인'이라는 신조어로 정착되었다.
1.3 비트코인 단위와 거래방식
비트코인은 두가지 단위를 사용
하나는 '비트코인'
하나는 '사토시'
10BTC는 10비트코인이고 1000s는 1천 사토시다.
1억 사토시가 모이면 1BTC가 된다.
비트코인 최대량은 2,100만개다
채굴이라는 말은 '블록만들기'와 같다.
블록을 생성하기 위해서 '일정시간이상 계산자원을 소비'행 하는 의도적으로 설계된 단계를 반드시 거쳐야 하는데 이를 '작업증명 Proof of work'이라고 한다.
작업증명을 위해서 대용량 하드웨어, 인력, 전기 등 자원이 필요
최초 블록과 함께 탄생한 보조금은 50비트코인
비트코인은 21만개의 블록이 만들어질때마다 보조금이 절반으로 줄어들도록 설계되어 있다.
앞의 표에서 보았듯이 643,000번 블록의 보조금이 5.25 비트코인이유는 그사이 보조금이 세번이나 절반으로 줄어들었기 때문
비트코인 반감기
이론적인 마지막 채굴보조금은 6,929,999번 블록이 생성되는 2140년 4월 18일로 예상되며 마지막 보조금은 고작 1사토시다. 처음 24년 동안 전체 발행량의 99%가 채굴되고 나머지 107년동안 1%가 채굴된다. 그래서 2033년을 기점으로 비트코인은 99%가 채굴된다.
블록 보조금이 줄어들때 비트코인 시스템 환경에는 많은 변화가 예상된다.
작업증명에 관한 보상금이 줄어들수록 구성원의 블록생산 동기가 사라지기 때문!!
기억하라. 비트코인은 소프트웨어다. 클릭한번이면 총 발행량을 10배, 100배로 얼마든지 늘릴 수 있다. 현재 비트코인을 독점하고 있는 사람들이 그러지 않을 뿐이다.
2021년 5월 현재 c-cap에서 소개된 코인은 9631개, 거래소 375개, 시가총액 3천조. BTC 도미넌스 45.1%
2. 블록체인 용어
2.1 노드와 피어
노드(node)는 네트워크에 접속한 사용자(컴퓨터)
각 노드 입장에서 자신과 직접 연결되어 있는 노드를 피어(peer)라고 함.
블록체인을 단순히 분산 시스템이라고 하지 않고 '탈중앙화 시스템'이라고 부르는 이유는?
분산 시스템은 여러서버가 일을 나눠 처리함으로써 작업의 효율성이나 서버의 가용성을 높이는 것을 주목적으로 함.
블록체인은 여러서버가 투입돼 일하지만 분산처리가 아니라 동일한 일을 중복해서 처리함.
그래서 효율성은 약간 떨어지지만 일의 결과에 대한 신뢰도는 높아짐.
따라서 블록체인은 작업의 효율성을 희생하는 대신 작업 결과에 대한 신뢰도를 높인 시스템
블록체인은 항상 중복에 기반을 둔 극단적으로 비효율적인 시스템이므로 데이터베이스로 사용하거나 효율성 향상을 위해 사용하기는 매우 힘든 구조임.
브로드캐스팅
브로드캐스팅이란 네트워크에서 상대방을 특정하지 않고 모든 접속자에게 데이터를 전송하는 통신방식을 일컫는다.
블록체인에서는 생성된 모든 데이터를 브로드캐스팅한다. 이를 통해 모든 노드는 항상 동등한 데이터를 갖는다
블록체인에서는 비밀이 없다. 모든 데이터는 전체노드에게 그대로 노출된다.
이러한 정보의 노출은 상업적 용도로 확대하는데 걸림돌이 된다.
트랜잭션 transaction
트랜잭션은 금융분야에서 모든 금융거래를 폭넓게 의미하고 IT분야에서는 보통 '업무처리단위'를 이야기함
특히 데이터베이스에서는 더이상 쪼갤수 없는 최소한의 업무처리 단위를 의미함
비트코인 블록체인의 용도는 결제 시스템이므로 그 트랜잭션은 '거래내역을 기록'하는 것으로 정의
즉 10여분동안 네트워크에 제출된 트랜잭션(거래내역)을 한꺼번에 모아 블록단위로 처리하고 그 블록단위로 순서대로 기록하고 있는 것이 '비트코인 블록체인'임.
블록체인마다 트랜잭션의 정의를 달리할 수 있으며 이 정의가 달라지면 그 용도가 바뀜.
비트코인의 트랜잭션은 고정돼 바꿀수 없으나 이더리움은 사용자 스스로가 자신의 용도에 맞게 트랜잭션을 정의할 수 있도록 비트코인을 변형했음.
채굴
블록체인에서 채굴은 기록과 동의어임
지갑 소프트웨어
지갑은 비트코인을 사용하기 위한 사용자 프로그램
비트코인 지갑을 설치하면 비트코인 네트워크에 접속할 수 있고 비트코인 거래가 가능함
지갑은 거래에 필요한 주소라는 계정을 생성하고 나만의 암호키를 생성해 늘 안전한 거래를 가능하게 해줌
비트코인 지갑의 4가지 기능
1) 비트코인 주소 생성
2) 계정관리를 위한 개인키/공개키의 생성과 관리
3) 비트코인 거래를 시스템에 제출
4) 비트코인 잔액관리 등 기타 기능
비트코인 주소는 1로 시작하여 약 35글자 내외로 이뤄짐. 긴 주소 대신 QR코드를 이용하기도 함.
비트코인 주소는 은행 계좌번호에 비유할 수 있음.
개인이 무한대로 생성할 수 있는 비트코인 주소에 실명확인이 가능할리 없고 여러번 익명의 주소를 사용해 이전된 비트코인은 지구상 어디에서 환전될지 추적하는 것은 쉽지 않음.
비트코인 지갑을 설치하면 제일 먼저 사용자를 위한 두개의 암호키가 생성됨
공개키(Public key)와 개인키(private key)라고 부름.
비트코인은 탈중앙화 시스템
은행 콜센터 역할을 하는 곳이 없어 개인키를 분실하면 해결방법이 없음.
비트코인 개인키 분실로 영원히 사용할 수 없는 비트코인이 2017년 말 기준으로 약 380만개로 추정
수수료
모든 트랜잭션은 수수료를 지불해야 한다. 이 수수료는 블록을 만든 채굴자가 보상금 형태로 가져간다.
각 노드에 대기중인 트랜잭션은 원칙적으로 수수료가 같을 경우 순서대로 처리되지만 더 많은 수수료를 지불하는 경우 큰 거래가 먼저 처리될 수 있다.
비트코인 수수료는 거래액수가 아닌 트랜잭션 크기를 바이트 단위로 과금한다. 100BTC를 지출해도 수신자가 하나면 최소한의 수수료로 처리되지만 0.001BTC를 지출해도 수신자가 많으면 더 많은 수수료를 낸다.
전산학에서 블록체인의 정의
'익명의 비동기화 네트워크에서 발생하는 사건들을 중앙서버의 관여없이도 일관성있게 순서를 정할 수 있는 장치'
3. 블록체인을 이루는 4가지 기반기술
1) 해시함수
해시함수란 입력의 길이와 상관없이 항상 고정된 길이의 출력을 생성하는 함수를 의미함.
2) 암호화 해시
아래 4가지 조건을 모두 만족하는 해시함수를 '암호화 해시'라고 부름
계산의 용이성
원상회피 : 어떤 경우라도 해시값으로부터 원래의 메시지를 복원하는 것은 불가능해야 함.
두번째 원상회피 : 주어진 메시지 m에 대해 이와 동일한 출력을 생성하는 또 다른 메시지 m을 찾는 것은 불가능해야
충돌회피 : 동일한 출력결과를 생성하는 서로 다른 두 메시지를 찾는 것은 불가능함.
블록헤더와 블록 바디
블록은 블록헤더와 블록바디로 구성
블록헤더는 80바이트의 고정된 크기를 가지며 해당 블록의 모든 요약 데이터를 저장
블록바디는 2000-3000여개의 트랜잭션이 실제로 저장되는 곳으로 그 크기는 저장하는 트랜잭션 갯수에 따라 변동
4장. 블록체인의 작동원리
블록체인이 하는 일은 단순하다. 이체 내역을 기록하는 것이 일의 전부다
누가 기록할 것인가?
브로드캐스팅을 통한 전달
익명으로 구성된 네트워크인 블록체인에는 중앙서버가 없으므로 전체 데이터를 모든 노드에게 전달하는 브로드캐스팅 방식을 사용한다. 비트코인 블록체인에서 생성되는 데이터는 모두 거래내역(트랜잭션)이다. 이 거래내역은 앞서 설명한 지갑 소프트웨어를 통해 네트워크에 제출된 데이터다.
블록체인에서 리더를 선출하는 방식은 바로 '해시퍼즐'이다.
특정순간에 해시퍼즐을 가장 먼저 해결한 단 하나의 노드에게만 기록할 수 있는 권리가 주어진다.
해시퍼즐은 그 해답을 알 수없는 수학공식이 존재하지 않는 복잡한 문제로 정답을 찾기 위해서는 오로지 가능한 모든 조합을 단순히 반복계산하는 수밖에 없다. 이 시합에서는 1등을 하지 않으면 아무런 의미가 없다.
어떻게 저장할 것인가?
비동기화 시스템에서의 탈중앙화 합의
블록체인은 중앙서버가 없기 때문에 '완전한 비동기화 시스템'이다.
오로지 현재 내가 가지고 있는 데이터와 피어를 통해 방금 전달받은 정보를 통해 그 다음 단계를 수행할 수 밖에 없다.
소프트포크와 하드포크 - 유지보수
블록체인은 중앙서버가 없기 때문에 소프트웨어의 유지보수 또한 힘들다. 이때문에 발생하는 것이 소프트포크와 하드포크다.
중앙시스템이 있는 경우 시스템을 업그레이드하거나 오류를 수정하면 모든 사용자에게 똑같이 적용된다.
블록체인은 모든 노드를 단번에 업그레이드하는 것은 불가능하므로 상당기간 동안 새로운 소프트웨어로 업그레이드한 노드와 그러지 않은 노드가 시스템상에 서로 혼재하게 돼 새로 생긴 규칙과 이전의 규칙사이에 충돌이 발생한다.
과거에 무효하던 규칙을 유효화 - 하드포크
과거에 유효하던 규칙을 무효화 - 소프트포크
하드포크 - 과거에 무효하던 규칙을 유효화
A의 노드가 모두 B로 전환되면 그 순간 새로운 규칙도입 이후 A 그룹이 생산한 모든 블록은 폐기되고 새로운 블록을 받아들여야 한다. 그러면 그동안 수령한 블록의 보상금도 모두 사라진다. 따라서 합당한 보상이 주어지지 않는 한 모든 A가 B로 전환되는 것은 불가능하다. 이런 경우 영원히 2개로 분리된 블록체인 데이터가 남게 된다. 이를 '하드포크'라고 한다.
과거에는 유효하던 규칙이 무효화되는 변경이 일어났을 때 새로운 규칙을 따르는 노드가 이전 규칙을 따르는 노드에 비해 다수가 되는 순간 모두 새 규칙을 따르게 되는 것을 '소프트포크'라고 한다. 소프트포크는 새 규칙에 찬성하는 그룹이 많아져야 성공할 수 있다.
지금까지 비트코인 코어는 여러번 소프트포크를 사용했지만 한번도 하드포크를 허용한 적은 없다. 실제로는 일어남...
반면에 많은 알트코인은 하드포크를 실행했으며 저마다 다른 특색을 가지고 있다. 하드포크는 시스템의 유지보수 및 오류수정을 위해 불가피한 측면도 분명히 있지만 이더리움 재단 등과같이 시스템 유지보수단체가 자신들의 이익을 위해 이를 남용함으로써 탈중앙화를 심각하게 훼손하는 측면이 있다.
그래서 비트코인은 탈중앙화 정신을 잘 지켜오고 있는데 반해
이더리움은 하드포크를 남용해 탈중앙화를 심각하게 해친다는 비난을 받고 있다.
아이러니한 사실은 비트코인은 단 한번도 공식적인 하드포크를 허용하지 않았지만 실제 여러번의 하드포크가 있었다. 2017년 8월 1일 비트코인 캐시가 하드포크를 통해 비트코인에서 떨어져 나오면서 478559번 블록부터 블록크기를 8MB로 늘린 새로운 규칙을 적용했다. 2017년 10월에는 비트코인 골드가 491407번 블록부터 작업증명 방식에 이쿼해시라는 새로운 해시퍼즐을 탑재한 비트코인 골드를 탄생시켰다.
51%의 공격
비트코인 시스템은 리더로 선출된 노드에 의해 지배된다. 따라서 편중됨없이 최대한 랜덤하고 다양하게 선출되어야 생태계의 안정성을 극대화할 수 있다.
해시퍼즐을 풀기위해 동원할 수 있는 계산 능력을 통상 '해시파워'라고 한다.
다수의 블록을 생산할 수 있는 세력은 블록 생산력을 악용해 자신들이 원하는 트랜잭션을 임의로 구성함으로써 시스템을 공격할 수 있는데 이러한 극단적인 상황을 51%의 공격이라고 한다.
블록체인의 변형