lnd: wait until wallet is created

This commit is contained in:
Erik Arvstedt 2019-11-27 14:04:45 +01:00
parent 6f2a55d63c
commit 5536b64fb3
No known key found for this signature in database
GPG Key ID: 33312B944DD97846

View File

@ -102,7 +102,9 @@ in {
then nix-bitcoin-services.allowTor then nix-bitcoin-services.allowTor
else nix-bitcoin-services.allowAnyIP else nix-bitcoin-services.allowAnyIP
) // nix-bitcoin-services.allowAnyProtocol; # For ZMQ ) // nix-bitcoin-services.allowAnyProtocol; # For ZMQ
postStart = '' postStart = let
mainnetDir = "${cfg.dataDir}/chain/bitcoin/mainnet";
in ''
umask 377 umask 377
attempts=50 attempts=50
@ -112,26 +114,32 @@ in {
done done
if [[ ! -f /secrets/lnd-seed-mnemonic ]]; then if [[ ! -f /secrets/lnd-seed-mnemonic ]]; then
echo Creating lnd seed echo Create lnd seed
${pkgs.curl}/bin/curl -s \ ${pkgs.curl}/bin/curl -s \
--cacert /secrets/lnd_cert \ --cacert /secrets/lnd_cert \
-X GET https://127.0.0.1:8080/v1/genseed | ${pkgs.jq}/bin/jq -c '.cipher_seed_mnemonic' > /secrets/lnd-seed-mnemonic -X GET https://127.0.0.1:8080/v1/genseed | ${pkgs.jq}/bin/jq -c '.cipher_seed_mnemonic' > /secrets/lnd-seed-mnemonic
fi fi
if [[ ! -f ${cfg.dataDir}/chain/bitcoin/mainnet/wallet.db ]]; then if [[ ! -f ${mainnetDir}/wallet.db ]]; then
echo Creating lnd wallet echo Create lnd wallet
${pkgs.curl}/bin/curl -s --output /dev/null --show-error \ ${pkgs.curl}/bin/curl -s --output /dev/null --show-error \
--cacert /secrets/lnd_cert \ --cacert /secrets/lnd_cert \
-X POST -d "{\"wallet_password\": \"$(cat /secrets/lnd-wallet-password | tr -d '\n' | base64 -w0)\", \ -X POST -d "{\"wallet_password\": \"$(cat /secrets/lnd-wallet-password | tr -d '\n' | base64 -w0)\", \
\"cipher_seed_mnemonic\": $(cat /secrets/lnd-seed-mnemonic | tr -d '\n')}" \ \"cipher_seed_mnemonic\": $(cat /secrets/lnd-seed-mnemonic | tr -d '\n')}" \
https://127.0.0.1:8080/v1/initwallet https://127.0.0.1:8080/v1/initwallet
# Guarantees that RPC calls with cfg.cli succeed after the service is started
echo Wait until wallet is created
while [[ ! -f ${mainnetDir}/admin.macaroon ]]; do
sleep 0.1
done
else else
echo Unlocking lnd wallet echo Unlock lnd wallet
${pkgs.curl}/bin/curl -s \ ${pkgs.curl}/bin/curl -s \
-H "Grpc-Metadata-macaroon: $(${pkgs.xxd}/bin/xxd -ps -u -c 99999 ${cfg.dataDir}/chain/bitcoin/mainnet/admin.macaroon)" \ -H "Grpc-Metadata-macaroon: $(${pkgs.xxd}/bin/xxd -ps -u -c 99999 '${mainnetDir}/admin.macaroon')" \
--cacert /secrets/lnd_cert \ --cacert /secrets/lnd_cert \
-X POST \ -X POST \
-d "{\"wallet_password\": \"$(cat /secrets/lnd-wallet-password | tr -d '\n' | base64 -w0)\"}" \ -d "{\"wallet_password\": \"$(cat /secrets/lnd-wallet-password | tr -d '\n' | base64 -w0)\"}" \