首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web3j和Uniswap路由器V2,将wei转换为uint256

Web3j和Uniswap路由器V2,将wei转换为uint256
EN

Stack Overflow用户
提问于 2021-04-27 16:39:29
回答 1查看 1.4K关注 0票数 3

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

代码语言:javascript
复制
  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的值转换为表示number?

  • should (我称之为其他函数)的BigInteger,beforehand?

  • how设置了气体?我想通过new DefaultGasProvider()

  • I可以看到他们在Javascript中做类似于const MIN_TOKENS = web3.utils.toHex(0.2 * 10 ** 18)的事情,我如何才能在Web3中做到这一点而不被黑客攻击并添加尾随零呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 21:01:23

有趣的是,在这里发布一个问题对逃避橡胶是有帮助的,不是吗?

看了看合同,上面写着msg.value。你猜怎么着,我们不会发这个的。即使swapExactEthForTokens是可支付的,包装器也不会为它生成参数。

请跟踪此bug以获得更多信息:https://github.com/web3j/web3j/issues/1268

我基本上是用0以太发送了一个事务,它返回了INSUFFICIENT_INPUT_AMOUNT。认为如果Java包装器只给了我第一个数量,它就会自动处理它,但不会。

我要做的是手动将weiValue添加到executeRemoteCallTransaction(function, weiValue),因为包装器没有这样做,请看上面的bug报告。

不管怎么说,我会留着这个,以防有人想加入更多的洞察力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67287219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档