2020-01-03 13:01:31 +00:00
|
|
|
package loopd
|
2019-03-06 20:13:50 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
2019-04-04 10:20:45 +00:00
|
|
|
"github.com/btcsuite/btcd/chaincfg"
|
2020-06-17 20:25:57 +00:00
|
|
|
"github.com/lightninglabs/lndclient"
|
2019-04-04 10:20:45 +00:00
|
|
|
"github.com/lightninglabs/loop"
|
2019-05-15 12:01:27 +00:00
|
|
|
"github.com/lightninglabs/loop/loopdb"
|
2019-03-07 04:32:24 +00:00
|
|
|
"github.com/lightninglabs/loop/swap"
|
2019-03-06 20:13:50 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// view prints all swaps currently in the database.
|
2021-11-12 09:14:47 +00:00
|
|
|
func view(config *Config, lisCfg *ListenerCfg) error {
|
2020-06-17 20:25:57 +00:00
|
|
|
network := lndclient.Network(config.Network)
|
2019-03-06 20:13:50 +00:00
|
|
|
|
2020-06-17 20:25:57 +00:00
|
|
|
lnd, err := lisCfg.getLnd(network, config.Lnd)
|
2019-03-06 20:13:50 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
defer lnd.Close()
|
|
|
|
|
2020-01-10 11:13:39 +00:00
|
|
|
swapClient, cleanup, err := getClient(config, &lnd.LndServices)
|
2019-03-06 20:13:50 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
defer cleanup()
|
|
|
|
|
2020-06-17 20:25:57 +00:00
|
|
|
chainParams, err := network.ChainParams()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2019-04-04 10:20:45 +00:00
|
|
|
if err := viewOut(swapClient, chainParams); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := viewIn(swapClient, chainParams); err != nil {
|
2019-03-06 20:13:50 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2019-04-04 10:20:45 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func viewOut(swapClient *loop.Client, chainParams *chaincfg.Params) error {
|
2019-04-11 07:06:59 +00:00
|
|
|
swaps, err := swapClient.Store.FetchLoopOutSwaps()
|
2019-04-04 10:20:45 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
2019-03-07 10:37:28 +00:00
|
|
|
}
|
|
|
|
|
2019-03-06 20:13:50 +00:00
|
|
|
for _, s := range swaps {
|
2019-03-07 04:32:24 +00:00
|
|
|
htlc, err := swap.NewHtlc(
|
2020-07-23 15:30:53 +00:00
|
|
|
loop.GetHtlcScriptVersion(s.Contract.ProtocolVersion),
|
2019-03-06 20:13:50 +00:00
|
|
|
s.Contract.CltvExpiry,
|
|
|
|
s.Contract.SenderKey,
|
|
|
|
s.Contract.ReceiverKey,
|
2019-04-04 10:20:45 +00:00
|
|
|
s.Hash, swap.HtlcP2WSH, chainParams,
|
2019-03-06 20:13:50 +00:00
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2019-04-04 10:20:45 +00:00
|
|
|
fmt.Printf("OUT %v\n", s.Hash)
|
2019-03-06 20:13:50 +00:00
|
|
|
fmt.Printf(" Created: %v (height %v)\n",
|
|
|
|
s.Contract.InitiationTime, s.Contract.InitiationHeight,
|
|
|
|
)
|
|
|
|
fmt.Printf(" Preimage: %v\n", s.Contract.Preimage)
|
2019-04-04 10:20:45 +00:00
|
|
|
fmt.Printf(" Htlc address: %v\n", htlc.Address)
|
2019-03-06 20:13:50 +00:00
|
|
|
|
2020-05-19 07:54:27 +00:00
|
|
|
fmt.Printf(" Uncharge channels: %v\n",
|
|
|
|
s.Contract.OutgoingChanSet)
|
2019-03-06 20:13:50 +00:00
|
|
|
fmt.Printf(" Dest: %v\n", s.Contract.DestAddr)
|
|
|
|
fmt.Printf(" Amt: %v, Expiry: %v\n",
|
|
|
|
s.Contract.AmountRequested, s.Contract.CltvExpiry,
|
|
|
|
)
|
|
|
|
for i, e := range s.Events {
|
2019-05-15 12:01:27 +00:00
|
|
|
fmt.Printf(" Update %v, Time %v, State: %v",
|
2019-03-06 20:13:50 +00:00
|
|
|
i, e.Time, e.State,
|
|
|
|
)
|
2019-05-15 12:01:27 +00:00
|
|
|
if e.State.Type() != loopdb.StateTypePending {
|
|
|
|
fmt.Printf(", Cost: server=%v, onchain=%v, "+
|
|
|
|
"offchain=%v",
|
|
|
|
e.Cost.Server,
|
|
|
|
e.Cost.Onchain,
|
|
|
|
e.Cost.Offchain,
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Println()
|
2019-03-06 20:13:50 +00:00
|
|
|
}
|
|
|
|
fmt.Println()
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
2019-04-04 10:20:45 +00:00
|
|
|
|
|
|
|
func viewIn(swapClient *loop.Client, chainParams *chaincfg.Params) error {
|
2019-04-11 07:06:59 +00:00
|
|
|
swaps, err := swapClient.Store.FetchLoopInSwaps()
|
2019-04-04 10:20:45 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, s := range swaps {
|
|
|
|
htlc, err := swap.NewHtlc(
|
2020-07-23 15:30:53 +00:00
|
|
|
loop.GetHtlcScriptVersion(s.Contract.ProtocolVersion),
|
2019-04-04 10:20:45 +00:00
|
|
|
s.Contract.CltvExpiry,
|
|
|
|
s.Contract.SenderKey,
|
|
|
|
s.Contract.ReceiverKey,
|
|
|
|
s.Hash, swap.HtlcNP2WSH, chainParams,
|
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Printf("IN %v\n", s.Hash)
|
|
|
|
fmt.Printf(" Created: %v (height %v)\n",
|
|
|
|
s.Contract.InitiationTime, s.Contract.InitiationHeight,
|
|
|
|
)
|
|
|
|
fmt.Printf(" Preimage: %v\n", s.Contract.Preimage)
|
|
|
|
fmt.Printf(" Htlc address: %v\n", htlc.Address)
|
|
|
|
fmt.Printf(" Amt: %v, Expiry: %v\n",
|
|
|
|
s.Contract.AmountRequested, s.Contract.CltvExpiry,
|
|
|
|
)
|
|
|
|
for i, e := range s.Events {
|
|
|
|
fmt.Printf(" Update %v, Time %v, State: %v\n",
|
|
|
|
i, e.Time, e.State,
|
|
|
|
)
|
|
|
|
}
|
|
|
|
fmt.Println()
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|