v0.4.7

최신
2026-06-02

Mac 풀 마이닝이 이제 즉시 시작됩니다. 다운로드할 노드도, 동기화도 없습니다.

핵심은 속도입니다. 풀 모드에서 easyBTX는 더 이상 전체 BTX 노드를 다운로드하거나 실행하지 않습니다. 풀 마이닝에는 애초에 노드가 필요 없었는데, 노드는 수 기가바이트의 다운로드와 긴 "준비 중" 동기화, 그리고 가끔의 충돌을 더할 뿐이었습니다. 이제 앱을 열면 받을 주소가 이미 채워져 있고, 여러분의 Mac이 바로 마이닝을 시작합니다. 이미 easyBTX를 쓰고 있었다면 기존 받을 주소가 자동으로 이어지므로, 다시 설정할 것이 없습니다.

변경됨

  • Mac에서 풀 마이닝이 전체 BTX 노드 없이 실행됩니다. 다운로드할 블록체인도, 동기화할 것도, 충돌할 노드도 없이 즉시 시작됩니다. Mac의 솔로 마이닝은 풀 마이닝에 집중하는 동안 잠시 멈추며, 다시 돌아올 예정입니다.
  • 받을 주소가 이전 설정에서 자동으로 채워지므로, 업데이트 후에도 이 칸이 비는 일이 없습니다.
  • 마이닝 속도가 이제 풀이 쓰는 것과 같은 단위인 N/s로 표시되므로, 앱의 수치가 여러분의 풀 대시보드와 일치합니다.
  • 앱이 항상 모든 화면에 맞는 세로로 긴 레이아웃으로 열립니다.

추가됨

  • 거래 화면과 수령 설정에 녹색 "Get the BTX Wallet" 버튼이 추가되어, 별도의 BTX 지갑으로 연결됩니다.
  • 풀 모드에서 더 이상 필요 없는 오래된 노드 데이터를 정리해 디스크 공간을 확보하는 선택 동작이 추가됩니다. 여러분의 지갑은 절대 건드리지 않습니다.

v0.4.6

2026-06-01

Mac 풀 마이닝이 다시 정상 작동하고, GPU 라이브 통계 패널이 추가되었습니다.

핵심은 수정입니다. 0.4.5에서 망가졌던 Mac의 풀 마이닝이 다시 정상 작동합니다. easyBTX를 Windows로 가져오는 과정에서 가한 변경이 Mac을 잘못된 마이닝 도우미로 향하게 해서, 마이닝이 시작되지 않았습니다. 이번에 이를 되돌립니다. 0.4.5로 업데이트한 뒤 마이닝을 시작할 수 없었다면, 이번 수정으로 해결되며, Mac은 0.4.4 때와 똑같이 동작합니다.

수정됨

  • Mac에서 풀 마이닝이 다시 정상 작동합니다. Windows 버전을 위한 0.4.5의 변경이 Mac의 마이닝 엔진을 잘못된 도우미로 향하게 해서, 마이닝이 시작되지 않았습니다. 0.4.4에서 작동하던 방식으로 되돌렸습니다.

추가됨

  • About 화면에 GPU 라이브 통계 패널이 추가되었습니다: 사용량, 클럭, 전력, 온도, 메모리, 팬을 보여주며, 패널이 열려 있는 동안 갱신됩니다. Mac은 사용량, 전력, 온도를 표시하고, Windows는 여러분의 NVIDIA 카드에서 읽은 전체 항목을 표시합니다.

vWindows 0.4.4

2026-05-31

easyBTX가 Windows에 찾아왔습니다.

첫 Windows 릴리스입니다. 이제 easyBTX는 NVIDIA RTX 30 시리즈 이상의 GPU를 갖춘 Windows PC에서 BTX를 채굴하며, Mac 버전과 똑같은 앱 하나, 클릭 한 번, 셀프 커스터디 방식을 그대로 따릅니다. NVIDIA 카드를 준비하고 받을 주소를 고르면, 여러분의 GPU가 풀에 참여합니다. Mac 버전(Apple Silicon, Metal, 솔로 또는 풀)은 그대로입니다.

v0.4.4

2026-05-30

전송이 다시 정상 작동하고, 나만 보는 마이닝 통계가 추가되었으며, 창이 더 크고 차분해졌습니다.

0.4.3에 이은 집중적인 후속 릴리스입니다. 핵심은 수정입니다. 최근 빌드에서 전송이 오해를 부르는 메시지와 함께 실패할 수 있었는데, 이제 앱에서 BTX 전송이 다시 정상 작동합니다. 그와 함께 About 화면에 여러분의 마이닝 통계가 표시되고, 팝업 창이 모두 같은 여유로운 형태로 열리며, 거래의 탐색기 링크 복사가 탭 한 번으로 됩니다.

추가됨

  • 여러분의 마이닝: About에 비공개 통계 패널이 추가되어 총 마이닝 시간, 평균 속도, 수락된 Share, 시작한 날을 보여줍니다. 이 정보는 여러분의 Mac에만 보관되며 절대 업로드되지 않습니다.
  • 각 거래에 "링크 복사" 버튼이 추가되어, 블록 탐색기 링크를 복사해 어디에나 붙여넣을 수 있습니다.

변경됨

  • About, 설정, 거래, 그리고 정보 팝업이 이제 더 크고 일관된 하나의 창으로 열려 읽기가 더 쉽습니다.
  • 설정에 더 깔끔한 사이드 메뉴가 적용됩니다. 링크 섹션에서 이제 공식 BTX 프로토콜 사이트로, 그리고 별도로 라이브 시세 사이트(제3자이며, 투자 조언이 아니고 easyBTX는 이와 무관함)로 연결됩니다.

수정됨

  • 앱에서 BTX 전송이 다시 정상 작동합니다. 최근 빌드에서는 주소에 문제가 없어도 오해를 부르는 "주소를 확인하세요" 메시지로 전송이 거부될 수 있었는데, 이를 수정했고 이제 오류 메시지가 실제 원인을 설명합니다.

v0.4.3

2026-05-30

