本文作者:cj[1]
😄 肝了好久 肝了一个仿PancakeSwap的闪兑前端
市面上大部分dapp[2]都是由React开发,不想学React只能自己肝一个Vue项目了。也给用Vue开发的朋友一些分享。
奈何我不会react, 无法拿开源代码直接用,只能看着源码一点一点肝出Vue版本,核心js慢慢肝出来的。
该JieSwap用的是PancakeSwap主网的合约,在这里闪兑相当于在Pancake的池子闪兑,如有错误,不负责任。
首先要了解AMM的概念,动手体验一下什么是闪兑。可以在SushiSwap[3]切换测试网即可体验。https://app.sushi.com/swap[4]
需要大概了解uniswap[5]的合约源码,知道他的闪兑逻辑,Pair池子的概念,池子的定价等
https://github.com/Sexy-J/JieSwap[6]
部署在免费的服务器https://jieswap-x4uvs6eu-sexy-j.4everland.app/#/swap[7]
支持多路径闪兑,中间路径可能有BNB,USDT,BUSD
支持普通ERC20,燃烧型ERC20 闪兑
支持查看在本网站的交易记录
这三个功能也是项目的难点
首先要先筛选出所有的路径,然后查询路径中每个池子的reserve,再通过输入或者输出 计算中每一条路径的输入或者输出,选择最优解。
默认使用普通的swap方法,如果普通的swap方法报错,则使用支持燃烧币swap方法再调用一遍。
当用户进行授权,交易等操作时,一旦得到hash就立马存入localstoage,然后每6秒去查询当前区块,如果当前区块发生变化,则去查询一遍所有的未完成的交易记录
[1]cj: https://learnblockchain.cn/people/4042
[2]dapp: https://learnblockchain.cn/article/2594
[3]SushiSwap: https://learnblockchain.cn/article/2740
[4]https://app.sushi.com/swap: https://app.sushi.com/swap
[5]uniswap: https://learnblockchain.cn/article/274
[6]https://github.com/Sexy-J/JieSwap: https://github.com/Sexy-J/JieSwap
[7]https://jieswap-x4uvs6eu-sexy-j.4everland.app/#/swap: https://jieswap-x4uvs6eu-sexy-j.4everland.app/#/swap