【问题标题】:Web3:如何在 python 中获取令牌的 maxTransactionAmount?
【发布时间】:2022-01-22 08:12:15
【问题描述】:
我目前正在编写代码,我希望能够购买特定令牌的最大允许购买量。
在智能合约中,他们有时会执行最大交易,即:1% Max Buy。
我的代码如何在智能合约中检测到它并将其用作函数 contract.functions.swapExactETHForTokens( ) 中的购买参数?我想它会是这样的,
maxTokens = token_contract.functions.maxAllowedTransactions
然后,我可以在 swapExactETH.. 函数中使用 maxTokens 作为参数。
我试过用谷歌搜索,但没有遇到类似的情况。
谢谢!
【问题讨论】:
标签:
ethereum
web3
cryptocurrency
binance-smart-chain
web3py
【解决方案1】:
我假设您说的是 uniswap v3/v2。没有“最大数量”。您所指的百分比是滑点量,它在swapExactETHForTokens 函数中表示为变量amountOutMin。此参数是您愿意为 x 数量的 ETH 获得的最低金额。
如果您不关心滑点,则可以将 amountOutMin 设置为 0。如果您这样做,您可能会被 MEV 机器人抢先。
您可以购买的代币的真正最大数量是您要换入的池中代币的总数量。如果池中有 50 个 Buttcoins 和 30 个 Dog 币,那么您最多可以购买 30 个 dog无限数量的 Buttcoins 的硬币。基于交换公式:
buttcoin amount = 50 Butt / (30 Dog - 30 Dog) = infinity