全部版块 我的主页
论坛 金融投资论坛 六区 金融实务版 比特币、区块链与元宇宙
592 0
2022-09-12
如何在 testnet build 一个 AlpacaFinance
Prerequisite(我的环境) Ubuntu 20.04 nodejs 17.2 yarn npm
· 额外推荐使用的插件 hardhat-etherscan,用于 verify 合约的
· 建议大家在修改 testnet.json 改为自己合约地址时候使用全局替换

Repo 结构解释
1. alpaca 使用 yarn + hardhat,hardhat 详细配置见 hardhat.confg.ts,yarn script 见 pancakege.json
2. deploy 的 ts 在 deploy/exec 下,config 接口在 deploy/interface,具体参数看选择的 network 是 testnet 还是 mainnet


具体步骤
1. Git clone https://github.com/alpaca-finance/bsc-alpaca-contract
2. Copy .env.example 文件,改为.env,并相应修改 private key 和 rpc url
3. Yarn install 这一步会遇到没有 typechain 的错误,中途退出后直接运行 yarn compile。 Compile 成功后再 install 即可
· 需要注意,alpaca 使用的是 Timelock,为了部署方便,需要禁用 Timelock。方法是找 到对应的 deploy.ts 文件,然后修改用 Timelock 交互的部分,改为直接用对应的 factory 交互
· Factory 的位置在 typechain 文件夹下,调用方式参照 web3.js,使用 await+参数 · Timelock 还有两个问题会导致编译失败,一是 mock.json 的缺失,解决方法是在 deploy 下新建 results 文件夹,并写入 mock.json 文件,内容是[]即可
· 第二个问题是 deploy/exec/Timelock 内有两个跟 Timelock 有关的 deploy 脚本,注释 掉 for 循环内的内容即可

4. 部署 Pancakeswap,主要是 Router Factory 以及 WBNB BUSD 和 CAKE。详见 https://nhancv.com/host-your-own-pancakeswap-testnet/
· 部署好后记得相应修改 testnet.json 里的地址,token 和 router 等,注意 router 地 址填在 V2
· 重要的是,需要部署 farm 的部分,在 pancakeswap 的 repo 里有 pancakeswap-farm, 印象里没什么需要注意的,下次有时间再写

5. 部署 alpaca token + fairlaunch,使用 yarn deploy:testnet:002 · Fairlaunch 设置 bonus 参数可能会错误,可以自己手动在 bscscan 设置一下
6. 部署 TripleSlopeModel 使用 yarn deploy:testnet:004
7. 部署 WNativeRelayer 使用 yarn deploy:testnet:005 · 部署前记得修改 wnative-relayer.ts,改为自己 deploy 的 WBNB 地址,这个被 hardcode 在脚本里了(狗头)

8. 部署 sharestrategies 使用 yarn deploy:testnet:003
· 31 行可以一次性把下面所有 sharestrategies 的都加上
· 32 行 whitelist 要改成[],并在每个 strategy 的分支里注释掉 setWorkersOk 的语句

9. 部署 SimpleOracle 使用 deploy:testnet:006
· 记得把 feeder_addr 改成自己
10.部署 WorkerConfig 使用 deploy:testnet:007
· Oracle 被 hardcode 了,记得改成刚才部署的
11.部署 VaultConfig 使用 deploy:testnet:008
· MIN_DEBT_SIZE,RESERVE_POOL_BPS,KILL_PRIZE_BPS,TREASURY_ADDR 这些是 hardcode 的参数,可以把 treasury_addr 改成自己的地址 · Config.TripleSlopeModel103 填 simpleoracle 地 址 即 可 , config.Tokens.WBNB, config.SharedConfig.WNativeRelayer, config.FairLaunch.address,相应修改
12.部署 ibWBNB Vault 使用 deploy:testnet:009 · 需要修改 vault.ts,改为 ibWBNB,并修改相应的 config,除了 ibWBNB 的 address 无 所谓,其他都很重要,要仔细检查
· 82 到 108 直接注释掉,改为之后手动操作 · 部 署 成 功 后 , 先 添 加 debtToken 的 pool , 在 Fairlaunch 合 约 中 调 用 addPool(uint256,address,bool),point 随便写个不是 0 的,address 填 debttoken 的 address(会在刚才的 log 里),最后一个 bool 填 true
· 接着添加 ibWBNB 的 pool,在 Fairlaunch 中调用 addPool,address 填 ibWBNB 的
· 最后在 ibWBNB 合约中调用 setFairLaunchPoolId,注意填的参数是第一个 Id 部署之后

到这里我的试验就基本结束了,grazerange 之类的我没有尝试部署。有几个提醒 · 在代币的合约里给自己 mint 的权限,方便调试 · Leverage farm 中最有可能卡在 workerConfig 那个 isWorkerStable 那里,需要手动的 根据 pancakeswap 的 pair 的价值,算一个 price,然后在 oracle 内 setPrice,这样才 能成功。Price 是 18 位的,举例说明,1e18 相当于 1WBNB/BUSD 祝大家玩的愉快

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群