34 lines
1005 B
Bash
Executable File
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
|