在regtest上设置收费率,或者快速生成完整块

我正在为一个闪电钱包设置一些自动测试。我的测试的核心是一个以regtest模式运行的bitcoind实例。我需要能够设置费用率-由estimatesmartfee报告的费用率和交易需要匹配才能得到确认的费用率。
到目前为止,我能看到的唯一方法是挖掘大量的块,这些块充满了具有所需费率的事务。我是通过在一个循环中反复调用sendtoaddress(通过bitcoin cli)将少量的钱发送到空中来实现的。这是令人痛苦的缓慢-它涉及到产生约2500笔交易之前,比特币捕捉到漂移,这应该是新报告的费率。每次测试我都要这么做,有时每次测试都要做很多次,所以我的CI要花很多时间。
我想知道有没有办法避免这样做。是否有某种方法可以覆盖bitcoind的估计费率,并让它拒绝包括在开采区块时支付低于该费率的交易?如果没有,有没有比我现在做的更快的方法用事务填充块呢?
比特币
比特币cli
正则表达式
测试
费用估算
分享
改进这个问题
跟随
1月6日12:26问

12111青铜徽章
添加评论
2个答案
2
你可以用一个包装器来模拟触角。
假设您正在用Python编写测试。您可以为bitcoind接口设置Python-RPC包装器,还可以选择为特定测试启用mock(而不是调用bitcoind的estimatesmartfee,它将返回一个预设值)。
C-lightning的功能测试就是这样做的。一个很好的例子是这个测试,它模拟比特币崩溃来测试lightningd是否支持比特币后端的虚假故障。
另请参见此处的feerate mock示例。
分享
改进这个答案
跟随
1月6日12:48回答
达罗西奥
307511金徽章55银徽章2323铜徽章
添加评论
1
我创建了一个bash脚本,它没有@darosior引用的Python脚本复杂,但受它的影响很大。它不断创建10-30个事务集,直到estimatesmartfee返回费率。
#!/usr/bin/env bash文件
设置-eo管道故障
cont=真
smartfee=$(比特币cli估算smartfee 6)
如果[[“$smartfee”==*“\”feerate\“:”*]];然后
cont=错误
金融机构
尽管$cont

计数器B=0
范围=$($随机%11+20))
而[$counterb-lt$范围]

幂=$($随机%29))
randfee=`echo“标度=8;0.00001*(1.1892^$功率)“| bc`
newaddress=$(比特币cli getnewaddress)
rawtx=$(比特币cli createrawtransation“[]”“[{\”$newaddress\”:0.005}]”)
fundedtx=$(比特币cli fundrawtransaction“$rawtx”“{\”feeRate\“:\”0$randfee\“}”| jq-r“.hex”)
signedtx=$(比特币cli signrawtransactionwithwallet“$fundedtx”| jq-r“.hex”)
sentx=$(比特币cli sendrawtransation“$signedtx”)
(++counterb))
echo“在此块中创建$counterb事务”
完成
比特币cli generatetoaddress 1“mp76nrashrcyly3a8cac5hufeas11yhbh”
smartfee=$(比特币cli估算smartfee 6)
如果[[“$smartfee”==*“\”feerate\“:”*]];然后
cont=错误
金融机构
完成
比特币cli generatetoaddress 6“mp76nrashrcyly3a8cac5hufeas11yhbh”
分享
改进这个答案
跟随

时光素材-香车美女  (599)blockchainBTC比特币区块链www.qkl91.com

发表评论

邮箱地址不会被公开。 必填项已用*标注