joinmarket: allow recreating wallet from seed
This allows users to easily upgrade their wallets to use Fidelity Bonds.
This commit is contained in:
@@ -250,17 +250,31 @@ in {
|
||||
if [[ ! -f $wallet ]]; then
|
||||
${optionalString (cfg.rpcWalletFile != null) ''
|
||||
echo "Create watch-only wallet ${cfg.rpcWalletFile}"
|
||||
${bitcoind.cli}/bin/bitcoin-cli -named createwallet \
|
||||
wallet_name="${cfg.rpcWalletFile}" disable_private_keys=true
|
||||
if ! output=$(${bitcoind.cli}/bin/bitcoin-cli -named createwallet \
|
||||
wallet_name="${cfg.rpcWalletFile}" disable_private_keys=true 2>&1); then
|
||||
# Ignore error if bitcoind wallet already exists
|
||||
if [[ $output != *"already exists"* ]]; then
|
||||
echo "$output"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
''}
|
||||
# Restore wallet from seed if available
|
||||
seed=
|
||||
if [[ -e jm-wallet-seed ]]; then
|
||||
seed="--recovery-seed-file jm-wallet-seed"
|
||||
fi
|
||||
cd ${cfg.dataDir}
|
||||
# Strip trailing newline from password file
|
||||
if ! tr -d "\n" <"${secretsDir}/jm-wallet-password" \
|
||||
| ${nbPkgs.joinmarket}/bin/jm-genwallet \
|
||||
--datadir=${cfg.dataDir} --wallet-password-stdin $walletname \
|
||||
| grep 'recovery_seed' \
|
||||
| cut -d ':' -f2 \
|
||||
| (umask u=r,go=; cat > jm-wallet-seed); then
|
||||
--datadir=${cfg.dataDir} --wallet-password-stdin $seed $walletname \
|
||||
| (if [[ ! $seed ]]; then
|
||||
umask u=r,go=
|
||||
grep -ohP '(?<=recovery_seed:).*' > jm-wallet-seed
|
||||
else
|
||||
cat > /dev/null
|
||||
fi); then
|
||||
echo "wallet creation failed"
|
||||
rm -f "$wallet" jm-wallet-seed
|
||||
exit 1
|
||||
|
||||
@@ -100,6 +100,29 @@ let
|
||||
[1] https://github.com/bitcoin/bitcoin/pull/15454
|
||||
'';
|
||||
}
|
||||
{
|
||||
version = "0.0.51";
|
||||
condition = config.services.joinmarket.enable;
|
||||
message = let
|
||||
jmDataDir = config.services.joinmarket.dataDir;
|
||||
in ''
|
||||
Joinmarket 0.9.1 has added support for Fidelity Bonds [1].
|
||||
|
||||
If you've used joinmarket before, do the following to enable Fidelity Bonds in your existing wallet.
|
||||
Enabling Fidelity Bonds has no effect if you don't use them.
|
||||
|
||||
1. Deploy the new system config to your node
|
||||
2. Run the following on your node:
|
||||
# Ensure that the wallet seed exists and rename the wallet
|
||||
ls ${jmDataDir}/jm-wallet-seed && mv ${jmDataDir}/wallets/wallet.jmdat{,.bak}
|
||||
# This automatically recreates the wallet with Fidelity Bonds support
|
||||
systemctl restart joinmarket
|
||||
# Remove wallet backup if update was successful
|
||||
rm ${jmDataDir}/wallets/wallet.jmdat.bak
|
||||
|
||||
[1] https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/fidelity-bonds.md
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
mkOnionServiceChange = service: {
|
||||
|
||||
Reference in New Issue
Block a user