tonfactory / tonsdk

Apache License 2.0
98 stars 35 forks source link

How to convert bounceable address to non bounceable address #41

Open smiles-leon opened 2 months ago

smiles-leon commented 2 months ago

i'm try to convert 'kQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsMGgZ' to 'EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsMNOT', I tried changing the is_bounceable parameter, but it didn't work.

from tonsdk.utils import Address

def convert_to_base64_format(address):
    try:
        # 判断并处理Hex格式地址
        if address.startswith('0:') or address.startswith('-1:'):
            # 创建Address对象
            addr = Address(address)
        elif address.startswith('EQ') or address.startswith('kQ'):
            # 创建Address对象
            addr = Address(address)
        else:
            raise ValueError("Unsupported address format")

        # 将地址转换为Base64 URL安全编码格式(可弹回)
        base64_address = addr.to_string(1, is_bounceable=True, is_url_safe=True)
        return base64_address
    except Exception as e:
        return f"Error: {e}"

# 示例地址
address1 = "EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__NOT"
address2 = "0:2f956143c461769579baef2e32cc2d7bc18283f40d20bb03e432cd603ac33ffc"
address3 = "kQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__GgZ"

# 转换地址
converted_address1 = convert_to_base64_format(address1)
converted_address2 = convert_to_base64_format(address2)
converted_address3 = convert_to_base64_format(address3)

print(f"Converted Address 1: {converted_address1}")
print(f"Converted Address 2: {converted_address2}")
print(f"Converted Address 3: {converted_address3}")

The result is

Converted Address 1: EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__NOT
Converted Address 2: EQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__NOT
Converted Address 3: kQAvlWFDxGF2lXm67y4yzC17wYKD9A0guwPkMs1gOsM__GgZ
FaiqAli-dot commented 1 week ago

did you find any solution for this?