v0.4.7

最新版本
2026-06-02

Mac 矿池挖矿现在即开即用,无需下载节点,也无需同步。

重头戏是速度。在矿池模式下,easyBTX 不再下载或运行完整的 BTX 节点。矿池挖矿从来就不需要它,而它却带来了数 GB 的下载、漫长的"正在追赶"同步,以及偶尔的崩溃。现在你打开应用,收款地址已经自动填好,你的 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 上的矿池挖矿恢复正常。0.4.5 中一项针对 Windows 版本的改动让 Mac 的挖矿引擎指向了错误的辅助程序,导致挖矿无法启动。已恢复为 0.4.4 时的工作方式。

新增

  • 关于界面新增 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 又恢复正常了。除此之外,关于界面现在会显示你自己的挖矿统计,弹窗都以同样宽敞的形态打开,复制某笔交易的浏览器链接也只需轻点一下。

新增

  • 你的挖矿:关于界面新增一个私密统计面板,显示你累计挖矿的时长、平均速度、被接受的 Share,以及你开始的日期。这些数据只存在你的 Mac 上,绝不会上传。
  • 每笔交易新增"复制链接"按钮,方便你复制它的区块浏览器链接并粘贴到任何地方。

变更

  • 关于、设置、交易记录和信息弹窗现在都以同一个更大、更统一的窗口打开,阅读起来更轻松。
  • 设置页采用更整洁的侧边菜单。链接分区现在指向官方 BTX 协议网站,并单独提供一个实时价格网站(由第三方提供,并非投资建议,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 自动切换。选择会被记住。
  • 设置页为每个分区添加了快捷按钮(节点、挖矿、外观、数据位置、钱包、出款、备份、更新、维护、新建账户、上游、链接)。点击即可直接跳转。

变更

  • 矿池挖矿在设置了外部出款地址时,现在会将收益打到该地址。此前只有单独挖矿支持此功能。无论哪种方式,代币都不会经过本机钱包,因此即便笔记本被入侵,攻击者也拿不到私钥。
  • 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 能力门控,以及新的 mining.subscribe 扩展字典,包含 session_id 与每台矿机的硬件指纹。easyBTX v0.2.0 只发送了三个必填字段中的两个,导致 Mac 矿工虽然连接到矿池,却从未出现在矿工面板中。v0.3.0 实现了完整的 v0.3.x 握手,新增了 worker.report_metrics 心跳,解锁了矿池面板中每台矿机的实时行,并展示矿池为每台矿机分配的规范名称,让用户能在 /stats 中找到自己的 Mac。此外,首个可选自保管功能上线:单独挖矿的收益现在可打至本机没有私钥的外部 BTX 地址。以及大量根据 v0.2.0 用户在 Telegram 反馈完成的体验改进。cargo test:195/195。tsc --noEmit:通过。cargo build --release + npm run build:均为绿色。

关键修复

  • dexbtx 矿池注册已为 Mac 矿工恢复。 mining.subscribe 现在发送完整的 v0.3.x 扩展字典:protocol_compliant: ["pre_hash_block_tier_v18"]、现有硬件指纹(扩展了 solver_env: {BTX_MATMUL_BACKEND: "metal"}),以及每会话的 session_id(32 位小写十六进制,与参考矿机 uuid.uuid4().hex 格式一致,由 SHA256("easybtx-session:" || nanos || pid || counter) 构建,确保相邻会话不重复)。缺少 session_id 时,v5 矿池会将 Mac 矿工静默排除在面板和 Telegram 机器人的 /stats 之外。mining.set_canonical_name 现已处理,分配结果持久化至 ~/.easybtx/canonical_names.json,矿池分配的标签(如 M2_PRO-BRAVO-1)在重连后依然保留。界面中的"本机矿工:"一栏在收到标签后立即显示。
  • 节点更新不再耗时 8 分钟。 NodeController::stop 最多轮询 90 秒的 Child::try_wait,超时后才发 SIGKILL。此前立即杀死进程会在 btx1z 屏蔽状态 LevelDB 写入过程中命中,留下进行中的变更标记,导致下次启动时触发 EnsureShieldedStateInitialized: rebuilding full shielded state from chain(实测耗时 7 分 57 秒)。干净退出不留标记,启动时间恢复为约 1 秒。
  • 修复节点隔离区不再持续泄漏几十 GB 空间。 新增 prune_old_quarantines,删除超过 7 天的 _corrupt-*_preserve-* 目录,同时保留每种模式最新的一个作为取证。在应用启动时运行(清理过去会话的陈旧隔离区),并在每次 repair_node 结束时运行(清理上次修复遗留的陈旧隔离区)。维护者机器上有一个陈旧的 _corrupt-* 目录占用了 42 GB 空间。包含 6 个新的保留逻辑单元测试。

外部出款(可选自保管)

  • 单独挖矿收益现在可以打至本机没有私钥的外部 BTX 地址。 新增设置 → 挖矿出款分区:保持默认(收益进入本机本地钱包),或路由至你在其他地方控制的地址,如硬件钱包、手机钱包或冷地址。关键在于资产保管。对挖矿设备的现实威胁是同用户代码执行(AMOS 风格的窃取器,用户被诱骗运行),而一台全天候挖矿的机器(通常是专门为此重新利用的旧笔记本)是一个软目标。将收益路由到外部地址意味着累积的代币从未在挖矿机器上存有私钥。粘贴的地址在 IPC 边界进行格式校验(bech32,接受 btx1z... 后量子前缀;捕获网络错误粘贴、前后空格和同形字如 b/i/o),并提供实时"测试格式"按钮;节点在线时,validateaddress RPC 完成完整校验和检查。
  • 已公示的 3.5% 开发费率不变。 出款引擎从原来的二元用户/开发 FeeAccrual 泛化为 N 个接收方的加权轮询(PayoutScheduler),开发费作为一个强制接收方。单元测试证明,无论用户如何配置,实际开发分成在 1000 到 2000 个区块内仍收敛于 3.5%,因此添加外部出款不会改变分配比例。
  • 本版本仅支持单独挖矿,应用也明确说明了这一点。 v0.3.0 只对单独挖矿的 coinbase 进行外部出款路由,矿池收益仍进入本地钱包(矿池外部出款为 v0.3.2)。如果配置了外部出款且当前处于矿池模式,主视图会显示红色横幅,单独到矿池切换对话框也会重复此警告,确保注重安全的用户不会默默认为矿池收益已离开本机。
  • 选择"本地钱包"可完全还原。 选择默认单选项现在会清除持久化的分配(clear_payout_split),而不只是隐藏表单,因此挖矿会立即恢复打至本地钱包,而不是继续静默打至之前设置的外部地址。

矿池与挖矿协议

  • worker.report_metrics 每 60 秒发送一次心跳。 stratum select 循环中新增的 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、内存和 Share 计数。CPU 占用率和内存使用量来自一次 top -l 1 -n 0 调用,在带有真实 4 秒 tokio::time::timeout 的异步子进程中运行,确保卡住的 top 不会阻塞 stratum 读取、solver 子进程管理或矿池提交。macOS 上 GPU 利用率、功耗和温度报告为 JSON null,因为 powermetrics 需要 root 权限(参见 shib 关于 macOS 指标的说明),面板行仍然显示,实时仪表字段只显示破折号。
  • 一键"在矿池面板中打开本机。" 现有矿池面板按钮在矿池分配规范名称后立即将 ?worker=<canonical_name> 写入 URL。面板目前是 SPA,查询参数向前兼容;若 dexbtx 后续添加按矿工路由,无需更新应用即可生效。
  • 硬件指纹中包含 solver_env: {BTX_MATMUL_BACKEND: "metal"},使矿池调优推荐引擎知道不应向 Mac 矿机建议仅适用于 CUDA 的参数(BTX_MATMUL_GPU_INPUTSBTX_MATMUL_SOLVE_BATCH_SIZE 等)。向前兼容:矿池在服务端白名单管理键名,因此当前仅声明 Metal 是安全的。

体验

  • 更新消息现在不可能错过。 启动更新检查发现新版本时,仪表板顶部会立即显示醒目的橙色横幅,与现有角标提示并列。点击"安装"会弹出一次性提示:"是否在每次启动时自动安装后续更新?"在用户意愿最强时询问效果远好于在没人去翻的设置复选框处提示;easybtx-autoupdate-asked 标志确保用户拒绝后不会再次询问。启动更新检查现在在 first_run_setup 之前运行,横幅可在约 300 毫秒内渲染,而不是等到缓慢的节点启动完成后。
  • easyBTX 现在明确说明它内置了自己的 BTX 节点。 一位在 Telegram 频道看到"同步进度 98.5%"的用户仍在询问"如何搭建节点?"三处细节现在在问题被问出前就给出答案:"挖矿原理"弹窗以"easyBTX 为你运行完整的 BTX 节点,无需单独设置"开头;设置向导步骤现在显示"下载 BTX 节点与链"和"将节点同步至最新区块";设置 → 节点状态分区以"这些是来自该节点的实时读数,而非远程服务"开头。
  • 软性备份钱包提示。 一旦你实际挖到了一些 BTX 且尚未备份,余额上方会出现持久的琥珀色横幅。"立即保存"会打开设置并滚动至"保存恢复文件"。"稍后"仅在本次启动内关闭提示(下次启动时会再次出现,因为因一次关闭提示而丢失钱包是不可接受的)。与现有的设置初期门控分开,后者在用户尚无任何资产时触发。
  • 挖矿算力滑块合并为一行。 标签、滑块、MAX 按钮和实时数值从两行布局合并为单行 flex 布局。节省约 28 像素的垂直空间。保持比特币橙色强调色。
  • "上次 Share"实时更新。 1 秒 setInterval 重新渲染 Share 计数器上的相对时间,而不是在 3 秒状态轮询之间停止刷新。当 document.hidden 时跳过更新,避免后台应用消耗电池。
  • 设置 → 上游来源面板。 列出 easyBTX 所依赖的开源组件(BTX 节点 btxchain/btx 固定在 v0.30.1、MineBTX dexbtx/minebtx、Tauri v2、公共 EasyBTX-releases 仓库)。每行显示固定版本与从 GitHub API 实时获取的最新标签,并附有"当前版本"或"有可用更新"徽章。维护者可用于跟踪上游进展。缓存 5 分钟,刷新按钮可绕过缓存。
  • 关于弹窗中的社区数据。 显示 easyBTX 安装数量(GitHub Releases 资源下载总计)、当前在线矿池矿工数、过去 24 小时找到的区块数和网络速度的实时磁贴。在弹窗打开时刷新,缓存 60 秒。诚实说明:"在线矿工"磁贴标注"含 easyBTX 及其他客户端",因为矿池 API 尚未按 miner_version 区分矿工。

品牌

  • easyBTX 在正文中现在统一使用小写。 修改了 README、CHANGELOG、NOTICE 和 docs/ 文件夹中的 17 处。URL 路径(MendeMatthias/EasyBTX-releases)、Rust EasyBtxState 类型以及发布流水线产物名称(EasyBTX.dmgEasyBTX.app)均有意保留原样。

维护

  • 低磁盘空间警告横幅。 与驱动其余界面的状态刷新同步,每 3 秒获取一次可用磁盘空间。低于 1 GB 时显示琥珀色提示,低于 500 MB 时显示带更快闪烁的红色提示。即使 RPC 断线时也会显示,而这正是最需要警告的时候(btxd 刚因 Fatal LevelDB error: No space left on device 崩溃,RPC 不可用,用户毫不知情)。
  • 设置 → 维护 → 修复磁盘空间。 一键回收空间,删除未使用的 btxd blockfilter/coinstats 索引、assumeutxo 加载后快照,并在 debug.log 超过 50 MB 时截断。适用于需要释放磁盘但尚未准备好将数据目录迁移至外部存储时使用。

发布前加固

  • worker.report_metrics 数据采集改为异步。 将同步的 std::process::Command::output()(无超时,会在 top 执行期间阻塞 tokio 运行时工作线程)替换为 tokio::process::Command 加真实的 4 秒 tokio::time::timeout。卡住的 top 不再阻塞 stratum 读取、solver 子进程管理或矿池提交。
  • 指标周期中对矿池状态的单次加锁读取。status.lock().await 的两步加锁/解锁合并为一个作用域,确保 shares_acceptedhashps 始终在同一状态周期下被观测。

文档

  • docs/2026-05-28-btx-qid-self-custody.md 研究报告及四阶段计划,用于将后量子、自保管"qID"(passkey 加 2-of-3 Shamir/MPC 分片)根植于 BTX 种子,使上述外部出款地址日后可由用户通过手机/passkey 持有,而非另一个热钱包。面向 bonuz HQ 页面的前瞻性规划,不影响任何应用代码。

v0.2.0

2026-05-28

"全面审计"打磨版本。通过 /cso 安全审计和三智能体功能缺陷审计,在 v0.1.13 中发现了 4 个严重、10 个高危、13 个中危问题及若干低危问题。本版本一次性修复了全部问题。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 solver 现在正确关闭。 stop_node_blocking 发送 pool_stop 信号,等待 pool_handle(超时 3 秒后中止 JoinHandle),并清除矿池状态。solver Command 新增 .kill_on_drop(true),确保 JoinHandle 被释放时子进程会被回收,而不是在退出后继续以 100% GPU 运行。
  • loadtxoutset 真正成功之前不再删除 snapshot.dat。 新增持久化标志 EasyBtxState.snapshot_loaded,仅在 loadtxoutset 成功(或 getchainstates 已报告快照链状态)时设置。所有 disk::reclaim_disk 调用方现在读取该真实标志,而非 setup_complete(后者在 RPC 绑定时翻转,早于后台快照加载完成)。中途关闭应用不再清除快照并强制从创世块重新同步。
  • Solver 输出保护防止 nonce 游标归零。 solve_next_nonce 现在只在 tries_used > 0nonce64_end >= solve_next_nonce(单调递增)时才推进。退化的 {"found":false}(缺少 nonce64_end)曾将游标重置为 1,导致重复 Share 提交(错误码 22)。

高优先级修复

  • repair_node 不再静默切换到"矿工"钱包。 现在在重建 wallet_rpc 之前读取 state.active_wallet(与 reclaim_disk_now 的模式一致),即 PR #12 中的 H1 修复,此前未在此处应用。
  • move_datadir_to 拒绝 exFAT/FAT 卷。 list_external_volumes 警告现在在迁移边界强制执行,而不只是显示为提示。
  • apply_node_update 现在真正切换到新的 btxd 二进制文件。 此前为空操作(新安装从未复用)。现在持久化新标签(EasyBtxState.btx_release_tag),停止运行中的控制器,并针对新二进制重新启动。check_node_update/get_node_status 使用持久化标签,更新横幅不再卡住。
  • 求解中途 ntime 变化时重置 nonce 游标。 当非干净通知更改了 ntimemerkleroot 时,下次求解从我们的 nonce 窗口起始处重新开始(而不是跳过新区块头的低 nonce)。
  • clean_jobs=true 不再与刚退出的 solver 竞争提交陈旧结果。 干净终止路径排空已结束子进程的 stdout 并清除 solving_job,使晚到的 solver 结果在提交门处被安全关闭。
  • _corrupt-<ts> 归档冲突不再硬删除链数据。 亚微秒时间戳加 -N 计数器防止冲突;归档重命名失败时现在返回 Err 并保留 src(此前的回退 remove_dir_all(src) 会永久删除损坏的链,违背"不硬删除"的承诺)。
  • 矿池费用核算与单独挖矿保持一致。 停止/干净终止/截止时间边界不再将终止等待时间计入开发者 mined_secs,现在只在等待 solver 分支解析到 tries_used > 0 的输出时累积。3.5% 开发分成不再在频繁停止操作下偏高。
  • 断线时丢失的 Share 现在在界面中显示。 mining.submit 写入错误现在会设置 last_event = "share lost (disconnect)..." 并在返回重连循环之前递增陈旧计数器。
  • 不稳定的网络不再让"开发者费用窗口..."一直卡住。 累积尝试时间上限(300 秒)确保单个费用窗口持续无法连接时,下一个会话切换到用户出款。
  • 启动时若外部驱动器指针指向不存在的路径,回退至默认数据目录。 此前在指针写入与 src 删除之间拔出驱动器会导致应用卡在不存在的路径上。

挖矿与矿池正确性

  • 订阅/授权失败现在记录日志并在 last_event 中显示(此前静默忽略,矿池端 schema 变更可能导致所有矿池挖矿失败而无任何界面反馈)。
  • 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 校验金额并拒绝超额。 非有限数、零、负数和 amount > spendable 在 IPC 边界被拒绝(而非等到 btxd 层面才报错)。
  • backup_wallet_cmd 拒绝无法规范化的路径,并拒绝任何包含 .. 组件的路径。之前"规范化失败时跳过"的漏洞已修复。
  • 发送时支持欧式小数逗号。 两处 Send 调用点在 parseFloat 之前执行 replace(/,/g, ".")1,5 BTX 现在正确解析为 1.5,而非 1。
  • 浏览器链接的 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 现在是加盐的 SHA-256 哈希,而非原始 IOPlatformUUID 哈希在每次安装中保持稳定(矿池矿工关联仍有效),但原始硬件标识符不再离开本机。
  • RpcClient::for_wallet 对钱包名称进行百分比编码后写入路径。目前所有调用方均通过约定进行校验,现在在函数层面强制执行,而不依赖代码审查人员的自律。

内部/日常维护

  • 版本:0.1.13 到 0.2.0(package.jsontauri.conf.jsonCargo.toml)。
  • EasyBtxState 新增 snapshot_loadedbtx_release_tagwallet_addresses(均为 #[serde(default)],旧版状态文件仍可加载)。
  • STATE_FILE_LOCK 引入 state.rs,序列化加载、修改、保存模式;reset_account/restore_wallet/first_run_setup 的状态写入现在通过它进行。
  • apply_node_update 中留有一个已知陈旧文档链接 TODO(H3-followup),指向无缝会话内 RPC 重新激活(持久化标签加重启路径已发布,会话内 cookie 等待为后续工作)。

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-solver 现在强制执行区块层级 pre_hash 门控(sigma <= block_target << epsilon),而不是绕过 Share 的校验,使区块层级 Share 成为有效区块,矿池的 submitblock 不再报"matmul phase2 proof of work failed"。easyBTX 在 mining.subscribe 中声明 pre_hash_block_tier_v18 能力。(Solver 变更位于 btx-main,参见 docs/patches/btx-prehash-block-tier.patch。)

变更

  • 挖矿算力现在是顶部实时滑块。 随着推高而从绿色变为橙红色(5% 步进,Max 按钮),与设置滑块保持同步。旧版速度/功耗读数行已移除,卡片更简洁。滑块上的 ⓘ 说明最佳实践(约 50% 适合轻度工作,保持 Mac 凉爽安静;100% 最快但温度高且耗电)。
  • 活跃钱包现在仅从后端获取(单一数据源),前端不再从 localStorage 重新应用钱包,钱包标签和地址不再出现短暂不一致。
  • 矿池收益卡片更简洁:出款说明移至"已接受 Share"旁的 ⓘ 弹窗,矿工名称移至"打开矿池面板"链接旁,两者读作一组。