diff --git a/README.md b/README.md
index 608a0f0..fde567a 100644
--- a/README.md
+++ b/README.md
@@ -139,7 +139,7 @@ export BITCART_STORE_API_URL=https://api.bitcart.ai
export BITCART_REVERSEPROXY=none
# cryptocurrency settings
# we enable all currencies we support on the demo to test that they work
-export BITCART_CRYPTOS=btc,bch,ltc,xrg,eth,bnb,matic,trx,grs,xmr
+export BITCART_CRYPTOS=btc,bch,ltc,xrg,eth,bnb,matic,arbeth,trx,grs,xmr
# lightning network for supported coins
export BTC_LIGHTNING=true
export LTC_LIGHTNING=true
diff --git a/compose/arbeth.Dockerfile b/compose/arbeth.Dockerfile
new file mode 100644
index 0000000..3820b7d
--- /dev/null
+++ b/compose/arbeth.Dockerfile
@@ -0,0 +1,48 @@
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "generate-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
+
+FROM python:3.12-alpine AS base
+COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
+
+ENV ELECTRUM_USER=electrum
+ENV ELECTRUM_HOME=/home/$ELECTRUM_USER
+ENV ELECTRUM_DIRECTORY=${ELECTRUM_HOME}/.bitcart-arbeth
+ENV IN_DOCKER=1
+ENV UV_COMPILE_BYTECODE=1
+ENV UV_NO_CACHE=1
+ENV UV_NO_SYNC=1
+ENV ARBETH_HOST=0.0.0.0
+LABEL org.bitcart.image=arbeth-daemon
+
+FROM base AS compile-image
+
+COPY bitcart $ELECTRUM_HOME/site
+
+RUN apk add git gcc python3-dev musl-dev automake autoconf libtool file git make libffi-dev && \
+ cd $ELECTRUM_HOME/site && \
+ uv sync --frozen --no-dev --group arbeth --group otel && \
+ uv run opentelemetry-bootstrap -a requirements | uv pip install --requirement -
+
+FROM base AS build-image
+
+RUN adduser -D $ELECTRUM_USER && \
+ mkdir -p /data/ && \
+ ln -sf /data/ $ELECTRUM_DIRECTORY && \
+ chown ${ELECTRUM_USER} $ELECTRUM_DIRECTORY && \
+ mkdir -p $ELECTRUM_HOME/site && \
+ chown ${ELECTRUM_USER} $ELECTRUM_HOME/site && \
+ apk add --no-cache libsecp256k1-dev git && \
+ apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main jemalloc
+
+COPY --from=compile-image --chown=electrum $ELECTRUM_HOME/site/.venv $ELECTRUM_HOME/.venv
+COPY --from=compile-image --chown=electrum $ELECTRUM_HOME/site $ELECTRUM_HOME/site
+
+ENV PYTHONUNBUFFERED=1 PYTHONMALLOC=malloc LD_PRELOAD=libjemalloc.so.2 MALLOC_CONF=background_thread:true,max_background_threads:1,metadata_thp:auto,dirty_decay_ms:80000,muzzy_decay_ms:80000
+ENV PATH="$ELECTRUM_HOME/.venv/bin:$PATH"
+USER $ELECTRUM_USER
+WORKDIR $ELECTRUM_HOME/site
+
+CMD ["just","daemon", "arbeth"]
diff --git a/dev-setup.sh b/dev-setup.sh
index 9715a6e..5dd7b43 100755
--- a/dev-setup.sh
+++ b/dev-setup.sh
@@ -19,6 +19,7 @@ XRG_HOST=ergon
ETH_HOST=ethereum
BNB_HOST=binancecoin
MATIC_HOST=polygon
+ARBETH_HOST=arbitrum
TRX_HOST=tron
GRS_HOST=groestlcoin
XMR_HOST=monero
diff --git a/generator/constants.py b/generator/constants.py
index 3d44515..557d13b 100644
--- a/generator/constants.py
+++ b/generator/constants.py
@@ -24,6 +24,7 @@
"trx": {"component": "tron"},
"grs": {"component": "groestlcoin"},
"xmr": {"component": "monero"},
+ "arbeth": {"component": "arbitrum"},
}
TOR_CRYPTOS = {"btc": CRYPTOS["btc"]} # cryptos to enable tor proxy for
CRYPTO_COMPONENTS = [CRYPTOS[i]["component"] for i in CRYPTOS]
diff --git a/generator/demo/index.html b/generator/demo/index.html
index b24b76a..f6e4c61 100644
--- a/generator/demo/index.html
+++ b/generator/demo/index.html
@@ -385,6 +385,12 @@
name: "Polygon",
checked: false,
},
+ {
+ id: "arbeth",
+ ticker: "ARBETH",
+ name: "Ethereum (Arbitrum)",
+ checked: false,
+ },
{ id: "trx", ticker: "TRX", name: "Tron", checked: false },
{
id: "grs",
diff --git a/generator/docker-components/arbitrum.yml b/generator/docker-components/arbitrum.yml
new file mode 100644
index 0000000..cc15364
--- /dev/null
+++ b/generator/docker-components/arbitrum.yml
@@ -0,0 +1,24 @@
+services:
+ arbitrum:
+ restart: unless-stopped
+ image: bitcart/bitcart-arbeth:stable
+ environment:
+ ARBETH_NETWORK: ${ARBETH_NETWORK:-mainnet}
+ ARBETH_SERVER: ${ARBETH_SERVER:-https://arb1.arbitrum.io/rpc}
+ ARBETH_SEED_SERVER: ${ARBETH_SEED_SERVER:-}
+ ARBETH_SEED_SERVER_REFRESH_INTERVAL: ${ARBETH_SEED_SERVER_REFRESH_INTERVAL:-3600}
+ ARBETH_ARCHIVE_SERVER: ${ARBETH_ARCHIVE_SERVER:-}
+ ARBETH_DEBUG: ${ARBETH_DEBUG:-false}
+ expose:
+ - "5012"
+ volumes:
+ - "arbitrum_datadir:/data"
+
+ backend:
+ depends_on:
+ - arbitrum
+ links:
+ - arbitrum
+
+volumes:
+ arbitrum_datadir:
diff --git a/generator/docker-components/backend.yml b/generator/docker-components/backend.yml
index bb0f73d..33f6745 100644
--- a/generator/docker-components/backend.yml
+++ b/generator/docker-components/backend.yml
@@ -24,6 +24,7 @@ services:
ETH_NETWORK: ${ETH_NETWORK:-mainnet}
BNB_NETWORK: ${BNB_NETWORK:-mainnet}
MATIC_NETWORK: ${MATIC_NETWORK:-mainnet}
+ ARBETH_NETWORK: ${ARBETH_NETWORK:-mainnet}
TRX_NETWORK: ${TRX_NETWORK:-mainnet}
XRG_NETWORK: ${XRG_NETWORK:-mainnet}
LTC_NETWORK: ${LTC_NETWORK:-mainnet}
diff --git a/generator/docker-components/worker.yml b/generator/docker-components/worker.yml
index 8047212..271f091 100644
--- a/generator/docker-components/worker.yml
+++ b/generator/docker-components/worker.yml
@@ -16,6 +16,7 @@ services:
ETH_NETWORK: ${ETH_NETWORK:-mainnet}
BNB_NETWORK: ${BNB_NETWORK:-mainnet}
MATIC_NETWORK: ${MATIC_NETWORK:-mainnet}
+ ARBETH_NETWORK: ${ARBETH_NETWORK:-mainnet}
TRX_NETWORK: ${TRX_NETWORK:-mainnet}
XRG_NETWORK: ${XRG_NETWORK:-mainnet}
LTC_NETWORK: ${LTC_NETWORK:-mainnet}
diff --git a/helpers.sh b/helpers.sh
index 6229c38..8a50d49 100755
--- a/helpers.sh
+++ b/helpers.sh
@@ -38,6 +38,7 @@ BCH_NETWORK=$BCH_NETWORK
ETH_NETWORK=$ETH_NETWORK
BNB_NETWORK=$BNB_NETWORK
MATIC_NETWORK=$MATIC_NETWORK
+ARBETH_NETWORK=$ARBETH_NETWORK
TRX_NETWORK=$TRX_NETWORK
XRG_NETWORK=$XRG_NETWORK
LTC_NETWORK=$LTC_NETWORK
diff --git a/setup.sh b/setup.sh
index 4535cab..5eefd8f 100755
--- a/setup.sh
+++ b/setup.sh
@@ -62,6 +62,7 @@ Environment variables:
ETH_NETWORK: The network to run ethereum daemon on (eg. mainnet, kovan)
BNB_NETWORK: The network to run binancecoin daemon on (eg. mainnet, testnet)
MATIC_NETWORK: The network to run polygon daemon on (eg. mainnet, testnet)
+ ARBETH_NETWORK: The network to run arbitrum daemon on (eg. mainnet, testnet)
TRX_NETWORK: The network to run tron daemon on (eg. mainnet, testnet)
XRG_NETWORK: The network to run ergon daemon on (eg. mainnet)
LTC_NETWORK: The network to run litecoin daemon on (eg. mainnet, testnet)
@@ -222,6 +223,7 @@ esac
: "${ETH_NETWORK:=mainnet}"
: "${BNB_NETWORK:=mainnet}"
: "${MATIC_NETWORK:=mainnet}"
+: "${ARBETH_NETWORK:=mainnet}"
: "${TRX_NETWORK:=mainnet}"
: "${XRG_NETWORK:=mainnet}"
: "${LTC_NETWORK:=mainnet}"
@@ -289,6 +291,7 @@ BCH_NETWORK=$BCH_NETWORK
ETH_NETWORK=$ETH_NETWORK
BNB_NETWORK=$BNB_NETWORK
MATIC_NETWORK=$MATIC_NETWORK
+ARBETH_NETWORK=$ARBETH_NETWORK
TRX_NETWORK=$TRX_NETWORK
XRG_NETWORK=$XRG_NETWORK
LTC_NETWORK=$LTC_NETWORK