检查ApeSwap工程
Posted sanqima
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查ApeSwap工程相关的知识,希望对你有一定的参考价值。
ApeSwap一个去中心化的交易所,既有类似Uniswap的TokenA/TokenB兑换,又有类似SushiSwap的质押挖矿。其工厂合约、路由合约、配对合约参考了Uniswap V2,BananaToken、MasterApe合约参考SushiSwap的SushiToken和MasterChef。具体如下:
-
ApeFactory合约
https://bscscan.com/address/0x0841BD0B734E4F5853f0dD8d7Ea041c241fb0Da6#code
参考 UniswapV2的UniswapV2Factory -
ApeRouter合约
https://bscscan.com/address/0xcF0feBd3f17CEf5b47b0cD257aCf6025c5BFf3b7#code
参考UniswapV2的UniswapV2Router02 -
BananaToken合约
https://bscscan.com/address/0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95#code
参考 SushiSwap的SushiToken -
MasterApe合约
https://bscscan.com/address/0x5c8D727b265DBAfaba67E050f2f739cAeEB4A6F9#code
参考SushiSwap的MasterChef -
Timelock合约
https://bscscan.com/address/0x2F07969090a2E9247C761747EA2358E5bB033460#code
参考SushiSwap的Timelock
在ApeSwap的配对合约中,手续费仍然是0.3%,但协议抽成比例改成了1/4,即从这0.3%中再抽取1/4给开发团队,剩余的给LP提供者。下面介绍ApeSwap的检查流程。
1 下载ApeSwap工程
地址:https://github.com/ApeSwapFinance/apeswap-banana-farm
2 修改配置和安装依赖包
将下载的apeswap-banana-farm-master.zip解压,然后将工程文件夹名称改为apeswap-banana-farm。
2.1 修改yarn.lock
由于dependencies字段下的ethereumjs-abi需要手动指定版本号,故在yarn.lock的第3729行,改成如下:
dependencies:
ethereumjs-abi "0.6.8"
2.2 安装依赖包
cd apeswap-banana-farm
sudo yarn install
3 编译合约
a) 在ganache设置IP为127.0.0.1,端口为8545,重启ganache
b)打开一个黑框框终端,依次输入如下命令:
## 进入工程
cd apeswap-banana-farm
## 打开truffle控制台
truffle console
## 编译智能合约
compile
## 退出truffle
## 按Ctrl+C、Ctrl+D 退出truffle
4 用Slither检查合约
4.1 用相对路径代替@
由于Slither不支持@方式的代码导入,所以需要用相对路径来代替@,比如
## 修改前
import "@pancakeswap/pancake-swap-lib/contracts/token/BEP20/BEP20.sol";
## 修改后
import "../node_modules/@pancakeswap/pancake-swap-lib/contracts/token/BEP20/BEP20.sol";
即在apeswap-banana-farm/contracts的每个合约文件里,用 …/node_modules/@pancakeswap 替换 @pancakeswap
4.2 启动Docker
在桌面的任务栏找到Docker,双击启动它,然后,打开Slither实例,命令如下:
## 在Slither实例
docker run -it -v /Users/apple/Downloads/ShenJi/20211012/apeswap-banana-farm:/contract trailofbits/eth-security-toolbox
## 进入/contract目录
cd /contract
4.3 检查合约
a) 检查BananaToken合约
slither ./contracts/BananaToken.sol --solc /usr/bin/solc-v0.6.12
b) 检查BEP20RewardApe合约
slither ./contracts/BEP20RewardApe.sol --solc /usr/bin/solc-v0.6.12
c) 检查BEP20RewardApeV2合约
slither ./contracts/BEP20RewardApeV2.sol --solc /usr/bin/solc-v0.6.12
d) 检查BNBRewardApe合约
slither ./contracts/BNBRewardApe.sol --solc /usr/bin/solc-v0.6.12
e) 检查BnbStaking合约
slither ./contracts/BnbStaking.sol --solc /usr/bin/solc-v0.6.12
f) 查LotteryRewardPool合约
slither ./contracts/LotteryRewardPool.sol --solc /usr/bin/solc-v0.6.12
g) 检查MasterApe合约
slither ./contracts/MasterApe.sol --solc /usr/bin/solc-v0.6.12
注意,Slither的误报率比较高,约为40%,这些有歧义的报错,需要进行人工走读代码,进行审计。
以上是关于检查ApeSwap工程的主要内容,如果未能解决你的问题,请参考以下文章