v0.4.7

ล่าสุด
2026-06-02

การขุดพูลบน Mac ตอนนี้เริ่มทันที ไม่ต้องดาวน์โหลดโหนดและไม่ต้องซิงค์

หัวใจของรีลีสนี้คือความเร็ว ในโหมดพูล easyBTX ไม่ดาวน์โหลดหรือรัน BTX node เต็มรูปแบบอีกต่อไป การขุดพูลไม่เคยต้องใช้มันเลย แต่มันเพิ่มการดาวน์โหลดขนาดหลายกิกะไบต์, การซิงค์ "กำลังตามให้ทัน" ที่ใช้เวลานาน, และการแครชเป็นครั้งคราว ตอนนี้คุณเปิดแอป ที่อยู่จ่ายเงินของคุณถูกเติมไว้แล้ว และ Mac ของคุณก็เริ่มขุดได้ทันที หากคุณมี easyBTX อยู่แล้ว ที่อยู่จ่ายเงินเดิมของคุณจะถูกนำมาใช้ต่ออัตโนมัติ จึงไม่มีอะไรต้องตั้งค่าใหม่

เปลี่ยนแปลง

  • การขุดพูลบน Mac ทำงานโดยไม่ต้องใช้ BTX node เต็มรูปแบบ: มันเริ่มทันที ไม่มี blockchain ให้ดาวน์โหลด ไม่มีอะไรต้องซิงค์ และไม่มีโหนดให้แครช การขุดเดี่ยวบน Mac ถูกพักไว้ชั่วคราวขณะที่เราโฟกัสไปที่การขุดพูล มันจะกลับมา
  • ที่อยู่จ่ายเงินของคุณถูกเติมอัตโนมัติจากการตั้งค่าก่อนหน้าของคุณ ดังนั้นการอัปเดตจึงไม่เคยทำให้ช่องนั้นว่างเปล่า
  • ความเร็วการขุดตอนนี้แสดงเป็น N/s ซึ่งเป็นหน่วยเดียวกับที่พูลใช้ ดังนั้นตัวเลขในแอปจึงตรงกับ pool dashboard ของคุณ
  • แอปเปิดในเลย์เอาต์แนวสูงเสมอ ซึ่งพอดีกับทุกหน้าจอ

เพิ่ม

  • ปุ่มสีเขียว "Get the BTX Wallet" ใน Transactions และในการตั้งค่าจ่ายเงิน ลิงก์ไปยัง BTX wallet แบบสแตนด์อโลน
  • การกระทำเสริมเพื่อเรียกคืนพื้นที่ดิสก์โดยลบข้อมูลโหนดเก่าที่คุณไม่ต้องการแล้วในโหมดพูล Wallet ของคุณไม่ถูกแตะต้องเลย

v0.4.6

2026-06-01

การขุดพูลบน Mac กลับมาทำงานได้อีกครั้ง พร้อมแผงสถิติ GPU สด

หัวใจของรีลีสนี้คือการแก้ไข การขุดพูลบน Mac ซึ่งเสียไปใน 0.4.5 กลับมาทำงานได้อีกครั้ง การเปลี่ยนแปลงที่ทำขณะนำ easyBTX มาสู่ Windows ทำให้ Mac ชี้ไปยังตัวช่วยขุดที่ผิด การขุดจึงไม่เริ่มทำงาน รีลีสนี้คืนค่ามันกลับมา หากคุณอัปเดตเป็น 0.4.5 แล้วเริ่มขุดไม่ได้ สิ่งนี้แก้ไขมัน และ Mac ทำงานเหมือนกับใน 0.4.4 ทุกประการ

แก้ไข

  • การขุดพูลบน Mac กลับมาทำงานได้อีกครั้ง การเปลี่ยนแปลงใน 0.4.5 สำหรับเวอร์ชัน Windows ทำให้เครื่องมือขุดของ Mac ชี้ไปยังตัวช่วยที่ผิด การขุดจึงไม่เริ่มทำงาน คืนค่ากลับไปเป็นแบบที่ทำงานใน 0.4.4

เพิ่ม

  • แผงสถิติ GPU สดในหน้าจอ About: การใช้งาน, ความเร็วสัญญาณนาฬิกา, พลังงาน, อุณหภูมิ, หน่วยความจำ, และพัดลม อัปเดตขณะที่แผงเปิดอยู่ Mac แสดงการใช้งาน, พลังงาน, และอุณหภูมิ; Windows แสดงชุดข้อมูลครบถ้วนที่อ่านจากการ์ด NVIDIA ของคุณ

vWindows 0.4.4

2026-05-31

easyBTX มาสู่ Windows แล้ว

นี่คือรีลีสแรกสำหรับ Windows ตอนนี้ easyBTX ขุด BTX บน Windows PC ที่มี GPU NVIDIA RTX ซีรีส์ 30 หรือใหม่กว่า โดยใช้แนวทางแอปเดียว คลิกเดียว ดูแลกุญแจของคุณเอง แบบเดียวกับเวอร์ชัน Mac คุณแค่มีการ์ด NVIDIA เลือกที่อยู่รับเงิน แล้ว GPU ของคุณก็เข้าร่วมพูล เวอร์ชัน Mac (Apple Silicon, Metal, ขุดเดี่ยวหรือพูล) ไม่มีการเปลี่ยนแปลง

v0.4.4

2026-05-30

การส่งกลับมาทำงานได้อีกครั้ง, สถิติการขุดส่วนตัวของคุณเอง, และหน้าต่างที่ใหญ่และสงบขึ้น

งานต่อยอดที่โฟกัสจาก 0.4.3 หัวใจของรีลีสนี้คือการแก้ไข: การส่ง BTX จากแอปกลับมาทำงานได้อีกครั้ง หลังจากบิลด์ก่อนหน้าอาจทำให้การส่งล้มเหลวพร้อมข้อความที่ทำให้เข้าใจผิด นอกจากนั้น หน้าจอ About ตอนนี้แสดงสถิติการขุดของคุณเอง, popup หน้าต่างทั้งหมดเปิดในรูปทรงที่กว้างขวางแบบเดียวกัน, และการคัดลอกลิงก์ explorer ของ transaction ทำได้ด้วยการแตะครั้งเดียว

เพิ่ม

  • การขุดของคุณ: แผงสถิติส่วนตัวใน About แสดงว่าคุณขุดมารวมทั้งหมดนานเท่าไหร่, ความเร็วเฉลี่ยของคุณ, share ที่ได้รับการยอมรับ, และวันที่คุณเริ่มต้น มันอยู่บน Mac ของคุณเท่านั้นและไม่เคยถูกอัปโหลด
  • ปุ่ม "Copy link" บนแต่ละ transaction เพื่อให้คุณคัดลอกลิงก์ block-explorer ของมันและวางที่ไหนก็ได้

เปลี่ยนแปลง

  • About, การตั้งค่า, Transactions, และ popup ข้อมูลตอนนี้เปิดในหน้าต่างที่ใหญ่ขึ้นและสม่ำเสมอแบบเดียวกันซึ่งอ่านง่ายกว่า
  • การตั้งค่ามีเมนูด้านข้างที่สะอาดขึ้น ส่วนลิงก์ตอนนี้ชี้ไปยังเว็บไซต์ BTX protocol อย่างเป็นทางการ และแยกต่างหากคือเว็บไซต์ราคาสด (เป็นบุคคลที่สาม ไม่ใช่คำแนะนำทางการเงิน และ easyBTX เป็นอิสระจากมัน)

