code: def _setup_global_state_for_execution(laser_evm, transaction) -> None:
      
      # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here
      global_state = transaction.initial_global_state()
      global_state.transaction_stack.append((transaction, None))
  
      new_node = Node(
          global_state.environment.active_account.contract_name,
          function_name=global_state.environment.active_function_name,
      )
      if laser_evm.requires_statespace:
          laser_evm.nodes[new_node.uid] = new_node
  
      if transaction.world_state.node:
          if laser_evm.requires_statespace:
              laser_evm.edges.append(
                  Edge(
                      transaction.world_state.node.uid,
                      new_node.uid,
                      edge_type=JumpType.Transaction,
                      condition=None,
                  )
              )
  
          global_state.mstate.constraints += transaction.world_state.node.constraints
          new_node.constraints = global_state.mstate.constraints.as_list
  
      global_state.world_state.transaction_sequence.append(transaction)
      global_state.node = new_node
      new_node.states.append(global_state)
      laser_evm.work_list.append(global_state)
docs: Sets up global state and cfg for a transactions execution.
  
      :param laser_evm:
      :param transaction: