Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat, perf, ci, style: Enhancements to Localization, Server Configuration, and Code Clarity #572

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions deployment/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ RUN apt update && apt install -y postgresql-client
# Expose the ENVs to the env of the container
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
ENV HOST="localhost"
ENV SERVER_PORT="${SERVER_PORT:-3000}"
ENV SYNCER_PORT="${SYNCER_PORT:-3001}"
ENV FUEL_PROVIDER="${FUEL_PROVIDER:-https://testnet.fuel.network/v1/graphql}"
Expand Down
50 changes: 42 additions & 8 deletions docker/block-committer/block-commiter.sh
Original file line number Diff line number Diff line change
@@ -1,27 +1,58 @@
#!/bin/sh
set -euo

# Detect system language
if [ -n "${LANG:-}" ]; then
SYSTEM_LANG=${LANG%%.*}
elif [ -n "${LC_ALL:-}" ]; then
SYSTEM_LANG=${LC_ALL%%.*}
elif command -v locale > /dev/null 2>&1; then
SYSTEM_LANG=$(locale | grep LANG | cut -d= -f2 | cut -d_ -f1)
elif command -v chcp > /dev/null 2>&1; then
SYSTEM_LANG=$(chcp | awk '{print $NF}')
case $SYSTEM_LANG in
1254) SYSTEM_LANG="tr" ;; # Turkish
1252) SYSTEM_LANG="en" ;; # English
936) SYSTEM_LANG="zh" ;; # Chinese
932) SYSTEM_LANG="ja" ;; # Japanese
850) SYSTEM_LANG="es" ;; # Spanish
437) SYSTEM_LANG="de" ;; # German
860) SYSTEM_LANG="fr" ;; # French
*) SYSTEM_LANG="en" ;; # Default to English
esac
else
SYSTEM_LANG="en" # Default to English
fi

# Load translations from JSON file
TRANSLATIONS=$(cat translations.json | jq -r ".${SYSTEM_LANG}")

# Translation function
translate() {
echo $(echo $TRANSLATIONS | jq -r ".$1")
}

RETRIES=${RETRIES:-60}
DELAY=${DELAY:-10}
JSON='{"jsonrpc":"2.0","id":0,"method":"net_version","params":[]}'

if [ -z "$ETHEREUM_RPC" ]; then
echo "Must specify \$ETHEREUM_RPC."
translate "must_specify_ethereum_rpc"
exit 1
fi
if [ -z "$FUEL_GRAPHQL_ENDPOINT" ]; then
echo "Must specify \$FUEL_GRAPHQL_ENDPOINT."
translate "must_specify_fuel_graphql_endpoint"
exit 1
fi
if [ -z "$DEPLOYMENTS_HTTP" ]; then
echo "Must specify \$DEPLOYMENTS_HTTP."
translate "must_specify_deployments_http"
exit 1
fi

echo $FUEL_GRAPHQL_ENDPOINT/health

# wait for the base layer to be up
echo "Waiting for Fuel Core chain."
translate "waiting_for_fuel_core_chain"
curl \
--fail \
--show-error \
Expand All @@ -30,10 +61,10 @@ curl \
--retry $RETRIES \
--retry-delay $DELAY \
$FUEL_GRAPHQL_ENDPOINT/health > /dev/null
echo "Connected to Fuel Core chain."
translate "connected_to_fuel_core_chain"

# get the deployments file from the deployer
echo "Waiting for l1 chain deployment data."
translate "waiting_for_l1_chain_deployment_data"
curl \
--fail \
--show-error \
Expand All @@ -44,14 +75,17 @@ curl \
--retry-delay $DELAY \
$DEPLOYMENTS_HTTP \
-o addresses.json
echo "Got l1 chain deployment data."
translate "got_l1_chain_deployment_data"

# pull data from deployer dump
export STATE_CONTRACT_ADDRESS=$(cat "./addresses.json" | jq -r .FuelChainState)
translate "state_contract_address"
echo "STATE_CONTRACT_ADDRESS: $STATE_CONTRACT_ADDRESS"
translate "ethereum_rpc"
echo "ETHEREUM_RPC: $ETHEREUM_RPC"
translate "fuel_graphql_endpoint"
echo "FUEL_GRAPHQL_ENDPOINT: $FUEL_GRAPHQL_ENDPOINT"

