v0.4.7

MỚI NHẤT
2026-06-02

Pool mining trên Mac giờ tức thì, không cần tải node và không cần đồng bộ.

Điểm chính là tốc độ. Ở chế độ pool, easyBTX không còn tải hay chạy node BTX đầy đủ nữa. Pool mining vốn không bao giờ cần nó, mà nó lại thêm một lượt tải nhiều gigabyte, những lần đồng bộ "đang bắt kịp" kéo dài, và thỉnh thoảng có crash. Giờ bạn mở app, địa chỉ nhận thưởng của bạn đã được điền sẵn, và Mac của bạn bắt đầu đào ngay. Nếu bạn đã có easyBTX, địa chỉ nhận thưởng hiện tại của bạn được chuyển sang tự động, nên không có gì phải thiết lập lại.

Đã thay đổi

  • Pool mining trên Mac chạy mà không cần node BTX đầy đủ: nó khởi động tức thì, không có chuỗi khối để tải, không có gì để đồng bộ, và không có node để crash. Solo mining trên Mac tạm dừng lúc này trong khi chúng tôi tập trung vào pool mining; nó sẽ trở lại.
  • Địa chỉ nhận thưởng của bạn được điền tự động từ thiết lập trước đó, nên một bản cập nhật không bao giờ để trống ô đó.
  • Tốc độ đào giờ hiển thị theo N/s, cùng đơn vị mà pool dùng, nên con số trong app khớp với bảng điều khiển pool của bạn.
  • App luôn mở ra trong bố cục cao, vừa với mọi màn hình.

Đã thêm

  • Một nút "Get the BTX Wallet" màu xanh trong Giao dịch và trong cài đặt nhận thưởng, dẫn đến ví BTX độc lập.
  • Một hành động tùy chọn để giải phóng dung lượng đĩa bằng cách xóa dữ liệu node cũ mà bạn không còn cần ở chế độ pool. Ví của bạn không bao giờ bị chạm vào.

v0.4.6

2026-06-01

Pool mining trên Mac hoạt động trở lại, cùng một bảng số liệu GPU trực tiếp.

Điểm chính là một bản sửa lỗi. Pool mining trên Mac, vốn hỏng ở 0.4.5, hoạt động trở lại. Một thay đổi được thực hiện khi đưa easyBTX lên Windows đã trỏ Mac đến sai trình trợ giúp đào, nên việc đào không khởi động được. Bản này khôi phục lại điều đó. Nếu bạn đã cập nhật lên 0.4.5 và không thể bắt đầu đào, bản này sửa lỗi đó, và Mac hoạt động đúng như ở 0.4.4.

Đã sửa

  • Pool mining hoạt động trở lại trên Mac. Một thay đổi ở 0.4.5 cho bản Windows đã trỏ engine đào của Mac đến sai trình trợ giúp, nên việc đào không khởi động được. Đã khôi phục về cách nó hoạt động ở 0.4.4.

Đã thêm

  • Một bảng số liệu GPU trực tiếp trong màn hình Giới thiệu: mức sử dụng, xung nhịp, công suất, nhiệt độ, bộ nhớ, và quạt, cập nhật trong khi bảng đang mở. Mac hiển thị mức sử dụng, công suất, và nhiệt độ; Windows hiển thị toàn bộ thông số đọc từ card NVIDIA của bạn.

vWindows 0.4.4

2026-05-31

easyBTX đến với Windows.

Đây là bản phát hành Windows đầu tiên. easyBTX giờ đào BTX trên các Windows PC có GPU NVIDIA RTX dòng 30 trở lên, theo cùng một cách một app, một cú nhấp, tự lưu ký như bản Mac. Bạn mang đến một card NVIDIA, chọn một địa chỉ nhận tiền, và GPU của bạn tham gia pool. Bản Mac (Apple Silicon, Metal, solo hoặc pool) giữ nguyên không đổi.

v0.4.4

2026-05-30

Gửi tiền hoạt động trở lại, số liệu đào của riêng bạn, và các cửa sổ rộng rãi, êm dịu hơn.

Một bản tiếp nối tập trung của 0.4.3. Điểm chính là một bản sửa lỗi: gửi BTX từ app hoạt động trở lại sau khi một bản build gần đây có thể khiến lần gửi thất bại kèm một thông báo gây hiểu lầm. Bên cạnh đó, màn hình Giới thiệu giờ hiển thị số liệu đào của riêng bạn, các cửa sổ popup đều mở ra với cùng một dáng rộng rãi, và sao chép link explorer của một giao dịch chỉ là một lần chạm.

Đã thêm

  • Số liệu đào của bạn: một bảng số liệu riêng tư trong Giới thiệu cho thấy bạn đã đào tổng cộng bao lâu, tốc độ trung bình, số share được chấp nhận, và ngày bạn bắt đầu. Nó chỉ nằm trên Mac của bạn và không bao giờ được tải lên.
  • Một nút "Sao chép link" trên mỗi giao dịch, để bạn có thể sao chép link block-explorer của nó và dán vào bất cứ đâu.

Đã thay đổi

  • Giới thiệu, Cài đặt, Giao dịch, và các popup thông tin giờ mở ra trong một cửa sổ lớn hơn, đồng nhất, dễ đọc hơn.
  • Cài đặt có một menu bên gọn gàng hơn. Mục Liên kết giờ trỏ đến trang BTX protocol chính thức và, riêng biệt, một trang giá trực tiếp (bên thứ ba; không phải lời khuyên tài chính, và easyBTX độc lập với nó).

Đã sửa

  • Gửi BTX từ app hoạt động trở lại. Một bản build gần đây có thể từ chối lần gửi kèm thông báo "kiểm tra địa chỉ" gây hiểu lầm ngay cả khi địa chỉ vốn không sao; điều đó đã được sửa, và các thông báo lỗi giờ mô tả đúng nguyên nhân thật sự.

v0.4.3

2026-05-30

