블록체인 채굴 - “멈춤”이라는 기능, 단순한 버튼 하나가 아니었습니다

블록체인 채굴 - “멈춤”이라는 기능, 단순한 버튼 하나가 아니었습니다

블록체인 프로젝트에 처음 참여했을 때만 해도, 채굴이라는 게 뭔지 정확히 몰랐어요. 그냥 “버튼 누르면 시작하고, 또 누르면 멈추는 거 아닌가?” 정도로 단순하게 생각했죠.

근데 막상 실제 서비스 환경에서 돌아가는 걸 보니까, 진짜 중요한 건 ‘언제든 안정적으로 멈출 수 있는 구조’더라고요. 돌아가게 만드는 건 생각보다 쉬웠는데, 제대로 멈추게 만드는 건 정말 별개 문제였어요.


시작보다 어려운 건 ‘멈춤’

개발 초반에는 채굴 기능만 잘 동작하면 됐다고 생각했어요. 근데 테스트 중에 시스템이 몇 번씩 멈춰버리는 경험을 하다 보니까, “아, 중단 기능이 없으면 진짜 큰일 나겠구나” 싶더라고요.

어느 날은 테스트 서버에서 채굴을 멈추려 했는데, CPU 사용률이 계속 치솟고 서버가 뻗어버렸어요. 화면은 멈춰 있는데 버튼은 계속 눌려서, 유저 입장에선 “눌렀는데 아무 반응이 없어”라는 상황이 되는 거죠.

그때부터 뼈저리게 느꼈어요. 시작보다 더 중요한 게 ‘안전하게 끝낼 수 있는 구조’라는 걸요.


‘중단 버튼’은 진짜 그냥 버튼이 아니었어요

처음엔 저도 “그냥 중단 버튼 하나 달면 되는 거 아냐?”라고 생각했어요. 근데 실제로 구현해보니까 이건 단순한 UI 요소가 아니더라고요. 이 버튼을 누르는 순간, 시스템 전체가 잘 정리되고 있는지를 점검하는 ‘시작점’이 되는 거예요.

제가 구현했던 흐름은 이랬어요:

  • 사용자가 중단 버튼을 누르면

  • 프런트엔드에서 자바스크립트 이벤트가 발생하고

  • Ajax로 서버에 중단 요청을 보내고

  • 서버에서는 백엔드 채굴 스레드나 데몬을 안전하게 종료하고

  • 그 결과에 따라 다시 UI 상태를 ‘채굴 가능’으로 바꿔주는 구조

이 중에 하나라도 꼬이면 전체 흐름이 망가지더라고요. 문 잘 잠갔는지 계속 신경 쓰이는 그런 느낌이랄까요.


중단 전에 체크해야 할 것들, 진짜 많아요

저는 처음엔 ‘그냥 누르면 멈추겠지’ 싶었는데, 막상 해보니까 생각보다 고려할 게 많았어요.

예를 들어:

  • 지갑 주소 없이 채굴 시작

  • 잔액 확인 안 하고 실행

  • 중단 버튼을 너무 빠르게 연속 클릭해서 서버 꼬임 발생

이런 일들이 실제로 있었고요. 그래서 지금은 꼭 체크리스트처럼 선행 조건을 확인하게 됐어요.

  • 채굴 전에 코인 잔액 확인했는지

  • 중단 처리 중엔 버튼 비활성화

  • 상태 메시지를 ‘중단 중 → 완료됨’ 식으로 자연스럽게

이런 흐름이 있어야, 유저 입장에서도 “이 앱, 신뢰할 수 있겠네”라는 인상이 남더라고요.


프런트엔드는 신호를 ‘정확히’ 전달하는 게 핵심이에요

프런트엔드는 결국 사용자의 의도를 서버에 제대로 전달하는 게 역할이잖아요. 저는 중단 버튼의 onclick 이벤트에서 한번 더 중단 의사를 확인하고, 그다음 Ajax로 서버에 POST 요청을 보내도록 했어요.

요청에는 stop_flag 같은 플래그를 꼭 넣어서, 백엔드에서도 이게 중단 요청인지 확실히 알 수 있게 했고요.

그리고 응답을 받으면 다시 UI를 자연스럽게 ‘시작 가능’ 상태로 복원해주는 구조였어요. hidden 값이나 attribute 조작도 꽤 신경 썼고요. 진짜 작은 디테일이 전체 UX를 바꾸더라고요.


백엔드는 결국 ‘일을 끝내는 자리’더라고요

저는 백엔드에서 Flask를 썼고, /mining/stop API에 POST 요청이 들어오면 채굴 쓰레드를 종료하는 방식으로 만들었어요.

이때 가장 중요했던 건 명확한 응답 메시지였어요.

  • 중단 성공 → { "status": "stopped" }

  • 이미 중단됨 → { "status": "fail", "reason": "already stopped" }

이런 식으로 정리해두면, 프런트에서도 유저에게 명확하게 피드백을 줄 수 있고, 나중에 로그 볼 때도 훨씬 깔끔했어요.


결국 신뢰는 ‘상태 메시지’에서 시작돼요

제가 진짜 느낀 건 이거예요. 메시지 하나가 서비스 전체의 인상을 결정할 수도 있구나, 하는 거요. 유저는 언제나 불안하거든요. “지금 채굴 중인가? 멈춘 건가? 그냥 멈춘 척 하는 건가?”

그래서 메시지 흐름을 신경 썼어요:

  • “채굴 중입니다. 창을 닫지 마세요.”

  • “중단 요청을 받았습니다. 안전하게 종료 중입니다.”

  • “채굴이 정상 종료되었습니다. 시작 버튼이 다시 활성화되었습니다.”

이렇게 단계별로 메시지를 안내하면, 유저도 안심하고 기다릴 수 있어요. 그리고 그게 신뢰로 이어지더라고요.


마무리하며 – ‘멈춤’이란 게 주는 신뢰

저는 원래 코인 투자만 하다가, 우연히 개발을 배우게 됐어요. 근데 개발을 해보면서 놀랐던 게, 단순한 버튼 하나에도 생각보다 많은 고민과 설계가 들어간다는 점이었어요.

특히 중단 기능은 단순한 보조 기능이 아니라, 시스템에 대한 신뢰를 결정짓는 핵심 장치더라고요. 실제로 제가 만든 시스템도, 이 중단 흐름이 얼마나 안정적이냐에 따라 사용자 반응이 완전히 달라졌어요.

지금도 기능 하나 만들 때마다 항상 이렇게 물어봐요:
“이걸 멈추게 할 땐 어떤 흐름으로 가야 하지?”

이 질문에서부터 시작해야, 진짜 믿을 수 있는 시스템이 만들어지는 것 같아요. 시스템이든 사람이든, 잘 멈출 수 있는 구조가 결국 제일 든든한 거더라고요.

댓글

이 블로그의 인기 게시물

미국 비트코인 채굴 75.4% 점유율 확대

비트코인 해시레이트 감소와 채굴자 반전

비트코인 채굴과 부동산의 에너지 혁신