fixed kbucket errors

This commit is contained in:
Abhishek Sinha 2019-03-28 15:04:16 +05:30
parent c1f950a3e9
commit 3231b23506

View File

@ -10315,7 +10315,12 @@
readAllDB('kBucketStore') readAllDB('kBucketStore')
.then(dbObject => { .then(dbObject => {
if (typeof dbObject=="object") { if (typeof dbObject=="object") {
dbObject.map(dbObj=>{ let su_flo_addr_array = localbitcoinplusplus.master_configurations.supernodesPubKeys
.map(pubk=>bitjs.FLO_TEST.pubkey2address(pubk));
// Prevent supernode to re-added in kbucket
dbObject
.filter(f=>!su_flo_addr_array.includes(f.data.id))
.map(dbObj=>{
this.addNewUserNodeInKbucket(blockchain, flo_addr, dbObj.data, KB); this.addNewUserNodeInKbucket(blockchain, flo_addr, dbObj.data, KB);
}); });
} else { } else {
@ -11060,12 +11065,14 @@
return callback(true); return callback(true);
} }
}); });
} } else {
return callback(false); return callback(false);
}
} }
} }
} else {
return callback(false);
} }
return callback(false);
}, },
async receive_rpc_response(request) { async receive_rpc_response(request) {
@ -14723,13 +14730,25 @@
case "addNewKbucketNode": case "addNewKbucketNode":
try { try {
const newKbucketObjectArr = res_obj.params[0]; localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.globalParams.senderFloId)
newKbucketObjectArr.newKbucketNode.map(newKbucketObject=>{ .then(my_closest_su=>{
newKbucketObject_id_array = Object.values(newKbucketObject.id); if (localbitcoinplusplus.wallets.my_local_flo_address !== my_closest_su[0].data.id) return;
newKbucketObject_idu8 = new Uint8Array(newKbucketObject_id_array);
localbitcoinplusplus.kademlia.addNewUserNodeInKbucketAndDB("FLO_TEST", const newKbucketObjectObj = res_obj.params[0];
newKbucketObject_idu8, newKbucketObject.data); if (typeof newKbucketObjectObj.newKbucketNode == "object") {
}); newKbucketObject = newKbucketObjectObj.newKbucketNode;
newKbucketObject_id_array = Object.values(newKbucketObject.id);
newKbucketObject_idu8 = new Uint8Array(newKbucketObject_id_array);
localbitcoinplusplus.kademlia.addNewUserNodeInKbucketAndDB("FLO_TEST",
newKbucketObject_idu8, newKbucketObject.data);
} else {
let mss = `WARNING: Failed to add ${res_obj.globalParams.senderFloId} to KBucket.`;
showMessage(mss)
console.warn(mss);
}
});
} catch (error) { } catch (error) {
console.error(error); console.error(error);
} }
@ -15877,27 +15896,29 @@
const MY_LOCAL_FLO_PUBLIC_KEY = localbitcoinplusplus.wallets.my_local_flo_public_key = const MY_LOCAL_FLO_PUBLIC_KEY = localbitcoinplusplus.wallets.my_local_flo_public_key =
idbData.myLocalFLOPublicKey; idbData.myLocalFLOPublicKey;
// add/update yourself in your kbucket
await localbitcoinplusplus.kademlia.addNewUserNodeInKbucketAndDB(
"FLO_TEST", MY_LOCAL_FLO_ADDRESS,
{ id: MY_LOCAL_FLO_ADDRESS });
// restore k-bucket // restore k-bucket
// const dbObj = await localbitcoinplusplus.kademlia.restoreKbucket(MY_LOCAL_FLO_ADDRESS, "FLO_TEST", KBucket); const dbObj = await localbitcoinplusplus.kademlia.restoreKbucket(MY_LOCAL_FLO_ADDRESS, "FLO_TEST", KBucket);
// const dbObjSuKB = await localbitcoinplusplus.kademlia.restoreKbucket(MY_LOCAL_FLO_ADDRESS, "FLO_TEST", supernodeKBucket);
// Send your id to Supernode kbucket
// if (typeof dbObj=="object") { if (!localbitcoinplusplus.master_configurations.supernodesPubKeys
// let addNewKNode = localbitcoinplusplus.rpc.prototype .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
// .send_rpc let kbuck = localbitcoinplusplus.kademlia.floIdToKbucketId("FLO_TEST", MY_LOCAL_FLO_ADDRESS);
// .call(this, "addNewKbucketNode", { readDB('kBucketStore', kbuck).then(userKBData=>{
// newKbucketNode: dbObj if(typeof userKBData == "undefined") {
// }); msf = `WARNING: Failed to determine KBucket Id and hence failed to send Kbucket Id to Supernode.`
// console.log(addNewKNode); showMessage(msf)
throw new Error(msf)
// doSend(addNewKNode); };
// } else { let addNewKNode = localbitcoinplusplus.rpc.prototype
// console.warn(`Failed to restore kBucket.`); .send_rpc
// } .call(this, "addNewKbucketNode", {
newKbucketNode: userKBData
});
console.log(addNewKNode);
doSend(addNewKNode);
})
}
readDB('userPublicData', MY_LOCAL_FLO_ADDRESS).then(function ( readDB('userPublicData', MY_LOCAL_FLO_ADDRESS).then(function (
pubic_data_response) { pubic_data_response) {