问题标签 [web3-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
163 浏览

java - BigInteger 抛出 numberFormatException

编辑:用下面的代码解决了这个问题:

我有一个长字符串,我需要将其分配为 BigInteger 并将其传递给 Web3j 库的另一个方法。但是,我一直收到数字格式异常。对此有什么帮助吗?

下面是抛出异常的方法:

这是例外:

java.lang.NumberFormatException:对于输入字符串:“0x1800000000001289000000000000000000000000000000000000”在 java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.base/java.lang.Long.parseLong(Long.java: ) 在 java.base/java.lang.Long.parseLong(Long.java:817)

0 投票
2 回答
1018 浏览

ethereum - Web3j 使用 Ganache 获取堆栈下溢错误

我遇到错误“处理事务请求时出错:处理事务时出现 VM 异常:堆栈下溢”,基本上是任何合同。我正在使用 Ganache v2.1.2 和 Web3j 4.5.15。Ganache CLI v6.9.1(ganache-core:2.10.2)也是如此。我可以毫无问题地使用 Remix IDE 和 Metamask 插件部署合同。

Java 代码:

简单的水龙头合约:

0 投票
1 回答
448 浏览

java - Java 120 char ECDSA 公钥到 130 char 或 Ethereum 地址

外部系统为我提供了一个 120 字符的 ECDSA 生成的 X509 公钥。我现在想通过将其转换为地址来在以太坊中使用它。

(不是真正的密钥,而是内容示例(120 个字符)) MFYwEAYHKoZIzj0CAQYFK4EE123456789n9DSxZh3wfq0BIL5LDF5B54e07bxFiKc89K/GaKj4qrGC/Mb/KnakQBrN4khMQHLnxm7TjaxXQPxtJMV5b+A==

我看不到使用 web3j 执行此操作的简单方法,也许还有另一种方法?我认为,看看测试,org.web3j.crypto.Keys.getAddress(String)预计会有 130 个字符的十六进制版本。

如何将120 个字符转换为130 个字符的十六进制表示,以允许我调用 getAddress 方法,或者是否有将 120 个字符的 pub 密钥转换为以太坊地址的直接方法?

0 投票
1 回答
1095 浏览

java - 订阅 ERC20 转账活动

我一直在尝试观察主网上发生的特定合约的交易,特别是 Tether (USDT)。我能够下载合同并使用 Web3 (Java) 编译可靠代码。但是我无法订阅传输事件。它只是超时..有什么我想念的吗?我正在使用下面的代码,但超时。

我看不出这不起作用的原因,我通过 wss://mainnet.infura.io/ws/v3/<my_identifier_here> 通过 Infura 连接

任何帮助将不胜感激。

0 投票
1 回答
773 浏览

java - Web3j 读取单个事务的所有发出的事件

我有一个智能合约方法“transferFrom”,它最后会发出一个事件“EventTransf”。从使用 web3j 的 java 程序中,我调用了这样的方法并获得了收据。

现在,我将从这个方法调用中读取所有发出的事件。我对 web3j 过滤器有疑问,但我只对此调用中发出的事件感兴趣。该代码也应与 infura 一起使用。

0 投票
1 回答
372 浏览

android - 如何在 Android 中使用 web3j 使用现有的 Contract

我第一次在 Android 中使用 BlockChain(使用 web3j),我有现有的智能合约的价值,如 BINARY 和 ABI 详细信息,如下所示

现在根据文档“如果我已经有了合同的二进制文件和 ABI,那么我不需要使用 web3j 来生成它。只需获取这些值并创建类

我已经有了这些值,但我不知道,如何使用?

就像我只需要为前创建课程一样。

现在我如何使用这个类从合同中读取或写入值?

0 投票
0 回答
1344 浏览

ethereum - 如何使用 web3j 解码 ABI 的“string []”返回类型的 outputParameters

我的智能合约有一个功能balanceOf,它的 ABI 如下:

我使用web3j来调用这个函数,代码片段如下:

调用成功但是输出的ABI解码结果((DynamicArray)results.get(0)).getValue().get(0)空字符串“”,所以我怀疑是不是new Function特别是第三个参数有什么问题outputParameters,但是我已经非常仔细地通过了所有web3j对abi的单元测试并且没有没有发现我的代码有问题。

相反,balanceOf可以从 remix 中调用函数,它运行良好并返回了正确的值。 在此处输入图像描述

那么有没有 web3j 专家可以告诉我我的代码有什么问题?如何解决输出参数解码问题?非常感谢。

0 投票
1 回答
1197 浏览

java - Web3j 调用智能合约中的变量

我正在尝试使用solidity、geth和web3j获取智能合约中变量的值。

合约 HelloWorld 非常简单:

web3j 没有 call() 函数,只有 send() 令人惊讶。

当我尝试按照 web3j 说明获取计数器时:

我得到一个交易收据而不是价值 uint256。

有人可以帮忙吗?

谢谢

将要

0 投票
1 回答
75 浏览

java - 如何使用 web3j 将变量从智能合约传递到 java 项目

这是一个非常简单的智能合约:

然后我使用 web3j 将其转换为 java 文件,getName() 函数如下所示:

我对如何获取 getName() 函数的返回值有点困惑。

0 投票
2 回答
798 浏览

android - web3j 和 web3js 中的签名不同?

我正在使用 web3J 版本“ org.web3j:core:4.6.0 ”并遇到以下问题。当我签署相同的原始消息(字符串)时,我使用 web3js 和 web3j 得到不同的签名。web3js 的签名有效(而 web3j 无效),我使用solidity ecrecover 函数对其进行了测试。值得一提的是,您在片段中看到的哈希值是相同的。

Java 代码 (web3j)。

java代码结果-

使用 web3js 代码。

web3js 结果 -