def from_serialized_data(ptr, data): try: ptr, sign = bbclib.get_n_byte_int(ptr, 1, data) ptr, numerator = bbclib.get_n_byte_int(ptr, 2, data) ptr, denominator = bbclib.get_n_byte_int(ptr, 2, data) except: raise if sign > 0: numerator *= -1 return ptr, Fraction(numerator, denominator)
def from_serialized_data(ptr, data): try: ptr, condition = bbclib.get_n_byte_int(ptr, 1, data) ptr, type = bbclib.get_n_byte_int(ptr, 1, data) ptr, rate = Fraction.from_serialized_data(ptr, data) ptr, rate_to_stop = Fraction.from_serialized_data(ptr, data) ptr, time_unit = bbclib.get_n_byte_int(ptr, 8, data) ptr, expire_after = bbclib.get_n_byte_int(ptr, 8, data) except: raise return ptr, Variation(condition, type, rate, rate_to_stop, time_unit, expire_after)
def from_serialized_data(ptr, data): if ptr >= len(data): return ptr, None try: ptr, command = bbclib.get_n_byte_int(ptr, 1, data) ptr, num_pubkeys = bbclib.get_n_byte_int(ptr, 2, data) public_keys = [] for i in range(num_pubkeys): ptr, size = bbclib.get_n_byte_int(ptr, 2, data) ptr, pubkey = bbclib.get_n_bytes(ptr, size, data) public_keys.append(bytes(pubkey)) except: raise return ptr, Directive(command, public_keys)
def from_serialized_data(ptr, data): try: ptr, version = bbclib.get_n_byte_int(ptr, 2, data) ptr, size = bbclib.get_n_byte_int(ptr, 2, data) ptr, v = bbclib.get_n_bytes(ptr, size, data) name = v.decode() ptr, size = bbclib.get_n_byte_int(ptr, 1, data) ptr, v = bbclib.get_n_bytes(ptr, size, data) symbol = v.decode() ptr, decimal = bbclib.get_n_byte_int(ptr, 1, data) ptr, count = bbclib.get_n_byte_int(ptr, 1, data) variation_specs = [] for i in range(count): ptr, variation = Variation.from_serialized_data(ptr, data) variation_specs.append(variation) ptr, v = bbclib.get_n_byte_int(ptr, 2, data) option_witnesses_required = \ v & CurrencySpec.O_BIT_WITNESSES_REQUIRED != 0 option_expiration_rebased = \ v & CurrencySpec.O_BIT_EXPIRATION_REBASED != 0 option_conditions_irreversible = \ v & CurrencySpec.O_BIT_CONDITIONS_IRREVERSIBLE != 0 except: raise return ptr, CurrencySpec( name=name, symbol=symbol, decimal=decimal, variation_specs=variation_specs, option_witnesses_required=option_witnesses_required, option_expiration_rebased=option_expiration_rebased, option_conditions_irreversible=option_conditions_irreversible, version=version)
def from_serialized_data(ptr, data): try: ptr, type = bbclib.get_n_byte_int(ptr, 1, data) ptr, value_specified = bbclib.get_n_byte_int(ptr, 8, data) ptr, time_of_origin = bbclib.get_n_byte_int(ptr, 8, data) ptr, count = bbclib.get_n_byte_int(ptr, 1, data) variation_specs = [] for i in range(count): ptr, variation = Variation.from_serialized_data(ptr, data) variation_specs.append(variation) except: raise if type == BaseAssetBody.T_VALUE: obj = ValueAssetBody(value_specified, time_of_origin, variation_specs) elif type == BaseAssetBody.T_CHANGE: obj = ChangeAssetBody(value_specified, time_of_origin, variation_specs) elif type == BaseAssetBody.T_ISSUED: obj = IssuedAssetBody(value_specified, time_of_origin, variation_specs) return ptr, obj
def from_serialized_data(ptr, data): try: ptr, condition = bbclib.get_n_byte_int(ptr, 1, data) except: raise return ptr, ConditionAssetBody(condition)