일시 중지와 재개, 더 차분한 재시작, 강화된 개인정보 보호, 그리고 풀 대시보드에 표시되는 여러분의 Mac.

이번 릴리스는 0.4.0 리디자인을 바탕으로 편의 기능을 한 묶음 추가합니다. 이제 중지해도 노드가 따뜻하게 유지되고 녹색 재개 버튼이 제공되며, 재시작 후의 긴 "준비 중" 대기가 멈춘 것처럼 보이는 대신 스스로 상황을 설명하고, 탭 한 번으로 잔액을 숨길 수 있습니다. 풀 마이너는 이제 minebtx 대시보드에 자신의 Mac의 라이브 GPU 수치와 직접 정한 이름을 표시할 수 있습니다.

추가됨

  • 일시 중지와 재개. 컨트롤이 마이닝 중에는 "일시 중지"로 표시되고, 이후에는 차가운 "시작" 대신 녹색 "재개"로 표시됩니다. 그 사이에도 노드가 따뜻하게 유지되므로 바로 다시 이어갈 수 있습니다.
  • 잔액 옆의 개인정보 보호 눈 아이콘이 여러분이 직접 드러내기 전까지 잔액을 점으로 가려줍니다. 화면을 공유하거나 공공장소에 있을 때 유용합니다. 선택 사항은 기억됩니다.
  • 잔액 소수점: 전체 8자리를 표시하거나, 빠르게 훑어볼 수 있도록 짧은 3자리를 표시합니다. 이것은 표시만 바꿀 뿐, 여러분이 보유하거나 전송하는 금액은 절대 바꾸지 않습니다.
  • 재시작 후 노드가 준비되는 동안 표시되는 명확한 라이브 상태. 멈춘 "작동 중..." 대신, 비공개 잔액 인덱스를 재구성하는 중이라고 설명하고, 예상 시간과 경과 시간을 보여주며, 블록체인은 이미 최신 상태임을 알려줍니다.
  • 마이닝 화면의 CPU, GPU, 그리고 풀/솔로 확인. 한눈에 여러분의 Mac이 GPU로 마이닝하고 있고 예상한 방식대로 연결되어 있는지 볼 수 있습니다.
  • minebtx 풀 대시보드를 위한 라이브 GPU 수치. easyBTX가 여러분의 Mac의 GPU 사용량과 전력을 풀에 보고하므로(관리자 권한 불필요), 워커가 빈칸 대신 실제 수치를 표시할 수 있고, 설정에서 정한 이름이 여러분의 머신을 식별합니다.
  • 오래 실행된 설치에서 오래된 복구 잔여물을 정리하는 조용한 백그라운드 정리. 디스크에 쌓이지 않도록 합니다.

변경됨

  • 설정이 이제 현재 테마로 열립니다. 이전에는 항상 라이트로 표시되었지만, 이제 앱과 일치하므로 다크 앱에서는 설정도 다크로 유지됩니다.
  • 설정에 더 깔끔한 사이드바 레이아웃이 적용되며, 테마 카드와 "시작 시 즐겨 쓰는 레이아웃" 선택 항목이 추가됩니다.
  • 정보 팝업("마이닝 작동 방식"과 그 외)이 이제 설정 스타일과 일치합니다. 더 여유롭고 차분한 창으로 더 쉽게 읽힙니다.

수정됨

  • 설정의 업스트림 소스 패널이 더 이상 모든 행에 "최신 정보 사용 불가"를 표시하지 않습니다. 다시 실제 최신 버전을 가져옵니다.

v0.4.0

2026-05-29

새로운 디자인, 그리고 풀 마이닝이 이제 외부 지갑으로 보상을 지급합니다.

easyBTX가 새로운 디자인으로 바뀌었습니다. 기본값은 더 넓은 "컨트롤 룸" 창으로, 노드에 라이브 정보가 채워져도 화면 아래로 내용이 밀리지 않도록 모든 요소를 세 개의 여유로운 열에 걸쳐 배치합니다. 새로운 테마 전환 기능도 추가되었습니다. 다크가 기본값으로 유지되며, 원한다면 라이트를 선택하거나, 시스템 옵션을 선택하면 Mac 설정을 따라 자동으로 전환됩니다. 풀 마이닝도 이제 솔로 마이닝처럼 외부 수령 주소를 사용할 수 있어서, 코인 키가 없는 노트북에서도 마이닝할 수 있습니다.

추가됨

  • 새로운 넓은 "컨트롤 룸" 레이아웃이 기본값이 됩니다. 왼쪽에 상태 화면, 가운데에 마이닝 표시, 전력, 지갑, 오른쪽에 라이브 네트워크 및 풀 수치가 배치됩니다. 기존의 세로, 컴팩트, 미니 레이아웃은 클릭 한 번으로 언제든지 사용할 수 있습니다.
  • 다크, 라이트, 시스템 테마. 다크가 기본값입니다. 원하면 라이트를 선택하거나, 시스템을 선택하면 Mac을 따라 자동으로 전환됩니다. 선택 사항은 저장됩니다.
  • 설정의 각 섹션(노드, 마이닝, 모양, 데이터 위치, 지갑, 수령, 백업, 업데이트, 유지 관리, 새 계정, 업스트림, 링크)에 빠른 이동 버튼이 추가됩니다. 탭 한 번으로 해당 섹션으로 바로 이동합니다.

