대중 과학: 비트코인의 새로운 블록 생성 과정
전편에 이어 블로거 마이닝 대중과학 앨범의 두 번째 콘텐츠입니다."비트코인 거래 프로세스", 시작부터 확인까지 비트코인 거래의 전체 프로세스를 분석하여 비트코인 채굴의 전체 그림을 계속 봅니다.
존재하다
존재하다"비트코인 거래 프로세스"첫 번째 기사에서 우리는 이미 비트코인의 거래 정보가 어떻게 구성되어 있는지 알고 있지만, 이 정보가 비트코인의 새로운 블록에 어떻게 들어가나요?
다음으로 블로거는 새로운 비트코인 블록을 생성하는 과정을 통해 비트코인 블록이 어떻게 거래 정보를 기록하고 확인하는지 설명합니다.
암웨이가 먼저 알아야 할 몇 가지 지식 포인트는 다음과 같습니다.
트랜잭션 풀, 영문명: mempool, 일명 메모리풀은 확인해야 할 트랜잭션을 저장하는데 사용 비트코인 채굴 노드는 각각 독립적인 트랜잭션 풀을 가짐 트랜잭션 풀의 크기로 인해 최소 트랜잭션 수수료 비율(수수료 비율) 는 단위 거래량당 거래에 포함된 취급수수료이며 단위는 Sat/B, 즉 B-byte 거래당 취급수수료는 x 사토시 비트코인, 이하 동일) 각 노드의 거래 풀은 상이하다. 다른 제한으로 인해. 채굴자(마이닝 풀)는 예비 블록을 구성할 때 트랜잭션 풀에서 패키징할 트랜잭션을 선택해야 합니다. 트랜잭션 풀이 자주 호출되기 때문에 해당 데이터는 노드 서버의 RAM에 저장되며 이는 트랜잭션 풀의 볼륨이 너무 크지 않음을 의미합니다.
채굴 노드, 비트코인 네트워크에서 비트코인 트랜잭션 및 블록의 기록 및 검증에 참여하는 것은 비트코인 데이터를 저장하는 노드입니다. 이러한 노드 중 일부는 기록 및 검증 작업에 참여할 뿐만 아니라 새로운 비트코인 블록 생성에도 참여합니다. 노드는 마이닝 노드입니다. 초기 마이닝 노드에는 마이너와 마이닝 풀이 있었지만 현재는 비트코인 마이닝의 높은 난이도로 인해 한 명의 마이너가 부기 권한을 획득하고 새로운 블록을 생성하기 어렵습니다. 현재 주요 Bitcoin 마이닝 노드는 F2Pool, Poolin, BTC.com, Antpool, Slushpool 등과 같은 마이닝 풀입니다.
UTXO 라이브러리, Bitcoin 노드는 노드의 모든 트랜잭션 정보를 스캔하여 UTXO 클러스터를 구성합니다. 여기에는 사용되지 않은 모든 UTXO가 포함됩니다. 새 블록이 생성될 때마다 UTXO 라이브러리는 새 블록에서 소비된 UTXO를 자체 목록에서 삭제하고 새로 생성된 UTXO를 자체 목록에 추가합니다.
코인베이스 보상보조 제목
확인해야 할 거래는 먼저 거래 풀에 들어갑니다.
우리가 비트코인 거래를 개시하고자 할 때 거래개시자는 거래정보를 구성하고 이때의 거래정보는 확정할 거래이며 여기에는 다음이 포함된다.거래 입력 정보(올바른 개인 키로 서명된 미사용 UTXO) 및트랜잭션 출력 정보(새 지갑 주소를 잠그기 위해 보류 중인 확인 UTXO).
이미지 설명
그림 1 확인해야 하는 트랜잭션이 트랜잭션 풀에 들어갑니다.
확인이 필요한 거래 정보는 다음과 같습니다.
트랜잭션에 유효한 입력 및 출력 지갑 주소가 포함되어 있는지 여부
트랜잭션 볼륨이 블록의 최대 볼륨보다 작은지 여부(비트코인 블록의 최대 볼륨은 현재 1M임)
입력 UTXO가 합법적인지 여부(노드의 UTXO 라이브러리와 비교하여 입력 UTXO가 사용되지 않음)
거래의 총 투입과 산출이 합리적인지 여부(총 투입 ≥ 총 산출)
트랜잭션의 입력이 Coinbase로부터 보상을 받았는지 여부를 판단하여 보상에 해당하는 통화는 사용되기 전에 최소 100개의 블록 확인이 있어야 합니다.
트랜잭션 풀에 중복 트랜잭션이 없는지 확인하십시오.
보조 제목
마이닝 노드는 트랜잭션 풀에서 트랜잭션을 선택하고 예비 블록을 구성합니다.
마이닝 노드가 예비 블록을 구성하고 새 블록 생성을 준비할 때 우선 순위에 따라 트랜잭션을 정렬하고 트랜잭션 풀에서 트랜잭션을 확인합니다. 예비 블록은 일반적으로 높은 우선 순위의 트랜잭션을 위해 일정 공간을 예약하고 나머지 공간은 거래 수수료 비율(Sat/B)이 높음에서 낮음에 따라 블록을 채우거나 트랜잭션 풀의 트랜잭션을 소진하는 데 사용됩니다. .
이미지 설명
안에,
안에,"매직 넘버"값이 0xD9B4BEF9인 상수입니다."블록 크기"이 블록에 있는 모든 데이터의 총 볼륨입니다."블록 헤더"전체 블록의 약식 정보로 간주할 수 있으며 마이닝에 사용되는 블록 정보는 블록 헤더입니다."거래 카운터"블록의 트랜잭션 수를 기록하는 데 사용됩니다."거래 데이터"Coinbase 보상 부분을 포함하여 블록에 포함된 모든 거래 정보이며, 일반적으로 이 부분의 데이터는 전체 블록 공간의 대부분을 차지합니다.
비트코인 블록에서 블록 헤더는 가장 중요한 정보입니다. 여기에는 전체 블록의 모든 특성 정보가 포함됩니다.
블록 버전 번호. 블록을 생성한 비트코인 노드의 버전 정보는 비트코인 프로토콜의 업그레이드 및 업데이트를 추적하는 데 사용됩니다.
이전 블록의 해시. 상위 블록 해시라고도 하며 이전 블록을 찾는 데 사용됩니다. 각 블록에는 이전 블록의 해시 값이 포함되어 있으며, 블록에 대한 약간의 변경은 후속 블록의 해시 값에 큰 변화를 일으키므로 연동되어 모든 비트코인 블록이 단일 체인 구조를 형성하여 악의적인 변조를 효과적으로 방지할 수 있습니다. 비트코인 블록 데이터.
머클루트 해시이미지 설명
그림 3 트랜잭션 데이터의 머클 트리 구조
해시 알고리즘의 민감성으로 인해 전체 트랜잭션의 머클 트리 트랜잭션 데이터에 약간의 변화가 있어도 연계 효과가 발생하여 머클 트리의 루트 해시 값이 크게 변경됩니다. 따라서 트랜잭션 데이터의 Merkle 루트 해시 값(MerkleRoot Hash)은 전체 트랜잭션의 핑거프린트라고 볼 수 있으며, 이는 블록 내 트랜잭션 데이터를 참조하는 데 사용됩니다.
타임스탬프. 준비 블록을 만드는 시간입니다.
현재 대상 해시난수
난수. 넌스라고도 합니다. 블록 헤더 정보에서 블록 버전 번호, 이전 블록의 해시 값, MerkleRoot 해시 값, 타임 스탬프 및 현재 대상 해시는 모두 알려진 정보이며 상대적으로 고정되어 있으며 마음대로 변경하기 불편함을 알 수 있습니다. . 따라서 준비 블록의 해시 값을 조정하려면 변수 데이터 - 난수를 도입해야 합니다. 난수를 수정하여 준비 블록의 해시 값을 조정할 수 있습니다.
채굴 노드가 준비 블록을 구축한 후 블록 헤더 정보를 채굴자에게 전송합니다. 채굴자는 블록 헤더의 난수를 지속적으로 조정하여 준비 블록의 해시 값을 변경합니다. 준비 블록의 해시 값이 낮음 비트코인 네트워크의 현재 목표 해시레이트에서 이 블록은 합법적인 새 블록입니다.
참조:
참조:
비트코인 소스코드 분석
비트코인 블록 헤더 구조 분석:
비트코인 대상 해시레이트
비트코인 블록 구조
비트코인 마스터하기


