当前位置: 首页 > 知识库问答 >
问题:

无法下载以太坊事件与web3j

怀刚毅
2023-03-14

当我尝试下载事件从Block hain:

<!-- language: lang-js -->
    Web3j web3 = Web3j.build(new HttpService("https://rinkeby.infura.io/naqTNN4B2QavbM4vZI3q"));
    Credentials credentials =Credentials.create("94b5486c4657faf6d3834c2efd70d90a3cc746db101de32b997206e0ddb5234e");
    TenderFactory factory = TenderFactory.load("0x16606f347cf1b36c08690b150b96dba2031d6729", web3, credentials, GAS_PRICE, GAS_LIMIT);
    final Event event = new Event("NewContract",
    Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {
    }),
    Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {
    }));
    EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
    DefaultBlockParameterName.EARLIEST, factory.getContractAddress());
    filter.addSingleTopic(EventEncoder.encode(event));
    Toolkit.getDefaultToolkit().beep();
    web3.ethLogObservable(filter).subscribe(log -> {
        LOG.info("log.getTopics=" + log.getTopics());
    });

我得到了豁免:

    17:43:05.719 [main] INFO  r.s.tenderchain.Download - contractAddress = 0x16606f347cf1b36c08690b150b96dba2031d6729
    17:43:07.097 [main] DEBUG org.web3j.protocol.http.HttpService - --> POST https://rinkeby.infura.io/naqTNN4B2QavbM4vZI3q http/1.1
    17:43:07.098 [main] DEBUG org.web3j.protocol.http.HttpService - Content-Type: application/json; charset=utf-8
    17:43:07.098 [main] DEBUG org.web3j.protocol.http.HttpService - Content-Length: 243
    17:43:07.102 [main] DEBUG org.web3j.protocol.http.HttpService -
            17:43:07.103 [main] DEBUG org.web3j.protocol.http.HttpService - {"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0xa291e5980c03d23637198189ac50f67cecef9d808328c0420a23fa32fc16084a"],"fromBlock":"earliest","toBlock":"earliest","address":["0x16606f347cf1b36c08690b150b96dba2031d6729"]}],"id":0}
    17:43:07.104 [main] DEBUG org.web3j.protocol.http.HttpService - --> END POST (243-byte body)
    17:43:08.688 [main] DEBUG org.web3j.protocol.http.HttpService - <-- 405 Method Not Allowed https://rinkeby.infura.io/naqTNN4B2QavbM4vZI3q (1582ms)
    17:43:08.689 [main] DEBUG org.web3j.protocol.http.HttpService - Date: Wed, 20 Dec 2017 14:43:08 GMT
    17:43:08.694 [main] DEBUG org.web3j.protocol.http.HttpService - Content-Type: text/plain; charset=utf-8
    17:43:08.694 [main] DEBUG org.web3j.protocol.http.HttpService - Content-Length: 0
    17:43:08.694 [main] DEBUG org.web3j.protocol.http.HttpService - Connection: keep-alive
    17:43:08.694 [main] DEBUG org.web3j.protocol.http.HttpService - Server: nginx/1.10.3 (Ubuntu)
            17:43:08.695 [main] DEBUG org.web3j.protocol.http.HttpService - Vary: Origin
    17:43:08.698 [main] DEBUG org.web3j.protocol.http.HttpService - <-- END HTTP (0-byte body)
    Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@437e951d
    at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386)
    at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383)
    at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44)
    at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:153)
    at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:115)
    at rx.Observable.subscribe(Observable.java:10249)
    at rx.Observable.subscribe(Observable.java:10205)
    at rx.Observable.subscribe(Observable.java:10010)
    at ru.simplex_software.tenderchain.Download.main(Download.java:82)
    Caused by: org.web3j.protocol.exceptions.ClientConnectionException: Invalid response received: okhttp3.internal.http.RealResponseBody@437e951d
    at org.web3j.protocol.http.HttpService.performIO(HttpService.java:116)
    at org.web3j.protocol.Service.send(Service.java:31)
    at org.web3j.protocol.core.Request.send(Request.java:71)
    at org.web3j.protocol.core.filters.LogFilter.sendRequest(LogFilter.java:31)
    at org.web3j.protocol.core.filters.Filter.run(Filter.java:40)

.... 组织。web3j。协议rx。JsonRpc2_0Rx。lambda$ethLogObservable$10(JsonRpc2_0Rx.java:65)在rx。看得见。订阅(Observable.java:10238)。。。还有3个

如何修复此问题并下载NewContract事件?

共有1个答案

邴越彬
2023-03-14

infura现在支持mainnet、ropsten和rinkeby上的websocketendpoint,允许您收听事件。然而,web3j直到现在还不支持websockets,所以在连接到infura时不能在web3中使用过滤器。

 类似资料:
  • 以太坊(Ethereum)是一个支持智能合约的区块链平台,它与比特币最大的不同是,以太坊通过一个虚拟机(EVM)可以运行智能合约。 以太坊是Vitalik Buterin(维塔利克·布特林,人称V神)在2013年提出的概念,Vitalik最早参与了比特币社区的开发,并希望比特币把功能受限的脚本扩展成图灵完全的编程环境,但没有得到比特币开发社区的认同,于是他决定另起炉灶,打造一个新的区块链平台,目标

  • 我有一个关于以太坊智能合约版本控制的问题。关于如何将逻辑和数据解耦,如何在引用其他契约时使用接口,如何使用通用键值存储来存储数据,以及如何以强类型方式通过库函数检索数据,已经写了很多文章。 从旧版本的智能合约中查询事务和事件日志怎么样?事务和发出的事件不能迁移。它们是不可变的。也许您需要在客户端应用程序中跟踪它们的历史记录。事件可以在不同的合约版本中添加、删除或更改其签名。您如何处理对多个版本的合

  • 以太坊测试链 针对Ethereum以太坊有许多专用测试网络或者叫测试链,他们由各种客户端支持。 1.Rinkeby:只支持geth客户端。 2.Kovan:只支持Parity客户端。 3.Ropsten:支持geth和Parity客户端。 对于开发,建议你使用Rinkeby或KoVan测试链。这是因为他们使用的工作量证明POA共识机制,确保交易和块能够一致并及时的创建。Ropsten测试链,虽然最

  • Frontier是以太坊(Ethereum)网络第一个发布版, 当进入此未知领域,希望你可以测试和探索它。它有很多的危险,也会存在没有被发现的陷阱,也可能会有肆虐的海盗等待攻击你,但是也蕴含着很多的机会 什么是以太坊 和其他先进系统一样,以太坊对不同的人意味着不同的东西,在阅读本节时,有些地方不会引起你的共鸣或者让你感觉没有意思。没关系,直接跳到下一章节,希望可以给你更多启发。假如你读到本章节的末

  • Web3j 是一个轻量级、高度模块化、响应式、类型安全的 Java 和 Android 类库提供丰富 API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。

  • 签署以太坊交易 要使脱机签名交易得到签署,需要设定一个RawTransaction类型。RawTransaction类似于前面提到的Transaction类型,但是它不需要通过具体的账号地址来请求,因为可以从签名中推断出来。 为了创建和签署原生交易,交易的顺序如下: 1.确定交易发起者帐户的下一个可用随机数nonce 2.创建RawTransaction对象 3.使用递归长度前缀编码(RLP即Re