변경됨

  • 풀 마이닝이 이제 외부 수령 주소가 설정되어 있으면 해당 주소로 보상을 전송합니다. 이전에는 솔로 마이닝에만 적용되었습니다. 어느 쪽이든 코인은 이 Mac의 지갑을 거치지 않으므로, 노트북이 침해되더라도 키를 가진 적이 없습니다.
  • easyBTX 툴 수수료가 채굴 보상의 4.99%로 변경됩니다(이전 3.5%). 여전히 시간 분할 방식으로 처리되며 사전에 공개됩니다. 풀 자체 수수료(2.5%)는 변경되지 않아 풀 마이닝 총 수수료는 약 7.5%입니다. 나머지는 모두 지갑으로 지급됩니다.
  • 설정이 공간이 있을 때 나란히 배치되는 깔끔한 타일로 구성됩니다. 라이트와 다크 모드 모두에서 잘 읽힙니다.
  • "감사 / 개요"가 이제 단순히 "거래"로 표시됩니다.
  • 설정 체크리스트가 더 명확해집니다. 각 단계가 완료되면 주황색 할 일 항목이 아닌, 무슨 일이 일어났는지 설명하는 간단한 레이블이 붙은 녹색 체크 표시로 바뀝니다("BTX 노드 및 체인 다운로드됨", "노드가 최신 블록과 동기화됨", "마이닝 중").
  • 헤더의 easyBTX 워드마크가 약간 더 크게, 조금 더 얇은 바 안에 표시됩니다.

수정됨

  • "디스크 공간 복구"가 이제 조용히 남겨두지 않고, 일회성 대형 스냅샷을 포함하여 실제로 확보된 용량을 정확히 보고합니다.
  • 디스크 공간 복구 또는 재시작 후 노드가 "블록 0/0"으로 초기화된 것처럼 보이는 현상이 수정됩니다. 이제 처음부터 다시 동기화하는 것처럼 보이는 대신, 이전 위치를 기억하고 확인하는 동안 해당 위치를 표시합니다.
  • 이미 동기화된 노드가 복구나 재시작 후 긴 시작 대기에 걸리지 않습니다.

v0.3.1

2026-05-29

노드가 따라잡는 동안 절대 고장 난 것처럼 보이지 않습니다. easyBTX가 한동안 닫혀 있었거나 강제로 종료된 후(충돌, 강제 종료, 또는 실행 중 앱 교체), 다음에 앱을 열었을 때 노드가 따라잡는 데 몇 분이 걸릴 수 있습니다. 이전에는 easyBTX가 이 따라잡기 시간을 실제 문제로 오인하여 오류를 표시할 수 있었습니다. 이제 앱이 침착하게 기다리고, 무슨 일이 일어나고 있는지 알려주며, 지갑과 코인은 그대로 유지됩니다. 노드가 단순히 따라잡는 중에는 복구를 제안하지 않습니다. 아무것도 할 필요가 없습니다.

수정됨

  • easyBTX가 노드가 따라잡는 중일 때 시작 오류를 표시하지 않습니다. 이제 데이터를 처리 중인 노드와 실제로 멈춘 노드를 구별합니다.
  • 파괴적인 "노드 수정" 동작이 노드가 따라잡는 동안 더 이상 제공되지 않습니다. 이제 실제 손상 신호가 있거나 노드 프로세스가 실제로 종료된 경우에만 나타납니다.
  • 복구된 노드가 이미 디스크에 체인이 있는 상태에서 준비 중인 동안 유령 "BTX 노드 및 체인 다운로드" 단계가 표시되지 않습니다. 설정 체크리스트가 이제 실제 상태와 일치합니다.
  • 정상적인 노드를 중단시킬 수 있었던 고정 시간 제한이 제거됩니다. 실제 진행 중인 노드에게는 이제 완료에 필요한 시간이 주어집니다.

개선됨

  • 노드가 따라잡는 동안 더 명확하고 침착한 메시지가 표시되어, 정상적인 몇 분간의 대기가 오류처럼 보이지 않습니다.
  • 시작 또는 복구 중에 지갑과 코인은 절대 건드리지 않습니다. easyBTX는 저장된 스냅샷에서 체인 데이터를 복원하며, 키는 절대 사용하지 않습니다.

내부 변경

노드가 오프라인 상태 이후 또는 비정상 종료 후 재시작할 때, 요청을 처리하기 전에 내부 상태의 일부를 재구성합니다. 이 시간 동안 노드는 살아서 작동 중이지만, "아직 준비 중" 상태(RPC 코드 -28, HTTP 500으로 반환)로 응답합니다. 이전 버전은 이를 하드 오류로 처리하고 360초의 고정 제한 후 포기했으며, 완전히 정상인 노드를 파괴적인 복구 버튼이 달린 오류 화면으로 내보냈습니다. 0.3.1은 모든 시작 탐침을 세 가지 상태로 분류합니다: 준비됨, 준비 중, 또는 사용 불가. 준비 중인 노드(-28 상태, 또는 재구성이 진행 중임을 보여주는 노드 로그)는 "계속 대기"로 처리되며 완료를 위한 여유 있는 제한 시간이 주어집니다. 전혀 응답하지 않는 노드는 여전히 합리적인 제한 후 포기합니다. 파괴적인 복구 경로는 항상 사용하던 동일한 손상 확인 신호 뒤에 잠겨 있으므로, 시작이 느렸기 때문이 아니라 실제로 문제가 있을 때만 실행될 수 있습니다. 모든 복구 안전 규칙은 변경되지 않습니다: 지갑은 항상 보존되고, 손상된 데이터는 삭제되지 않고 보관되며, 복구는 시작당 최대 한 번만 실행되고, 디스크가 가득 찬 경우 실행을 거부합니다.

배포

앱 내 업데이터를 통해 기존 0.3.0 설치에 자동으로 제공됩니다. 로컬에서 빌드 및 게시되었으며, 미서명 인디 빌드입니다. Apple 공증은 로드맵에 있습니다.

v0.3.0

2026-05-28

"풀 준수 및 투명성" 릴리스. shib의 dexbtx 풀이 2026-05-27에 v5로 업그레이드되면서 필수 pre_hash_block_tier_v18 기능 게이트와 session_id 및 리그별 하드웨어 지문을 포함하는 새로운 mining.subscribe 확장 딕셔너리가 도입되었습니다. easyBTX v0.2.0은 세 개의 필수 필드 중 두 개만 전송했기 때문에, Mac 워커는 풀에 연결되었지만 워커 대시보드에 표시되지 않았습니다. v0.3.0은 완전한 v0.3.x 핸드셰이크를 제공하고, 리그별 라이브 대시보드 행을 활성화하는 worker.report_metrics 하트비트를 추가하며, 풀이 각 리그에 할당하는 정식 이름을 표시하여 사용자가 Mac을 /stats의 해당 행과 연결할 수 있게 합니다. 또한 첫 번째 선택적 자기 수탁 기능으로 솔로 채굴 보상을 이 Mac에 키가 없는 외부 BTX 주소로 지급할 수 있습니다. 그리고 v0.2.0 사용자들이 Telegram에서 요청한 다양한 UX 개선 사항도 포함됩니다. cargo test: 195/195 통과. tsc --noEmit: 오류 없음. cargo build --release + npm run build: 모두 정상.