Tạm dừng và tiếp tục, khởi động lại êm hơn, riêng tư hơn, và Mac của bạn xuất hiện trên bảng điều khiển pool.

Bản phát hành này tiếp nối thiết kế mới của 0.4.0 với một loạt cải thiện nhỏ giúp dùng dễ chịu hơn. Dừng lại giờ giữ node của bạn luôn sẵn sàng và mời bạn nhấn nút Tiếp tục màu xanh, thời gian "đang chuẩn bị" kéo dài sau khi khởi động lại giờ tự giải thích thay vì trông như bị treo, và bạn có thể ẩn số dư chỉ với một lần chạm. Người đào pool giờ có thể hiển thị số liệu GPU trực tiếp và tên đã chọn của Mac mình trên bảng điều khiển minebtx.

Đã thêm

  • Tạm dừng và Tiếp tục. Nút điều khiển hiển thị "Tạm dừng" khi đang đào, rồi chuyển thành "Tiếp tục" màu xanh sau đó thay vì một nút "Bắt đầu" lạnh lùng. Node của bạn vẫn sẵn sàng ở giữa hai lúc đó, nên bạn có thể bắt nhịp lại ngay.
  • Một biểu tượng con mắt riêng tư bên cạnh số dư ẩn nó sau các dấu chấm cho đến khi bạn hiện lên, tiện khi bạn đang chia sẻ màn hình hoặc ở nơi công cộng. Lựa chọn của bạn được ghi nhớ.
  • Số chữ số thập phân của số dư: hiển thị đầy đủ 8 chữ số, hoặc rút gọn còn 3 để liếc nhanh. Điều này chỉ thay đổi cách hiển thị, không bao giờ thay đổi số bạn đang giữ hay gửi đi.
  • Một trạng thái trực tiếp rõ ràng trong khi node chuẩn bị sau khi khởi động lại. Thay vì một dòng "Đang xử lý..." đứng yên, nó giải thích rằng đang xây dựng lại chỉ mục số dư riêng tư của bạn, hiển thị ước tính và thời gian đã trôi qua, và lưu ý rằng chuỗi khối thì đã được cập nhật.
  • Kiểm tra CPU, GPU và pool-hay-solo trên màn hình đào, để liếc một cái là bạn thấy Mac của mình đang đào trên GPU và kết nối đúng như bạn mong đợi.
  • Số liệu GPU trực tiếp cho bảng điều khiển pool minebtx. easyBTX báo cáo mức sử dụng GPU và công suất của Mac bạn cho pool (không cần quyền admin), nên worker của bạn có thể hiển thị số liệu thật thay vì để trống, và tên bạn đặt trong Cài đặt giúp nhận diện máy của bạn.
  • Một lần dọn dẹp nền lặng lẽ xóa các phần thừa cũ còn lại sau khi sửa chữa trên những bản cài để chạy lâu, để chúng không chất đống trên đĩa.

Đã thay đổi

  • Cài đặt giờ mở theo giao diện hiện tại của bạn. Trước đây nó luôn hiện ở chế độ sáng; giờ nó khớp với app, nên app tối thì Cài đặt cũng giữ tối.
  • Cài đặt có bố cục thanh bên gọn gàng hơn, với các thẻ giao diện và lựa chọn "layout ưa thích khi khởi động".
  • Các popup thông tin ("Cách mining hoạt động" và những cái khác) giờ khớp với phong cách Cài đặt: một cửa sổ rộng rãi, êm dịu và dễ đọc hơn.

Đã sửa

  • Bảng Nguồn upstream trong Cài đặt không còn hiển thị "Không có bản mới nhất" trên mọi hàng. Nó lấy lại được các phiên bản mới nhất thật sự.

v0.4.0

2026-05-29

Giao diện mới, và pool mining giờ trả thưởng về ví ngoài của bạn.

easyBTX có giao diện mới. Mặc định là cửa sổ "phòng điều khiển" rộng hơn, chia mọi thứ thành ba cột thoáng đãng, nên khi node đầy thông tin trực tiếp không có gì bị tràn ra ngoài màn hình. Có thêm nút chuyển giao diện sáng/tối, trong đó Tối vẫn là mặc định, Sáng nếu bạn thích, và Theo hệ thống để tự động chuyển theo Mac của bạn. Pool mining giờ cũng dùng địa chỉ nhận thưởng ngoài của bạn, giống cách solo mining đã làm, nên bạn có thể đào trên laptop mà không cần giữ khóa coin trên máy đó.

Đã thêm

  • Layout "phòng điều khiển" rộng mới làm mặc định: màn hình trạng thái bên trái, hiển thị mining, công suất và ví ở giữa, số liệu mạng và pool trực tiếp bên phải. Các layout cũ Cao, Gọn và Mini vẫn chỉ một cú nhấp để dùng.
  • Giao diện Tối, Sáng và Theo hệ thống. Tối vẫn là mặc định. Chọn Sáng nếu bạn thích, hoặc Theo hệ thống để Mac tự chuyển. Lựa chọn được lưu lại.
  • Nút nhanh trong Cài đặt cho từng mục (Node, Mining, Giao diện, Vị trí dữ liệu, Ví, Nhận thưởng, Sao lưu, Cập nhật, Bảo trì, Tài khoản mới, Nguồn upstream, Liên kết). Nhấn vào để chuyển thẳng đến đó.