แก้ไข

  • การส่ง BTX จากแอปกลับมาทำงานได้อีกครั้ง บิลด์ก่อนหน้าอาจปฏิเสธการส่งด้วยข้อความ "ตรวจสอบที่อยู่" ที่ทำให้เข้าใจผิดแม้ที่อยู่จะถูกต้องดี สิ่งนั้นได้รับการแก้ไขแล้ว และตอนนี้ข้อความแสดงข้อผิดพลาดอธิบายสาเหตุที่แท้จริง

v0.4.3

2026-05-30

พัก แล้วขุดต่อ, รีสตาร์ทที่สงบขึ้น, ความเป็นส่วนตัวมากขึ้น, และ Mac ของคุณบน pool dashboard

รีลีสนี้ต่อยอดจากดีไซน์ใหม่ 0.4.0 ด้วยงานปรับคุณภาพการใช้งานชุดหนึ่ง การหยุดตอนนี้เก็บโหนดของคุณให้อุ่นอยู่และมีปุ่ม Resume สีเขียวให้กด การรอ "กำลังเตรียมพร้อม" นาน ๆ หลังรีสตาร์ทอธิบายตัวเองแทนที่จะดูเหมือนค้าง และคุณซ่อนยอดดุลได้ด้วยการแตะครั้งเดียว Miner ที่ขุดพูลตอนนี้แสดงตัวเลข GPU สดและชื่อที่ตั้งของ Mac ตัวเองบน minebtx dashboard ได้

เพิ่ม

  • พัก (Pause) และขุดต่อ (Resume) ปุ่มควบคุมแสดง "Pause" ขณะกำลัง Mining แล้วเปลี่ยนเป็น "Resume" สีเขียวหลังจากนั้นแทนที่จะเป็น "Start" ที่เย็นชา โหนดของคุณยังคงอุ่นอยู่ระหว่างนั้น คุณจึงกลับมาขุดต่อได้ทันที
  • ไอคอนรูปตาเพื่อความเป็นส่วนตัวถัดจากยอดดุลของคุณซ่อนมันไว้หลังจุดจนกว่าคุณจะเปิดดู สะดวกเมื่อคุณกำลังแชร์หน้าจอหรืออยู่ในที่สาธารณะ ระบบจำการเลือกของคุณ
  • ทศนิยมยอดดุล: แสดงครบ 8 ตำแหน่ง หรือสั้นกว่าที่ 3 ตำแหน่งสำหรับดูเร็ว ๆ สิ่งนี้เปลี่ยนเฉพาะการแสดงผลเท่านั้น ไม่เคยเปลี่ยนสิ่งที่คุณถือหรือส่ง
  • สถานะสดที่ชัดเจนขณะที่โหนดกำลังเตรียมพร้อมหลังรีสตาร์ท แทนที่จะเป็น "กำลังทำงาน..." ที่ค้างอยู่ มันอธิบายว่ากำลังสร้าง index ยอดดุลส่วนตัวของคุณใหม่ แสดงค่าประมาณและเวลาที่ผ่านไป และระบุว่า blockchain อัปเดตล่าสุดอยู่แล้ว
  • การตรวจสอบ CPU, GPU, และพูลหรือเดี่ยวบนหน้าจอ Mining เพื่อให้คุณเห็นได้ในพริบตาว่า Mac ของคุณกำลัง Mining บน GPU และเชื่อมต่อแบบที่คุณคาดหวัง
  • ค่าอ่าน GPU สดสำหรับ minebtx pool dashboard easyBTX รายงานการใช้ GPU และพลังงานของ Mac ของคุณไปยังพูล (ไม่ต้องใช้สิทธิ์ admin) ดังนั้น worker ของคุณจึงแสดงตัวเลขจริงแทนที่จะเป็นช่องว่าง และชื่อที่คุณตั้งในการตั้งค่าจะระบุเครื่องของคุณ
  • การจัดเก็บเบื้องหลังอย่างเงียบ ๆ ที่ลบของเหลือจากการซ่อมแซมเก่าบนการติดตั้งที่เปิดทิ้งไว้นาน ๆ เพื่อไม่ให้มันสะสมบนดิสก์

เปลี่ยนแปลง

  • การตั้งค่าตอนนี้เปิดในธีมปัจจุบันของคุณ เมื่อก่อนมันแสดงเป็นสว่างเสมอ ตอนนี้มันเข้ากับแอป แอปแบบมืดจึงเก็บการตั้งค่าให้มืดด้วย
  • การตั้งค่ามีเลย์เอาต์แถบด้านข้างที่สะอาดขึ้น พร้อมการ์ดธีมและตัวเลือก "เลย์เอาต์โปรดตอนเริ่มต้น"
  • popup ข้อมูล ("Mining ทำงานอย่างไร" และอื่น ๆ) ตอนนี้เข้ากับสไตล์การตั้งค่า: หน้าต่างที่กว้างขวางและสงบขึ้นซึ่งอ่านง่ายกว่า

แก้ไข

  • Upstream sources panel ในการตั้งค่าไม่แสดง "Latest unavailable" ในทุกแถวอีกต่อไป มันดึงเวอร์ชันล่าสุดจริงได้อีกครั้ง

v0.4.0

2026-05-29

หน้าตาใหม่ และการขุดพูลตอนนี้จ่ายตรงไปยัง Wallet ภายนอกของคุณ

easyBTX มีดีไซน์ใหม่ ค่าเริ่มต้นคือหน้าต่าง "control room" แนวกว้างที่แบ่งทุกอย่างออกเป็นสามคอลัมน์ที่ดูสงบ ไม่มีอะไรล้นออกจากจอแม้โหนดจะเต็มไปด้วยข้อมูลสด มีตัวเลือกธีมใหม่ด้วย: มืดยังคงเป็นค่าเริ่มต้น มีสว่างให้เลือกถ้าชอบ และระบบที่ตามการตั้งค่า Mac ของคุณและเปลี่ยนเองอัตโนมัติ และการขุดพูลตอนนี้รองรับที่อยู่จ่ายเงินภายนอกของคุณแล้ว เช่นเดียวกับการขุดเดี่ยวที่ทำอยู่แล้ว คุณจึงขุดบนแล็ปท็อปที่ไม่เคยเก็บกุญแจเหรียญของคุณได้

เพิ่ม

  • เลย์เอาต์ "control room" แนวกว้างแบบใหม่ ซึ่งเป็นค่าเริ่มต้นตอนนี้: หน้าจอสถานะอยู่ทางซ้าย การแสดงผลการขุด พลังงาน และ Wallet อยู่ตรงกลาง และตัวเลขเครือข่ายและพูลสดอยู่ทางขวา เลย์เอาต์แบบเก่า ได้แก่ Tall, Compact และ Mini ยังคงอยู่ห่างแค่คลิกเดียว
  • ธีม Dark, Light และ System ค่าเริ่มต้นคือ Dark เลือก Light ถ้าชอบ หรือ System เพื่อให้ Mac เปลี่ยนเองอัตโนมัติ ระบบจำการเลือกของคุณ
  • ปุ่มด่วนในการตั้งค่าสำหรับทุกส่วน (Node, Mining, ลักษณะ, ตำแหน่งข้อมูล, Wallets, การจ่ายเงิน, สำรองข้อมูล, อัปเดต, บำรุงรักษา, บัญชีใหม่, Upstream, ลิงก์) แตะหนึ่งครั้งเพื่อไปยังส่วนนั้นโดยตรง

