一笔 Blocknet 交易内部发生了什么?

· 5 分钟阅读

沿着一笔 Blocknet 付款,看看钱包如何组织已有资金、新输出、找零和网络手续费。本篇说明为什么付给一个人的交易可以有多个输出,以及花费一个钱包输出为什么不等于把其全部价值交给收款人。记账示例使用假设金额,具体实现以已发布的 core v0.22.0 钱包为参考。

Blocknet 交易如何转移你的资金?

简短回答

钱包选择自己拥有的可花费输出,将其用作输入,再为收款人及需要返还的找零创建新输出。选中资金的价值覆盖收款金额和网络手续费。隐私证明让网络验证付款,而钱包能够识别新输出中哪些属于你。

从钱包已经拥有的输出开始

输出是先前交易创建的一份价值。只要尚未花费并满足成熟规则,钱包就可以选择它来支付新的付款。钱包余额可能由多份这样的价值组成,来源包括此前收款、挖矿付款或找零。通常不需要你手动选择这些输出。

假设钱包选中一个价值 10 BNT 的输出,用于支付 3 BNT。它会完整花费这个已有输出。随后,新交易把价值分配给收款人、找零和手续费。钱包中的其他输出可以保持不动;选中资金的总额不一定是你的全部余额。

多个较小的输出也可以为一笔付款提供资金。已发布的钱包构建器会选择足够的已成熟资金,覆盖收款金额和手续费。输入选择与基于交易大小的手续费估算相互影响,因此应查看钱包当前给出的预览。交易手续费指南介绍具体计算及查看位置。

交易示意:1 选中 10 BNT;2 向收款人发送 3 BNT;3 返还 6.9995 BNT 找零;4 计入 0.0005 BNT 网络手续费。

按钱包记账方式阅读此图:1 是选中的输入,2 是收款人输出,3 是你的找零输出,4 是手续费。数字仅用于说明;手续费是假设值,并非报价。箭头表示所有权和价值分配,并不代表浏览器中公开可见的关联。

为什么一笔付款可以创建多个输出?

在本例中,10 BNT = 3 BNT + 6.9995 BNT + 0.0005 BNT。收款人得到 3 BNT,你的钱包收到 6.9995 BNT 找零,交易支付假设的 0.0005 BNT 手续费。虽然你只打算付给一个人,却产生了两个新的钱包输出。手续费是交易中的独立字段,而不是第三个收款输出。

两个输出是便于理解的例子,并非每笔付款都必须如此。构建器支持多个收款人,其高级输入选择流程还可以把找零拆成多个输出。如果选中的价值恰好覆盖所有收款金额和手续费,就无需找零输出。而发送全部资金操作会先从选中的可花费总额中扣除手续费,再确定收款人金额。

因此,输出数量描述的是交易结构。它并不代表客户、发票或不同钱包的数量。多个输出可能属于同一个钱包,而使用多个输入的交易也可以只付给一个收款人。比较钱包付款记录与浏览器中较简短的结构摘要时,要记住这些区别。

找零去了哪里?

钱包为自己的密钥构建找零。在本例中,原来的 10 BNT 输出被消耗,6.9995 BNT 找零则成为同一钱包能够识别的新输出。在普通发送流程中,你无需输入第二个收款人,也无需手动复制找零地址。

收款人输出和找零都使用一次性输出密钥。公开交易不会在你熟悉的收款地址旁标注“找零”。钱包掌握识别自身输出所需的私有信息。隐形地址指南解释这些一次性密钥如何与可重复使用的收款地址关联。

找零也遵循新建输出的规则。发送后,部分余额可能正在等待确认或成熟,但仍然属于你。新找零尚在等待时,未动用的成熟输出可能仍可花费。准备另一笔付款时,应查看钱包的可花费余额;转账时间指南解释从广播到可花费的各个阶段。

网络检查什么,浏览器能显示什么?

每个真实输入都有隐私证明,将其置于一组可能的历史输出之中。其他环成员是诱饵,不会把其所有者的资金贡献给你的付款。密钥镜像让网络发现重复花费,同时无需公开哪个环成员才是真实来源。相关机制见环签名。

网络还验证金额承诺和证明,包括交易加上手续费后是否平衡。范围证明指南解释如何在金额隐藏的情况下完成这些检查。公开交易数据包括交易哈希、输入和输出结构,以及手续费。仅把哈希粘贴到浏览器中,并不会揭示示例中的私有记账信息。

使用钱包识别你自己的收款和找零。使用浏览器查看公开的交易和区块状态。如果想了解发送方、收款人或第三方能够获知什么,付款可见性指南比较了各方视角及主动分享信息的方式。

跟踪付款的确认过程

确认计划发送的付款前,把收款信息、收款金额、手续费和找零放在一起核对。提交后,交易哈希标识整笔交易,包括所有输入和输出。它不是收款地址,也不只是收款人输出的标识。

广播、纳入区块以及变为可花费状态是不同阶段。收款人的钱包扫描属于其密钥的输出,你的钱包则识别自己的找零。确认和成熟决定这些新输出何时能用于后续交易。发送与接收指南介绍实际的钱包操作步骤。

处理付款问题时,先核对预期金额和钱包记录,再查看交易状态。这样就能理解整笔付款:选中了什么、收款人收到多少、多少价值作为找零退回,以及哪些仍在等待。无论资金最初来自他人还是矿池付款,都可以这样查看。

常见问题

为什么我的 Blocknet 付款有两个输出?

固定金额付款可以创建一个给收款人的输出,再创建另一个输出,把输入中未用完的价值作为找零退回你的钱包。交易也可能包含多个收款人、拆分的找零,或者完全没有找零。仅凭输出数量,无法知道付给了多少个人。

发送前需要复制找零地址吗?

所核对的钱包交易构建器使用你自己钱包的公钥生成找零。你输入目标收款信息,钱包负责处理找零输出。这个输出属于发送方钱包,并按照正常的确认和成熟规则变为可花费状态。

输入的环会花费所有成员的资金吗?

每个输入只花费一个属于发送方的真实输出。其他环成员为隐私证明提供可能的来源,它们的价值不会加入付款。一笔交易可以使用多个真实输入,每个输入都有各自的环和密钥镜像。