def __init__( self, accounts: Dict[str, Account], dynamic_loader=None, max_depth=float("inf"), execution_timeout=60, create_timeout=10, strategy=DepthFirstSearchStrategy, transaction_count=2, requires_statespace=True, enable_iprof=False, ) -> None: """ :param accounts: :param dynamic_loader: :param max_depth: :param execution_timeout: :param create_timeout: :param strategy: :param transaction_count: """ world_state = WorldState() world_state.accounts = accounts # this sets the initial world state self.world_state = world_state self.open_states = [world_state] self.coverage = {} # type: Dict[str, Tuple[int, List[bool]]] self.total_states = 0 self.dynamic_loader = dynamic_loader self.work_list = [] # type: List[GlobalState] self.strategy = strategy(self.work_list, max_depth) self.max_depth = max_depth self.transaction_count = transaction_count self.execution_timeout = execution_timeout or 0 self.create_timeout = create_timeout self.requires_statespace = requires_statespace if self.requires_statespace: self.nodes = {} # type: Dict[int, Node] self.edges = [] # type: List[Edge] self.time = None # type: datetime self.pre_hooks = defaultdict(list) # type: DefaultDict[str, List[Callable]] self.post_hooks = defaultdict(list) # type: DefaultDict[str, List[Callable]] self._add_world_state_hooks = [] # type: List[Callable] self._execute_state_hooks = [] # type: List[Callable] self._start_sym_exec_hooks = [] # type: List[Callable] self._stop_sym_exec_hooks = [] # type: List[Callable] self.iprof = InstructionProfiler() if enable_iprof else None log.info("LASER EVM initialized with dynamic loader: " + str(dynamic_loader))
def __init__( self, accounts: Dict[str, Account], dynamic_loader=None, max_depth=float("inf"), execution_timeout=60, create_timeout=10, strategy=DepthFirstSearchStrategy, transaction_count=2, ): world_state = WorldState() world_state.accounts = accounts # this sets the initial world state self.world_state = world_state self.open_states = [world_state] self.heuristic_branching = False self.nodes = {} self.edges = [] self.coverage = {} self.total_states = 0 self.dynamic_loader = dynamic_loader self.work_list = [] self.strategy = strategy(self.work_list, max_depth) self.max_depth = max_depth self.transaction_count = transaction_count self.execution_timeout = execution_timeout self.create_timeout = create_timeout self.time = None self.pre_hooks = defaultdict(list) self.post_hooks = defaultdict(list) self.first_order_work_list = ['RAW'] self.second_order_work_list = ['WAR'] self.third_order_work_list = ['WAW'] self.forth_order_work_list = ['RAR'] self.ranking = [] self.bad_bit = False self.first_work_list = [] self.second_work_list = [] self.third_work_list = [] self.forth_work_list = [] logging.info("LASER EVM initialized with dynamic loader: " + str(dynamic_loader))
def __init__( self, accounts: Dict[str, Account], dynamic_loader=None, max_depth=float("inf"), execution_timeout=60, create_timeout=10, strategy=DepthFirstSearchStrategy, max_transaction_count=3, ): world_state = WorldState() world_state.accounts = accounts # this sets the initial world state self.world_state = world_state self.open_states = [world_state] self.nodes = {} self.edges = [] self.coverage = {} self.total_states = 0 self.dynamic_loader = dynamic_loader self.graph = (SimpleGraph() if issubclass( strategy, BasicSearchStrategy) else Graph()) self.strategy = strategy(self.graph, max_depth) self.max_depth = max_depth self.max_transaction_count = max_transaction_count self.execution_timeout = execution_timeout self.create_timeout = create_timeout self.time = None self.pre_hooks = {} self.post_hooks = {} logging.info("LASER EVM initialized with dynamic loader: " + str(dynamic_loader))