Add development helper scripts for Lightning testing
- Add lncli-alice for Alice's LND node - Add setup-channel script to create channel between Alice and LND - Add alice-pay script for paying invoices from Alice - Update infra-up to wait for Alice's LND - Update LIGHTNING_PUB_URL to correct port 1776 - Add mine-blocks, relay-test and other utility scripts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
bd08d0fdf9
commit
8cc462305f
1 changed files with 174 additions and 13 deletions
|
|
@ -102,7 +102,7 @@
|
|||
NOSTR_RELAY_URL = "ws://localhost:7777";
|
||||
|
||||
# Lightning.Pub development
|
||||
LIGHTNING_PUB_URL = "http://localhost:3000";
|
||||
LIGHTNING_PUB_URL = "http://localhost:1776";
|
||||
|
||||
# For Tauri
|
||||
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
|
||||
|
|
@ -121,15 +121,163 @@
|
|||
# Start infrastructure
|
||||
infra-up.exec = ''
|
||||
echo "Starting development infrastructure..."
|
||||
docker-compose -f docker/docker-compose.dev.yml up -d
|
||||
echo "Waiting for services..."
|
||||
sleep 5
|
||||
docker compose -f docker/docker-compose.dev.yml up -d
|
||||
echo ""
|
||||
echo "Waiting for services to be healthy..."
|
||||
echo "(This may take 30-60 seconds on first run)"
|
||||
echo ""
|
||||
|
||||
# Wait for strfry
|
||||
echo -n "strfry relay: "
|
||||
until docker exec lamassu-relay nc -z localhost 7777 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
done
|
||||
echo " ready"
|
||||
|
||||
# Wait for bitcoind
|
||||
echo -n "bitcoind: "
|
||||
until docker exec lamassu-bitcoind bitcoin-cli -regtest -rpcuser=lamassu -rpcpassword=lamassu getblockchaininfo >/dev/null 2>&1; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
done
|
||||
echo " ready"
|
||||
|
||||
# Wait for LND
|
||||
echo -n "LND: "
|
||||
until docker exec lamassu-lnd lncli --network=regtest getinfo >/dev/null 2>&1; do
|
||||
echo -n "."
|
||||
sleep 3
|
||||
done
|
||||
echo " ready"
|
||||
|
||||
# Wait for Alice's LND
|
||||
echo -n "LND (Alice): "
|
||||
until docker exec lamassu-lnd-alice lncli --network=regtest getinfo >/dev/null 2>&1; do
|
||||
echo -n "."
|
||||
sleep 3
|
||||
done
|
||||
echo " ready"
|
||||
|
||||
echo ""
|
||||
echo "Infrastructure ready!"
|
||||
echo " - Nostr relay: ws://localhost:7777"
|
||||
echo " - Lightning.Pub: http://localhost:3000"
|
||||
echo " - Nostr relay: ws://localhost:7777"
|
||||
echo " - Bitcoin RPC: localhost:18443 (regtest)"
|
||||
echo " - LND gRPC: localhost:10009"
|
||||
echo " - LND Alice gRPC: localhost:10010"
|
||||
echo " - Lightning.Pub: http://localhost:1776"
|
||||
echo " - PostgreSQL: localhost:5432"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. mine-blocks 101 # Fund the wallet (if first run)"
|
||||
echo " 2. setup-channel # Open channel between Alice and LND"
|
||||
echo ""
|
||||
echo "Use 'infra-logs' to view logs, 'infra-status' to check status"
|
||||
'';
|
||||
|
||||
infra-down.exec = "docker-compose -f docker/docker-compose.dev.yml down";
|
||||
infra-down.exec = ''
|
||||
echo "Stopping development infrastructure..."
|
||||
docker compose -f docker/docker-compose.dev.yml down
|
||||
echo "Infrastructure stopped"
|
||||
'';
|
||||
|
||||
infra-logs.exec = ''
|
||||
docker compose -f docker/docker-compose.dev.yml logs -f "$@"
|
||||
'';
|
||||
|
||||
infra-status.exec = ''
|
||||
echo "Infrastructure Status:"
|
||||
echo ""
|
||||
docker compose -f docker/docker-compose.dev.yml ps
|
||||
'';
|
||||
|
||||
# Mine regtest blocks (useful for testing)
|
||||
mine-blocks.exec = ''
|
||||
BLOCKS=''${1:-1}
|
||||
echo "Mining $BLOCKS regtest block(s)..."
|
||||
docker exec lamassu-bitcoind bitcoin-cli -regtest -rpcuser=lamassu -rpcpassword=lamassu -generate "$BLOCKS"
|
||||
'';
|
||||
|
||||
# Connect to LND CLI
|
||||
lncli.exec = ''
|
||||
docker exec -it lamassu-lnd lncli --network=regtest "$@"
|
||||
'';
|
||||
|
||||
# Connect to Bitcoin CLI
|
||||
btccli.exec = ''
|
||||
docker exec -it lamassu-bitcoind bitcoin-cli -regtest -rpcuser=lamassu -rpcpassword=lamassu "$@"
|
||||
'';
|
||||
|
||||
# Test relay connection
|
||||
relay-test.exec = ''
|
||||
echo "Testing Nostr relay connection..."
|
||||
echo '["REQ", "test", {"kinds": [0], "limit": 1}]' | websocat ws://localhost:7777
|
||||
'';
|
||||
|
||||
# Connect to Alice's LND CLI (second node for testing payments)
|
||||
lncli-alice.exec = ''
|
||||
docker exec -it lamassu-lnd-alice lncli --network=regtest "$@"
|
||||
'';
|
||||
|
||||
# Setup Lightning channel between Alice and the main LND node
|
||||
setup-channel.exec = ''
|
||||
echo "Setting up Lightning channel between Alice and LND..."
|
||||
echo ""
|
||||
|
||||
# Get LND's pubkey and address
|
||||
LND_INFO=$(docker exec lamassu-lnd lncli --network=regtest getinfo 2>/dev/null)
|
||||
LND_PUBKEY=$(echo "$LND_INFO" | jq -r '.identity_pubkey')
|
||||
echo "LND pubkey: $LND_PUBKEY"
|
||||
|
||||
# Connect Alice to LND
|
||||
echo "Connecting Alice to LND..."
|
||||
docker exec lamassu-lnd-alice lncli --network=regtest connect "$LND_PUBKEY@lnd:9735" 2>/dev/null || true
|
||||
|
||||
# Check if Alice has enough funds
|
||||
ALICE_BALANCE=$(docker exec lamassu-lnd-alice lncli --network=regtest walletbalance 2>/dev/null | jq -r '.confirmed_balance')
|
||||
echo "Alice's on-chain balance: $ALICE_BALANCE sats"
|
||||
|
||||
if [ "$ALICE_BALANCE" -lt 1000000 ]; then
|
||||
echo ""
|
||||
echo "Alice needs funds. Getting new address..."
|
||||
ALICE_ADDR=$(docker exec lamassu-lnd-alice lncli --network=regtest newaddress p2wkh | jq -r '.address')
|
||||
echo "Alice's address: $ALICE_ADDR"
|
||||
echo ""
|
||||
echo "Sending 5 BTC to Alice..."
|
||||
docker exec lamassu-bitcoind bitcoin-cli -regtest -rpcuser=lamassu -rpcpassword=lamassu sendtoaddress "$ALICE_ADDR" 5
|
||||
echo "Mining 6 blocks for confirmation..."
|
||||
docker exec lamassu-bitcoind bitcoin-cli -regtest -rpcuser=lamassu -rpcpassword=lamassu -generate 6 >/dev/null
|
||||
sleep 2
|
||||
ALICE_BALANCE=$(docker exec lamassu-lnd-alice lncli --network=regtest walletbalance 2>/dev/null | jq -r '.confirmed_balance')
|
||||
echo "Alice's new balance: $ALICE_BALANCE sats"
|
||||
fi
|
||||
|
||||
# Open channel from Alice to LND (1M sats)
|
||||
echo ""
|
||||
echo "Opening 1M sat channel from Alice to LND..."
|
||||
docker exec lamassu-lnd-alice lncli --network=regtest openchannel --node_key="$LND_PUBKEY" --local_amt=1000000
|
||||
|
||||
echo ""
|
||||
echo "Mining 6 blocks to confirm channel..."
|
||||
docker exec lamassu-bitcoind bitcoin-cli -regtest -rpcuser=lamassu -rpcpassword=lamassu -generate 6 >/dev/null
|
||||
|
||||
sleep 3
|
||||
echo ""
|
||||
echo "Channel status:"
|
||||
docker exec lamassu-lnd-alice lncli --network=regtest listchannels | jq '.channels[] | {remote_pubkey, capacity, local_balance, remote_balance, active}'
|
||||
echo ""
|
||||
echo "Channel setup complete! Alice can now pay invoices to Lightning.Pub."
|
||||
'';
|
||||
|
||||
# Pay an invoice from Alice's node
|
||||
alice-pay.exec = ''
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: alice-pay <invoice>"
|
||||
exit 1
|
||||
fi
|
||||
echo "Paying invoice from Alice's node..."
|
||||
docker exec lamassu-lnd-alice lncli --network=regtest payinvoice --force "$1"
|
||||
'';
|
||||
};
|
||||
|
||||
# ============================================
|
||||
|
|
@ -144,12 +292,25 @@
|
|||
echo " Rust: $(rustc --version | cut -d' ' -f2)"
|
||||
echo " pnpm: $(pnpm --version)"
|
||||
echo ""
|
||||
echo " Commands:"
|
||||
echo " dev Start development servers"
|
||||
echo " build Build all packages"
|
||||
echo " test Run tests"
|
||||
echo " infra-up Start Docker infrastructure"
|
||||
echo " infra-down Stop Docker infrastructure"
|
||||
echo " Development:"
|
||||
echo " dev Start development servers"
|
||||
echo " build Build all packages"
|
||||
echo " test Run tests"
|
||||
echo ""
|
||||
echo " Infrastructure:"
|
||||
echo " infra-up Start Docker services (strfry, bitcoind, LND, Lightning.Pub)"
|
||||
echo " infra-down Stop Docker services"
|
||||
echo " infra-status Show service status"
|
||||
echo " infra-logs Follow service logs"
|
||||
echo ""
|
||||
echo " Bitcoin/Lightning:"
|
||||
echo " btccli Bitcoin CLI (regtest)"
|
||||
echo " lncli LND CLI (Lightning.Pub's node)"
|
||||
echo " lncli-alice LND CLI (Alice's node for testing payments)"
|
||||
echo " mine-blocks Mine regtest blocks (default: 1)"
|
||||
echo " setup-channel Setup channel between Alice and LND"
|
||||
echo " alice-pay Pay invoice from Alice's node"
|
||||
echo " relay-test Test Nostr relay connection"
|
||||
echo ""
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue