Пример #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'))
Пример #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'))
Пример #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"))
Пример #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'))
Пример #5
0
    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'))
Пример #6
0
    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'))