@@ -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