? ? 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%,這些有歧義的報錯,需要進行人工走讀代碼,進行審計,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330408.html
標籤:區塊鏈
