diff --git a/supernode/index.html b/supernode/index.html index 114c9da..44b2e62 100644 --- a/supernode/index.html +++ b/supernode/index.html @@ -10072,24 +10072,39 @@ `masterFLOPubKey=029EF7838D4D103E62262394B5417E8ABFD75539D19E61CA5FD0C2051B69B29910 #!#tradableAsset1=BTC,FLO,BTC_TEST,FLO_TEST#!#tradableAsset2=INR,USD,BTC,FLO,BTC_TEST,FLO_TEST, #!#validTradingAmount=10000,50000,100000,#!#btcTradeMargin=5000 - #!#MaxBackups=3 + #!#MaxBackups=2 #!#supernodesPubKeys=0315C3A20FE7096CC2E0F81A80D5F1A687B8F9EFA65242A0B0881E1BA3EE7D7D53, 03F7493F11B8E44B9798CD434D20FBE7FA34B9779D144984889D11A17C56A18742,039B4AA00DBFC0A6631DE6DA83526611A0E6B857D3579DF840BBDEAE8B6898E3B6, - 03C8E3836C9A77E2AF03D4265D034BA85732738919708EAF6A16382195AE796EDF,0349B08AA1ABDCFFB6D78CD7C949665AD2FF065EA02B3C6C47A5E9592C9A1C6BCB, - 026FCC6CFF6EB3A39E54BEB6E13FC2F02C3A93F4767AA80E49E7E876443F95AE5F,029CDB29270DC5087EF4903E8C2364552C62E935FBAA1A96AB53CC5791C7EF2067, - 022EC1D090960D9EFFFC60FDC34AB97A8395A5F6D1326DD1B1380BD9F6E31981CA,037C623A8D31DB751F666A1D2C65EC8996C5978348CEEE8566F480708D4A6335AB, - 032871A74D2DDA9D0DE7135F58B5BD2D7F679D2CCA20EA7909466D1A6912DF4022 + 03C8E3836C9A77E2AF03D4265D034BA85732738919708EAF6A16382195AE796EDF #!#externalFiles={"d3js":"58f54395efa8346e8e94d12609770f66b916897e7f4e05f6c98780cffa5c70a3"}, #!#ShamirsMaxShares=8#!#supernodeSeeds={"ranchimall1":{"ip":"127.0.0.1","port":"9001","kbucketId":"oZxHcbSf1JC8t5GjutopWYXs7C6Fe9p7ps"}, "ranchimall2":{"ip":"127.0.0.1","port":"9002","kbucketId":"oTWjPupy3Z7uMdPcu5uXd521HBkcsLuSuM"}, "ranchimall3":{"ip":"127.0.0.1","port":"9003","kbucketId":"odYA6KagmbokSh9GY7yAfeTUZRtZLwecY1"}, - "ranchimall4":{"ip":"127.0.0.1","port":"9004","kbucketId":"oJosrve9dBv2Hj2bfncxv2oEpTysg3Wejv"}, - "ranchimall5":{"ip":"127.0.0.1","port":"9005","kbucketId":"oMhv5sAzqg77sYHxmUGZWKRrVo4P4JQduS"}, - "ranchimall6":{"ip":"127.0.0.1","port":"9006","kbucketId":"oV1wCeWca3VawbBTfUGKA7Vd368PATnKAx"}, - "ranchimall7":{"ip":"127.0.0.1","port":"9007","kbucketId":"oSqFZePXibNJqeiboTYmmaqqVkd6esDUfZ"}, - "ranchimall8":{"ip":"127.0.0.1","port":"9008","kbucketId":"odUQekfMPsZV3ocneFW8SNSZADFtx9xUtm"}, - "ranchimall9":{"ip":"127.0.0.1","port":"9009","kbucketId":"oLYeoBfXWxKkUmRxhn1pcmJWtTu5kZoUJq"}, - "ranchimall10":{"ip":"127.0.0.1","port":"9010","kbucketId":"oJJe8wkADkCT28BMLkyf79fqBZeoF21cXL"}}`; + "ranchimall4":{"ip":"127.0.0.1","port":"9004","kbucketId":"oJosrve9dBv2Hj2bfncxv2oEpTysg3Wejv"}}`; + + // RMAssets = + // `masterFLOPubKey=029EF7838D4D103E62262394B5417E8ABFD75539D19E61CA5FD0C2051B69B29910 + // #!#tradableAsset1=BTC,FLO,BTC_TEST,FLO_TEST#!#tradableAsset2=INR,USD,BTC,FLO,BTC_TEST,FLO_TEST, + // #!#validTradingAmount=10000,50000,100000,#!#btcTradeMargin=5000 + // #!#MaxBackups=2 + // #!#supernodesPubKeys=0315C3A20FE7096CC2E0F81A80D5F1A687B8F9EFA65242A0B0881E1BA3EE7D7D53, + // 03F7493F11B8E44B9798CD434D20FBE7FA34B9779D144984889D11A17C56A18742,039B4AA00DBFC0A6631DE6DA83526611A0E6B857D3579DF840BBDEAE8B6898E3B6, + // 03C8E3836C9A77E2AF03D4265D034BA85732738919708EAF6A16382195AE796EDF,0349B08AA1ABDCFFB6D78CD7C949665AD2FF065EA02B3C6C47A5E9592C9A1C6BCB, + // 026FCC6CFF6EB3A39E54BEB6E13FC2F02C3A93F4767AA80E49E7E876443F95AE5F,029CDB29270DC5087EF4903E8C2364552C62E935FBAA1A96AB53CC5791C7EF2067, + // 022EC1D090960D9EFFFC60FDC34AB97A8395A5F6D1326DD1B1380BD9F6E31981CA,037C623A8D31DB751F666A1D2C65EC8996C5978348CEEE8566F480708D4A6335AB, + // 032871A74D2DDA9D0DE7135F58B5BD2D7F679D2CCA20EA7909466D1A6912DF4022 + // #!#externalFiles={"d3js":"58f54395efa8346e8e94d12609770f66b916897e7f4e05f6c98780cffa5c70a3"}, + // #!#ShamirsMaxShares=8#!#supernodeSeeds={"ranchimall1":{"ip":"127.0.0.1","port":"9001","kbucketId":"oZxHcbSf1JC8t5GjutopWYXs7C6Fe9p7ps"}, + // "ranchimall2":{"ip":"127.0.0.1","port":"9002","kbucketId":"oTWjPupy3Z7uMdPcu5uXd521HBkcsLuSuM"}, + // "ranchimall3":{"ip":"127.0.0.1","port":"9003","kbucketId":"odYA6KagmbokSh9GY7yAfeTUZRtZLwecY1"}, + // "ranchimall4":{"ip":"127.0.0.1","port":"9004","kbucketId":"oJosrve9dBv2Hj2bfncxv2oEpTysg3Wejv"}, + // "ranchimall5":{"ip":"127.0.0.1","port":"9005","kbucketId":"oMhv5sAzqg77sYHxmUGZWKRrVo4P4JQduS"}, + // "ranchimall6":{"ip":"127.0.0.1","port":"9006","kbucketId":"oV1wCeWca3VawbBTfUGKA7Vd368PATnKAx"}, + // "ranchimall7":{"ip":"127.0.0.1","port":"9007","kbucketId":"oSqFZePXibNJqeiboTYmmaqqVkd6esDUfZ"}, + // "ranchimall8":{"ip":"127.0.0.1","port":"9008","kbucketId":"odUQekfMPsZV3ocneFW8SNSZADFtx9xUtm"}, + // "ranchimall9":{"ip":"127.0.0.1","port":"9009","kbucketId":"oLYeoBfXWxKkUmRxhn1pcmJWtTu5kZoUJq"}, + // "ranchimall10":{"ip":"127.0.0.1","port":"9010","kbucketId":"oJJe8wkADkCT28BMLkyf79fqBZeoF21cXL"}}`; + // RMAssets = // `tradableAsset1=BTC,FLO,BTC_TEST,FLO_TEST#!#tradableAsset2=INR,USD,BTC,FLO,BTC_TEST,FLO_TEST, // #!#supernodes=127.0.0.1,212.88.88.2#!#MASTER_NODE=023B9F60692A17FAC805D012C5C8ADA3DD19A980A3C5F0D8A5B3500CC54D6E8B75 @@ -10305,7 +10320,8 @@ const primarySuFloId = s_id[0].data.id; let getSupernodeClosestSuObj = await localbitcoinplusplus.kademlia - .determineClosestSupernode("", 3, supernodeKBucket, primarySuFloId); + .determineClosestSupernode("", localbitcoinplusplus.master_configurations.MaxBackups, + supernodeKBucket, primarySuFloId); let promises = []; let leaving_supernode_flo_id = ""; @@ -15205,7 +15221,7 @@ if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(idbData.myLocalFLOPublicKey)) { const getClosestSuList = await readAllDB('myClosestSupernodes'); - if (wsUri[0].trader_flo_address !== idbData.myLocalFLOAddress || getClosestSuList.length < 3) { + if (wsUri[0].trader_flo_address !== idbData.myLocalFLOAddress || getClosestSuList.length < localbitcoinplusplus.master_configurations.MaxBackups) { showMessage(`INFO: Invalid connection. Refreshing the closest supernode list in DB.`); wsUri = await localbitcoinplusplus.kademlia.updateClosestSupernodeSeeds(idbData.myLocalFLOAddress); } @@ -15340,6 +15356,10 @@ var res_obj = JSON.parse(res); + // Only supernodes are allowed to go below + if (!localbitcoinplusplus.master_configurations.supernodesPubKeys + .includes(res_obj.nodePubKey)) return; + if (typeof res_obj.method !== "undefined") { let response_from_sever; @@ -17380,6 +17400,25 @@ return; } + if (res_obj.method !== "sync_primary_supernode_from_backup_supernode" + || res_obj.method !== "sync_backup_supernode_from_backup_supernode") { + if (localbitcoinplusplus.master_configurations.supernodesPubKeys + .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) { + + let ifAllPrevSuAreDead = await localbitcoinplusplus.actions + .checkIfAllPreviousSupernodesAreDeadForAUserNode(res_obj.params[0].trader_flo_address); + + console.log("ifAllPrevSuAreDead: ", ifAllPrevSuAreDead); + + if (ifAllPrevSuAreDead !== true) { + console.log(res_obj); + showMessage(`INFO: "checkIfAllPreviousSupernodesAreDeadForAUserNode" check failed.`); + localbitcoinplusplus.backupWS.prototype.handle_backup_server_messages(response); + return; + } + } + } + const isIncomingMessageValid = await validateIncomingMessage(res); console.log("isIncomingMessageValid: ", isIncomingMessageValid); @@ -17398,24 +17437,6 @@ console.log(res_obj); return; } - - if (res_obj.method !== "sync_primary_supernode_from_backup_supernode" - || res_obj.method !== "sync_backup_supernode_from_backup_supernode") { - if (localbitcoinplusplus.master_configurations.supernodesPubKeys - .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) { - let ifAllPrevSuAreDead = await localbitcoinplusplus.actions - .checkIfAllPreviousSupernodesAreDeadForAUserNode(res_obj.params[0].trader_flo_address); - - console.log("ifAllPrevSuAreDead: ", ifAllPrevSuAreDead); - - if (ifAllPrevSuAreDead !== true) { - console.log(res_obj); - showMessage(`INFO: "checkIfAllPreviousSupernodesAreDeadForAUserNode" check failed.`); - localbitcoinplusplus.backupWS.prototype.handle_backup_server_messages(response); - return; - } - } - } if (typeof res_obj.method !== "undefined") { let response_from_sever; @@ -18696,15 +18717,18 @@ try { websocket.send(finalMessage); - localbitcoinplusplus.backupWS.map(ws_conn=>{ - if(ws_conn.readyState !== 1) { - let msg = "WARNING: Websocket not ready to broadcast messages."; - showMessage(msg); - console.warn(msg); - return; + for (const key in localbitcoinplusplus.backupWS) { + if (localbitcoinplusplus.backupWS.hasOwnProperty(key)) { + const ws_conn = localbitcoinplusplus.backupWS[key].ws_connection; + if(ws_conn.readyState !== 1) { + let msg = "WARNING: Websocket not ready to broadcast messages."; + showMessage(msg); + console.warn(msg); + break; + } + ws_conn.send(finalMessage); } - ws_conn.send(finalMessage); - }); + } } catch(error) { showMessage(`ERROR: Failed to determine WS connection with ${user_flo_id}.`);