Patent Description:
Various electronic currencies, also known as cryptocurrencies, are typically generated through a "mining" process involving performance of a number of complex computations. These computations are carried out in order to generate "blocks" containing records of decentralized transactions made using the cryptocurrency. In order to successfully create a block, it is necessary to also produce a cryptographic hash fulfilling certain requirements. When the correct hash for a particular block is created, the "miner" (i.e., network node) responsible for creating the hash is generally awarded a certain amount of the cryptocurrency.

Because the cryptocurrency mining process typically requires substantial computing resources, approaches for distributing the mining of cryptocurrency among multiple user systems have been proposed. However, there are number of hurdles that an owner of an individual computer system (e.g., a personal computer, laptop computer or tablet computer) must overcome in order to earn cryptocurrency in exchange for permitting processing resources of the user's computer to be used for the mining of cryptocurrency. For example, most antivirus programs block or delete cryptocurrency mining software since it is often used by malware. This make it difficult for the average user to implement cryptocurrency mining on their computer system, since disabling an antivirus program in order to enable cryptocurrency mining software to be installed risks contaminating the user's computer system with malware. In addition, the fees accrued when exchanging cryptocurrency earned during such mining for conventional currency can be substantial in relation to the relatively small amounts of cryptocurrency typically involved in such exchange transactions. As a consequence, such transaction fees can consume much of the cryptocurrency earned during mining.

Finally, even in cases in which cryptocurrency mining software can be safely installed on a user's computer, execution of the mining software can adversely affect or interfere with performance of the computer. This may be particularly problematic in the case of computer systems designed to accommodate computer game applications by, for example, being configured with high-performance graphics processing units and substantial memory resources. Users purchasing such systems tend to want to minimize interferences in game performance caused by the execution of other programs. However, game performance may often noticeably decrease when another program, such as, for example, a cryptocurrency mining program, begins to heavily utilize system resources.

<CIT> relates to the distributed mining of an electronic currency.

Disclosed herein is a system and method for enabling users of electronic devices to rent or otherwise allow utilization of at least portion of the processing of such resources in exchange for software usage rights, licenses or other privileges or rewards. The system may be managed by an application having user components executed by the plurality of electronic user devices and a server component executed by a server. In one implementation each user component of the application is included within an antivirus program instantiated on one of the electronic user devices. One feature of such implementations is that cryptocurrency mining can occur even when antivirus protection is enabled, which would otherwise typically block or preclude cryptocurrency mining from occurring because of its frequent association with malware.

During operation of the system, users of the electronic user devices effectively rent, lease or otherwise permit usage of processing power of their respective user devices in order to perform computational tasks, such as hashing, relating to the mining of cryptocurrencies. As is discussed below, the application uses the processing (or "hashing") power of the user devices to perform such mining operations with minimal impact on the system. In exchange for permitting the processing power of their respective user devices to be exploited for purposes of cryptocurrency mining, users of the user devices are provided with rewards or other incentives. For example, in cases in which the user components of the application are included within an antivirus program, such rewards could comprise a free or discounted subscription to the antivirus program or service. In addition, the application may be configured to measure or otherwise meter the usage of the processing resources of the user device in connection with cryptocurrency mining and accordingly adjust the amount of the reward or incentive provided. In this way a user willing to permit a third party to utilize the processing resources of the user's electronic user device is provided with the opportunity to use valuable software applications (e.g., like antivirus software) for free or at a reduced cost.

During operation of the system, the application effectively forwards the hashing power of the participating user devices to a cryptocurrency mining pool (which may or may not be owned by the application). By facilitating the mining process carried out by the mining pool in this way, the application receives a reward from the operator or the mining pool that is generally in the form of a cryptocurrency (e.g., BitCoin or Ethereum). At least a portion of the reward is then credited to user accounts, or "wallets", created and administered for each user by the application. The application will generally effect such crediting to user accounts or wallets on a pro rata basis; that is, each user account is credited in accordance with the amount of cryptocurrency mining performed by the user device(s) associated the user account. The money (cryptocurrency or traditional currency) in the account, or "wallet", of each user can be used to pay for different services or products offered through the application.

In one embodiment the application pools cryptocurrency associated with some or all of the user wallets and creates a pooled transaction with a coin exchange party. As a result of the exchange transaction, the cryptocurrency or "crypto coins" pooled from the user wallets are transformed into a conventional currency, such as dollars or euros. The application then updates the balance of each user account or wallet to reflect the user's pro rata share of the conventional currency received through the exchange transaction. In this way the application advantageously makes both cryptocurrency mining process itself and the process of receiving compensation for the mining conducted by the electronic user devices transparent to the users of such devices.

