def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ if reader.read_uint32() != self.magic: raise ValueError("Deserialization error - Incorrect magic") self.compiler = reader.read_bytes(64).decode('utf-8') if reader.read_uint16() != 0: raise ValueError("Reserved bytes must be 0") self.tokens = reader.read_serializable_list(MethodToken) if reader.read_uint16() != 0: raise ValueError("Reserved bytes must be 0") self.script = reader.read_var_bytes(max=512 * 1024) if len(self.script) == 0: raise ValueError("Deserialization error - Script can't be empty") checksum = int.from_bytes(reader.read_bytes(4), 'little') if checksum != self.compute_checksum(): raise ValueError("Deserialization error - Invalid checksum") else: self._checksum = checksum
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.account = reader.read_serializable(types.UInt160) self.scope = payloads.WitnessScope(reader.read_uint8()) if payloads.WitnessScope.CUSTOM_CONTRACTS in self.scope: self.allowed_contracts = reader.read_serializable_list( types.UInt160) if payloads.WitnessScope.CUSTOM_GROUPS in self.scope: self.allowed_groups = reader.read_serializable_list( cryptography.EllipticCurve.ECPoint)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.headers = reader.read_serializable_list(Header)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.type = InventoryType(reader.read_uint8()) self.hashes = reader.read_serializable_list(types.UInt256)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.deserialize_unsigned(reader) self.witnesses = reader.read_serializable_list(payloads.Witness)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.header = reader.read_serializable(Header) self.hashes = reader.read_serializable_list(types.UInt256, max=0xFFFF)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.account = reader.read_serializable(types.UInt160) self.scope = payloads.WitnessScope(reader.read_uint8()) if payloads.WitnessScope.GLOBAL in self.scope and self.scope != payloads.WitnessScope.GLOBAL: raise ValueError("Deserialization error - invalid scope. GLOBAL scope not allowed with other scope types") if payloads.WitnessScope.CUSTOM_CONTRACTS in self.scope: self.allowed_contracts = reader.read_serializable_list(types.UInt160) if payloads.WitnessScope.CUSTOM_GROUPS in self.scope: self.allowed_groups = reader.read_serializable_list(cryptography.ECPoint, # type: ignore max=self.MAX_SUB_ITEMS)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.deserialize_unsigned(reader) self.witnesses = reader.read_serializable_list(payloads.Witness, max=len(self.signers)) if len(self.witnesses) != len(self.signers): raise ValueError("Deserialization error - witness length does not match signers length")
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ self.header = reader.read_serializable(Header) self.tx_count = reader.read_var_int(max=0xFFFF) self.hashes = reader.read_serializable_list(types.UInt256, max=self.tx_count) self.flags = reader.read_var_bytes(max=(max(self.tx_count, 1) + 7) // 8)
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. """ super(MerkleBlockPayload, self).deserialize(reader) self.content_count = reader.read_var_int() self.hashes = reader.read_serializable_list(types.UInt256) self.flags = reader.read_var_bytes()
def deserialize_unsigned(self, reader: serialization.BinaryReader) -> None: self.version = reader.read_uint8() if self.version > 0: raise ValueError("Deserialization error - invalid version") self.nonce = reader.read_uint32() self.sender = reader.read_serializable(types.UInt160) self.system_fee = reader.read_int64() if self.system_fee < 0: raise ValueError("Deserialization error - negative system fee") self.network_fee = reader.read_int64() if self.network_fee < 0: raise ValueError("Deserialization error - negative network fee") # Impossible overflow, only applicable to the C# implementation where they use longs # if (self.system_fee + self.network_fee < self.system_fee): # raise ValueError("Deserialization error - overflow") self.valid_until_block = reader.read_uint32() self.attributes = reader.read_serializable_list(TransactionAttribute) self.cosigners = reader.read_serializable_list(payloads.Cosigner) self.script = reader.read_var_bytes(max=65535) if len(self.script) == 0: raise ValueError("Deserialization error - invalid script length 0")
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. Raises: ValueError: if the check byte does not equal. """ self.deserialize_unsigned(reader) witnesses = reader.read_serializable_list(payloads.Witness, max=1) if len(witnesses) != 1: raise ValueError(f"Deserialization error - Witness object count is {len(witnesses)} must be 1") self.witness = witnesses[0]
def deserialize(self, reader: serialization.BinaryReader) -> None: """ Deserialize the object from a binary stream. Args: reader: instance. Raises: ValueError: if the content count of the block is zero, or if there is a duplicate transaction in the list, or if the merkle root does not included the calculated root. """ self.header = reader.read_serializable(Header) self.transactions = reader.read_serializable_list(payloads.Transaction, max=0xFFFF) if len(set(self.transactions)) != len(self.transactions): raise ValueError("Deserialization error - block contains duplicate transaction") hashes = [t.hash() for t in self.transactions] if crypto.MerkleTree.compute_root(hashes) != self.header.merkle_root: raise ValueError("Deserialization error - merkle root mismatch")
def deserialize(self, reader: serialization.BinaryReader) -> None: self._records = reader.read_serializable_list(_GasRecord)
def deserialize(self, reader: serialization.BinaryReader) -> None: self.header = reader.read_serializable(Header) self.hashes = reader.read_serializable_list(types.UInt256, max=0xFFFF)
def deserialize(self, reader: serialization.BinaryReader) -> None: super(TrimmedBlock, self).deserialize(reader) self.hashes = reader.read_serializable_list(types.UInt256) if len(self.hashes) > 0: self.consensus_data = reader.read_serializable(payloads.ConsensusData)