def __len__(self): return (s.uint32 # magic + 64 # compiler + 2 # reserved + utils.get_var_size(self.tokens) + 2 # reserved + s.uint32 # checksum + utils.get_var_size(self.script))
def __len__(self): contracts_size = 0 if payloads.WitnessScope.CUSTOM_CONTRACTS in self.scope: contracts_size = utils.get_var_size(self.allowed_contracts) groups_size = 0 if payloads.WitnessScope.CUSTOM_GROUPS in self.scope: groups_size = utils.get_var_size(self.allowed_groups) return s.uint160 + s.uint8 + contracts_size + groups_size
def __len__(self): return (s.uint32 # magic + 32 # compiler + (s.uint32 * 4) # version + s.uint160 # script hash + s.uint32 # checksum + utils.get_var_size(self.script))
def test_varsize_string(self): input = "abc" self.assertEqual(1 + len(input), utils.get_var_size(input)) input = "a" * 0xFC self.assertEqual(1 + len(input), utils.get_var_size(input)) # boundary check input = "a" * 0xFD self.assertEqual(3 + len(input), utils.get_var_size(input)) input = "a" * 0xFFFF self.assertEqual(3 + len(input), utils.get_var_size(input)) input = "a" * (0xFFFF + 1) self.assertEqual(5 + len(input), utils.get_var_size(input))
def __len__(self): """ Get the total size in bytes of the object. Note: This size is only for the official properties such that it matches C#. Unofficial properties are not accounted for. """ return s.uint32 + 16 + utils.get_var_size(self.capabilities)
def calculate_network_fee(tx: payloads.Transaction, snapshot: storage.Snapshot, account: wallet.Account) -> int: if len(tx.signers) == 0: raise ValueError("Cannot calculate the network fee without a sender in the transaction.") hashes = tx.get_script_hashes_for_verifying(snapshot) network_fee_size = (tx.HEADER_SIZE + core_utils.get_var_size(tx.signers) # type: ignore + core_utils.get_var_size(tx.attributes) # type: ignore + core_utils.get_var_size(tx.script) # type: ignore + core_utils.get_var_size(len(hashes)) # type: ignore ) exec_fee_factor = contracts.PolicyContract().get_exec_fee_factor(snapshot) network_fee = 0 for i, hash_ in enumerate(hashes): witness_script = None if hash_ == account.script_hash and account.contract and len(account.contract.script) > 0: witness_script = account.contract.script if witness_script is None and len(tx.witnesses) > 0: for witness in tx.witnesses: if witness.script_hash() == hash_: witness_script = witness.verification_script break if witness_script is None or (witness_script and len(witness_script) == 0): raise ValueError("Using a smart contract as a witness is not yet supported in mamba") elif contracts.Contract.is_signature_contract(witness_script): network_fee_size += 67 + core_utils.get_var_size(witness_script) # type: ignore network_fee = exec_fee_factor * signature_contract_costs() elif contracts.Contract.is_multisig_contract(witness_script): _, threshold, public_keys = contracts.Contract.parse_as_multisig_contract(witness_script) invocation_script_size = 66 * threshold network_fee_size += (core_utils.get_var_size(invocation_script_size) # type: ignore + invocation_script_size + core_utils.get_var_size(witness_script)) # type: ignore network_fee = exec_fee_factor * multisig_contract_costs(threshold, len(public_keys)) network_fee += network_fee_size * contracts.PolicyContract().get_fee_per_byte(snapshot) return network_fee
def test_iterables(self): iterable = [] self.assertEqual(1, utils.get_var_size(iterable)) iterable = b'\x01\x02' self.assertEqual(1+len(iterable), utils.get_var_size(iterable)) iterable = [DummySerializable(), DummySerializable()] fixed_dummy_size = 2 self.assertEqual(1 + (2 * fixed_dummy_size), utils.get_var_size(iterable)) # so far NEO only has byte enums, so the length is fixed to 1 iterable = [DummyEnum.DEFAULT, DummyEnum.DEFAULT] self.assertEqual(1 + 2, utils.get_var_size(iterable)) # test unsupported type in iterable iterable = [object()] with self.assertRaises(TypeError) as context: utils.get_var_size(iterable) self.assertIn("Cannot accurately determine size of objects that do not", str(context.exception))
def __len__(self): return len(self.header) + utils.get_var_size(self.hashes)
def __len__(self): return s.uint160 + utils.get_var_size( self.method) + s.uint16 + s.uint8 + s.uint8
def __len__(self): """ Get the total size in bytes of the object. """ return s.uint8 + utils.get_var_size(self.hashes)
def __len__(self): return (s.uint32 + len(self.prev_hash) + s.uint32 + s.uint16 + utils.get_var_size(self.data) + 1 + len(self.witness))
def __len__(self): return utils.get_var_size(self.filter) + s.uint8 + s.uint32
def __len__(self): # calculate the varint length that needs to be inserted before the transaction objects. magic_len = utils.get_var_size(len(self.transactions)) txs_len = sum([len(t) for t in self.transactions]) return super(Block, self).__len__() + magic_len + len(self.consensus_data) + txs_len
def __len__(self): """ Get the total size in bytes of the object. """ return s.uint32 + s.uint32 + s.uint32 + s.uint32 + utils.get_var_size(self.user_agent) + \ utils.get_var_size(self.capabilities)
def __len__(self): size = super(TrimmedBlock, self).__len__() size += utils.get_var_size(self.hashes) if self.consensus_data: size += len(self.consensus_data) return size
def __len__(self): # calculate the varint length that needs to be inserted before the transaction objects. magic_len = utils.get_var_size(len(self.transactions)) txs_len = sum([len(t) for t in self.transactions]) return len(self.header) + magic_len + txs_len
def test_not_supported_objects(self): with self.assertRaises(ValueError) as context: utils.get_var_size(object()) self.assertIn("NOT SUPPORTED", str(context.exception))
def __len__(self): return super(MerkleBlockPayload, self).__len__() + s.uint32 + utils.get_var_size(self.hashes) + \ utils.get_var_size(self.flags)
def test_varsize_int(self): self.assertEqual(1, utils.get_var_size(0xFC)) self.assertEqual(3, utils.get_var_size(0xFD)) self.assertEqual(3, utils.get_var_size(0xFFFF)) self.assertEqual(5, utils.get_var_size(0xFFFF + 1))
def __len__(self): return utils.get_var_size(str(self.to_json()).replace(' ', ''))
def __len__(self): return utils.get_var_size(self.invocation_script) + utils.get_var_size( self.verification_script)
def __len__(self): return len(self.header) + s.uint32 + utils.get_var_size(self.hashes) + utils.get_var_size(self.flags)
def __len__(self): return utils.get_var_size(self.data)
def __len__(self): return utils.get_var_size(self.headers)
def __len__(self): return utils.get_var_size(self.value)
def __len__(self): return s.uint8 + utils.get_var_size(self.data)
def __len__(self): return utils.get_var_size(self.primary_index) + s.uint64
def __len__(self): return (utils.get_var_size(self.category) + s.uint32 + s.uint32 + s.uint160 + utils.get_var_size(self.data) + 1 + len(self.witness))
def __len__(self): return (s.uint8 + s.uint32 + s.uint64 + s.uint64 + s.uint32 + utils.get_var_size(self.attributes) + utils.get_var_size(self.signers) + utils.get_var_size(self.script) + utils.get_var_size(self.witnesses))
def __len__(self): return utils.get_var_size(self.script) + len(self.manifest)