Solidity

交換啟用機器人保護 (BpEnabled) 的令牌

  • January 7, 2022

!!提前為這種冗長道歉!

背景

我遇到了這個 BEP20 令牌 (0xcc7a91413769891de2e9ebbfc96d2eb1874b5760),它在 TGE 中添加了足夠的流動性,但啟用了機器人保護。規則是只允許在特定時間或之後(比如上午 7:00)進行交換,只有列入白名單的錢包地址才能在前 180 秒內購買多達 2500 個(價值 200 美元)代幣,然後它得到向所有人開放。

添加流動性後(比如早上 6:50),我可以在 PancakeSwap 上看到轉換率,但每次我點擊 Swap 按鈕時,它都會向我顯示Transfer Failed錯誤,甚至沒有在區塊鏈上送出交易。一旦項目團隊批准代幣可用於交換,如果我(注意:我是 WL 地址)設置的金額大於 200 美元,PancakeSwap 仍然Transfer Failed出錯並且不送出交易。這不是滑點問題,因為我嘗試將其設置為最高但仍然沒有任何區別。

在此處輸入圖像描述

問題

  • 除了 Liquidity Pair 和充足的流動性金額檢查,PancakeSwap (Router Contract) 在送出掉期交易之前還檢查什麼?
  • PancakeSwap 如何確定雖然流動性存在,但代幣尚未可交換?
  • PancakeSwap 是如何確定購買數量限制的?
  • 不確定 PancakeSwap 是否也有能力在送出交易之前知道錢包地址是否是白名單地址?

BSC 掃描令牌交換

如果您在圖像中看到 AddLiquidity 交易和第一次交換之間大約有 10 分鐘的差異。我檢查了第一個交換地址,並且該人之前已經送出了多筆交易(我猜可能是通過狙擊機器人或可能通過 PancakeRouter BscScan 的寫入合約選項),當然,在滿足時間和金額標準之前,所有交易都失敗了。所有失敗的交易也有同樣的Transfer Failed錯誤。

(TXN成功:0xb1e0e23c34e0a8090d4ef879792701eb324ef83c1d95f5eee5cf95bb89ad24bb,錢包:0x96d5f755220a03712eb85d490659288f859ccb8e,失敗的事務處理:0xe80ff57297df7f580c726e923d200da6357c3ddac4b50f279b9504012054b32e)

那麼如何在不送出交易(意味著失敗)的情況下通過 web3j 程式碼庫確定此類令牌的交換能力?以及與哪個合約進行互動?

注意:我確實注意到 BP 契約 0xb930a172f9205f87f7d28ffa6cc3b5c3fd87ac19 沒有程式碼可以更好地理解它。字節碼反編譯器沒有多大幫助。:(

我跟踪了一筆交易以找到錯誤的根源。

Pancake: TRANSFER_FAILEDpancakeswap 對無法轉移令牌時,它會拋出 。

傳輸失敗的原因是BP: the address is not whitelisted。BP 契約尚未在 bscscan 上驗證,因此我不確定是什麼導致了錯誤,但根據描述,這僅僅是因為您的地址未列入白名單。

至於你的其他問題:Pancakeswap 只是虛擬地嘗試交易並看到它失敗,然後在 UI 上給你錯誤。你可以通過呼叫你想嘗試的函式來對web3js 做同樣的事情。根據您要執行的交換類型,pancakeswap 路由器具有您可以使用的不同功能。

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