Ejemplo n.º 1
0
    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'))
Ejemplo n.º 2
0
    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'))
Ejemplo n.º 3
0
    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"))
Ejemplo n.º 4
0
    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'))