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