MODULE 2 (A) - CRYPTOCURRENCY INTUITION
07. HOW MINERS PICK TRANSACTIONS(PART 1)
08. HOW MINERS PICK TRANSACTIONS(PART 2)
<그림>
채굴자는 블록 구조에서 Data 필드에 들어가는 트랜잭션 리스트를 어떻게 얻을까?
여기에서 그 부분에 대해 알아볼 것이다.
<그림>
트랜잭션은 모든 노드와 모든 채굴자에 연결되어있는 멤풀(mempool) 또는 메모리 풀(memory pool)에서 발생한다.
하지만 이것들은 전부 블록 내부에 포함되기 전에 여기에 저장되는 미확인 트랜잭션으로, 비트코인 기준으로 블록은 10분 간격으로 추가되지만 트랜잭션은 계속 발생한다.
즉, 맴풀은 트랜잭션을 위한 집결지 같은 것이다.
모든 채굴자나 노드에는 집결지처럼 아직 보류 중인 트랜잭션 리스트가 있는 멤풀이 연결되어 있다.
이 멤풀을 이용해 채굴자는 트랜잭션들을 블록에 추가해야 한다.
실제 블록체인에서는 각각의 블록체인마다 한 블록에 포함할 수 있는 트랜잭션의 수 제한이 다르지만, 여기에서는 채굴자가 포함할 수 있는 트랜잭션이 최대 5개라고 가정해보자.
이 상황에서 채굴자는 어떻게 트랜잭션을 선택할까?
<그림>
그림에 나와 있는 예시 속 멤풀을 보면 실제보다는 짧은 트랜잭션 ID와 채굴자가 받을 수수료가 있다.
알아야 할 것은 수수료는 필수가 아니며 사용자가 직접 지정하고, 채굴자는 그 수수료를 받는다는 것이다.
<그림>
채굴자가 블록 생성에 성공하면 그 블록과 연결된 수수료를 받기 때문에, 채굴자는 위 그림처럼 가장 높은 수수료들를 고를 것이다.
이 상황에서 채굴자는 암호화 퍼즐을 해결하는 즉, 0에서 약 40억까지의 논스의 범위에서 골든논스를 찾는 작업을 진행한다.
블록에 타임스탬프가 있기 때문에 1초 안에 채굴자가 논스의 범위를 입력해 골든논스를 찾으려 노력한다.
만약, 1초안에 유효한 골든 논스를 찾지 못한다면, 타임스탬프가 1초 업데이트되고 채굴자는 다시 논스를 살펴볼 것이다.
하지만 채굴자가 많거나(채굴 풀) 1초 안에 40억개 이상의 해시를 거칠 수 있는 처리 능력이 있는 채굴자가 있을 때는 어떨까?
이 경우 1초가 되기 전 순식간에 약 40억개의 논스를 거치게된다. 그리고 타임스탬프가 업데이트되기 전까진 해당 채굴 풀 또는 채굴자들은 대기해야한다.
이것은 매우 비효율적인 동작으로, 불필요한 해시 파워를 가지게 된다.
그렇다면 이 남는 시간 동안 무엇을 해야 할까?
이 문제를 해결하도록 해주는 비트코인의 프로토콜에 있는 아키텍처상의 내장 솔루션 즉, 해싱 파워가 많은 채굴자도 참여 가능하고 채굴 풀이 제대로 작동하는 솔루션은 블록의 구성을 변경하는 것이다.
그 이유는 채굴자들은 높은 수수료를 기반으로 트랜잭션을 선택했기 때문이다.
채굴자는 처음에 높은 수수료를 책정한 트랜잭션들을 선택했을 것이다.
하지만 선택한 트랜잭션으로 1초 안에 전체 논스를 거쳤는데 유효한 해시를 찾지 못했다면 어떻게 해야 할까?
이때 채굴자가 해야 할 일은 블록의 구성을 변경하는 것이다.
즉, 채굴자는 트랙잭션의 조합을 변경하여 1초 이내에 다시 한 번 전체 논스를 거쳐 골든 논스를 찾아내는 것이다.
이러한 과정은 채굴 풀에 속하지 않은 한 독립 채굴자들은 블록 구성을 효과적으로 변경하여 논스를 찾는 작업을 스스로 알고리즘을 통해 실행해야 한다.
그러나 채굴 풀에 합류하면 이러한 기능을 제공하며, 따라서 이러한 점도 채굴 풀의 장점이다.
맴풀에 존재하는 선택 가능한 트랜잭션이 매우 다양하기 때문에 채굴자들이 선택할 수 있는 트랙젝션의 선택폭은 매우 넓다.
하지만 대부분 높은 수수료를 내는 트랜잭션을 선택하려 하기 때문에 보통 가장 높은 수수료로 시작해서 임계값 같은 것을 갖게된다. 즉, 특정 임계값 이하의 수수료를 가지는 트랜잭션은 보지도 않는 것이다.
이러한 기준점에 부합하지 않는 트랙잭션들은 처리되지 못한 채 맴풀에 정체되어 있을 것이다.
만약 이 경우 즉, 일정 기간 내로 트랜젝션이 채굴자들에게 선택되지 않는다면, 그러면 트랜잭션이 트랜잭션을 발생한 대상자에게 공개된다.
이로서, 지갑이 현재 평균 수수료를 확인하는 것과 트랜잭션이 멤풀에 걸리지 않도록 무엇을 입력해야 하는지 파악하는 것을 도와 트랜잭션이 처리될 수 있도록 한다.
BTC.com에 접속하면 트랜잭션 가속기를 볼 수 있다.
BTC.com Transaction Accelerator
트랜잭션이 진행되지 않고 멈출 수 있다고 위에서 언급했었는데, 그런 경우 트랜잭션 가속기를 사용할 수 있다.
트랜잭션 가속기는 트랜잭션 해시를 입력하면 트랜잭션 속도를 높이기 위해 얼마의 금액이 필요한지를 알려준다.
즉, '당신의 트랜잭션을 먼저 처리하고 싶으면 돈을 지불해라 그러면 트랜잭션을 빠르게 실행해주겠다'라는 것이다.