블록체인 채굴, 중단은 어떻게 구현될까? 실전 시스템 설계 관점에서 보는 핵심 로직
블록체인 채굴, 중단은 어떻게 구현될까? 실전 시스템 설계 관점에서 보는 핵심 로직 채굴 중단 기능, 단순한 버튼 하나의 문제가 아니다 블록체인 시스템에서 채굴(Mining)은 복잡한 연산의 연속입니다. 하지만 더 복잡한 건 그 채굴을 **"중간에 안전하게 멈춘다"**는 거죠. 단순히 Stop 버튼 하나 추가한다고 끝나는 문제가 아닙니다. 실제 시스템에서는 다양한 고려사항들이 얽혀 있고, 무턱대고 중단하면 블록 생성 무결성, 리소스 누수, 상태관리 오류 등이 발생합니다. 제가 이 주제를 다루게 된 계기는 주변 개발자 지인이 만든 테스트넷에서 무한 채굴 루프가 돌다가 서버 다운됐던 사례였어요. 그래서 직접 플라스크(Flask) 백엔드 환경에서 테스트하며 이 채굴 중단 로직을 완성해봤고, 그 경험을 공유해보려 합니다. 데이터 흐름의 시작, 프론트엔드에서 오는 신호 채굴 중단 기능은 프론트엔드(예: React, Vue 등)에서 시작됩니다. 보통 사용자는 웹 UI에서 "채굴 중단" 버튼을 클릭하고, 이때 자바스크립트는 fetch() 혹은 axios 같은 비동기 통신을 통해 JSON 데이터를 백엔드에 전달하죠. 이 JSON 안에는 stopFlag: true 같은 명확한 신호가 포함되어 있고, 이 신호를 Flask 서버 가 받아야 합니다. 여기서 중요한 포인트는 Content-Type: application/json 을 명시해야 서버에서 request.get_json() 같은 함수로 해당 데이터를 올바르게 해석할 수 있다는 점입니다. 실제로 테스트해본 결과, Content-Type이 application/x-www-form-urlencoded 일 경우에는 None 이 반환되기 때문에, 이건 꼭 체크해야 해요. 한 번쯤 실수로 POST는 했는데 값이 안 들어와서 디버깅하다가 반나절 날린 적도 있습니다. 상태 플래그: 전역 변수의 힘과 위험 채굴 중단을 제어하는 건 stopMining 같은 전역 변수입니다. 이걸...