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 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'))