2424import org .slf4j .LoggerFactory ;
2525
2626public class FederationSupportImpl implements FederationSupport {
27-
2827 private static final Logger logger = LoggerFactory .getLogger (FederationSupportImpl .class );
2928
3029 private enum StorageFederationReference { NONE , NEW , OLD , GENESIS }
@@ -48,15 +47,11 @@ public FederationSupportImpl(
4847
4948 @ Override
5049 public Federation getActiveFederation () {
51- switch (getActiveFederationReference ()) {
52- case NEW :
53- return provider .getNewFederation (constants , activations );
54- case OLD :
55- return provider .getOldFederation (constants , activations );
56- case GENESIS :
57- default :
58- return getGenesisFederation ();
59- }
50+ return switch (getActiveFederationReference ()) {
51+ case NEW -> provider .getNewFederation (constants , activations );
52+ case OLD -> provider .getOldFederation (constants , activations );
53+ default -> getGenesisFederation ();
54+ };
6055 }
6156
6257 /**
@@ -420,6 +415,7 @@ public Optional<Instant> getProposedFederationCreationTime() {
420415 @ Override
421416 public void clearProposedFederation () {
422417 provider .setProposedFederation (null );
418+ logger .info ("[clearProposedFederation] Proposed federation cleared" );
423419 }
424420
425421 @ Override
@@ -538,6 +534,7 @@ private ABICallVoteResult executeVoteFederationChangeFunction(boolean dryRun, AB
538534 case ROLLBACK -> executionResult = rollbackFederation (dryRun );
539535 }
540536
537+ logger .info ("[executeVoteFederationChangeFunction] Execution result: {}" , executionResult );
541538 boolean executionWasSuccessful = executionResult == 1 ;
542539 return new ABICallVoteResult (executionWasSuccessful , executionResult );
543540 }
@@ -651,7 +648,7 @@ private Integer addFederatorPublicKeyMultikey(boolean dryRun, BtcECKey btcKey, E
651648 * after checking conditions are met to do so.
652649 * @param dryRun whether to just do a dry run
653650 * @param pendingFederationHash the pending federation's hash. This is checked to match the execution block's pending federation hash.
654- * @return PENDING_FEDERATION_NON_EXISTENT if there was no pending federation,
651+ * @return FEDERATION_NON_EXISTENT if there was no pending federation,
655652 * INSUFFICIENT_MEMBERS if the pending federation was incomplete,
656653 * PENDING_FEDERATION_MISMATCHED_HASH if the given hash doesn't match the current pending federation's hash.
657654 * SUCCESSFUL upon success.
@@ -715,44 +712,47 @@ public void commitProposedFederation() {
715712 Federation proposedFederation = provider .getProposedFederation (constants , activations )
716713 .orElseThrow (IllegalStateException ::new );
717714
718- logger .info ("[commitProposedFederation] Going to handover from old to new federation." );
719715 handoverToNewFederation (proposedFederation );
720- logger .info ("[commitProposedFederation] Going to clear proposed federation." );
721716 clearProposedFederation ();
717+ logger .info ("[commitProposedFederation] Proposed federation {} committed" , proposedFederation .getAddress ());
722718 }
723719
724720 private void handoverToNewFederation (Federation newFederation ) {
725- logger .info ("[handoverToNewFederation] Moving UTXOs from new to old federation reference." );
726721 moveUTXOsFromNewToOldFederation ();
727-
728- logger .info ("[handoverToNewFederation] Setting new and old federation references." );
729722 setOldAndNewFederations (getActiveFederation (), newFederation );
730723
731724 if (activations .isActive (RSKIP186 )) {
732- logger .info ("[handoverToNewFederation] Saving last retired federation script." );
733725 saveLastRetiredFederationScript ();
734- logger .info ("[handoverToNewFederation] Setting next federation creation block height." );
735- provider .setNextFederationCreationBlockHeight (newFederation .getCreationBlockNumber ());
726+ setNextFederationCreationBlockHeight (newFederation );
736727 }
728+ logger .trace ("[handoverToNewFederation] Handover to new federation completed successfully." );
737729 }
738730
739731 private void setOldAndNewFederations (Federation oldFederation , Federation newFederation ) {
740732 provider .setOldFederation (oldFederation );
741733 provider .setNewFederation (newFederation );
734+ logger .info (
735+ "[setOldAndNewFederations] Old federation set to {}, new federation set to {}." ,
736+ oldFederation ,
737+ newFederation
738+ );
742739 }
743740
744741 private void moveUTXOsFromNewToOldFederation () {
745742 // since the current active fed reference will change from being 'new' to 'old',
746743 // we have to change the UTXOs reference to match it
747744 List <UTXO > activeFederationUTXOs = List .copyOf (provider .getNewFederationBtcUTXOs (constants .getBtcParams (), activations ));
745+ logger .debug ("[moveUTXOsFromNewToOldFederation] Moving {} UTXOs from new to old federation." , activeFederationUTXOs .size ());
748746
749747 // Clear new and old federation's UTXOs
750748 provider .getNewFederationBtcUTXOs (constants .getBtcParams (), activations ).clear ();
751749 List <UTXO > oldFederationUTXOs = provider .getOldFederationBtcUTXOs ();
752750 oldFederationUTXOs .clear ();
751+ logger .debug ("[moveUTXOsFromNewToOldFederation] Cleared new and old federation's UTXOs" );
753752
754753 // Move UTXOs reference to the old federation
755754 oldFederationUTXOs .addAll (activeFederationUTXOs );
755+ logger .info ("[moveUTXOsFromNewToOldFederation] Moved {} UTXOs from new to old federation." , activeFederationUTXOs .size ());
756756 }
757757
758758 /**
@@ -764,9 +764,9 @@ private FederationChangeResponseCode commitPendingFederation(PendingFederation c
764764 // set proposed federation
765765 Federation proposedFederation = buildFederationFromPendingFederation (currentPendingFederation );
766766 provider .setProposedFederation (proposedFederation );
767+ logger .info ("[commitPendingFederation] Proposed federation set to {}" , proposedFederation .getAddress ());
767768
768769 clearPendingFederationVoting ();
769-
770770 logCommitmentWithVotedFederation (eventLogger , getActiveFederation (), proposedFederation );
771771
772772 return FederationChangeResponseCode .SUCCESSFUL ;
@@ -804,12 +804,28 @@ private void clearPendingFederationVoting() {
804804 // Clear pending federation and votes on election
805805 provider .setPendingFederation (null );
806806 provider .getFederationElection (constants .getFederationChangeAuthorizer ()).clear ();
807+ logger .trace ("[clearPendingFederationVoting] Pending federation and votes on election cleared" );
807808 }
808809
809810 private void saveLastRetiredFederationScript () {
810811 Federation activeFederation = getActiveFederation ();
811812 Script activeFederationMembersP2SHScript = getFederationMembersP2SHScript (activations , activeFederation );
812813 provider .setLastRetiredFederationP2SHScript (activeFederationMembersP2SHScript );
814+
815+ String lastRetiredFederationP2SHScriptInHex = ByteUtil .toHexString (activeFederationMembersP2SHScript .getProgram ());
816+ logger .trace (
817+ "[saveLastRetiredFederationScript] Last retired federation script set to {}." ,
818+ lastRetiredFederationP2SHScriptInHex
819+ );
820+ }
821+
822+ private void setNextFederationCreationBlockHeight (Federation nextFederation ) {
823+ long nextFederationCreationBlockNumber = nextFederation .getCreationBlockNumber ();
824+ provider .setNextFederationCreationBlockHeight (nextFederationCreationBlockNumber );
825+ logger .info (
826+ "[setNextFederationCreationBlockHeight] Next federation creation block height set to {}." ,
827+ nextFederationCreationBlockNumber
828+ );
813829 }
814830
815831 private void logCommitmentWithVotedFederation (BridgeEventLogger eventLogger , Federation federationToBeRetired , Federation votedFederation ) {
0 commit comments