Esempio n. 1
0
 def create_wrapper(msg):
     ext.set_balance(msg.sender, ext.get_balance(msg.sender) - msg.value)
     sender = msg.sender.decode('hex') if len(msg.sender) == 40 else msg.sender
     nonce = u.encode_int(ext._block.get_nonce(msg.sender))
     addr = u.sha3(rlp.encode([sender, nonce]))[12:].encode('hex')
     hexdata = msg.data.extract_all().encode('hex')
     apply_message_calls.append(dict(gasLimit=msg.gas, value=msg.value,
                                     destination='', data=hexdata))
     return 1, msg.gas, addr
Esempio n. 2
0
 def create_wrapper(msg):
     ext.set_balance(msg.sender, ext.get_balance(msg.sender) - msg.value)
     sender = msg.sender.decode('hex') if len(
         msg.sender) == 40 else msg.sender
     nonce = u.encode_int(ext._block.get_nonce(msg.sender))
     addr = u.sha3(rlp.encode([sender, nonce]))[12:].encode('hex')
     hexdata = msg.data.extract_all().encode('hex')
     apply_message_calls.append(
         dict(gasLimit=msg.gas,
              value=msg.value,
              destination='',
              data=hexdata))
     return 1, msg.gas, addr
Esempio n. 3
0
def spvstorage(addr, index):
    prf1 = chain_manager.head.state.produce_spv_proof(addr.decode('hex'))
    storetree = chain_manager.head.get_storage(addr)
    prf2 = storetree.produce_spv_proof(utils.zpad(utils.encode_int(index), 32))
    return rlp.encode(prf1 + prf2).encode('hex')
