Coverage Summary for Class: BridgeMainNetConstants (co.rsk.config)

Class Class, % Method, % Line, %
BridgeMainNetConstants 0% (0/1) 0% (0/3) 0% (0/61)


1 package co.rsk.config; 2  3 import co.rsk.bitcoinj.core.BtcECKey; 4 import co.rsk.bitcoinj.core.Coin; 5 import co.rsk.bitcoinj.core.NetworkParameters; 6 import co.rsk.peg.AddressBasedAuthorizer; 7 import co.rsk.peg.Federation; 8 import co.rsk.peg.FederationMember; 9 import com.google.common.collect.Lists; 10 import java.util.ArrayList; 11 import org.bouncycastle.util.encoders.Hex; 12 import org.ethereum.crypto.ECKey; 13  14 import java.time.Instant; 15 import java.util.Arrays; 16 import java.util.List; 17 import java.util.stream.Collectors; 18  19 public class BridgeMainNetConstants extends BridgeConstants { 20  private static BridgeMainNetConstants instance = new BridgeMainNetConstants(); 21  22  BridgeMainNetConstants() { 23  btcParamsString = NetworkParameters.ID_MAINNET; 24  25  BtcECKey federator0PublicKey = BtcECKey.fromPublicOnly(Hex.decode("03b53899c390573471ba30e5054f78376c5f797fda26dde7a760789f02908cbad2")); 26  BtcECKey federator1PublicKey = BtcECKey.fromPublicOnly(Hex.decode("027319afb15481dbeb3c426bcc37f9a30e7f51ceff586936d85548d9395bcc2344")); 27  BtcECKey federator2PublicKey = BtcECKey.fromPublicOnly(Hex.decode("0355a2e9bf100c00fc0a214afd1bf272647c7824eb9cb055480962f0c382596a70")); 28  BtcECKey federator3PublicKey = BtcECKey.fromPublicOnly(Hex.decode("02566d5ded7c7db1aa7ee4ef6f76989fb42527fcfdcddcd447d6793b7d869e46f7")); 29  BtcECKey federator4PublicKey = BtcECKey.fromPublicOnly(Hex.decode("0294c817150f78607566e961b3c71df53a22022a80acbb982f83c0c8baac040adc")); 30  BtcECKey federator5PublicKey = BtcECKey.fromPublicOnly(Hex.decode("0372cd46831f3b6afd4c044d160b7667e8ebf659d6cb51a825a3104df6ee0638c6")); 31  BtcECKey federator6PublicKey = BtcECKey.fromPublicOnly(Hex.decode("0340df69f28d69eef60845da7d81ff60a9060d4da35c767f017b0dd4e20448fb44")); 32  BtcECKey federator7PublicKey = BtcECKey.fromPublicOnly(Hex.decode("02ac1901b6fba2c1dbd47d894d2bd76c8ba1d296d65f6ab47f1c6b22afb53e73eb")); 33  BtcECKey federator8PublicKey = BtcECKey.fromPublicOnly(Hex.decode("031aabbeb9b27258f98c2bf21f36677ae7bae09eb2d8c958ef41a20a6e88626d26")); 34  BtcECKey federator9PublicKey = BtcECKey.fromPublicOnly(Hex.decode("0245ef34f5ee218005c9c21227133e8568a4f3f11aeab919c66ff7b816ae1ffeea")); 35  BtcECKey federator10PublicKey = BtcECKey.fromPublicOnly(Hex.decode("02550cc87fa9061162b1dd395a16662529c9d8094c0feca17905a3244713d65fe8")); 36  BtcECKey federator11PublicKey = BtcECKey.fromPublicOnly(Hex.decode("02481f02b7140acbf3fcdd9f72cf9a7d9484d8125e6df7c9451cfa55ba3b077265")); 37  BtcECKey federator12PublicKey = BtcECKey.fromPublicOnly(Hex.decode("03f909ae15558c70cc751aff9b1f495199c325b13a9e5b934fd6299cd30ec50be8")); 38  BtcECKey federator13PublicKey = BtcECKey.fromPublicOnly(Hex.decode("02c6018fcbd3e89f3cf9c7f48b3232ea3638eb8bf217e59ee290f5f0cfb2fb9259")); 39  BtcECKey federator14PublicKey = BtcECKey.fromPublicOnly(Hex.decode("03b65694ccccda83cbb1e56b31308acd08e993114c33f66a456b627c2c1c68bed6")); 40  41  List<BtcECKey> genesisFederationPublicKeys = Lists.newArrayList( 42  federator0PublicKey, federator1PublicKey, federator2PublicKey, 43  federator3PublicKey, federator4PublicKey, federator5PublicKey, 44  federator6PublicKey, federator7PublicKey, federator8PublicKey, 45  federator9PublicKey, federator10PublicKey, federator11PublicKey, 46  federator12PublicKey, federator13PublicKey, federator14PublicKey 47  ); 48  49  // IMPORTANT: BTC, RSK and MST keys are the same. 50  // Change upon implementation of the <INSERT FORK NAME HERE> fork. 51  List<FederationMember> federationMembers = FederationMember.getFederationMembersFromKeys(genesisFederationPublicKeys); 52  53  // Currently set to: 54  // Wednesday, January 3, 2018 12:00:00 AM GMT-03:00 55  Instant genesisFederationAddressCreatedAt = Instant.ofEpochMilli(1514948400l); 56  57  genesisFederation = new Federation( 58  federationMembers, 59  genesisFederationAddressCreatedAt, 60  1L, 61  getBtcParams() 62  ); 63  64  btc2RskMinimumAcceptableConfirmations = 100; 65  btc2RskMinimumAcceptableConfirmationsOnRsk = 1000; 66  rsk2BtcMinimumAcceptableConfirmations = 4000; 67  68  updateBridgeExecutionPeriod = 3 * 60 * 1000; // 3 minutes 69  70  maxBtcHeadersPerRskBlock = 500; 71  72  legacyMinimumPeginTxValueInSatoshis = Coin.valueOf(1_000_000); 73  legacyMinimumPegoutTxValueInSatoshis = Coin.valueOf(800_000); 74  minimumPeginTxValueInSatoshis = Coin.valueOf(500_000); 75  minimumPegoutTxValueInSatoshis = Coin.valueOf(400_000); 76  77  78  // Keys generated with GenNodeKey using generators 'auth-a' through 'auth-e' 79  List<ECKey> federationChangeAuthorizedKeys = Arrays.stream(new String[]{ 80  "04e593d4cde25137b13f19462bc4c02e97ba2ed5a3860813497abf9b4eeb9259e37e0384d12cfd2d9a7a0ba606b31ee34317a9d7f4a8591c6bcf5dfd5563248b2f", 81  "045e7f2563e73d44d149c19cffca36e1898597dc759d76166b8104103c0d3f351a8a48e3a224544e9a649ad8ebcfdbd6c39744ddb85925f19c7e3fd48f07fc1c06", 82  "0441945e4e272936106f6200b36162f3510e8083535c15e175ac82deaf828da955b85fd72b7534f2a34cedfb45fa63b728cc696a2bd3c5d39ec799ec2618e9aa9f" 83  }).map(hex -> ECKey.fromPublicOnly(Hex.decode(hex))).collect(Collectors.toList()); 84  85  federationChangeAuthorizer = new AddressBasedAuthorizer( 86  federationChangeAuthorizedKeys, 87  AddressBasedAuthorizer.MinimumRequiredCalculation.MAJORITY 88  ); 89  90  // Key generated with GenNodeKey using generator 'auth-lock-whitelist' 91  List<ECKey> lockWhitelistAuthorizedKeys = Arrays.stream(new String[]{ 92  "041a2449e9d63409c5a8ea3a21c4109b1a6634ee88fd57176d45ea46a59713d5e0b688313cf252128a3e49a0b2effb4b413e5a2525a6fa5894d059f815c9d9efa6" 93  }).map(hex -> ECKey.fromPublicOnly(Hex.decode(hex))).collect(Collectors.toList()); 94  95  lockWhitelistChangeAuthorizer = new AddressBasedAuthorizer( 96  lockWhitelistAuthorizedKeys, 97  AddressBasedAuthorizer.MinimumRequiredCalculation.ONE 98  ); 99  100  federationActivationAge = 18500L; 101  102  fundsMigrationAgeSinceActivationBegin = 0L; 103  fundsMigrationAgeSinceActivationEnd = 10585L; 104  105  List<ECKey> feePerKbAuthorizedKeys = Arrays.stream(new String[]{ 106  "0448f51638348b034995b1fd934fe14c92afde783e69f120a46ee16eb6bdc2e4f6b5e37772094c68c0dea2b1be3d96ea9651a9eebda7304914c8047f4e3e251378", 107  "0484c66f75548baf93e322574adac4e4579b6a53f8d11fab640e14c90118e6983ef24b0de349a3e88f72e81e771ae1c897cef446fd7f4da71778c532aee3b6c41b", 108  "04bb6435dc1ea12da843ebe213893d136c1624acd681fff82551498ae00bf28e9323164b00daf925fa75177463b8254a2aae8a1713e4d851a84ea369c193e9ce51" 109  }).map(hex -> ECKey.fromPublicOnly(Hex.decode(hex))).collect(Collectors.toList()); 110  111  feePerKbChangeAuthorizer = new AddressBasedAuthorizer( 112  feePerKbAuthorizedKeys, 113  AddressBasedAuthorizer.MinimumRequiredCalculation.MAJORITY 114  ); 115  116  genesisFeePerKb = Coin.MILLICOIN.multiply(5); 117  118  maxFeePerKb = Coin.valueOf(5_000_000L); 119  120  List<ECKey> increaseLockingCapAuthorizedKeys = Arrays.stream(new String[]{ 121  "0448f51638348b034995b1fd934fe14c92afde783e69f120a46ee16eb6bdc2e4f6b5e37772094c68c0dea2b1be3d96ea9651a9eebda7304914c8047f4e3e251378", 122  "0484c66f75548baf93e322574adac4e4579b6a53f8d11fab640e14c90118e6983ef24b0de349a3e88f72e81e771ae1c897cef446fd7f4da71778c532aee3b6c41b", 123  "04bb6435dc1ea12da843ebe213893d136c1624acd681fff82551498ae00bf28e9323164b00daf925fa75177463b8254a2aae8a1713e4d851a84ea369c193e9ce51" 124  }).map(hex -> ECKey.fromPublicOnly(Hex.decode(hex))).collect(Collectors.toList()); 125  126  increaseLockingCapAuthorizer = new AddressBasedAuthorizer( 127  increaseLockingCapAuthorizedKeys, 128  AddressBasedAuthorizer.MinimumRequiredCalculation.ONE 129  ); 130  131  lockingCapIncrementsMultiplier = 2; 132  initialLockingCap = Coin.COIN.multiply(300); // 300 BTC 133  134  btcHeightWhenBlockIndexActivates = 700_000; //TODO define this value when Iris activation height in RSK is determined 135  maxDepthToSearchBlocksBelowIndexActivation = 1_000; //TODO define this value with Sergio 136  137  // TODO: This value is not real 138  erpFedActivationDelay = 5063; 139  140  // TODO: WE NEED TO DEFINE THESE KEYS 141  erpFedPubKeysList = new ArrayList<>(); 142  143  oldFederationAddress = "35JUi1FxabGdhygLhnNUEFG4AgvpNMgxK1"; 144  145  minSecondsBetweenCallsReceiveHeader = 300; // 5 minutes in Seconds 146  maxDepthBlockchainAccepted = 25; 147  148  minimumPegoutValuePercentageToReceiveAfterFee = 20; 149  } 150  151  public static BridgeMainNetConstants getInstance() { 152  return instance; 153  } 154  155 }