Solidity

我正在嘗試在 Uniswap v2 上添加流動性,但我收到契約提供的錯誤原因:“TransferHelper:TRANSFER_FROM_FAILED”

  • February 14, 2022
function addLiquidity(
   address tokenA,
   address tokenB,
   uint amountADesired,
   uint amountBDesired,
   uint amountAMin,
   uint amountBMin,
   address to,
   uint deadline
) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
   (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
   address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
   TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
   TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
   liquidity = IUniswapV2Pair(pair).mint(to);
}
  • 我已經鑄造了 2 個 ERC 代幣,比如代幣 1 和代幣 2,並且還從代幣合約中批准了部署的路由器 v2 合約的地址。
  • 還在工廠合約中生成了 INIT_CODE_HASH 並通過刪除 0X 添加到雜湊值。
  • 在嘗試處理 addLiquidity 函式時,我收到錯誤“TransferHelper:TRANSFER_FROM_FAILED”。

我使用了乙太掃描中路由器和工廠合約的部署程式碼。我無法指出問題任何幫助將不勝感激。

提前致謝

還需要部署 UniswapV2Pair 才能使 addLiquidity 工作。使用 remix 編輯器部署合約並從 remix 中呼叫 addLiquidity。如果事務仍然失敗,可以使用 remix 調試工具逐步跟踪程式碼流

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