중요 수정

  • Mac 워커의 dexbtx 풀 등록이 복구됩니다. mining.subscribe가 이제 완전한 v0.3.x 확장 딕셔너리를 전송합니다: protocol_compliant: ["pre_hash_block_tier_v18"], 기존 하드웨어 지문(solver_env: {BTX_MATMUL_BACKEND: "metal"}으로 확장), 그리고 세션별 session_id(참조 마이너의 uuid.uuid4().hex 형태와 일치하는 32자 소문자 16진수, SHA256("easybtx-session:" || nanos || pid || counter)로 구성되어 연속 세션이 절대 충돌하지 않음). session_id 없이는 v5 풀이 Mac 워커를 대시보드와 Telegram 봇 /stats에서 조용히 제외했습니다. mining.set_canonical_name이 이제 처리되며 할당 값은 ~/.easybtx/canonical_names.json에 저장되어 풀이 할당한 레이블(예: M2_PRO-BRAVO-1)이 재연결 후에도 유지됩니다. UI의 "이 머신의 워커:" 줄이 이제 레이블이 도착하는 즉시 표시됩니다.
  • 노드 업데이트가 더 이상 8분이 걸리지 않습니다. NodeController::stop이 SIGKILL로 폴백하기 전에 최대 90초 동안 Child::try_wait를 폴링합니다. 이전에는 즉각적인 kill이 btx1z 쉴드 상태 LevelDB의 플러시 중간에 적용되어 다음 시작 시 EnsureShieldedStateInitialized: rebuilding full shielded state from chain을 트리거하는 진행 중인 변형 마커를 남겼습니다(실제로 7분 57초가 측정됨). 정상적인 종료는 마커를 남기지 않으며 시작이 다시 약 1초로 돌아갑니다.
  • 노드 복구 격리 항목이 더 이상 기가바이트를 영구적으로 차지하지 않습니다. 새로운 prune_old_quarantines가 7일 이상 된 _corrupt-*_preserve-* 디렉토리를 삭제하되, 각 패턴의 가장 최신 항목은 증거로 보존합니다. 앱 시작 시(이전 세션의 오래된 격리 항목 정리)와 모든 repair_node 완료 시(이전 복구의 오래된 격리 항목 정리) 실행됩니다. 하나의 오래된 _corrupt-* 항목이 메인테이너 머신에서 42 GB를 차지하고 있었습니다. 보존 로직에 대한 6개의 새로운 단위 테스트가 포함됩니다.

외부 수령 (선택적 자기 수탁)

  • 솔로 채굴 보상을 이 Mac에 키가 없는 외부 BTX 주소로 지급할 수 있습니다. 새로운 설정 항목 Mining payout: 기본값 유지(보상이 이 Mac의 로컬 지갑으로 지급)하거나, 다른 곳에서 직접 관리하는 주소(하드웨어 지갑, 모바일 지갑, 콜드 주소)로 라우팅할 수 있습니다. 핵심은 수탁권입니다. 마이닝 머신에 대한 현실적인 위협은 같은 사용자 코드 실행(사용자가 속아서 실행하는 AMOS 스타일 스틸러)이며, 24시간 마이닝 중인 머신(흔히 이 목적으로 전용된 오래된 노트북)은 취약한 대상입니다. 보상을 외부 주소로 라우팅하면 누적된 코인이 마이닝 머신에 키를 가진 적이 없습니다. 붙여넣기된 주소는 IPC 경계에서 형식 검사가 이루어집니다(bech32, 양자 내성 btx1z... 접두사 허용; 잘못된 네트워크 붙여넣기, 앞뒤 공백, b/i/o 같은 동형 문자 감지). 라이브 "형식 테스트" 버튼이 제공되며, 노드의 validateaddress RPC가 노드 실행 중 전체 체크섬 확인을 수행합니다.
  • 공개된 3.5% 개발자 수수료는 변경되지 않습니다. 수령 엔진이 기존의 이진 사용자/개발자 FeeAccrual에서 개발자 수수료를 필수 수령인 중 하나로 포함하는 N명 수령인 가중 라운드 로빈(PayoutScheduler)으로 일반화되었습니다. 단위 테스트가 사용자 설정에 관계없이 실현된 개발자 지분이 1000-2000 청크에 걸쳐 여전히 3.5%로 수렴함을 증명하므로, 외부 수령을 추가해도 분배 비율이 바뀌지 않습니다.
  • 이번 릴리스에서는 솔로 전용이며, 앱에서 명확히 안내합니다. v0.3.0은 솔로 채굴 코인베이스에 대해서만 외부 수령을 라우팅합니다. 풀 보상은 여전히 로컬 지갑으로 지급됩니다(외부 풀 수령은 v0.3.2). 외부 수령이 설정되어 있고 풀 모드인 경우, 메인 화면의 빨간 배너가 이를 명확히 안내하며, 솔로에서 풀로 전환 대화상자도 이 주의사항을 반복합니다. 따라서 보안을 중시하는 사용자가 풀 수익이 머신을 떠나고 있다고 조용히 가정하는 일이 없습니다.
  • "로컬 지갑" 선택이 완전히 되돌아갑니다. 기본 라디오 버튼을 선택하면 폼을 숨기는 것이 아니라 저장된 분배(clear_payout_split)를 지우므로, 이전에 설정한 외부 주소로 계속 조용히 지급하는 대신 마이닝이 즉시 로컬 지갑으로 돌아갑니다.

