이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 13102|회답: 1

채굴 기계와 채굴 풀 간 통신을 위한 스트라텀 프로토콜의 원리

[링크 복사]
게시됨 2018. 1. 22. 오전 10:23:14 | | | |
스트라텀 프로토콜은 현재 채굴자와 채굴 풀 간에 가장 널리 사용되는 TCP 통신 프로토콜입니다. 채굴의 네트워크 아키텍처에 대해 간단히 설명해 보겠습니다.


1. 채굴의 네트워크 아키텍처


비트코인은 비트코인 데몬이 장착된 노드를 설치하여 새로운 거래와 블록을 전달하는 분산형 네트워크 아키텍처입니다. 채굴 기계와 채굴 풀도 또 다른 네트워크를 형성하는데, 우리는 이를 채굴 네트워크라고 부릅니다.

채굴 네트워크는 채굴 기계, 채굴 풀, 지갑 등 여러 주요 부분으로 나뉘며, 때로는 채굴 풀 소프트웨어가 지갑과 함께 설치되기도 하는데, 이를 통틀어 채굴 풀이라고 부릅니다.

채굴 기계와 채굴 풀 소프트웨어 간의 통신 프로토콜은 스트라텀이며, 채굴 풀 소프트웨어와 지갑 간의 통신은 비트코인RPC 인터페이스입니다.

stratum은 JSON 데이터 형식이며, 구체적인 프로토콜은 다음과 같습니다:



2. 계층 합의


1. 작업 구독

채굴 기계가 시작되면 먼저 mining.subscribe 메서드를 사용하여 채굴 풀에 연결하여 작업을 구독합니다.

풀은 구독 번호, ExtraNonce1, 그리고 mining.notify에서 ExtraNonce2_size을 반환합니다.

Client:{"id":1,"method":"mining.subscribe","params":[]}

Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null}

그 중에는 다음과 같은 인물들이 있습니다:

AE6812EB4CD7735a302A8A9DD95CF71F가 구독 번호입니다;

08000002 ExtraNonce1은 coibase 트랜잭션을 구축하는 데 사용됩니다;

ExtraNonce2_size는 4, 즉 마이너 ExtraNonce2 카운터의 바이트 수입니다.

2. 과제 배분

이 명령어는 채굴 풀에서 주기적으로 채굴자에게 보내지며, 채굴 기계가 mining.subscribe 메서드로 등록하면 채굴 풀은 즉시 해당 작업을 mining.notify로 반환해야 합니다.

Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"}

그 중에는 다음과 같은 인물들이 있습니다:

작업 번호: "bf";

이전 블록 해시:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

코인베이스 파트 I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

코인베이스 2부:

"072f736c7573682f0000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac000000000";

거래 ID 목록:

["C5bd77249E27C2D3A3602dd35C3364A7983900b64a34644D03B930BFD19C0E5", "049B4E78E2D0B24F7C6A2856AA7B41811ed961ee5277Df9E80043FD2F12"];

블록 버전 번호: "00000002";

nBit:”1c2ac4af”;

현재 시간: "504e86b9";

청소 작업: 만약 사실이라면, 채굴자는 모든 작업을 중단하고 즉시 새 작업을 시작합니다. 만약 잘못되었다면, 현재 작업이 끝날 때까지 기다렸다가 새 작업을 시작하세요.

3. 채굴기 로그인

채굴자는 mining.authorize 메서드를 사용해 특정 계정과 비밀번호로 채굴 풀에 로그인하며, 비밀번호가 비어 있어도 채굴 풀이 true로 반환되어 성공적으로 로그인합니다. 이 방법은 연결을 초기화한 직후에 반드시 수행해야 하며, 그렇지 않으면 채굴자는 풀 작업을 받지 못합니다.

Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}

Server:{"error":null,"id":2,"result":true}

4. 결과 제출

채굴자가 합법적인 지분을 찾으면, "mining.submit" 메서드를 사용해 풀에 작업을 제출합니다. 풀이 true로 반환되면 커밋이 성공한 것이고, 실패하면 오류가 발생하는 특별한 이유가 있습니다.

Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}

Server:{"error":null,"id":4,"result":true}

그 중에는 다음과 같은 인물들이 있습니다:

사용자 이름: "miner1";

작업 번호: "bf";

ExtraNonce2:"00000001";

현재 시간: "504e86ed";

nonce:”b2957c02″;

5. 난이도 조정

난이도 조정은 채굴 풀에서 채굴 기계에 발행되어 난이도를 mining.set_difficulty 방식으로 조정하며, 난이도 값은 파라미터에 표시됩니다.

Server:{"id":null,"method":"mining.set_difficulty","params":[2]}

채굴자는 새로운 난이도를 다음 작업에 적용하고, 풀은 때때로 즉시 새로운 작업을 발행하고 청소 작업을 true로 설정하여 채굴자가 즉시 새로운 난이도에 접근할 수 있도록 합니다.



3. 일반 소통 과정


채굴 기계와 채굴 풀 간의 일반적인 통신 과정은 다음과 같습니다:

면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com