def parse(script): f = script, 0 while bitcoin_data.size(f): opcode_str, f = bitcoin_data.read(f, 1) opcode = ord(opcode_str) opcode_name, read_func = opcodes[opcode] opcode_arg, f = read_func(f) yield opcode_name, opcode_arg
def _(f): length_str, f = bitcoin_data.read(f, size_len) length = bases.string_to_natural(length_str[::-1].lstrip(chr(0))) data, f = bitcoin_data.read(f, length) return data, f
def protoPUSH(length): return lambda f: bitcoin_data.read(f, length)