首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Uniswap对地址是否存在

检查Uniswap对地址是否存在
EN

Ethereum用户
提问于 2022-04-13 22:57:15
回答 1查看 594关注 0票数 0

我希望能够检查一个任意地址是否是Uniswap流动性池对地址。我知道我可以用CREATE2计算LP,但是如果我不知道标记,我只是有一个地址,并且想知道它是否是Uniswap。像这样的东西会起作用吗?

代码语言:javascript
复制
IUniswapV2Pair pair = IUniswapV2Pair(0x000...some address....0000);
uint256 price=pair.price0CumulativeLast();
if (price>0) { this is a real LP... }

还是有专门为此目的的Uniswap函数?

EN

回答 1

Ethereum用户

发布于 2022-10-26 21:47:06

实际上,您可以尝试调用可能的对合同的任何函数。

代码语言:javascript
复制
contract PairChecker {
    function _tryPairTokens(address token, address possiblyPair)
        public
        view
        returns (bool isPair)
    {
        address token0 = IUniswapV2Pair(possiblyPair).token0();
        address token1 = IUniswapV2Pair(possiblyPair).token1();
        return token0 == token || token1 == token;
    }

    function _checkPair(address token, address possiblyPair)
        internal
        view
        returns (bool isPair)
    {
        try this._tryPairTokens(token, possiblyPair) returns (bool value) {
            if (token == address(0)) return true;
            return value;
        } catch {
            return false;
        }
    }
}

只需打电话给_tryPairTokens(token, possiblePair),找出地址是否是您的令牌对。同样的事情,你可以不带任何记号

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/126156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档