BitcoinJ не запускает загрузку, что может быть причиной этого?
Я использую библиотеку BitcoinJ, чтобы написать биткойн-кошелек для Android, и в настоящее время я пытаюсь использовать WalletAppKit, чтобы все настроить. Из документации я обнаружил, что для правильной работы кошелька необходимо сначала загрузить заголовочные файлы (так как это кошелек SPV). В моей деятельности у меня есть следующий код.
val walletAppKit = object : WalletAppKit(TestNet3Params.get(), context!!.filesDir, "BTCWallet") {
override fun onSetupCompleted() {
super.onSetupCompleted()
Log.d(Globals.LOG_TAG, "Setup complete")
wallet().addCoinsReceivedEventListener { wallet, tx, prevBalance, newBalance ->
Log.d(Globals.LOG_TAG, "New balance is" + newBalance.toFriendlyString())
}
}
}
walletAppKit.setDownloadListener(object: DownloadProgressTracker() {
override fun progress(pct: Double, blocksSoFar: Int, date: Date?) {
super.progress(pct, blocksSoFar, date)
Log.d(Globals.LOG_TAG, "Downloaded: " + blocksSoFar.toString() + " so far")
}
override fun doneDownload() {
super.doneDownload()
Log.d(Globals.LOG_TAG, "Download complete!")
}
override fun startDownload(blocks: Int) {
super.startDownload(blocks)
Log.d(Globals.LOG_TAG, "Download starting!")
}
})
walletAppKit.setBlockingStartup(false)
walletAppKit.startAsync()
Когда приложение запускается, я вижу журнал "Установка завершена" в logcat, но я никогда не вижу никаких других журналов, таких как "Загрузка начинается" или "Загрузка завершена!" я пропускаю вызов функции, чтобы начать загрузку, так как я думал, что она должна начаться только при вызове wallepAppKit.startAsync()
но это может быть не так.
В журнале я все время нахожу следующую ошибку, которая может быть связана, но не вызывает сбой
2019-02-19 21:47:47.453 24575-24808/com.bitcoinwallet W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'org.bitcoinj.core.Block org.bitcoinj.core.StoredBlock.getHeader()' on a null object reference
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.params.TestNet3Params.checkDifficultyTransitions(TestNet3Params.java:108)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.core.AbstractBlockChain.add(AbstractBlockChain.java:488)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.core.AbstractBlockChain.add(AbstractBlockChain.java:352)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.core.Peer.processHeaders(Peer.java:703)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.core.Peer.processMessage(Peer.java:504)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.core.PeerSocketHandler.receiveBytes(PeerSocketHandler.java:144)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.net.ConnectionHandler.handleKey(ConnectionHandler.java:223)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.net.NioClientManager.handleKey(NioClientManager.java:86)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.net.NioClientManager.run(NioClientManager.java:122)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at com.google.common.util.concurrent.AbstractExecutionThreadService$1$2.run(AbstractExecutionThreadService.java:60)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at com.google.common.util.concurrent.Callables$3.run(Callables.java:95)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at org.bitcoinj.utils.ContextPropagatingThreadFactory$1.run(ContextPropagatingThreadFactory.java:49)
2019-02-19 21:47:47.454 24575-24808/com.bitcoinwallet W/System.err: at java.lang.Thread.run(Thread.java:764)