# start the Block Commiter
echo "Starting block commiter"
translate "starting_block_commiter"
exec /root/fuel-block-committer
93 changes: 93 additions & 0 deletions docker/block-committer/translations.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
"en": {
"must_specify_ethereum_rpc": "Must specify $ETHEREUM_RPC.",
"must_specify_fuel_graphql_endpoint": "Must specify $FUEL_GRAPHQL_ENDPOINT.",
"must_specify_deployments_http": "Must specify $DEPLOYMENTS_HTTP.",
"waiting_for_fuel_core_chain": "Waiting for Fuel Core chain.",
"connected_to_fuel_core_chain": "Connected to Fuel Core chain.",
"waiting_for_l1_chain_deployment_data": "Waiting for l1 chain deployment data.",
"got_l1_chain_deployment_data": "Got l1 chain deployment data.",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "Starting block commiter"
},
"tr": {
"must_specify_ethereum_rpc": "$ETHEREUM_RPC belirtilmelidir.",
"must_specify_fuel_graphql_endpoint": "$FUEL_GRAPHQL_ENDPOINT belirtilmelidir.",
"must_specify_deployments_http": "$DEPLOYMENTS_HTTP belirtilmelidir.",
"waiting_for_fuel_core_chain": "Fuel Core zinciri bekleniyor.",
"connected_to_fuel_core_chain": "Fuel Core zincirine bağlandı.",
"waiting_for_l1_chain_deployment_data": "l1 zincir dağıtım verileri bekleniyor.",
"got_l1_chain_deployment_data": "l1 zincir dağıtım verileri alındı.",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "Blok komitörü başlatılıyor"
},
"zh": {
"must_specify_ethereum_rpc": "必须指定 $ETHEREUM_RPC。",
"must_specify_fuel_graphql_endpoint": "必须指定 $FUEL_GRAPHQL_ENDPOINT。",
"must_specify_deployments_http": "必须指定 $DEPLOYMENTS_HTTP。",
"waiting_for_fuel_core_chain": "等待 Fuel Core 链。",
"connected_to_fuel_core_chain": "已连接到 Fuel Core 链。",
"waiting_for_l1_chain_deployment_data": "等待 l1 链部署数据。",
"got_l1_chain_deployment_data": "已获取 l1 链部署数据。",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "启动区块提交器"
},
"ja": {
"must_specify_ethereum_rpc": "$ETHEREUM_RPC を指定する必要があります。",
"must_specify_fuel_graphql_endpoint": "$FUEL_GRAPHQL_ENDPOINT を指定する必要があります。",
"must_specify_deployments_http": "$DEPLOYMENTS_HTTP を指定する必要があります。",
"waiting_for_fuel_core_chain": "Fuel Core チェーンを待っています。",
"connected_to_fuel_core_chain": "Fuel Core チェーンに接続されました。",
"waiting_for_l1_chain_deployment_data": "l1 チェーンのデプロイメントデータを待っています。",
"got_l1_chain_deployment_data": "l1 チェーンのデプロイメントデータを取得しました。",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "ブロックコミッターを開始しています"
},
"es": {
"must_specify_ethereum_rpc": "Debe especificar $ETHEREUM_RPC.",
"must_specify_fuel_graphql_endpoint": "Debe especificar $FUEL_GRAPHQL_ENDPOINT.",
"must_specify_deployments_http": "Debe especificar $DEPLOYMENTS_HTTP.",
"waiting_for_fuel_core_chain": "Esperando la cadena de Fuel Core.",
"connected_to_fuel_core_chain": "Conectado a la cadena de Fuel Core.",
"waiting_for_l1_chain_deployment_data": "Esperando los datos de implementación de la cadena l1.",
"got_l1_chain_deployment_data": "Datos de implementación de la cadena l1 obtenidos.",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "Iniciando el commit de bloques"
},
"de": {
"must_specify_ethereum_rpc": "$ETHEREUM_RPC muss angegeben werden.",
"must_specify_fuel_graphql_endpoint": "$FUEL_GRAPHQL_ENDPOINT muss angegeben werden.",
"must_specify_deployments_http": "$DEPLOYMENTS_HTTP muss angegeben werden.",
"waiting_for_fuel_core_chain": "Warten auf die Fuel Core-Kette.",
"connected_to_fuel_core_chain": "Mit der Fuel Core-Kette verbunden.",
"waiting_for_l1_chain_deployment_data": "Warten auf l1-Kettenbereitstellungsdaten.",
"got_l1_chain_deployment_data": "l1-Kettenbereitstellungsdaten erhalten.",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "Block-Committer wird gestartet"
},
"fr": {
"must_specify_ethereum_rpc": "Doit spécifier $ETHEREUM_RPC.",
"must_specify_fuel_graphql_endpoint": "Doit spécifier $FUEL_GRAPHQL_ENDPOINT.",
"must_specify_deployments_http": "Doit spécifier $DEPLOYMENTS_HTTP.",
"waiting_for_fuel_core_chain": "En attente de la chaîne Fuel Core.",
"connected_to_fuel_core_chain": "Connecté à la chaîne Fuel Core.",
"waiting_for_l1_chain_deployment_data": "En attente des données de déploiement de la chaîne l1.",
"got_l1_chain_deployment_data": "Données de déploiement de la chaîne l1 obtenues.",
"state_contract_address": "STATE_CONTRACT_ADDRESS:",
"ethereum_rpc": "ETHEREUM_RPC:",
"fuel_graphql_endpoint": "FUEL_GRAPHQL_ENDPOINT:",
"starting_block_commiter": "Démarrage du commiteur de blocs"
}
}
65 changes: 51 additions & 14 deletions docker/fuel-core/fuel_core.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,59 @@
#!/bin/sh
set -euo

