同时发布两项升级:BSV节点 v1.0.8(测试版)和mAPI v1.3.0(测试版)

By Press Release Published: 5月 11, 2021
2-upgrades-released-simultaneously-BSV-v1.0.8-(Beta)-&-mAPI-v1.3.0-(Beta)

Bitcoin SV团队同时发布2项升级,他们是:

  1. Bitcoin SV节点软件v1.0.8测试版本
  2. mAPI v1.3.0测试版本

Bitcoin SV节点软件发布升级版本v1.0.8测试

Bitcoin SV节点软件v1.0.8(测试版)是在v1.0.7.1基础之上的推荐升级版本;这个全新的软件版本支持向mAPI或自定义应用这类远程终端报告“双花企图”。本次升级还包括多项性能提升,特别是在处理交易间复杂的依赖关系图时的性能提升。

技术细节列示如下:

  1. 节点开始支持交易的“双花”通知;当发现某个交易输入双花时,会向指定端点发送HTTP通知。(请参考https://github.com/bitcoin-sv-specs/protocol了解更多细节)
  2. 新的getorphaninfo RPC接口。
  3. 新的verifyScript RPC接口。
  4. 新的getmerkleproof2 RPC接口,此为技术标准委员会(TSC)公布的merkle证明标准。
  5. getsettings RPC接口的输出新增maxstackmemoryusageconsensus参数。
  6. 即使已知了某笔交易,sendrawtransaction和sendrawtransactions RPC 接口也可以和dontCheckFees一起使用。
  7. 修改sendrawtransaction和sendrawtransactions RPC接口的返回,可以选择是否包含未确认的交易祖先列表。
  8. 新的配置参数dustlimitfactor,可以用来定义“粉尘交易”。*
  9. “粉尘”回收(dust return)交易。*
  10. 调整了验证异步任务的默认超时时间,以更好的处理链和长图。
  11. 改变未确认交易的祖先数算法,使用祖先高度而不是祖先数量。
  12. 提升孤交易池内的交易释放速率。
  13. 提升cs_main处理时的效率使节点性能更优。
  14. 改进链的验证。
  15. 交易在它内存池祖先(in-mempool ancestor)链的高度大于或等于10000时,不会被接受。之前这个限额是1000笔交易。
  16. 配置参数maxorphantxsize的默认值改为1GB。
  17. 配置参数maxcollectedoutpoints不再使用,已被移除。
  18. 重置了STN。

*补充说明:

8. 新的命令行选项-dustlimitfactor,可以用来定义粉尘交易

截至目前,交易输出的金额和(花费这个输出)对应的手续费的最小比是3/1。当不满足该条件时,交易会被当做“粉尘”拒绝。

现在可以用新的配置选项“-dustlimitfactor”来设置一个百分比,其默认值仍为300%,但可设置成300%至0%之间的任何值。

如果-dustlimitfactor的值设为0,则任何交易输出都不会被认“粉尘”。

计算“粉尘”阈值的公式如下(整数算术运算):

s = 序列化后的交易输出的大小

d = dustlimitfactor,介于300和0之间的百分比值,默认值300

r = dustrelayfee,取-minrelaytxfee的默认值,从v1.0.8版本开始这个值是250

m = 148,可花费的交易输入的最小字节长度

d * (r * (s + m)/1000)) / 100

注意到由于dustlimitfactor表示的是一个百分比,所以计算时要除以100。

例如:对于含有一个34字节交易输出的典型交易,上述公式计算出的阈值是135聪。

d = 300

s = 34

r = 250

阈值 = (300 * (250 * (34 + 148)/1000)) / 100 = 135

注意到如果使用浮点数算术运算,上述公式计算出的阈值将是136.5聪。

因此在使用默认设置的1.0.8版本中,一个典型的交易输出的金额需要至少是135聪才能不被当做“粉尘”。请注意,由于精度舍入(rounding)的存在,如果dustlimitfactordustrelayfee的值设置的非常低,则计算出的“粉尘”阈值可能为0。

9. “粉尘”回收(dust return)交易。

为了接受一种全新的交易类型——“粉尘”回收交易,现在的交易验证规则被适当放宽。这种新的交易类型允许将“粉尘”通过交易费的形式捐赠给矿工来抵御钱包“粉尘攻击”。这对网络而言更为经济,因为它可以通过减少实际不可花费的交易输出来清理钱包和UTXO数据库。 同时完全消除“粉尘攻击”的动机。

一笔交易只有在满足下列所有条件时才会被认为是“粉尘”回收交易

  • 交易只有一个值为0的交易输出(金额为0)
  • scriptPubKey形如:

