Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,7 @@ jobs:
- name: 'Build ptarmigan'
script:
- docker run lnintegration bash -c "make update-ptarmigan bin/ptarmd && py.test -v test.py -k PtarmNode"

- name: 'Build rust-lightning-bitcoinrpc'
script:
- docker run lnintegration bash -c "make update-rust-lightning bin/rust-lightning-bitcoinrpc && py.test -v test.py -k RustLightningBitcoinrpcNode"
7 changes: 7 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ RUN apt-get update \
build-essential \
clang \
curl \
gettext \
git \
jq \
libboost-all-dev \
Expand Down Expand Up @@ -76,6 +77,12 @@ RUN cd /tmp \

ENV GOROOT=/usr/local/go

# Install cargo for rust builds
RUN cd /root \
&& curl -s -L -O https://static.rust-lang.org/rustup.sh \
&& bash ./rustup.sh -y --verbose
ENV PATH="/root/.cargo/bin:${PATH}"

VOLUME /root/lightning-integration/reports
VOLUME /root/lightning-integration/output

Expand Down
15 changes: 13 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ src/lnd:
src/ptarmigan:
git clone https://github.com/nayutaco/ptarmigan.git src/ptarmigan

src/rust-lightning-bitcoinrpc:
git clone https://github.com/jtimon/rust-lightning-bitcoinrpc.git src/rust-lightning-bitcoinrpc

update-eclair: src/eclair
rm src/eclair/version || true
cd src/eclair && git stash; git pull origin master
Expand All @@ -41,7 +44,10 @@ update-ptarmigan: src/ptarmigan
rm src/ptarmigan/version || true
cd src/ptarmigan && git stash; git pull origin master

update: update-eclair update-clightning update-lnd update-ptarmigan
update-rust-lightning: src/rust-lightning-bitcoinrpc
cd src/rust-lightning-bitcoinrpc && git stash; git checkout simpler-argman

update: update-eclair update-clightning update-lnd update-ptarmigan update-rust-lightning

bin/eclair.jar: src/eclair
(cd src/eclair; git rev-parse HEAD) > src/eclair/version
Expand Down Expand Up @@ -70,14 +76,19 @@ bin/lnd: src/lnd
&& go build -v -mod=vendor -o lncli github.com/lightningnetwork/lnd/cmd/lncli
cp src/lnd/lnd src/lnd/lncli bin/

bin/rust-lightning-bitcoinrpc: src/rust-lightning-bitcoinrpc
cd src/rust-lightning-bitcoinrpc; cargo build --release -j ${NPROC}
cp src/rust-lightning-bitcoinrpc/target/release/rust-lightning-bitcoinrpc bin/

clean:
rm src/lnd/version src/lightning/version src/eclair/version src/ptarmigan/version || true
rm bin/* || true
cd src/lightning; make clean
cd src/eclair; mvn clean
cd src/ptarmigan; make distclean
cd src/rust-lightning-bitcoinrpc; cargo clean

clients: bin/lightningd bin/lnd bin/eclair.jar bin/ptarmd
clients: bin/lightningd bin/lnd bin/eclair.jar bin/ptarmd bin/rust-lightning-bitcoinrpc

test: clients
# Failure is always an option
Expand Down
102 changes: 102 additions & 0 deletions rustln.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
from utils import TailableProc, BITCOIND_CONFIG

import logging
import os
import time

class RustLightningBitcoinrpc(TailableProc):

def __init__(self, lightning_dir, bitcoind, port):
TailableProc.__init__(self, lightning_dir)
self.lightning_dir = lightning_dir
self.bitcoind = bitcoind
self.port = port
self.cmd_line = [
'bin/rust-lightning-bitcoinrpc',
'-chain=regtest',
'-p2pport={}'.format(port),
'-datadir={}'.format(lightning_dir),
'-rpcauth={}:{}'.format(BITCOIND_CONFIG['rpcuser'], BITCOIND_CONFIG['rpcpassword']),
'-rpc_host=127.0.0.1:{}'.format(self.bitcoind.rpcport),
]
self.prefix = 'rust-lightning-bitcoinrpc'

if not os.path.exists(lightning_dir):
os.makedirs(lightning_dir)

def start(self):
TailableProc.start(self)
# self.wait_for_log("Started interactive shell! Commands:")
time.sleep(5)
logging.info("Success! Starting up...")

def stop(self):
TailableProc.stop(self)
logging.info("RustLightningBitcoinrpc stopped")


class RustLightningBitcoinrpcNode(object):

displayName = 'rust-lightning-bitcoinrpc'

def __init__(self, lightning_dir, lightning_port, btc, executor=None, node_id=0):
self.bitcoin = btc
self.executor = executor
self.daemon = RustLightningBitcoinrpc(lightning_dir, self.bitcoin, port=lightning_port)

# TODO rust-lightning-bitcoinrpc doesn't havean rpc interface, it just takes commands directly on the command line when running

def id(self):
pass

def ping(self):
pass

def peers(self):
pass

def check_channel(self, remote):
pass

def addfunds(self, bitcoind, satoshis):
pass

def openchannel(self, node_id, host, port, satoshis):
pass

def getchannels(self):
pass

def getnodes(self):
pass

def invoice(self, amount):
pass

def send(self, bolt11):
pass

def connect(self, host, port, node_id):
pass

def info(self):
pass

def block_sync(self, blockhash):
print("Waiting for node to learn about", blockhash)
self.daemon.wait_for_log('NTFN: New block: height=([0-9]+), sha={}'.format(blockhash))

def restart(self):
self.daemon.stop()
time.sleep(5)
self.daemon.start()
time.sleep(1)

def stop(self):
self.daemon.stop()

def start(self):
self.daemon.start()

def check_route(self, node_id, amount):
pass
3 changes: 2 additions & 1 deletion test.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from lnaddr import lndecode
from lnd import LndNode
from ptarmd import PtarmNode
from rustln import RustLightningBitcoinrpcNode
from concurrent import futures
from utils import BitcoinD, BtcD
from bech32 import bech32_decode
Expand All @@ -21,7 +22,7 @@
import tempfile
import time

impls = [EclairNode, LightningNode, LndNode, PtarmNode]
impls = [EclairNode, LightningNode, LndNode, PtarmNode, RustLightningBitcoinrpcNode]

if TEST_DEBUG:
logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)
Expand Down