最近各种新奇土狗骗局真的是层出不从,各种各样骚操作都有。
想起以前在 BSC冲狗的时候, 最多也就 直接貔貅 增发 撤池子,而现在,又延迟貔貅 又内联汇编直接增发 又恶意转移,这咋玩。
以前看到合约开源基本上都安全,现在合约开源都不一定能保证安全。
以前看到锁了池子,就可以冲了,现在还有假锁池子一说,还能抽回出来。
以前用工具检测了不是貔貅,冲了不怕卖不出去,现在还有延迟貔貅,过了一会或dev关交易后旧卖不出去
各种骗局层出不从,并且在当前熊市,土狗内部都是pvp的情况下,胜率更低,骗局更多。
直接总结,如果是我去买一个代币,我会去如何判断这个代币是否安全。
① 使用检测代币安全的工具判断是否安全
② 查看交易对池子是否已经上锁或丢黑洞
③ 源码查看是否有交易后门
④ 本地节点跑一次看能否出块
对于我来说,最主要的点就是这四个,当然,这只是看一个代币安全与否,而不是 值不值得买!
可能对于小白来说,第 3、4点比较困难,不过我相信看完这篇文章,第三点还是可以很简单的做到的。
市面上有非常多的代币安全检测工具,如 电报机器人 检测网站 交易网站 甚至 okdex 其实也可以检测,我这边放几个我常用的网站和工具。
telegram工具:
aegisweb3:
粉红查币:
网站:
quickintel:
goplus:
defi:
然后对于交易土狗来说,我都会使用okdex,会自带安全性检测,也挺好。
对于使用工具的话,我会手工都去查一遍,只要有一个有问题,我都不会去购买,毕竟在熊市这个pvp场来说,保住本金才是我的唯一想法。
对于第二点,我也是使用工具来查看,不过我会在第三点看代码的时候,再通过交易记录去查看是否已经上锁
第一个工具也是粉红查币:
defi:
tokentool:
这是这篇文章的重头戏,也是我一直想写的事情,我尽量写通俗易懂一点,希望可以帮助到大家。
首先,我们可以看一下,一个代币的生命流程是怎样的
包含 创建 → 加池子 → 开放交易 → 锁池子 → 交易 → rug/关闭交易 等
上图只是一个简单流程,但是对于我们日常使用来说,已经足够了
对于我来说,我的查看步骤是如何的呢
① 查看dev是否是第一次发币(有的连续发几个rug币都不换地址的)
② 查看加了多少池子,池子是否已经丢掉权限
③ 查看合约代码approve方法,是否有假授权限
④ 查看transfer方法,是否有高税,黑白名单,禁止交易等逻辑
注:闭源的,我都默认不玩,除非是大牛市,熊市太难了
① 查看dev是否第一次发币
打开ehterscan,搜索代币合约,点击创建者地址
直接拉到最开始的交易,查看是否有发过其他代币,查看创建代币的话,直接看 To 里面有没有 Create:xxx 即可
② 查看加了多少池子,池子是否已经丢掉权限
查看加池子的话,我们可以看 dev地址的交易记录,主要是看 Add Liquidity 这个方法
查看内部交易详情,只需要跟着图片,1,2,3去查看即可。
我们说一下这个凭证,凭证就是这个 UNI-V2 的这个代币地址,比如钱包A去添加池子,uniswap就会将这个凭证返回给 钱包A,后续钱包A就可以拿上这个凭证去调用uniswap池子里面的各种方法了,如撤池子!
注意我们要记录这个凭证返回了多少数量,以及正确的地址,有的人锁池子是锁一部分数量,以及锁的假凭证!
然后我们去查看,是否已经锁池子或者丢黑洞,既然我们已经知道凭证是干嘛的, 那这个时候,锁池子/丢黑洞的操作,实际上,就是对凭证进行操作,如将凭证转移到黑洞,如将凭证通过其他智能合约锁上一定时间内无法操作。
这个时候,我们可以查看一下 调用者dev 的交易记录,专门看 Transfer方法 或 lockLPToken方法 或 lock方法
1.直接将凭证发送到一个无法操作的地址(黑洞最好,因为发送给其他地址的话,如果合约有留后门,也是可以直接调用代币合约地址里面的代币存量的)
2.利用UNCX的智能合约,锁定池子凭证
3.利用PinkSale的智能合约,锁定池子凭证
为什么会有 lockLPToken 或 lock方法呢,其实这些都是使用了第三方的锁池工具,第三方会使用一个智能合约,在调用此方法的时候,会将凭证锁住一定量的时间,让dev无法操作池子凭证。
如
UNCX Network的锁池智能合约地址:0x663a5c229c09b049e36dcc11a9b0d4a8eb9db214
PinkSale的锁池智能合约地址:
0x71B5759d73262FBb223956913ecF4ecC51057641
看锁没锁池子,最主要是看三点
1、锁的数量是多少,是不是和添加的池子返回的凭证数量一致
2、锁池子的时间锁了多长时间
3、锁池子的合约是否是正确的,因为有的人会自己创建一个智能合约,然后创建了一个 LOCK 的方法,他们会去调用这个方法,会让人误以为是锁了。其实调用的是自定义的方法而已,随时可以解锁,此时我们就要注意,锁池的交互的智能合约地址是不是常见的,有没有标签,如果都没有的话,就默认不玩吧。
③ 查看合约代码approve方法,是否有假授权限
这个基本上就是直接跳到代币合约的地址,然后查看 _approve的方法即可
看授权方法,最主要两个点
1、require() 的判断有没有一些特殊的判断
2、是不是给 _allowances 赋值
其实授权方法没啥大问题,基本上都是在 _transfer 转账方法里面做的权限判断不让出售
④ 查看transfer方法,是否有高税,黑白名单,禁止交易等逻辑
对于 _transfer 方法,我们一样也是使用代码搜索的方式,然后查看有没有特殊校验
其实查看貔貅,我最主要只看三个点
1、require() 有没有特殊校验
require(): 括号内部会有一个判断,如果判断是错误的话,此时就不会继续往下执行,而是直接拒绝。
所以require里面如果有特殊校验的话,很有可能会导致我们无法交易,卖不出去,然后导致貔貅
2、有没有一些特殊属性,比如 balckadd[] whiteadd[]等这些属性
有的时候会用一些属性来做判断,这些属性会在其他方法里面,或者创建的时候赋值,我们看这些属性的话,也可以直接通过搜索去查看,然后判断是不是后门
3、最后调用转账方法的时候,是否确实是转账指定的数量,查看 balances[] 属性
最后会调用实际的 transfer方法,如果转账的数量在中途给减少了,那很有可能,卖1万,其实只卖了100,就会导致想卖的和实际卖的不相符。
先看一个正确没问题的转账方法,并且一步一步看,里面做了什么
在查看代码的时候,我们还是根据几个关键点,
require() 方法里面的判断
_balances[]属性的值的改变
下面这张图的代码,是最简单的转账代码,也是没有任何问题的转账代码
然后我们这个时候查看一个关于延迟貔貅代币的解析
其实看完上面两个代码解析的时候,我们最主要关注的点还是在于 require() 和 一些 if()的判断中。
特别遇到一些需要特殊属性的判断,我们这个时候就需要在代码上进行特殊属性的搜索,在搜索的时候,查看是否会赋值,我们的地址是否在这个属性中。
如以下案例
对于转账的方法,我们必须要打起十二分精神,多次查看 requre() 和 if() 等操作。
其实对于代币是否是貔貅的话,目前这些操作都比较适合小白了,对于一些如用内联汇编去做事情的,不仅很难看出来,也很耗费时间,遇到这种,那就确实是太倒霉了,dev的技术也确实很高超。