The application will typically inform a user device of the extent to which an application license renewal or other reward has been accrued as a consequence of the utilization of the processing resources (e.g., CPU or GPU resources) of the client device in cryptocurrency mining. The application will generally provide users with a straightforward way to configure parameters governing the extent to which mining activities may be performed by the client devices. For example, the application may permit a user to set a limit on the amount (or percentage) of CPU used, to specify that mining may only occur when the client device is idle, to specify that mining may not occur during full screen or game mode, or that mining must not occur when less than a predefined amount of energy remains in the batteries of the client device (in the case of portable client devices). In one embodiment the default settings relating to such parameters would only permit mining to occur when the user device was otherwise idle. Alternatively, the default settings could specify that mining could be carried out only using certain processor cores (in the case of multi-core user devices). A user could have the option to accept such default setting or to change the parameter settings to allow for more "aggressive" mining, which could result in a corresponding degradation in the ability of the user device to perform tasks unrelated to mining.

In one aspect the disclosure relates to a method for facilitating utilization of processing resources of a plurality of user electronic devices for mining of cryptocurrency. The plurality of user electronic devices are configured with a corresponding plurality of user applications, each of the plurality of user applications including code for a cryptocurrency mining module and code for functionality different from the mining of cryptocurrency. The method includes receiving, from each of the plurality of user electronic devices, mining activity data indicative of the extent to which each of the plurality of user electronic devices is utilized by a cryptocurrency mining pool to perform cryptocurrency mining operations. Each of the user applications may be configured with application settings establishing conditions under which a corresponding one of the plurality of user electronic devices may be utilized to perform the cryptocurrency mining operations. The method further includes receiving, from at least one of the cryptocurrency mining pool and a cryptocurrency server separate from the cryptocurrency mining pool, an aggregate amount of cryptocurrency. The aggregate amount cryptocurrency may be exchanged, by communicating with a cryptocurrency exchange server, for an aggregate amount of currency other than cryptocurrency. The method further includes allocating the aggregate amount of currency among a plurality of user accounts respectively associated with the plurality of user electronic devices.

The method may further include monitoring usage of computer resources by processes executing on at least one of the plurality of user electronic devices and determining, based upon the monitoring, that one of the processes is consuming greater than a predefined threshold of the computer resources. In this case ones of the processes corresponding to the cryptocurrency mining operations may be stopped or execution of one or more scheduled tasks corresponding to the cryptocurrency mining operations may be delayed.

The disclosure also pertains to a user electronic device configured for mining of cryptocurrency. The user electronic device includes a processor and a memory including computer code executable by the multicore processor. The computer code includes code for a user application including code for a cryptocurrency mining module and code for functionality different from the mining of cryptocurrency. The code for the cryptocurrency mining module is configured to cause the processor to send mining activity data indicative of the extent to which the user electronic device is utilized by a cryptocurrency mining pool to perform cryptocurrency mining operations. The user application is configured with application settings establishing conditions under which the user electronic device may be utilized to perform the cryptocurrency mining operations. The computer code further includes code for monitoring usage of processor resources by processes executing on the processor and for determining, based upon the monitoring usage, that one of the processes is consuming greater than a predefined threshold of the computer resources. In this case ones of the processes corresponding to the cryptocurrency mining operations may be stopped or execution of one or more scheduled tasks corresponding to the cryptocurrency mining operations may be delayed.

The processor of the user electronic device may be implemented using a multicore processor having a plurality of cores disposed to execute the plurality of processes. In this case the computer code further includes code for allocating one or more of the plurality of cores to ones of the processes corresponding to the cryptocurrency mining operations wherein other of the plurality of cores are allocated to remaining ones of the processes.

In one aspect the cryptocurrency mining operations are not performed when the user electronic device is detected to be operating in a game mode. The mining operations may be resumed once it has been subsequently detected that the user electronic device is no longer operating in the game mode.

In one aspect the disclosure relates to a method for improving performance of a game process in a multicore computer system configured for cryptocurrency mining. The method includes automatically detecting the game process that has begun executing on one or more of a plurality of cores of the multicore processor. Following detection of the game process, processes associated with the cryptocurrency mining operations are automatically allocated to one of the plurality of cores different from the processor core or cores on which the game process is executing. Upon detecting that an application corresponding to the game process has transitioned from an interactive state or that the game process has terminated, one or more other of the plurality of cores may be allocated to the cryptocurrency mining operations.

