Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
('validator', 'ValidatorId'),
('keys', 'LegacyKeys'),
)
class EdgewareQueuedKeys(Struct):
type_string = '(ValidatorId, EdgewareKeys)'
type_mapping = (
('validator', 'ValidatorId'),
('keys', 'EdgewareKeys'),
)
class VecQueuedKeys(Vec):
type_string = 'Vec<(ValidatorId, Keys)>'
def process(self):
element_count = self.process_type('Compact').value
result = []
for _ in range(0, element_count):
element = self.process_type('QueuedKeys')
self.elements.append(element)
result.append(element.value)
return result
class Conviction(Enum):
CONVICTION_MASK = 0b01111111
DEFAULT_CONVICTION = 0b00000000
# encode element count to Compact
element_count_compact = CompactU32()
element_count_compact.encode(len(value))
data = element_count_compact.data
for element in value:
element_obj = self.get_decoder_class(self.sub_type, metadata=self.metadata)
data += element_obj.encode(element)
return data
class BitVec(Vec):
# TODO: A BitVec that represents an array of bits. The bits are however stored encoded. The difference between this
# * and a normal Bytes would be that the length prefix indicates the number of bits encoded, not the bytes
pass
class GenericAddress(ScaleType):
def __init__(self, data, **kwargs):
self.account_length = None
self.account_id = None
self.account_index = None
self.account_idx = None
super().__init__(data, **kwargs)
def process(self):
self.account_length = self.get_next_bytes(1)
return {
'phase': self.phase,
'extrinsic_idx': self.extrinsic_idx,
'type': self.type,
'module_id': self.event_module.name,
'event_id': self.event.name,
'params': self.params,
'topics': self.topics
}
class Other(Bytes):
pass
class AuthoritiesChange(Vec):
type_string = 'Vec'
def __init__(self, data, **kwargs):
super().__init__(data, sub_type='AccountId', **kwargs)
class GenericConsensusEngineId(FixedLengthArray):
sub_type = 'u8'
element_count = 4
def process(self):
return self.get_next_bytes(self.element_count).decode()
class ChangesTrieRoot(Bytes):
return data
class ExtrinsicsBlock61181Decoder(ExtrinsicsDecoder):
type_mapping = (
('extrinsic_length', 'Compact'),
('version_info', 'u8'),
('address', 'Address'),
('signature', 'Signature'),
('nonce', 'u64'),
('era', 'Era'),
('call_index', '(u8,u8)'),
)
class EventsDecoder(Vec):
type_string = 'Vec>'
def __init__(self, data, metadata=None, **kwargs):
assert (not metadata or type(metadata) == MetadataDecoder)
self.metadata = metadata
self.elements = []
super().__init__(data, metadata=metadata, **kwargs)
def process(self):
element_count = self.process_type('Compact').value
for i in range(0, element_count):
element = self.process_type('EventRecord', metadata=self.metadata)
element.value['event_idx'] = i