Merge branch 'main' into ioc-limit-order

This commit is contained in:
Artur
2025-05-26 11:26:58 -03:00
committed by GitHub
10 changed files with 57 additions and 66 deletions

View File

@@ -1,10 +1,11 @@
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_URL=""
MONERO_RPC_PASSWORD=""
MONERO_WALLET_SEED=""
MONERO_WALLET_PASSWORD=""
@@ -20,4 +21,4 @@ SETTLEMENT_CURRENCY="USD"
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"
LITECOIN_FEE_RATE="halfHourFee"

View File

@@ -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. |

View File

@@ -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:
@@ -33,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:

View File

@@ -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"]

2
docker/btc-electrum/docker-entrypoint.sh Normal file → Executable file
View File

@@ -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

View File

@@ -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" ]

View File

@@ -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

View File

@@ -130,6 +130,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
@@ -158,7 +159,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()
@@ -187,11 +188,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()

View File

@@ -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()

View File

@@ -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...')