The method may alternately or additional include determining a number of the plurality of cores required to be utilized by the game process in order to meet one or more performance criteria. Upon this determination being made the game process may be allocated to the determined number of the plurality of cores. The method further includes parking one or more remaining cores in order to reduce heat generated by the processor, potentially allowing the system to increase the processor's frequency, and thereby improve performance of the game process.

By dedicating computer resources to a high-utilization process such as a computer game, a <NUM> or High Definition video, other graphics applications or, more generally, other applications requiring high CPU usage, any decreases in performance due to interference from cryptocurrency mining operations can be minimized and potentially not detectable by the user. Because the detection is automated, less computer-experienced users can benefit from the disclosed optimizations without having to interact with the computer system.

The present application may be more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, wherein:.

Various embodiments are described below with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more embodiments. It may be evident, however, that such embodiment(s) can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing one or more embodiments.

Attention is now directed to <FIG>, which is a system <NUM> for enabling users of electronic devices <NUM> to rent or otherwise allow utilization of at least portion of the processing power of such devices <NUM> in exchange for software usage rights, licenses or other privileges or rewards. The user electronic devices <NUM> may include desktop computers, laptop computers, tablet computers and other electronic devices having sufficient processing capabilities to carry out tasks such as, for example, cryptocurrency mining operations. As is discussed below, in the embodiment of <FIG> each user electronic device <NUM> performs some form of cryptocurrency mining in exchange for a reward. In one embodiment the reward may comprise, for example, a subscription to an antivirus program or service implemented through the client application or a subscription credit to another software program or service.

The user electronic devices <NUM> are in communication over a network <NUM> with a server complex <NUM> having at least one server <NUM> and memory storage <NUM>. The at least one server <NUM> is configured to execute a centralized component of a cryptocurrency mining application <NUM> operative to enable the user electronic devices <NUM> to perform cryptocurrency mining operations. The cryptocurrency mining operations performed by the user electronic devices <NUM> may yield units or partial units of an electronic currency (e.g., Bitcoin, Litecoin, Ethereum or Peercoin) mined by such devices <NUM>. In one embodiment the user electronic devices <NUM> each contribute at least a portion of their respective processing resources to be used by a third party electronic currency mining pool <NUM> to perform the cryptocurrency mining operations. In consideration for usage of the processing resources of the user electronic devices <NUM>, the mining pool <NUM> may provide the cryptocurrency mining application <NUM> with an aggregate reward that is generally in the form of a cryptocurrency (e.g., BitCoin or Ethereum). Alternatively, the user electronic devices <NUM> may receive rewards (e.g., cryptocurrency) from the operator of the mining pool <NUM> and then communicate these to the server <NUM> for pooling into the aggregate reward. In either case at least a portion of the aggregate reward is then credited to user accounts, or wallets <NUM>, created and administered for each user by the application <NUM>. The application <NUM> will generally effect such crediting to user accounts or wallets <NUM> on a pro rata basis; that is, each user account or wallet <NUM> is credited in accordance with the amount of cryptocurrency mining performed by the user device(s) <NUM> associated the wallet <NUM>. The money (cryptocurrency or traditional currency) in the wallet <NUM> of each user can be used to pay for different services or products offered by, for example, an entity responsible for operation of the application <NUM>.

In one embodiment the application <NUM> pools cryptocurrency associated with some or all of the user wallets <NUM> and creates a pooled transaction with a cryptocurrency exchange party <NUM>. As a result of the exchange transaction, the cryptocurrency or "crypto coins" pooled from the user wallets <NUM> are transformed into a conventional currency, such as dollars or euros. The application <NUM> then updates the balance of each user account or wallet <NUM> to reflect the user's pro rata share of the conventional currency received through the exchange transaction. In this way the application <NUM> advantageously makes both the cryptocurrency mining process itself and the process of receiving compensation for the mining conducted by the electronic user devices <NUM> transparent to the users of such devices <NUM>.