# Number of retries for HTTP requests
RETRIES=${RETRIES:-160}

# JSON-RPC request payload
JSON='{"jsonrpc":"2.0","id":0,"method":"net_version","params":[]}'

# Path to the Fuel database
FUEL_DB_PATH=./mnt/db/

# Detect system language
if [ -n "${LANG:-}" ]; then
SYSTEM_LANG=${LANG%%.*}
elif [ -n "${LC_ALL:-}" ]; then
SYSTEM_LANG=${LC_ALL%%.*}
elif command -v locale > /dev/null 2>&1; then
SYSTEM_LANG=$(locale | grep LANG | cut -d= -f2 | cut -d_ -f1)
elif command -v chcp > /dev/null 2>&1; then
SYSTEM_LANG=$(chcp | awk '{print $NF}')
case $SYSTEM_LANG in
1254) SYSTEM_LANG="tr" ;; # Turkish
1252) SYSTEM_LANG="en" ;; # English
936) SYSTEM_LANG="zh" ;; # Chinese
932) SYSTEM_LANG="ja" ;; # Japanese
850) SYSTEM_LANG="es" ;; # Spanish
437) SYSTEM_LANG="de" ;; # German
860) SYSTEM_LANG="fr" ;; # French
*) SYSTEM_LANG="en" ;; # Default to English
esac
else
SYSTEM_LANG="en" # Default to English
fi

# Load translations from JSON file
TRANSLATIONS=$(cat translations.json | jq -r ".${SYSTEM_LANG}")

# Translation function
translate() {
echo $(echo $TRANSLATIONS | jq -r ".$1")
}

# Check if L1_CHAIN_HTTP environment variable is set
if [ -z "$L1_CHAIN_HTTP" ]; then
echo "Must specify \$L1_CHAIN_HTTP."
translate "must_specify_l1_chain_http"
exit 1
fi

if [ -z "$DEPLOYMENTS_HTTP" ]; then
echo "Must specify \$DEPLOYMENTS_HTTP."
translate "must_specify_deployments_http"
exit 1
fi

# wait for the base layer to be up
echo "Waiting for l1 chain."
# Wait for the L1 chain to be up and running
translate "waiting_for_l1_chain"
curl \
--fail \
--show-error \
Expand All @@ -26,10 +64,10 @@ curl \
--retry-delay 1 \
-d $JSON \
$L1_CHAIN_HTTP > /dev/null
echo "Connected to l1 chain."
translate "connected_to_l1_chain"

# get the deployments file from the deployer
echo "Waiting for l1 chain deployment data."
# Fetch the deployment data from the deployer
translate "waiting_for_deployment_data"
curl \
--fail \
--show-error \
Expand All @@ -40,16 +78,15 @@ curl \
--retry-delay 5 \
$DEPLOYMENTS_HTTP \
-o addresses.json
echo "Got l1 chain deployment data."
translate "got_deployment_data"

# pull data from deployer dump
# Extract the FuelMessagePortal contract address from the deployment data
export FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS=$(cat "./addresses.json" | jq -r .FuelMessagePortal)
echo "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: $FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS"
echo "L1_CHAIN_HTTP: $L1_CHAIN_HTTP"
translate "fuel_message_portal_address" $FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS
translate "l1_chain_http" $L1_CHAIN_HTTP

