lnbase: expose wallet object in LNWorker

This commit is contained in:
ThomasV 2018-04-12 12:00:31 +02:00 committed by Janus
parent 51a31051bd
commit 37d73c3165
3 changed files with 18 additions and 29 deletions

View File

@ -334,16 +334,13 @@ class Peer(PrintError):
async def main_loop(self, loop):
self.reader, self.writer = await asyncio.open_connection(self.host, self.port, loop=loop)
await self.handshake()
# send init
self.send_message(gen_msg("init", gflen=0, lflen=0))
# read init
msg = await self.read_message()
self.process_message(msg)
# initialized
self.init_message_received_future.set_result(msg)
# loop
while True:
self.ping_if_required()
@ -355,9 +352,7 @@ class Peer(PrintError):
async def channel_establishment_flow(self):
await self.init_message_received_future
pubkeys = get_unused_public_keys()
temp_channel_id = os.urandom(32)
msg = gen_msg("open_channel", temporary_channel_id=temp_channel_id, chain_hash=bytes.fromhex(rev_hex(constants.net.GENESIS)), funding_satoshis=20000, max_accepted_htlcs=5, funding_pubkey=next(pubkeys), revocation_basepoint=next(pubkeys), htlc_basepoint=next(pubkeys), payment_basepoint=next(pubkeys), delayed_payment_basepoint=next(pubkeys), first_per_commitment_point=next(pubkeys))
self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id] = asyncio.Future()
@ -369,23 +364,24 @@ class Peer(PrintError):
finally:
del self.temporary_channel_id_to_incoming_accept_channel[temp_channel_id]
# check that it is in my pending requests
# I need to attach a wallet to each request
if ok:
tx = wallet.create_funding_tx()
wallet.sign(tx)
m = gen_msg('funding created', signature)
self.send_message(m)
# replacement for lightningCall
class LNWallet(Wallet):
def __init__(self, wallet, peer):
class LNWorker:
def __init__(self, wallet, network):
self.wallet = wallet
self.peer = peer
self.network = network
self.loop = network.asyncio_loop
host, port, pubkey = ('ecdsa.net', '9735', '038370f0e7a03eded3e1d41dc081084a87f0afa1c5b22090b4f3abb391eb15d8ff')
pubkey = binascii.unhexlify(pubkey)
port = int(port)
privkey = b"\x21"*32 + b"\x01"
self.peer = Peer(privkey, host, port, pubkey)
self.network.futures.append(asyncio.run_coroutine_threadsafe(self.peer.main_loop(self.loop), self.loop))
def openchannel(self):
# todo: get utxo from wallet
# submit coro to asyncio main loop
self.peer.open_channel()

View File

@ -1063,7 +1063,7 @@ class Network(util.DaemonThread):
def run(self):
self.init_headers_file()
self.futures = []
loop = asyncio.new_event_loop()
self.asyncio_loop = loop = asyncio.new_event_loop()
networkAndWalletLock = QLock()
def asyncioThread():
asyncio.set_event_loop(loop)
@ -1071,17 +1071,7 @@ class Network(util.DaemonThread):
self.lightninglock.acquire()
if self.lightningrpc is not None and self.lightningworker is not None:
task = asyncio.ensure_future(asyncio.gather(self.lightningrpc.run(networkAndWalletLock), self.lightningworker.run(networkAndWalletLock)))
loop.run_forever()
if self.config.get('lnbase', False):
from .lnbase import Peer
import binascii
host, port, pubkey = ('ecdsa.net', '9735', '038370f0e7a03eded3e1d41dc081084a87f0afa1c5b22090b4f3abb391eb15d8ff')
pubkey = binascii.unhexlify(pubkey)
port = int(port)
privkey = b"\x21"*32 + b"\x01"
peer = Peer(privkey, host, port, pubkey)
self.futures.append(asyncio.run_coroutine_threadsafe(peer.main_loop(loop), loop))
loop.run_forever()
loop.run_forever()
threading.Thread(target=asyncioThread).start()
networkAndWalletLock.acquire()

View File

@ -1313,6 +1313,9 @@ class Abstract_Wallet(PrintError):
network.lightningworker = LightningWorker(self, network, network.config)
network.lightningrpc = LightningRPC()
network.lightninglock.release()
if network.config.get("lnbase", False):
from .lnbase import LNWorker
self.lnworker = LNWorker(self, network)
else:
self.verifier = None
self.synchronizer = None