Turning now to <FIG>, a block diagram is provided which illustrates the principal components of a user electronic device <NUM> in accordance with an embodiment. User electronic device <NUM> may be used to implement a desktop computer, a workstation, a laptop computer, or other type of data processing device. As shown, user electronic device <NUM> includes a multicore central processing unit ("CPU") <NUM> having a plurality of cores <NUM>, system memory <NUM>, disk storage <NUM>, data port(s) <NUM>, graphics processing unit (GPU) <NUM>, audio card <NUM> and network card(s) <NUM> connected by system bus <NUM>. System bus <NUM> may include a memory bus or memory controller, a peripheral bus, and a local bus, and may utilize any of a various known bus architectures. Network card(s) <NUM> may provide an Ethernet, Wi-Fi, GSM, Bluetooth or other wired, wireless, or cellular network interface for connecting user electronic device <NUM> to an external network, such as the Internet. Data port <NUM> may be any data port as is known in the art for interfacing with an external accessory using a data protocol such as RS-<NUM>, USB, or Firewire. Disk storage <NUM> may be a conventional read/write memory such as a magnetic disk drive, floppy disk drive, compact-disk read-only-memory (CD-ROM) drive, digital video disk (DVD) read or write drive, transistor-based memory or other computer-readable memory device as is known in the art for storing and retrieving data.

In one embodiment system memory <NUM> may include a read-only memory (ROM) <NUM> and random access memory (RAM) <NUM>. The ROM <NUM> generally stores a basic input/output system (BIOS), which contains foundational routines to convey information between components of user electronic device <NUM>. RAM <NUM> stores an operating system <NUM> (OS), such as, for example, Windows®, Linux or other type of OS. System memory <NUM> also stores application programs <NUM> currently executing as processes on the user electronic device <NUM>. These applications <NUM> may include, for example, a client application <NUM> incorporating an antivirus program <NUM> and a cryptocurrency mining module <NUM> configured to perform some form of cryptocurrency mining in exchange for a corresponding rewards. The antivirus application <NUM> can advantageously be configured to allow execution of the cryptocurrency mining module <NUM> and to block other malicious mining attempts. In other implementations the client application <NUM> could include a program or module different from an antivirus program (e.g., a security program or an interactive game program).

CPU <NUM> communicates with a plurality of peripheral equipment. Additional peripheral equipment may include a display <NUM>, manual input device <NUM> and microphone <NUM>. Display <NUM> may be a visual display such as a liquid crystal display (LCD) screen, touch-sensitive screen, or other monitors as are known in the art for visually displaying images and text to a user. Manual input device <NUM> may be a conventional keyboard, keypad, mouse, trackball, or other input device as is known in the art for the manual input of data. Microphone <NUM> may be any suitable microphone as is known in the art for providing audio signals to CPU <NUM>. In addition, a speaker <NUM> may be attached for reproducing audio signals from CPU <NUM>. It is understood that microphone <NUM> and speaker <NUM> may include appropriate digital-to-analog and analog-to-digital conversion circuitry as appropriate.

<FIG> is a flowchart providing an operational overview <NUM> of exemplary operation of the system <NUM> of <FIG>, according to an embodiment. As shown, a user of one of the electronic devices may provide consent to the client application <NUM> of the device <NUM> to effectively rent, lease or otherwise permit the mining pool <NUM> to use the processing power of the user device <NUM> in order to perform computational tasks, such as hashing, relating to the mining of cryptocurrencies (stage <NUM>). Once such consent has been received, the application <NUM> effectively forwards the hashing power of the participating user devices to the cryptocurrency mining pool (stage <NUM>). By facilitating the mining process carried out by the mining pool <NUM> in this way, the application <NUM> receives a reward from the operator or the mining pool <NUM> that is generally in the form of a cryptocurrency (stage <NUM>). Alternatively, the mining pool <NUM> may provide the reward to the server <NUM> for apportionment by the application <NUM> to a user account associated with the user electronic device <NUM>.

The application <NUM> will generally effect such apportioning to user accounts or wallets on a pro rata basis; that is, each user account is credited in accordance with the amount of cryptocurrency mining performed by the user device(s) <NUM> associated the user account. The money (cryptocurrency or traditional currency) in the account, or "wallet", of each user can be used to pay for different services or products offered through the application (stage <NUM>). For example, such rewards could comprise a free or discounted subscription to the antivirus program <NUM> or service. In addition, based upon the usage of the processing resources of the user device <NUM> reported by the client application may <NUM>, the cryptocurrency mining application <NUM> may be configured to adjust the amount of the reward or incentive provided. In this way a user willing to permit a third party (e.g., the mining pool <NUM>) to utilize the processing resources of the user's electronic user device <NUM> is provided with the opportunity to use valuable software applications (e.g., like antivirus software) for free or at a reduced cost.

