def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) # handle beneficiaries if "beneficiaries" in kwargs and kwargs['beneficiaries']: kwargs['extensions'] = [[ 0, { 'beneficiaries': kwargs['beneficiaries'] } ]] extensions = Array([]) if "extensions" in kwargs and kwargs["extensions"]: extensions = Array( [CommentOptionExtensions(o) for o in kwargs["extensions"]]) super(Comment_options, self).__init__( OrderedDict([ ('author', String(kwargs["author"])), ('permlink', String(kwargs["permlink"])), ('max_accepted_payout', Amount(kwargs["max_accepted_payout"], prefix=prefix)), ('percent_steem_dollars', Uint16(int(kwargs["percent_steem_dollars"]))), ('allow_votes', Bool(bool(kwargs["allow_votes"]))), ('allow_curation_rewards', Bool(bool(kwargs["allow_curation_rewards"]))), ('extensions', extensions), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] # handle beneficiaries extensions = Array([]) beneficiaries = kwargs.get('beneficiaries') if beneficiaries and type(beneficiaries) == list: ext_obj = [0, {'beneficiaries': beneficiaries}] ext = CommentOptionExtensions(ext_obj) extensions = Array([ext]) super(Comment_options, self).__init__( OrderedDict([ ('author', String(kwargs["author"])), ('permlink', String(kwargs["permlink"])), ('max_accepted_payout', Amount(kwargs["max_accepted_payout"])), ('percent_steem_dollars', Uint16(int(kwargs["percent_steem_dollars"]))), ('allow_votes', Bool(bool(kwargs["allow_votes"]))), ('allow_curation_rewards', Bool(bool(kwargs["allow_curation_rewards"]))), ('extensions', extensions), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] if "json" in kwargs and kwargs["json"]: if (isinstance(kwargs["json"], dict) or isinstance(kwargs["json"], list)): js = json.dumps(kwargs["json"]) else: js = kwargs["json"] if len(kwargs["id"]) > 32: raise Exception("'id' too long") super(Custom_json, self).__init__( OrderedDict([ ('required_auths', Array([String(o) for o in kwargs["required_auths"]])), ('required_posting_auths', Array([ String(o) for o in kwargs["required_posting_auths"] ])), ('id', String(kwargs["id"])), ('json', String(js)), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) extensions = Array([]) if "end_date" in kwargs and kwargs["end_date"]: extension = { 'type': 'update_proposal_end_date', 'value': { 'end_date': kwargs["end_date"] } } extensions = Array([UpdateProposalExtensions(extension)]) super(Update_proposal, self).__init__( OrderedDict([('proposal_id', Uint64(kwargs["proposal_id"])), ('creator', String(kwargs["creator"])), ('daily_pay', Amount(kwargs["daily_pay"], prefix=prefix)), ('subject', String(kwargs["subject"])), ('permlink', String(kwargs["permlink"])), ('extensions', extensions)]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) extensions = Array([]) proposal_ids = [] for e in kwargs["proposal_ids"]: proposal_ids.append(Uint64(e)) super(Remove_proposal, self).__init__( OrderedDict([('proposal_owner', String(kwargs["voter"])), ('proposal_ids', Array(proposal_ids)), ('extensions', extensions)]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] extensions = Array([]) proposal_ids = [] for e in kwargs["proposal_ids"]: proposal_ids.append(Uint64(e)) super(Update_proposal_votes, self).__init__( OrderedDict([('voter', String(kwargs["voter"])), ('proposal_ids', Array(proposal_ids)), ('approve', Bool(kwargs["approve"])), ('extensions', extensions)]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) if not len(kwargs["new_account_name"]) <= 16: raise AssertionError("Account name must be at most 16 chars long") meta = "" if "json_metadata" in kwargs and kwargs["json_metadata"]: if isinstance(kwargs["json_metadata"], dict): meta = json.dumps(kwargs["json_metadata"]) else: meta = kwargs["json_metadata"] super(Create_claimed_account, self).__init__( OrderedDict([ ('creator', String(kwargs["creator"])), ('new_account_name', String(kwargs["new_account_name"])), ('owner', Permission(kwargs["owner"], prefix=prefix)), ('active', Permission(kwargs["active"], prefix=prefix)), ('posting', Permission(kwargs["posting"], prefix=prefix)), ('memo_key', PublicKey(kwargs["memo_key"], prefix=prefix)), ('json_metadata', String(meta)), ('extensions', Array([])), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.pop("prefix", default_prefix) extensions = Array([]) props = {} for k in kwargs["props"]: if "key" == k[0]: block_signing_key = (PublicKey(k[1], prefix=prefix)) props["key"] = repr(block_signing_key) elif "new_signing_key" == k[0]: new_signing_key = (PublicKey(k[1], prefix=prefix)) props["new_signing_key"] = repr(new_signing_key) for k in kwargs["props"]: if k[0] in ["key", "new_signing_key"]: continue if isinstance(k[1], str) and PY3: is_hex = re.fullmatch(r'[0-9a-fA-F]+', k[1] or '') is not None elif isinstance(k[1], str) and PY2: is_hex = re.match(r'[0-9a-fA-F]+', k[1] or '') is not None else: is_hex = False if isinstance(k[1], int) and k[0] in ["account_subsidy_budget", "account_subsidy_decay", "maximum_block_size"]: props[k[0]] = (hexlify(Uint32(k[1]).__bytes__())).decode() elif isinstance(k[1], int) and k[0] in ["sbd_interest_rate"]: props[k[0]] = (hexlify(Uint16(k[1]).__bytes__())).decode() elif not isinstance(k[1], str) and k[0] in ["account_creation_fee"]: props[k[0]] = (hexlify(Amount(k[1], prefix=prefix).__bytes__())).decode() elif not is_hex and isinstance(k[1], str) and k[0] in ["account_creation_fee"]: props[k[0]] = (hexlify(Amount(k[1], prefix=prefix).__bytes__())).decode() elif not isinstance(k[1], str) and k[0] in ["sbd_exchange_rate"]: if 'prefix' not in k[1]: k[1]['prefix'] = prefix props[k[0]] = (hexlify(ExchangeRate(k[1]).__bytes__())).decode() elif not is_hex and k[0] in ["url"]: props[k[0]] = (hexlify(String(k[1]).__bytes__())).decode() else: props[k[0]] = (k[1]) props_list = [] for k in props: props_list.append(([String(k), HexString(props[k])])) props_list = sorted( props_list, key=lambda x: str(x[0]), reverse=False, ) map_props = Map(props_list) super(Witness_set_properties, self).__init__(OrderedDict([ ('owner', String(kwargs["owner"])), ('props', map_props), ('extensions', extensions), ]))
def __init__(self, d): if isinstance(d, string_types): self.amount, self.asset = d.strip().split(" ") self.precision = None for c in known_chains: if self.precision is not None: continue for asset in known_chains[c]["chain_assets"]: if self.precision is not None: continue if asset["symbol"] == self.asset: self.precision = asset["precision"] if self.precision is None: raise Exception("Asset unknown") self.amount = int(float(self.amount) * 10**self.precision) self.str_repr = '{:.{}f} {}'.format( (float(self.amount) / 10**self.precision), self.precision, self.asset) elif isinstance(d, list): self.amount = d[0] self.asset = d[2] self.precision = d[1] a = Array([String(d[0]), d[1], d[2]]) self.str_repr = str(a.__str__()) elif isinstance(d, dict) and "nai" in d: self.asset = None for c in known_chains: for asset in known_chains[c]["chain_assets"]: if asset["asset"] == d["nai"]: self.asset = asset["symbol"] if not self.asset: raise ValueError("Unknown NAI, cannot resolve symbol") self.amount = d["amount"] self.precision = d["precision"] self.str_repr = json.dumps(d) else: self.amount = d.amount self.asset = d.symbol self.precision = d.asset["precision"] self.amount = int(float(self.amount) * 10**self.precision) self.str_repr = str(d) # json.dumps((d.json()))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] super(Change_recovery_account, self).__init__( OrderedDict([ ('account_to_recover', String(kwargs["account_to_recover"])), ('new_recovery_account', String(kwargs["new_recovery_account"])), ('extensions', Array([])), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] super(Custom, self).__init__(OrderedDict([ ('required_auths', Array([String(o) for o in kwargs["required_auths"]])), ('id', Uint16(int(kwargs["id"]))), ('data', String(kwargs["data"])), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) super(Claim_account, self).__init__( OrderedDict([ ('creator', String(kwargs["creator"])), ('fee', Amount(kwargs["fee"], prefix=prefix)), ('extensions', Array([])), ]))
def __init__(self, *args, **kwargs): if isArgsThisClass(self, args): self.data = args[0].data else: if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] super(Beneficiaries, self).__init__( OrderedDict([ ('beneficiaries', Array([Beneficiary(o) for o in kwargs["beneficiaries"]])), ]))
def sign(self, path="48'/13'/0'/0'/0'", chain=u"STEEM"): from ledgerblue.comm import getDongle dongle = getDongle(True) apdu_list = self.build_apdu(path, chain) for apdu in apdu_list: result = dongle.exchange(py23_bytes(apdu)) dongle.close() sigs = [] signature = result sigs.append(Signature(signature)) self.data["signatures"] = Array(sigs) return self
def __init__(self, d): if isinstance(d, string_types): self.amount, self.asset = d.strip().split(" ") if self.asset in asset_precision: self.precision = asset_precision[self.asset] else: raise Exception("Asset unknown") self.amount = int(float(self.amount) * 10 ** self.precision) self.str_repr = '{:.{}f} {}'.format((float(self.amount) / 10 ** self.precision), self.precision, self.asset) elif isinstance(d, list): self.amount = d[0] self.asset = d[2] self.precision = d[1] a = Array([String(d[0]), d[1], d[2]]) self.str_repr = str(a.__str__()) else: self.amount = d.amount self.asset = d.symbol self.precision = d.asset["precision"] self.amount = int(float(self.amount) * 10 ** self.precision) self.str_repr = json.dumps((d.json()))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) new_owner = Permission(kwargs["new_owner_authority"], prefix=prefix) super(Request_account_recovery, self).__init__( OrderedDict([ ('recovery_account', String(kwargs["recovery_account"])), ('account_to_recover', String(kwargs["account_to_recover"])), ('new_owner_authority', new_owner), ('extensions', Array([])), ]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) extensions = Array([]) if "owner" in kwargs: owner = Optional(Permission(kwargs["owner"], prefix=prefix)) else: owner = Optional(None) if "active" in kwargs: active = Optional(Permission(kwargs["active"], prefix=prefix)) else: active = Optional(None) if "posting" in kwargs: posting = Optional(Permission(kwargs["posting"], prefix=prefix)) else: posting = Optional(None) if "memo_key" in kwargs: memo_key = Optional(PublicKey(kwargs["memo_key"], prefix=prefix)) else: memo_key = Optional(None) meta = "" if "json_metadata" in kwargs and kwargs["json_metadata"]: if isinstance(kwargs["json_metadata"], dict): meta = json.dumps(kwargs["json_metadata"]) else: meta = kwargs["json_metadata"] posting_meta = "" if "posting_json_metadata" in kwargs and kwargs[ "posting_json_metadata"]: if isinstance(kwargs["posting_json_metadata"], dict): posting_meta = json.dumps(kwargs["posting_json_metadata"]) else: posting_meta = kwargs["posting_json_metadata"] super(Account_update2, self).__init__( OrderedDict([('account', String(kwargs["account"])), ('owner', owner), ('active', active), ('posting', posting), ('memo_key', memo_key), ('json_metadata', String(meta)), ('posting_json_metadata', String(posting_meta)), ('extensions', extensions)]))
def __init__(self, *args, **kwargs): if check_for_class(self, args): return if len(args) == 1 and len(kwargs) == 0: kwargs = args[0] prefix = kwargs.get("prefix", default_prefix) extensions = Array([]) super(Create_proposal, self).__init__( OrderedDict([('creator', String(kwargs["creator"])), ('receiver', String(kwargs["receiver"])), ('start_date', PointInTime(kwargs["start_date"])), ('end_date', PointInTime(kwargs["end_date"])), ('daily_pay', Amount(kwargs["daily_pay"], prefix=prefix)), ('subject', String(kwargs["subject"])), ('permlink', String(kwargs["permlink"])), ('extensions', extensions)]))
def __init__(self, d, prefix=default_prefix, replace_hive_by_steem=True): self.replace_hive_by_steem = replace_hive_by_steem if isinstance(d, string_types): self.amount, self.symbol = d.strip().split(" ") self.precision = None for c in known_chains: if self.precision is not None: continue if known_chains[c]["prefix"] != prefix: continue for asset in known_chains[c]["chain_assets"]: if self.precision is not None: continue if asset["symbol"] == self.symbol: self.precision = asset["precision"] self.asset = asset["asset"] elif asset["asset"] == self.symbol: self.precision = asset["precision"] self.asset = asset["asset"] if self.precision is None: raise Exception("Asset unknown") self.amount = round(float(self.amount) * 10**self.precision) # Workaround to allow transfers in HIVE if self.symbol == "HBD" and replace_hive_by_steem: self.symbol = "SBD" elif self.symbol == "HIVE" and replace_hive_by_steem: self.symbol = "STEEM" self.str_repr = '{:.{}f} {}'.format( (float(self.amount) / 10**self.precision), self.precision, self.symbol) elif isinstance(d, list): self.amount = d[0] self.asset = d[2] self.precision = d[1] self.symbol = None for c in known_chains: if known_chains[c]["prefix"] != prefix: continue for asset in known_chains[c]["chain_assets"]: if asset["asset"] == self.asset: self.symbol = asset["symbol"] if self.symbol is None: raise ValueError("Unknown NAI, cannot resolve symbol") a = Array([String(d[0]), d[1], d[2]]) self.str_repr = str(a.__str__()) elif isinstance(d, dict) and "nai" in d: self.asset = d["nai"] self.symbol = None for c in known_chains: if known_chains[c]["prefix"] != prefix: continue for asset in known_chains[c]["chain_assets"]: if asset["asset"] == d["nai"]: self.symbol = asset["symbol"] if self.symbol is None: raise ValueError("Unknown NAI, cannot resolve symbol") self.amount = d["amount"] self.precision = d["precision"] self.str_repr = json.dumps(d) else: self.amount = d.amount self.symbol = d.symbol # Workaround to allow transfers in HIVE if self.symbol == "HBD" and replace_hive_by_steem: self.symbol = "SBD" elif self.symbol == "HIVE" and replace_hive_by_steem: self.symbol = "STEEM" self.asset = d.asset["asset"] self.precision = d.asset["precision"] self.amount = round(float(self.amount) * 10**self.precision) self.str_repr = str(d)