Đã thay đổi

  • Pool mining giờ gửi phần thưởng về địa chỉ nhận thưởng ngoài khi bạn đã cấu hình. Trước đây chỉ có solo mining làm vậy. Dù cách nào, coin cũng không bao giờ chạm vào ví trên Mac này, nên laptop bị xâm phạm cũng không bao giờ có khóa.
  • Phí công cụ easyBTX giờ là 4,99% phần thưởng đào được (trước là 3,5%). Vẫn được tính theo từng phần thời gian và công bố trước, và phí riêng của pool (2,5%) không thay đổi, nên đào pool tổng cộng khoảng 7,5%. Phần còn lại đi vào ví của bạn.
  • Cài đặt được bố trí dưới dạng các ô gọn gàng nằm cạnh nhau khi có đủ chỗ, hiển thị tốt trong cả chế độ Sáng và Tối.
  • "Kiểm tra / Tổng quan" giờ chỉ còn là "Giao dịch".
  • Danh sách kiểm tra cài đặt rõ hơn. Mỗi bước chuyển thành dấu tích xanh với nhãn đơn giản mô tả kết quả ("Đã tải node BTX và chuỗi khối", "Node đã đồng bộ đến khối mới nhất", "Đang đào"), thay vì hiển thị màu cam như việc cần làm.
  • Chữ easyBTX trên thanh tiêu đề lớn hơn một chút, trong thanh mỏng hơn một chút.

Đã sửa

  • "Giải phóng dung lượng đĩa" giờ báo cáo đúng lượng đã giải phóng, bao gồm cả snapshot một lần lớn, thay vì đếm thiếu và âm thầm giải phóng phần còn lại lần khởi động sau.
  • Node của bạn không còn trông như thể đã đặt lại về "khối 0 / 0" sau khi giải phóng dung lượng đĩa hoặc khởi động lại. Nó nhớ mình đang ở đâu và hiển thị điều đó trong khi xác nhận, thay vì trông như bắt đầu đồng bộ lại từ đầu.
  • Node đã đồng bộ khi quay trở lại không còn chờ lâu lúc khởi động sau khi sửa hoặc khởi động lại.

v0.3.1

2026-05-29

Node của bạn không bao giờ trông như bị hỏng khi đang bắt kịp. Sau khi easyBTX đóng một thời gian, hoặc tắt đột ngột (crash, thoát bắt buộc, hoặc thay thế app trong khi đang chạy), node đôi khi cần vài phút để bắt kịp lần sau khi bạn mở app. Trước đây, easyBTX có thể nhầm thời gian bắt kịp đó là lỗi thật sự và hiển thị thông báo lỗi. Giờ nó chờ đợi bình tĩnh, thông báo cho bạn biết chuyện gì đang xảy ra, và giữ ví cùng coin của bạn nguyên vẹn. Nó sẽ không bao giờ đề xuất sửa chữa khi node chỉ đang bắt kịp. Bạn không cần làm gì.

Đã sửa

  • easyBTX không còn hiển thị lỗi khởi động khi node chỉ đang bắt kịp. Nó giờ phân biệt được giữa node vẫn đang xử lý dữ liệu và node đã thực sự dừng lại.
  • Hành động nguy hiểm "Sửa node" không còn được đề xuất khi node đang bắt kịp. Nó giờ chỉ xuất hiện khi có tín hiệu lỗi thật sự hoặc tiến trình node đã thực sự thoát ra.
  • Không còn bước ma "Tải node BTX và chuỗi khối" trong khi node đã phục hồi chỉ đang khởi động với chuỗi khối đã có trên đĩa, nên danh sách kiểm tra cài đặt khớp với thực tế.
  • Đã xóa giới hạn thời gian cố định có thể cắt node đang hoạt động tốt. Node đang thực sự tiến bộ giờ được cho thời gian cần thiết để hoàn thành.

Đã cải thiện

  • Thông báo rõ hơn, bình tĩnh hơn trong khi node đang bắt kịp, để vài phút chờ bình thường không trông như lỗi.
  • Ví và coin của bạn không bao giờ bị chạm vào trong quá trình khởi động hoặc phục hồi. easyBTX phục hồi dữ liệu chuỗi từ snapshot đã lưu, không bao giờ từ khóa của bạn.

Bên trong

Khi node khởi động lại sau khi offline một thời gian hoặc sau khi tắt không sạch, nó xây dựng lại một phần trạng thái nội bộ trước khi có thể phục vụ yêu cầu. Trong khoảng thời gian đó node đang hoạt động và làm việc, nhưng trả lời với trạng thái "đang khởi động" (mã RPC -28, trả về kèm HTTP 500). Phiên bản trước coi đó là lỗi cứng và bỏ cuộc sau giới hạn cố định 360 giây, điều này đẩy một node hoàn toàn khỏe mạnh vào màn hình lỗi còn kèm nút sửa nguy hiểm. 0.3.1 phân loại mọi lần kiểm tra khởi động thành ba trạng thái: sẵn sàng, đang khởi động, hoặc không khả dụng. Node đang khởi động (trạng thái -28, hoặc log node cho thấy quá trình xây dựng lại đang diễn ra) được coi là "tiếp tục chờ" và được cấp giới hạn dự phòng rộng rãi để hoàn thành. Node không trả lời gì cả vẫn bỏ cuộc ở một giới hạn hợp lý. Đường dẫn sửa nguy hiểm vẫn bị khóa sau tín hiệu xác nhận lỗi như trước, nên nó chỉ có thể kích hoạt khi có vấn đề thật sự, không bao giờ vì khởi động chậm. Tất cả quy tắc an toàn phục hồi không thay đổi: ví của bạn luôn được giữ nguyên, dữ liệu hỏng được lưu trữ chứ không xóa, phục hồi chạy nhiều nhất một lần mỗi lần khởi chạy, và từ chối chạy nếu đĩa đầy.

Phân phối

Tự động gửi đến các bản cài đặt 0.3.0 hiện có qua trình cập nhật trong app. Được build và xuất bản cục bộ. Build indie chưa được ký, công chứng Apple nằm trong lộ trình.

v0.3.0

2026-05-28