Attention is now directed to <FIG>, which is a flowchart providing a more detailed representation of an exemplary process for mining electronic currency in exchange of software usage rights or other rewards capable of being implemented within the system <NUM>. The process begins when a user of one of the electronic devices provides consent, through a user interface generated by the client application <NUM> or otherwise, to permit at least a portion of the processing power of the CPU <NUM> and/or GPU <NUM> of the device <NUM> to be rented or otherwise utilized for the mining of electronic currency (stage <NUM>). If an automatic mode of the client application <NUM> has been selected (stage <NUM>), then the client application <NUM> ensures that any mining activity undertaken by the user electronic device <NUM> does not degrade its performance. Specifically, the application <NUM> monitors resource utilization of processes running on the user electronic device in the manner described hereinafter and adjusts mining activity to prevent any performance degradation (stage <NUM>).

If the automatic mode has not been selected (stage <NUM>), then operation in an advanced mode is initiated (stage <NUM>). In the advanced mode a user of the electronic device <NUM> is provided with the option to override certain parameters and settings of governing operation of the electronic device <NUM> in the automatic mode (stage <NUM>). For example, while in the advanced mode a user may specify, through an idle mode setting, that the mining process may start only when the device <NUM> has been idle, i.e., has not experienced any user activity, for several minutes. A user may also specify, by selecting a game mode option, that the mining process should be stopped or prevented from starting if an electronic game program is being executed by the device <NUM>. Selection of a full screen mode option prevents the mining process from starting or continuing if an application executed by the device <NUM> utilizing a full screen display capability. Selection of this option may when, for example, the device <NUM> is being used for a presentation. During advanced mode operation a user may also configure a thread counts setting in order to set a number of hashing threads that are used for mining. In one embodiment of the automatic mode, threads are computed in relation to the CPU cores <NUM>. A user may also configure a CPU percentage setting to specify a maximum load which may be undertaken by the CPU <NUM> during the mining process. Alternatively or in combination with gaming mode setting, the mining process can be stopped or restricted to a specific processor core(s) <NUM> during game play. Because of the tuning of the mining process effected through the various parameter settings and performance counters discussed above, the cryptocurrency mining performed by each device <NUM> will generally not impact the user experience. Once the user has specified which automatic mode settings are to be overridden (stage <NUM>), the client application <NUM> is configured to operate with the advanced mode settings provided by the user (stage <NUM>).

Referring again to <FIG>, once either the automatic mode has been selected (stage <NUM>) or selected automatic mode parameter settings have been overridden during advanced mode operation (stage <NUM>), the CPU <NUM> or GPU <NUM> of the device may be utilized by the cryptocurrency mining module <NUM> for cryptocurrency mining operations (stage <NUM>). The client application <NUM> handles the data transfer, between the electronic device <NUM> and the mining pool <NUM>, associated with the cryptocurrency mining operations in a secure way (stage <NUM>). Mining rewards commensurate with the extent of the cryptocurrency mining operations performed by the electronic device <NUM> may be allocated to user wallet associated with a user of the electronic device <NUM> (stage <NUM>).

In one embodiment the application <NUM> executing on the server <NUM> pools the cryptocurrency included within some or all of the user wallets associated with the electronic device <NUM> and creates a pooled transaction with the cryptocurrency exchange party <NUM>. Specifically, the application <NUM> interacts with the cryptocurrency exchange party <NUM> to exchange the resulting pool of cryptocurrency for a corresponding amount of traditional currency (stage <NUM>). As a result of the exchange transaction, the cryptocurrency or "crypto coins" pooled from the user wallets are transformed into a conventional currency, such as U. dollars or Euros. This approach of pooling the cryptocurrency mined by the electronic devices <NUM> and then exchanging it in bulk for traditional currency via one large transaction minimizes transaction fees and obviates the need for users of individual electronic devices to transact with a cryptocurrency exchange party through multiple smaller transactions. Grouping smaller user transactions into a larger one in this manner also enables the minimum threshold for currency withdrawal from the external mining pool <NUM> to be exceeded.

The user wallets or accounts are then updated by the application <NUM> to reflect accrual of a pro rata share of the amount of traditional currency received from the cryptocurrency exchange party <NUM> (stage <NUM>). In this regard the mining contribution associated with each user account can be evaluated from the user wallet for the account or directly from a shared application wallet maintained by the application <NUM> in order to fairly reward each user. The application <NUM> thus advantageously makes both the cryptocurrency mining process itself and the process of receiving compensation for the mining conducted by the electronic user devices <NUM> transparent to the users of such devices.

