Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def ss58_decode_account_index(address, valid_address_type=None):
account_index_bytes = ss58_decode(address, valid_address_type)
if len(account_index_bytes) == 2:
return U8(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
if len(account_index_bytes) == 4:
return U16(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
if len(account_index_bytes) == 8:
return U32(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
if len(account_index_bytes) == 16:
return U64(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
else:
raise ValueError("Invalid account index length")
def ss58_decode_account_index(address, valid_address_type=42):
account_index_bytes = ss58_decode(address, valid_address_type)
if len(account_index_bytes) == 2:
return U8(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
if len(account_index_bytes) == 4:
return U16(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
if len(account_index_bytes) == 8:
return U32(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
if len(account_index_bytes) == 16:
return U64(ScaleBytes('0x{}'.format(account_index_bytes))).decode()
else:
raise ValueError("Invalid account index length")
def ss58_encode_account_index(account_index, address_type=42):
if 0 <= account_index <= 2**8 - 1:
account_idx_encoder = U8()
elif 2**8 <= account_index <= 2**16 - 1:
account_idx_encoder = U16()
elif 2**16 <= account_index <= 2**32 - 1:
account_idx_encoder = U32()
elif 2**32 <= account_index <= 2**64 - 1:
account_idx_encoder = U64()
else:
raise ValueError("Value too large for an account index")
return ss58_encode(account_idx_encoder.encode(account_index).data, address_type)
def ss58_encode_account_index(account_index, address_type=42):
if 0 <= account_index <= 2**8 - 1:
account_idx_encoder = U8()
elif 2**8 <= account_index <= 2**16 - 1:
account_idx_encoder = U16()
elif 2**16 <= account_index <= 2**32 - 1:
account_idx_encoder = U32()
elif 2**32 <= account_index <= 2**64 - 1:
account_idx_encoder = U64()
else:
raise ValueError("Value too large for an account index")
return ss58_encode(account_idx_encoder.encode(account_index).data, address_type)
class GenericAccountId(H256):
def __init__(self, data=None, sub_type=None, metadata=None):
self.ss58_address = None
super().__init__(data, sub_type, metadata)
def process_encode(self, value):
if value[0:2] != '0x' and len(value) == 47:
from scalecodec.utils.ss58 import ss58_decode
self.ss58_address = value
value = '0x{}'.format(ss58_decode(value))
return super().process_encode(value)
class GenericAccountIndex(U32):
pass
class KeyValue(Struct):
type_string = '(Vec, Vec)'
type_mapping = (('key', 'Vec'), ('value', 'Vec'))
class NewAccountOutcome(CompactU32):
type_string = 'NewAccountOutcome'
class Vec(ScaleType):
def __init__(self, data=None, **kwargs):
self.elements = []