Bản phát hành "tuân thủ pool và minh bạch". Pool dexbtx của shib đã lên v5 vào ngày 2026-05-27 với cổng kiểm tra năng lực pre_hash_block_tier_v18 bắt buộc và một dict mở rộng mining.subscribe mới mang session_id cùng fingerprint phần cứng theo từng rig. easyBTX v0.2.0 chỉ gửi hai trong ba trường bắt buộc, nghĩa là các worker Mac kết nối với pool nhưng không bao giờ xuất hiện trên bảng điều khiển worker. v0.3.0 mang đến handshake v0.3.x đầy đủ, thêm heartbeat worker.report_metrics mở khóa các hàng bảng điều khiển trực tiếp theo từng rig, và hiển thị tên chính thức mà pool gán cho mỗi rig để người dùng có thể khớp Mac của mình với hàng trong /stats. Ngoài ra, tính năng tự quản lý tùy chọn đầu tiên: phần thưởng đào solo giờ có thể được trả về địa chỉ BTX ngoài không có khóa trên Mac này, cùng với nhiều công việc UX theo yêu cầu của cộng đồng v0.2.0 trên Telegram. cargo test: 195/195. tsc --noEmit: sạch. cargo build --release + npm run build: cả hai đều xanh.

Sửa lỗi nghiêm trọng

  • Đăng ký pool dexbtx cho worker Mac đã được khôi phục. mining.subscribe giờ gửi dict mở rộng v0.3.x đầy đủ: protocol_compliant: ["pre_hash_block_tier_v18"], fingerprint phần cứng hiện có (mở rộng với solver_env: {BTX_MATMUL_BACKEND: "metal"}), và session_id theo phiên (32 ký tự hex viết thường khớp với dạng uuid.uuid4().hex của miner tham chiếu, được xây dựng từ SHA256("easybtx-session:" || nanos || pid || counter) để các phiên liên tiếp không bao giờ trùng). Không có session_id, pool v5 lặng lẽ loại các worker Mac khỏi bảng điều khiển và lệnh /stats của bot Telegram. mining.set_canonical_name giờ được xử lý và gán được lưu vào ~/.easybtx/canonical_names.json để nhãn do pool gán (ví dụ M2_PRO-BRAVO-1) tồn tại qua các lần kết nối lại. Dòng "Worker của máy này:" trên giao diện giờ hiển thị nhãn đó ngay khi nhận được.
  • Cập nhật node không còn mất 8 phút. NodeController::stop kiểm tra Child::try_wait tối đa 90 giây trước khi dùng SIGKILL. Trước đây, lệnh kill ngay lập tức xảy ra giữa một lần flush trên LevelDB trạng thái shielded btx1z, để lại một đánh dấu mutation đang thực thi kích hoạt EnsureShieldedStateInitialized: rebuilding full shielded state from chain lần khởi động sau (thực tế đo được là 7 phút 57 giây). Thoát sạch không để lại đánh dấu và việc khởi động trở về khoảng một giây.
  • Các quarantine từ Repair Node không còn rò rỉ gigabyte mãi mãi. prune_old_quarantines mới xóa các thư mục _corrupt-*_preserve-* cũ hơn 7 ngày trong khi giữ lại cái mới nhất của mỗi mẫu để làm bằng chứng. Chạy lúc khởi chạy app (bắt các quarantine cũ từ các phiên trước) và cuối mỗi lần repair_node (bắt các quarantine cũ từ các lần sửa trước). Một _corrupt-* cũ đang chiếm giữ 42 GB trên máy của người bảo trì. Bao gồm 6 unit test mới cho logic lưu giữ.

Nhận thưởng ngoài (tự quản lý tùy chọn)

  • Phần thưởng đào solo giờ có thể được trả về địa chỉ BTX ngoài không có khóa trên Mac này. Mục Cài đặt mới: giữ mặc định (phần thưởng đến ví cục bộ của Mac này) hoặc chuyển hướng chúng đến địa chỉ bạn kiểm soát ở nơi khác: ví phần cứng, ví điện thoại, địa chỉ cold. Điểm mấu chốt là quyền tự quản lý. Mối đe dọa thực tế với máy đào là thực thi code cùng người dùng (kẻ đánh cắp kiểu AMOS mà người dùng bị lừa chạy), và máy để đào 24/7, thường là laptop cũ được tái sử dụng cho mục đích đó, là mục tiêu dễ tấn công. Chuyển hướng phần thưởng đến địa chỉ ngoài có nghĩa là coin tích lũy không bao giờ có khóa trên máy đào. Các địa chỉ được dán vào sẽ được kiểm tra định dạng tại ranh giới IPC (bech32, chấp nhận tiền tố kháng lượng tử btx1z...; phát hiện dán sai mạng, khoảng trắng đầu/cuối, và ký tự giống nhau như b/i/o) với nút "Kiểm tra định dạng" trực tiếp. RPC validateaddress của node thực hiện kiểm tra checksum đầy đủ khi nó đang chạy.
  • Phí dev 3,5% đã công bố không thay đổi. Engine nhận thưởng được tổng quát hóa từ FeeAccrual nhị phân người dùng/dev cũ thành round-robin có trọng số N người nhận (PayoutScheduler) với phí dev là một người nhận bắt buộc. Một unit test chứng minh tỷ lệ dev thực hiện vẫn hội tụ về 3,5% trên 1000 đến 2000 phần bất kể cấu hình của người dùng, nên việc thêm nhận thưởng ngoài không bao giờ thay đổi tỷ lệ phân chia.
  • Chỉ solo trong bản phát hành này, và app nói rõ điều đó. v0.3.0 chỉ chuyển hướng nhận thưởng ngoài cho coinbase đào solo. Phần thưởng pool vẫn đến ví cục bộ (nhận thưởng pool ngoài là v0.3.2). Nếu nhận thưởng ngoài được cấu hình và bạn đang ở chế độ Pool, một banner đỏ trên màn hình chính giải thích rõ, và hộp thoại chuyển Solo sang Pool nhắc lại điều đó, nên người dùng chú trọng bảo mật không bao giờ có thể âm thầm giả định rằng thu nhập pool của mình đang rời khỏi máy.
  • Chọn "Ví cục bộ" sẽ hoàn nguyên đầy đủ. Chọn radio mặc định giờ xóa tỷ lệ phân chia đã lưu (clear_payout_split), không chỉ ẩn form, nên đào quay trở lại ví cục bộ ngay lập tức thay vì âm thầm tiếp tục trả cho địa chỉ ngoài đã đặt trước.

