Published: 17 Nov 2024 › Updated: 17 Nov 2024
简易计算UniswapV2的代币价格 / 学习智能合约#67
简易计算UniswapV2的代币价格,这算是一个补充吧。以前虽也看过V2的合约,一般也用不着自己去求。这次是要集成$Slime的充值,需要计算一下价格,就找来资料试着计算下。
UniswapV2主要使用了 RouterV2 合约的两个方法,把它写成ABI,如下:
const routerAbi = [
"function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts)",
"function getAmountsIn(uint amountOut, address[] memory path) public view returns (uint[] memory amounts)"
]
以第一个函数getAmountsOut为例,amountIn 表示卖出 token 数量,path 表示交易路径,比如你要卖出 TokenA,换成 ETH,那么最简单的交易路径就是 TokenA -> WETH, 返回值 amounts,表示能获得的目标 WETH 数量。所以 getAmountsOut 这个函数最终表达的意思就是:用某个数量的TokenA,能换到多少数量的TokenB。
这里我们需要用一定量的$Slime换成WETH,然后再相除就可求出 $Slime/WETH的价格,代码如下:
import { ethers } from 'ethers'
//Base网络配置
const base_url = "https://mainnet.base.org"
const routerAbi = [
"function getAmountsIn(uint amountOut, address[] memory path) public view returns (uint[] memory amounts)",
"function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts)"
]
const slimeCon = '0x68503A15efD0D2F81D185a07d60Ed9Ac2a66B59e'
const WETH = '0x4200000000000000000000000000000000000006'
const uniswapRouter = '0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24'
const provider = new ethers.JsonRpcProvider(base_url)
const routerContract = new ethers.Contract(uniswapRouter, routerAbi, provider)
async function getSlimePrice(){
let setAmount = ethers.parseEther("28800") //假设卖出28800个slime币
let amountOuts = await routerContract.getAmountsOut(setAmount, [slimeCon, WETH])
let amountEthOut = ethers.formatEther(amountOuts[1])
console.log(896,setAmount, amountEthOut)
//28800.0 0.001115090084330875
// 最后价格
let price_slime_eth = amountEthOut / 28800
}
得到slime/eth价格后再乘以以太的美元价格($3111.78),就得出$slime的美元价格:0.00012048
Leave 简易计算UniswapV2的代币价格 / 学习智能合约#67 to:
Read more #cn posts
Best Posts From lemooljiang
We have not curated any of lemooljiang's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From lemooljiang
- Nextjs初体验,和Nuxt的异同
- DeepTutor:AI个性化辅导平台 / ai #57
- ComfyUI:可编程和自动化的PS / ai #56
- 将Neo4j封装进Agent / ai #55
- 闲鱼省钱大法:极限0.5折!
- 对Neo4j批量导入结构化数据 / ai #54
- langchain对neo4j进行交互,写入和查询数据 / ai #53
- 知识图谱和图数据库Neo4j的作用和使用场景 / ai #52
- SpaceX、美股和比特币
- 又是币圈血洗日!
- 链股合流,当币安也开始卖股票啰
- 天涯社区重启,爷青回?
- 诺基亚在AI时代重新杀回来啦
- 《2049:未来10000天的可能》书中的镜像世界为什么不叫元宇宙
- 今天适合吃披萨
- 开通即被封,别再给Claude送人头了!
- 两根内存条引发的“官司”
- AI·Joe V12更新, 更新GPT-5.5和DeepSeek V4 等
- 中医进校园活动反响热烈
- 猪价低伤农,猪价贵伤民