Files
contract/bin/getprice
dexorder 25def69c66 dexorder
2024-10-17 02:42:28 -04:00

34 lines
1005 B
Bash
Executable File

#!/bin/bash
if [ -z "$1" ]; then
# mockchain price
source bin/shmockenv
SQRTX96=$(cast call $MOCKENV "price()" | cast to-dec)
D0=$T0DEC
D1=$T1DEC
T0INT=$(cast to-dec $TOKEN0)
T1INT=$(cast to-dec $TOKEN1)
#echo $T0INT $T1INT
INVERTED=$(echo $T0INT '>' $T1INT | bc)
else
# pool price
SQRTX96=$(cast call "$1" "slot0()(uint160,int24,uint16,uint16,uint16,uint8,bool)" | head -1 | cut -d ' ' -f 1)
T0=$(cast call "$1" "token0()" | cast parse-bytes32-address)
D0=$(cast call "$T0" "decimals()" | cast to-dec)
T1=$(cast call "$1" "token1()" | cast parse-bytes32-address)
D1=$(cast call "$T1" "decimals()" | cast to-dec)
echo sqrtX96 $SQRTX96
echo decimals $D0 $D1
INVERTED=0
fi
#echo sqrtX96 $SQRTX96
echo inverted $INVERTED
if [ "$INVERTED" == "0" ]; then
echo inverted
FORMULA='scale=18; '"$SQRTX96"'^2 * 10^('"$D0"-"$D1"') / 2^(96*2)'
else
FORMULA='scale=18; 2^(96*2) * 10^('"$D1"-"$D0"') / '"$SQRTX96"'^2'
fi
#echo "$FORMULA"
echo "$FORMULA" | bc