diff --git a/Dockerfile b/Dockerfile index f0f8dba..5b4f9d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,10 @@ FROM ubuntu:18.10 ENV LANG=C.UTF-8 \ - PARTICL_DATADIR="/coindata/particl" \ - PARTICL_BINDIR="/opt/particl" \ - LITECOIN_BINDIR="/opt/litecoin" \ - LITECOIN_VERSION="0.17.1" \ DATADIRS="/coindata" RUN apt-get update; \ - apt-get install -y wget python3-pip curl gnupg unzip protobuf-compiler; - -RUN cd ~; \ - wget https://github.com/particl/coldstakepool/archive/master.zip; \ - unzip master.zip; \ - cd coldstakepool-master; \ - pip3 install .; \ - pip3 install pyzmq plyvel protobuf; - -RUN PARTICL_VERSION=0.18.1.0 PARTICL_VERSION_TAG= PARTICL_ARCH=x86_64-linux-gnu_nousb.tar.gz coldstakepool-prepare --update_core && \ - mkdir -p ${LITECOIN_BINDIR} && cd ${LITECOIN_BINDIR} && \ - wget https://download.litecoin.org/litecoin-${LITECOIN_VERSION}/linux/litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz && \ - wget -O build.assert https://github.com/litecoin-project/gitian.sigs.ltc/raw/master/${LITECOIN_VERSION}-linux/thrasher/litecoin-linux-0.17-build.assert && \ - wget -O build.assert.sig https://github.com/litecoin-project/gitian.sigs.ltc/raw/master/${LITECOIN_VERSION}-linux/thrasher/litecoin-linux-0.17-build.assert.sig && \ - wget -qO - https://raw.githubusercontent.com/litecoin-project/litecoin/master/contrib/gitian-keys/thrasher-key.pgp | gpg --import - && \ - gpg --verify build.assert.sig build.assert && \ - grep " litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz\$" build.assert | sha256sum -c - && \ - tar -xvf litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz -C ${LITECOIN_BINDIR} --strip-components 2 litecoin-${LITECOIN_VERSION}/bin/litecoind litecoin-${LITECOIN_VERSION}/bin/litecoin-cli && \ - rm litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz && rm *.assert* + apt-get install -y wget python3-pip gnupg unzip protobuf-compiler; # TODO: move coindata dir out of src dir RUN wget -O bs.zip https://github.com/tecnovert/basicswap/archive/master.zip; \ @@ -35,6 +13,9 @@ RUN wget -O bs.zip https://github.com/tecnovert/basicswap/archive/master.zip; \ protoc -I=basicswap --python_out=basicswap basicswap/messages.proto; \ pip3 install .; +# Download binaries, these will be part of the docker image +RUN basicswap-prepare -datadir=/opt --particl_mnemonic=none + RUN useradd -ms /bin/bash user; \ mkdir /coindata && chown user /coindata diff --git a/bin/basicswap_prepare.py b/bin/basicswap_prepare.py index ec2b20b..6740d0b 100644 --- a/bin/basicswap_prepare.py +++ b/bin/basicswap_prepare.py @@ -177,7 +177,7 @@ def prepareCore(coin, version, settings, data_dir): os.chmod(out_path, stat.S_IRWXU) -def prepareDataDir(coin, settings, data_dir, chain): +def prepareDataDir(coin, settings, data_dir, chain, particl_mnemonic): core_settings = settings['chainclients'][coin] data_dir = core_settings['datadir'] @@ -205,6 +205,9 @@ def prepareDataDir(coin, settings, data_dir, chain): fp.write('zmqpubsmsg=tcp://127.0.0.1:{}\n'.format(settings['zmqport'])) fp.write('spentindex=1') fp.write('txindex=1') + + if particl_mnemonic == 'none': + fp.write('createdefaultmasterkey=1') elif coin == 'litecoin': fp.write('prune=1000\n') elif coin == 'bitcoin': @@ -232,7 +235,8 @@ def printHelp(): logger.info('--mainnet Run in mainnet mode.') logger.info('--testnet Run in testnet mode.') logger.info('--regtest Run in regtest mode.') - logger.info('--particl_mnemonic= Recovery phrase to use for the Particl wallet, default is randomly generated.') + logger.info('--particl_mnemonic= Recovery phrase to use for the Particl wallet, default is randomly generated,\n' + + ' "none" to set autogenerate account mode.') logger.info('--withcoin= Prepare system to run daemon for coin.') logger.info('--withoutcoin= Do not prepare system to run daemon for coin.') logger.info('--addcoin= Add coin to existing setup.') @@ -343,7 +347,7 @@ def main(): 'manage_daemon': True, 'rpcport': 19792 + port_offset, 'datadir': os.path.join(data_dir, 'particl'), - 'bindir': os.path.join(data_dir, 'bins', 'particl'), + 'bindir': os.path.join(data_dir, 'bin', 'particl'), 'blocks_confirmed': 2, 'override_feerate': 0.002, }, @@ -352,7 +356,7 @@ def main(): 'manage_daemon': True if 'litecoin' in with_coins else False, 'rpcport': 19795 + port_offset, 'datadir': os.path.join(data_dir, 'litecoin'), - 'bindir': os.path.join(data_dir, 'bins', 'litecoin'), + 'bindir': os.path.join(data_dir, 'bin', 'litecoin'), 'use_segwit': True, 'blocks_confirmed': 2 }, @@ -361,7 +365,7 @@ def main(): 'manage_daemon': True if 'bitcoin' in with_coins else False, 'rpcport': 19796 + port_offset, 'datadir': os.path.join(data_dir, 'bitcoin'), - 'bindir': os.path.join(data_dir, 'bins', 'bitcoin'), + 'bindir': os.path.join(data_dir, 'bin', 'bitcoin'), 'use_segwit': True }, 'namecoin': { @@ -369,7 +373,7 @@ def main(): 'manage_daemon': True if 'namecoin' in with_coins else False, 'rpcport': 19798 + port_offset, 'datadir': os.path.join(data_dir, 'namecoin'), - 'bindir': os.path.join(data_dir, 'bins', 'namecoin'), + 'bindir': os.path.join(data_dir, 'bin', 'namecoin'), 'use_segwit': False, 'use_csv': False, 'blocks_confirmed': 1 @@ -389,7 +393,7 @@ def main(): settings['chainclients'][add_coin] = chainclients[add_coin] prepareCore(add_coin, known_coins[add_coin], settings, data_dir) - prepareDataDir(add_coin, settings, data_dir, chain) + prepareDataDir(add_coin, settings, data_dir, chain, particl_wallet_mnemonic) with open(config_path, 'w') as fp: json.dump(settings, fp, indent=4) @@ -420,11 +424,16 @@ def main(): continue coin = c prepareCore(coin, v, settings, data_dir) - prepareDataDir(coin, settings, data_dir, chain) + prepareDataDir(coin, settings, data_dir, chain, particl_wallet_mnemonic) with open(config_path, 'w') as fp: json.dump(settings, fp, indent=4) + + if particl_wallet_mnemonic == 'none': + logger.info('Done.') + return 0 + logger.info('Loading Particl mnemonic') particl_settings = settings['chainclients']['particl'] diff --git a/docker/coindata/basicswap/basicswap.json b/docker/coindata/basicswap/basicswap.json index f6f73c0..8b18f3c 100644 --- a/docker/coindata/basicswap/basicswap.json +++ b/docker/coindata/basicswap/basicswap.json @@ -11,7 +11,7 @@ "manage_daemon": true, "rpcport": 19792, "datadir": "/coindata/particl", - "bindir": "/opt/particl", + "bindir": "/opt/bin/particl", "blocks_confirmed": 2 }, "litecoin": { @@ -19,7 +19,7 @@ "manage_daemon": true, "rpcport": 19795, "datadir": "/coindata/litecoin", - "bindir": "/opt/litecoin", + "bindir": "/opt/bin/litecoin", "use_segwit": true, "blocks_confirmed": 2 }, @@ -28,7 +28,7 @@ "manage_daemon": false, "rpcport": 19796, "datadir": "/coindata/bitcoin", - "bindir": "/opt/bitcoin", + "bindir": "/coindata/bin/bitcoin", "use_segwit": true } }, diff --git a/gitianpubkeys/particl_tecnovert.gpg b/gitianpubkeys/particl_tecnovert.pgp similarity index 100% rename from gitianpubkeys/particl_tecnovert.gpg rename to gitianpubkeys/particl_tecnovert.pgp