เปลี่ยนแปลง

  • การขุดพูลตอนนี้ส่งรางวัลของคุณไปยังที่อยู่จ่ายเงินภายนอกเมื่อคุณตั้งค่าไว้ ก่อนหน้านี้ทำได้เฉพาะการขุดเดี่ยวเท่านั้น ไม่ว่าจะทางไหน เหรียญไม่เคยผ่าน Wallet ของ Mac เครื่องนี้ ดังนั้นแล็ปท็อปที่ถูกเจาะระบบจะไม่มีกุญแจอยู่เลย
  • ค่าธรรมเนียมเครื่องมือ easyBTX ตอนนี้อยู่ที่ 4.99% ของรางวัลที่ขุดได้ (เดิมคือ 3.5%) ยังคงเป็นการหักตามเวลาและแจ้งล่วงหน้า ค่าธรรมเนียมของพูลเอง (2.5%) ไม่เปลี่ยนแปลง ดังนั้นการขุดพูลรวมแล้วประมาณ 7.5% ส่วนที่เหลือทั้งหมดไปยัง Wallet ของคุณ
  • การตั้งค่าถูกจัดวางเป็นไทล์สะอาดที่วางเคียงกันเมื่อมีพื้นที่เพียงพอ อ่านได้ดีทั้งในธีม Light และ Dark
  • "Audit / ภาพรวม" ตอนนี้ใช้ชื่อเดียวว่า "Transactions" เท่านั้น
  • รายการตรวจสอบการตั้งค่าชัดเจนขึ้น แต่ละขั้นตอนกลายเป็นเครื่องหมายถูกสีเขียวพร้อมป้ายกำกับธรรมดาว่าเกิดอะไรขึ้น ("ดาวน์โหลด BTX node และ chain แล้ว", "Node ซิงค์ไปยังบล็อกล่าสุดแล้ว", "กำลัง Mining") แทนที่จะค้างเป็นสีส้มแบบงานที่ยังไม่เสร็จ
  • อักษร easyBTX ในส่วนหัวใหญ่ขึ้นเล็กน้อย อยู่ในแถบที่บางลงเล็กน้อย

แก้ไข

  • "ซ่อมแซมพื้นที่ดิสก์" ตอนนี้รายงานจำนวนที่ปลดปล่อยได้จริง รวมถึง Snapshot ครั้งเดียวขนาดใหญ่ แทนที่จะนับต่ำกว่าความจริงและปลดปล่อยส่วนที่เหลือเงียบ ๆ เมื่อเริ่มต้นครั้งถัดไป
  • โหนดของคุณไม่ดูเหมือนรีเซ็ตเป็น "บล็อก 0 จาก 0" หลังจากซ่อมแซมดิสก์หรือรีสตาร์ทอีกต่อไป มันจำไว้ว่าอยู่ตรงไหนและแสดงสิ่งนั้นขณะที่ยืนยัน แทนที่จะดูเหมือนซิงค์ใหม่จากศูนย์
  • โหนดที่กลับมาและซิงค์แล้วไม่ต้องรอนานตอนเริ่มต้นหลังจากซ่อมแซมหรือรีสตาร์ทอีกต่อไป

v0.3.1

2026-05-29

โหนดของคุณไม่มีวันดูเสียหายขณะกำลังตามให้ทัน หลังจาก easyBTX ถูกปิดไปสักพัก หรือปิดลงแบบรุนแรง (แครช, บังคับปิด, หรือแทนที่แอปขณะทำงาน) โหนดของคุณบางครั้งต้องการสักสองสามนาทีเพื่อตามเครือข่ายให้ทันในครั้งถัดไปที่คุณเปิดแอป ก่อนหน้านี้ easyBTX อาจเข้าใจผิดว่าช่วงตามให้ทันนั้นเป็นปัญหาจริงและแสดงข้อผิดพลาด ตอนนี้มันรอสงบ บอกให้รู้ว่าเกิดอะไรขึ้น และเก็บ Wallet และเหรียญของคุณไว้ครบถ้วน ไม่มีวันเสนอการซ่อมแซมขณะที่โหนดแค่กำลังตามให้ทัน คุณไม่ต้องทำอะไรเลย

แก้ไข

  • easyBTX ไม่แสดงข้อผิดพลาดตอนเริ่มต้นอีกต่อไปเมื่อโหนดของคุณแค่กำลังตามให้ทัน ตอนนี้มันแยกแยะได้ระหว่างโหนดที่ยังประมวลผลข้อมูลอยู่กับโหนดที่หยุดทำงานจริง
  • การกระทำที่ทำลายล้าง "แก้ไขโหนด" ไม่ถูกเสนออีกต่อไปขณะที่โหนดกำลังตามให้ทัน ตอนนี้มันปรากฏเฉพาะเมื่อมีสัญญาณความเสียหายจริงหรือกระบวนการโหนดหยุดทำงานจริง
  • ไม่มีขั้นตอนผี "ดาวน์โหลด BTX node และ chain" ขณะที่โหนดที่กู้คืนแล้วแค่อุ่นเครื่องด้วย chain ที่มีอยู่แล้วบนดิสก์ รายการตรวจสอบการตั้งค่าตรงกับความเป็นจริง
  • ลบขีดจำกัดเวลาคงที่ที่อาจตัดโหนดที่ดีสมบูรณ์ออก โหนดที่กำลังคืบหน้าจริงตอนนี้ได้รับเวลาที่ต้องการเพื่อเสร็จสิ้น

ปรับปรุง

  • ข้อความที่ชัดเจนและสงบขึ้นขณะที่โหนดตามให้ทัน เพื่อให้การรอปกติสองสามนาทีไม่ดูเหมือนความล้มเหลว
  • Wallet และเหรียญของคุณไม่ถูกแตะต้องเลยระหว่างการเริ่มต้นหรือการกู้คืน easyBTX คืนค่าข้อมูล chain จาก Snapshot ที่บันทึกไว้ ไม่ใช่กุญแจของคุณ

เบื้องหลัง

เมื่อโหนดของคุณรีสตาร์ทหลังจากออฟไลน์ไปสักพักหรือหลังจากปิดลงแบบไม่สะอาด มันสร้างสถานะภายในบางส่วนใหม่ก่อนที่จะให้บริการคำขอได้ ในช่วงเวลานั้นโหนดยังมีชีวิตอยู่และทำงาน แต่ตอบกลับด้วยสถานะ "กำลังอุ่นเครื่อง" (RPC code -28, ส่งกลับด้วย HTTP 500) เวอร์ชันก่อนหน้าถือว่านั่นเป็นความล้มเหลวร้ายแรงและยอมแพ้หลังขีดจำกัด 360 วินาทีคงที่ ซึ่งทำให้โหนดที่สมบูรณ์ดีตกเข้าสู่หน้าจอข้อผิดพลาดที่ยังมีปุ่มซ่อมแซมทำลายล้างอยู่ด้วย 0.3.1 จัดประเภททุก probe การเริ่มต้นเป็นสามสถานะ: พร้อม, กำลังอุ่นเครื่อง, หรือใช้งานไม่ได้ โหนดที่กำลังอุ่นเครื่อง (สถานะ -28 หรือ log ของโหนดที่แสดงการสร้างใหม่ที่กำลังดำเนินอยู่) ถือว่า "รอต่อไป" และได้รับ backstop ที่ใจกว้างเพื่อเสร็จสิ้น โหนดที่ไม่ตอบสนองเลยยังคงยอมแพ้ที่ขอบเขตที่สมเหตุสมผล เส้นทางซ่อมแซมที่ทำลายล้างยังคงถูกล็อคอยู่หลังสัญญาณความเสียหายที่ยืนยันแล้วเหมือนเดิมเสมอ จึงจะเปิดใช้งานได้เฉพาะเมื่อมีอะไรผิดปกติจริงเท่านั้น ไม่ใช่เพราะการเริ่มต้นช้า กฎความปลอดภัยการกู้คืนทั้งหมดไม่เปลี่ยนแปลง: Wallet ของคุณได้รับการรักษาไว้เสมอ ข้อมูลที่เสียหายถูกเก็บไว้ในคลังแทนที่จะลบ การกู้คืนทำงานมากสุดหนึ่งครั้งต่อการเปิดแอป และปฏิเสธที่จะทำงานหากดิสก์เต็ม