Pool / giao thức mining

  • Heartbeat worker.report_metrics mỗi 60 giây. Nhánh tokio::time::interval mới trong vòng lặp select stratum gửi {session_id, timestamp, cpu_util_pct, ram_gb_used, gpus: [{gpu_uuid, util_pct, power_w, temp_c}], solver_nps, shares_session_total} để bảng điều khiển pool có thể hiển thị bộ đếm CPU/RAM/share theo từng rig. CPU% và RAM đã dùng đến từ một lần gọi top -l 1 -n 0 chạy trên subprocess async với tokio::time::timeout 4 giây thật, nên top bị treo không bao giờ có thể chặn trình đọc stratum, quản lý tiến trình con solver, hoặc các lần submit pool. Mức sử dụng GPU, công suất và nhiệt độ được báo cáo là JSON null trên macOS vì powermetrics yêu cầu quyền root (theo ghi chú của shib về metrics macOS); hàng vẫn xuất hiện trong bảng điều khiển, chỉ là các trường đo lường trực tiếp hiển thị dấu gạch.
  • Một cú nhấp "Mở máy này trong bảng điều khiển pool". Nút bảng điều khiển pool hiện có giờ ghi ?worker=<tên_chính_thức> vào URL ngay khi pool gán tên chính thức. Bảng điều khiển hiện là SPA nên tham số query tương thích ngược. Nếu dexbtx sau này thêm routing theo worker, nó bắt đầu hoạt động mà không cần cập nhật app.
  • solver_env: {BTX_MATMUL_BACKEND: "metal"} trong fingerprint phần cứng để engine gợi ý điều chỉnh của pool biết không gợi ý các tùy chọn chỉ dành cho CUDA (BTX_MATMUL_GPU_INPUTS, BTX_MATMUL_SOLVE_BATCH_SIZE, v.v.) cho các rig Mac. Tương thích ngược: pool đưa vào whitelist các khóa phía máy chủ, nên khai báo chỉ có Metal hiện tại là an toàn.

UX

  • Cập nhật giờ không thể bỏ lỡ. Một banner cam nổi bật ở đầu bảng điều khiển xuất hiện ngay khi kiểm tra cập nhật lúc khởi chạy tìm thấy phiên bản mới hơn, bên cạnh gợi ý góc hiện có. Nhấp Cài đặt kích hoạt một lần nhắc duy nhất: "Cũng tự động cài đặt các bản cập nhật trong tương lai khi khởi chạy?" Hỏi vào thời điểm sẵn sàng cao nhất hiệu quả hơn nhiều so với ô đánh dấu trong Cài đặt mà không ai đến. Cờ easybtx-autoupdate-asked đảm bảo không bao giờ hỏi lại nếu người dùng đã từ chối. Kiểm tra cập nhật khi khởi chạy giờ chạy trước first_run_setup để banner có thể hiển thị trong khoảng 300 ms thay vì sau khi bắt đầu khởi động node chậm.
  • easyBTX làm rõ rằng nó đi kèm node BTX riêng. Một người dùng Telegram xem "Tiến trình đồng bộ 98,5%" vẫn hỏi kênh "làm thế nào để cài đặt node?" Ba điểm tiếp xúc nhỏ giờ trả lời câu hỏi trước khi nó được đặt ra: modal "Cách mining hoạt động" mở ra với "easyBTX chạy node BTX đầy đủ cho bạn, không cần cài đặt riêng"; danh sách giai đoạn cài đặt giờ hiển thị "Tải node BTX và chuỗi khối" / "Đồng bộ node đến các khối mới nhất"; mục Cài đặt bắt đầu với "đây là số liệu trực tiếp từ node đó, không phải dịch vụ từ xa."
  • Gợi ý sao lưu ví nhẹ nhàng. Một banner hổ phách liên tục phía trên số dư xuất hiện ngay khi bạn thực sự đã đào được BTX và vẫn chưa sao lưu. "Lưu ngay" mở Cài đặt và cuộn đến "Lưu file khôi phục." "Để sau" bỏ qua cho lần khởi chạy hiện tại (gợi ý sẽ trở lại lần khởi động sau, vì mất ví vì bỏ qua một lần thông báo là điều không thể chấp nhận). Tách biệt với cổng lần đầu cài đặt hiện có, xuất hiện trước khi người dùng có gì để mất.
  • Thanh trượt công suất mining trên một hàng. Nhãn, thanh trượt, nút MAX và giá trị trực tiếp được gộp từ layout hai hàng thành một hàng flex duy nhất. Tiết kiệm khoảng 28 px không gian dọc. Cùng màu cam Bitcoin.
  • "Share cuối" cập nhật trực tiếp. Một setInterval 1 giây hiển thị lại thời gian tương đối trên bộ đếm share thay vì để nó đóng băng giữa các lần cập nhật trạng thái 3 giây. Bỏ qua khi document.hidden để app chạy nền không tốn pin cho các cập nhật không nhìn thấy được.
  • Cài đặt, mục Nguồn upstream. Liệt kê các thành phần mã nguồn mở mà easyBTX xây dựng trên (node BTX btxchain/btx được ghim tại v0.30.1, MineBTX dexbtx/minebtx, Tauri v2, repo EasyBTX-releases công khai). Mỗi hàng hiển thị phiên bản được ghim so với tag mới nhất lấy trực tiếp từ API GitHub kèm huy hiệu Hiện tại / Có bản cập nhật. Bảng điều khiển người bảo trì để theo dõi khi nào các upstream vượt qua chúng ta. Lưu cache 5 phút. Nút Làm mới bỏ qua cache.
  • Tín hiệu cộng đồng trong modal Giới thiệu. Các ô trực tiếp cho số lượt cài đặt easyBTX (tổng số lượt tải xuống asset GitHub Releases), số miner pool đang trực tuyến, số khối tìm được trong 24 giờ qua, và tốc độ mạng. Được làm mới khi mở modal, cache 60 giây. Trình bày trung thực: ô "miner đang trực tuyến" được gắn nhãn "bao gồm easyBTX + các client khác" vì API pool chưa phân tách worker theo miner_version.

