如何在代币合约中区分在 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 代币的主要内容,如果未能解决你的问题,请参考以下文章