In one embodiment the client application <NUM> and/or the application <NUM> executing on the server <NUM> are configured to enable each user to check their respective account or wallet balance, which will generally be presented in a traditional currency, such as Euro. <FIG> is an exemplary user interface generated by client application <NUM> and/or the application <NUM> which indicates an updated account value and the advanced or automatic mode settings associated with the account. In one embodiment when the value of a user account exceeds a predefined amount, the corresponding user is automatically rewarded with free or discounted subscription to the antivirus application <NUM> or with other discounts or rewards.

In one embodiment the user electronic device <NUM> may be configured so as to improve the performance of various applications such as computer games, streaming media or other applications characterized by high framerates, or applications which otherwise use relatively high levels of CPU or GPU resources. As discussed below, methods may be used to protect such games and other high-utilization processes from interference caused by the execution of the cryptocurrency mining module <NUM> or other programs, thus improving game performance and the user experience. In addition to game applications, the teachings herein may also be applied to enhance the performance of other programs or functions which require or involve high framerates or CPU usage (e.g., viewing a <NUM> or High Definition video or running a complex graphics application).

Attention is now directed to <FIG>, which is a flowchart representative of a method <NUM> for improving game performance in accordance with the disclosure. In one embodiment the detection and optimization operations described with reference to <FIG> are performed by the game optimization module <NUM> of the client application <NUM>. However, in other implementations these operations could be carried out by a standalone application program or by a module within a different application program (e.g., a security program).

As shown, the method <NUM> may include a detection phase <NUM> and an optimization phase <NUM>. During the detection phase, processes executed by the CPU <NUM> are typically monitored at a regular time intervals such as, for example, once per second (stage <NUM>). Such monitoring may include, for example, determining when the utilization of the GPU <NUM> by a process exceeds a given threshold (e.g., <NUM>% of the resources of the GPU <NUM> consumed by the process). When this occurs a check may be made to determine if the process is running in (i) a fullscreen mode, or (ii) a windowed mode in which the window for the process is in the foreground. If either condition (i) or (ii) exists and the GPU utilization by the process exceeds the given threshold, then in one embodiment it is determined that the process is a game (stage <NUM>). As an alternative to the implementation of stage <NUM> discussed above or as an additional check as part of such implementation, system hooks could be installed in the initialization functions of the most popular APIs for rendering 2D and 3D vector graphics currently in existence (e.g., DirectX and OpenGL) in order to detect processes causing such APIs to be initialized. Another method would be to simply enumerate the loaded libraries of each process and determinate if one of those libraries is related to one of the graphics APIs. It has been found that if a relatively high percentage (e.g., greater than <NUM>%) of the resources of the GPU <NUM> are utilized by a process and a graphics API such as DirectX or OpenGL has been loaded, there exists a high likelihood that the process is a game.

It has been recognized that certain processes such as, for example, web browsers, Winword, Skype, Dropbox or other applications with a graphical user interface that loads one of the graphics APIs, may affect processor resource utilization in a similar manner to games. Such processes usually do not need high computer resource usage, so their optimization is not desirable. The threshold for GPU usage should be set high enough so that these kind of processes are not identified as games. However, false positives may theoretically occur. In these cases the game optimization module <NUM> may be configured so as to not automatically begin the optimization phase <NUM> with respect to such a process but to instead enable a user to select whether the optimization phase <NUM> should proceed. Such user selection could be made through, for example, settings associated with the game optimization module or through a "pop-up" menu or interface rendered via the display <NUM> at the conclusion of stage <NUM>.

In the event the execution of a game is not detected (stage <NUM>) when the utilization of the GPU <NUM> (or CPU <NUM>) by a process exceeds a given threshold, it may be determined whether a resource-intensive process detected during stage <NUM> corresponds to an activity besides a game for which it is desired to protect the user experience (e.g., viewing a <NUM> or High Definition video or running a complex graphics application). The optimization phase <NUM> may begin once it has been determined during the detection phase <NUM> that one of the processes executed by the CPU <NUM> corresponds to a game (stage <NUM>) or another protected activity (stage <NUM>).

