open channel between ln nodes
This commit is contained in:
		
							parent
							
								
									c63622b8a4
								
							
						
					
					
						commit
						c88ba74268
					
				
							
								
								
									
										12
									
								
								.env.sample
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								.env.sample
									
									
									
									
									
								
							@ -89,6 +89,10 @@ IMGPROXY_DOWNLOAD_TIMEOUT=9
 | 
			
		||||
# prisma db url
 | 
			
		||||
DATABASE_URL="postgresql://sn:password@db:5432/stackernews?schema=public"
 | 
			
		||||
 | 
			
		||||
###################
 | 
			
		||||
# FOR DOCKER ONLY #
 | 
			
		||||
###################
 | 
			
		||||
 | 
			
		||||
# postgres container stuff
 | 
			
		||||
POSTGRES_PASSWORD=password
 | 
			
		||||
POSTGRES_USER=sn
 | 
			
		||||
@ -113,15 +117,15 @@ ZMQ_TX_PORT=28335
 | 
			
		||||
LND_REST_PORT=8080
 | 
			
		||||
LND_GRPC_PORT=10009
 | 
			
		||||
LND_P2P_PORT=9735
 | 
			
		||||
# docker exec -u lnd sn_lnd lncli newaddress p2tr --unused
 | 
			
		||||
LND_ADDR=bcrt1phujdlvh2ttfdxcsc2c3p3vv6g5uutua9pr846r94ae33636gxy7qkly70z
 | 
			
		||||
# docker exec -u lnd sn_lnd lncli newaddress p2wkh --unused
 | 
			
		||||
LND_ADDR=bcrt1q7q06n5st4vqq3lssn0rtkrn2qqypghv9xg2xnl
 | 
			
		||||
LND_PUBKEY=02cb2e2d5a6c5b17fa67b1a883e2973c82e328fb9bd08b2b156a9e23820c87a490
 | 
			
		||||
 | 
			
		||||
# stacker lnd container stuff
 | 
			
		||||
STACKER_LND_REST_PORT=9090
 | 
			
		||||
STACKER_LND_GRPC_PORT=10010
 | 
			
		||||
# docker exec -u lnd stacker_lnd lncli newaddress p2tr --unused
 | 
			
		||||
STACKER_LND_ADDR=bcrt1pn0ach38n7k5ejxw7e2mx02gqe237em7d9eev3dcd2yst3tlyhtdswkgd89
 | 
			
		||||
# docker exec -u lnd stacker_lnd lncli newaddress p2wkh --unused
 | 
			
		||||
STACKER_LND_ADDR=bcrt1qfqau4ug9e6rtrvxrgclg58e0r93wshucumm9vu
 | 
			
		||||
STACKER_LND_PUBKEY=028093ae52e011d45b3e67f2e0f2cb6c3a1d7f88d2920d408f3ac6db3a56dc4b35
 | 
			
		||||
 | 
			
		||||
LNCLI_NETWORK=regtest
 | 
			
		||||
@ -40,6 +40,9 @@ services:
 | 
			
		||||
      opensearch:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
        restart: true
 | 
			
		||||
      sn_lnd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
        restart: true
 | 
			
		||||
    env_file:
 | 
			
		||||
      - .env.sndev
 | 
			
		||||
    expose:
 | 
			
		||||
@ -70,6 +73,9 @@ services:
 | 
			
		||||
      opensearch:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
        restart: true
 | 
			
		||||
      sn_lnd:
 | 
			
		||||
        condition: service_healthy
 | 
			
		||||
        restart: true
 | 
			
		||||
    env_file:
 | 
			
		||||
      - .env.sndev
 | 
			
		||||
    volumes:
 | 
			
		||||
