From 5b07a4e36080aff9a962e0e86f8a86c62e0fe773 Mon Sep 17 00:00:00 2001 From: Artur <33733651+Keeqler@users.noreply.github.com> Date: Wed, 12 Mar 2025 12:50:21 -0300 Subject: [PATCH 1/4] Electrum fix --- docker-compose.yml | 4 ---- docker/btc-electrum/Dockerfile | 20 +++++++------------- docker/btc-electrum/docker-entrypoint.sh | 2 +- docker/ltc-electrum/Dockerfile | 2 ++ docker/ltc-electrum/docker-entrypoint.sh | 12 ++++++------ 5 files changed, 16 insertions(+), 24 deletions(-) mode change 100644 => 100755 docker/btc-electrum/docker-entrypoint.sh diff --git a/docker-compose.yml b/docker-compose.yml index e607e86..ad8d3e2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,10 +22,6 @@ services: CHECKSUM_SHA512: "62248d5eba9b7d67facb767ff35706ef3e3dcd69c6b6fb8fb67b09bc07e52193ecd59f122388d401e854385b2e2b31fd802a9f5d56464472d893f5bc1bd394af" container_name: ltc-electrum restart: unless-stopped - cap_add: - - SYS_ADMIN - devices: - - /dev/fuse:/dev/fuse volumes: - litecoin-data:/home/electrum-ltc/.electrum environment: diff --git a/docker/btc-electrum/Dockerfile b/docker/btc-electrum/Dockerfile index 1e457f9..89aec8f 100644 --- a/docker/btc-electrum/Dockerfile +++ b/docker/btc-electrum/Dockerfile @@ -9,9 +9,8 @@ ENV ELECTRUM_HOME=/home/$ELECTRUM_USER RUN adduser -D $ELECTRUM_USER -RUN mkdir -p /data ${ELECTRUM_HOME} && \ - ln -sf /data ${ELECTRUM_HOME}/.electrum && \ - chown ${ELECTRUM_USER} ${ELECTRUM_HOME}/.electrum /data +RUN mkdir -p ${ELECTRUM_HOME}/.electrum && \ + chown ${ELECTRUM_USER} ${ELECTRUM_HOME}/.electrum # IMPORTANT: always verify gpg signature before changing a hash here! ENV ELECTRUM_CHECKSUM_SHA512 $CHECKSUM_SHA512 @@ -23,20 +22,15 @@ RUN echo -e "**************************\n SHA 512 Checksum OK\n***************** RUN pip3 install cryptography Electrum-${ELECTRUM_VERSION}.tar.gz RUN rm -f Electrum-${ELECTRUM_VERSION}.tar.gz -RUN mkdir -p /data \ - ${ELECTRUM_HOME}/.electrum/wallets/ \ +RUN mkdir -p ${ELECTRUM_HOME}/.electrum/wallets/ \ ${ELECTRUM_HOME}/.electrum/testnet/wallets/ \ ${ELECTRUM_HOME}/.electrum/regtest/wallets/ \ ${ELECTRUM_HOME}/.electrum/simnet/wallets/ && \ - ln -sf ${ELECTRUM_HOME}/.electrum/ /data && \ - chown -R ${ELECTRUM_USER} ${ELECTRUM_HOME}/.electrum /data + chown -R ${ELECTRUM_USER} ${ELECTRUM_HOME}/.electrum -COPY docker-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/docker-entrypoint.sh - -USER $BITCOIN_ELECTRUM_USER -WORKDIR $BITCOIN_ELECTRUM_HOME -VOLUME /data +USER $ELECTRUM_USER +WORKDIR $ELECTRUM_HOME EXPOSE 7000 +COPY docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT ["docker-entrypoint.sh"] diff --git a/docker/btc-electrum/docker-entrypoint.sh b/docker/btc-electrum/docker-entrypoint.sh old mode 100644 new mode 100755 index 1cad5f8..d217f92 --- a/docker/btc-electrum/docker-entrypoint.sh +++ b/docker/btc-electrum/docker-entrypoint.sh @@ -3,7 +3,7 @@ set -ex trap 'pkill -TERM -P1; electrum stop; exit 0' SIGTERM -rm -f .electrum/daemon .electrum/daemon_rpc_socket +rm -f .electrum/daemon electrum --offline setconfig rpcuser ${ELECTRUM_RPC_USER} electrum --offline setconfig rpcpassword ${ELECTRUM_RPC_PASSWORD} electrum --offline setconfig rpchost 0.0.0.0 diff --git a/docker/ltc-electrum/Dockerfile b/docker/ltc-electrum/Dockerfile index e51fe64..c0842c5 100644 --- a/docker/ltc-electrum/Dockerfile +++ b/docker/ltc-electrum/Dockerfile @@ -20,6 +20,8 @@ RUN [ "${ELECTRUM_CHECKSUM_SHA512} electrum-ltc.appimage" = "$(sha512sum electr RUN echo -e "**************************\n SHA 512 Checksum OK\n**************************" COPY --chown=$ELECTRUM_USER:$ELECTRUM_USER ./docker-entrypoint.sh docker-entrypoint.sh RUN chmod +x ./electrum-ltc.appimage ./docker-entrypoint.sh +RUN ./electrum-ltc.appimage --appimage-extract +RUN rm ./electrum-ltc.appimage EXPOSE 7000 ENTRYPOINT [ "./docker-entrypoint.sh" ] \ No newline at end of file diff --git a/docker/ltc-electrum/docker-entrypoint.sh b/docker/ltc-electrum/docker-entrypoint.sh index ef8272e..6a5ab68 100644 --- a/docker/ltc-electrum/docker-entrypoint.sh +++ b/docker/ltc-electrum/docker-entrypoint.sh @@ -5,14 +5,14 @@ set -e trap 'pkill -TERM -P1; electrum-ltc.appimage stop; exit 0' SIGTERM rm -f $HOME/.electrum-ltc/daemon -./electrum-ltc.appimage --offline setconfig rpcuser ${ELECTRUM_RPC_USER} -./electrum-ltc.appimage --offline setconfig rpcpassword ${ELECTRUM_RPC_PASSWORD} -./electrum-ltc.appimage --offline setconfig rpchost 0.0.0.0 -./electrum-ltc.appimage --offline setconfig rpcport 7000 +./squashfs-root/AppRun --offline setconfig rpcuser ${ELECTRUM_RPC_USER} +./squashfs-root/AppRun --offline setconfig rpcpassword ${ELECTRUM_RPC_PASSWORD} +./squashfs-root/AppRun --offline setconfig rpchost 0.0.0.0 +./squashfs-root/AppRun --offline setconfig rpcport 7000 if [ -n "${ELECTRUM_SERVER_ADDRESS}" ]; then - ./electrum-ltc.appimage daemon -1 -s "${ELECTRUM_SERVER_ADDRESS}" "$@" + ./squashfs-root/AppRun daemon -1 -s "${ELECTRUM_SERVER_ADDRESS}" "$@" else - ./electrum-ltc.appimage daemon "$@" + ./squashfs-root/AppRun daemon "$@" fi From 050b2b20d41c2326ce5c8a80c19a31a39ba01cf6 Mon Sep 17 00:00:00 2001 From: Artur <33733651+Keeqler@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:00:30 -0300 Subject: [PATCH 2/4] Enable mweb (#27) * Enable mweb * Add LITECOIN_MWEB_WALLET_SEED to readme --- .env.example | 1 - README.md | 1 + docker-compose.yml | 34 +++++++++++++++------------------- src/autoforward.py | 13 +++++++------ src/seed-importer.py | 16 ++++++++-------- src/util.py | 14 +++++++------- 6 files changed, 38 insertions(+), 41 deletions(-) diff --git a/.env.example b/.env.example index cb959bf..c2f8303 100644 --- a/.env.example +++ b/.env.example @@ -4,7 +4,6 @@ LITECOIN_WALLET_SEED="" LITECOIN_MWEB_WALLET_SEED="" MONERO_DAEMON_ADDRESS="" -MONERO_RPC_URL="" MONERO_RPC_PASSWORD="" MONERO_WALLET_SEED="" MONERO_WALLET_PASSWORD="" diff --git a/README.md b/README.md index 2df27d1..4454ef6 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Create a `.env` file as a copy of `.env.example` and set the values for the empt | - | - | - | - | | `BITCOIN_WALLET_SEED` | Yes | - | Your BIP39 Bitcoin mnemonic seed. Used for all Bitcoin-like assets. | | `LITECOIN_WALLET_SEED` | Yes | - | Your BIP39 Litecoin mnemonic seed. | +| `LITECOIN_MWEB_WALLET_SEED` | Yes | - | Your Electrum-format Litecoin MWEB mnemonic seed. | | `MONERO_WALLET_SEED` | Yes | - | Your 25 word Monero mnemonic seed. | | `MONERO_WALLET_HEIGHT` | Yes | - | The restore height of your Monero wallet. | | `ELECTRUM_RPC_PASSWORD` | Yes | - | A new strong password for your Electrum RPCs. | diff --git a/docker-compose.yml b/docker-compose.yml index ad8d3e2..8dca555 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,27 +29,23 @@ services: - ELECTRUM_RPC_PASSWORD=${ELECTRUM_RPC_PASSWORD} - ELECTRUM_SERVER_ADDRESS=${LITECOIN_ELECTRUM_SERVER_ADDRESS} - # ltc-mweb-electrum: - # build: - # context: ./docker/ltc-electrum - # args: - # VERSION: "release-9" - # CHECKSUM_SHA512: "62248d5eba9b7d67facb767ff35706ef3e3dcd69c6b6fb8fb67b09bc07e52193ecd59f122388d401e854385b2e2b31fd802a9f5d56464472d893f5bc1bd394af" - # container_name: ltc-mweb-electrum - # restart: unless-stopped - # cap_add: - # - SYS_ADMIN - # devices: - # - "/dev/fuse" - # volumes: - # - litecoin-mweb-data:/home/electrum-ltc/.electrum - # environment: - # - ELECTRUM_RPC_USER=user - # - ELECTRUM_RPC_PASSWORD=${ELECTRUM_RPC_PASSWORD} - # - ELECTRUM_SERVER_ADDRESS=${LITECOIN_ELECTRUM_SERVER_ADDRESS} + ltc-mweb-electrum: + build: + context: ./docker/ltc-electrum + args: + VERSION: "release-9" + CHECKSUM_SHA512: "62248d5eba9b7d67facb767ff35706ef3e3dcd69c6b6fb8fb67b09bc07e52193ecd59f122388d401e854385b2e2b31fd802a9f5d56464472d893f5bc1bd394af" + container_name: ltc-mweb-electrum + restart: unless-stopped + volumes: + - litecoin-mweb-data:/home/electrum-ltc/.electrum + environment: + - ELECTRUM_RPC_USER=user + - ELECTRUM_RPC_PASSWORD=${ELECTRUM_RPC_PASSWORD} + - ELECTRUM_SERVER_ADDRESS=${LITECOIN_ELECTRUM_SERVER_ADDRESS} monero-wallet-rpc: - image: sethsimmons/simple-monero-wallet-rpc:latest + image: ghcr.io/sethforprivacy/simple-monero-wallet-rpc:latest restart: unless-stopped container_name: monero-wallet-rpc volumes: diff --git a/src/autoforward.py b/src/autoforward.py index 4cad0a2..0f81587 100644 --- a/src/autoforward.py +++ b/src/autoforward.py @@ -129,6 +129,7 @@ def attempt_electrum_autoforward(coin: ElectrumCoin): set_electrum_fee_rate(coin, fee_rate, dynamic=False) except: set_electrum_fee_rate(coin, rate=0, dynamic=True) + address = get_new_kraken_address(coin if coin != 'ltc-mweb' else 'ltc') # Electrum-ltc doesn't support deserializing mweb transactions, so we can't check total fee @@ -157,7 +158,7 @@ def attempt_electrum_autoforward(coin: ElectrumCoin): signed_tx = create_psbt(coin, address, unsigned=False) broadcast_electrum_tx(coin, signed_tx) - print(util.get_time(), f'Autoforwarded {amount} {coin_upper} to {address}!') + print(util.get_time(), f'Autoforwarded {balance} {coin_upper} to {address}!') def attempt_monero_autoforward(): balance = get_monero_balance() @@ -186,11 +187,11 @@ while 1: print(util.get_time(), 'Error autoforwarding litecoin:') print(traceback.format_exc()) - # try: - # attempt_electrum_autoforward('ltc-mweb') - # except Exception as e: - # print(util.get_time(), 'Error autoforwarding Litecoin MWEB:') - # print(traceback.format_exc()) + try: + attempt_electrum_autoforward('ltc-mweb') + except Exception as e: + print(util.get_time(), 'Error autoforwarding Litecoin MWEB:') + print(traceback.format_exc()) try: attempt_monero_autoforward() diff --git a/src/seed-importer.py b/src/seed-importer.py index 0a44ce7..48b73d5 100644 --- a/src/seed-importer.py +++ b/src/seed-importer.py @@ -55,14 +55,14 @@ except Exception as e: print(util.get_time(), 'Error importing litecoin seed:') print(traceback.format_exc()) -# try: -# import_litecoin_mweb_seed() -# util.request_electrum_rpc('ltc-mweb', 'load_wallet') -# util.request_electrum_rpc('ltc-mweb', 'changegaplimit', [1000, 'iknowhatimdoing']) -# print('Litecoin mimblewimble seed has successfully been imported!') -# except Exception as e: -# print(util.get_time(), 'Error importing litecoin mimblewimble seed:') -# print(traceback.format_exc()) +try: + import_litecoin_mweb_seed() + util.request_electrum_rpc('ltc-mweb', 'load_wallet') + util.request_electrum_rpc('ltc-mweb', 'changegaplimit', [1000, 'iknowhatimdoing']) + print('Litecoin mimblewimble seed has successfully been imported!') +except Exception as e: + print(util.get_time(), 'Error importing litecoin mimblewimble seed:') + print(traceback.format_exc()) try: import_monero_seed() diff --git a/src/util.py b/src/util.py index 0805a68..6214616 100644 --- a/src/util.py +++ b/src/util.py @@ -141,14 +141,14 @@ def wait_for_wallets(): except: time.sleep(10) - # print('Waiting for Litecoin MWEB wallet...') + print('Waiting for Litecoin MWEB wallet...') - # while 1: - # try: - # open_litecoin_mweb_wallet() - # break - # except: - # time.sleep(10) + while 1: + try: + open_litecoin_mweb_wallet() + break + except: + time.sleep(10) print('Waiting for Monero wallet...') From 097965b634fcb69ff805b7a8496b535c231911dd Mon Sep 17 00:00:00 2001 From: Seth For Privacy <40500387+sethforprivacy@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:44:59 +0000 Subject: [PATCH 3/4] Re-add missing env variables --- .env.example | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index c2f8303..4a9b798 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,9 @@ ELECTRUM_RPC_PASSWORD="" BITCOIN_WALLET_SEED="" +BITCOIN_ELECTRUM_SERVER_ADDRESS="" LITECOIN_WALLET_SEED="" LITECOIN_MWEB_WALLET_SEED="" +LITECOIN_ELECTRUM_SERVER_ADDRESS="" MONERO_DAEMON_ADDRESS="" MONERO_RPC_PASSWORD="" @@ -18,4 +20,4 @@ MAX_SLIPPAGE_PERCENT="0.5" BITCOIN_FEE_SOURCE="https://mempool.space/api/v1/fees/recommended" BITCOIN_FEE_RATE="halfHourFee" LITECOIN_FEE_SOURCE="https://litecoinspace.org/api/v1/fees/recommended" -LITECOIN_FEE_RATE="halfHourFee" \ No newline at end of file +LITECOIN_FEE_RATE="halfHourFee" From 7197d418e8eff6450e6e8ff8560c94a5cedd3f7d Mon Sep 17 00:00:00 2001 From: Seth For Privacy <40500387+sethforprivacy@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:45:49 +0000 Subject: [PATCH 4/4] Add mention of LTC and MWEB to README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4454ef6..ab8a27e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # autoforward-autoconvert -Programs to auto-forward BTC and XMR wallets to Kraken, and then auto-convert to USD. +Programs to auto-forward BTC, XMR, LTC, and LTC-MWEB wallets to Kraken, and then auto-convert to USD. ## Requirements