การจัดส่ง

ส่งมอบไปยังการติดตั้ง 0.3.0 ที่มีอยู่อัตโนมัติผ่านตัวอัปเดตในแอป สร้างและเผยแพร่ในเครื่อง เป็น indie build ที่ไม่มีลายเซ็น การรับรอง Apple อยู่ในแผนงาน

v0.3.0

2026-05-28

รีลีส "pool compliance และความโปร่งใส" พูล dexbtx ของ shib อัปเกรดเป็น v5 เมื่อ 2026-05-27 พร้อม pre_hash_block_tier_v18 capability gate บังคับและ mining.subscribe extension dict ใหม่ที่มี session_id และ hardware fingerprint ต่อ rig easyBTX v0.2.0 ส่งเพียงสองในสามฟิลด์ที่จำเป็น ทำให้ Mac worker เชื่อมต่อกับพูลได้แต่ไม่เคยปรากฏใน worker dashboard v0.3.0 ส่ง handshake v0.3.x ครบถ้วน เพิ่ม worker.report_metrics heartbeat ที่ปลดล็อครายการ dashboard สดต่อ rig และแสดงชื่อ canonical ที่พูลกำหนดให้แต่ละ rig เพื่อให้ผู้ใช้จับคู่ Mac ของตนกับแถวใน /stats ได้ นอกจากนี้ยังมีฟีเจอร์ self-custody แบบ opt-in แรก ซึ่งรางวัลจากการขุดเดี่ยวตอนนี้สามารถจ่ายไปยังที่อยู่ BTX ภายนอกที่ไม่มีกุญแจบน Mac เครื่องนี้ และงาน UX จำนวนมากที่ฐานผู้ใช้ v0.2.0 ขอใน Telegram cargo test: 195/195. tsc --noEmit: สะอาด. cargo build --release + npm run build: ผ่านทั้งคู่

แก้ไขวิกฤต

  • การลงทะเบียน dexbtx pool สำหรับ Mac worker ได้รับการกู้คืนแล้ว. mining.subscribe ตอนนี้ส่ง extension dict v0.3.x ครบถ้วน: protocol_compliant: ["pre_hash_block_tier_v18"], hardware fingerprint ที่มีอยู่ (ขยายด้วย solver_env: {BTX_MATMUL_BACKEND: "metal"}), และ session_id ต่อ session (ตัวอักษร hex ตัวพิมพ์เล็ก 32 ตัวที่ตรงกับรูปแบบ uuid.uuid4().hex ของ reference miner สร้างจาก SHA256("easybtx-session:" || nanos || pid || counter) เพื่อให้ session ต่อเนื่องไม่ชนกัน) หากไม่มี session_id พูล v5 จะแยก Mac worker ออกจาก dashboard และ /stats ของ Telegram bot อย่างเงียบ ๆ mining.set_canonical_name ถูกจัดการแล้วและการกำหนดถูกบันทึกไว้ที่ ~/.easybtx/canonical_names.json เพื่อให้ label ที่พูลกำหนด (เช่น M2_PRO-BRAVO-1) รอดพ้นการ reconnect บรรทัด "Worker เครื่องนี้:" ของ UI ตอนนี้แสดง label นั้นทันทีที่มาถึง
  • การอัปเดต Node ไม่ใช้เวลา 8 นาทีอีกต่อไป. NodeController::stop สำรวจ Child::try_wait นานสูงสุด 90 วินาทีก่อนจะ fallback ไปที่ SIGKILL ก่อนหน้านี้ การ kill ทันทีเกิดขึ้นกลางการ flush บน btx1z shielded-state LevelDB ทิ้ง mutation marker ที่กำลังดำเนินอยู่ซึ่งกระตุ้น EnsureShieldedStateInitialized: rebuilding full shielded state from chain เมื่อเริ่มต้นครั้งถัดไป (วัดได้ 7 นาที 57 วินาที) การออกอย่างสะอาดไม่ทิ้ง marker ไว้และการเริ่มต้นกลับไปประมาณหนึ่งวินาที
  • การกักกัน Repair Node ไม่รั่วไหลเป็นกิกะไบต์ตลอดไปอีกต่อไป. prune_old_quarantines ใหม่ลบไดเรกทอรี _corrupt-* และ _preserve-* ที่เก่ากว่า 7 วัน ขณะเก็บรักษาล่าสุดของแต่ละ pattern ไว้เป็นหลักฐาน ทำงานเมื่อเริ่มแอป (จับการกักกันเก่าจาก session ก่อนหน้า) และเมื่อสิ้นสุดทุก repair_node (จับการกักกันเก่าจากการซ่อมแซมก่อนหน้า) ไฟล์ _corrupt-* เก่าหนึ่งไฟล์กักขัง 42 GB บนเครื่องของผู้ดูแล มี unit test ใหม่ 6 รายการสำหรับตรรกะการเก็บรักษา

การจ่ายเงินภายนอก (self-custody แบบ opt-in)

  • รางวัลจากการขุดเดี่ยวตอนนี้สามารถจ่ายไปยังที่อยู่ BTX ภายนอกที่ไม่มีกุญแจบน Mac เครื่องนี้. ส่วนใหม่ Settings ไปยัง Mining payout: เก็บค่าเริ่มต้น (รางวัลลงใน Wallet ท้องถิ่นของ Mac เครื่องนี้) หรือส่งต่อไปยังที่อยู่ที่คุณควบคุมที่อื่น ซึ่งอาจเป็น hardware wallet, phone wallet, หรือที่อยู่ cold จุดประสงค์คือ self-custody ภัยคุกคามจริงต่อเครื่องขุดคือการรันโค้ดโดยผู้ใช้เดียวกัน (stealer สไตล์ AMOS ที่ผู้ใช้ถูกหลอก) และเครื่องที่ขุด 24/7 ซึ่งมักเป็นแล็ปท็อปเก่าที่นำมาใช้งานใหม่เพื่อสิ่งนี้โดยเฉพาะ เป็นเป้าหมายที่ง่าย การส่งรางวัลไปยังที่อยู่ภายนอกหมายความว่าเหรียญที่สะสมไม่เคยมีกุญแจบนเครื่องขุดเลย ที่อยู่ที่วางไว้จะถูกตรวจสอบรูปแบบที่ขอบเขต IPC (bech32, รับ prefix ต้านทานควอนตัม btx1z...; จับการวางผิดเครือข่าย, ช่องว่างนำหน้า/ท้าย, และ homoglyph เช่น b/i/o) พร้อมปุ่ม "ทดสอบรูปแบบ" สด; validateaddress RPC ของโหนดทำการตรวจสอบ checksum ครบถ้วนเมื่อพร้อมใช้งาน
  • ค่าธรรมเนียม dev ที่เปิดเผยไว้ 3.5% ไม่เปลี่ยนแปลง. engine การจ่ายเงินถูก generalize จาก FeeAccrual แบบไบนารีผู้ใช้/dev เดิมไปเป็น round-robin แบบถ่วงน้ำหนัก N ผู้รับ (PayoutScheduler) โดยค่าธรรมเนียม dev เป็นผู้รับบังคับหนึ่งราย unit test พิสูจน์ว่าส่วนแบ่ง dev จริงยังคงลู่เข้าหา 3.5% เหนือ 1000-2000 chunk โดยไม่คำนึงถึงการกำหนดค่าของผู้ใช้ ดังนั้นการเพิ่มการจ่ายเงินภายนอกไม่เปลี่ยนแปลงการแบ่งส่วนเลย
  • เฉพาะเดี่ยวในรีลีสนี้ และแอปบอกอย่างชัดเจน. v0.3.0 ส่ง payout ภายนอกสำหรับ coinbase จากการขุดเดี่ยวเท่านั้น รางวัลพูลยังคงลงใน Wallet ท้องถิ่น (pool payout ภายนอกคือ v0.3.2) หากกำหนดค่า payout ภายนอกและคุณอยู่ในโหมด Pool แบนเนอร์สีแดงบนหน้าจอหลักจะระบุให้ชัดเจน และกล่องโต้ตอบการสลับ Solo ไปยัง Pool จะย้ำข้อแม้นั้น ผู้ใช้ที่ใส่ใจความปลอดภัยจึงไม่มีวันสันนิษฐานเงียบ ๆ ว่ารายได้พูลของตนออกจากเครื่อง
  • การเลือก "Local wallet" กลับสู่สถานะเดิมอย่างสมบูรณ์. การเลือก radio ค่าเริ่มต้นตอนนี้ล้างการแบ่งที่บันทึกไว้ (clear_payout_split) ไม่ใช่แค่ซ่อนฟอร์ม การขุดจึงกลับสู่ Wallet ท้องถิ่นทันทีแทนที่จะยังคงจ่ายที่อยู่ภายนอกที่ตั้งค่าไว้ก่อนหน้าอย่างเงียบ ๆ

