版权声明:本文为博主原创文章,转载请写明出处。 https://cloud.tencent.com/developer/article/1455159
Keypool异常
在使用比特币系列(BTC、USDT、LTC)的钱包时,调用getnewaddress方法时会出现以下异常结果:
代码语言:javascript复制error: {"code":-12,"message":"Error: Keypool ran out, please call keypoolrefill first"}
原因分析
以BTC为例,在程序启动时,如果未找到wallet.dat文件,则默认会生成100个私钥到可以pool并形成wallet.dat文件。如果你的应用场景为交易所或有大量交易,那么这100个私钥会很快用完。当需要101个私钥的时候,就会抛出上面的异常。
解决方案
在bitcoin.conf文件中配置keypool=1000或通过参数-keypool=1000来设置。然后进入控制台,执行keypoolrefill命令。
另外一种方式,直接执行bitcoin-cli(linux操作系统)命令来执行keypool的扩充:
代码语言:javascript复制bitcoin-cli keypoolrefill 101
如果钱包设置了加密,执行此操作之前需先将钱包解密。