Coverage Summary for Class: ErpFederation (co.rsk.peg)

Class Class, % Method, % Line, %
ErpFederation 0% (0/1) 0% (0/9) 0% (0/37)


1 package co.rsk.peg; 2  3 import co.rsk.bitcoinj.core.Address; 4 import co.rsk.bitcoinj.core.BtcECKey; 5 import co.rsk.bitcoinj.core.NetworkParameters; 6 import co.rsk.bitcoinj.script.ErpFederationRedeemScriptParser; 7 import co.rsk.bitcoinj.script.Script; 8 import co.rsk.bitcoinj.script.ScriptBuilder; 9 import co.rsk.peg.utils.EcKeyUtils; 10 import java.time.Instant; 11 import java.util.Collections; 12 import java.util.List; 13 import java.util.Objects; 14  15 public class ErpFederation extends Federation { 16  private final List<BtcECKey> erpPubKeys; 17  private final long activationDelay; 18  19  public ErpFederation( 20  List<FederationMember> members, 21  Instant creationTime, 22  long creationBlockNumber, 23  NetworkParameters btcParams, 24  List<BtcECKey> erpPubKeys, 25  long activationDelay 26  ) { 27  super(members, creationTime, creationBlockNumber, btcParams); 28  this.erpPubKeys = EcKeyUtils.getCompressedPubKeysList(erpPubKeys); 29  this.activationDelay = activationDelay; 30  } 31  32  public List<BtcECKey> getErpPubKeys() { 33  return Collections.unmodifiableList(erpPubKeys); 34  } 35  36  public long getActivationDelay() { 37  return activationDelay; 38  } 39  40  @Override 41  public Script getRedeemScript() { 42  if (redeemScript == null) { 43  redeemScript = ErpFederationRedeemScriptParser.createErpRedeemScript( 44  ScriptBuilder.createRedeemScript(getNumberOfSignaturesRequired(), getBtcPublicKeys()), 45  ScriptBuilder.createRedeemScript(erpPubKeys.size() / 2 + 1, erpPubKeys), 46  activationDelay 47  ); 48  } 49  50  return redeemScript; 51  } 52  53  @Override 54  public Script getStandardRedeemScript() { 55  return ErpFederationRedeemScriptParser.extractStandardRedeemScript( 56  getRedeemScript().getChunks() 57  ); 58  } 59  60  @Override 61  public Script getP2SHScript() { 62  if (p2shScript == null) { 63  p2shScript = ScriptBuilder.createP2SHOutputScript(getRedeemScript()); 64  } 65  66  return p2shScript; 67  } 68  69  @Override 70  public Address getAddress() { 71  if (address == null) { 72  address = Address.fromP2SHScript(btcParams, getP2SHScript()); 73  } 74  75  return address; 76  } 77  78  @Override 79  public boolean equals(Object other) { 80  if (this == other) { 81  return true; 82  } 83  84  if (other == null || this.getClass() != other.getClass()) { 85  return false; 86  } 87  88  ErpFederation otherErpFederation = (ErpFederation) other; 89  90  return this.getNumberOfSignaturesRequired() == otherErpFederation.getNumberOfSignaturesRequired() && 91  this.getSize() == otherErpFederation.getSize() && 92  this.getCreationTime().equals(otherErpFederation.getCreationTime()) && 93  this.creationBlockNumber == otherErpFederation.creationBlockNumber && 94  this.btcParams.equals(otherErpFederation.btcParams) && 95  this.members.equals(otherErpFederation.members) && 96  this.erpPubKeys.equals(otherErpFederation.erpPubKeys) && 97  this.activationDelay == otherErpFederation.activationDelay; 98  } 99  100  @Override 101  public int hashCode() { 102  // Can use java.util.Objects.hash since all of Instant, int and List<BtcECKey> have 103  // well-defined hashCode()s 104  return Objects.hash( 105  getCreationTime(), 106  this.creationBlockNumber, 107  getNumberOfSignaturesRequired(), 108  getBtcPublicKeys(), 109  getErpPubKeys(), 110  getActivationDelay() 111  ); 112  } 113 }