decred.org/dcrdex@v1.0.5/dex/testing/firo/electrum.sh (about) 1 #!/usr/bin/env bash 2 # 3 # Set up Electrum-Firo (electrum) regtest client wallet for testing. 4 # - Expects the firo regtest chain server harness to be running. 5 # - Expects an ElectrumX_Firo server runing on top of the chain server 6 # - Connects to the ElectrumX server over SSL at localhost:EX_PORT 7 # - Exposes electrum RPC at localhost:RPC_PORT - Dex connects here 8 # 9 # Requires: 10 # - python3 - tested python3.10 and minimal testing python3.7 11 # - pip3 - for boostrap loading pip 12 # - git 13 # 14 # See Also: README_ELECTRUM_HARNESSES.md and README_HARNESS.md 15 16 set -ex 17 18 # https://github.com/spesmilo/electrum/issues/7833 (fixed in 4.3) 19 # possible alt workaround: python3 -m pip install "protobuf>=3.12,<4" 20 export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python 21 22 SCRIPT_DIR=$(pwd) 23 24 # Electrum-Firo Version 4.1.5.2 25 # COMMIT=a3f64386efc9069cae83e23c241331de6f418b2f 26 27 # Electrum-Firo Version 4.1.5.5 28 COMMIT=b99e9594bddeecba82a2531bbf0769bd589f3a34 29 30 GENESIS=a42b98f04cc2916e8adfb5d9db8a2227c4629bc205748ed2f33180b636ee885b # regtest 31 RPCPORT=8001 32 EX_PORT=50002 33 34 ASSET_DIR=~/dextest/electrum/firo 35 ELECTRUM_DIR=${ASSET_DIR}/client 36 REPO_DIR=${ELECTRUM_DIR}/electrum-repo 37 WALLET_DIR=${ELECTRUM_DIR}/wallet 38 NET_DIR=${WALLET_DIR}/regtest 39 HARNESS_DIR=~/dextest/firo/harness-ctl 40 41 # startup options 42 # CLI, DAEMON, GUI (Default start as CLI) 43 # To change the mode, run with e.g. 44 # STARTUP=DAEMON ./electrum.sh 45 ELECTRUM_REGTEST_ARGS="--regtest --dir=${WALLET_DIR}" 46 WALLET_PASSWORD="abc" 47 48 rm -rf ${NET_DIR}/blockchain_headers ${NET_DIR}/forks ${NET_DIR}/certs ${NET_DIR}/wallets/default_wallet 49 mkdir -p ${NET_DIR}/regtest 50 mkdir -p ${NET_DIR}/wallets 51 mkdir -p ${REPO_DIR} 52 53 cd ${REPO_DIR} 54 55 if [ ! -d "${REPO_DIR}/.git" ]; then 56 git init 57 git remote add origin https://github.com/firoorg/electrum-firo.git 58 fi 59 60 git remote -v 61 62 git fetch --depth 1 origin ${COMMIT} 63 git reset --hard FETCH_HEAD 64 65 if [ ! -d "${ELECTRUM_DIR}/venv" ]; then 66 # The venv interpreter will be this python version, e.g. python3.10 67 python3.7 -m venv ${ELECTRUM_DIR}/venv 68 fi 69 source ${ELECTRUM_DIR}/venv/bin/activate 70 python --version 71 python -m pip install --upgrade pip # can support more versions than ensurepip 72 pip install -e . 73 pip install requests cryptography pycryptodomex 74 if [ "${STARTUP}" == "GUI" ]; 75 then 76 pip install pyqt5 77 fi 78 79 cp "${SCRIPT_DIR}/electrum_regtest_wallet" "${NET_DIR}/wallets/default_wallet" 80 81 cat > "${NET_DIR}/config" <<EOF 82 { 83 "auto_connect": false, 84 "tor_auto_on": false, 85 "detect_proxy": false, 86 "blockchain_preferred_block": { 87 "hash": "${GENESIS}", 88 "height": 0 89 }, 90 "check_updates": false, 91 "config_version": 3, 92 "decimal_point": 8, 93 "dont_show_testnet_warning": true, 94 "gui_last_wallet": "${NET_DIR}/wallets/default_wallet", 95 "is_maximized": false, 96 "oneserver": false, 97 "recently_open": [ 98 "${NET_DIR}/wallets/default_wallet" 99 ], 100 "rpchost": "127.0.0.1", 101 "rpcpassword": "pass", 102 "rpcport": ${RPCPORT}, 103 "rpcuser": "user", 104 "server": "127.0.0.1:${EX_PORT}:s", 105 "show_addresses_tab": true, 106 "show_console_tab": true, 107 "show_utxo_tab": true, 108 "use_rbf": false 109 } 110 EOF 111 112 cat > "${ASSET_DIR}/client-config.ini" <<EOF 113 rpcuser=user 114 rpcpassword=pass 115 rpcbind=127.0.0.1:${RPCPORT} 116 EOF 117 118 cat > "${HARNESS_DIR}/electrum-cli" <<EOF 119 source ${ELECTRUM_DIR}/venv/bin/activate 120 PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python ${REPO_DIR}/electrum-firo ${ELECTRUM_REGTEST_ARGS} "\$@" --password=${WALLET_PASSWORD} 121 deactivate 122 EOF 123 chmod +x "${HARNESS_DIR}/electrum-cli" 124 125 if [ "${STARTUP}" == "GUI" ]; 126 then 127 echo "Starting GUI wallet" 128 ./electrum-firo ${ELECTRUM_REGTEST_ARGS} 129 else 130 if [ "${STARTUP}" == "DAEMON" ]; 131 then 132 echo "Starting wallet as a DAEMON" 133 ./electrum-firo ${ELECTRUM_REGTEST_ARGS} daemon --detach 134 ./electrum-firo ${ELECTRUM_REGTEST_ARGS} load_wallet --password=${WALLET_PASSWORD} 135 ./electrum-firo ${ELECTRUM_REGTEST_ARGS} list_wallets 136 ./electrum-firo ${ELECTRUM_REGTEST_ARGS} getinfo 137 echo "use 'stop-daemon' to stop the daemon" 138 else 139 echo "Starting CLI wallet" 140 ./electrum-firo ${ELECTRUM_REGTEST_ARGS} -v daemon 141 # Run 142 # ./electrum-cli load_wallet 143 # from the firo harness-ctl directory. 144 fi 145 fi