Thương hiệu

  • easyBTX giờ được viết thường nhất quán trong văn xuôi. 17 lần thay thế trong README, CHANGELOG, NOTICE và thư mục docs/. Các đường dẫn URL (MendeMatthias/EasyBTX-releases), kiểu Rust EasyBtxState, và tên artifact của pipeline phát hành (EasyBTX.dmg, EasyBTX.app) được giữ nguyên có chủ đích.

Bảo trì

  • Banner cảnh báo đĩa sắp đầy. Lấy dung lượng đĩa trống mỗi 3 giây trong cùng lần cập nhật trạng thái điều khiển phần còn lại của giao diện. Dưới 1 GB hiển thị thông báo hổ phách; dưới 500 MB hiển thị màu đỏ với tần số nhấp nháy nhanh hơn. Cả hai hiển thị ngay cả khi RPC không khả dụng, đúng là lúc cảnh báo quan trọng nhất (btxd vừa crash vì Fatal LevelDB error: No space left on device, RPC không liên lạc được, người dùng không biết tại sao).
  • Cài đặt, Bảo trì, Giải phóng dung lượng đĩa. Một cú nhấp để giải phóng: xóa các chỉ mục btxd blockfilter/coinstats không dùng, snapshot assumeutxo sau khi tải, và cắt ngắn debug.log nếu đã vượt 50 MB. Dùng khi bạn cần lấy lại dung lượng nhưng chưa sẵn sàng chuyển thư mục dữ liệu sang ổ cứng ngoài.

Kiểm thử trước phát hành

  • Thu thập worker.report_metrics là async. Thay std::process::Command::output() đồng bộ (không timeout, chặn worker của Tokio runtime bao lâu top mất) bằng tokio::process::Command với tokio::time::timeout 4 giây thật. top bị treo không còn chặn trình đọc stratum, quản lý tiến trình con solver, hoặc các lần submit pool.
  • Đọc trạng thái pool với một guard duy nhất trong vòng lặp metrics. Gộp khóa/mở khóa hai bước của status.lock().await thành một phạm vi được bảo vệ để shares_acceptedhashps luôn được quan sát tại cùng một thế hệ tick trạng thái.

Tài liệu

  • docs/2026-05-28-btx-qid-self-custody.md. Nghiên cứu và kế hoạch 4 giai đoạn cho việc neo một "qID" kháng lượng tử, tự quản lý (passkey cộng với phân tách share Shamir/MPC 2 trong 3) vào một seed BTX, để địa chỉ nhận thưởng ngoài ở trên sau này có thể là địa chỉ người dùng giữ trên điện thoại/passkey thay vì ví hot khác. Lập kế hoạch hướng đến tương lai cho trang bonuz HQ; không có code app nào phụ thuộc vào đây.

v0.2.0

2026-05-28

Bản phát hành polish "kiểm tra toàn diện". Một cuộc kiểm tra bảo mật /cso cộng với một cuộc kiểm tra lỗi chức năng 3 tác nhân tìm thấy 4 vấn đề NGHIÊM TRỌNG, 10 CAO, 13 TRUNG BÌNH và một số THẤP trong v0.1.13. Bản phát hành này đóng tất cả trong một lần. cargo test: 149/149. tsc --noEmit: sạch. Không có IPC công khai nào bị xóa, nhưng send_btx có thêm tham số subtract_fee: bool tường minh (nút Max của frontend truyền nó vào). EasyBtxState có thêm ba trường #[serde(default)] (các file trạng thái cũ vẫn tải được).

Sửa lỗi nghiêm trọng (mất dữ liệu / tiến trình mồ côi / buộc đồng bộ lại)

  • Xóa nhiều ví bị chặn khi di chuyển thư mục dữ liệu. relocate_datadir giờ liệt kê mọi ví dưới src (bất kỳ thư mục nào chứa wallet.dat) và thất bại theo kiểu đóng trừ khi MỖI cái đều có mặt và không rỗng trong dest trước khi remove_dir_all(src) chạy. Kiểm tra kích thước 97% trước đây chỉ xác nhận miner/wallet.dat, điều này có thể chấp nhận việc mất âm thầm ví phụ nhỏ hơn.
  • Pool và Metal solver giờ được tắt đúng cách khi thoát app. stop_node_blocking báo hiệu pool_stop, chờ pool_handle với timeout 3 giây (hủy JoinHandle nếu bỏ lỡ), và xóa trạng thái pool. Command của solver được thêm .kill_on_drop(true) để một JoinHandle bị bỏ sẽ reap tiến trình con thay vì để nó bị ghim ở 100% GPU sau khi thoát.
  • Snapshot.dat không còn bị xóa trước khi loadtxoutset thực sự thành công. Cờ được lưu mới EasyBtxState.snapshot_loaded chỉ được đặt khi loadtxoutset thành công (hoặc khi getchainstates đã báo cáo snapshot chainstate). Tất cả các caller disk::reclaim_disk giờ đọc cờ đúng đó thay vì setup_complete (lật khi bind RPC, trước khi tải snapshot nền). Đóng app giữa chừng lúc tải không còn xóa snapshot và buộc đồng bộ lại genesis đầy đủ.
  • Guard output solver ngăn nonce cursor sụp đổ. solve_next_nonce giờ chỉ tiến lên khi tries_used > 0nonce64_end >= solve_next_nonce (đơn điệu). Một {"found":false} bị suy biến với nonce64_end thiếu trước đây đặt lại cursor về 1, dẫn đến các lần submit share trùng lặp (mã 22).

