Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Web3j和Uniswap路由器V2,将wei转换为uint256_Java_Ethereum_Smartcontracts_Web3_Web3 Java - Fatal编程技术网

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

Java Web3j和Uniswap路由器V2,将wei转换为uint256,java,ethereum,smartcontracts,web3,web3-java,Java,Ethereum,Smartcontracts,Web3,Web3 Java,我遇到的问题是,我试图将wei中的值发送到swapExactETHForTokens,但它返回失败,并出现错误“UniswapV2Library:输入量不足”。如果我将1eth转换为wei(在代码中),结果是10000000000000000。从Uniswap GUI进行交换时,它会将1ETH变为105950374184256191850810094333。 我将把我的代码放在下面,我想我将查看Uniswap前端项目,看看它如何将GUI中的1 ETH转换为该值(我想它在调用智能合约之前还会添加费

我遇到的问题是,我试图将wei中的值发送到
swapExactETHForTokens
,但它返回
失败,并出现错误“UniswapV2Library:输入量不足”
。如果我将1eth转换为wei(在代码中),结果是
10000000000000000
。从Uniswap GUI进行交换时,它会将1ETH变为
105950374184256191850810094333
。 我将把我的代码放在下面,我想我将查看Uniswap前端项目,看看它如何将GUI中的1 ETH转换为该值(我想它在调用智能合约之前还会添加费用)

我将尝试:

  • 尝试将金额转换为uint256、尾随零和全部(但不确定如何转换)
  • 看看前端是怎么做的,不确定我是否应该直接调用
    swapExactETHForTokens
    ,而不调用其他函数
因此,一些问题是:

  • 我如何将1 ETH的值转换为表示uint256数字的大整数
  • 我应该事先调用其他函数吗
  • 如何设置煤气?我猜是通过
    新的DefaultGasProvider()
  • 我看到,在Javascript中,他们做了类似于
    const MIN_TOKENS=web3.utils.toHex(0.2*10**18)
    的事情,我如何在web3中做到这一点而不被攻击并添加尾随的零
提前感谢您,祝您度过愉快的一天,
索林(Sorin)

有趣的是,在这里发布一个问题有助于橡皮鸭,不是吗

看了看合同,上面写着msg.value。你猜怎么着,我们不会送的。即使
swapExactEthForTokens
是一个应付账款,包装器也不会为其生成参数

请遵循此错误了解更多信息:

我基本上是用0发送一个交易,ofc it返回
输入不足\u金额
。我想如果Java包装器只给了我第一个数量,它会自动处理它,但是没有

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

不管怎样,我会把这件事留着,以防有人想插话提出更多的见解

  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();