พูล / Mining protocol

  • worker.report_metrics heartbeat ทุก 60 วินาที. branch tokio::time::interval ใหม่ใน stratum select loop ส่ง {session_id, timestamp, cpu_util_pct, ram_gb_used, gpus: [{gpu_uuid, util_pct, power_w, temp_c}], solver_nps, shares_session_total} เพื่อให้ pool dashboard แสดง CPU/RAM/Share counter ต่อ rig CPU% และ RAM ที่ใช้มาจากการเรียก top -l 1 -n 0 หนึ่งครั้งที่รันบน async subprocess พร้อม tokio::time::timeout จริง 4 วินาที ดังนั้น top ที่ค้างอยู่ไม่มีวันหยุดการทำงานของ stratum reader, การจัดการ solver child, หรือการ submit ไปยังพูล GPU util/power/temperature ถูกรายงานเป็น JSON null บน macOS เพราะ powermetrics ต้องการสิทธิ์ root (ตามหมายเหตุของ shib เกี่ยวกับ macOS metrics); แถวยังคงปรากฏใน dashboard ฟิลด์ instrument สดแค่แสดงขีดกลาง
  • คลิกเดียว "เปิดเครื่องนี้ใน pool dashboard". ปุ่ม pool dashboard ที่มีอยู่ตอนนี้เขียน ?worker=<canonical_name> ลงใน URL ทันทีที่พูลกำหนดชื่อ canonical dashboard เป็น SPA วันนี้ดังนั้น query param จึงใช้งานร่วมกันไปข้างหน้าได้; หาก dexbtx เพิ่ม routing ต่อ worker ในภายหลังก็จะทำงานได้โดยไม่ต้องอัปเดตแอป
  • solver_env: {BTX_MATMUL_BACKEND: "metal"} ใน hardware fingerprint เพื่อให้ engine แนะนำการปรับแต่งของพูลรู้ว่าไม่ควรแนะนำ knob ที่ใช้ได้กับ CUDA เท่านั้น (BTX_MATMUL_GPU_INPUTS, BTX_MATMUL_SOLVE_BATCH_SIZE, เป็นต้น) แก่ Mac rig ใช้งานร่วมกันไปข้างหน้าได้: พูล whitelist คีย์ฝั่ง server ดังนั้นการประกาศ Metal-only ปัจจุบันจึงปลอดภัย

UX

  • อัปเดตเป็นไปไม่ได้ที่จะพลาดตอนนี้. แบนเนอร์สีส้มที่โดดเด่นที่ด้านบนของ dashboard ปรากฏขึ้นทันทีที่การตรวจสอบอัปเดตเมื่อเปิดแอปพบเวอร์ชันที่ใหม่กว่า ควบคู่กับ cue มุมที่มีอยู่ การคลิก Install แสดงคำถามครั้งเดียว: "ติดตั้งอัปเดตในอนาคตอัตโนมัติเมื่อเปิดแอปด้วยไหม" การถามในช่วงที่เต็มใจที่สุดได้ผลดีกว่า checkbox ในการตั้งค่าที่ไม่มีใครไป; flag easybtx-autoupdate-asked รับประกันว่าจะไม่ถามซ้ำหากผู้ใช้ปฏิเสธ การตรวจสอบอัปเดตเมื่อเปิดแอปตอนนี้รันก่อน first_run_setup เพื่อให้แบนเนอร์แสดงได้ในประมาณ 300 ms แทนที่จะรอหลังจากการเริ่มต้น node ช้า
  • easyBTX ทำให้ชัดเจนว่า bundle BTX node มาด้วย. ผู้ใช้ Telegram คนหนึ่งที่ดู "Sync progress 98.5%" ยังถามในช่องว่า "ตั้งค่า node ยังไง" สามจุดสัมผัสเล็ก ๆ ตอนนี้ตอบคำถามก่อนที่จะถูกถาม: modal "Mining ทำงานอย่างไร" เปิดด้วย "easyBTX รัน BTX node เต็มรูปแบบให้คุณ ไม่ต้องตั้งค่าแยก"; รายการตรวจสอบ setup-stages ตอนนี้อ่านว่า "ดาวน์โหลด BTX node และ chain" / "ซิงค์ node ไปยังบล็อกล่าสุด"; ส่วน Settings ไปยัง Node status เริ่มด้วย "นี่คือข้อมูลสดจาก node นั้น ไม่ใช่บริการระยะไกล"
  • การแนะนำให้สำรอง Wallet อย่างนุ่มนวล. แบนเนอร์สีเหลืองอำพันที่ถาวรเหนือยอดดุลปรากฏขึ้นทันทีที่คุณขุด BTX ได้บ้างแล้วและยังไม่ได้สำรองข้อมูล "บันทึกเดี๋ยวนี้" เปิดการตั้งค่าและเลื่อนไปที่ "บันทึกไฟล์กู้คืน" "ภายหลัง" ปิดเฉพาะการเปิดแอปปัจจุบัน (การแนะนำจะกลับมาเมื่อเปิดครั้งถัดไป เพราะการเสีย Wallet เพราะปิดการแจ้งเตือนครั้งเดียวนั้นไม่โอเค) แยกต่างหากจาก gate ที่เกิดขึ้นครั้งเดียวตอนตั้งค่า ซึ่งทำงานก่อนที่ผู้ใช้มีอะไรจะสูญเสีย
  • slider กำลัง Mining บนแถวเดียว. ป้ายกำกับ, slider, ปุ่ม MAX, และค่าสดย่อจากเลย์เอาต์สองแถวเป็น flex row เดียว ประหยัดพื้นที่แนวตั้งประมาณ 28 px สีส้มเดิม
  • "Last share" เดินสดตลอดเวลา. setInterval 1 วินาที render ซ้ำเวลาสัมพัทธ์บน share counter แทนที่จะให้มันหยุดระหว่าง status poll ทุก 3 วินาที ข้ามในขณะที่ document.hidden เพื่อให้แอปที่ backgrounded ไม่เปลืองแบตเตอรี่กับการอัปเดตที่มองไม่เห็น
  • Settings ไปยัง Upstream sources panel. แสดงรายการ open-source component ที่ easyBTX สร้างบน (BTX node btxchain/btx pinned ที่ v0.30.1, MineBTX dexbtx/minebtx, Tauri v2, repo EasyBTX-releases สาธารณะ) แต่ละแถวแสดงเวอร์ชัน pinned เทียบกับ tag ล่าสุดที่ดึงสดจาก GitHub API พร้อม badge Current / Update available dashboard บำรุงรักษาสำหรับติดตามเมื่อ upstream เคลื่อนออกไปเกินเรา แคชไว้ 5 นาที ปุ่ม Refresh ข้ามแคช
  • Community signals ใน About modal. ไทล์สดสำหรับจำนวนการติดตั้ง easyBTX (ผลรวมจำนวนดาวน์โหลด GitHub Releases asset), pool miner ออนไลน์ตอนนี้, บล็อกที่พบใน 24 ชั่วโมงที่ผ่านมา, และความเร็วเครือข่าย รีเฟรชเมื่อเปิด modal แคชไว้ 60 วินาที การ framing ที่ซื่อสัตย์: ไทล์ "miners ออนไลน์" มีป้ายกำกับ "รวม easyBTX และ client อื่น ๆ" เพราะ pool API ยังไม่แยก worker ตาม miner_version