Esempio n. 4
0
def generate_op_tests():
    outs = {}
    for opcode, (name, inargs, outargs, _) in opcodes.opcodes.items():
     _subid = 0
     for push_depths in push_params:
      for jump_num, code_size in codesize_params:
        if name in ['CALL', 'CREATE', 'CALLCODE', 'LOG', 'POP', 'RETURN', 'STOP', 'INVALID', 'JUMP', 'JUMPI', 'CALLDATALOAD', 'CALLDATACOPY', 'CODECOPY', 'EXTCODECOPY', 'SHA3', 'MLOAD', 'MSTORE', 'MSTORE8', 'SUICIDE']:
            continue
        if name[:3] in ['DUP', 'SWA', 'LOG']:
            continue
        if name == 'SSTORE':
            jump_num /= 10
        c = '\x5b'
        if name[:4] == 'PUSH':
            if push_depths != push_params[0]:
                continue
            for i in range(code_size):
                v = int(name[4:])
                w = random.randrange(256**v)
                c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
        else:
            for i in range(code_size):
                for _ in range(inargs):
                    v = push_depths[i * len(push_depths) // code_size]
                    w = random.randrange(256**v)
                    c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                c += chr(opcode)
                for _ in range(outargs):
                    c += chr(0x50)
        # PUSH1 0 MLOAD . DUP1 . PUSH1 1 ADD PUSH1 0 MSTORE . PUSH2 <jumps> GT PUSH1 0 JUMPI
        c += '\x60\x00\x51' + '\x80' + '\x60\x01\x01\x60\x00\x52' + \
            '\x61'+chr(jump_num // 256) + chr(jump_num % 256) + '\x11\x60\x00\x57'
        o = {
            "callcreates": [],
            "env": {
                "currentCoinbase": "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
                "currentDifficulty": "256",
                "currentGasLimit": "1000000000",
                "currentNumber": "257",
                "currentTimestamp": "1",
                "previousHash": "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
            },
            "exec": {
                "address": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
                "caller": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
                "code": "0x"+c.encode('hex'),
                "data": "0x",
                "gas": "1000000",
                "gasPrice": "100000000000000",
                "origin": "cd1722f3947def4cf144679da39c4c32bdc35681",
                "value": "1000000000000000000"
            },
            "pre": {
                "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
                    "balance": "1000000000000000000",
                    "code": "0x",
                    "nonce": "0",
                    "storage": {
                    }
                }
            },
            "gas": "1000000",
            "logs": [],
            "out": "0x"
        }
        env = o['env']
        pre = o['pre']
        exek = o['exec']
        blk = blocks.Block(db,
                           prevhash=env['previousHash'].decode('hex'),
                           number=int(env['currentNumber']),
                           coinbase=env['currentCoinbase'],
                           difficulty=int(env['currentDifficulty']),
                           gas_limit=int(env['currentGasLimit']),
                           timestamp=int(env['currentTimestamp']))

        # setup state
        for address, h in pre.items():
            blk.set_nonce(address, int(h['nonce']))
            blk.set_balance(address, int(h['balance']))
            blk.set_code(address, h['code'][2:].decode('hex'))
            for k, v in h['storage'].iteritems():
                blk.set_storage_data(address,
                                     u.big_endian_to_int(k[2:].decode('hex')),
                                     u.big_endian_to_int(v[2:].decode('hex')))

        # execute transactions
        sender = exek['caller']  # a party that originates a call
        recvaddr = exek['address']
        tx = transactions.Transaction(
            nonce=blk._get_acct_item(exek['caller'], 'nonce'),
            gasprice=int(exek['gasPrice']),
            startgas=int(exek['gas']),
            to=recvaddr,
            value=int(exek['value']),
            data=exek['data'][2:].decode('hex'))
        tx.sender = sender

        ext = pb.VMExt(blk, tx)

        def blkhash(n):
            if n >= ext.block_number or n < ext.block_number - 256:
                return ''
            else:
                return u.sha3(str(n))

        ext.block_hash = blkhash

        msg = vm.Message(tx.sender, tx.to, tx.value, tx.startgas,
                         vm.CallData([ord(x) for x in tx.data]))
        success, gas_remained, output = \
            vm.vm_execute(ext, msg, exek['code'][2:].decode('hex'))

        o['post'] = blk.to_dict(True)['state']
        outs[name+str(_subid)] = o
        _subid += 1
    return outs
Esempio n. 5
0
def generate_op_tests():
    outs = {}
    for opcode, (name, inargs, outargs, _) in opcodes.opcodes.items():
        _subid = 0
        for push_depths in push_params:
            for jump_num, code_size in codesize_params:
                if name in [
                        'CALL', 'CREATE', 'CALLCODE', 'LOG', 'POP', 'RETURN',
                        'STOP', 'INVALID', 'JUMP', 'JUMPI', 'CALLDATALOAD',
                        'CALLDATACOPY', 'CODECOPY', 'EXTCODECOPY', 'SHA3',
                        'MLOAD', 'MSTORE', 'MSTORE8', 'SUICIDE'
                ]:
                    continue
                if name[:3] in ['DUP', 'SWA', 'LOG']:
                    continue
                if name == 'SSTORE':
                    jump_num /= 10
                c = '\x5b'
                if name[:4] == 'PUSH':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        v = int(name[4:])
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                else:
                    for i in range(code_size):
                        for _ in range(inargs):
                            v = push_depths[i * len(push_depths) // code_size]
                            w = random.randrange(256**v)
                            c += chr(0x5f + v) + utils.zpad(
                                utils.encode_int(w), v)
                        c += chr(opcode)
                        for _ in range(outargs):
                            c += chr(0x50)
                # PUSH1 0 MLOAD . DUP1 . PUSH1 1 ADD PUSH1 0 MSTORE . PUSH2 <jumps> GT PUSH1 0 JUMPI
                c += '\x60\x00\x51' + '\x80' + '\x60\x01\x01\x60\x00\x52' + \
                    '\x61'+chr(jump_num // 256) + chr(jump_num % 256) + '\x11\x60\x00\x57'
                o = {
                    "callcreates": [],
                    "env": {
                        "currentCoinbase":
                        "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
                        "currentDifficulty":
                        "256",
                        "currentGasLimit":
                        "1000000000",
                        "currentNumber":
                        "257",
                        "currentTimestamp":
                        "1",
                        "previousHash":
                        "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
                    },
                    "exec": {
                        "address": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
                        "caller": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
                        "code": "0x" + c.encode('hex'),
                        "data": "0x",
                        "gas": "1000000",
                        "gasPrice": "100000000000000",
                        "origin": "cd1722f3947def4cf144679da39c4c32bdc35681",
                        "value": "1000000000000000000"
                    },
                    "pre": {
                        "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
                            "balance": "1000000000000000000",
                            "code": "0x",
                            "nonce": "0",
                            "storage": {}
                        }
                    },
                    "gas": "1000000",
                    "logs": [],
                    "out": "0x"
                }
                env = o['env']
                pre = o['pre']
                exek = o['exec']
                blk = blocks.Block(db,
                                   prevhash=env['previousHash'].decode('hex'),
                                   number=int(env['currentNumber']),
                                   coinbase=env['currentCoinbase'],
                                   difficulty=int(env['currentDifficulty']),
                                   gas_limit=int(env['currentGasLimit']),
                                   timestamp=int(env['currentTimestamp']))

                # setup state
                for address, h in pre.items():
                    blk.set_nonce(address, int(h['nonce']))
                    blk.set_balance(address, int(h['balance']))
                    blk.set_code(address, h['code'][2:].decode('hex'))
                    for k, v in h['storage'].iteritems():
                        blk.set_storage_data(
                            address, u.big_endian_to_int(k[2:].decode('hex')),
                            u.big_endian_to_int(v[2:].decode('hex')))

                # execute transactions
                sender = exek['caller']  # a party that originates a call
                recvaddr = exek['address']
                tx = transactions.Transaction(
                    nonce=blk._get_acct_item(exek['caller'], 'nonce'),
                    gasprice=int(exek['gasPrice']),
                    startgas=int(exek['gas']),
                    to=recvaddr,
                    value=int(exek['value']),
                    data=exek['data'][2:].decode('hex'))
                tx.sender = sender

                ext = pb.VMExt(blk, tx)

                def blkhash(n):
                    if n >= ext.block_number or n < ext.block_number - 256:
                        return ''
                    else:
                        return u.sha3(str(n))

                ext.block_hash = blkhash

                msg = vm.Message(tx.sender, tx.to, tx.value, tx.startgas,
                                 vm.CallData([ord(x) for x in tx.data]))
                success, gas_remained, output = \
                    vm.vm_execute(ext, msg, exek['code'][2:].decode('hex'))

                o['post'] = blk.to_dict(True)['state']
                outs[name + str(_subid)] = o
                _subid += 1
    return outs
def generate_op_tests():
    out = {}
    for opcode, (name, inargs, outargs, _) in opcodes.items():
        _subid = 0
        for push_depths in push_params:
            for jump_num, code_size in codesize_params:
                if name in [
                        'DELEGATECALL', 'LOG0', 'LOG1', 'LOG2', 'LOG3', 'LOG4',
                        'CALL', 'CREATE', 'CALLCODE', 'RETURNDATACOPY',
                        'RETURNDATASIZE', 'CALLBLACKBOX', 'STATICCALL',
                        'REVERT', 'RETURN', 'STOP', 'INVALID', 'JUMP', 'JUMPI',
                        'SUICIDE'
                ]:
                    continue
                if name == 'SSTORE':
                    jump_num /= 10
                c = ''
                if name[:4] == 'PUSH':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        v = int(name[4:])
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                elif name[:3] == 'DUP':
                    if push_depths != push_params[0]:
                        continue
                    for _ in range(inargs):
                        v = push_depths[_ * len(push_depths) // code_size]
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    for i in range(code_size):
                        c += chr(opcode)
                    for i in range(outargs):
                        c += chr(0x50)
                elif name[:4] == "SWAP":
                    if push_depths != push_params[0]:
                        continue
                    for _ in range(inargs):
                        v = push_depths[_ * len(push_depths) // code_size]
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    for i in range(code_size):
                        c += chr(opcode)
                    for i in range(outargs):
                        c += chr(0x50)
                elif name == "POP":
                    if push_depths != push_params[0]:
                        continue
                    for _ in range(code_size):
                        v = push_depths[_ * len(push_depths) // code_size]
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                        c += '\x50'
                    # for i in range(code_size):
                    #     c += chr(opcode)
                elif name == 'SHA3':
                    if push_depths != push_params[0]:
                        continue
                    v = 32
                    w = random.randrange(256**v)
                    c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    _w = 0
                    c += chr(0x5f + 1) + utils.zpad(utils.encode_int(_w), 1)
                    c += '\x52'
                    c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    _w += 32
                    c += chr(0x5f + 1) + utils.zpad(utils.encode_int(_w), 1)
                    c += '\x52'
                    c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    _w += 64
                    c += chr(0x5f + 1) + utils.zpad(utils.encode_int(_w), 1)
                    c += '\x52'
                    c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    _w += 128
                    c += chr(0x5f + 1) + utils.zpad(utils.encode_int(_w), 1)
                    c += '\x52'
                    # c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    for i in range(code_size):
                        c += chr(0x59)
                        c += '\x60\x00'
                        c += chr(opcode)
                        c += '\x50'
                    c += '\x60\x48' + '\x60\x00' + '\x53' + '\x60\x45' + '\x60\x01' + '\x53' + '\x60\x4c' + '\x60\x02' + '\x53' + '\x60\x4c' + '\x60\x03' + '\x53' + '\x60\x4f' + '\x60\x04' + '\x53' + '\x60\x48' + '\x60\x05' + '\x53' + '\x60\x45' + '\x60\x06' + '\x53' + '\x60\x4c' + '\x60\x07' + '\x53' + '\x60\x4c' + '\x60\x08' + '\x53' + '\x60\x4f' + '\x60\x09' + '\x53' + '\x60\x48' + '\x60\x0a' + '\x53' + '\x60\x45' + '\x60\x0b' + '\x53' + '\x60\x4c' + '\x60\x0c' + '\x53' + '\x60\x4c' + '\x60\x0d' + '\x53' + '\x60\x4f' + '\x60\x0e' + '\x53' + '\x60\x48' + '\x60\x0f' + '\x53' + '\x60\x45' + '\x60\x10' + '\x53' + '\x60\x4c' + '\x60\x11' + '\x53' + '\x60\x4c' + '\x60\x12' + '\x53' + '\x60\x4f' + '\x60\x13' + '\x53' + '\x60\x48' + '\x60\x14' + '\x53' + '\x60\x45' + '\x60\x15' + '\x53' + '\x60\x4c' + '\x60\x16' + '\x53' + '\x60\x4c' + '\x60\x17' + '\x53' + '\x60\x4f' + '\x60\x18' + '\x53' + '\x60\x48' + '\x60\x19' + '\x53' + '\x60\x45' + '\x60\x1a' + '\x53' + '\x60\x4c' + '\x60\x1b' + '\x53' + '\x60\x4c' + '\x60\x1c' + '\x53' + '\x60\x4f' + '\x60\x1d' + '\x53' + '\x60\x48' + '\x60\x1e' + '\x53' + '\x60\x45' + '\x60\x1f' + '\x53' + '\x60\x1f' + '\x60\x00'
                    for i in range(code_size):
                        c += chr(opcode)
                        c += '\x50'
                elif name == 'MLOAD':
                    if push_depths != push_params[0]:
                        continue
                    w = random.randrange(256**32)
                    c += chr(0x7f) + utils.zpad(utils.encode_int(w), 32)
                    c += '\x60\x00' + '\x52' + '\x60\x00'
                    for i in range(code_size):
                        c += chr(opcode)
                        c += '\x50' + '\x60\x00'
                elif name == 'MSTORE':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        v = 32
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                        _w = random.randrange(256**1)
                        c += chr(0x5f + 1) + utils.zpad(
                            utils.encode_int(_w), 1)
                        c += chr(opcode)
                elif name == 'MSTORE8':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        w = random.randrange(256)
                        c += chr(0x5f + 1) + utils.zpad(utils.encode_int(w), 1)
                        _w = random.randrange(32)
                        c += chr(0x5f + 1) + utils.zpad(
                            utils.encode_int(_w), 1)
                        c += chr(opcode)
                elif name == 'CALLDATALOAD':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        c += '\x60\x00'
                        c += chr(opcode)
                        c += '\x50'
                elif name == 'CALLDATACOPY':
                    if push_depths != push_params[0]:
                        continue
                    v = 32
                    w = random.randrange(256**v)
                    c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                    _w = 0
                    c += chr(0x5f + 1) + utils.zpad(utils.encode_int(_w), 1)
                    c += '\x52'
                    for i in range(code_size):
                        c += '\x36\x60\x00'
                        _w = 256
                        c += chr(0x5f + 2) + utils.zpad(
                            utils.encode_int(_w), 1)
                        c += chr(opcode)
                elif name == 'EXTCODECOPY':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        c += '\x73\xee\xefSt\xfc\xe5\xed\xbc\x8e*\x86\x97\xc1S1g~n\xbf\x0b' + '\x3b' + '\x60\x00\x60\x00' '\x73\xee\xefSt\xfc\xe5\xed\xbc\x8e*\x86\x97\xc1S1g~n\xbf\x0b'
                        c += chr(opcode)
                elif name == 'EXTCODESIZE':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        c += '\x73\x0fW.R\x95\xc5\x7f\x15\x88o\x9b&>/m-l{^\xc6'
                        c += chr(opcode)
                elif name == 'CODECOPY':
                    if push_depths != push_params[0]:
                        continue
                    # coded = '`r`\xb5\x01P`\xb9`\xb4\x01P`\x8a`S\x01P`\xa4`z\x01P`\x92`\xc3\x01P`J'
                    # c += coded
                    for i in range(code_size):
                        c += '\x73\x0fW.R\x95\xc5\x7f\x15\x88o\x9b&>/m-l{^\xc6'
                        c += '\x38\x60\x00\x60\x00' + chr(opcode)
                elif name == "BALANCE":
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        c += '\x73\x0fW.R\x95\xc5\x7f\x15\x88o\x9b&>/m-l{^\xc6'
                        c += chr(opcode)
                elif name == 'SSTORE':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        v = 32
                        w = random.randrange(256**v)
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                        _w = 86
                        c += chr(0x5f + 1) + utils.zpad(
                            utils.encode_int(_w), 1)
                        c += chr(opcode)
                elif name == 'SLOAD':
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        v = 1
                        w = 86
                        c += chr(0x5f + v) + utils.zpad(utils.encode_int(w), v)
                        c += chr(opcode)
                elif name == "BLOCKHASH":
                    for i in range(code_size):
                        for i in range(inargs):
                            v = 1
                            w = random.randrange(256**v)
                            c += chr(0x5f + v) + utils.zpad(
                                utils.encode_int(w), 1)
                        c += chr(opcode)
                        # for _ in range(outargs):
                        #     c += chr(0x50)
                elif name == "EXP":
                    if push_depths != push_params[0]:
                        continue
                    for i in range(code_size):
                        for _ in range(inargs):
                            v = 32
                            w = random.randrange(256**v)
                            c += chr(0x5f + v) + utils.zpad(
                                utils.encode_int(w), 1)
                        c += chr(opcode)
                        for _ in range(outargs):
                            c += chr(0x50)
                # elif name == "RETURNDATACOPY":
                #     if push_depths != push_params[0]:
                #         continue
                #     for i in range(code_size):
                #         c += '\x60\x00\x60\x00\x60\x00'
                #         c += chr(opcode)
                # elif name == "RETURNDATASIZE":
                #     if push_depths != push_params[0]:
                #         continue
                #     for i in range(code_size):
                #         c += chr(opcode)
                else:
                    for i in range(code_size):
                        for _ in range(inargs):
                            v = push_depths[i * len(push_depths) // code_size]
                            w = random.randrange(256**v)
                            c += chr(0x5f + v) + utils.zpad(
                                utils.encode_int(w), v)
                        c += chr(opcode)
                        for _ in range(outargs):
                            c += chr(0x50)
                # PUSH1 0 MLOAD . DUP1 . PUSH1 1 ADD PUSH1 0 MSTORE . PUSH2 <jumps> GT PUSH1 0 JUMPI
                # c += '\x60\x00\x51' + '\x80' + '\x60\x01\x01\x60\x00\x52' + \
                #     '\x61'+chr(jump_num // 256) + chr(jump_num % 256) + '\x11\x60\x00\x57'

                o = o = {
                    "callcreates": [],
                    "env": {
                        "currentCoinbase":
                        "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
                        "currentDifficulty":
                        "256",
                        "currentGasLimit":
                        "1000000000",
                        "currentNumber":
                        "257",
                        "currentTimestamp":
                        "1",
                        "previousHash":
                        "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
                    },
                    "exec": {
                        "address": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
                        "caller": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
                        "code": "0x" + c.encode('hex'),
                        "data":
                        "0xc4ede3d3c49e38e7351405f35621bafce3a2ef3cef0af0a119fe3772ffcc2a8a0aa48ac7dc2bdc26dfad6de18cd9ea15a119bd676f5b3e492f2c2a5cc3ed6f6182041cda117a1fdc958df9e53b3f957d676f15003da9d6792800b612d8f9ec6d85ea7ca5f70789cf04137db582e89c73fcd3fafeb24db17c91ef9950eca6d3c194be97be7ecae7c2892fb915619d4845dcbd9510544a9cb88a54a7baa313d85c196387eeaeaddf8c03d2d0a222bf3b94c87c9ad20180f821db4f85347247e650200bc5b1b045f0da19aee3e94c585bb08bc47586962ec3269f66318ab2356e6a786dc5b0b51af3dc0d7751f22a63301baa9383c2c5e4d953e558b09af532e075",
                        "gas": "100000000",
                        "gasPrice": "100000000000000",
                        "origin": "cd1722f3947def4cf144679da39c4c32bdc35681",
                        "value": "1000000000000000000"
                    },
                    "pre": {
                        "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": {
                            "balance": "1000000000000000000",
                            "code":
                            "0x36303732363062353031353036306239363062343031353036303861363035",
                            "nonce": "0",
                            "storage": {
                                "0x56":
                                "0x0f5b2ebf118c64ede45e3d5f4436fd219110d1f20442c6f153a22c39a70bf7df"
                            }
                        }
                    },
                    "gas": "1000000000",
                    "logs": [],
                    "out": "0x"
                }
                out[name + str(_subid)] = o
                _subid += 1
    return out