Skip to content

Commit

Permalink
ci: script to extract vault info
Browse files Browse the repository at this point in the history
  • Loading branch information
kerber0x committed Dec 20, 2023
1 parent c28658d commit 02964fe
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 11 deletions.
38 changes: 27 additions & 11 deletions scripts/deployment/extract_pools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ project_root_path=$(realpath "$0" | sed 's|\(.*\)/.*|\1|' | cd ../ | pwd)

# Displays tool usage
function display_usage() {
echo "WW Pool Deployer"
echo -e "\nUsage:./deploy_pool.sh [flags].\n"
echo "WW Pool Extractor"
echo -e "\nUsage:./extract_pools.sh [flags].\n"
echo -e "Available flags:\n"
echo -e " -h \thelp"
echo -e " -c \tThe chain where you want to deploy (juno|juno-testnet|terra|terra-testnet|... check chain_env.sh for the complete list of supported chains)"
echo -e " -p \tPool configuration file to get deployment info from."
echo -e " -c \tThe chain where you want to extract pools on (juno|juno-testnet|terra|terra-testnet|... check chain_env.sh for the complete list of supported chains)"
}

# Generates the label for the given asset pair
Expand All @@ -21,6 +20,8 @@ function generate_label() {
local processed_assets=()

for asset in "${assets[@]}"; do
# reload the original chain env in case it gets overriden by the cw20:* asset case
init_chain_env $chain
local processed_asset="$asset"

# first of, check if the asset is an ibc token. An IBC token can be a native token on the chain it came from, or a token factory token
Expand All @@ -35,6 +36,22 @@ function generate_label() {
# if the denom trace has the pattern factory:*... this is the factory token model adopted by the kujira token factory
elif [[ "$denom_trace_result" == factory:* ]]; then
processed_asset="${denom_trace_result##*:}"

# if the denom trace has the pattern cw20:*...
elif [[ "$denom_trace_result" == cw20:* ]]; then
denom_trace_result=${denom_trace_result#*:}

# remove the cw20: prefix and load the chain env for the chain the token is on
if [[ $denom_trace_result =~ ([a-zA-Z]+)1 ]]; then
x=${BASH_REMATCH[1]}
init_chain_env $x
else
continue
fi

local query='{"token_info":{}}'
local symbol=$($BINARY query wasm contract-state smart $denom_trace_result "$query" --node $RPC --output json | jq -r '.data.symbol')
processed_asset=$symbol
else # else, just use the denom trace result. This can be the case of native tokens being transferred to another chain, i.e. uwhale on terra
processed_asset="$denom_trace_result"
fi
Expand Down Expand Up @@ -115,7 +132,12 @@ function extract_pools() {
done < <(echo "$pairs" | jq -c '.[]')

# Combine all pool entries into a single JSON array and write to the output file
jq -n --argjson pools "$(echo "${pools[@]}" | jq -s '.')" '{pools: $pools}' >"$output_file"
jq -n \
--argjson pools "$(echo "${pools[@]}" | jq -s '.')" \
--arg pool_factory_addr "$pool_factory_addr" \
--arg chain "$CHAIN_ID" \
'{chain: $chain, pool_factory_addr: $pool_factory_addr, pools: $pools }' \
>"$output_file"

echo -e "\n**** Extracted pool data on $CHAIN_ID successfully ****\n"
jq '.' $output_file
Expand All @@ -134,12 +156,6 @@ while getopts $optstring arg; do
chain=$OPTARG
source $deployment_script_dir/deploy_env/chain_env.sh
init_chain_env $OPTARG
if [[ "$chain" = "local" ]]; then
tx_delay=0.5
else
tx_delay=8
fi

extract_pools
;;
h)
Expand Down
73 changes: 73 additions & 0 deletions scripts/deployment/extract_vaults.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/usr/bin/env bash
set -e

# Import the deploy_liquidity_hub script
deployment_script_dir=$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)
project_root_path=$(realpath "$0" | sed 's|\(.*\)/.*|\1|' | cd ../ | pwd)

# Displays tool usage
function display_usage() {
echo "WW Vault Extractor"
echo -e "\nUsage:./extract_vaults.sh [flags].\n"
echo -e "Available flags:\n"
echo -e " -h \thelp"
echo -e " -c \tThe chain where you want to extract vaults on (juno|juno-testnet|terra|terra-testnet|... check chain_env.sh for the complete list of supported chains)"
}

function extract_vaults() {
mkdir -p $project_root_path/scripts/deployment/output
output_file=$project_root_path/scripts/deployment/output/"$CHAIN_ID"_vaults.json
deployment_file=$project_root_path/scripts/deployment/output/"$CHAIN_ID"_liquidity_hub_contracts.json
if [[ ! -f "$output_file" ]]; then
# create file to dump results into
echo '{"vaults": []}' | jq '.' >$output_file
fi

vault_factory_addr=$(jq -r '.contracts[] | select (.wasm == "vault_factory.wasm") | .contract_address' $deployment_file)
local limit=30
query='{"vaults":{"limit": '$limit'}}'
local vaults=$($BINARY query wasm contract-state smart $vault_factory_addr "$query" --node $RPC --output json | jq '.data.vaults')
vault_code_id=$(jq -r '.contracts[] | select (.wasm == "vault.wasm") | .code_id' $deployment_file)
lp_code_id=$(jq -r '.contracts[] | select (.wasm == "terraswap_token.wasm") | .code_id' $deployment_file)

echo -e "\nExtracting vaults info...\n"

jq '[.[] | {vault: .vault, asset_info: .asset_info}]' <<<"$vaults" >$output_file
jq --arg vault_factory_addr "$vault_factory_addr" \
--arg chain "$CHAIN_ID" \
'{chain: $chain, vault_factory_addr: $vault_factory_addr, vaults: [.[] | {vault: .vault, asset_info: .asset_info}]}' <<<$vaults >$output_file

echo -e "\n**** Extracted vault data on $CHAIN_ID successfully ****\n"
jq '.' $output_file
}

if [ -z $1 ]; then
display_usage
exit 0
fi

# get args
optstring=':c:h'
while getopts $optstring arg; do
case "$arg" in
c)
chain=$OPTARG
source $deployment_script_dir/deploy_env/chain_env.sh
init_chain_env $OPTARG
extract_vaults
;;
h)
display_usage
exit 0
;;
:)
echo "Must supply an argument to -$OPTARG" >&2
exit 1
;;
?)
echo "Invalid option: -${OPTARG}"
display_usage
exit 2
;;
esac
done

0 comments on commit 02964fe

Please sign in to comment.