Contract-Development

使用者交換時 Uniswap 如何與我的代幣合約互動?

  • January 8, 2022

總的來說,我已經掌握了智能合約開發和代幣創建的竅門,但我一直在努力解決的一件事是了解當使用者用乙太坊交換我的代幣時 Uniswap 如何與我的代幣合約互動,反之亦然。

當使用我的代幣進行轉賬時,我定義的轉賬函式會產生一些交易費用,我無法確定當使用者在 Uniswap 上交換我的代幣時是否會產生這些費用。換句話說,我的代幣合約的轉移函式是在發生交換時呼叫的嗎?如果沒有,當使用者交換我的代幣時,我怎麼能包括那些特定於我的契約的交易費用?

我已經看到很多其他代幣合約實際上在程式碼中定義了 Uniswap 工廠/路由器引用,然後在那裡創建了一個配對合約。據我所知,這似乎給了他們更多的可配置性。我是否需要做類似的事情來自定義在 Uniswap 上使用我的代幣進行交換的行為?或者僅僅在 Uniswap 網站上設置代幣對是否有意義?

當您在 Uniswap 上將 ERC20 代幣換成 ETH 時,transfer會呼叫代幣的函式 - 請參閱IERC20.transfer。IIRC 當您“購買”時,您的錢包是接收方,Token-WETH 對合約(由 Uniswap 工廠創建)是發送方。另一方面,當你“出售”你的錢包時,你的錢包是發件人,而這對是收件人。

如果您想獲取該貨幣對的地址(您的令牌-WETH),您可以使用工廠來獲取它:

IUniswapV2Router router = IUniswapV2Router(uniswapV2RouterAddress);
IUniswapV2Pair pair = IUniswapV2Factory(router.factory())
   .getPair(address(this), router.WETH());

請參閱 Uniswap 介面程式碼和此答案(例如)以查找 Uniswap 路由器地址(或Google它)

引用自:https://ethereum.stackexchange.com/questions/118293