Sửa lỗi ảnh hưởng cao

  • repair_node không còn lặng lẽ chuyển sang ví "miner". Giờ đọc state.active_wallet (phản chiếu pattern của reclaim_disk_now) trước khi xây dựng lại wallet_rpc, đây là bản sửa H1 từ PR #12 chưa được áp dụng ở đây.
  • move_datadir_to từ chối các ổ đĩa exFAT/FAT. Cảnh báo list_external_volumes giờ được thực thi tại ranh giới di chuyển, không chỉ hiển thị như tooltip.
  • apply_node_update thực sự chuyển sang binary btxd mới. Trước đây là no-op (bản cài mới không bao giờ được tái sử dụng). Giờ lưu tag mới (EasyBtxState.btx_release_tag), dừng controller đang chạy, và khởi động lại với binary mới. check_node_update/get_node_status tôn trọng tag đã lưu, nên banner cập nhật ngừng dính.
  • Thay đổi ntime giữa lần giải đặt lại nonce cursor. Khi một thông báo không sạch thay đổi ntime hoặc merkleroot, lần giải tiếp theo bắt đầu lại từ đầu cửa sổ nonce của chúng ta (thay vì tiến lên qua các nonce thấp của header mới).
  • clean_jobs=true không còn chạy đua với solver vừa thoát vào một lần submit cũ. Đường dẫn clean-kill thoát stdout của tiến trình con đã chết và xóa solving_job, nên kết quả solver đến chậm micro giây thất bại tại cổng submit.
  • Xung đột lưu trữ _corrupt-<ts> không còn có thể xóa cứng chuỗi khối. Timestamps nano giây cộng với bộ đếm -N ngăn xung đột; khi lưu trữ rename thất bại giờ trả về Err và để src tại chỗ (trước đây fallback remove_dir_all(src) xóa vĩnh viễn chuỗi bị hỏng, phá vỡ cam kết "không bao giờ xóa cứng").
  • Kế toán phí pool phù hợp với kỷ luật của solo. Ranh giới stop/clean-kill/deadline không còn tính thời gian kill đã trôi qua là mined_secs dev; tích lũy giờ chỉ xảy ra trong nhánh wait-for-solver trên output có thể phân tích cú pháp với tries_used > 0. Tỷ lệ dev 3,5% không còn có thể tăng dần dưới stop-churn.
  • Share bị mất khi ngắt kết nối được hiển thị trên giao diện. Lỗi ghi mining.submit giờ đặt last_event = "share lost (disconnect)..." và tăng bộ đếm stale trước khi quay lại vòng lặp kết nối lại.
  • Mạng không ổn định không còn có thể để "cửa sổ phí dev..." bị kẹt. Giới hạn thời gian thử tích lũy (300 giây) buộc phiên tiếp theo chuyển sang thanh toán người dùng nếu một cửa sổ phí duy nhất cứ thất bại kết nối.
  • Khi khởi động, rơi về thư mục dữ liệu mặc định nếu con trỏ ổ cứng ngoài trỏ đến đâu không có. Trước đây, ổ cứng bị tháo ra giữa lúc ghi con trỏ và xóa src để app bị kẹt trên đường dẫn không tồn tại.

Mining và độ chính xác pool

  • Lỗi subscribe/authorize giờ được ghi log và hiển thị trong last_event (trước đây bị bỏ qua âm thầm, một lần nâng cấp schema phía pool có thể tắt toàn bộ pool mining mà không có phản hồi giao diện).
  • submit_id được khởi tạo từ epoch microseconds lúc kết nối để các id không lặp lại qua các lần kết nối lại.
  • Solo: sau một tick Paused, lần lặp tiếp theo bỏ qua đợt phí và đào cho người dùng (thâm hụt bắt kịp ở tick tiếp theo không bị tạm dừng). Ngăn một khối solo đơn lẻ rơi vào địa chỉ dev trong khi đồng bộ đang dao động.
  • Idempotency snapshot giờ xác minh SHA mọi snapshot.dat hiện có có kích thước trùng hợp (trước đây file sai nội dung có đúng kích thước được chấp nhận mà không kiểm tra).

Ví / gửi / kiểm tra polish

  • Địa chỉ nhận ổn định theo từng ví. EasyBtxState.wallet_addresses ghi nhớ địa chỉ của mỗi ví. do_switch_wallet tái sử dụng nó qua address_is_mine thay vì tạo mới mỗi lần chuyển.
  • Xuất kiểm tra/CSV tối đa 10.000 giao dịch. (Giới hạn trước là 1.000, âm thầm bỏ các mục cũ hơn của các miner chạy lâu.)
  • Gửi "Max" giờ là cờ tường minh, không phải heuristic dung sai sat. Frontend theo dõi lần nhấp Max; backend send_btx(.., subtract_fee) tôn trọng nó. Gửi chính xác số dư bằng tay không còn âm thầm bị giảm đi.
  • Backend send_btx xác thực số tiền và từ chối thấu chi. Các giá trị không hữu hạn, bằng không, âm và amount > spendable bị từ chối tại ranh giới IPC (không chỉ tại btxd).
  • backup_wallet_cmd từ chối các đường dẫn không thể chuẩn hóa, và từ chối bất kỳ đường dẫn nào chứa thành phần ... Lỗ hổng "bỏ qua khi thất bại chuẩn hóa" trước đây đã được đóng.
  • Dấu phẩy thập phân châu Âu khi gửi. parseFloat được đặt trước replace(/,/g, ".") tại cả hai điểm gọi Send. 1,5 BTX giờ được phân tích cú pháp là 1.5, không phải 1.
  • Kiểm tra tiền tố btx1 của link explorer. addrExplorerUrl giờ khớp với regex đầu vào Send (^btx1[a-z0-9]{20,90}$/i), nên các hàng kiểm tra không thể link đến các trang explorer không tồn tại.
  • Nhận thưởng pool xác thực lại địa chỉ đã cache với address_is_mine trước khi chuyển cho stratum; tạo mới nếu không khớp.
  • Pool task được dừng đúng cách trong repair_noderelocate_datadir (trước đây tiếp tục submit share đối với chuỗi đang bị xóa/di chuyển).
  • persist_active_wallet được khóa. Một STATE_FILE_LOCK mới tuần tự hóa chuỗi tải, thay đổi, lưu để một cú nhấp đôi không còn có thể mất các cập nhật.

