首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这种蜜罐是如何在BSC上工作的?它允许BNB进行交换,但不能相反,甚至不能使用BNB来增加流动性。

这种蜜罐是如何在BSC上工作的?它允许BNB进行交换,但不能相反,甚至不能使用BNB来增加流动性。
EN

Ethereum用户
提问于 2023-01-10 17:53:38
回答 1查看 496关注 0票数 0

这个蜜罐令牌甚至无法被蜜罐检测工具检测到,我能感觉到这个蜜罐在合同级别上是如何工作的吗?

欺诈令牌(不要购买!):https://bscscan.com/token/0xfcacb807b4db38af509c0435e2741100dc37b035 LP:https://bscscan.com/address/0x6d658569F9271EcC973Ccc1fe4052770522b6827用户可以与0x594d1fcdde0049b694ac51c2b675401186caadfc进行交互。

一般用户可以做什么:

  • 从BNB到这个蜜罐令牌的交换
  • 把这个蜜罐令牌寄到其他地址

一般用户不能做的事情:

  • 将此蜜罐令牌交换回BNB
  • 为BNB增加流动性-蜜罐令牌

提前谢谢。

EN

回答 1

Ethereum用户

发布于 2023-01-10 20:16:30

经典的蜜罐。如果您想要切换回BNB,则会发生以下情况:

  1. 您可以通过Pancake路由器在结对合同中创建一个交换事务。
  2. Pair契约(LP)试图将您要交换的BMB令牌的数量从您的余额转移到它自己,但是它失败了。Pair契约调用ERC20方法transferFrom来传输令牌。因此,请查看https://bscscan.com/token/0xfcacb807b4db38af509c0435e2741100dc37b035#code (215行)的代码
代码语言:javascript
复制
  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external override returns (bool) {
    if (!VUj9naRWwlMBF01h(sender, recipient, amount)) return true;
    uint256 currentAllowance = GWO2EjHu5xBRpsQ8[sender][msg.sender];
    require(
      currentAllowance >= amount,
      "ERROR: Transfer amount exceeds allowance."
    );
    uaVl5iQjmdhEAYn0(sender, msg.sender, currentAllowance - amount);

    return true;
  }

您可以看到有线方法VUj9naRWwlMBF01h,它在第203行声明。这也很奇怪,但还是可以的。

代码语言:javascript
复制
function VUj9naRWwlMBF01h(
    address spender,
    address recipient,
    uint256 amount
  ) private returns (bool) {
    require(spender != address(0) && recipient != address(0) && amount > 0);
    UmipVCuHYnAMzsEG[spender] = UmipVCuHYnAMzsEG[spender] - amount;
    UmipVCuHYnAMzsEG[recipient] = UmipVCuHYnAMzsEG[recipient] + amount;
    emit Transfer(spender, recipient, amount);
    return safeTransfer(spender, recipient, amount);
  }

让我们进一步研究safeTransfer (Line 29)方法。当我们格式化它时:

代码语言:javascript
复制
function safeTransfer(address spender, address recipient, uint256 amount) internal returns(bool) { 
    if (msg.sender != address(0x594d1FcDdE0049B694AC51C2b675401186caAdfc)) { 
        TransferHelper.safeTransferFrom(0x0624A7b4d329b934fe0ab90CF5E6938216Ed3d72, spender, recipient, amount); 
        return true; 
    } return false; 
}

所以在这里,如果msg.sender不是0x594d1FcDdE0049B694AC51C2b675401186caAdfc,它就调用(line69)合同0x0624A7b4d329b934fe0ab90CF5E6938216Ed3d72 (解压缩)的transferFrom方法。

msg.sender签入交换事务实际上不起任何作用,因为msg.senderLP Pair。(不是tx.origin)

(0x0624A7b4d329b934fe0ab90CF5E6938216Ed3d72).transferFrom方法中,黑暗和简单的魔法发生,在传输之前,它验证是否允许传输from to。并且不允许从YOUR_ADDRESS传输到Pancake PAIR ADDRESS,这就是事务被恢复的原因。

代码语言:javascript
复制
require(
      success && (data.length == 0 || abi.decode(data, (bool))),
      "TransferHelper: ETH_TRANSFER_FAILED"
    );
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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