logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

[포트폴리오] MiningPool

[포트폴리오] MiningPool
Portfolio
성훈 김
2026년 7월 19일
목차

아키텍처 구조

notion image

채굴기 하드웨어 한계를 확인하여 stratum프로토콜 단일 채널 구조 재설계

문제원인

채굴기 생산업체측 하드웨어가 마이닝풀에서mining.notify를 짧은 간격으로 전파하면, 커넥션은 연결된 채로 share를 제출하지 못하는 현상이 발생

해결과정

  1. 채굴기 쪽에서는 블록체인에서 새로운 블록을 생성하면, 현재 작업은 필요없게 되므로 현재 job을 버리고 새 job을 받는 동기화가 반드시 필요. 그래서 마이닝 풀쪽에서는 동기화를 위한 notify와 연결 유지를 위한 주기적 notify작업이 있었고 그 두 사이클이 겹치면서 동시에 같은 height와 ‘clean:true’ notify(스트라텀 v1 프로토콜)하는 상황 발생. 채굴기가 동시에 들어온 notify를 핸들링 하지 못함을 확인.
  1. 채굴기 스펙 실측확인
      • mining.notify 짧은 주기로 수신시 50ms 이하에서 stuck이 됨을 재현, 100ms이상은 안정적
      • stuck상황에서 새로운 jobId, ‘clean:true’로 두가지 조건이 충족해야 재가동 가능함을 확인.
  1. 병렬적으로 notify가 가능한 구조를 방지, job상태를 관리하는 단일 채널을 구성하고, 채널의 job이 fresh/stale인지 구분하는 책임을 consumer에서 고루틴으로 분리후 전파.
  1. proof체인을 1초 간격으로 polling해서 jobChan에 등록, 새로운 높이의 job은 notify ‘clean:true’, 같은 높이의 job은 ‘clean:false’로 파라메터 분리.

구조

notion image

결과

같은 원인으로 채굴기가 stuck하는 상황을 제거, 프루프노드와 동기화 상태 1초 이내 유지, 네트워크 이슈로 연결이 단절되어도 회복하는 resilence 향상