Brand

  • easyBTX ตอนนี้ใช้ตัวพิมพ์เล็กสม่ำเสมอในการเขียน. มี 17 รายการที่แทนที่ใน README, CHANGELOG, NOTICE, และโฟลเดอร์ docs/ URL path (MendeMatthias/EasyBTX-releases), ประเภท Rust EasyBtxState, และชื่อ artifact pipeline รีลีส (EasyBTX.dmg, EasyBTX.app) ถูกรักษาไว้โดยเจตนา

บำรุงรักษา

  • แบนเนอร์เตือนดิสก์เหลือน้อย. ดึงดิสก์ว่างทุก 3 วินาทีบน status refresh เดียวกันที่ขับเคลื่อน UI ส่วนที่เหลือ ต่ำกว่า 1 GB แสดงการแจ้งเตือนสีเหลืองอำพัน; ต่ำกว่า 500 MB แสดงสีแดงพร้อมการกะพริบเร็วขึ้น ทั้งคู่แสดงแม้เมื่อ RPC ไม่ทำงาน ซึ่งเป็นช่วงที่คำเตือนสำคัญที่สุดพอดี (btxd เพิ่งแครชจาก Fatal LevelDB error: No space left on device, RPC ติดต่อไม่ได้, ผู้ใช้ไม่รู้ว่าทำไม)
  • Settings ไปยัง Maintenance ไปยัง Heal disk space. การเรียกคืนคลิกเดียวที่ลบ blockfilter/coinstats btxd index ที่ไม่ใช้, assumeutxo snapshot หลังโหลด, และตัด debug.log หากเกิน 50 MB สำหรับเมื่อคุณต้องการดิสก์กลับคืนแต่ยังไม่พร้อมย้าย datadir ไปยัง volume ภายนอก

การทำให้แข็งแกร่งก่อนรีลีส

  • การรวบรวม worker.report_metrics เป็น async. แทนที่ std::process::Command::output() แบบ synchronous (ไม่มี timeout, บล็อก tokio runtime worker นานเท่าที่ top ใช้) ด้วย tokio::process::Command พร้อม tokio::time::timeout จริง 4 วินาที top ที่ค้างอยู่ไม่หยุดการทำงานของ stratum reader, การจัดการ solver child, หรือการ submit ไปยังพูลอีกต่อไป
  • การอ่าน pool status แบบ single-guard ใน metrics tick. พับ lock/unlock สองขั้นตอนของ status.lock().await เป็น guarded scope เดียวเพื่อให้ shares_accepted และ hashps ถูกสังเกตที่ status-tick generation เดียวกันเสมอ

เอกสาร

  • docs/2026-05-28-btx-qid-self-custody.md. งานวิจัยและแผน 4 ระยะสำหรับการฝัง "qID" ที่ต้านทานควอนตัมและ self-custodial (passkey และการแบ่ง Shamir/MPC 2-of-3) ในเมล็ด BTX เพื่อให้ที่อยู่ payout ภายนอกข้างบนสามารถเป็นที่อยู่ที่ผู้ใช้ถือบนโทรศัพท์/passkey แทนที่จะเป็น hot wallet อีกใบ การวางแผนล่วงหน้าสำหรับหน้า bonuz HQ; โค้ดแอปไม่ขึ้นอยู่กับมัน

v0.2.0

2026-05-28

รีลีส polish "mega audit" การตรวจสอบความปลอดภัย /cso และการตรวจสอบ bug เชิงฟังก์ชัน 3 agent พบปัญหา CRITICAL 4 รายการ, HIGH 10 รายการ, MEDIUM 13 รายการ, และ LOW ไม่กี่รายการใน v0.1.13 รีลีสนี้ปิดทุกรายการในครั้งเดียว cargo test: 149/149. tsc --noEmit: สะอาด. ไม่มี IPC สาธารณะที่ถูกลบ แต่ send_btx ได้รับ parameter subtract_fee: bool ที่ชัดเจน (ปุ่ม Max ของ frontend ส่งมัน); EasyBtxState ได้รับ field #[serde(default)] สามรายการ (ไฟล์ state เดิมยังโหลดได้)

แก้ไขวิกฤต (data-loss / orphaned-process / forced-resync)

  • การลบ Wallet หลายใบถูกบล็อกเมื่อย้าย datadir. relocate_datadir ตอนนี้ enumerate ทุก wallet ภายใต้ src (ไดเรกทอรีใดก็ตามที่มี wallet.dat) และล้มเหลวอย่างปิดเว้นแต่แต่ละอันมีอยู่และไม่ว่างเปล่าใน dest ก่อนที่ remove_dir_all(src) จะรัน การตรวจสอบขนาด 97% ก่อนหน้านี้ตรวจสอบสุขภาพเฉพาะ miner/wallet.dat ซึ่งจะยอมรับการสูญหายเงียบ ๆ ของ Wallet รองขนาดเล็กกว่า
  • Pool และ Metal solver ถูกปิดอย่างถูกต้องเมื่อออกจากแอปแล้ว. stop_node_blocking ส่งสัญญาณ pool_stop, รอ pool_handle พร้อม timeout 3 วินาที (abort JoinHandle เมื่อพลาด), และล้าง pool status solver Command ได้รับ .kill_on_drop(true) เพื่อให้ JoinHandle ที่ถูก drop reap subprocess แทนที่จะค้างที่ 100% GPU หลังออกจากแอป
  • Snapshot.dat ไม่ถูกลบก่อนที่ loadtxoutset จะสำเร็จจริงอีกต่อไป. flag ที่บันทึกไว้ใหม่ EasyBtxState.snapshot_loaded ถูกตั้งค่าเฉพาะเมื่อ loadtxoutset สำเร็จ (หรือเมื่อ getchainstates รายงาน snapshot chainstate แล้ว) ผู้เรียก disk::reclaim_disk ทั้งหมดตอนนี้อ่าน flag ที่ถูกต้องนั้นแทน setup_complete (ซึ่งพลิกเมื่อ RPC bind ก่อนที่การโหลด snapshot ในพื้นหลังจะเสร็จ) การปิดแอปกลางการโหลดไม่ลบ snapshot และบังคับ resync genesis ทั้งหมดอีกต่อไป
  • guard output ของ Solver ป้องกันการ collapse nonce-cursor. solve_next_nonce ตอนนี้ advance เฉพาะเมื่อ tries_used > 0 และ nonce64_end >= solve_next_nonce (monotonic) {"found":false} แบบ degenerate ที่ขาด nonce64_end เคย reset cursor เป็น 1 ซึ่งทำให้ส่ง duplicate-share (code 22)

