Skip to content

Commit 7193552

Browse files
authored
Merge pull request #1017 from hieblmi/show-deposits
staticaddr: more fields in StaticAddressLoopInResponse
2 parents cd225d3 + de2964e commit 7193552

File tree

4 files changed

+511
-380
lines changed

4 files changed

+511
-380
lines changed

loopd/swapclient_server.go

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,20 +1788,9 @@ func (s *swapClientServer) ListStaticAddressDeposits(ctx context.Context,
17881788
}
17891789

17901790
// Calculate the blocks until expiry for each deposit.
1791-
lndInfo, err := s.lnd.Client.GetInfo(ctx)
1791+
err = s.populateBlocksUntilExpiry(ctx, filteredDeposits)
17921792
if err != nil {
1793-
return nil, err
1794-
}
1795-
1796-
bestBlockHeight := int64(lndInfo.BlockHeight)
1797-
params, err := s.staticAddressManager.GetStaticAddressParameters(ctx)
1798-
if err != nil {
1799-
return nil, err
1800-
}
1801-
for i := 0; i < len(filteredDeposits); i++ {
1802-
filteredDeposits[i].BlocksUntilExpiry =
1803-
filteredDeposits[i].ConfirmationHeight +
1804-
int64(params.Expiry) - bestBlockHeight
1793+
infof("Failed to populate blocks until expiry: %v", err)
18051794
}
18061795

18071796
return &looprpc.ListStaticAddressDepositsResponse{
@@ -2078,21 +2067,73 @@ func (s *swapClientServer) StaticAddressLoopIn(ctx context.Context,
20782067
return nil, err
20792068
}
20802069

2070+
// Build a list of used deposits for the response.
2071+
usedDeposits := filter(
2072+
loopIn.Deposits, func(d *deposit.Deposit) bool { return true },
2073+
)
2074+
2075+
err = s.populateBlocksUntilExpiry(ctx, usedDeposits)
2076+
if err != nil {
2077+
infof("Failed to populate blocks until expiry: %v", err)
2078+
}
2079+
2080+
// Determine the actual swap amount and change based on the selected
2081+
// amount and the total value of the selected deposits.
2082+
total := loopIn.TotalDepositAmount()
2083+
swapAmt := total
2084+
var changeAmt btcutil.Amount
2085+
if loopIn.SelectedAmount > 0 {
2086+
amt, err := loopin.DeduceSwapAmount(
2087+
total, loopIn.SelectedAmount,
2088+
)
2089+
if err == nil {
2090+
swapAmt = amt
2091+
changeAmt = total - amt
2092+
}
2093+
}
2094+
20812095
return &looprpc.StaticAddressLoopInResponse{
20822096
SwapHash: loopIn.SwapHash[:],
20832097
State: string(loopIn.GetState()),
2084-
Amount: uint64(loopIn.TotalDepositAmount()),
2098+
Amount: uint64(total),
2099+
SwapAmount: uint64(swapAmt),
2100+
Change: int64(changeAmt),
2101+
QuotedSwapFeeSatoshis: int64(loopIn.QuotedSwapFee),
2102+
Fast: loopIn.Fast,
20852103
HtlcCltv: loopIn.HtlcCltvExpiry,
20862104
MaxSwapFeeSatoshis: int64(loopIn.MaxSwapFee),
20872105
InitiationHeight: loopIn.InitiationHeight,
20882106
ProtocolVersion: loopIn.ProtocolVersion.String(),
20892107
Initiator: loopIn.Initiator,
20902108
Label: loopIn.Label,
20912109
PaymentTimeoutSeconds: loopIn.PaymentTimeoutSeconds,
2092-
QuotedSwapFeeSatoshis: int64(loopIn.QuotedSwapFee),
2110+
UsedDeposits: usedDeposits,
20932111
}, nil
20942112
}
20952113

2114+
// Calculate the blocks until expiry for each deposit and return the modified
2115+
// StaticAddressLoopInResponse.
2116+
func (s *swapClientServer) populateBlocksUntilExpiry(ctx context.Context,
2117+
deposits []*looprpc.Deposit) error {
2118+
2119+
lndInfo, err := s.lnd.Client.GetInfo(ctx)
2120+
if err != nil {
2121+
return err
2122+
}
2123+
2124+
bestBlockHeight := int64(lndInfo.BlockHeight)
2125+
params, err := s.staticAddressManager.GetStaticAddressParameters(ctx)
2126+
if err != nil {
2127+
return err
2128+
}
2129+
for i := 0; i < len(deposits); i++ {
2130+
deposits[i].BlocksUntilExpiry =
2131+
deposits[i].ConfirmationHeight +
2132+
int64(params.Expiry) - bestBlockHeight
2133+
}
2134+
return nil
2135+
}
2136+
20962137
type filterFunc func(deposits *deposit.Deposit) bool
20972138

20982139
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {

0 commit comments

Comments
 (0)