diff --git a/src/main/java/org/torusresearch/fetchnodedetails/FetchNodeDetails.java b/src/main/java/org/torusresearch/fetchnodedetails/FetchNodeDetails.java index 50d26e8..68ca0ae 100644 --- a/src/main/java/org/torusresearch/fetchnodedetails/FetchNodeDetails.java +++ b/src/main/java/org/torusresearch/fetchnodedetails/FetchNodeDetails.java @@ -1,9 +1,9 @@ package org.torusresearch.fetchnodedetails; -import org.torusresearch.fetchnodedetails.types.EthereumNetwork; import org.torusresearch.fetchnodedetails.types.NodeDetails; import org.torusresearch.fetchnodedetails.types.NodeInfo; +import org.torusresearch.fetchnodedetails.types.TorusNetwork; import org.torusresearch.fetchnodedetails.types.TorusNodePub; import org.web3j.crypto.Credentials; import org.web3j.crypto.Hash; @@ -13,68 +13,27 @@ import java.math.BigInteger; import java.nio.charset.StandardCharsets; +import java.util.HashMap; import java.util.concurrent.CompletableFuture; public class FetchNodeDetails { public static String PROXY_ADDRESS_MAINNET = "0xf20336e16B5182637f09821c27BDe29b0AFcfe80"; - public static String PROXY_ADDRESS_ROPSTEN = "0x6258c9d6c12ed3edda59a1a6527e469517744aa7"; - public static String PROXY_ADDRESS_POLYGON = "0x9f072ba19b3370e512aa1b4bfcdaf97283168005"; - - public static NodeDetails NODE_DETAILS_MAINNET = new NodeDetails( - "19", - "0xf20336e16B5182637f09821c27BDe29b0AFcfe80", - new String[]{ - "https://torus-19.torusnode.com/jrpc", - "https://torus-node.ens.domains/jrpc", - "https://torus-node.matic.network/jrpc", - "https://torus.zilliqa.network/jrpc", - "https://torus-mainnet.cosmos.network/jrpc", - "https://torus2.etherscan.com/jrpc", - "https://torus-node-v2.skalelabs.com/jrpc", - "https://torus-node.binancex.dev/jrpc", - "https://torusnode.ont.io/jrpc" - }, - new BigInteger[]{new BigInteger("1"), new BigInteger("2"), new BigInteger("3"), new BigInteger("4"), new BigInteger("5"), new BigInteger("6"), new BigInteger("7"), new BigInteger("8"), new BigInteger("9"),}, - new TorusNodePub[]{ - new TorusNodePub( - "bbe83c64177c3775550e6ba6ac2bc059f6847d644c9e4894e42c60d7974d8c2b", - "82b49a7caf70def38cdad2740af45c1e4f969650105c5019a29bb18b21a9acb5" - ), - new TorusNodePub( - "c208cac4ef9a47d386097a9c915b28e9cb89213abee8d26a17198ee261201b0d", - "c7db2fe4631109f40833de9dc78d07e35706549ee48fa557b33e4e75e1047873" - ), new TorusNodePub - ( - "ca1766bb426d4ca5582818a0c5439d560ea64f5baa060793ab29dd3d0ceacfe", - "d46c1d08c40e1306e1bca328c2287b8268166b11a1ba4b8442ea2ad0c5e32152" - ), new TorusNodePub - ( - "c3934dd2f6f4b3d2e1e398cc501e143c1e1a381b52feb6d1525af34d16253768", - "71f5141a5035799099f5ea3e241e66946bc55dc857ac3bd7d6fcdb8dcd3eeeef" - ), new TorusNodePub - ( - "22e66f1929631d00bf026227581597f085fd94fd952fc0dca9f0833398b5c064", - "6088b3912e10a1e9d50355a609c10db7d188f16a2e2fd7357e51bf4f6a74f0a1" - ), new TorusNodePub - ( - "9dc9fa410f3ce9eb70df70cdea00a49f2c4cc7a31c08c0dab5f863ed35ff5139", - "627a291cb87a75c61da3f65d6818e1e05e360217179817ed27e8c73bca7ec122" - ), new TorusNodePub - ( - "118b9fc07e97b096d899b9f6658463ce6a8caa64038e37fc969df4e6023dd8c6", - "baf9fa4e51770f4796ea165dd03a769b8606681a38954a0a92c4cbffd6609ce9" - ), new TorusNodePub - ( - "8a6d8b925da15a273dec3d8f8395ec35cd6878f274b2b180e4e106999db64043", - "96f67f870c157743da0b1eb84d89bf30500d74dc84c11f501ee1cb013acc8c46" - ), new TorusNodePub - ( - "39cecb62e863729f572f7dfc46c24867981bf04bb405fed0df39e33984bfade5", - "61c2364434012e68a2be2e9952805037e52629d7762fafc8e10e9fb5bad8f790" - ) - }, - false); + public static String PROXY_ADDRESS_TESTNET = "0x6258c9d6c12ed3edda59a1a6527e469517744aa7"; + public static String PROXY_ADDRESS_CYAN = "0x9f072ba19b3370e512aa1b4bfcdaf97283168005"; + public static String PROXY_ADDRESS_AQUA = "0x29Dea82a0509153b91040ee13cDBba0f03efb625"; + + + public static HashMap NETWORK_MAP = new HashMap() { + { + put(TorusNetwork.MAINNET, "mainnet"); + put(TorusNetwork.TESTNET, "ropsten"); + put(TorusNetwork.CYAN, "polygon-mainnet"); + put(TorusNetwork.AQUA, "polygon-mainnet"); + } + }; + + public static NodeDetails NODE_DETAILS_MAINNET = new NodeDetails("19", "0xf20336e16B5182637f09821c27BDe29b0AFcfe80", new String[]{"https://torus-19.torusnode.com/jrpc", "https://torus-node.ens.domains/jrpc", "https://torus-node.matic.network/jrpc", "https://torus.zilliqa.network/jrpc", "https://torus-mainnet.cosmos.network/jrpc", "https://torus2.etherscan.com/jrpc", "https://torus-node-v2.skalelabs.com/jrpc", "https://torus-node.binancex.dev/jrpc", "https://torusnode.ont.io/jrpc"}, new BigInteger[]{new BigInteger("1"), new BigInteger("2"), new BigInteger("3"), new BigInteger("4"), new BigInteger("5"), new BigInteger("6"), new BigInteger("7"), new BigInteger("8"), new BigInteger("9"),}, new TorusNodePub[]{new TorusNodePub("bbe83c64177c3775550e6ba6ac2bc059f6847d644c9e4894e42c60d7974d8c2b", "82b49a7caf70def38cdad2740af45c1e4f969650105c5019a29bb18b21a9acb5"), new TorusNodePub("c208cac4ef9a47d386097a9c915b28e9cb89213abee8d26a17198ee261201b0d", "c7db2fe4631109f40833de9dc78d07e35706549ee48fa557b33e4e75e1047873"), new TorusNodePub("ca1766bb426d4ca5582818a0c5439d560ea64f5baa060793ab29dd3d0ceacfe", "d46c1d08c40e1306e1bca328c2287b8268166b11a1ba4b8442ea2ad0c5e32152"), new TorusNodePub("c3934dd2f6f4b3d2e1e398cc501e143c1e1a381b52feb6d1525af34d16253768", "71f5141a5035799099f5ea3e241e66946bc55dc857ac3bd7d6fcdb8dcd3eeeef"), new TorusNodePub("22e66f1929631d00bf026227581597f085fd94fd952fc0dca9f0833398b5c064", "6088b3912e10a1e9d50355a609c10db7d188f16a2e2fd7357e51bf4f6a74f0a1"), new TorusNodePub("9dc9fa410f3ce9eb70df70cdea00a49f2c4cc7a31c08c0dab5f863ed35ff5139", "627a291cb87a75c61da3f65d6818e1e05e360217179817ed27e8c73bca7ec122"), new TorusNodePub("118b9fc07e97b096d899b9f6658463ce6a8caa64038e37fc969df4e6023dd8c6", "baf9fa4e51770f4796ea165dd03a769b8606681a38954a0a92c4cbffd6609ce9"), new TorusNodePub("8a6d8b925da15a273dec3d8f8395ec35cd6878f274b2b180e4e106999db64043", "96f67f870c157743da0b1eb84d89bf30500d74dc84c11f501ee1cb013acc8c46"), new TorusNodePub("39cecb62e863729f572f7dfc46c24867981bf04bb405fed0df39e33984bfade5", "61c2364434012e68a2be2e9952805037e52629d7762fafc8e10e9fb5bad8f790")}, false); private final String proxyAddress; private final NodeDetails nodeDetails = new NodeDetails(); @@ -82,12 +41,12 @@ public class FetchNodeDetails { private TorusLookup torusLookup; public FetchNodeDetails() { - this(EthereumNetwork.MAINNET, "0xf20336e16B5182637f09821c27BDe29b0AFcfe80"); + this(TorusNetwork.MAINNET, "0xf20336e16B5182637f09821c27BDe29b0AFcfe80"); } - public FetchNodeDetails(EthereumNetwork network, String proxyAddress) { + public FetchNodeDetails(TorusNetwork network, String proxyAddress) { this.proxyAddress = proxyAddress; - this.providerUrl = "https://" + network.toString() + ".infura.io/v3/" + "b8cdb0e4cff24599a286bf8e87ff1c96"; + this.providerUrl = "https://" + NETWORK_MAP.get(network) + ".infura.io/v3/" + "b8cdb0e4cff24599a286bf8e87ff1c96"; this.setupWeb3(); } @@ -99,7 +58,7 @@ public FetchNodeDetails(String providerUrl, String proxyAddress) { public CompletableFuture getNodeDetails(String verifier, String verifierId) { // For mainnet & ropsten, verifierId combination doesn't change the network details - if (this.nodeDetails.getUpdated() && (this.proxyAddress.equals(PROXY_ADDRESS_MAINNET) || this.proxyAddress.equals(PROXY_ADDRESS_ROPSTEN))) + if (this.nodeDetails.getUpdated() && (this.proxyAddress.equals(PROXY_ADDRESS_MAINNET) || this.proxyAddress.equals(PROXY_ADDRESS_TESTNET))) return CompletableFuture.supplyAsync(() -> this.nodeDetails); byte[] hashedVerifierId = Hash.sha3(verifierId.getBytes(StandardCharsets.UTF_8)); CompletableFuture cf = new CompletableFuture<>(); @@ -117,9 +76,7 @@ public CompletableFuture getNodeDetails(String verifier, String ver TorusNodePub[] updatedNodePub = new TorusNodePub[nodeEndPoints.component3().size()]; for (int i = 0; i < nodeEndPoints.component3().size(); i++) { - NodeInfo endPointElement = new NodeInfo(String.valueOf(nodeEndPoints.component2().get(i)), - new BigInteger(String.valueOf(nodeEndPoints.component3().get(i)), 10).toString(16).replace("0x", ""), - new BigInteger(String.valueOf(nodeEndPoints.component4().get(i)), 10).toString(16).replace("0x", "")); + NodeInfo endPointElement = new NodeInfo(String.valueOf(nodeEndPoints.component2().get(i)), new BigInteger(String.valueOf(nodeEndPoints.component3().get(i)), 10).toString(16).replace("0x", ""), new BigInteger(String.valueOf(nodeEndPoints.component4().get(i)), 10).toString(16).replace("0x", "")); String endpoint = "https://" + endPointElement.getDeclaredIp().split(":")[0] + "/jrpc"; updatedEndpoints[i] = endpoint; diff --git a/src/main/java/org/torusresearch/fetchnodedetails/types/EthereumNetwork.java b/src/main/java/org/torusresearch/fetchnodedetails/types/TorusNetwork.java similarity index 62% rename from src/main/java/org/torusresearch/fetchnodedetails/types/EthereumNetwork.java rename to src/main/java/org/torusresearch/fetchnodedetails/types/TorusNetwork.java index 0a8bc5a..26d5b2a 100644 --- a/src/main/java/org/torusresearch/fetchnodedetails/types/EthereumNetwork.java +++ b/src/main/java/org/torusresearch/fetchnodedetails/types/TorusNetwork.java @@ -1,13 +1,15 @@ package org.torusresearch.fetchnodedetails.types; -public enum EthereumNetwork { +public enum TorusNetwork { MAINNET("mainnet"), - ROPSTEN("ropsten"), - POLYGON("polygon-mainnet"); + TESTNET("testnet"), + CYAN("cyan"), + AQUA("aqua"); + private final String val; - EthereumNetwork(String s) { + TorusNetwork(String s) { this.val = s; } diff --git a/src/test/java/org/torusresearch/fetchnodedetailstest/FetchNodeDetailsTest.java b/src/test/java/org/torusresearch/fetchnodedetailstest/FetchNodeDetailsTest.java index a020e9e..d1ed33b 100644 --- a/src/test/java/org/torusresearch/fetchnodedetailstest/FetchNodeDetailsTest.java +++ b/src/test/java/org/torusresearch/fetchnodedetailstest/FetchNodeDetailsTest.java @@ -3,7 +3,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.torusresearch.fetchnodedetails.FetchNodeDetails; -import org.torusresearch.fetchnodedetails.types.EthereumNetwork; +import org.torusresearch.fetchnodedetails.types.TorusNetwork; import org.torusresearch.fetchnodedetails.types.NodeDetails; import org.torusresearch.fetchnodedetailstest.config.Config; @@ -23,20 +23,28 @@ public void shouldGetNodeDetailsMainnet() throws ExecutionException, Interrupted assertEquals(Config.MAINNET, nodeDetails); } - @DisplayName("Gets the Node details for Ropsten") + @DisplayName("Gets the Node details for Testnet") @Test public void shouldGetNodeDetailsRopsten() throws ExecutionException, InterruptedException, UnsupportedEncodingException { - fetchNodeDetails = new FetchNodeDetails(EthereumNetwork.ROPSTEN, FetchNodeDetails.PROXY_ADDRESS_ROPSTEN); + fetchNodeDetails = new FetchNodeDetails(TorusNetwork.TESTNET, FetchNodeDetails.PROXY_ADDRESS_TESTNET); NodeDetails nodeDetails = this.fetchNodeDetails.getNodeDetails("google", "hello@tor.us").get(); - assertEquals(Config.ROPSTEN, nodeDetails); + assertEquals(Config.TESTNET, nodeDetails); } - @DisplayName("Gets the Node details for Polygon") + @DisplayName("Gets the Node details for Cyan") @Test - public void shouldGetNodeDetailsPolygon() throws ExecutionException, InterruptedException, UnsupportedEncodingException { - fetchNodeDetails = new FetchNodeDetails(EthereumNetwork.POLYGON, FetchNodeDetails.PROXY_ADDRESS_POLYGON); + public void shouldGetNodeDetailsCyan() throws ExecutionException, InterruptedException, UnsupportedEncodingException { + fetchNodeDetails = new FetchNodeDetails(TorusNetwork.CYAN, FetchNodeDetails.PROXY_ADDRESS_CYAN); NodeDetails nodeDetails = this.fetchNodeDetails.getNodeDetails("google", "hello@tor.us").get(); - assertEquals(Config.POLYGON, nodeDetails); + assertEquals(Config.CYAN, nodeDetails); + } + + @DisplayName("Gets the Node details for Aqua") + @Test + public void shouldGetNodeDetailsAqua() throws ExecutionException, InterruptedException, UnsupportedEncodingException { + fetchNodeDetails = new FetchNodeDetails(TorusNetwork.AQUA, FetchNodeDetails.PROXY_ADDRESS_AQUA); + NodeDetails nodeDetails = this.fetchNodeDetails.getNodeDetails("glipandroid", "hello@tor.us").get(); + assertEquals(Config.AQUA, nodeDetails); } } \ No newline at end of file diff --git a/src/test/java/org/torusresearch/fetchnodedetailstest/config/Config.java b/src/test/java/org/torusresearch/fetchnodedetailstest/config/Config.java index 2143e67..a031e80 100644 --- a/src/test/java/org/torusresearch/fetchnodedetailstest/config/Config.java +++ b/src/test/java/org/torusresearch/fetchnodedetailstest/config/Config.java @@ -9,15 +9,18 @@ public class Config { public static NodeDetails MAINNET; - public static NodeDetails ROPSTEN; - public static NodeDetails POLYGON; + public static NodeDetails TESTNET; + public static NodeDetails CYAN; + + public static NodeDetails AQUA; static { try { String basePath = "src/test/java/org/torusresearch/fetchnodedetailstest/config/"; MAINNET = getNodeDetailsFromFile(basePath + "mainnet.json"); - ROPSTEN = getNodeDetailsFromFile(basePath + "ropsten.json"); - POLYGON = getNodeDetailsFromFile(basePath + "polygon.json"); + TESTNET = getNodeDetailsFromFile(basePath + "testnet.json"); + CYAN = getNodeDetailsFromFile(basePath + "cyan.json"); + AQUA = getNodeDetailsFromFile(basePath + "aqua.json"); } catch (Exception ex) { ex.printStackTrace(); } diff --git a/src/test/java/org/torusresearch/fetchnodedetailstest/config/aqua.json b/src/test/java/org/torusresearch/fetchnodedetailstest/config/aqua.json new file mode 100644 index 0000000..0f17525 --- /dev/null +++ b/src/test/java/org/torusresearch/fetchnodedetailstest/config/aqua.json @@ -0,0 +1,35 @@ +{ + "currentEpoch": "1", + "nodeListAddress": "0x29Dea82a0509153b91040ee13cDBba0f03efb625", + "torusNodeEndpoints": [ + "https://node-1.cluster-2.aqua.web3auth.io/jrpc", + "https://node-2.cluster-2.aqua.web3auth.io/jrpc", + "https://node-3.cluster-2.aqua.web3auth.io/jrpc", + "https://node-4.cluster-2.aqua.web3auth.io/jrpc", + "https://node-5.cluster-2.aqua.web3auth.io/jrpc" + ], + "torusNodePub": [ + { + "X": "7d376a4a7ce6bba7a8a49001aaa2de3f24e0f56ee73a77c6678ec00363616f25", + "Y": "d5752873e522f98b4ded27690aadfda57ff5dc2fd0c3055b9d83663441667010" + }, + { + "X": "e1b5debe1d9b42eb9917a5fe84fa5f48cae7a770b1f49f0546fbe26b1efaff3", + "Y": "8947458cbfd8b40c7bc6160c7c746c2dca65c7d6ffdccd5579203b92a020b4ad" + }, + { + "X": "98c3582b138b375b643984094882c17ca7ee090787c0a7065d229672845aa25e", + "Y": "2c3923bd015faac2cf3d91ab4cf8c6cdd4eb9f99e407a35703edf17e8c35d" + }, + { + "X": "e7ef4c1ea43bd385ab8bfb02a5aedcd33bed35b95980c0729e9a35edd02a8597", + "Y": "d540aa7d1c9cafd2216e089b8c795a9034368960729103c9a2c875d76b81fc6d" + }, + { + "X": "bb7d3500ead64d0bccd97f24b5c848ff6cbe867c0c03ca9f2922626ac5d1e49d", + "Y": "865ea03db0501bc9ffa83600202de437c7c10aa511c58ba54683b4d5f56ae314" + } + ], + "torusIndexes": [1, 2, 3, 4, 5], + "updated": true +} \ No newline at end of file diff --git a/src/test/java/org/torusresearch/fetchnodedetailstest/config/polygon.json b/src/test/java/org/torusresearch/fetchnodedetailstest/config/cyan.json similarity index 100% rename from src/test/java/org/torusresearch/fetchnodedetailstest/config/polygon.json rename to src/test/java/org/torusresearch/fetchnodedetailstest/config/cyan.json diff --git a/src/test/java/org/torusresearch/fetchnodedetailstest/config/ropsten.json b/src/test/java/org/torusresearch/fetchnodedetailstest/config/testnet.json similarity index 100% rename from src/test/java/org/torusresearch/fetchnodedetailstest/config/ropsten.json rename to src/test/java/org/torusresearch/fetchnodedetailstest/config/testnet.json