기술적인 부분에서는 “블록체인”이 있다. 이를 프로토콜이나 코인으로 생각하면 “비트코인”, “이더리움”, “리플”, “네오”, “웨이브” 등등이 있다. 각 프로토콜은 코인을 하나 가지고 있다. 마지막으로 토큰은 프로토콜 위에 생성하는 수 많은 스마트 계약이다. 예시로 이더리움은 다양한 토큰을 생성이 가능한데 비트코인은 용이하지 않기에 하나도 없다.
위의 웹사이트를 들어가면 아주 많은 코인과 토큰을 볼 수 있다. 구분이 안된다면 위의 사이트의 분류를 바꿔보면 된다.
비트코인은 네트워크상의 사람들이 서로 신뢰하고 거래를 하는 것이다. 즉, 중개자가 필요없다는 것이다. 이 중 프로토콜은 거래를 도와주는 규칙을 생성하는 것이다. 이 프로토콜이 은행의 역할을 대체할 것이다. 블록체인은 어떠한 산업에서 사용이 될 수 있다, 이 다른 산업을 건드리는 개념은 토큰이다.
비트코인 생태계:
노드는 사람들이며 채굴자는 블록을 채굴하여 성정하는 것에 도움을 주는 참여자이다. 클 채굴자는 아주 많은 장비 또는 장치를 가진 사람들이며 채굴자들이 다 같이 모여 하는 것은 Mining Pool이다.
크게 두가지로 나뉜다. 이는 The Halving과 Block Frequency로 나뉜다.
비트코인은 4년쯤 (210,000블록) 마다 비트코인이 반으로 감소한다. 비트코인 출시 이후 계속해서 4년 쯤 마다 반으로 줄고 있기에 50으로 시작해 25, 12.5… 로 계속 줄고 있다. 무한정으로 반으로 나눌 수 있지만 소수점에 한계가 있어서 대략 2140년에 210만 코인의 공급으로 공급이 마무리 될 예정이다. 허나 채굴자들의 노력에 비해 보상이 적으면 통화 시스템이 붕괴되지 않을까라고 우려할 수 도 있다. 허나 비트코인의 양이 많아질 수 록 사용하는 사람들은 많아지고 이를 통해 수수료를 벌어들일 수 있기에 그렇지만은 않다. 즉, 코인을 채굴하는데 투자하고 나중에는 수수료로 돈을 버는 것이다.
Blockchain.com | Be early to the future of finance
블록이 얼마나 자주 생성되는지 아는 지표가 있다. 이는 코인마다 다르며 비트코인은 평균적으로 10분, 이더리움은 15초 등 다양하게 있다.
비트코인의 인플레이션과 디플레이션 그리고 통화정책에 대한 논문
This Time is Different Part 2: What Bitcoin Really Is. | HackerNoon
Current Target이 무엇이고 무슨 느낌인가?
채굴 난이도는 어떻게 계산이 되는 것인가
Current Target이 무엇이고 무슨 느낌인가?
이전에 타겟을 정할 때 leading Zeros 로 0000을 넣는 걸 배웠었다. 이는 난이도를 조절하기 위함이었는데 이를 좀 더 자세히 한 번 봐보겠다. XXXXX는 0~99,999인 100,000개의 옵션을 고려해야하는데 0 을 하나 넣어줌으로써 0XXXX가 되면 0~9,999로 10,000개의 옵션만 고려하면 된다. 즉, 16진수 이기에 0 한 개로 16배로 양을 줄 일 수 있다는 의미이다.
만약 18개의 leading Zeros가 있다고 가정해보겠다. 이 떄 무작위로 논스를 골랐을 때 골든논스가 나올 확률은 어느정도 일까? 64자리 수를 다 해야할때는 10에 77승인데 18 leading Zeros가 있다면 2 x 10에 55승으로 훨씬 확률이 높아질 것이다. 그렇더라도 확률은 0.00…..002% 이므로 로또보다 더 확률이 낮기에 왜 코인을 채굴하는데 오래걸리는지 예상이 간다.
Difficulty = current target / max target 이 공식이다. 난이도는 2016블록(2주) 마다 변경이 되며 현재 블록 타겟은 “000000~5d97dx00000~” 형식으로 되어있고 최대 블록은 “00000~FFFF00000~” 으로 구성이 되어있다고 보면 된다.
개인과 채굴 공장의 경쟁이 공평할까를 생각해봐야한다. 개인 컴퓨터로 돌리는 거랑 대규모 공장으로 코인 채굴하는 거랑은 다를까? 집에서 채굴하는 사람들도 있다. 이 노력들이 무용지물일까? 아니다. Mining Pool때문에 아니다. 개인이 채굴하는 것 보다 Mining Pool에 들어가서 같이 채굴하기 때문이다. 처리능력을 하나로 모아서 큰 힘을 가지는 것이다. 채굴풀에서 중요한건 이중작업을 막고 같이 협력하는 것이다.
골든논스를 찾는건 무차별 대입을 하는 것인데, 범위를 정해주고 컴퓨터 마다 풀게끔 한다. 만약 어떤 컴퓨터가 골든논스를 찾으면 거기에 얼마나 해싱 파워를 도입했느냐에 따라 보상을 나눠가진다.
풀을 검색할 수 있는데 현재는 BTC.com 풀이 제일 크다. 여기서 제일 큰 풀에 들어가게 된다면 채굴 할 확률은 높겠지만 많은 사람들과 나눠가져야 하기에 보상은 적어진다. 채굴방법은 채굴자들은 채굴하는 사이트에 들어가서 소프트웨어를 다운받고 채굴을 시작한다.
지금 채굴풀은 거의 중국이 1등이다. 이는 전기가격때문이다. 채굴기와 조건이 다 같으면 관건은 전기료이다. 중국은 전기료 혜택을 많이 주기에 계속 1등인것이다.
https://blog.bitcoin.org.hk/bitcoin-mining-and-energy-consumption-4526d4b56186
논스는 32비트이기에 무한정으로 늘릴 수 가 없다. 범위가 있다는 의미이다. (0~40억 정도) 이렇게 한 논스의 범위는 채굴할 수 있는 골든 논스 하나씩 배정을 하게 된다면 부족하다. 이를 어떻게 해결해야할까?
100MH/s (MillionHash)로 채굴을 하는 사람이 있다고 가정해보겠다. 그러면 40억/1억 = 40초 만에 모든 블록을 채굴 할 수 있을 것이다. 과연 그럴까? 아니다. 사실 논스 외에 다른 부분이 있는데 이는 “타임스탬프”이다.
타임스탬프는 매초마다 기록이 되는데(유닉스타임) 이게 블록안에 들어가있다. 이렇기에 쇄도효과로 해시는 계속 바뀔것이다. 이 방법으로 해시를 1초간 검색하고 타임스탬프가 바뀌면 다시 처음부터 해시를 훑어봐야하기에 논스 범위는 한정적이여도 손쉽게 채굴이 불가능하다는 의미이다.
이건 개인에 해당되는데 만약 MIning Pool을 적용한다면 어떻게 될 것 인가??(아래)
비트코인으로 예를 들자면 10분마다 거래가 일어나는 것이 아니고 실시간으로 일어난다. 이는 Mempool이라는 장치가 있는데 여기서 거래내역을 저장하고 블록으로 보내는 것이다.
맴풀에는 트렌젝션ID+받을 수 있는 수수료로 구성이 되어있다. 수수료는 비트코인 보내는 사람이 얼마나 낼지 정할 수 있다. 이 때 채굴자는 보통 수수료 높은걸 고르기에 맴풀에서 높은 수수료를 가진 것들을 자기 블록에 넣을 것이다.
타임스탬프를 통해서 1초안에 모든 논스를 돌렸는데도 골든 논스를 못찾는 경우가 있을 것 이다. 이 때는 고른 거래내역 중 수수료가 제일 낮은 것을 빼서 맴풀에서 그 다음 낮은걸 찾아 갈아끼고 나머지 시간에 다시 골든 논스를 찾는 작업을 한다. 1초가 지난 뒤에는 타임스탬프가 바뀌기 때문에 다시 제일 높은 수수료들로 바꿔끼고 골든 논스를 찾는 작업을 하는 알고리즘으로 구성이 되어있다.
blockchain.info의 통계들을 보면 모든 블록들이 대부분 1Mb일 경우 1Mb를 꽉채워서 블록체인 상에 올라간다. 이는 채굴자들은 최대한의 수수료를 받기위해 꽉 채워 넣기 때문이다. 또한 수수료를 얼마나 벌었는지도 볼 수 있다. 여기서는 보통 수요와 공급의 원리에 따라 거래이용자가 많으면 수수료가 올라가며 여유가 있으면 수수료를 낮게 잡아도 거래가 빨리 되는 것 을 볼 수 있다.
이 세가지는 채굴자들이 사용하는 하드웨어들이다. 먼저 CPU는 Central Processing Unit 이고 컴퓨터 연산의 중심이다. 이는 우리가 흔히 쓰는 컴퓨터 내부에서 다양한 작업을 처리하기에 General한 도구이다. 특화되어 있지 않다는 의미이다. SHA256을 계산을 할 수 있지만 특화되어있지 않기에 초당 10메가의 속도 한계를 가지고 있다. 비트코인 네트워크상에서는 빠른편은 아니다.
좀 더 특화되어있는건 GPU이다. 그래픽카드, 비디오카드라고 불린다. 이는 그래픽 연산 특히 행렬 연산에 특화되어있기에 이는 해시 계산에도 특화가 되어있다. GPU 속도는 대략 초당 1G이다.
ASIC는 Application-Specific Integrated Circuit의 약자이며 오직 한 가지에만 특화되어있다. 이는 SHA256계산에 특화되어있다. CPU, GPU같이 비트를 왔다갔다하는 것이 아닌 오직 회로에만 의존하는 방식을 가지고 있다. 물리적인 수준에서 연산이 일어나기에 초당 1,000G를 계산할 수 있다.
여기서 추가로 Cloud Mining을 하는데 이는 다른 사람의 장비를 사용하는 것이다.
ASIC는 SHA256을 계산하는데 특화되어있기에 비트코인에는 유리하지만 이더리움에는 그닥 특화된 점을 못찾을 수 있다. 이는 이더리움은 다른 해싱을 사용하며 어차피 메모리에 접근을 해야하기 때문이다. 이더리움은 GPU를 계속해서 사용하고있다.(메모리에 접근해야하는 것이기에)
참여자가 노드던 채굴자던 모두 맴풀이 붙어있다. 트랜잭션을 위한 도구이기에 10분마다 붙는게 아닌 정보가 집결되는 곳이다. 맴풀에 기록이 된다면 제일 가까운 거리의 맴풀에 기록을 한다. 이렇게 퍼져나가서 모든 맴풀에 저장이 되는 것이다. 전체적인 flow를 설명한다면 모든 채굴자들이 블록의 골든 논스를 찾다가 블록을 만들게 된다면 거기에 맴풀에 있는 수수료가 제일 높은 거래내역을 넣는다. 그리고 그 기록을 주변부터 점차 늘려나가서 동기화 시킨다.
맴풀의 작동방법에 대한 글(일반 참여자의 관점)
https://blog.kaiko.com/an-in-depth-guide-into-how-the-mempool-works-c758b781c608
blockchain.info 에 orphaned blocks를 볼 수 있다. 고아 블록은 이전에 설명한거와 같이 동시에 같은 블록을 채굴했을 때 선택받지 못한 블록이 고아 블록이다. 이는 더 해싱파워가 있는 쪽이 이기기에 더 긴 블록을 가진 곳이 이긴다. 이 때 고아블록에 있던 트랙젝션은 다시 맴풀로 들어가 대기를 한다.
통계를 보다보면 고아블록보다 현재 블록의 채굴 시간이 더 늦는게 확인된다. 이는 블록이 가장 긴 체인이에 속한 블록이 살아남는다는걸 증명한다.
이는 가상의 공격이지만 채굴자들이 두려워하는 가능성이 있는 공격이기에 한 번 알아보겠다. 작은 그룹의 팀들이 코인을 채굴하고 있을 때 다른 네트워크가 같이 채굴하겠다고 체인을 복사해서 같이 채굴하게 한다. 이 때 갑자기 새로 들어온 네트워크 그룹이 모든걸 차단하고 자기네들끼리 채굴을 시작한다고 가정해보겠다. 이들은 더 많은 사람이기에 더 많은 블록들을 채굴하게 될 것이다. 그럼 이 공격자들과 초기 네트워크 사람들의 블록 개수는 확연히 차이가 날 것 이다. 이 후 공격자들은 네트워크를 열어서 초기 네트워크를 구축하던 사람들의 체인을 다 없애고 공격자들이 구축한 블록들의 네트워크로 바꿔버린다. 전혀 불법적이지는 않은데 공격자들은 이중 지출과 같은걸로 부당한 이익을 취할 수 있다.
이중지출을 방지하기 위해서 6~7블록 이후에 거래내역을 승인하는 정책을 펼친다. 여기서 이중지출이란 거래를 해서 맴풀에 넣어 블록에 들어가더라도 이 거래내역이 고아블록이 되면 날라가기 때문에 안날라가는 대략적인 지점인 6~7블록 이 뒤에 생성이 되면 거래를 성사시킨다.
탈중앙화된 블록체인 주제이지만 51%공격에 대해 자세히 설명해준다.
Choosing ASICs for Sia