Bảo mật (cuộc kiểm tra /cso)

  • Log pool được chuyển ra khỏi /tmp và được bảo vệ. Log giờ nằm tại $HOME/.easybtx/pool.log (fallback /tmp nếu HOME không được đặt), được mở với mode(0o600) cộng với O_NOFOLLOW. Bề mặt có thể đọc bởi tất cả/bị giả mạo symlink đã được đóng.
  • gpu_uuid được gửi đến pool giờ là SHA-256 được muối, không phải IOPlatformUUID thô. Hash ổn định theo từng lần cài đặt (để tương quan worker pool vẫn hoạt động), nhưng mã định danh phần cứng thô không còn rời khỏi máy.
  • RpcClient::for_wallet percent-encode tên ví vào đường dẫn. Hiện tại an toàn theo quy ước (tất cả các caller đều xác thực); giờ được thực thi tại hàm thay vì bằng kỷ luật của người xem xét.

Nội bộ / dọn dẹp

  • Phiên bản: 0.1.13 sang 0.2.0 (package.json, tauri.conf.json, Cargo.toml).
  • EasyBtxState được thêm snapshot_loaded, btx_release_tag, và wallet_addresses (tất cả #[serde(default)]; các file trạng thái cũ vẫn tải được).
  • STATE_FILE_LOCK được giới thiệu trong state.rs để tuần tự hóa pattern tải, thay đổi, lưu; các lần ghi trạng thái reset_account/restore_wallet/first_run_setup giờ đi qua đó.
  • Một link tài liệu cũ TODO(H3-followup) trong apply_node_update trỏ đến việc tái kích hoạt RPC trong phiên liền mạch (đường dẫn tag đã lưu cộng khởi động lại đã được ship; chờ cookie trong phiên là bước tiếp theo).

v0.1.13

2026-05-28

Đã thêm

  • Dòng số dư đến. Một khoản thanh toán đã nhận nhưng chưa xác nhận (untrusted_pending) giờ hiển thị dưới dạng dòng "Đang đến... đang xác nhận" rõ ràng thay vì trông như biến mất cho đến khi xác nhận. Số dư có thể dùng chỉ từ tiền đáng tin, nên Gửi không bao giờ thấu chi.
  • Link block explorer. ID giao dịch và địa chỉ trong Gửi, Nhận và Kiểm tra/Tổng quan mở trên explorer.minebtx.com (rút gọn, sao chép và mở được). Màn hình xác nhận Gửi hiển thị địa chỉ người nhận đầy đủ để bạn có thể xác minh.
  • Gửi: nút "Max" và gửi toàn bộ an toàn. Nút Max điền đầy số dư có thể dùng của bạn, và gửi toàn bộ số dư giờ trừ phí mạng từ số tiền thay vì thất bại với "không đủ tiền". Địa chỉ người nhận cũng được kiểm tra trước bước xác nhận.
  • Lấy lại dung lượng. Nút Cài đặt, Lưu trữ (và một lần tự động khi khởi chạy) giải phóng dung lượng bằng cách xóa blockfilterindex/coinstatsindex không dùng, snapshot assumeutxo sau khi tải, và debug.log quá lớn. Chuỗi khối và ví của bạn không bao giờ bị chạm vào.

Pool

  • Popup thông tin nhận thưởng pool giờ hiển thị chính sách thực (hàng tuần vào thứ Sáu 18:00 UTC, tối thiểu 0,0001 BTX, phí pool 2,5%) thay vì cách diễn đạt mơ hồ.
  • easyBTX giờ nhận dạng với pool là easybtx/<version> để pool có thể phân tách miner eBTX cho thống kê; thông tin phần cứng cho worker của bạn tên bảng điều khiển chính thức.

Đã sửa

  • Pre_hash khối-tier pool. Metal share solver giờ thực thi cổng pre_hash khối-tier (sigma <= block_target << epsilon) thay vì bỏ qua nó cho share, nên các share khối-tier là các khối hợp lệ và submitblock của pool ngừng thất bại với "matmul phase2 proof of work failed". easyBTX khai báo năng lực pre_hash_block_tier_v18 trong mining.subscribe. (Thay đổi solver nằm trong btx-main; xem docs/patches/btx-prehash-block-tier.patch.)

Đã thay đổi

  • Công suất mining giờ là thanh trượt trực tiếp ở đầu thẻ thống kê. Nó chuyển dần từ xanh sang cam-đỏ khi bạn đẩy lên (bước 5%, nút Max), và giữ đồng bộ với thanh trượt trong Cài đặt. Các hàng đọc tốc độ/công suất cũ đã biến, nên thẻ ngắn hơn. Biểu tượng thông tin trên thanh trượt giải thích các quy tắc thực hành tốt nhất (khoảng 50% cho công việc nhẹ giữ Mac mát và yên tĩnh; 100% là nhanh nhất nhưng nóng và tốn pin).
  • Ví đang hoạt động giờ chỉ được lấy từ backend (nguồn sự thật duy nhất); frontend không còn áp dụng lại ví từ localStorage, nên chip ví và địa chỉ không thể tạm thời không đồng nhất.
  • Thẻ thu nhập pool ngắn hơn: phần giải thích nhận thưởng được chuyển vào popup biểu tượng thông tin bên cạnh "Share được chấp nhận", và worker nằm bên cạnh link "Mở bảng điều khiển pool" để chúng được đọc như một cặp.