@ -155,17 +161,7 @@ services:
 | 
			
		||||
    container_name: bitcoin
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: >
 | 
			
		||||
        bash -c '
 | 
			
		||||
          set -e
 | 
			
		||||
          blockcount=$$(bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} getblockcount 2>/dev/null)
 | 
			
		||||
          if (( blockcount <= 0 )); then
 | 
			
		||||
            bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 10 ${LND_ADDR}
 | 
			
		||||
            bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 10 ${STACKER_LND_ADDR}
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
          exit 0
 | 
			
		||||
        '
 | 
			
		||||
      test: ["CMD-SHELL", "bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} getblockchaininfo"]
 | 
			
		||||
      interval: 10s
 | 
			
		||||
      timeout: 10s
 | 
			
		||||
      retries: 10
 | 
			
		||||
@ -199,14 +195,21 @@ services:
 | 
			
		||||
      - bitcoin:/home/bitcoin/.bitcoin
 | 
			
		||||
    labels:
 | 
			
		||||
      ofelia.enabled: "true"
 | 
			
		||||
      ofelia.job-exec.minecron.schedule: "@every 2m"
 | 
			
		||||
      ofelia.job-exec.minecron.schedule: "@every 1m"
 | 
			
		||||
      ofelia.job-exec.minecron.command: >
 | 
			
		||||
        bash -c '
 | 
			
		||||
          echo "Mining a block to sn_lnd..."
 | 
			
		||||
          bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 1 ${LND_ADDR}
 | 
			
		||||
          sleep 60
 | 
			
		||||
          echo "Mining a block to stacker_lnd..."
 | 
			
		||||
          bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 1 ${STACKER_LND_ADDR}'
 | 
			
		||||
          blockcount=$$(bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} getblockcount 2>/dev/null)
 | 
			
		||||
          if (( blockcount <= 0 )); then
 | 
			
		||||
            echo "Mining 10 blocks to sn_lnd and stacker_lnd..."
 | 
			
		||||
            bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 100 ${LND_ADDR}
 | 
			
		||||
            bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 100 ${STACKER_LND_ADDR}
 | 
			
		||||
          else
 | 
			
		||||
            echo "Mining a block to sn_lnd... ${LND_ADDR}"
 | 
			
		||||
            bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 1 ${LND_ADDR}
 | 
			
		||||
            echo "Mining a block to stacker_lnd... ${STACKER_LND_ADDR}"
 | 
			
		||||
            bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 1 ${STACKER_LND_ADDR}
 | 
			
		||||
          fi
 | 
			
		||||
        '
 | 
			
		||||
  sn_lnd:
 | 
			
		||||
    build:
 | 
			
		||||
      context: ./docker/lnd
 | 
			
		||||
@ -215,7 +218,7 @@ services:
 | 
			
		||||
    container_name: sn_lnd
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: ["CMD", "lncli", "getinfo"]
 | 
			
		||||
      test: ["CMD-SHELL", "lncli", "getinfo"]
 | 
			
		||||
      interval: 10s
 | 
			
		||||
      timeout: 10s
 | 
			
		||||
      retries: 10
 | 
			
		||||
@ -249,6 +252,7 @@ services:
 | 
			
		||||
      - '--maxchansize=1000000000'
 | 
			
		||||
      - '--allow-circular-route'
 | 
			
		||||
      - '--bitcoin.defaultchanconfs=0'
 | 
			
		||||
      - '--maxpendingchannels=10'
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${LND_P2P_PORT}"
 | 
			
		||||
    ports:
 | 
			
		||||
@ -256,6 +260,17 @@ services:
 | 
			
		||||
      - "${LND_GRPC_PORT}:${LND_GRPC_PORT}"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - sn_lnd:/home/lnd/.lnd
 | 
			
		||||
    labels:
 | 
			
		||||
      ofelia.enabled: "true"
 | 
			
		||||
      ofelia.job-exec.sn_channel_cron.schedule: "@every 1m"
 | 
			
		||||
      ofelia.job-exec.sn_channel_cron.command: >
 | 
			
		||||
        su lnd -c bash -c "
 | 
			
		||||
          if [ $$(lncli listchannels | jq '.member | length') -ge 1 ]; then
 | 
			
		||||
            exit 0
 | 
			
		||||
          else
 | 
			
		||||
            lncli openchannel --node_key=$STACKER_LND_PUBKEY --connect stacker_lnd:9735 --sat_per_vbyte 1 --min_confs 0 --local_amt=1000000000 --push_amt=500000000
 | 
			
		||||
          fi
 | 
			
		||||
        "
 | 
			
		||||
  stacker_lnd:
 | 
			
		||||
    build:
 | 
			
		||||
      context: ./docker/lnd
 | 
			
		||||
