ethereum事务Observable BigInteger超出int范围

时间:2017-10-04 11:33:54

标签: spring spring-boot ethereum web3 web3-java

我从https://github.com/web3j/web3j-spring-boot-starter

添加了web3j的依赖关系

然后创建了一个服务并写了:

@Service
public class Web3jServiceImpl {

    @Autowired
    private Web3j web3j;

    public void getBlockNumber() {
        logger.debug("get block number method");
        web3j.blockObservable(false).subscribe(block -> {
            logger.debug("block number: {}", block.getBlock().getNumber() + " has just been created");
        }, Throwable::printStackTrace);
    }

  public void getTxInfo(){
    web3j.transactionObservable().subscribe(tx -> {
            logger.debug("transaction info: {}",tx);
   }, Throwable::printStackTrace);
 }
}

我在以太坊的私有区块链中创建任何区块时获得区块编号,但在事务可观察中获得BigInteger out of int range例外。

日志是:

com.fasterxml.jackson.databind.JsonMappingException: BigInteger out of int range
 at [Source: org.apache.http.conn.EofSensorInputStream@6f12b9e; line: 1, column: 1770] (through reference chain: org.web3j.protocol.core.methods.response.EthBlock$TransactionObject["v"]) (through reference chain: org.web3j.protocol.core.methods.response.EthBlock["result"]->org.web3j.protocol.core.methods.response.EthBlock$Block["transactions"])
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:388)
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:348)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1600)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:278)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
    at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1583)
    at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:964)
    at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:981)
    at org.web3j.protocol.core.methods.response.EthBlock$ResponseDeserialiser.deserialize(EthBlock.java:562)
    at org.web3j.protocol.core.methods.response.EthBlock$ResponseDeserialiser.deserialize(EthBlock.java:553)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:504)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:104)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2924)
    at org.web3j.protocol.http.HttpService.lambda$getResponseHandler$20(HttpService.java:89)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:223)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:140)
    at org.web3j.protocol.http.HttpService.send(HttpService.java:67)
    at org.web3j.protocol.core.Request.send(Request.java:69)
    at org.web3j.protocol.core.Request.lambda$observable$8(Request.java:80)
    at rx.Observable.unsafeSubscribe(Observable.java:10142)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:248)
    at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:148)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
    at org.web3j.protocol.core.filters.BlockFilter.process(BlockFilter.java:32)
    at org.web3j.protocol.core.filters.Filter.pollFilter(Filter.java:82)
    at org.web3j.protocol.core.filters.Filter.lambda$run$9(Filter.java:48)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.fasterxml.jackson.databind.RuntimeJsonMappingException: BigInteger out of int range
 at [Source: org.apache.http.conn.EofSensorInputStream@6f12b9e; line: 1, column: 1770] (through reference chain: org.web3j.protocol.core.methods.response.EthBlock$TransactionObject["v"])
    at com.fasterxml.jackson.databind.MappingIterator.next(MappingIterator.java:194)
    at org.web3j.protocol.core.methods.response.EthBlock$ResultTransactionDeserialiser.deserialize(EthBlock.java:537)
    at org.web3j.protocol.core.methods.response.EthBlock$ResultTransactionDeserialiser.deserialize(EthBlock.java:520)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:504)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:104)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
    ... 33 more
Caused by: com.fasterxml.jackson.databind.JsonMappingException: BigInteger out of int range
 at [Source: org.apache.http.conn.EofSensorInputStream@6f12b9e; line: 1, column: 1770] (through reference chain: org.web3j.protocol.core.methods.response.EthBlock$TransactionObject["v"])
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:277)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:551)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:532)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:108)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
    at com.fasterxml.jackson.databind.MappingIterator.nextValue(MappingIterator.java:277)
    at com.fasterxml.jackson.databind.MappingIterator.next(MappingIterator.java:192)
    ... 38 more
Caused by: java.lang.ArithmeticException: BigInteger out of int range
    at java.math.BigInteger.intValueExact(BigInteger.java:4550)
    at org.web3j.protocol.core.methods.response.Transaction.setV(Transaction.java:220)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:106)
    ... 42 more

0 个答案:

没有答案