def __init__(self, address, balance=None, code=None, nonce=None, storage=None): self.address = address self.balance = balance if balance is not None else rndval.RndHexInt( _min=2**24 - 1) self.code = code if code is not None else '' self.nonce = nonce self.storage = storage if storage is not None else {}
def __init__(self, nonce=None, codegenerators={}, datalength=None, fill_prestate_for_tx_to=True, fill_prestate_for_args=False, _config=None): ### global settings self._nonce = nonce if nonce is not None else str(rndval.RndV()) self._config = _config ### set by setters below self._codegenerators = None # default self._codegenerators_weighted = None self._datalength = None self._fill_prestate_for_tx_to = fill_prestate_for_tx_to self._fill_prestate_for_args = fill_prestate_for_args ## set the using a defined interface self.codegens = codegenerators # sets _codegenerators and _codegenerators_weighted self.datalength = datalength # sets _datalength ### info self._info = SimpleNamespace(fuzzer="evmlab", comment="evmlab", filledwith="evmlab randomfuzz") ### env self._env = SimpleNamespace(currentCoinbase=rndval.RndAddress(), currentDifficulty="0x20000", currentGasLimit="0x1312D00", currentNumber="1", currentTimestamp="1000", previousHash=rndval.RndHash32()) ### post self._post = { "Byzantium": [{ # dummy to make statetests happy "hash": "0x00000000000000000000000000000000000000000000000000000000deadc0de", "logs": "0x00000000000000000000000000000000000000000000000000000000deadbeef", "indexes": { "data": 0, "gas": 0, "value": 0 } }] } ### pre self._pre = {} ### transaction self._transaction = SimpleNamespace( secretKey= "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", data=[ self.pick_codegen( rndval.RndCodeBytes).generate(length=self._datalength) ], gasLimit=[rndval.RndTransactionGasLimit(_min=34 * 14000)], gasPrice=rndval.RndGasPrice(), nonce=self._nonce, to=rndval.RndDestAddressOrZero(), value=[rndval.RndHexInt(_min=0, _max=max(0, 2**24))])
#! /usr/bin/env python # -*- coding: utf-8 -*- # Author : <github.com/tintinweb> from evmlab.tools.statetests import rndval rnd_nonce = str(rndval.RndV()) rnd_balance = rndval.RndHexInt(_min=2**24-1) rnd_send_value = rndval.RndHexInt(_min=0, _max=max(0,2**24)) # reserve for exec/gas. rnd_code_flags = set([rndval.RndCode.FLAG_FOCUS_CONSTANTINOPLE,]) # indicate that we want to blend in more CONSTANTINOPLE instructions. # https://github.com/ethereum/testeth/blob/develop/test/tools/fuzzTesting/createRandomTest.cpp#L241 TEMPLATE_RandomStateTest = { "randomStatetest": { "_fuzz": { "compressed_random_state": rndval.RandomSeed(), }, "_info": { "comment": "This test was generated from Evmlab", "filledwith": "evmlab", "lllcversion": "not available", "source": "not available", "sourceHash": "not available" }, "env": { "currentCoinbase": rndval.RndAddress(), "currentDifficulty": "0x20000", "currentGasLimit": "0x1312D00", # Set to 20M for now "currentNumber": "1", "currentTimestamp": "1000", "previousHash": rndval.RndHash32() },
"randomStatetest": { "_fuzz": { "compressed_random_state": rndval.RandomSeed(), }, "env": { "currentCoinbase": rndval.RndAddress(), "currentDifficulty": "0x20000", "currentGasLimit": rndval.RndBlockGasLimit(), "currentNumber": "1", "currentTimestamp": "1000", "previousHash": rndval.RndHash32() }, "post": {"Byzantium" : [{ "logs" : "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"}]}, # dummy to make statetests happy "pre": { "ffffffffffffffffffffffffffffffffffffffff": { "balance": rndval.RndHexInt(), "code": rndval.RndCode(), "nonce": rnd_nonce, "storage": { } }, "1000000000000000000000000000000000000000": { "balance": rndval.RndHexInt(), "code": rndval.RndCode(), "nonce": rnd_nonce, "storage": { } }, "b94f5374fce5edbc8e2a8697c15331677e6ebf0b": { "balance": rndval.RndHexInt(), "code": rndval.RndCode(),