Boltz Client connects to CLN or LND nodes and allows for fully unattended channel rebalancing using Boltz API.
The official documentation is available here.
Boltz Client for CLN & LND
License: MIT License
Waiting for Taproot regular claims and APIv2 to be final.
Add for all /createswap
swaps that require a manual refund need to be shown to the user. could be forgotten otherwise
In principle, it should be possible to use a reverse swap claim transaction to directly fund a new lightning channel. However, the process is non-trivial, since the steps of reverse swapping and channel negotiation would have to be interleaved. Coarsely outlined:
If the channel negotiation fails, a normal claim transaction has to be created automatically instead.
Apart from the obvious benefit of saving one on-chain transaction, this would also be a privacy benefit for node operators, because the claim/fund transaction would be completely separate from their on-chain wallet and it is not generally visible from the outside who initiated the channel.
Sending from internal wallets should be default as boltz-client purely serves rebalancing now. Kept it opt-in for first release for backwards compatibility.
Release together with RTL 0.15.1 to avoid breaking things and consider renaming to sth like sendFromInternal
.
#48 was refunded after timeout.
I tried another Channel Creation which failed, too.
However, this time I get
INFO : 2021/07/19 14:37:46 Using fee of 0 sat/vbyte for refund transaction
INFO : 2021/07/19 14:37:46 Constructed refund transaction: 80ec7a7c08e3a2803cf9c92d434aec02b548300ec6d02def0c2cd750623f5ca6
ERROR: 2021/07/19 14:37:46 Could not finalize refund transaction: could not broadcast transaction: min relay fee not met, 0 < 162
$ boltzcli autoswap setup
? You already have an autoswap configuration. Do you want to reset it? Yes
? Which currency should autoswaps be performed on? LBTC
? Which type of swaps should be executed? both
? Select LBTC wallet Import Existing
? Please type your mnemonic X X X
? Do you want to provide a wallet password to encrypt your wallet, which will be required on startup? No
Successfully imported wallet!
multiple wallets for currency
$
Change all CLI messages from satoshi to litoshi, e.g. here:
testnet > boltzcli ltc deposit
You will receive your deposit in a lightning channel. If you do not have a channel with sufficient capacity yet, Boltz will open a channel.
The fees for this service are:
- Service fee: 1.0%
- Miner fee: 4250 satoshis
Please deposit between 105252 and 1010004250 satoshis into QaFnyCaZE3wwWTr4CDHapyzQ2ybyVRs2KX in the next ~5.0 hours (block height 1739882)
I'm using a fresh xud-docker mainnet. I tried to deposit btc
. The deposit transaction is confirmed (https://www.blockchain.com/btc/address/37L1Dhudf2oj6iR23t4NHbTBHKpMZ2KmzA) but getbalance
comamnd still shows btc balance 0.
LND-BTC Info:
┌──────────┬──────────────────────────────────────────────────────────────────────┐
│ Status │ Ready │
├──────────┼──────────────────────────────────────────────────────────────────────┤
│ Version │ 0.11.0-beta commit=v0.11.0-beta │
├──────────┼──────────────────────────────────────────────────────────────────────┤
│ Address │ 02e8f7767858ca443a70e186685b15ad438f75f081efe9f2a30bc45993bcb88722 │
│ │ @dseqdyqjht4bmggv7ifbzbtviavjawevwqkyclfgpfg2zl57jv5gwhad.onion:9735 │
├──────────┼──────────────────────────────────────────────────────────────────────┤
│ Alias │ 02e8f7767858ca443a70 │
├──────────┼──────────────────────────────────────────────────────────────────────┤
│ Channels │ Active: 1 | Pending: 0 | Closed: 0 │
├──────────┼──────────────────────────────────────────────────────────────────────┤
│ Network │ bitcoin mainnet │
└──────────┴──────────────────────────────────────────────────────────────────────┘
General XUD Info
┌───────────────┬──────────────────────────────────────────────────────────────────────┐
│ Status │ LND-LTC: lnd-LTC has no active channels │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Alias │ IdentifyBusy │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Node Key │ 033b647b3bb44aa607948c4d026456191db5e0c63ef7777d2cf863c08613a3ac8c │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Address │ 033b647b3bb44aa607948c4d026456191db5e0c63ef7777d2cf863c08613a3ac8c │
│ │ @r4fotfhcvkwdyco76jaolm4b6wcp7dhbjci5ivghy3nkwwh473u6q4ad.onion:8885 │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Network │ mainnet │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Version │ 1.0.0-beta.8-aa3027a6 │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Peers │ 4 │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Pairs │ 4 │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Own orders │ 0 │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Peer orders │ 4 │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Pending swaps │ [] │
└───────────────┴──────────────────────────────────────────────────────────────────────┘
This issue is about RBF batching all refund and claim transactions that are still in the mempool
ERROR: 2020/07/28 09:26:38 [BTC] Could not listen to events of Swap i6DdmX: stream error: stream ID 9; INTERNAL_ERROR
This enhancement should provide an opportunity for successful/failed swaps monitoring, because for now I can only get pending swaps using getinfo call.
To be in-line with backend. Cli only, protobuf doesn't allow this.
for swaps funded by external wallets choose first wallet that fits, if none available prompt for refund address
boltzd
binary would make things work, but it's notIncrementally increasing backoff to retry via a specific channel just like https://docs.lightning.engineering/lightning-network-tools/loop/autoloop#failure-backoff
Let's broadcast via all of these by default to eleminate trust in Boltz for broadcasting transactions
Same for web app: BoltzExchange/boltz-web-app#521
Mainchain xpubs are already supported. Depends on Blockstream/gdk#201 (comment), as of today Liquid xpubs don't exist yet.
I tried creating a channel using boltzcli create channel 1000000 25
and subsequently transacted the specified amount (1005340 sats) to 3J7yf1k5JmgAs83ArzRrLcaacSHBp2ktpj.
https://mempool.space/tx/2ef8bc6939fac6ec283e0c7f42117b1d9d82196c63c6bdb9b115c9722f539286
Although the transaction is confirmed, no channel is opened to my node.
Why is no channel created?
How can I recover my funds using boltz-lnd?
boltzcli swapinfo wuQmvp
output:
{
"swap": {
"id": "wuQmvp",
"state": "PENDING",
"error": "",
"status": "invoice.pending",
"privateKey": "<redacted>",
"preimage": "<redacted>",
"redeemScript": "a914941c1f600998347865dcd6413e371687c51e3bf98763210350f408f3ac2cf94c98e71b50bbffeb0ddf4812aa47ff32ae5d36a8a4334bae8367037c8d0ab1752102c4e998abcf12a7b0ec0761dcb6f617773d26ee244eb5af39bbef0fc0a44ae97868ac",
"invoice": "lnbc10m1ps0945tpp5qhfyj83aj80gq8j9r5xpq22vw4vx40pfuv5p5vc4rge4pjlkrqssdpggd5xzmnwv4kzqsmjv4shg6t0dcsxvun0d5syy4zrcqzpgxqyz57csp5z42dzqmtkthtdgkl3alkcuar2dx59zv72p7vet0egnxtgzjwal2s9qyyssqe8ayphakwxge290wnasf3yea3lx67w25cw4wuxfg3qkt9ml9nuz3m63fmxua6p8vdgk0nyqzms0c3fu6nzmrvps0uk7mgy7d4lnxdlsqkwn6mz",
"lockupAddress": "3J7yf1k5JmgAs83ArzRrLcaacSHBp2ktpj",
"expectedAmount": "1005340",
"timeoutBlockHeight": 691580,
"lockupTransactionId": "",
"refundTransactionId": ""
},
"channelCreation": {
"swapId": "wuQmvp",
"status": "none",
"inboundLiquidity": 25,
"private": false,
"fundingTransactionId": "",
"fundingTransactionVout": 0
},
"reverseSwap": null
}
Logs
INFO : 2021/07/17 13:09:31 Creating a public Channel Creation with 25% inbound liquidity for 1000000 satoshis
INFO : 2021/07/17 13:09:31 Verified redeem script and address of Channel Creation wuQmvp
INFO : 2021/07/17 13:09:31 Listening to events of Channel Creation wuQmvp
INFO : 2021/07/17 13:09:31 Subscribing to invoice events of Channel Creation wuQmvp
INFO : 2021/07/17 13:09:31 Connected to LND invoice event stream: 05d2491e3d91de801e451d0c10294c75586abc29e3281a33151a3350cbf61821
INFO : 2021/07/17 13:09:31 Created new Channel Creation wuQmvp: {
"Id": "wuQmvp",
"State": "PENDING",
"Error": "",
"Status": "invoice.set",
"PrivateKey": "<redacted>",
"Preimage": "<redacted>",
"RedeemScript": "a914941c1f600998347865dcd6413e371687c51e3bf98763210350f408f3ac2cf94c98e71b50bbffeb0ddf4812aa47ff32ae5d36a8a4334bae8367037c8d0ab1752102c4e998abcf12a7b0ec0761dcb6f617773d26ee244eb5af39bbef0fc0a44ae97868ac",
"Invoice": "lnbc10m1ps0945tpp5qhfyj83aj80gq8j9r5xpq22vw4vx40pfuv5p5vc4rge4pjlkrqssdpggd5xzmnwv4kzqsmjv4shg6t0dcsxvun0d5syy4zrcqzpgxqyz57csp5z42dzqmtkthtdgkl3alkcuar2dx59zv72p7vet0egnxtgzjwal2s9qyyssqe8ayphakwxge290wnasf3yea3lx67w25cw4wuxfg3qkt9ml9nuz3m63fmxua6p8vdgk0nyqzms0c3fu6nzmrvps0uk7mgy7d4lnxdlsqkwn6mz",
"Address": "3J7yf1k5JmgAs83ArzRrLcaacSHBp2ktpj",
"ExpectedAmount": 1005340,
"TimeoutBlockHeight": 691580,
"LockupTransactionId": "",
"RefundTransactionId": ""
}
{
"SwapId": "wuQmvp",
"Status": "none",
"InboundLiquidity": 25,
"Private": false,
"FundingTransactionId": "",
"FundingTransactionVout": 0
}
INFO : 2021/07/17 13:14:26 Channel Creation wuQmvp status update: transaction.mempool
INFO : 2021/07/17 13:14:27 Connected to Boltz LND node: 026165850492521f4ac8abd9bd8088123446d126f648ca35e60f88177dc149ceb2@104.196.200.39:9735
INFO : 2021/07/17 13:26:57 Channel Creation wuQmvp status update: transaction.confirmed
INFO : 2021/07/17 13:27:00 Already connected to Boltz LND node: 026165850492521f4ac8abd9bd8088123446d126f648ca35e60f88177dc149ceb2@104.196.200.39:9735
INFO : 2021/07/17 13:27:00 Channel Creation wuQmvp status update: invoice.pending
ERROR: 2021/07/17 13:27:01 Could not find Channel of Channel Creation wuQmvp
Must be related to the 0.11 upgrade since before this was working:
Testnet ltc channel creation swap:
INFO : 2020/08/25 16:10:52 [LTC] Initialized logger
INFO : 2020/08/25 16:10:52 [LTC] Opening database: /root/.boltz/litecoin/boltz.db
2020/08/25 16:10:52 WARNING: proto: file "rpc.proto" is already registered
A future release will panic on registration conflicts. See:
https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict
INFO : 2020/08/25 16:10:52 [LTC] Database already at latest schema version: 1
INFO : 2020/08/25 16:10:52 [BTC] Initialized logger
INFO : 2020/08/25 16:10:52 [BTC] Opening database: /root/.boltz/bitcoin/boltz.db
INFO : 2020/08/25 16:10:52 [BTC] Database already at latest schema version: 1
INFO : 2020/08/25 16:10:53 [BTC] Parsed chain: BTC testnet3
INFO : 2020/08/25 16:10:53 [BTC] Using default Boltz endpoint for chain testnet3: https://testnet.boltz.exchange/api
INFO : 2020/08/25 16:10:53 [LTC] Parsed chain: LTC testnet4
INFO : 2020/08/25 16:10:53 [LTC] Using default Boltz endpoint for chain testnet4: https://testnet.boltz.exchange/api
2020-08-25 16:10:54,103 INFO success: boltzd-bitcoin entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-08-25 16:10:54,103 INFO success: boltzd-litecoin entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
INFO : 2020/08/25 16:10:54 [LTC] Connected to Boltz LND node: 0278d27617616c156c879dd51d61313795e3782abda2cd7a37d9d24ece6c309064@35.237.24.136:10735
INFO : 2020/08/25 16:10:54 [LTC] Starting nursery
INFO : 2020/08/25 16:10:54 [LTC] Recovering pending Swaps and Channel Creations
INFO : 2020/08/25 16:10:54 [LTC] Connecting to LND block epoch stream
INFO : 2020/08/25 16:10:54 [LTC] Connected to LND block epoch stream
INFO : 2020/08/25 16:10:54 [LTC] Recovering pending Reverse Swaps
INFO : 2020/08/25 16:10:54 [LTC] Starting RPC server on: 0.0.0.0:9003
INFO : 2020/08/25 16:10:54 [BTC] Already connected to Boltz LND node: 03f060953bef5b777dc77e44afa3859d022fc1a77c55138deb232ad7255e869c00@35.237.24.136:9735
INFO : 2020/08/25 16:10:54 [BTC] Starting nursery
INFO : 2020/08/25 16:10:54 [BTC] Recovering pending Swaps and Channel Creations
INFO : 2020/08/25 16:10:54 [BTC] Recovering pending Reverse Swaps
INFO : 2020/08/25 16:10:54 [BTC] Connecting to LND block epoch stream
INFO : 2020/08/25 16:10:54 [BTC] Connected to LND block epoch stream
INFO : 2020/08/25 16:10:54 [BTC] Starting RPC server on: 0.0.0.0:9002
INFO : 2020/08/26 08:04:39 [LTC] Creating Swap with preimage hash: 9dce6f0952c4b2d334d5e3214bc439cc5914a28c7043606e6f47e67959f36e06
INFO : 2020/08/26 08:04:39 [LTC] Verified redeem script and address of Swap piKsE0
INFO : 2020/08/26 08:04:39 [LTC] Listening to events of Swap piKsE0
INFO : 2020/08/26 08:04:39 [LTC] Created new Swap piKsE0: {
"Id": "piKsE0",
"Status": "swap.created",
"PrivateKey": "e80e6aeff7f66eccfe0d15fa3715424d662c418c794be9061492318bed6e952b",
"Preimage": "366e6359f1b1ded4e81423cb92eb774f3c19f9922d801bbefc7c09bb19afb206",
"RedeemScript": "a9145cd87e668eb56944b13414f1541ae7a16846980a8763210251fee7424536e69a1801dc5eb2ffb0b6981d6be9cdbf384aa304189341edf71e67034d5718b1752103ec89daddfba0406073c0bc14568aa8b1b0c39e02dd95034e0427581ca6302dd868ac",
"Invoice": "",
"Address": "QXqyTjFB9RvKK9Mj3VzjhBjAdorBczycsV",
"ExpectedAmount": 0,
"TimeoutBlockHeight": 1595213,
"LockupTransactionId": "",
"RefundTransactionId": ""
}
INFO : 2020/08/26 08:05:00 [LTC] Swap piKsE0 status update: transaction.mempool
INFO : 2020/08/26 08:05:01 [LTC] Already connected to Boltz LND node: 0278d27617616c156c879dd51d61313795e3782abda2cd7a37d9d24ece6c309064@35.237.24.136:10735
INFO : 2020/08/26 08:05:01 [LTC] Found output for Swap piKsE0 of 1010004250 satoshis
INFO : 2020/08/26 08:05:01 [LTC] Generated new invoice for Swap piKsE0 for 0 satoshis
ERROR: 2020/08/26 08:05:01 [LTC] Could not set invoice of Swap: 0 is less than minimal of 100000
INFO : 2020/08/26 08:05:30 [LTC] Swap piKsE0 status update: transaction.confirmed
INFO : 2020/08/26 08:05:30 [LTC] Already connected to Boltz LND node: 0278d27617616c156c879dd51d61313795e3782abda2cd7a37d9d24ece6c309064@35.237.24.136:10735
INFO : 2020/08/26 08:05:30 [LTC] Found output for Swap piKsE0 of 1010004250 satoshis
ERROR: 2020/08/26 08:05:30 [LTC] Could not get new invoice for Swap piKsE0: rpc error: code = Unknown desc = invoice with payment hash already exists
INFO : 2020/08/26 08:05:30 [LTC] Swap piKsE0 status update: invoice.pending
INFO : 2020/08/26 08:05:30 [LTC] Swap piKsE0 status update: invoice.failedToPay
Are there any known causes for the following error?
rpc error: code = Unknown desc = json: cannot unmarshal number 200000000000 into Go struct field .pairs.limits.maximal of type int
I have tried boltzcli and the new RTL web gui integration. Same error.
admin@raspberrypi: ~/.boltz-lnd $ go version
go version go1.13.3 linux/arm
admin@raspberrypi: ~/.boltz-lnd $ boltzcli -v
boltzcli version v1.2.4
admin@raspberrypi: ~/.boltz-lnd $ boltzcli deposit
rpc error: code = Unknown desc = json: cannot unmarshal number 200000000000 into Go struct field .pairs.limits.maximal of type int
boltz.log ( result of $ boltzcli deposit )
INFO : 2021/03/08 14:15:30 [BTC] Initialized logger
INFO : 2021/03/08 14:15:30 [BTC] Parsed config and CLI arguments: {
"DataDir": "/home/admin/.boltz-lnd",
"ConfigFile": "/home/admin/.boltz-lnd/boltz.toml",
"LogFile": "/home/admin/.boltz-lnd/boltz.log",
"LogPrefix": "[BTC] ",
"Boltz": {
"URL": ""
},
"LND": {
"Host": "127.0.0.1",
"Port": 10009,
"Macaroon": "/home/admin/.lnd/data/chain/bitcoin/mainnet/admin.macaroon",
"Certificate": "/home/admin/.lnd/tls.cert",
"ChainParams": null
},
"RPC": {
"Host": "127.0.0.1",
"Port": 9002,
"RestHost": "127.0.0.1",
"RestPort": 9003,
"RestDisabled": false,
"TlsCertPath": "/home/admin/.boltz-lnd/tls.cert",
"TlsKeyPath": "/home/admin/.boltz-lnd/tls.key",
"NoMacaroons": false,
"AdminMacaroonPath": "/home/admin/.boltz-lnd/macaroons/admin.macaroon",
"ReadonlyMacaroonPath": "/home/admin/.boltz-lnd/macaroons/readonly.macaroon"
},
"Database": {
"Path": "/home/admin/.boltz-lnd/boltz.db"
},
"Help": {
"ShowHelp": false,
"ShowVersion": false
}
}
INFO : 2021/03/08 14:15:30 [BTC] Opening database: /home/admin/.boltz-lnd/boltz.db
INFO : 2021/03/08 14:15:30 [BTC] Database already at latest schema version: 2
INFO : 2021/03/08 14:15:31 [BTC] Parsed chain: BTC mainnet
INFO : 2021/03/08 14:15:31 [BTC] Using default Boltz endpoint for chain mainnet: https://boltz.exchange/api
INFO : 2021/03/08 14:15:31 [BTC] Already connected to Boltz LND node: 026165850492521f4ac8abd9bd8088123446d126f648ca35e60f88177dc149ceb2@104.196.200.39:9735
INFO : 2021/03/08 14:15:31 [BTC] Starting nursery
INFO : 2021/03/08 14:15:31 [BTC] Recovering pending Swaps and Channel Creations
INFO : 2021/03/08 14:15:31 [BTC] Connecting to LND block epoch stream
INFO : 2021/03/08 14:15:31 [BTC] Connected to LND block epoch stream
INFO : 2021/03/08 14:15:31 [BTC] Recovering Swap D4gyPz at state: swap.created
INFO : 2021/03/08 14:15:31 [BTC] Swap D4gyPz status did not change
INFO : 2021/03/08 14:15:31 [BTC] Listening to events of Swap D4gyPz
INFO : 2021/03/08 14:15:31 [BTC] Recovering pending Reverse Swaps
INFO : 2021/03/08 14:15:31 [BTC] Loaded TLS certificate and key
INFO : 2021/03/08 14:15:31 [BTC] Enabling Macaroon authentication
INFO : 2021/03/08 14:15:31 [BTC] Starting REST server on: 127.0.0.1:9003
INFO : 2021/03/08 14:15:31 [BTC] Starting RPC server on: 127.0.0.1:9002
INFO : 2021/03/08 14:17:28 [BTC] Creating Swap with preimage hash: 7ac51c102b9df69783868fb21aef00677b8d3ef8d914ec609bfd96dfb7225404
INFO : 2021/03/08 14:17:28 [BTC] Verified redeem script and address of Swap PfRNNG
INFO : 2021/03/08 14:17:28 [BTC] Listening to events of Swap PfRNNG
INFO : 2021/03/08 14:17:28 [BTC] Created new Swap PfRNNG: {
"Id": "PfRNNG",
"State": "PENDING",
"Error": "",
"Status": "swap.created",
"PrivateKey": "95224aedc2a1a3b077b6b08f88541fcb350c4ebbd79c62f0a57a86064fbc68b7",
"Preimage": "9e59c05ebe3d7205e553c4d05a389e0968eeb3b0312b8fc0191419047bf356d7",
"RedeemScript": "a914f835f3b0daee9ff4b8b958191c7df7f21bdba6b087632103cdc3abb5b332dcd2d86feee5fddbd335a7a913b28469c1ceea1f7f325f406ade67034e480ab1752103f8af4c070c902360090d3248a59446e598305b60c7ef8576561b99c24b2fbe8368ac",
"Invoice": "",
"Address": "3KzQRBo78zVtoiCsSXjpfq8bMfgRtevrEJ",
"ExpectedAmount": 0,
"TimeoutBlockHeight": 673870,
"LockupTransactionId": "",
"RefundTransactionId": ""
}
WARN : 2021/03/08 14:17:28 [BTC] RPC request failed: json: cannot unmarshal number 200000000000 into Go struct field .pairs.limits.maximal of type int
boltz.log ( result of clicking 'start swap in' in the RTL web gui )
WARN : 2021/03/08 14:22:45 [BTC] RPC request failed: json: cannot unmarshal number 200000000000 into Go struct field .pairs.limits.maximal of type int
( result of $ boltzcli withdraw )
admin@raspberrypi:~/.boltz-lnd $ boltzcli withdraw 200000
rpc error: code = Unknown desc = json: cannot unmarshal number 200000000000 into Go struct field .pairs.limits.maximal of type int
I'm deployng lnd, boltz and RTL as docker containers, and cannot get RTL to connect to the bolt rest.
Seems that despite setting the correct host name, the tls certificate of the boltz instance would not generate to the host.
I can access boltz only if I set the container to a fixed IP, but I'd like to avoid that.
I'm using the container's names to access each other, and it works to access "lnd" container from both RTL and boltz.
However, I keep getting this error when trying to connect from RTL:
authentication handshake failed: tls: failed to verify certificate: x509: certificate is valid for 8a3de803d473, localhost, unix, unixpacket, bufconn, not boltz
In lnd, I can easily set as many "tlsextradomain" parameters in lnd.conf to generate new tls certificates.
Didn't find any documentation to generate the certificate in boltz, can it be done?
Hi, there is a reason why there isn't a release x86 windows build to download ?
I'm trying to do a reverse swap on Bitcoin testnet but can't claim the on-chain coins. Here's the log:
INFO : 2021/06/05 11:00:18 Paid invoice of Reverse Swap m1Ipaf with fee of 0.000 satoshis
INFO : 2021/06/05 11:00:20 Reverse Swap m1Ipaf status update: transaction.mempool
INFO : 2021/06/05 11:00:20 Constructing claim transaction for Reverse Swap m1Ipaf with output: 1fd891c868c6781fed76afab2bbe87eaeef864281ae68c5b5d5e1ea6cc8e8638:0
INFO : 2021/06/05 11:00:20 Using fee of 0 sat/vbyte for claim transaction
INFO : 2021/06/05 11:00:20 Constructed claim transaction: ab7394756904bb02d04f2902cb5f4f69586e2f110fb00d18c0303a531283e725
ERROR: 2021/06/05 11:00:20 Could not finalize claim transaction: could not broadcast transaction: min relay fee not met, 0 < 136
INFO : 2021/06/05 11:03:04 Reverse Swap m1Ipaf status update: transaction.confirmed
INFO : 2021/06/05 11:03:04 Constructing claim transaction for Reverse Swap m1Ipaf with output: 1fd891c868c6781fed76afab2bbe87eaeef864281ae68c5b5d5e1ea6cc8e8638:0
INFO : 2021/06/05 11:03:04 Using fee of 0 sat/vbyte for claim transaction
INFO : 2021/06/05 11:03:04 Constructed claim transaction: ab7394756904bb02d04f2902cb5f4f69586e2f110fb00d18c0303a531283e725
ERROR: 2021/06/05 11:03:04 Could not finalize claim transaction: could not broadcast transaction: min relay fee not met, 0 < 136
I don't see a way to specify fee in boltzd
and boltzcli
.
Also check before doing a swap
This enhancement should make swap monitoring more convenient, because for now to get tx an refund-tx you should walk through logs and calls history.
by adding some options in boltz.toml, perhaps.
After successful recovery.
INFO : 2020/06/25 20:21:47 [BTC] Broadcast refund transaction with Boltz API
ERROR: 2020/06/26 10:48:42 [BTC] Could not listen to events of Swap K2JlPh: could not connect to stream
INFO : 2020/06/26 10:48:42 [BTC] Stopping event listener of Swap K2JlPh
ERROR: 2020/06/26 10:48:42 [BTC] Could not listen to events of Swap K2JlPh: could not connect to stream
support building boltz-lnd as a .framework
and .aar
using gomobile.
makes it easier for mobile lnd users to use boltz, as it's a instance that the mobile client can communicate with grpc.
INFO : 2020/08/26 17:23:03 [BTC] Swap yY1w3y status update: channel.created
INFO : 2020/08/26 17:23:03 [BTC] Status of Swap yY1w3y is channel.created already
ERROR: 2020/08/26 17:24:03 [BTC] Could not listen to events of Swap yY1w3y: Get "https://boltz.exchange/api/streamswapstatus?id=yY1w3y": unexpected EOF
INFO : 2020/08/26 17:24:03 [BTC] Retrying to listen to events of Swap yY1w3y in 15 seconds
INFO : 2020/08/26 17:24:18 [BTC] Reconnected to event stream of SwapyY1w3y
INFO : 2020/08/26 17:24:18 [BTC] Swap yY1w3y status update: channel.created
INFO : 2020/08/26 17:24:18 [BTC] Status of Swap yY1w3y is channel.created already
ERROR: 2020/08/26 17:25:18 [BTC] Could not listen to events of Swap yY1w3y: Get "https://boltz.exchange/api/streamswapstatus?id=yY1w3y": unexpected EOF
INFO : 2020/08/26 17:25:18 [BTC] Retrying to listen to events of Swap yY1w3y in 15 seconds
Possibly caused due to miscommunication with OpenSSL libs. Setting the secure protocol explicitly might solve it.
help
Lost connection to LND block epoch stream: rpc error: code = Unimplemented desc = unknown service chainrpc.ChainNotifier
lnd version 0.16.2-beta
boltzd version v1.2.7-488c3ce
Instead of direct retry logic in a for loop, we could check if the last swap made through a specific channel was a failure. If this is the case we limit the maximum to e.g. 50% of the amount we failed with previously. This would have a similar effect to just retrying in a loop and reducing amount everytime and would not loose its "state" upon restarting the autoswapper
Related: #67
Two smaller issues:
status
shows boltzlnd as down
, even though it looks finetestnet > boltzcli btc getinfo
WARNING: Package "github.com/golang/protobuf/protoc-gen-go/generator" is deprecated.
A future release of golang/protobuf will delete this package,
which has long been excluded from the compatibility promise.
2020/08/26 08:41:28 WARNING: proto: file "rpc.proto" is already registered
A future release will panic on registration conflicts. See:
https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict
{
"symbol": "BTC",
"lnd_pubkey": "02de021dc84f5682f783130f45cc48e7d60c9e096e7c83dfe3ce4f4a8706ce2230",
"block_height": 1821048
}
testnet > boltzcli ltc getinfo
WARNING: Package "github.com/golang/protobuf/protoc-gen-go/generator" is deprecated.
A future release of golang/protobuf will delete this package,
which has long been excluded from the compatibility promise.
2020/08/26 08:41:32 WARNING: proto: file "rpc.proto" is already registered
A future release will panic on registration conflicts. See:
https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict
{
"symbol": "LTC",
"lnd_pubkey": "02de021dc84f5682f783130f45cc48e7d60c9e096e7c83dfe3ce4f4a8706ce2230",
"block_height": 1595114,
"pending_swaps": [
"piKsE0"
]
}
testnet > status
┌───────────┬────────────────────────────────────────────────┐
│ SERVICE │ STATUS │
├───────────┼────────────────────────────────────────────────┤
│ bitcoind │ Ready (connected to external) │
├───────────┼────────────────────────────────────────────────┤
│ litecoind │ Ready │
├───────────┼────────────────────────────────────────────────┤
│ geth │ Ready (connected to external) │
├───────────┼────────────────────────────────────────────────┤
│ lndbtc │ Ready │
├───────────┼────────────────────────────────────────────────┤
│ lndltc │ Ready │
├───────────┼────────────────────────────────────────────────┤
│ connext │ Ready │
├───────────┼────────────────────────────────────────────────┤
│ arby │ Ready │
├───────────┼────────────────────────────────────────────────┤
│ boltz │ btc down; ltc down │
├───────────┼────────────────────────────────────────────────┤
│ webui │ Ready │
├───────────┼────────────────────────────────────────────────┤
│ xud │ Waiting for channels │
└───────────┴────────────────────────────────────────────────┘
Currently hardcoded to 2-block target
There is an edge case of the stream not getting the latest event while not throwing an error. To also get the latest Swap status this way we should also check the Swap status periodically
I am running my LND node in a Kubernetes cluster.
Docker images for the Boltz LND client would be great!
Would a PR be accepted?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.