使用 viem 批准合同

问题描述 投票:0回答:1

我正在尝试学习如何使用区块链进行工作/开发,特别是使用 viem 和 Avalanche。我正在尝试遵循 Trade Joe 的这个例子

https://docs.traderjoexyz.com/SDK/trade

我能够完成几乎所有文档,但我在步骤上遇到了很大的麻烦

  1. 使用 Viem 执行交易

我找不到如何完成此操作:“记住在执行之前通过路由器批准支出 ERC20 代币”使用 viem。

说实话,viem 的文档很清楚

https://viem.sh/docs/contract/simulateContract#state-overrides

很简单,但我找不到如何实现它的方法。

主要问题是:

"reason": "ERC20: 转账金额超出限额", "shortMessage": "合约函数“swapExactTokensForNATIVE”已恢复,原因如下: ERC20:转账金额超出限额”,

我完全可以理解原因,路由器没有获得必要的批准来使用我钱包中的代币,但我很难尝试解决这个问题。

如果有人可以阅读本文,并可以帮助我解决问题或至少指出我的方向,我将不胜感激。

我确实尝试阅读所有文档,并且希望通过此消息找到可以帮助我修复它的人。

typescript blockchain avalanche
1个回答
0
投票

这个问题的解决方案基本上分为两部分。

  1. “记住在执行之前通过路由器批准花费 ERC20 代币”

这实际上意味着像往常一样在 MM 上执行此操作。这个没有什么特别的。我的错误是认为我需要它在代码中完成它。 KISS 一定要在这里申请!

  1. “ERC20:转账金额超过限额”

我想这对我来说一切都开始变糟了。搜索周围我发现了一些帖子,他们说错误可能来自于令牌上没有批准,并且由于此批准不在代码中,所以......

该消息的真正含义是(我从其他人的代码中复制的):

console.log("YOU CAN'T SEND WHAT YOU DON'T HAVE!")

我要感谢所有 38 个人(到目前为止)花了一些时间阅读这个(愚蠢的)问题,我希望这个答案可以帮助任何其他人。

© www.soinside.com 2019 - 2024. All rights reserved.