풀 / 마이닝 프로토콜

  • worker.report_metrics 하트비트가 60초마다 전송됩니다. Stratum 선택 루프의 새로운 tokio::time::interval 분기가 {session_id, timestamp, cpu_util_pct, ram_gb_used, gpus: [{gpu_uuid, util_pct, power_w, temp_c}], solver_nps, shares_session_total}를 전송하여 풀 대시보드가 리그별 CPU/RAM/Share 카운터를 렌더링할 수 있습니다. CPU%와 RAM 사용량은 실제 4초 tokio::time::timeout이 있는 비동기 하위 프로세스에서 실행된 단일 top -l 1 -n 0 호출에서 가져오므로, 중단된 top이 stratum 리더, 솔버 자식 관리, 또는 풀 제출을 차단하지 않습니다. GPU 사용률/전력/온도는 macOS에서 JSON null로 보고됩니다(powermetrics는 root 권한이 필요하기 때문, shib의 macOS 메트릭 관련 노트에 따름). 행은 대시보드에 계속 표시되며, 라이브 계측 필드는 대시 표시만 됩니다.
  • 클릭 한 번으로 "풀 대시보드에서 이 머신 열기". 기존 풀 대시보드 버튼이 이제 풀이 정식 이름을 할당하는 즉시 URL에 ?worker=<canonical_name>을 추가합니다. 대시보드는 현재 SPA이므로 쿼리 파라미터는 미래 호환성이 있습니다. dexbtx가 나중에 워커별 라우팅을 추가하면 앱 업데이트 없이도 작동합니다.
  • 하드웨어 지문에 solver_env: {BTX_MATMUL_BACKEND: "metal"}이 추가됩니다. 풀의 튜닝 권고 엔진이 Mac 리그에 CUDA 전용 설정(BTX_MATMUL_GPU_INPUTS, BTX_MATMUL_SOLVE_BATCH_SIZE 등)을 제안하지 않도록 합니다. 미래 호환성 있음: 풀이 서버 측에서 키를 허용 목록에 추가하므로 현재 Metal 전용 선언은 안전합니다.

UX

  • 업데이트를 놓치는 것이 불가능해집니다. 시작 업데이트 확인에서 새 버전이 발견되는 즉시 대시보드 상단에 눈에 띄는 주황색 배너가 나타나며, 기존 모서리 힌트와 함께 표시됩니다. 설치를 클릭하면 한 번만 묻습니다: "앞으로 시작 시 업데이트를 자동으로 설치할까요?" 적절한 시점에 묻는 것이 아무도 찾지 않는 설정 체크박스보다 훨씬 효과적입니다. easybtx-autoupdate-asked 플래그가 사용자가 거부한 경우 다시 묻지 않도록 보장합니다. 시작 업데이트 확인이 이제 first_run_setup 이전에 실행되어 느린 노드 시작 이후가 아닌 약 300ms 안에 배너가 표시될 수 있습니다.
  • easyBTX가 자체 BTX 노드를 번들한다는 사실을 명확히 합니다. "동기화 진행률 98.5%"를 보던 Telegram 사용자가 채널에 "노드는 어떻게 설정하나요?"라고 물었습니다. 이제 세 가지 작은 접점이 질문이 생기기 전에 답을 제공합니다: "마이닝 작동 방식" 모달이 "easyBTX가 완전한 BTX 노드를 직접 실행하며, 별도의 설정이 필요 없습니다"로 시작됩니다. 설정 단계 체크리스트가 이제 "BTX 노드 및 체인 다운로드" / "최신 블록에 노드 동기화"로 표시됩니다. 설정 항목 노드 상태가 "이것은 원격 서비스가 아닌 해당 노드의 라이브 수치입니다"로 시작됩니다.
  • 지갑 백업 소프트 안내. BTX를 실제로 채굴했지만 아직 백업하지 않은 경우, 잔액 위에 지속적인 황색 배너가 나타납니다. "지금 저장"을 누르면 설정이 열리고 "복구 파일 저장"으로 스크롤됩니다. "나중에"를 누르면 현재 세션에서만 닫힙니다(다음 시작 시 다시 나타납니다. 한 번의 닫기로 지갑을 잃는 것은 괜찮지 않기 때문입니다). 사용자가 잃을 것이 생기기 전에 실행되는 기존의 최초 설정 단계 게이트와는 별개입니다.
  • 마이닝 전력 슬라이더가 한 줄에 배치됩니다. 레이블, 슬라이더, MAX 버튼, 라이브 값이 2행 레이아웃에서 단일 flex 행으로 축소됩니다. 수직 공간을 약 28px 절약합니다. 동일한 Bitcoin 주황 강조색이 유지됩니다.
  • "마지막 Share"가 실시간으로 갱신됩니다. 1초 setInterval이 3초 상태 폴링 사이에 멈추는 대신 Share 카운터의 상대 시간을 다시 렌더링합니다. document.hidden 상태에서는 건너뛰어, 백그라운드 앱이 보이지 않는 업데이트로 배터리를 소모하지 않습니다.
  • 설정 항목 업스트림 소스 패널. easyBTX가 기반으로 하는 오픈 소스 구성 요소 목록을 표시합니다(BTX 노드 btxchain/btx v0.30.1에 고정, MineBTX dexbtx/minebtx, Tauri v2, 공개 EasyBTX-releases 저장소). 각 행은 GitHub API에서 실시간으로 가져온 최신 태그와 현재 고정 버전, 그리고 현재 상태/업데이트 가능 배지를 표시합니다. 업스트림이 앞서 나갈 때를 추적하는 메인테이너 대시보드입니다. 5분간 캐시되며, 새로 고침 버튼으로 캐시를 우회할 수 있습니다.
  • About 모달의 커뮤니티 신호. easyBTX 설치 수(GitHub Releases 에셋 다운로드 수 합계), 현재 온라인 풀 마이너 수, 지난 24시간 발견된 블록 수, 네트워크 속도에 대한 라이브 타일. 모달을 열 때 새로 고쳐지며, 60초간 캐시됩니다. 정직한 표현: "온라인 마이너" 타일은 "easyBTX + 기타 클라이언트 포함"으로 표시됩니다. 풀 API가 아직 miner_version별로 워커를 구분하지 않기 때문입니다.

