def serialize_allow_trust_op(w, msg: StellarAllowTrustOp): # trustor account (the account being allowed to access the asset) writers.write_pubkey(w, msg.trusted_account) writers.write_uint32(w, msg.asset_type) _serialize_asset_code(w, msg.asset_type, msg.asset_code) writers.write_bool(w, msg.is_authorized)
def write_manage_data_op(w, msg: StellarManageDataOp): if len(msg.key) > 64: raise ProcessError("Stellar: max length of a key is 64 bytes") writers.write_string(w, msg.key) writers.write_bool(w, bool(msg.value)) if msg.value: writers.write_string(w, msg.value)
def _timebounds(w: bytearray, start: int, end: int): # timebounds are only present if timebounds_start or timebounds_end is non-zero if start or end: writers.write_bool(w, True) # timebounds are sent as uint32s since that's all we can display, but they must be hashed as 64bit writers.write_uint64(w, start) writers.write_uint64(w, end) else: writers.write_bool(w, False)
async def _timebounds(ctx, w: bytearray, start: int, end: int): # timebounds are only present if timebounds_start or timebounds_end is non-zero if start or end: # confirm dialog await layout.require_confirm_timebounds(ctx, start, end) writers.write_bool(w, True) # timebounds are sent as uint32s since that's all we can display, but they must be hashed as 64bit writers.write_uint64(w, start or 0) writers.write_uint64(w, end or 0) else: writers.write_bool(w, False)
def serialize_set_options_op(w, msg: StellarSetOptionsOp): # inflation destination writers.write_bool(w, bool(msg.inflation_destination_account)) if msg.inflation_destination_account: writers.write_pubkey(w, msg.inflation_destination_account) # clear flags writers.write_bool(w, bool(msg.clear_flags)) if msg.clear_flags: writers.write_uint32(w, msg.clear_flags) # set flags writers.write_bool(w, bool(msg.set_flags)) if msg.set_flags: writers.write_uint32(w, msg.set_flags) # account thresholds writers.write_bool(w, bool(msg.master_weight)) if msg.master_weight: writers.write_uint32(w, msg.master_weight) writers.write_bool(w, bool(msg.low_threshold)) if msg.low_threshold: writers.write_uint32(w, msg.low_threshold) writers.write_bool(w, bool(msg.medium_threshold)) if msg.medium_threshold: writers.write_uint32(w, msg.medium_threshold) writers.write_bool(w, bool(msg.high_threshold)) if msg.high_threshold: writers.write_uint32(w, msg.high_threshold) # home domain writers.write_bool(w, bool(msg.home_domain)) if msg.home_domain: if len(msg.home_domain) > 32: raise ProcessError( "Stellar: max length of a home domain is 32 bytes") writers.write_string(w, msg.home_domain) # signer writers.write_bool(w, bool(msg.signer_type)) if msg.signer_type: # signer type writers.write_uint32(w, msg.signer_type) writers.write_bytes(w, msg.signer_key) writers.write_uint32(w, msg.signer_weight)
def serialize_account(w, source_account: str): if source_account is None: writers.write_bool(w, False) return writers.write_pubkey(w, source_account)
def write_set_options_op(w, msg: StellarSetOptionsOp): # inflation destination if msg.inflation_destination_account is None: writers.write_bool(w, False) else: writers.write_bool(w, True) writers.write_pubkey(w, msg.inflation_destination_account) # clear flags _write_set_options_int(w, msg.clear_flags) # set flags _write_set_options_int(w, msg.set_flags) # account thresholds _write_set_options_int(w, msg.master_weight) _write_set_options_int(w, msg.low_threshold) _write_set_options_int(w, msg.medium_threshold) _write_set_options_int(w, msg.high_threshold) # home domain if msg.home_domain is None: writers.write_bool(w, False) else: writers.write_bool(w, True) if len(msg.home_domain) > 32: raise ProcessError( "Stellar: max length of a home domain is 32 bytes") writers.write_string(w, msg.home_domain) # signer if msg.signer_type is None: writers.write_bool(w, False) elif msg.signer_type in consts.SIGN_TYPES: writers.write_bool(w, True) writers.write_uint32(w, msg.signer_type) writers.write_bytes_unchecked(w, msg.signer_key) writers.write_uint32(w, msg.signer_weight) else: raise ProcessError("Stellar: unknown signer type")
def _write_set_options_int(w, value: int): if value is None: writers.write_bool(w, False) else: writers.write_bool(w, True) writers.write_uint32(w, value)