code: def btc_script_hex_to_address( script_hex, segwit=None ):
      
      # TODO: make this support more than bitcoin-like scripts
      if script_hex.startswith("76a914") and script_hex.endswith("88ac") and len(script_hex) == 50:
          # p2pkh script
          hash160_bin = binascii.unhexlify(script_hex[6:-4])
          return bin_hash160_to_address(hash160_bin, version_byte=version_byte)
  
      elif script_hex.startswith("a914") and script_hex.endswith("87") and len(script_hex) == 46:
          # p2sh script
          hash160_bin = binascii.unhexlify(script_hex[4:-2])
          return bin_hash160_to_address(hash160_bin, version_byte=multisig_version_byte)
  
      elif script_hex.startswith('0014') and len(script_hex) == 44:
          # p2wpkh script (bech32 address)
          hash160_bin = binascii.unhexlify(script_hex[4:])
          return segwit_addr_encode(hash160_bin) 
  
      elif script_hex.startswith('0020') and len(script_hex) == 68:
          # p2wsh script (bech32 address)
          sha256_bin = binascii.unhexlify(script_hex[4:])
          return segwit_addr_encode(sha256_bin)
  
      return None
docs: Examine a script (hex-encoded) and extract an address.
      Return the address on success
      Return None on error