แก้ไขผลกระทบสูง

  • repair_node ไม่สลับเงียบ ๆ ไปยัง Wallet "miner" อีกต่อไป. ตอนนี้มันอ่าน state.active_wallet (ตามรูปแบบของ reclaim_disk_now) ก่อนสร้าง wallet_rpc ใหม่ ซึ่งเป็นการแก้ไข H1 จาก PR #12 ที่ยังไม่ได้นำมาใช้ที่นี่
  • move_datadir_to ปฏิเสธ volume exFAT/FAT. คำเตือน list_external_volumes ตอนนี้ถูก enforce ที่ขอบเขตการย้าย ไม่ใช่แค่แสดงเป็น tooltip
  • apply_node_update สลับไปยัง btxd binary ใหม่จริงแล้ว. ก่อนหน้านี้ไม่มีการดำเนินการ (การติดตั้งใหม่ไม่เคยนำมาใช้ซ้ำ) ตอนนี้มันบันทึก tag ใหม่ (EasyBtxState.btx_release_tag), หยุด controller ที่ทำงานอยู่, และ respawn กับ binary ใหม่; check_node_update/get_node_status รองรับ tag ที่บันทึกไว้ ดังนั้นแบนเนอร์อัปเดตจึงหยุดติดค้าง
  • การเปลี่ยน ntime กลางการ solve รีเซ็ต nonce cursor. เมื่อ notify ที่ไม่ clean เปลี่ยน ntime หรือ merkleroot การ solve ครั้งถัดไปจะเริ่มต้นที่จุดเริ่มต้นของ nonce window ของเรา (แทนที่จะ advance ผ่าน nonce ต่ำของ header ใหม่)
  • clean_jobs=true ไม่ race กับ solver ที่เพิ่งออกไปยัง stale submit อีกต่อไป. เส้นทาง clean-kill ดูดซับ stdout ของ child ที่ตายแล้วและล้าง solving_job ดังนั้น solver result ที่ช้าไปหนึ่งไมโครวินาทีจะล้มเหลวอย่างปิดที่ submit gate
  • การชน _corrupt-<ts> archive ไม่สามารถ hard-delete chain ได้อีกต่อไป. timestamp sub-microsecond และ counter -N ป้องกันการชน; เมื่อ rename archive ล้มเหลวตอนนี้เราคืน Err และปล่อย src ไว้ที่เดิม (ก่อนหน้านี้ fallback remove_dir_all(src) ลบ chain ที่เสียหายอย่างถาวร ซึ่งทำลายสัญญา "ไม่ hard-delete เลย")
  • การคิด pool fee ตรงกับ discipline ของเดี่ยว. ขอบเขต stop/clean-kill/deadline ไม่เครดิต kill-time ที่ผ่านไปเป็น dev mined_secs อีกต่อไป; การสะสมตอนนี้เกิดขึ้นเฉพาะใน branch รอ solver บน output ที่ parse ได้พร้อม tries_used > 0 ส่วนแบ่ง dev 3.5% ไม่สามารถเลื่อนขึ้นภายใต้ stop-churn อีกต่อไป
  • Share ที่สูญหายเนื่องจาก disconnect แสดงใน UI. mining.submit write error ตอนนี้ตั้ง last_event = "share lost (disconnect)..." และเพิ่ม stale counter ก่อนกลับสู่ reconnect loop
  • เครือข่ายที่ไม่เสถียรไม่สามารถทิ้ง "developer fee window..." ค้างไว้อีกต่อไป. cap เวลาพยายามสะสม (300 วินาที) บังคับให้ session ถัดไปไปยัง user payout หาก fee window เดียวล้มเหลวในการเชื่อมต่อต่อเนื่อง
  • การเริ่มต้น fallback ไปยัง datadir เริ่มต้นเมื่อ pointer ของไดรฟ์ภายนอกชี้ไปที่ไหนไม่ได้. ก่อนหน้านี้ไดรฟ์ที่ถอดออกระหว่างการเขียน pointer และการลบ src ทำให้แอปค้างอยู่บน path ที่ไม่มีอยู่จริง

Mining และความถูกต้องของพูล

  • ความล้มเหลวของ Subscribe/authorize ตอนนี้ log และแสดงใน last_event (ก่อนหน้านี้ถูกละเว้นเงียบ ๆ ซึ่ง pool-side schema bump อาจทำให้การขุดพูลทั้งหมดตายโดยไม่มี UI feedback)
  • submit_id initialize จาก epoch microseconds ของเวลา connect เพื่อให้ id ไม่ซ้ำกันข้าม reconnect
  • เดี่ยว: หลัง tick Paused การ iteration ถัดไปจะข้าม fee burst และขุดให้กับผู้ใช้ (deficit ตามทันในครั้งถัดไปที่ไม่ pause) ป้องกัน solo block เดียวจากการตกบน dev address ระหว่าง sync-pause flapping
  • idempotency ของ Snapshot ตอนนี้ SHA-verify snapshot.dat ที่มีอยู่ซึ่งขนาดตรงกัน (ก่อนหน้านี้ไฟล์ที่มีเนื้อหาผิดแต่ขนาดตรงพอดีถูกยอมรับโดยไม่มีการตรวจสอบ)

การปรับปรุง Wallet/send/audit

  • ที่อยู่รับที่เสถียรต่อ Wallet. EasyBtxState.wallet_addresses จำที่อยู่ของแต่ละ Wallet; do_switch_wallet นำมาใช้ซ้ำผ่าน address_is_mine แทนที่จะสร้างใหม่ทุกครั้งที่สลับ
  • Audit/CSV export สูงสุด 10,000 transactions. (cap ก่อนหน้าที่ 1,000 ทิ้ง entry เก่ากว่าของ miner ที่ทำงานนาน ๆ เงียบ ๆ)
  • Send "Max" ตอนนี้เป็น flag ที่ชัดเจน ไม่ใช่ heuristic ที่ยอมรับ sat มากหรือน้อย frontend ติดตามการคลิก Max; backend send_btx(.., subtract_fee) ยึดถือมัน การส่งยอดเงินทั้งหมดด้วยมือไม่หดตัวเงียบ ๆ อีกต่อไป
  • Backend send_btx ตรวจสอบจำนวนเงินและปฏิเสธ overdraft. Non-finite, ศูนย์, ลบ, และ amount > spendable ถูกปฏิเสธที่ขอบเขต IPC (ไม่ใช่แค่ที่ btxd)
  • backup_wallet_cmd ปฏิเสธ path ที่ไม่สามารถ canonicalize ได้ และปฏิเสธ path ใดก็ตามที่มี component .. ช่องว่าง "ข้ามเมื่อ canonicalize ล้มเหลว" ก่อนหน้านี้ถูกปิด
  • ทศนิยมสไตล์ยุโรปใน Send. parseFloat ถูกนำหน้าด้วย replace(/,/g, ".") ที่ call site ของ Send ทั้งสอง ตอนนี้ 1,5 BTX parse เป็น 1.5 ไม่ใช่ 1
  • การตรวจสอบ prefix btx1 ใน Explorer-link. addrExplorerUrl ตอนนี้ match regex ของ Send-input (^btx1[a-z0-9]{20,90}$/i) ดังนั้น audit rows ไม่สามารถลิงก์ไปยังหน้า explorer ที่ไม่มีอยู่ได้
  • Pool payout ตรวจสอบที่อยู่ที่แคชไว้อีกครั้ง ด้วย address_is_mine ก่อนส่งให้ stratum; สร้างใหม่เมื่อไม่ตรงกัน
  • Pool task ถูกหยุดอย่างถูกต้องระหว่าง repair_node และ relocate_datadir (ก่อนหน้านี้ยังคง submit กับ chain ที่ถูกลบ/กำลังย้าย)
  • persist_active_wallet ถูก lock. STATE_FILE_LOCK ใหม่ serialize ลำดับ load ไปยัง mutate ไปยัง save เพื่อให้การดับเบิลคลิกไม่สูญเสียการอัปเดต

