Skip to content

Commit dd13f33

Browse files
committed
staticaddr/loopin: allow for more fee versions
This commit changes the loopin sweepless sweep handling, by changing the hardcoded fee messages to a map of fee versions.
1 parent 44092a7 commit dd13f33

File tree

3 files changed

+167
-346
lines changed

3 files changed

+167
-346
lines changed

staticaddr/loopin/actions.go

Lines changed: 41 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -804,152 +804,55 @@ func (f *FSM) FetchSignPushSweeplessSweepTxAction(ctx context.Context,
804804
f.Warnf("unable to decode sweep address: %v", err)
805805
}
806806

807-
// Standard fee.
808-
feeRate := chainfee.SatPerKWeight(fetchResp.StandardFeeInfo.FeeRate)
809-
serverNonces, err := toNonces(fetchResp.StandardFeeInfo.Nonces)
810-
if err != nil {
811-
err = fmt.Errorf("unable to convert server nonces: %w", err)
812-
813-
return f.HandleError(err)
814-
}
815-
816-
// High fee.
817-
highFeeRate := chainfee.SatPerKWeight(fetchResp.HighFeeInfo.FeeRate)
818-
serverHighFeeNonces, err := toNonces(fetchResp.HighFeeInfo.Nonces)
819-
if err != nil {
820-
err = fmt.Errorf("unable to convert high fee server "+
821-
"nonces: %w", err)
822-
823-
return f.HandleError(err)
824-
}
825-
826-
// Extremely high fee.
827-
extremeFeeRate := chainfee.SatPerKWeight(
828-
fetchResp.ExtremeFeeInfo.FeeRate,
829-
)
830-
serverExtremeNonces, err := toNonces(
831-
fetchResp.ExtremeFeeInfo.Nonces,
832-
)
833-
if err != nil {
834-
err = fmt.Errorf("unable to convert extremely high fee "+
835-
"server nonces: %w", err)
836-
837-
return f.HandleError(err)
838-
}
839-
840-
// Standard sessions.
841-
sessions, nonces, err := f.loopIn.createMusig2Sessions(
842-
ctx, f.cfg.Signer,
843-
)
844-
if err != nil {
845-
return f.HandleError(err)
846-
}
847-
clientNonces, err := toNonces(nonces)
848-
if err != nil {
849-
return f.HandleError(err)
850-
}
851-
852-
// High fee sessions.
853-
highFeeSessions, highFeeClientNonces, err :=
854-
f.loopIn.createMusig2Sessions(ctx, f.cfg.Signer)
855-
856-
if err != nil {
857-
return f.HandleError(err)
858-
}
859-
highClientNonces, err := toNonces(highFeeClientNonces)
860-
if err != nil {
861-
return f.HandleError(err)
862-
}
863-
864-
// Extremely high sessions.
865-
extremeSessions, extremeClientNonces, err :=
866-
f.loopIn.createMusig2Sessions(ctx, f.cfg.Signer)
867-
868-
if err != nil {
869-
return f.HandleError(err)
870-
}
871-
extremelyHighClientNonces, err := toNonces(extremeClientNonces)
872-
if err != nil {
873-
return f.HandleError(err)
874-
}
875-
876-
// Create standard fee.
877-
sweepTx, err := f.loopIn.createSweeplessSweepTx(address, feeRate)
878-
if err != nil {
879-
err = fmt.Errorf("unable to create sweepless sweep tx: %w", err)
880-
return f.HandleError(err)
881-
}
882-
883-
// Create high fee.
884-
highFeeSweepTx, err := f.loopIn.createSweeplessSweepTx(
885-
address, highFeeRate,
886-
)
887-
if err != nil {
888-
err = fmt.Errorf("unable to create high fee sweepless sweep "+
889-
"tx: %w", err)
807+
clientResponse := make(map[uint64]*looprpc.ClientSweeplessSigningInfo)
890808

891-
return f.HandleError(err)
892-
}
893-
894-
// Create extremely high fee.
895-
extremelyHighFeeSweepTx, err := f.loopIn.createSweeplessSweepTx(
896-
address, extremeFeeRate,
897-
)
898-
if err != nil {
899-
err = fmt.Errorf("unable to create extremely high fee "+
900-
"sweepless sweep tx: %w", err)
901-
902-
return f.HandleError(err)
903-
}
904-
905-
// Sign standard.
906-
sweeplessClientSigs, err := f.loopIn.signMusig2Tx(
907-
ctx, sweepTx, f.cfg.Signer, sessions, serverNonces,
908-
)
909-
if err != nil {
910-
err = fmt.Errorf("unable to sign sweepless sweep tx: %w", err)
911-
return f.HandleError(err)
912-
}
913-
914-
// Sign high fee.
915-
highFeeSigs, err := f.loopIn.signMusig2Tx(
916-
ctx, highFeeSweepTx, f.cfg.Signer, highFeeSessions,
917-
serverHighFeeNonces,
918-
)
919-
if err != nil {
920-
err = fmt.Errorf("unable to sign high fee sweepless sweep "+
921-
"tx: %w", err)
809+
for feerate, nonces := range fetchResp.Nonces {
810+
satPerKW := chainfee.SatPerKWeight(feerate)
811+
serverNonces, err := toNonces(nonces.Nonces)
812+
if err != nil {
813+
err = fmt.Errorf("unable to convert server nonces: %w",
814+
err)
815+
return f.HandleError(err)
816+
}
817+
sessions, nonces, err := f.loopIn.createMusig2Sessions(
818+
ctx, f.cfg.Signer,
819+
)
820+
if err != nil {
821+
return f.HandleError(err)
822+
}
823+
clientNonces, err := toNonces(nonces)
824+
if err != nil {
825+
return f.HandleError(err)
826+
}
922827

923-
return f.HandleError(err)
924-
}
828+
sweepTx, err := f.loopIn.createSweeplessSweepTx(
829+
address, satPerKW,
830+
)
831+
if err != nil {
832+
err = fmt.Errorf("unable to create sweepless sweep "+
833+
"tx: %w", err)
834+
return f.HandleError(err)
835+
}
925836

926-
// Sign extremely high fee.
927-
extremelyHighSigs, err := f.loopIn.signMusig2Tx(
928-
ctx, extremelyHighFeeSweepTx, f.cfg.Signer, extremeSessions,
929-
serverExtremeNonces,
930-
)
931-
if err != nil {
932-
err = fmt.Errorf("unable to sign extremely high fee "+
933-
"sweepless sweep tx: %w", err)
837+
sweeplessClientSigs, err := f.loopIn.signMusig2Tx(
838+
ctx, sweepTx, f.cfg.Signer, sessions, serverNonces,
839+
)
840+
if err != nil {
841+
err = fmt.Errorf("unable to sign sweepless sweep tx: "+
842+
"%w", err)
843+
return f.HandleError(err)
844+
}
934845

935-
return f.HandleError(err)
846+
clientResponse[feerate] = &looprpc.ClientSweeplessSigningInfo{
847+
Nonces: fromNonces(clientNonces),
848+
Sigs: sweeplessClientSigs,
849+
}
936850
}
937851

938852
// Push sweepless sigs to the server.
939853
req := &looprpc.PushStaticAddressSweeplessSigsRequest{
940-
SwapHash: f.loopIn.SwapHash[:],
941-
StandardSigningInfo: &looprpc.ClientSweeplessSigningInfo{
942-
Nonces: fromNonces(clientNonces),
943-
Sigs: sweeplessClientSigs,
944-
},
945-
HighFeeSigningInfo: &looprpc.ClientSweeplessSigningInfo{
946-
Nonces: fromNonces(highClientNonces),
947-
Sigs: highFeeSigs,
948-
},
949-
ExtremeFeeSigningInfo: &looprpc.ClientSweeplessSigningInfo{
950-
Nonces: fromNonces(extremelyHighClientNonces),
951-
Sigs: extremelyHighSigs,
952-
},
854+
SwapHash: f.loopIn.SwapHash[:],
855+
SigningInfos: clientResponse,
953856
}
954857
_, err = f.cfg.Server.PushStaticAddressSweeplessSigs(ctx, req)
955858
if err != nil {

0 commit comments

Comments
 (0)