브랜드

  • easyBTX가 산문에서 일관되게 소문자로 표기됩니다. README, CHANGELOG, NOTICE, docs/ 폴더 전체에서 17군데가 교체됩니다. URL 경로(MendeMatthias/EasyBTX-releases), Rust EasyBtxState 타입, 릴리스 파이프라인 아티팩트 이름(EasyBTX.dmg, EasyBTX.app)은 의도적으로 유지됩니다.

유지 관리

  • 디스크 부족 경고 배너. UI의 나머지 부분을 구동하는 동일한 상태 새로 고침에서 3초마다 남은 디스크 공간을 가져옵니다. 1 GB 미만이면 황색 알림이, 500 MB 미만이면 빠른 깜박임이 있는 빨간 알림이 표시됩니다. 둘 다 RPC가 다운된 경우에도 표시되며, 이는 경고가 가장 중요한 시점과 정확히 일치합니다(btxd가 Fatal LevelDB error: No space left on device로 충돌하여 RPC에 접근할 수 없고 사용자가 이유를 모를 때).
  • 설정 항목 유지 관리 항목 디스크 공간 복구. 클릭 한 번으로 미사용 blockfilter/coinstats btxd 인덱스, 로드 후 assumeutxo 스냅샷을 삭제하고, debug.log가 50 MB를 초과한 경우 잘라냅니다. 데이터 디렉토리를 외부 볼륨으로 이동할 준비가 되지 않았지만 디스크 공간이 필요할 때 사용합니다.

출시 전 강화

  • worker.report_metrics 수집이 비동기입니다. 동기식 std::process::Command::output()(타임아웃 없이 top이 실행되는 동안 tokio 런타임 워커를 차단)을 tokio::process::Command + 실제 4초 tokio::time::timeout으로 교체했습니다. 중단된 top이 더 이상 stratum 리더, 솔버 자식 관리, 풀 제출을 차단하지 않습니다.
  • 메트릭 틱에서 풀 상태의 단일 가드 읽기. status.lock().await의 2단계 잠금/잠금 해제를 하나의 보호된 범위로 통합하여 shares_acceptedhashps가 항상 동일한 상태 틱 생성에서 관찰되도록 합니다.

문서

  • docs/2026-05-28-btx-qid-self-custody.md. 외부 수령 주소가 나중에 또 다른 핫 지갑이 아닌 사용자가 전화기/패스키로 보유하는 주소가 될 수 있도록, BTX 시드에 양자 내성 자기 수탁 "qID"(패스키 + 2-of-3 Shamir/MPC 쉐어 분할)를 고정하기 위한 연구 및 4단계 계획. bonuz HQ 페이지에 대한 미래 지향적 계획이며, 앱 코드는 이에 의존하지 않습니다.

v0.2.0

2026-05-28

"메가 감사" 폴리시 릴리스. /cso 보안 감사와 3개 에이전트 기능 버그 감사에서 v0.1.13에 CRITICAL 4건, HIGH 10건, MEDIUM 13건, 그리고 LOW 여러 건의 문제가 발견되었습니다. 이번 릴리스는 이를 한 번에 모두 해결합니다. cargo test: 149/149 통과. tsc --noEmit: 오류 없음. 공개 IPC는 제거되지 않았지만, send_btx에 명시적인 subtract_fee: bool 파라미터가 추가되었습니다(프론트엔드 Max 버튼이 이를 전달). EasyBtxState에 세 개의 #[serde(default)] 필드가 추가되어 기존 상태 파일이 계속 로드됩니다.

중요 수정 (데이터 손실 / 고아 프로세스 / 강제 재동기화)

  • 다중 지갑 삭제가 데이터 디렉토리 이동 시 차단됩니다. relocate_datadir이 이제 src 아래의 모든 지갑(wallet.dat을 포함하는 모든 디렉토리)을 열거하고, remove_dir_all(src)가 실행되기 전에 각각이 dest에 존재하고 비어 있지 않은지 확인하여 실패합니다. 이전의 97% 크기 검사는 miner/wallet.dat만 확인했기 때문에 더 작은 보조 지갑의 자동 손실을 허용할 수 있었습니다.
  • 앱 종료 시 풀과 Metal 솔버가 이제 제대로 종료됩니다. stop_node_blockingpool_stop을 신호하고, 3초 타임아웃으로 pool_handle을 기다리며(초과 시 JoinHandle 중단), 풀 상태를 지웁니다. 솔버 Command.kill_on_drop(true)가 추가되어 삭제된 JoinHandle이 종료 후 100% GPU에 고정된 채로 남기는 대신 하위 프로세스를 회수합니다.
  • loadtxoutset이 실제로 성공하기 전에 Snapshot.dat이 더 이상 삭제되지 않습니다. 새로운 지속적 플래그 EasyBtxState.snapshot_loadedloadtxoutset이 성공할 때(또는 getchainstates가 이미 스냅샷 체인 상태를 보고할 때)만 설정됩니다. 모든 disk::reclaim_disk 호출자가 이제 setup_complete(RPC 바인딩에서 전환되며, 백그라운드 스냅샷 로드 이전) 대신 이 정확한 플래그를 읽습니다. 로드 중 앱을 닫아도 더 이상 스냅샷이 삭제되거나 전체 제네시스 재동기화가 강제되지 않습니다.
  • 솔버 출력 가드가 nonce 커서 붕괴를 방지합니다. solve_next_nonce가 이제 tries_used > 0 AND nonce64_end >= solve_next_nonce(단조적)인 경우에만 진행합니다. nonce64_end가 없는 잘못된 {"found":false}가 이전에는 커서를 1로 재설정하여 중복 Share 제출(코드 22)을 일으켰습니다.

