From 1f7cbcfa13e1377af00ca4b65078c602c700ceaa Mon Sep 17 00:00:00 2001 From: Vivek Teega Date: Mon, 20 Feb 2023 17:01:29 +0530 Subject: [PATCH] Changes to integrate FLO Multisig Co-Authored-By: Sai Raj <39055732+sairajzero@users.noreply.github.com> --- pyflo/constants.py | 6 ++++-- pyflo/functions/address.py | 16 ++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/pyflo/constants.py b/pyflo/constants.py index da656be..5757e9c 100644 --- a/pyflo/constants.py +++ b/pyflo/constants.py @@ -14,7 +14,7 @@ ECDSA_SEC256K1_ORDER = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8 MAINNET_ADDRESS_BYTE_PREFIX = b'\x23' TESTNET_ADDRESS_BYTE_PREFIX = b'\x73' -MAINNET_SCRIPT_ADDRESS_BYTE_PREFIX = b'\x05' +MAINNET_SCRIPT_ADDRESS_BYTE_PREFIX = b'\x5e' TESTNET_SCRIPT_ADDRESS_BYTE_PREFIX = b'\xc4' MAINNET_SEGWIT_ADDRESS_BYTE_PREFIX = b'\x03\x03\x00\x02\x03' TESTNET_SEGWIT_ADDRESS_BYTE_PREFIX = b'\x03\x03\x00\x14\x02' @@ -22,7 +22,8 @@ TESTNET_SEGWIT_ADDRESS_BYTE_PREFIX = b'\x03\x03\x00\x14\x02' MAINNET_ADDRESS_PREFIX = 'F' TESTNET_ADDRESS_PREFIX = 'o' TESTNET_ADDRESS_PREFIX_2 = 'o' -MAINNET_SCRIPT_ADDRESS_PREFIX = '3' +MAINNET_SCRIPT_ADDRESS_PREFIX = 'e' +MAINNET_SCRIPT_ADDRESS_PREFIX_2 = 'f' TESTNET_SCRIPT_ADDRESS_PREFIX = '2' MAINNET_PRIVATE_KEY_UNCOMPRESSED_PREFIX = '5' @@ -35,6 +36,7 @@ ADDRESS_PREFIX_LIST = (MAINNET_ADDRESS_PREFIX, TESTNET_ADDRESS_PREFIX, TESTNET_ADDRESS_PREFIX_2, MAINNET_SCRIPT_ADDRESS_PREFIX, + MAINNET_SCRIPT_ADDRESS_PREFIX_2, TESTNET_SCRIPT_ADDRESS_PREFIX) PRIVATE_KEY_PREFIX_LIST = (MAINNET_PRIVATE_KEY_UNCOMPRESSED_PREFIX, diff --git a/pyflo/functions/address.py b/pyflo/functions/address.py index 708f263..3250774 100644 --- a/pyflo/functions/address.py +++ b/pyflo/functions/address.py @@ -129,7 +129,8 @@ def address_type(address, num=False): :return: address type in string or numeric format. """ if address[0] in (TESTNET_SCRIPT_ADDRESS_PREFIX, - MAINNET_SCRIPT_ADDRESS_PREFIX): + MAINNET_SCRIPT_ADDRESS_PREFIX, + MAINNET_SCRIPT_ADDRESS_PREFIX_2): t = 'P2SH' elif address[0] in (MAINNET_ADDRESS_PREFIX, TESTNET_ADDRESS_PREFIX, @@ -155,7 +156,7 @@ def address_net_type(address): :param address: address in base58 or bech32 format. :return: address network type in string format or None. """ - if address[0] in (MAINNET_SCRIPT_ADDRESS_PREFIX, + if address[0] in (MAINNET_SCRIPT_ADDRESS_PREFIX, MAINNET_SCRIPT_ADDRESS_PREFIX_2, MAINNET_ADDRESS_PREFIX): return "mainnet" elif address[:2] == MAINNET_SEGWIT_ADDRESS_PREFIX: @@ -178,7 +179,8 @@ def address_to_script(address, hex=False): :return: public key script in HEX or bytes string. """ if address[0] in (TESTNET_SCRIPT_ADDRESS_PREFIX, - MAINNET_SCRIPT_ADDRESS_PREFIX): + MAINNET_SCRIPT_ADDRESS_PREFIX, + MAINNET_SCRIPT_ADDRESS_PREFIX_2): s = [OP_HASH160, b'\x14', address_to_hash(address, hex=False), @@ -222,6 +224,7 @@ def is_address_valid(address, testnet=False): return False if address[0] in (MAINNET_ADDRESS_PREFIX, MAINNET_SCRIPT_ADDRESS_PREFIX, + MAINNET_SCRIPT_ADDRESS_PREFIX_2, TESTNET_ADDRESS_PREFIX, TESTNET_ADDRESS_PREFIX_2, TESTNET_SCRIPT_ADDRESS_PREFIX): @@ -232,7 +235,8 @@ def is_address_valid(address, testnet=False): return False else: if address[0] not in (MAINNET_ADDRESS_PREFIX, - MAINNET_SCRIPT_ADDRESS_PREFIX): + MAINNET_SCRIPT_ADDRESS_PREFIX, + MAINNET_SCRIPT_ADDRESS_PREFIX_2): return False h = decode_base58(address) if len(h) != 25: @@ -275,11 +279,11 @@ def is_address_valid(address, testnet=False): if checksum != checksum2: return False return True + else: + return False def get_witness_version(address): address = address.split("1")[1] h = rebase_32_to_5(address) return h[0] - -