Bitcoinj fails with NegativeArraySizeException when iteration over the blocks
Bitcoinj fails with NegativeArraySizeException when iteration over the blocks
I'm iterating over the blocks of some block files generated by bitcoin-core. The following code works without any problem for the first 900 block files.
Context.getOrCreate(MainNetParams.get());
BlockFileLoader blockFileLoader = new BlockFileLoader(
MainNetParams.get(),
Arrays.asList(blockFile.toFile())
);
while(blockFileLoader.hasNext()){
System.out.println(blockFileLoader.next().getHash());
}
But then it fails at a specific block file with this Exception:
Exception in thread "main" java.lang.NegativeArraySizeException
at org.bitcoinj.core.Message.readBytes(Message.java:334)
at org.bitcoinj.core.TransactionOutput.parse(TransactionOutput.java:163)
at org.bitcoinj.core.Message.<init>(Message.java:96)
at org.bitcoinj.core.Message.<init>(Message.java:128)
at org.bitcoinj.core.ChildMessage.<init>(ChildMessage.java:57)
at org.bitcoinj.core.TransactionOutput.<init>(TransactionOutput.java:79)
at org.bitcoinj.core.Transaction.parse(Transaction.java:575)
at org.bitcoinj.core.Message.<init>(Message.java:96)
at org.bitcoinj.core.Message.<init>(Message.java:128)
at org.bitcoinj.core.ChildMessage.<init>(ChildMessage.java:57)
at org.bitcoinj.core.Transaction.<init>(Transaction.java:232)
at org.bitcoinj.core.Block.parseTransactions(Block.java:242)
at org.bitcoinj.core.Block.parse(Block.java:266)
at org.bitcoinj.core.Message.<init>(Message.java:96)
at org.bitcoinj.core.Message.<init>(Message.java:128)
at org.bitcoinj.core.Block.<init>(Block.java:162)
at org.bitcoinj.core.BitcoinSerializer.makeBlock(BitcoinSerializer.java:270)
at org.bitcoinj.core.MessageSerializer.makeBlock(MessageSerializer.java:72)
at org.bitcoinj.utils.BlockFileLoader.loadNextBlock(BlockFileLoader.java:154)
at org.bitcoinj.utils.BlockFileLoader.hasNext(BlockFileLoader.java:87)
at java.util.Iterator.forEachRemaining(Iterator.java:115)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.xxxxx.xxxxx.xxxxx.Importer.runImport(Importer.java:45)
at com.xxxxx.xxxxx.Main.main(Main.java:12)
Why is this happening? Could it be, that bitcoinj is not 100% comaptible with the block files, generated by bitcoin-core?
http://ift.tt/2kjSG69
Comments
Post a Comment