고영향 수정

  • repair_node가 더 이상 자동으로 "miner" 지갑으로 전환하지 않습니다. 이제 wallet_rpc를 재구성하기 전에 state.active_wallet을 읽습니다(reclaim_disk_now의 패턴을 반영). PR #12의 H1 수정이 여기에 아직 적용되지 않았었습니다.
  • move_datadir_to가 exFAT/FAT 볼륨을 거부합니다. list_external_volumes 경고가 이제 툴팁으로만 표시되는 것이 아니라 이동 경계에서 적용됩니다.
  • apply_node_update가 실제로 새 btxd 바이너리로 전환됩니다. 이전에는 No-op이었습니다(새 설치가 재사용되지 않음). 이제 새 태그(EasyBtxState.btx_release_tag)를 저장하고, 실행 중인 컨트롤러를 중지하며, 새 바이너리에 대해 재시작합니다. check_node_update/get_node_status가 저장된 태그를 존중하여 업데이트 배너가 고착되는 현상이 해결됩니다.
  • 솔브 중간의 ntime 변경이 nonce 커서를 재설정합니다. 비정상적인 알림이 ntime 또는 merkleroot를 변경할 때, 다음 솔브가 새 헤더의 낮은 nonce를 지나쳐 진행하는 대신 nonce 윈도우의 시작에서 다시 시작합니다.
  • clean_jobs=true가 방금 종료된 솔버를 오래된 제출로 더 이상 레이스하지 않습니다. clean-kill 경로가 죽은 자식의 stdout을 비우고 solving_job을 지워서, 마이크로초 늦은 솔버 결과가 제출 게이트에서 안전하게 실패합니다.
  • _corrupt-<ts> 아카이브 충돌이 더 이상 체인을 영구 삭제하지 않습니다. 서브 마이크로초 타임스탬프와 -N 카운터가 충돌을 방지합니다. 아카이브 이름 변경 실패 시 이제 Err을 반환하고 src를 그대로 둡니다(이전에는 폴백 remove_dir_all(src)가 손상된 체인을 영구 삭제하여 "절대 하드 삭제하지 않음" 약속을 위반했습니다).
  • 풀 수수료 계산이 솔로의 규율과 일치합니다. 중지/clean-kill/마감 경계가 더 이상 경과된 kill 시간을 개발자 mined_secs로 기록하지 않습니다. 발생은 이제 tries_used > 0이 있는 파싱 가능한 출력의 solver 대기 분기에서만 발생합니다. 3.5% 개발자 지분이 중지 반복 하에서 더 이상 증가할 수 없습니다.
  • 연결 해제 시 Share 손실이 UI에 표시됩니다. mining.submit 쓰기 오류가 이제 재연결 루프로 돌아가기 전에 last_event = "share lost (disconnect)..."를 설정하고 stale 카운터를 증가시킵니다.
  • 불안정한 네트워크가 더 이상 "developer fee window..."를 고착시킬 수 없습니다. 누적 시도 시간 상한(300초)이 단일 수수료 윈도우가 계속 연결에 실패할 경우 다음 세션을 사용자 수령으로 강제합니다.
  • 시작 시 외부 드라이브 포인터가 없는 경우 기본 데이터 디렉토리로 폴백됩니다. 이전에는 포인터 쓰기와 src 삭제 사이에 드라이브를 뺐을 때 앱이 존재하지 않는 경로에서 멈췄습니다.

마이닝 및 풀 정확성

  • Subscribe/authorize 실패가 이제 기록되고 last_event에 표시됩니다(이전에는 자동으로 무시됨. 풀 측 스키마 변경이 UI 피드백 없이 모든 풀 마이닝을 종료할 수 있었습니다).
  • submit_id가 연결 시점 에포크 마이크로초로 초기화되어 ID가 재연결 간에 반복되지 않습니다.
  • 솔로: Paused 틱 이후, 다음 반복이 수수료 버스트를 건너뛰고 사용자를 위해 채굴합니다(다음 일시 중지 해제 틱에서 부족분을 따라잡음). 동기화 일시 중지 플래핑 중에 단일 솔로 블록이 개발자 주소에 착지하는 것을 방지합니다.
  • 스냅샷 멱등성이 이제 크기가 우연히 일치하는 기존 snapshot.dat에 대해 SHA 검증을 수행합니다(이전에는 정확한 크기의 잘못된 내용 파일이 검증 없이 허용됨).

지갑 / 전송 / 감사 개선

  • 지갑별 수신 주소가 안정됩니다. EasyBtxState.wallet_addresses가 각 지갑의 주소를 기억합니다. do_switch_wallet이 전환할 때마다 새로 생성하는 대신 address_is_mine을 통해 재사용합니다.
  • 감사/CSV 내보내기가 최대 10,000개 거래까지 지원됩니다. (이전 1,000건 한도가 장기 실행 마이너의 이전 항목을 자동으로 삭제했습니다.)
  • 전송 "Max"가 이제 명시적 플래그입니다. sat 허용 오차 휴리스틱이 아닙니다. 프론트엔드가 Max 클릭을 추적하고, 백엔드의 send_btx(.., subtract_fee)가 이를 존중합니다. 수동으로 정확히 잔액을 전송해도 더 이상 자동으로 줄어들지 않습니다.
  • 백엔드 send_btx가 금액을 검증하고 초과 인출을 거부합니다. 유한하지 않거나, 0이거나, 음수이거나, amount > spendable인 경우 btxd가 아닌 IPC 경계에서 거부됩니다.
  • backup_wallet_cmd가 정규화할 수 없는 경로를 거부합니다. 그리고 .. 구성 요소를 포함하는 경로도 거부합니다. 이전의 "정규화 실패 시 건너뜀" 취약점이 해결됩니다.
  • 전송 시 유럽식 소수점 쉼표를 지원합니다. parseFloat 앞에 두 Send 호출 위치 모두에서 replace(/,/g, ".")가 적용됩니다. 1,5 BTX가 이제 1이 아닌 1.5로 파싱됩니다.
  • Explorer 링크의 btx1 접두사 확인. addrExplorerUrl이 이제 Send 입력 정규식(^btx1[a-z0-9]{20,90}$/i)과 일치하여 감사 행이 존재하지 않는 탐색기 페이지로 링크될 수 없습니다.
  • 풀 수령이 Stratum에 전달하기 전에 캐시된 주소를 address_is_mine으로 재검증합니다. 불일치 시 새로 생성합니다.
  • 풀 태스크가 repair_noderelocate_datadir 중 제대로 중지됩니다. (이전에는 삭제/이동 중인 체인에 대해 계속 제출했습니다.)
  • persist_active_wallet이 잠겨 있습니다. 새로운 STATE_FILE_LOCK이 로드-변형-저장 시퀀스를 직렬화하여 두 번 클릭해도 업데이트를 잃지 않습니다.

