问题标签 [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 投票
0 回答
1110 浏览

java - Web3J:用于监听事件的订阅代码由两个不同的线程执行两次

我正在使用 SpringBoot 和 Web3J 开发一个应用程序,其中我使用合约包装器与智能合约交互。这是用于监听事件的方法的自动生成代码,称为 NewId:

我已经为 observable 创建了一个订阅 s,我在其中打印正在执行的线程名称并增加一个计数器,初始化为 0。然后 "mian thread" (spring boot thread) 在订阅后休眠 5 秒,然后打印计数器值并调用 s.unsubscribe 。这是代码:

testIncCounter 方法是同步的:

问题是订阅代码被不同的线程执行了两次,从日志中可以看出,计数器的最终值为 2,应该是 1。这是输出:

也许这是一个错误,还是我做错了什么?非常感谢您提前。

0 投票
1 回答
545 浏览

java - 在 web3j 中,如何为运行时发现的数组类型创建 TypeReference?

我正在尝试使用 web3j 编写一个 Java 应用程序,该应用程序可以读取任意 abi 文件,向用户显示 AbiDefinitions 列表并让他调用他选择的常量函数。如何计算下面的 outTypes?

TypeReference 类使用泛型类型的技巧,当泛型类型在源代码中被硬编码时,这些技巧可以工作,如下所示:

这就是生成的合约包装器会做的事情。

对于简单类型,我可以这样做:

对于像“int256[2]”这样的数组类型,我该怎么办?

0 投票
1 回答
2370 浏览

java - 使用 web3j 检查 ERC20 合约中的余额

我想使用 web3j 检查用户的几个符合 ERC20 的令牌的余额。

是否有一种通用的方法(每个 ERC20 合同通用)或者我应该为每个合同获取 ABI 并从中生成 java 类?

0 投票
1 回答
737 浏览

java - 无法使用 web3j 下载以太坊事件

当我尝试从区块链下载事件时:

我得到了例外:

.... org.web3j.protocol.rx.JsonRpc2_0Rx.lambda$ethLogObservable$10(JsonRpc2_0Rx.java:65) 在 rx.Observable.subscribe(Observable.java:10238) ... 还有 3 个

如何解决这个问题并下载 NewContract 事件?

0 投票
1 回答
636 浏览

java - web3j 重放所有合约事件


关于 Web3j 库的问题。如何使用 web3j 重播区块链中的所有日志?我知道有一种方法可以重播特定合同中的所有日志:

它工作得很好,但是当filter它没有参数 -new EthFilter()时,它根本不会捕获任何日志。
如果我有 1000 个合约来监听事件怎么办?解决此问题的最佳方法是什么?

0 投票
1 回答
587 浏览

java - 从 Java 应用程序交互智能合约

我正在与 java 应用程序交互我的智能合约,我正在使用 testrpc。

要与智能合约交互,我们需要: 1- 连接到本地主机 2- 有一个帐户来发送交易(凭证)。3-部署合约并获取地址(使用truffle部署到testrpc网络并且已经有了地址)

我的问题是:如何将 testrpc 帐户用于“凭据”??!!

如何使用已经被 truffle 部署的智能合约的地址?

0 投票
0 回答
454 浏览

java - 如何生成智能合约以使用 Web3j 发送任意 ERC20 代币?

我正在编写一个功能类似于 MyEtherWallet 的 android 钱包,但我似乎找不到任何关于如何使用 Web3j 生成合约以发送任意 ERC20 令牌的示例。有没有人有一个很好的例子,或者我需要为我想要发送的每个令牌生成一个单独的合同,如果是这样,我怎么能在 java 中做到这一点?

0 投票
1 回答
1066 浏览

java - 在 Web3j 中生成 Java Wrapper 时出错

我正在尝试为智能合约生成 java Wrapper,但由于此错误而失败:

我按照这个人所说的来删除这个错误

https://github.com/web3j/web3j/issues/16]

并为每个空属性指定一个默认名称(按字母顺序),如下所示:

但错误仍然相同。我还更改了合同的名称而不是“主要”,但没有任何变化。

我还更改了每个变量名都有数字、特殊字符甚至以 _ 开头,但仍然不起作用。

知道我应该改变什么来解决这个错误

谢谢

0 投票
1 回答
1674 浏览

java - 使用 java web3j 创建钱包但如何连接到私有运行的区块链?

我正在使用 java web3j lib 并使用以下方法创建一个新的钱包文件:

和:

...我正在连接到运行 geth 的本地私有区块链。

问题是。如何向我的钱包添加一些测试,以及我本地创建的钱包和我正在运行的 geth 客户端之间的上下文是什么。

如何将 web3j 创建的钱包连接到 geth 客户端?

和:

.. 我可以获取钱包的公共地址,但是当我使用时,该帐户未在 geth 客户端中列出:

这如何结合在一起?

0 投票
1 回答
2006 浏览

java - Web3j Transfer.sendFunds() 返回错误“gas * price + value 资金不足”

在我的私人测试区块链中使用 web3j 库进行区块链交易时,我目前遇到标题响应错误:*gas 资金不足 * price + value*

我想转出一些以太币的账户余额为 10000 以太币。我注销的gas 价格的值为18000000000作为 BigInt(它是 WEI?),而gas 限制是 web3j 使用的默认值,值为21000

所以问题是为什么我的交易不起作用?我想转移 10 个以太币,例如:

更多细节

创世文件如下所示:

代码如下所示:

这导致了上面的交易错误:gas * price + value 资金不足

这是日志记录输出: