小白如何通过代码查看是否是貔貅代币
August 6th, 2023

简介

最近各种新奇土狗骗局真的是层出不从,各种各样骚操作都有。

想起以前在 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的技术也确实很高超。

Subscribe to 🐖 猪猪Bang
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from 🐖 猪猪Bang

Skeleton

Skeleton

Skeleton