보안 (/cso 감사)

  • 풀 로그가 /tmp 밖으로 이동되고 잠겨 있습니다. 이제 로그는 $HOME/.easybtx/pool.log에 위치합니다(HOME이 설정되지 않은 경우 /tmp로 폴백). mode(0o600) + O_NOFOLLOW로 열립니다. 전 세계 읽기 가능/심링크 스푸핑 가능한 공격 면이 해결됩니다.
  • 풀에 전송되는 gpu_uuid가 이제 원시 IOPlatformUUID가 아닌 솔트된 SHA-256입니다. 해시는 설치별로 안정적이어서(풀 워커 상관관계가 여전히 작동) 원시 하드웨어 식별자가 더 이상 머신을 떠나지 않습니다.
  • RpcClient::for_wallet이 지갑 이름을 경로에 퍼센트 인코딩합니다. 현재는 관례에 따라 안전합니다(모든 호출자가 검증). 이제 리뷰어 규율 대신 함수 레벨에서 적용됩니다.

내부 / 기타

  • 버전: 0.1.13에서 0.2.0으로 변경(package.json, tauri.conf.json, Cargo.toml).
  • EasyBtxStatesnapshot_loaded, btx_release_tag, wallet_addresses가 추가됩니다(모두 #[serde(default)]. 기존 상태 파일이 계속 로드됩니다).
  • STATE_FILE_LOCKstate.rs에 도입되어 로드-변형-저장 패턴을 직렬화합니다. reset_account/restore_wallet/first_run_setup의 상태 쓰기가 이제 이를 통해 처리됩니다.
  • 알려진 오래된 문서 링크 TODO(H3-followup) 하나가 apply_node_update에 남아 있으며, 끊김 없는 인세션 RPC 재연결을 가리킵니다(저장된 태그와 재시작 경로는 배포됨. 인세션 쿠키 대기는 후속 작업입니다).

v0.1.13

2026-05-28

추가됨

  • 수신 잔액 줄. 아직 확인되지 않은 수신 결제(untrusted_pending)가 이제 확인될 때까지 사라진 것처럼 보이는 대신 명확한 "수신 중... 확인 중" 줄로 표시됩니다. 사용 가능한 잔액은 신뢰할 수 있는 자금만 유지되므로 전송이 초과 인출되지 않습니다.
  • 블록 탐색기 링크. 전송, 수신, 감사/개요에서의 거래 ID와 주소가 explorer.minebtx.com에서 열립니다(축약, 복사, 열기 기능). 전송 확인 화면에 전체 수신자 주소가 표시되어 확인할 수 있습니다.
  • 전송: "Max" 버튼과 안전한 전액 전송. Max 버튼이 전체 사용 가능 잔액을 채우며, 전액 전송 시 이제 "잔액 부족"으로 실패하는 대신 금액에서 네트워크 수수료를 차감합니다. 확인 단계 전에 수신자 주소도 확인됩니다.
  • 공간 확보. 설정 항목 저장소 버튼(및 시작 시 자동 실행)이 미사용 blockfilterindex/coinstatsindex, 로드 후 assumeutxo 스냅샷, 과대한 debug.log를 삭제하여 디스크 공간을 확보합니다. 블록체인과 지갑은 절대 건드리지 않습니다.

  • 풀 수령 안내 팝업이 이제 모호한 표현 대신 실제 정책(주간 금요일 18:00 UTC, 최소 0.0001 BTX, 2.5% 풀 수수료)을 표시합니다.
  • easyBTX가 이제 풀에 easybtx/<version>으로 식별되어 풀이 통계용으로 eBTX 마이너를 분류할 수 있습니다. 하드웨어 정보가 워커에 정식 대시보드 이름을 부여합니다.

수정됨

  • 풀 블록 티어 pre_hash. Metal Share 솔버가 이제 Share에 대해 블록 티어 pre_hash 게이트(sigma <= block_target << epsilon)를 우회하는 대신 적용합니다. 이로써 블록 티어 Share가 유효한 블록이 되고, 풀의 submitblock이 "matmul phase2 proof of work failed"로 실패하는 현상이 해결됩니다. easyBTX가 mining.subscribe에서 pre_hash_block_tier_v18 기능을 선언합니다(솔버 변경은 btx-main에 있음. docs/patches/btx-prehash-block-tier.patch 참조).

변경됨

  • 마이닝 전력이 이제 라이브 슬라이더입니다. 통계 카드 상단에 위치하며, 높일수록 녹색에서 주황-빨간색으로 가열됩니다(5% 단계, Max 버튼). 설정 슬라이더와 동기화됩니다. 기존 속도/전력 표시 행이 제거되어 카드가 더 짧아집니다. 슬라이더의 안내 아이콘이 모범 사례를 설명합니다(가벼운 작업 시 약 50%가 Mac을 시원하고 조용하게 유지. 100%는 가장 빠르지만 뜨겁고 배터리를 소모합니다).
  • 활성 지갑이 이제 백엔드에서만 가져옵니다(단일 신뢰 출처). 프론트엔드가 더 이상 localStorage에서 지갑을 다시 적용하지 않으므로 지갑 칩과 주소가 일시적으로 불일치하는 현상이 없습니다.
  • 풀 수익 카드가 더 짧아집니다. 수령 설명이 "수락된 Share" 옆의 안내 아이콘 팝업으로 이동되었고, 워커가 "풀 대시보드 열기" 링크 옆에 배치되어 한 쌍으로 읽힙니다.