From a7a37642de58a973c45db6135880282c0963934c Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Fri, 17 Jan 2025 22:22:45 -0300 Subject: [PATCH] fix: not being able to conver bech32 to b256 --- .../app/src/systems/Core/utils/address.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/app/src/systems/Core/utils/address.tsx b/packages/app/src/systems/Core/utils/address.tsx index 7b1cd4f1aa..5a2ed67a6a 100644 --- a/packages/app/src/systems/Core/utils/address.tsx +++ b/packages/app/src/systems/Core/utils/address.tsx @@ -1,3 +1,4 @@ +import { bech32 } from 'bech32'; import { Address, isB256 } from 'fuels'; export function shortAddress(address = '') { @@ -13,9 +14,30 @@ export function isValidEthAddress(address = '') { return isPadded || isEthAddress; } +export function convertBech32ToB256(address: string): string { + try { + const decoded = bech32.decode(address); + const bytes = bech32.fromWords(decoded.words); + return `0x${Buffer.from(bytes).toString('hex')}`; + } catch (error) { + console.error('Invalid Bech32 address:', error); + return address; + } +} + +export function isBech32(address: string): boolean { + try { + bech32.decode(address); + return true; + } catch { + return false; + } +} + export function safeConvertToB256(address: string) { try { if (isB256(address)) return address; + if (isBech32(address)) return convertBech32ToB256(address); return Address.fromDynamicInput(address).toB256(); } catch (error) { console.error(error);