说在前头
Web3是一种新兴的网络概念,由于某些原因导致我们能够接触到的相关技术知识实在有限,每当我遇见技术瓶颈总是不能找到充足的资料,这也让我萌生了填补这片空白知识的冲动。“Hello Web3” 这个专栏会尽力将我掌握的web3 知识分享给大家。如果分享的知识能帮助到大家,希望能够 关注、点赞 支持作者!
本人已在github上发布Web3j工具,欢迎使用和star
辨别貔貅币的一种代码思路
知识前置
-
貔貅币指的是一类只能买入不能卖出的币,对喜欢冲土狗的老兄伤害极大
-
solidity中的函数具有事务性,函数中任何代码执行失败,所有步骤都会回滚
-
执行智能合约前估算gasLimit的函数实际上是执行了相关函数,但是没有提交
思路剖析
-
貔貅币无法卖出,我们只需要将买入、授权、卖出三个流程全部走一遍就可知道这个币是否是貔貅币。
-
但是将三个流程逐个走一遍需要花费一定的成本和手续费(gas),等待链上反馈执行信息的流程也比较缓慢。
-
将这三个步骤放入到一个solidity函数中,配合估算gasLimit的函数即可模拟对一个币的买入卖出全过程且无需任何成本。
代码展示
为了避免代码长度影响文章篇幅,所以去掉了IERC20、IPancakeRouter01、IPancakeRouter02等引用文件,只展示最精华的部分
pragma solidity =0.8.4;
contract PiXiuCheck{
IPancakeRouter02 public uniswapV2Router;
constructor(
address pancakeRuouter
)