Created
February 28, 2024 17:48
-
-
Save d10r/19cafec27da590eb9ce81cb728625e46 to your computer and use it in GitHub Desktop.
deploy-sferp-nft.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# deploys an instance of GdaNFTContract to a given network | |
# usage: deploy.sh <network> <priceMillis> | |
# env var PRIVKEY needs to be set | |
# env var <explorer>_API_KEY needed for verification | |
# env vars can be provided via .env file | |
set -eu | |
source .env | |
network_name=$1 | |
priceMillis=$2 | |
# get network metadata | |
metadata=$(curl -s "https://raw.githubusercontent.com/superfluid-finance/protocol-monorepo/dev/packages/metadata/networks.json") | |
network=$(echo "$metadata" | jq -r '.[] | select(.name == "'$network_name'")') | |
# verify chain id | |
rpc_url=${RPC:-"https://$network_name.rpc.x.superfluid.dev?app=deployer"} | |
connected_chain_id_hex=$(curl -s -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' $rpc_url | jq -r '.result') | |
connected_chain_id=$(printf "%d" $connected_chain_id_hex) | |
expected_chain_id=$(echo "$network" | jq -r '.chainId') | |
if [ "$connected_chain_id" != "$expected_chain_id" ]; then | |
echo "chain id mismatch: expected $expected_chain_id, connected to $connected_chain_id" | |
exit 1 | |
fi | |
# get explorer api key | |
explorer_url=$(echo "$network" | jq -r '.explorer') | |
explorer_api_key_name=$(echo $explorer_url | sed -E 's|https://(.*)\..*|\U\1_API_KEY|g' | sed 's/\./_/g' | sed 's/\-/_/g') | |
fallback_explorer_api_key_name=$(echo $explorer_api_key_name | sed 's/^[^_]*_//') | |
explorer_api_key=${!explorer_api_key_name:-${!fallback_explorer_api_key_name}} | |
# get constructor args | |
name=${NAME:-"Superfluid Ecosystem Rewards Pass"} | |
symbol=${SYMBOL:-"SFERP"} | |
iseth_addr=$(echo "$network" | jq -r '.nativeTokenWrapper') | |
price=$(echo "$priceMillis * 1000000000000000" | bc) | |
# 1 month, defined as 365 days divided by 12 | |
duration=2628000 | |
if [[ "${VERIFY_CONTRACT:-}" != "" ]]; then | |
echo "verify-only mode for contract $VERIFY_CONTRACT" | |
encoded_args=$(cast abi-encode "constructor(string,string,address,uint96,uint96)" "$name" "$symbol" "$iseth_addr" "$price" "$duration") | |
echo "encoded args: $encoded_args" | |
forge verify-contract --chain $connected_chain_id --encoded-constructor-args $encoded_args --etherscan-api-key $explorer_api_key $VERIFY_CONTRACT src/GdaNFTContract.sol:GdaNFTContract | |
exit 0 | |
fi | |
echo "deploying with args: $name, $symbol, $iseth_addr, $price, $duration" | |
forge create --rpc-url $rpc_url src/GdaNFTContract.sol:GdaNFTContract --private-key=$PRIVKEY --constructor-args "$name" "$symbol" "$iseth_addr" $price $duration --etherscan-api-key $explorer_api_key --verify |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment