MetaSV 答疑-余额和可花费金额

Thinking in BSV 专栏收录该内容
16 篇文章 0 订阅

MetaSV 答疑-余额和可花费金额

今天MetaSV的友商小聪游戏(https://satoplay.com/)针对MetaSV提供的地址余额查询接口产生了疑问:

https://developer.metasv.com/#/address/get_address__address__balance

一个地址有1个2万satoshi的已确认utxo,转出1万utxo之后,已确认的utxo被花掉,未确认的utxo还剩9774(包括手续费),因此已确认余额为0,未确认余额为9774才对,但是MetaSV的balance接口返回了如下的结果:

{
  "address": "1QGKTgDNqnrAjvWTRpyueXeDujbdTbSP9u",
  "confirmed": 20000,
  "unconfirmed": -10226
}

因此产生了疑问,为什么余额可以为负?为什么被花费掉的已确认utxo还被计算到已确认余额中?这个问题比较绕,需要好好进行解释。下面对这个问题进行解释:

概念

要进行解释必须要定义概念,我们定义如下四个概念:

  1. 已确认余额:根据所有已确认交易计算出来的余额
  2. 未确认余额:根据所有未确认交易计算出来的余额
  3. 已确认可花费金额:加总所有已确认utxo(未被任何交易花费utxo)
  4. 未确认可花费金额:加总所有未确认utxo(未被任何交易花费的utxo)

已确认余额(ConfirmedBalance)

已确认余额指***只考虑***所有已确认的交易所计算出来的地址剩余金额。因为已确认的区块链全网唯一,因此这个值各家浏览器算出来是完全一致的。这里完全忽视任何未确认交易所产生的任何影响,目前主流的已确认余额都以这种计算方式来显示出来。

未确认余额(UnconfirmedBalance)

未确认余额是***只考虑所有未确认交易***所计算出来的余额,如果未确认交易花费了已确认的utxo,这个余额可能为负。未确认余额涵盖了未确认交易的全部影响,包括未确认的收款,未确认花费已确认,未确认花费未确认等等情形。因为各个浏览器或者节点接收未确认交易并不一定相同(顺序可能不同,听到的交易个数可能也不同),或者各个浏览器在未确认交易的处理上的算法不同(回滚和重组逻辑,未确认utxo超时处理等等),导致未确认余额各个浏览器的显示金额可能是不同的。

已确认可花费金额(TotalConfirmedUtxo)

加总所有已确认可花费的utxo。

计算方法是从MetaSV接口拉取全部Utxo,将已确认的utxo加总起来。

这里有一个很大的区别,因为已确认Utxo被未确认交易花费之后,判定该Utxo不可继续花费,因此在使用Utxo接口选取时,不会选取到此utxo,因此在求和的时候不会被计算进去。

因为各个浏览器对于未确认交易无法达成一致,因此对于被未确认交易花费的已确认utxo也无法达成一致,所以这个金额各个浏览器的显示是有可能不一致的。

另外此金额是utxo的总和,因此不可能为负。

未确认可花费金额(TotalUnconfirmedUtxo)

加总所有未确认可花费的utxo。

计算方法是从MetaSV接口拉取全部Utxo,将未确认的utxo加总起来。

同理由于各家浏览器对于未确认交易无法达成一致,因此对于这个金额,各个浏览器也是不一致的。

此金额同样不可能为负。

总结

显然,这是对余额这一个整体概念的不同表达角度:

余额=已确认余额+未确认余额=9774

同时

余额=已确认可花费金额+未确认可花费金额=9774

小聪的需求是:给用户展示所有可以提款的金额,和因为未确认而不能提款的金额。因此适用上面的“已确认可花费金额”和“未确认可花费金额”这两个概念,不适用balance计算接口。

欢迎各个开发者使用MetaSV,并随时与我们沟通交流:https://metasv.com/, 也感谢小聪游戏帮助我们发现了这个可能让开发者困惑的点。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

区块链旺仔

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值