如何在代币合约中区分在 uniswap 上买卖 erc-20 代币

Posted

技术标签:

【中文标题】如何在代币合约中区分在 uniswap 上买卖 erc-20 代币【英文标题】:How to differentiate buying and selling erc-20 tokens on uniswap in token contract 【发布时间】:2021-05-15 16:31:19 【问题描述】:

如果有人为 eth 出售或购买我们的代币(例如 uniswap),有没有办法检查 erc-20 代币的 transfer() 方向?

【问题讨论】:

好问题。也有兴趣。 也许我遗漏了什么?如果您在 etherscan.io 等网站上看到区块链上的 transfer() txn,那么您只需阅读即可判断。 【参考方案1】:

Uniswap 交易是掉期,不是买卖。它可以同时有两个输入令牌和两个输出令牌。

将 Uniswap 代币交易定义为买入或卖出的一种方法是将 token0 和 token1 中的一个定义为报价代币(USD、ETH),然后如果在交换后报价代币的数量较少,则为买入。

p>

【讨论】:

【参考方案2】:

您可以通过检查您的帐户是否收到或转移令牌来区分它。

例如:

transactionType: address === obj.from ? 'Sold' : 'Bought'

From 是您的帐户地址。

Obj - 是交易详情。

【讨论】:

【参考方案3】:

我做了一些分析,我遇到的唯一问题是 sell 和 addLiquidity 给出了相同的参数:

add liquidity 

uniswapRouter ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
uniswapPair ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a
msgSender ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
sender ====>>  0xbde658ba6aaf6c9f7938820b69d47f099bc5ea23
recipient ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a

for adding liquidity 
1. router is the msgSender 
2. tx sender is the owner of the tokens
2. Pair is the recipient

Token Sell 

uniswapRouter ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
uniswapPair ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a
msgSender ====>>    0x7a250d5630b4cf539739df2c5dacb4c659f2488d
sender ====>>       0xbde658ba6aaf6c9f7938820b69d47f099bc5ea23
recipient ====>>    0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a

For Token Sell 

1. router is msgSender
2. sender is asset owner 
3. recipient is uniswap pair



Buy Tokens 

uniswapRouter ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
uniswapPair ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a
msgSender ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a
sender ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a
recipient ====>>  0xbde658ba6aaf6c9f7938820b69d47f099bc5ea23

For Token Buy
1. pair is msgSender 
2. transfer sender is the pair 
3. recipient is the actual owner of final tokens 


remove liquidity 

uniswapRouter ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
uniswapPair ====>>  0x4f58b3a4c69f1ee8a9bf11cb5defadc89751c32a
msgSender ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
sender ====>>  0x7a250d5630b4cf539739df2c5dacb4c659f2488d
recipient ====>>  0xbde658ba6aaf6c9f7938820b69d47f099bc5ea23

For Remove liquidity 

1. router is msgSender
2. sender is router 
3. recipient asset owner

【讨论】:

以上是关于如何在代币合约中区分在 uniswap 上买卖 erc-20 代币的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 web3 js 在 uniswap 上交换令牌

用 Python 监控 Uniswap 加密货币价格

使用安全帽通过 Uniswap 流动性供应测试代币

如何以编程方式在 pancakeswap 上获得代币的买卖税

Uniswap:如何使用 API 读取代币价格

如何使用 UNISWAP API 获取代币价格