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`