OP_FALSE OP_RETURN n ‘dust’

其中,n是协议标识的长度,例如字符串‘dust’的长度。

  • 所有的交易输入都是标准形式或设置了下列配置参数:

-acceptnonstdconsolidationinput=1(默认值为0)

  • 必须接受非标交易,例如必须设置下列配置参数:

acceptnonstdtx=1(默认值为1)

请注意,“粉尘”回收交易跟合并交易共享两个配置参数:

  • acceptnonstdconsolidationinput(默认值为false)
  • minconsolidationfactor(默认为非零值。设置为0意味着禁用合并交易和“粉尘”回收交易)

“粉尘”回收交易示例:

<!-- wp:paragraph -->
<p>{<br>‘txid’: ‘7a234eaa8615858e7b59cc46820fb71940fa9b1fd2cbac6c4ca3efc33767c6dc’,<br>‘hash’: ‘7a234eaa8615858e7b59cc46820fb71940fa9b1fd2cbac6c4ca3efc33767c6dc’,<br>‘version’: 1,<br>‘size’: 226,<br>‘locktime’: 0,<br>‘vin’: [<br>{<br>‘txid’: ‘471e1070d48faf20b599b2291c5c7550f9152d6e3549987d85dae82f2e96e93f’,<br>‘vout’: 0,<br>‘scriptSig’: {<br>‘asm’: ‘61616161616161616161616161616161616161616161616161616161616161616161616161<br>616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161<br>6161616161616161616161616161616161616161616161616161616161616161616161616161616161<br>61616161616161616161616161616161616161616161c2’,<br>‘hex’:<br>‘4c95616161616161616161616161616161616161616161616161616161616161616161616<br>16161616161616161616161616161616161616161616161616161616161616161616161<br>61616161616161616161616161<br>61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616<br>16161616161616161616161616161616161c2’<br>},<br>‘sequence’: 0<br>}<br>],<br>‘vout’: [<br>{<br>‘value’: Decimal(‘0.00’),<br>‘n’: 0,<br>‘scriptPubKey’: {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>‘asm’: ‘0 OP_RETURN 1953723748’,<br>‘hex’: ‘006a0464757374’,<br>‘type’: ‘nulldata’<br>}<br>}<br>],<br>‘blockhash’: ‘380fe8631752b75ee3ce027bdf80e22f3445f4b620a9585b369fb9a0c3f2677e’,<br>‘confirmations’: 1,<br>‘time’: 1620224004,<br>‘blocktime’: 1620224004,<br>‘blockheight’: 208,<br>}</p>
<!-- /wp:paragraph -->

请在此下载可执行文件和源代码:https://download.bitcoinsv.io/bitcoinsv/

如有问题,您可以通过邮件[email protected]或Telegram https://t.me/bitcoinsvsupport联系我们。

mAPI软件发布升级版本v1.3.0(测试版)

mAPI软件v1.3.0(测试版)是在v1.2.0基础之上的推荐升级版本;mAPI的此次升级开始支持从远程节点接收双花通知。

作为对使用ZMQ订阅直连mAPI的本地节点的补充,任何BSV网络中发现了交易双花并设置了通知地址的远程节点,现在都可以通过HTTP回调向mAPI发送通知。请参考https://github.com/bitcoin-sv-specs/protocol了解更多细节

双花通知还提升了对未确认交易祖先的双花检测能力。当商户的交易被双花,或商户交易的未确认祖先被双花时,mAPI都会通知商户。

Merkle 证明(Merkle Proof)通知现在可以使用TSC(技术标准委员会)支持的标准格式,它会在回调通知里返回十六进制编码的区块头数据。

本次升级的改进还包括:支持在回调URL中设置回调原因参数,支持部署自定义的数据库服务器,以及支持为方便集成而设置额外的配置选项。

技术细节列示如下:

  • 对未确认交易祖先的双花通知。
  • 支持回调端点从远程节点接收双花通知。
  • 支持TSC Merkle证明格式。
  • 在回调URL中支持回调原因代码。
  • 支持部署自定义的数据库服务器。
  • 可设置禁用费率检查(fee check)功能。
  • 在使用mAPI注册节点时提供ZMQ端点选项。
  • 为了方便开发,支持以HTTP方式运行mAPI。

请在此下载可执行文件和源代码:https://github.com/bitcoin-sv-specs/brfc-merchantapi

如有问题,您可以通过邮件[email protected]或Telegram https://t.me/bitcoinsvsupport联系我们。 感谢您对Bitcoin SV的持续支持!