When execution of a game has been detected (stage <NUM>), the optimization phase <NUM> may begin by monitoring the utilization of the CPU <NUM> by the threads of the game process in order to determine the number of threads of the game associated with high utilization of the CPU <NUM> (stage <NUM>). The thread information collected may be useful in subsequently determining which and how many CPU cores <NUM> should be allocated to the game and which CPU cores <NUM> should be left for other processes. Next, in one embodiment, system-wide optimizations intended to enhance performance of the detected game process (game. exe) are performed (stage <NUM>). These optimizations may include, for example, switching to a customized higher performance power plan, launching a user configured program with parameters, stopping or freezing various unneeded processes, pausing any cryptocurrency mining operations, and/or delaying certain scheduled tasks (stage <NUM>). In one embodiment the customized higher performance power plan may disable core parking (e.g., on all cores <NUM> or on non-hyper-threaded cores <NUM>), set minimum processor state to <NUM>%, set processor performance boost policy to <NUM>% (if available), set the PCI express link state power management to off, and disable turning off disk storage <NUM>. The user-configured program could be, for example, an overclocking program for the GPU <NUM> or CPU <NUM>.

Referring again to <FIG>, the game optimization module <NUM> will typically be configured to perform a number of operations designed to optimize execution of the detected game process (stage <NUM>). For example, if hyper-threading is enabled then the game optimization module <NUM> may set the process affinity for the detected game process to certain non-hyper-threaded cores <NUM>; that is, the game optimization module may cause certain non-hyper-threaded cores to be allocated to the detected game process.

<FIG> illustrates one manner in which process affinity of the game process may be set in an electronic device <NUM>' including a set of eight (<NUM>) processor cores <NUM> when hyper-threading is present. As shown, in the example of <FIG> all non-hyper-threaded CPU cores <NUM> except for core <NUM><NUM> and core <NUM><NUM> are allocated to the detected game process (game. In this approach CPU core <NUM><NUM> and core <NUM><NUM> are used for other running processes. In addition, the game optimization module <NUM> may park the hyper-threaded CPU cores <NUM><NUM>, <NUM><NUM>, and <NUM><NUM> in order to reduce the heat generated by the CPU <NUM> during execution of the detected game process.

Turning now to <FIG>, there is shown an exemplary setting of process affinity for the detected game process in a device <NUM>" including a set of four (<NUM>) CPU cores <NUM> when hyper-threading is not present. In this case the process affinity is set to processor cores <NUM><NUM>, <NUM><NUM>, and <NUM><NUM>, with CPU core <NUM><NUM> being used for the other running processes.

As part of the game process optimization procedure (stage <NUM>), the CPU priority and disk access (IO) priority of the game process will generally be increased to the highest available level that doesn't result in system instability (e.g., above normal or high priority). Networking priority of the game process can also be increased. In one embodiment, key processes of the operating system <NUM> (e.g., smss. exe or csrss. exe in the case of Windows) will not have their affinity modified, since doing so could potentially result in interference with the game's performance.

Referring again to <FIG>, the process affinity of other running processes may be set to those of the CPU cores <NUM> not allocated to the game process in order to minimize the potential for interference with the game process (stage <NUM>). In the example of <FIG>, the process affinity of other processes is set to CPU core <NUM><NUM>. The CPU and IO priorities of these other running processes may also optionally be lowered as part of stage <NUM>. In embodiments in which all cryptocurrency mining activities are not automatically paused during stage <NUM>, the process affinity of running processes associated with such mining activities may also be set to those of the CPU cores <NUM> not allocated to the game process.

The game optimization module <NUM> will generally be configured to continuously monitor the electronic device <NUM> for any new processes and to identify any game processes that have ended or have been minimized (e.g., taken out of fullscreen mode or the foreground) (stage <NUM>). In the case of new non-game processes, their process affinity will be set to be the same as that of any other running non-game processes; that is, any new non-game processes will typically be allocated to CPU cores <NUM> not allocated to a game process. The network, I/O and other priorities of any new process may also be lowered for the duration of any detected game process. If a game is minimized (stage <NUM>), it is likely the case that a user of the game desires to interact with other programs. Accordingly, in that case some or all system optimizations may be reverted to a default state so that multitasking performs better and the process affinities of other processes may be reset to their normal or default condition (stage <NUM>). In one embodiment, monitoring of minimized game processes continues to occur after such reversion of system optimizations and other processes to default or otherwise normal operating conditions; that is, minimized game processes are monitored to determine if they again are brought to the foreground (stage <NUM>). If any minimized game processes are determined to have been subsequently brought to the foreground (stage <NUM>), then optimizations previously applied may again become active (stage <NUM>).

