def from_human(cls, data): hex_str = [] d = data.split() while 1: if len(d) == 0: break word = d[0] d = d[1:] if word.startswith('PUSHDATA'): continue opcode = OPCODES_BY_NAME.get(word) if opcode: hex_str.append(hex(opcode)[2:]) continue # data to be pushed pushdata = word try: i = int(pushdata, 16) if pushdata.startswith('0x'): pushdata = pushdata[2:] if len(pushdata) % 2 != 0: pushdata = ''.join(['0', pushdata]) except Exception: pushdata = word.encode('hex') hex_str.append(push_script(pushdata)) hex_str = ''.join(hex_str) return cls(hex_str.decode('hex'))
def from_human(cls, data): hex_str = [] d = data.split() while 1: if len(d) == 0: break word = d[0] d = d[1:] if word.startswith("PUSHDATA"): continue found = False accepted_forms = [word] try: a = int(word) except ValueError: accepted_forms.append("".join(["OP_", word])) # e.g. "OP_DUP" and "DUP" are both valid for i in accepted_forms: opcode = OPCODES_BY_NAME.get(i) if opcode: found = True hex_str.append(hex(opcode)[2:]) if found: continue # data to be pushed pushdata = word try: i = int(pushdata, 16) if pushdata.startswith("0x"): pushdata = pushdata[2:] if len(pushdata) % 2 != 0: pushdata = "".join(["0", pushdata]) except Exception: pushdata = word.encode("hex") hex_str.append(push_script(pushdata)) hex_str = "".join(hex_str) return cls(hex_str.decode("hex"))
def from_human(cls, data): hex_str = [] d = data.split() while 1: if len(d) == 0: break word = d[0] d = d[1:] if word.startswith('PUSHDATA'): continue found = False accepted_forms = [word] try: a = int(word) except ValueError: accepted_forms.append(''.join(['OP_', word])) # e.g. "OP_DUP" and "DUP" are both valid for i in accepted_forms: opcode = OPCODES_BY_NAME.get(i) if opcode: found = True hex_str.append(hex(opcode)[2:]) if found: continue # data to be pushed pushdata = word try: i = int(pushdata, 16) if pushdata.startswith('0x'): pushdata = pushdata[2:] if len(pushdata) % 2 != 0: pushdata = ''.join(['0', pushdata]) except Exception: pushdata = word.encode('hex') hex_str.append(push_script(pushdata)) hex_str = ''.join(hex_str) return cls(hex_str.decode('hex'))
def from_human(cls, data): hex_str = [] try: d = shlex.split(data, posix=False) except Exception: d = data.split() while 1: if len(d) == 0: break word = d[0] d = d[1:] if word.startswith('PUSHDATA'): continue opcode = opcodes.opcodes_by_name.get(word) if opcode is not None: hex_str.append( format_hex_string(hex(opcode), with_prefix=False)) continue # data to be pushed pushdata = word # Make sure hex is formatted. if is_hex(pushdata): if pushdata.startswith('0x'): pushdata = pushdata[2:] if len(pushdata) % 2 != 0: pushdata = ''.join(['0', pushdata]) # Hex-encode text. else: if pushdata.startswith('"') and pushdata.endswith('"'): pushdata = pushdata[1:-1] pushdata = pushdata.encode('hex') hex_str.append(push_script(pushdata)) hex_str = ''.join(hex_str) return cls(hex_str.decode('hex'))
def from_human(cls, data): hex_str = [] try: d = shlex.split(data, posix=False) except Exception: d = data.split() while 1: if len(d) == 0: break word = d[0] d = d[1:] if word.startswith('PUSHDATA'): continue opcode = opcodes.opcodes_by_name.get(word) if opcode is not None: hex_str.append(format_hex_string(hex(opcode), with_prefix=False)) continue # data to be pushed pushdata = word # Make sure hex is formatted. if is_hex(pushdata): if pushdata.startswith('0x'): pushdata = pushdata[2:] if len(pushdata) % 2 != 0: pushdata = ''.join(['0', pushdata]) # Hex-encode text. else: if pushdata.startswith('"') and pushdata.endswith('"'): pushdata = pushdata[1:-1] pushdata = pushdata.encode('hex') hex_str.append(push_script(pushdata)) hex_str = ''.join(hex_str) return cls(hex_str.decode('hex'))