DIESEL 手续费的工作原理
SUBFROST Chrome 扩展和 Android 应用可以用 DIESEL 而不是 BTC 来支付一笔交易的网络手续费。本页解释它是如何运作的,以及为什么它是安全的。关于钱包中的具体操作步骤,请参阅 用 DIESEL 支付手续费。
问题所在
Bitcoin 矿工只收 BTC。手续费就是一笔交易所有输入的价值减去所有输出的价值。因此,一个持有 DIESEL、frBTC 或其他 Alkanes 代币、却没有多余 BTC 的钱包,无法独自让一笔交易被打包。
一笔交易,两方出力
解决办法是:让一个确实持有 BTC 的参与方把 BTC 加入你的交易,并在同一笔交易中向它还款。
这个参与方就是中继方(relayer)。当你选择用 DIESEL 支付手续费时,你的钱包会构建一笔 Bitcoin 交易,其中包含:
输入
- 你自己的币,也就是你的操作所需要的那些(例如你要发送的代币)。
- 你的 DIESEL。
- 来自中继方的一枚 BTC 币。支付矿工的正是它的 BTC。
输出
- 你的操作本身:付款、交换、包装或解包。
- 你的找零,回到你自己的地址。
- 中继方的找零:它那枚币中没有付给矿工的部分。
- 一条 Alkanes 指令,把你的 DIESEL 支付到一个协议金库(treasury)中。
所以,你花的是 DIESEL,矿工收到的是 BTC,中间没有任何人托管你的币。手续费的支付不需要第二笔交易(解包的 BTC 付出仍然像往常一样是单独的一笔交易)。
为什么它是安全的
它只是一笔交易。 Bitcoin 对一笔交易要么整体确认,要么完全不确认。如果交易没有确认,中继方的 BTC 和你的 DIESEL 都不会动。交易内的 Alkanes 步骤(你的操作和 DIESEL 付款)在交易确认的那个区块中执行。签名前,中继方会先按当前链上状态运行这些步骤,只要有任何一步失败,就拒绝出资。如果某一步在区块被挖出时仍然失败(例如交换价格变动),交易依然会确认,而该步骤所携带的代币会退回你自己的地址。
你的签名覆盖一切。 当你的钱包签名时,签名会对这笔交易的每一个输入和每一个输出做出承诺,包括确切的 DIESEL 金额。事后任何人都无法在不破坏你的签名的情况下更改金额、添加输出或改变付款去向。
中继方只为自己的那枚币签名。 中继方会先根据链上的当前状态,检查这笔交易能否偿还它,然后再为它唯一的那个输入签名。它的签名同样对整笔交易做出承诺。随后你的钱包会检查:中继方唯一添加的只是那个签名,交易的其余部分与你签名的那一笔完全相同。如果有任何其他改动,钱包会拒绝它。
由你设定上限。 在签名任何内容之前,钱包会把手续费显示为“最多 X DIESEL”。如果中继方的报价要求超过这个数额,钱包会停止操作,不会发送任何内容。
价格是如何确定的
中继方的成本以聪(satoshi)计,而你用 DIESEL 偿还,所以需要一个 DIESEL/BTC 价格。
- 价格来源是 SUBFROST 上的 DIESEL/frBTC 资金池。frBTC 与 BTC 1:1 对应,因此这个资金池可以直接以聪为单位给 DIESEL 定价。
- 它是中位数,而不是某一瞬间的快照。 价格取自最近若干区块中对该资金池多次读数的中位数,因此资金池在某一刻的异常活动不会决定价格。
- 它在你获取报价时就固定下来。 中继方会把价格签入它给你钱包的报价中,因此在构建你的交易期间价格不会变化。
- 报价的有效期很短。 报价只在很短的时间内有效。如果它在使用前过期,钱包会告诉你未发送任何内容,你直接重试即可。
在请求报价之前,你的钱包也会基于同一个资金池自行估算一次。这个估算值加上一小部分余量,就是你批准的“最多”上限。
DIESEL 去了哪里
你的 DIESEL 会被支付到链上的一个金库合约中,它的职责就是保存收到的 DIESEL,直到协议将其取出。它是集中存放的,而不是付给某一个中继方,因为这笔还款是欠整个中继方网络的。
把这些 DIESEL 换回 BTC 的设计是:之后在协议自己的交易中单独进行,用来补充中继方投入的 BTC。这些都不属于你的交易。
中继方是什么
中继方是 SUBFROST 手续费网络中的服务,它们持有一些小额的 BTC 币,随时准备为像你这样的交易出资。对于每一个报价,中继方会把其中一枚币放进你的交易,在同一笔交易中拿回它的找零,并通过金库以 DIESEL 获得偿还。中继方从不持有你的币。
当网络繁忙或当时没有可用容量时,钱包会告诉你,你可以照常用 BTC 支付手续费。
面向开发者
如果你在 Bitcoin 上构建钱包或应用,并希望让你的用户用 DIESEL 支付手续费,我们提供集成支持。请联系 SUBFROST 团队进一步沟通。
接下来可以看看
- 用 DIESEL 支付手续费:如何在钱包中使用它。
- Alkanes 元协议:DIESEL 付款是如何承载在一笔 Bitcoin 交易中的。