ความปลอดภัย (การตรวจสอบ /cso)

  • Pool log ถูกย้ายออกจาก /tmp และถูก lock down. Log ตอนนี้อยู่ที่ $HOME/.easybtx/pool.log (fallback /tmp หาก HOME ไม่ได้ตั้งค่า), เปิดด้วย mode(0o600) + O_NOFOLLOW พื้นผิว World-readable/symlink-spoofable ถูกปิด
  • gpu_uuid ที่ส่งไปยังพูลตอนนี้เป็น SHA-256 ที่มี salt ไม่ใช่ IOPlatformUUID ดิบ. Hash มีความเสถียรต่อการติดตั้ง (เพื่อให้การ correlate worker ของพูลยังทำงานได้) แต่ตัวระบุ hardware ดิบไม่ออกจากเครื่องอีกต่อไป
  • RpcClient::for_wallet percent-encode ชื่อ Wallet ลงใน path ตอนนี้ปลอดภัยตาม convention (ผู้เรียกทั้งหมด validate); ตอนนี้ถูก enforce ที่ฟังก์ชันแทนที่จะเป็น reviewer discipline

ภายใน/งานเบ็ดเตล็ด

  • เวอร์ชัน: 0.1.13 ไปยัง 0.2.0 (package.json, tauri.conf.json, Cargo.toml)
  • EasyBtxState ได้รับ snapshot_loaded, btx_release_tag, และ wallet_addresses (ทั้งหมด #[serde(default)]; ไฟล์ state เดิมยังโหลดได้)
  • STATE_FILE_LOCK เพิ่มใน state.rs เพื่อ serialize รูปแบบ load ไปยัง mutate ไปยัง save; การเขียน state ของ reset_account/restore_wallet/first_run_setup ตอนนี้ผ่านมัน
  • TODO doc-link เก่าที่รู้จัก TODO(H3-followup) หนึ่งรายการเหลืออยู่ใน apply_node_update ที่ชี้ไปที่การ re-arm RPC ในเซสชัน (เส้นทาง persisted-tag + restart ถูก ship; การรอ cookie ในเซสชันเป็น follow-up)

v0.1.13

2026-05-28

เพิ่ม

  • บรรทัดยอดดุลขาเข้า. การชำระเงินที่รับมาซึ่งยังไม่ยืนยัน (untrusted_pending) ตอนนี้แสดงเป็นบรรทัด "กำลังยืนยัน..." ที่ชัดเจนแทนที่จะดูหายไปจนกว่าจะยืนยัน ยอดดุลที่ใช้ได้ยังคงเป็นแบบ trusted เท่านั้น ดังนั้น Send ไม่สามารถ overdraw ได้เลย
  • ลิงก์ Block explorer. Transaction ID และที่อยู่ใน Send, Receive, และ Audit/Overview เปิดบน explorer.minebtx.com (truncated, copy และ open) หน้าจอยืนยัน Send แสดงที่อยู่ผู้รับเต็มเพื่อให้คุณตรวจสอบได้
  • Send: ปุ่ม "Max" และการส่งเต็มจำนวนที่ปลอดภัย. ปุ่ม Max เติมยอดดุลที่ใช้ได้ทั้งหมด และการส่งยอดเงินทั้งหมดตอนนี้หัก network fee ออกจากจำนวนเงินแทนที่จะล้มเหลวด้วย "insufficient funds" ที่อยู่ผู้รับยังถูกตรวจสอบก่อนขั้นตอนยืนยัน
  • เรียกคืนพื้นที่. ปุ่ม Settings ไปยัง Storage (และการผ่านอัตโนมัติเมื่อเปิดแอป) ปลดปล่อยดิสก์โดยลบ blockfilterindex/coinstatsindex ที่ไม่ใช้, assumeutxo snapshot หลังโหลด, และ debug.log ที่ใหญ่เกินไป blockchain และ Wallet ของคุณไม่ถูกแตะต้อง

พูล

  • popup ข้อมูล pool-payouts ตอนนี้แสดง policy จริง (ทุกศุกร์ 18:00 UTC, ขั้นต่ำ 0.0001 BTX, ค่าธรรมเนียมพูล 2.5%) แทนการใช้คำที่คลุมเครือ
  • easyBTX ตอนนี้ระบุตัวตนต่อพูลเป็น easybtx/<version> เพื่อให้พูลแยก eBTX miner สำหรับ stats; ข้อมูล hardware ให้ชื่อ dashboard canonical แก่ worker ของคุณ

แก้ไข

  • Pool block-tier pre_hash. Metal share-solver ตอนนี้ enforce gate pre_hash ระดับบล็อก (sigma <= block_target << epsilon) แทนที่จะข้ามมันสำหรับ share ดังนั้น share ระดับบล็อกจึงเป็น block ที่ถูกต้องและ submitblock ของพูลหยุดล้มเหลวด้วย "matmul phase2 proof of work failed" easyBTX ประกาศ capability pre_hash_block_tier_v18 ใน mining.subscribe (การเปลี่ยนแปลง Solver อยู่ใน btx-main; ดู docs/patches/btx-prehash-block-tier.patch)

เปลี่ยนแปลง

  • Mining power ตอนนี้เป็น slider สด ที่ด้านบนของ stats card มันเขียวขึ้นเป็นส้ม-แดงเมื่อคุณดัน (ขั้น 5%, ปุ่ม Max) และ sync กับ Settings slider แถวแสดงผล speed/power เก่าหายไปแล้ว ทำให้ card สั้นลง ไอคอน ⓘ บน slider อธิบาย best practice (ประมาณ 50% สำหรับงานเบาทำให้ Mac เย็นและเงียบ; 100% เร็วที่สุดแต่ร้อนและใช้แบตเตอรี่)
  • Wallet ที่ใช้งานอยู่ตอนนี้ดึงมาจาก backend เท่านั้น (แหล่งความจริงเดียว); frontend ไม่นำ Wallet จาก localStorage มาใช้ซ้ำอีกต่อไป ดังนั้น chip Wallet และที่อยู่ไม่สามารถขัดแย้งกันชั่วคราวได้
  • การ์ด Pool earnings สั้นลง: คำอธิบาย payout ย้ายเข้าไปใน popup ⓘ ถัดจาก "Accepted shares" และ worker ตอนนี้อยู่ถัดจากลิงก์ "Open pool dashboard" เพื่อให้อ่านเป็นคู่กัน