At some point the game optimization module <NUM> will generally determine that a game process has ended (stage <NUM>). At this point all processes will typically have their respective process affinities and priorities restored to initial values and the active power plan will be switched to the power plan in effect before the game started (stage <NUM>).

When execution of another protected activity (e.g., viewing of a <NUM> or High Definition video or running a complex graphics application) has been detected (stage <NUM>), the optimization phase <NUM> may proceed by ending any processes known to correspond to cryptocurrency mining or restricting such processes to specific process core(s) <NUM>. Once the client application <NUM> has determined that a given protected activity has ended, cryptocurrency mining operations may be resumed and/or restrictions relating to which processor core(s) <NUM> may perform such operations may be lifted (stage <NUM>). Of course, in other embodiments system-wide optimizations of the type performed when a game process is detected (stage <NUM>) may also be performed during stage <NUM> upon detection of other protected activities (stage <NUM>).

Although embodiments presented herein describe user electronic devices <NUM> in communication with both the mining pool <NUM> and the server complex <NUM>, in other embodiments a mining pool could itself configured to handle all communication with user electronic devices <NUM>, pool mined cryptocurrency for exchange with a third party cryptocurrency exchange, and generally perform the functions described herein as being performed by the server complex <NUM>.

In some configurations, the apparatus or system includes means for performing various functions as described herein. In one aspect, the aforementioned means may be a module including a processor or processors and associated memory in which embodiments of the invention reside, such as are shown in the preceding drawings and which are configured to perform the functions recited by the aforementioned means. This may be, for example, modules or apparatus residing in client devices, host server systems, and/or other network devices such as are shown and/or described herein. In another aspect, the aforementioned means may be a module or apparatus configured to perform the functions recited by the aforementioned means.

In one or more exemplary embodiments, the functions, methods and processes described may be implemented in hardware, software, firmware, or any combination thereof. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers.

As used herein, computer program products comprising computer-readable media including all forms of computer-readable medium except, to the extent that such media is deemed to be non-statutory, transitory propagating signals.

It is understood that the specific order or hierarchy of steps or stages in the processes and methods disclosed are examples of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged while remaining within the scope of the present disclosure. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.

Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both.

The steps or stages of a method, process or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. An exemplary storage medium is coupled to the processor such the processor can read information from, and write information to, the storage medium.

The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present disclosure. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.

The disclosure is not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the specification and drawings, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more. As an example, "at least one of: a, b, or c" is intended to cover: a; b; c; a and b; a and c; b and c; and a, b and c.

Claim 1:
A method for facilitating utilization of processing resources of a plurality of user electronic devices for mining of cryptocurrency wherein the plurality of user electronic devices are configured with a corresponding plurality of user applications, each of the plurality of user applications including code for a cryptocurrency mining module and code for functionality different from the mining of cryptocurrency, the functionality different from the mining of cryptocurrency including antivirus program functionality, the method comprising:
receiving, from each of the plurality of user electronic devices, mining activity data indicative of the extent to which each of the plurality of user electronic devices is utilized by a cryptocurrency mining pool to perform cryptocurrency mining operations wherein each of the user applications is configured with application settings establishing conditions under which a corresponding one of the plurality of user electronic devices may be utilized to perform the cryptocurrency mining operations, wherein one of the application settings is an automatic mode setting and wherein selection of the automatic mode setting on one of the plurality of user electronic devices causes the user application on the one of the plurality of user electronic devices to monitor resource utilization of processes running on the one of the plurality of user electronic devices and to adjust activity of the cryptocurrency mining operations on the one of the plurality of user electronic devices to prevent performance degradation, wherein the antivirus program functionality of the user application on the one of the plurality of user electronic devices is configured to allow execution of the code for the cryptocurrency mining module in the user application in order to enable the cryptocurrency mining operations to occur even when antivirus protection is enabled and to block other malicious mining attempts;
receiving, from at least one of the cryptocurrency mining pool and a cryptocurrency server separate from the cryptocurrency mining pool, an aggregate amount of cryptocurrency;
exchanging, by communicating with a cryptocurrency exchange server, the aggregate amount cryptocurrency for an aggregate amount of currency other than cryptocurrency; and
allocating the aggregate amount of currency among a plurality of user accounts respectively associated with the plurality of user electronic devices.