Etherscan

在 Etherscan 上使用 Uniswap V3 SwapRouter

  • January 5, 2022

我正在嘗試直接在 Rinkeby Etherscan 上與 Uniswap 的 SwapRouter 智能合約進行互動,但沒有成功。例如,我想將 ETH 換成 DAI 或將 ETH 換成 WETH。

這是我想要做的。

  1. 前往Rinkeby Etherscan 上的 Uniswap SwapRouter 智能合約,開啟智能合約的寫入功能。
  2. 然後我擴展功能exactInputSingle
  • 在第一個欄位上,payableAmount (ether)我輸入了 0.00000001
  • 在第二個欄位中params (tuple),我輸入了以下數據:
{
   "tokenIn": "0xc778417E063141139Fce010982780140Aa0cD5Ab",    // WETH address
   "tokenOut": "0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735",   // DAI address
   "fee": 3000,                                                // Liquidity providers fee
   "recipient": "my-wallet-address", 
   "dealline": 1633596832,         // Timestamp in seconds
   "amountOut": 1000,              // Desired out amount 1000 DAI in this case
   "amountInMaximum": 0.00000001,  // Same value that I use on the first field payableAmount
   "sqrtPriceLimitX96": 0 
}
  1. 現在,當我點擊寫入時,我收到以下錯誤:

無效的 BigNumber 值(argument=“value”,value=undefined,code=INVALID_ARGUMENT,version=bignumber/5.1.1)

顯然價值是不確定的,我的問題是:

我應該如何傳遞價值?

我試圖把value裡面的參數元組 - 不工作。

我試圖在第一個輸入(payableAmount)中傳遞值,比如{"value": 0.00000001}- 不工作。

我試圖在這樣的元組之前傳遞它:

{"value":0.00000001}({"tokenIn": "...", "tokenOut": "...", ...})

但它失敗並顯示另一條消息:

({value:1e-8}) 不是函式

我看到使用 Solidity,人們正在做這樣的事情:

uniswapRouter.exactInputSingle{ value: msg.value }(params);

是否可以使用 Etherscan 進行這樣的呼叫?

任何幫助將不勝感激,在此先感謝您!

我不熟悉程式碼是如何在 Etherscan 上編寫的,但這裡有些方面可能會有所幫助。

  1. 為了成功地將 WETH 兌換成 DAI,Rinkeby 上必須有一個可用的 Uniswap 池。我找到了一個使用以下 WETH 和 DAI 地址的池

地址公共常量​​ WETH = 0xc778417E063141139Fce010982780140Aa0cD5Ab;// WETH 在 Rinkeby 測試網上

地址公共常量​​ DAI = 0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa;// Rinkeby 測試網上的 DAI 2. Uniswap 礦池可以有 3 種不同的礦池費用(500 WEI、3000 WEI、10000 WEI)——你必須找到你正在使用的礦池的費用——在這種情況下是 500 WEI 3. 我不知道您如何使用 Etherscan 輸入乙太幣數量,但關於您的參數元組,您似乎已將參數用於exactOutputSingle 函式。對於exactInputSingle,參數是:

        tokenIn: DAI,
        tokenOut: WETH9,
        fee: poolFee,
        recipient: msg.sender,
        deadline: block.timestamp,
        amountIn: amountIn,
        amountOutMinimum: 0,
        sqrtPriceLimitX96: 0

有關更多資訊,請查看 uniswapV3 文件https://docs.uniswap.org/protocol/guides/swaps/single-swaps

希望這可能會有所幫助

你檢查過 Rinkeby 是否為 (WETH, DAI) 提供了一個池子嗎?我在 Ropsten 上遇到了問題,即 (WETH, ENS) 不可用。你可能會遇到同樣的問題。

引用自:https://ethereum.stackexchange.com/questions/111194