问题标签 [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.
java - Web3J:用于监听事件的订阅代码由两个不同的线程执行两次
我正在使用 SpringBoot 和 Web3J 开发一个应用程序,其中我使用合约包装器与智能合约交互。这是用于监听事件的方法的自动生成代码,称为 NewId:
我已经为 observable 创建了一个订阅 s,我在其中打印正在执行的线程名称并增加一个计数器,初始化为 0。然后 "mian thread" (spring boot thread) 在订阅后休眠 5 秒,然后打印计数器值并调用 s.unsubscribe 。这是代码:
testIncCounter 方法是同步的:
问题是订阅代码被不同的线程执行了两次,从日志中可以看出,计数器的最终值为 2,应该是 1。这是输出:
也许这是一个错误,还是我做错了什么?非常感谢您提前。
java - 在 web3j 中,如何为运行时发现的数组类型创建 TypeReference?
我正在尝试使用 web3j 编写一个 Java 应用程序,该应用程序可以读取任意 abi 文件,向用户显示 AbiDefinitions 列表并让他调用他选择的常量函数。如何计算下面的 outTypes?
TypeReference 类使用泛型类型的技巧,当泛型类型在源代码中被硬编码时,这些技巧可以工作,如下所示:
这就是生成的合约包装器会做的事情。
对于简单类型,我可以这样做:
对于像“int256[2]”这样的数组类型,我该怎么办?
java - 使用 web3j 检查 ERC20 合约中的余额
我想使用 web3j 检查用户的几个符合 ERC20 的令牌的余额。
是否有一种通用的方法(每个 ERC20 合同通用)或者我应该为每个合同获取 ABI 并从中生成 java 类?
java - 无法使用 web3j 下载以太坊事件
当我尝试从区块链下载事件时:
我得到了例外:
.... org.web3j.protocol.rx.JsonRpc2_0Rx.lambda$ethLogObservable$10(JsonRpc2_0Rx.java:65) 在 rx.Observable.subscribe(Observable.java:10238) ... 还有 3 个
如何解决这个问题并下载 NewContract 事件?
java - web3j 重放所有合约事件
关于 Web3j 库的问题。如何使用 web3j 重播区块链中的所有日志?我知道有一种方法可以重播特定合同中的所有日志:
它工作得很好,但是当filter
它没有参数 -new EthFilter()
时,它根本不会捕获任何日志。
如果我有 1000 个合约来监听事件怎么办?解决此问题的最佳方法是什么?
java - 从 Java 应用程序交互智能合约
我正在与 java 应用程序交互我的智能合约,我正在使用 testrpc。
要与智能合约交互,我们需要: 1- 连接到本地主机 2- 有一个帐户来发送交易(凭证)。3-部署合约并获取地址(使用truffle部署到testrpc网络并且已经有了地址)
我的问题是:如何将 testrpc 帐户用于“凭据”??!!
如何使用已经被 truffle 部署的智能合约的地址?
java - 如何生成智能合约以使用 Web3j 发送任意 ERC20 代币?
我正在编写一个功能类似于 MyEtherWallet 的 android 钱包,但我似乎找不到任何关于如何使用 Web3j 生成合约以发送任意 ERC20 令牌的示例。有没有人有一个很好的例子,或者我需要为我想要发送的每个令牌生成一个单独的合同,如果是这样,我怎么能在 java 中做到这一点?
java - 在 Web3j 中生成 Java Wrapper 时出错
我正在尝试为智能合约生成 java Wrapper,但由于此错误而失败:
我按照这个人所说的来删除这个错误
https://github.com/web3j/web3j/issues/16]
并为每个空属性指定一个默认名称(按字母顺序),如下所示:
但错误仍然相同。我还更改了合同的名称而不是“主要”,但没有任何变化。
我还更改了每个变量名都有数字、特殊字符甚至以 _ 开头,但仍然不起作用。
知道我应该改变什么来解决这个错误
谢谢
java - 使用 java web3j 创建钱包但如何连接到私有运行的区块链?
我正在使用 java web3j lib 并使用以下方法创建一个新的钱包文件:
和:
...我正在连接到运行 geth 的本地私有区块链。
问题是。如何向我的钱包添加一些测试,以及我本地创建的钱包和我正在运行的 geth 客户端之间的上下文是什么。
如何将 web3j 创建的钱包连接到 geth 客户端?
和:
.. 我可以获取钱包的公共地址,但是当我使用时,该帐户未在 geth 客户端中列出:
这如何结合在一起?
java - Web3j Transfer.sendFunds() 返回错误“gas * price + value 资金不足”
在我的私人测试区块链中使用 web3j 库进行区块链交易时,我目前遇到标题响应错误:*gas 资金不足 * price + value*
我想转出一些以太币的账户余额为 10000 以太币。我注销的gas 价格的值为18000000000作为 BigInt(它是 WEI?),而gas 限制是 web3j 使用的默认值,值为21000。
所以问题是为什么我的交易不起作用?我想转移 10 个以太币,例如:
更多细节
创世文件如下所示:
代码如下所示:
这导致了上面的交易错误:gas * price + value 资金不足
这是日志记录输出: