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 @@ })(); - - -