# start the Fuel client
#--db-path ${FUEL_DB_PATH}
echo "Starting fuel node."
# Start the Fuel node
translate "starting_fuel_node"
exec /root/fuel-core run \
--ip $FUEL_IP \
--port $FUEL_PORT \
Expand Down
79 changes: 79 additions & 0 deletions docker/fuel-core/translations.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"en": {
"must_specify_l1_chain_http": "Must specify $L1_CHAIN_HTTP.",
"must_specify_deployments_http": "Must specify $DEPLOYMENTS_HTTP.",
"waiting_for_l1_chain": "Waiting for L1 chain.",
"connected_to_l1_chain": "Connected to L1 chain.",
"waiting_for_deployment_data": "Waiting for L1 chain deployment data.",
"got_deployment_data": "Got L1 chain deployment data.",
"starting_fuel_node": "Starting Fuel node.",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
},
"tr": {
"must_specify_l1_chain_http": "Lütfen $L1_CHAIN_HTTP belirtin.",
"must_specify_deployments_http": "Lütfen $DEPLOYMENTS_HTTP belirtin.",
"waiting_for_l1_chain": "L1 zincirinin başlamasını bekliyor.",
"connected_to_l1_chain": "L1 zincirine bağlandı.",
"waiting_for_deployment_data": "L1 zincir dağıtım verilerini bekliyor.",
"got_deployment_data": "L1 zincir dağıtım verilerini aldı.",
"starting_fuel_node": "Fuel düğümü başlatılıyor.",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
},
"es": {
"must_specify_l1_chain_http": "Debe especificar $L1_CHAIN_HTTP.",
"must_specify_deployments_http": "Debe especificar $DEPLOYMENTS_HTTP.",
"waiting_for_l1_chain": "Esperando la cadena L1.",
"connected_to_l1_chain": "Conectado a la cadena L1.",
"waiting_for_deployment_data": "Esperando datos de implementación de la cadena L1.",
"got_deployment_data": "Datos de implementación de la cadena L1 obtenidos.",
"starting_fuel_node": "Iniciando nodo Fuel.",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
},
"fr": {
"must_specify_l1_chain_http": "Doit spécifier $L1_CHAIN_HTTP.",
"must_specify_deployments_http": "Doit spécifier $DEPLOYMENTS_HTTP.",
"waiting_for_l1_chain": "En attente de la chaîne L1.",
"connected_to_l1_chain": "Connecté à la chaîne L1.",
"waiting_for_deployment_data": "En attente des données de déploiement de la chaîne L1.",
"got_deployment_data": "Données de déploiement de la chaîne L1 obtenues.",
"starting_fuel_node": "Démarrage du nœud Fuel.",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
},
"de": {
"must_specify_l1_chain_http": "Muss $L1_CHAIN_HTTP angeben.",
"must_specify_deployments_http": "Muss $DEPLOYMENTS_HTTP angeben.",
"waiting_for_l1_chain": "Warten auf L1-Kette.",
"connected_to_l1_chain": "Mit L1-Kette verbunden.",
"waiting_for_deployment_data": "Warten auf Bereitstellungsdaten der L1-Kette.",
"got_deployment_data": "Bereitstellungsdaten der L1-Kette erhalten.",
"starting_fuel_node": "Fuel-Knoten wird gestartet.",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
},
"zh": {
"must_specify_l1_chain_http": "必须指定 $L1_CHAIN_HTTP.",
"must_specify_deployments_http": "必须指定 $DEPLOYMENTS_HTTP.",
"waiting_for_l1_chain": "等待 L1 链.",
"connected_to_l1_chain": "已连接到 L1 链.",
"waiting_for_deployment_data": "等待 L1 链部署数据.",
"got_deployment_data": "已获取 L1 链部署数据.",
"starting_fuel_node": "启动 Fuel 节点.",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
},
"ja": {
"must_specify_l1_chain_http": "$L1_CHAIN_HTTP を指定する必要があります。",
"must_specify_deployments_http": "$DEPLOYMENTS_HTTP を指定する必要があります。",
"waiting_for_l1_chain": "L1 チェーンを待っています。",
"connected_to_l1_chain": "L1 チェーンに接続されました。",
"waiting_for_deployment_data": "L1 チェーンのデプロイメントデータを待っています。",
"got_deployment_data": "L1 チェーンのデプロイメントデータを取得しました。",
"starting_fuel_node": "Fuel ノードを起動しています。",
"fuel_message_portal_address": "FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS: ",
"l1_chain_http": "L1_CHAIN_HTTP: "
}
}
3 changes: 2 additions & 1 deletion packages/graphql/.env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
LOG_DIR="./logs"
FUEL_PROVIDER=http://localhost:4000/v1/graphql
HOST="localhost"
FUEL_PROVIDER=http://${HOST}:4000/v1/graphql
SERVER_PORT=3004
SERVER_API_KEY=your-secret-key
SYNCER_PORT=3005
Expand Down
3 changes: 2 additions & 1 deletion packages/graphql/.env.production
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
LOG_DIR="/var/logs"
FUEL_PROVIDER=http://localhost:4000/v1/graphql
HOST="localhost"
FUEL_PROVIDER=http://${HOST}:4000/v1/graphql
SERVER_PORT=3004
SERVER_API_KEY=your-secret-key
SYNCER_PORT=3005
Expand Down
Loading