@ -264,7 +279,7 @@ services:
 | 
			
		||||
    container_name: stacker_lnd
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: ["CMD", "lncli", "getinfo"]
 | 
			
		||||
      test: ["CMD-SHELL", "lncli", "getinfo"]
 | 
			
		||||
      interval: 10s
 | 
			
		||||
      timeout: 10s
 | 
			
		||||
      retries: 10
 | 
			
		||||
@ -275,8 +290,6 @@ services:
 | 
			
		||||
        restart: true
 | 
			
		||||
    env_file:
 | 
			
		||||
      - .env.sndev
 | 
			
		||||
    environment:
 | 
			
		||||
      - LN_NODE_FOR=stacker
 | 
			
		||||
    command:
 | 
			
		||||
      - 'lnd'
 | 
			
		||||
      - '--noseedbackup'
 | 
			
		||||
@ -300,6 +313,7 @@ services:
 | 
			
		||||
      - '--maxchansize=1000000000'
 | 
			
		||||
      - '--allow-circular-route'
 | 
			
		||||
      - '--bitcoin.defaultchanconfs=0'
 | 
			
		||||
      - '--maxpendingchannels=10'
 | 
			
		||||
    expose:
 | 
			
		||||
      - "${LND_P2P_PORT}"
 | 
			
		||||
    ports:
 | 
			
		||||
@ -307,11 +321,24 @@ services:
 | 
			
		||||
      - "${STACKER_LND_GRPC_PORT}:${LND_GRPC_PORT}"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - stacker_lnd:/home/lnd/.lnd
 | 
			
		||||
    labels:
 | 
			
		||||
      ofelia.enabled: "true"
 | 
			
		||||
      ofelia.job-exec.stacker_channel_cron.schedule: "@every 1m"
 | 
			
		||||
      ofelia.job-exec.stacker_channel_cron.command: >
 | 
			
		||||
        su lnd -c bash -c "
 | 
			
		||||
          if [ $$(lncli listchannels | jq '.member | length') -ge 1 ]; then
 | 
			
		||||
            exit 0
 | 
			
		||||
          else
 | 
			
		||||
            lncli openchannel --node_key=$LND_PUBKEY --connect sn_lnd:9735 --sat_per_vbyte 1 --min_confs 0 --local_amt=1000000000 --push_amt=500000000
 | 
			
		||||
          fi
 | 
			
		||||
        "
 | 
			
		||||
  channdler:
 | 
			
		||||
    image: mcuadros/ofelia:latest
 | 
			
		||||
    container_name: channdler
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - bitcoin
 | 
			
		||||
      - sn_lnd
 | 
			
		||||
      - stacker_lnd
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    command: daemon --docker -f label=com.docker.compose.project=${COMPOSE_PROJECT_NAME}
 | 
			
		||||
    volumes:
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,12 @@
 | 
			
		||||
FROM polarlightning/lnd:0.17.4-beta
 | 
			
		||||
 | 
			
		||||
ARG LN_NODE_FOR
 | 
			
		||||
ENV LN_NODE_FOR=$LN_NODE_FOR
 | 
			
		||||
 | 
			
		||||
RUN apt-get update -y \
 | 
			
		||||
  && apt-get install -y jq \
 | 
			
		||||
  && apt-get clean \
 | 
			
		||||
  && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 | 
			
		||||
 | 
			
		||||
COPY ["./$LN_NODE_FOR/regtest/*", "/home/lnd/.lnd/data/chain/bitcoin/regtest/"]
 | 
			
		||||
COPY ["./$LN_NODE_FOR/tls.*", "/home/lnd/.lnd/"]
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user