逻辑陷阱型蜜罐合约

2024-03-07 1113阅读

温馨提示:这篇文章已超过381天没有更新,请注意相关的内容是否还可用!

逻辑陷阱型蜜罐合约

蜜罐是传统安全领域中的一个概念,通常指安全人员设置一些陷阱(比较明显的漏洞),让攻击者自己掉入我们设置好的陷阱中,以便安全人员分析攻击者的作恶手法。

蜜罐合约(HoneyPots Contract)也是类似的概念,但对象变了,一般指合约开发者设置了看似容易获利的合约逻辑,但其实是陷阱,普通用户观察合约,发现有利可图,便与蜜罐合约交互,结果发现交互的资产无法被自己提出。

蜜罐合约在中文圈子有时也称为貔貅合约,本文将简单讨论一下,我看见的几种逻辑陷阱型蜜罐合约。

逻辑陷阱蜜罐合约

比较多项目会在transfer函数(转账相关)中实现一些业务逻辑,蜜罐合约可能在transfer函数中加入一些强行限制用户交易的逻辑,从而实现截取用户资产的效果。

这类合约,我称为逻辑陷阱型蜜罐合约,是比较好识别的一类,主要关注其交易相关的逻辑在合约实现上是否透明以及是否有限制则可,这里介绍三个逻辑陷阱型蜜罐合约:

  • 黑名单蜜罐合约

  • 可变合约构成的蜜罐合约

  • 限时限卖的蜜罐合约

    黑名单蜜罐合约

    我们看到BSC上一个叫Moco合约:https://bscscan.com/address/0x9d4bDdd642529a588f910Aad405C07e066A908Cf#code

    Moco合约继承了ERC20,即是一个代币合约,看到合约中的_transfer函数,部分代码如下:

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!_isbclisted[recipient] && !_isbclisted[sender], "bclisted address");
        // ...

    在用户进行交易时,会调用_transfer函数,它有3个require做条件判断,主要看到第三个,判断sender与recipient都不在黑名单内,才能进行交易。

    根据_isbclisted进行搜索,可以发现addBot函数实现了将用户地址加入黑名单的操作。

    function addBot(address recipient) internal {
          if (!_isbclisted[recipient]) _isbclisted[recipient] = true;
      }

    那什么地方调用了addBot函数呢?搜索一下,发现还是在_transfer函数中,相关代码如下:

    if(sender == uniswapPair) {
        if (block.number  uint256)类型的变量,通过这些变量来记录转账的值。 
     

    看到_transfer函数,有限制交易时间与限制交易金额比例的逻辑,相关代码如下:

    // 限制交易时间
    if(block.timestamp
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]