diff --git a/supernode/index.html b/supernode/index.html
index c36ddc1..b3d1e7d 100644
--- a/supernode/index.html
+++ b/supernode/index.html
@@ -36545,12 +36545,10 @@
return Crypto.util.bytesToBase64(pubKeyBytes);
},
getSupernodeSeed: function (flo_addr, flo_pub_key) {
- return new Promise((resolve, reject) => {
- const supernodeSeeds = localbitcoinplusplus.master_configurations.supernodeSeeds;
- if (typeof supernodeSeeds !== "object") throw new Error(
- "Failed to get supernode seeds.");
- let supernodeSeedsObj = JSON.parse(supernodeSeeds);
-
+ return new Promise(async (resolve, reject) => {
+
+ let nearestSupernodeAddress = await localbitcoinplusplus.kademlia.determineMySupernode(flo_addr);
+
const contactId = localbitcoinplusplus.kademlia.newBase64DiscoverId(flo_pub_key);
const seedContactArray = {
@@ -36562,6 +36560,44 @@
},
};
+ seedContactArray.transport = {
+ host: nearestSupernodeAddress[0].ip,
+ port: nearestSupernodeAddress[0].port,
+ id: nearestSupernodeAddress[0].kbucketId
+ }
+
+ const nodeDiscoveryOptions = {
+ seeds: seedContactArray
+ }
+
+ const kdiscover = new tristanDiscover(nodeDiscoveryOptions);
+
+ try {
+ let supernodeAddressUrl = `ws://${kdiscover.seeds.transport.host}:${kdiscover.seeds.transport.port}`;
+ resolve(supernodeAddressUrl);
+ } catch (error) {
+ reject(error);
+ }
+ });
+ },
+ isNodePresentInMyKbucket: function(flo_id) {
+ return new Promise((resolve, reject)=>{
+ let kArray = KBucket.toArray();
+ let kArrayFloIds = kArray.map(k=>k.data.id);
+ if (kArrayFloIds.includes(flo_id)) {
+ resolve(true);
+ } else {
+ reject(false);
+ }
+ });
+ },
+ determineMySupernode: function(flo_addr) {
+ return new Promise((resolve, reject)=>{
+ const supernodeSeeds = localbitcoinplusplus.master_configurations.supernodeSeeds;
+ if (typeof supernodeSeeds !== "object") reject(
+ "Failed to get supernode seeds.");
+ let supernodeSeedsObj = JSON.parse(supernodeSeeds);
+
Object.entries(supernodeSeedsObj).map(seedObj=>{
localbitcoinplusplus.kademlia.addNewUserNodeInKbucket(
"FLO_TEST", seedObj[1].kbucketId,
@@ -36581,28 +36617,14 @@
let nearestSupernodeAddress = Object.values(supernodeSeedsObj)
.filter(seed=>seed.kbucketId==nearestSupernodeAddressId[0].id)
-
- seedContactArray.transport = {
- host: nearestSupernodeAddress[0].ip,
- port: nearestSupernodeAddress[0].port,
- id: nearestSupernodeAddress[0].kbucketId
- }
- const nodeDiscoveryOptions = {
- seeds: seedContactArray
+ if (nearestSupernodeAddress.length>0) {
+ resolve(nearestSupernodeAddress);
+ } else {
+ reject(false);
}
-
- const kdiscover = new tristanDiscover(nodeDiscoveryOptions);
-
- try {
- let supernodeAddressUrl = `ws://${kdiscover.seeds.transport.host}:${kdiscover.seeds.transport.port}`;
- console.log(supernodeAddressUrl);
- resolve(supernodeAddressUrl);
- } catch (error) {
- reject(error);
- }
- });
- },
+ })
+ }
}
@@ -36769,6 +36791,166 @@
}
+
+
+
@@ -41424,117 +41611,9 @@
})();
-
-
-