gpt4 book ai didi

java - Web3j 和 Uniswap Router V2,将 wei 转换为 uint256

转载 作者:行者123 更新时间:2023-12-05 06:01:10 26 4
gpt4 key购买 nike

我遇到的问题是,我试图将 wei 中的值发送到 swapExactETHForTokens,但它返回 Fail with error 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT'。如果我将 1 ETH 转换为 wei(在代码中),结果为 1000000000000000000。当从 Uniswap GUI 进行交换时,它会将 1 ETH 转换为 1059503741842561918508100943433。我将把我的代码放在下面,我想我会查看 Uniswap 前端项目,看看它如何将 GUI 中的 1 ETH 转换为该值(猜测它还会在调用智能合约之前添加费用)

  web3j = Web3j.build(web3jService);
UniswapV2Router02 uniSwapRouter = UniswapV2Router02.load(UNISWAP_V2_RINKEBY,
web3j,
credentials,
new DefaultGasProvider());
uniSwapRouter.swapExactETHForTokens(
Convert.toWei("1", Convert.Unit.ETHER).toBigInteger(),
Arrays.asList(WETH_ADDRESS, DAI_ADDRESS),
credentials.getAddress(),
BigInteger.valueOf(DEADLINE_TIMESTAMP)).send();

我会尝试什么:

  • 尝试将金额转换为 uint256,尾随零和所有(不确定如何)
  • 看看前端是怎么做的,不确定我是否应该直接调用 swapExactETHForTokens,而不是先调用其他函数

所以一些问题是:

  • 如何将 1 ETH 的值转换为表示 uint256 数字的 BigInteger?
  • 我应该事先调用其他函数吗?
  • 如何设置气体?我猜是通过 new DefaultGasProvider()
  • 我看到他们在 Javascript 中做了类似 const MIN_TOKENS = web3.utils.toHex(0.2 * 10 ** 18) 的事情,我怎样才能在 Web3 中做到这一点而不是 hackish 并添加尾随零?

最佳答案

有趣的是,在这里发布问题有助于躲避橡皮,不是吗?

查看契约(Contract),上面写着 msg.value。你猜怎么着,我们不会发送那个。即使 swapExactEthForTokens 是应付账款,包装器也不会为其生成参数。

关注此错误以获取更多信息:https://github.com/web3j/web3j/issues/1268

我基本上是用 0 个以太币发送交易,当然它返回了 INSUFFICIENT_INPUT_AMOUNT。以为如果 Java Wrapper 只给我第一笔金额,它会自动处理它,但没有。

我必须做的是手动将 weiValue 添加到 executeRemoteCallTransaction(function, weiValue) 因为包装器不这样做,请查看上面的错误报告。

无论如何,如果有人想提供更多见解,我会把它打开。

关于java - Web3j 和 Uniswap Router V2,将 wei 转换为 uint256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67287219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com