From d6fd63dace9579bfa85121db5ebfa5c5a5d6a882 Mon Sep 17 00:00:00 2001 From: void-57 Date: Mon, 9 Feb 2026 17:35:46 +0530 Subject: [PATCH] Add support for additional blockchain addresses: BSC, AVAX, MATIC, HBAR, LTC, BCH, DOT, ALGO, XLM, SOL, and ADA --- index.html | 134 +++++++- scripts/blockchainAddresses.js | 608 ++++++++++++++++++++++++++++++++- 2 files changed, 733 insertions(+), 9 deletions(-) diff --git a/index.html b/index.html index e6682e5..41a5889 100644 --- a/index.html +++ b/index.html @@ -20,8 +20,13 @@ + + + + + @@ -78,13 +83,27 @@ floGlobals.myEthID = floEthereum.ethAddressFromCompressedPublicKey(floDapps.user.public) // AVAX C-Chain uses same address format as Ethereum floGlobals.myAvaxID = floGlobals.myEthID; + // BSC (Binance Smart Chain) uses same address format as Ethereum + floGlobals.myBscID = floGlobals.myEthID; + // MATIC (Polygon) uses same address format as Ethereum + floGlobals.myMaticID = floGlobals.myEthID; + // HBAR (Hedera) uses same address format as Ethereum + floGlobals.myHbarID = floGlobals.myEthID; // Initialize private-key-dependent addresses to null (will be derived after messenger init) floGlobals.myXrpID = null; floGlobals.mySuiID = null; + floGlobals.myAdaID = null; floGlobals.myTonID = null; floGlobals.myTronID = null; floGlobals.myDogeID = null; + floGlobals.myLtcID = null; + floGlobals.myBchID = null; + floGlobals.myDotID = null; + floGlobals.myAlgoID = null; + floGlobals.myXlmID = null; + floGlobals.mySolID = null; + // Note: Cardano (ADA) address will be derived from private key later document.querySelectorAll('.user-profile-id').forEach(el => el.textContent = floGlobals.myFloID) //load messages from IDB and render them @@ -128,6 +147,13 @@ try { floGlobals.myTonID = await convertWIFtoTonAddress(privKey); } catch (e) { console.warn('TON derivation failed:', e); } try { floGlobals.myTronID = convertWIFtoTronAddress(privKey); } catch (e) { console.warn('TRON derivation failed:', e); } try { floGlobals.myDogeID = convertWIFtoDogeAddress(privKey); } catch (e) { console.warn('DOGE derivation failed:', e); } + try { floGlobals.myLtcID = convertWIFtoLitecoinAddress(privKey); } catch (e) { console.warn('LTC derivation failed:', e); } + try { floGlobals.myBchID = convertWIFtoBitcoinCashAddress(privKey); } catch (e) { console.warn('BCH derivation failed:', e); } + try { floGlobals.myDotID = await convertWIFtoPolkadotAddress(privKey); } catch (e) { console.warn('DOT derivation failed:', e); } + try { floGlobals.myAlgoID = convertWIFtoAlgorandAddress(privKey); } catch (e) { console.warn('ALGO derivation failed:', e); } + try { floGlobals.myXlmID = convertWIFtoStellarAddress(privKey); } catch (e) { console.warn('XLM derivation failed:', e); } + try { floGlobals.mySolID = convertWIFtoSolanaAddress(privKey); } catch (e) { console.warn('SOL derivation failed:', e); } + try { floGlobals.myAdaID = await convertWIFtoCardanoAddress(privKey); } catch (e) { console.warn('ADA derivation failed:', e); } } } catch (e) { console.warn('Failed to derive addresses with stored password:', e); @@ -147,6 +173,13 @@ try { floGlobals.myTonID = await convertWIFtoTonAddress(privKey); } catch (e) { console.warn('TON derivation failed:', e); } try { floGlobals.myTronID = convertWIFtoTronAddress(privKey); } catch (e) { console.warn('TRON derivation failed:', e); } try { floGlobals.myDogeID = convertWIFtoDogeAddress(privKey); } catch (e) { console.warn('DOGE derivation failed:', e); } + try { floGlobals.myLtcID = convertWIFtoLitecoinAddress(privKey); } catch (e) { console.warn('LTC derivation failed:', e); } + try { floGlobals.myBchID = convertWIFtoBitcoinCashAddress(privKey); } catch (e) { console.warn('BCH derivation failed:', e); } + try { floGlobals.myDotID = await convertWIFtoPolkadotAddress(privKey); } catch (e) { console.warn('DOT derivation failed:', e); } + try { floGlobals.myAlgoID = convertWIFtoAlgorandAddress(privKey); } catch (e) { console.warn('ALGO derivation failed:', e); } + try { floGlobals.myXlmID = convertWIFtoStellarAddress(privKey); } catch (e) { console.warn('XLM derivation failed:', e); } + try { floGlobals.mySolID = convertWIFtoSolanaAddress(privKey); } catch (e) { console.warn('SOL derivation failed:', e); } + try { floGlobals.myAdaID = await convertWIFtoCardanoAddress(privKey); } catch (e) { console.warn('ADA derivation failed:', e); } } } catch (e) { // Private key is password-secured but we don't have the password @@ -1930,18 +1963,28 @@ removeNotificationBadge('#chat_page_button') if (floGlobals.idInterval) clearInterval(floGlobals.idInterval) - // Cycle through all blockchain addresses: FLO -> BTC -> ETH -> AVAX -> XRP -> SUI -> TON -> TRON -> DOGE + // Cycle through all blockchain addresses: FLO -> BTC -> ETH -> AVAX -> BSC -> MATIC -> HBAR -> XRP -> SUI -> TON -> TRON -> DOGE -> LTC -> BCH -> DOT -> ALGO -> XLM -> SOL let currentIdIndex = 0 const idList = [ { id: floGlobals.myFloID, label: 'FLO' }, { id: floGlobals.myBtcID, label: 'BTC' }, { id: floGlobals.myEthID, label: 'ETH' }, { id: floGlobals.myAvaxID, label: 'AVAX' }, + { id: floGlobals.myBscID, label: 'BSC' }, + { id: floGlobals.myMaticID, label: 'MATIC' }, + { id: floGlobals.myHbarID, label: 'HBAR' }, { id: floGlobals.myXrpID, label: 'XRP' }, { id: floGlobals.mySuiID, label: 'SUI' }, { id: floGlobals.myTonID, label: 'TON' }, { id: floGlobals.myTronID, label: 'TRON' }, - { id: floGlobals.myDogeID, label: 'DOGE' } + { id: floGlobals.myDogeID, label: 'DOGE' }, + { id: floGlobals.myLtcID, label: 'LTC' }, + { id: floGlobals.myBchID, label: 'BCH' }, + { id: floGlobals.myDotID, label: 'DOT' }, + { id: floGlobals.myAlgoID, label: 'ALGO' }, + { id: floGlobals.myXlmID, label: 'XLM' }, + { id: floGlobals.mySolID, label: 'SOL' }, + { id: floGlobals.myAdaID, label: 'ADA' } ].filter(item => item.id) floGlobals.idInterval = setInterval(() => { currentIdIndex = (currentIdIndex + 1) % idList.length @@ -2468,7 +2511,7 @@ }); } - // Derive private-key-dependent blockchain addresses (XRP, SUI, TON, TRON, DOGE) with password + // Derive private-key-dependent blockchain addresses (XRP, SUI, TON, TRON, DOGE, DOT, ALGO) with password async function derivePrivKeyAddresses() { try { const password = await getPromptInput('Enter password to unlock addresses', '', { isPassword: true }); @@ -2505,6 +2548,41 @@ } catch (e) { console.warn('DOGE derivation failed:', e); } + try { + floGlobals.myLtcID = convertWIFtoLitecoinAddress(privKey); + } catch (e) { + console.warn('LTC derivation failed:', e); + } + try { + floGlobals.myBchID = convertWIFtoBitcoinCashAddress(privKey); + } catch (e) { + console.warn('BCH derivation failed:', e); + } + try { + floGlobals.myDotID = await convertWIFtoPolkadotAddress(privKey); + } catch (e) { + console.warn('DOT derivation failed:', e); + } + try { + floGlobals.myAlgoID = convertWIFtoAlgorandAddress(privKey); + } catch (e) { + console.warn('ALGO derivation failed:', e); + } + try { + floGlobals.myXlmID = convertWIFtoStellarAddress(privKey); + } catch (e) { + console.warn('XLM derivation failed:', e); + } + try { + floGlobals.mySolID = convertWIFtoSolanaAddress(privKey); + } catch (e) { + console.warn('SOL derivation failed:', e); + } + try { + floGlobals.myAdaID = await convertWIFtoCardanoAddress(privKey); + } catch (e) { + console.warn('ADA derivation failed:', e); + } // Re-render profile to show new addresses routeTo(window.location.hash); notify('Addresses unlocked successfully!', 'success'); @@ -3010,23 +3088,35 @@
My FLO address - +
My Bitcoin address - +
My Ethereum address - +
My AVAX (Avalanche C-Chain) address - + +
+
+ My BSC (Binance Smart Chain) address + +
+
+ My MATIC (Polygon) address + +
+
+ My HBAR (Hedera) address +
My XRP (Ripple) address - +
My SUI address @@ -3044,6 +3134,34 @@ My DOGE address
+
+ My LTC (Litecoin) address + +
+
+ My BCH (Bitcoin Cash) address + +
+
+ My DOT (Polkadot) address + +
+
+ My ALGO (Algorand) address + +
+
+ My XLM (Stellar) address + +
+
+ My SOL (Solana) address + +
+
+ My ADA (Cardano) address + +
${(!floGlobals.myXrpID && floGlobals.isPrivKeySecured) ? html`