A tool to determine optimal projects for Gridcoin crunchers. Maximize your magnitude!

Overview

FindTheMag

FindTheMag helps optimize your BOINC client for Gridcoin mining. You can group BOINC projects into two groups: "preferred" projects and "mining" projects. Preferred projects are ones which you want to crunch regardless of how much GRC they get you. Mining projects are projects which you are willing to crunch, but only if they get you the maximum amount of GRC possible. In the event that your preferred project(s) happen to be the most efficient to mine, FindTheMag will assign all project weight to them.

FindTheMag uses your own BOINC client's stats to determine which projects get the most credit per hour on your machine. It then figures out (using your Gridcoin wallet) which project gets you the most magnitude per hour. Quickmag is a similar tool which will estimate the most profitable projects for your hardware based on the performance of other crunchers with similar hardware. It's useful and elegant. You should check it out.

This tool's accuracy improves the longer you have been running BOINC. It will automatically set all Gridcoin-approved projects to a weight of one so they will continue to use .1% of your processing power, each time increasing the accuracy of the tool.

This tool requires that you have the Gridcoin wallet running on your machine and that it is fully synced. See FAQ for ways around this. The wallet doesn't need any coins in it, just an up-to-date copy of the blockchain. It also requires python 3.8 or higher, though earlier versions may work they are unsupported. If you just installed BOINC, this tool takes about 48 hours to start working as we have to wait for projects to grant you credit for your work. Though really a week's worth of data is about the minimum you'd need to get useful information from this tool.

If you use an account manager like BAM:

  • Put each host into its own host group
  • Assign weight to projects in the host group

If you manage your BOINC client locally:

  • There is no way to set project weight outside of logging in to each project manually and setting it there.
  • You can still use this tool to find out the mag/hr of various projects and "no new tasks" projects you have no interest in crunching either because of low mag/hr or because they are not your preferred projects. This can be done locally on your BOINC client.

If you are a pool miner:

  • I don't know the best way to do this, I'll gladly add step-by-step directions here if somebody can provide them. I would assume it works similarly to BAM.

If you do not have a minimum 1% sidestake setup to the Gridcoin foundation, this program will prompt you to set one up and refuse to run if you don't. We should all be pitching in to help promote and improve a coin we all benefit from.

If you find this tool useful, consider sidestaking or donating some GRC to me at RzUgcntbFm8PeSJpauk6a44qbtu92dpw3K

Quickstart instructions

For all platforms: Open the first few lines of the main.py file in a text editor and change the settings you want.

Windows

  • Download the latest version of python from python.org. Enable the "install to system path" option while installing.
  • In command prompt, run the command python -m pip install --upgrade pip
  • In command prompt, run the command python install -r "C:\Users\user\Downloads\FindTheMag-master\requirements.txt" (or wherever you saved this tool)
  • Double-click on main.py or run python "C:\path\to\main.py" from command prompt. We suggest the second method as it will display errors if the program exits unexpectedly

Linux

  • Open a terminal and go to the folder you downloaded this tool into using cd /home/user/Downloads/FindTheMag or wherever you put it
  • Run pip3 install -r requirements.txt (Note that you need pip installed, if you don't have it, you might need to run a sudo apt install python3-pip)
  • Run python3 main.py

OS X

  • Open a terminal and go to the folder you downloaded this tool into using cd "/home/user/Downloads/FindTheMag" or wherever you put it
  • Run pip3 install -r requirements.txt
  • Run python3 main.py

FAQ:

I'm not getting as many coins as I expect or I haven't received my rewards?

Consult the official Gridcoin help channels, this tool just suggests project weights. If you are a solo miner, be sure you have enabled GDPR export on projects which require it. See https://gridcoin.us/guides/whitelist.htm

I'm getting some error while running the tool or need to contact you

Open an issue here on github or email makeasnek{at}gmail.com.

My BOINC client doesn't seem to be crunching according to the weight I assigned?

Changing your resource share doesn't insure that your machine will immediately start crunching according to those resource shares, instead your BOINC client will gradually "catch up". For example, let's say you have a project which you have recently assigned a weight of "one" to while your other projects add up to 100. Even though 1 is a very small weight, if you have been crunching for six months and the project previously had a weight of zero, BOINC may fetch a bunch of work-units to catch up so that it will have crunched that amount of weight over that entire time period. So for that day, it may appear as if the project has a weight of 1000, but that's because it's average weight is still <1 and it needs to catch up.

How does it determine the most profitable project?

Each project assigns credit for your work, and BOINC keeps track of how long that work took. The formula to figure out the profitability of a project is below:

First it calculates the mag ratio:

mag ratio = project total magnitude / average total project RAC from last 30 days

Then you can get profitability (mag/hr):

profitability = (total credits earned / time those credits took) * mag ratio

Why is it setting all these projects weights to 1?

So that it can gradually accumulate enough stats to determine the profitability of these projects, and so those stats continue to update as projects change how their applications and credit assignment work. Note that 1 = .1% of your machine's processing time since the total weight is 1000 not 100.

What if there's a project I never want to crunch?

If you have a grudge against a particular project, you can add it to the ignore list at the top of the script.

What if there is more than one "most profitable" project?

If they are within 10% of each other, project weight will be split evenly between them. This insures crunching will continue even if one project runs out of work.

Why don't you just say "crunch this project and if there's no work available, crunch this other project?"

Because the BOINC client doesn't have this ability, nor the ability to have projects be in groups. It's open source though so feel free to contribute to the BOINC project or make your own BOINC Manager clone, this tool could certainly benefit from it!

What about CPUs or GPUs? Or different applications?

This tool doesn't know about GPUs or different apps, it just calculates an average credits/hour over all work units sent to you by the project.

How often should I run this?

It's up to you, but it uses a 30-day average to calculate RAC:MAG ratios, so running it very frequently won't get you much benefit. It's lightweight and doesn't hammer the BOINC project servers though, so feel free to run it as often as you want!

What are you going to name the pony?

I don't know, current candidates are Jeffrey and Stargazer.

What does "The following projects do not have enough stats to be calculated accurately" mean?

It means you have completed less than 10 tasks for this project. At ten tasks, under ideal circumstances, we could get within 10% of the correct "credits per hour" estimation which is needed to determine mag per hour. So if less than 10 WUs have been completed, we don't even try to make an estimate.

Advanced Usage

What if I can't run the Gridcoin wallet on my machine? For example, due to space limitations on my Raspberry Pi?

Then you can copy your BOINC data directory to a machine that has the wallet running and point the script to it. Note that you don't need to copy any subfolders in the BOINC directory, just the root directory and files directly beneath it.

Legal

  • This software comes with no warranty and is provided as-is. Be wise when running software from some random github account. It may calculate suggested weights wrong. It may crash your computer, it may even steal all your GRC. By using it, you agree to hold the developers harmless for any damage it may cause whether through negligence, accident, or malice to the fullest extent legally possible. You also agree to allow yourself to have a wonderful day today or you are not allowed to use this software.
  • If you submit any or pull requests to this repository or its developer, you agree to have the code ownership transferred to the repository owner and licensed under the same license as the other code in the repository is licensed under.
  • This software is produced independently of the Gridcoin and BOINC projects without their approval or endorsement.
Repository for my Monika Assistant project

Monika_Assistant Repository for my Monika Assistant project Major changes: Added face tracker Added manual daily log to see how long it takes me to fi

3 Jan 10, 2022
A full-featured, hackable tiling window manager written and configured in Python

A full-featured, hackable tiling window manager written and configured in Python Features Simple, small and extensible. It's easy to write your own la

Qtile 3.8k Dec 31, 2022
Replite - An embeddable REPL powered by JupyterLite

replite An embeddable REPL, powered by JupyterLite. Usage To embed the code cons

Jeremy Tuloup 47 Nov 09, 2022
Flexible constructor to create dynamic list of heterogeneous properties for some kind of entity

Flexible constructor to create dynamic list of heterogeneous properties for some kind of entity. This set of helpers useful to create properties like contacts or attributes for describe car/computer/

Django Stars 24 Jul 21, 2022
A Snakemake workflow for standardised sc/snRNAseq analysis

single_snake_sequencing - sc/snRNAseq Snakemake Workflow A Snakemake workflow for standardised sc/snRNAseq analysis. Every single cell analysis is sli

IMS Bio2Core Facility 1 Nov 02, 2021
Backtest framework based on DAGs

MultitaskQueue It's a simple framework based on three composed concepts: Task: A task is the smaller unit of execution or simple a node in the DAG, ev

4 Dec 09, 2021
The RAP community of practice includes all analysts and data scientists who are interested in adopting the working practices included in reproducible analytical pipelines (RAP) at NHS Digital.

The RAP community of practice includes all analysts and data scientists who are interested in adopting the working practices included in reproducible analytical pipelines (RAP) at NHS Digital.

NHS Digital 50 Dec 22, 2022
Easily Generate Revolut Business Cards

RevBusinessCardGen Easily Generate Revolut Business Cards Prerequisites Before you begin, ensure you have met the following requirements: You have ins

Younes™ 35 Dec 14, 2022
Python Create Your Own Tool Series

Python Create Your Own Tool Series Hey there! This is an additional Github repository that contains the final product files for each video in my Youtu

Joe Helle 21 Dec 02, 2022
WMIC Serial Checker For Python

WMIC Serial Checker Follow me here: Discord | Github FR: A but éducatif seulement. EN: For educational purposes only. ❓ Informations FR: WMIC Serial C

AkaTool's 0 Apr 25, 2022
Interactive class notebooks for ECE4076 Computer Vision, weeks 1 - 6

ECE4076 Interactive class notebooks for ECE4076 Computer Vision, weeks 1 - 6. ECE4076 is a computer vision unit at Monash University, covering both cl

Michael Burke 9 Jun 16, 2022
Small exercises to get you used to reading and writing Python code!

Pythonlings Welcome to Pythonlings, an automated Python tutorial program (inspired by Rustlings and Haskellings). WIP This program is still working in

鹤翔万里 5 Sep 23, 2022
synchronize projects via yaml/json manifest. built on libvcs

vcspull - synchronize your repos. built on libvcs Manage your commonly used repos from YAML / JSON manifest(s). Compare to myrepos. Great if you use t

python utilities for version control 200 Dec 20, 2022
JimShapedCoding Python Crash Course 2021

Python CRASH Course by JimShapedCoding - Click Here to Start! This Repository includes the code and MORE exercises on each section of the entire cours

Jim Erg 64 Dec 23, 2022
Sample microservices application demo

Development mode docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d or export COMPOSE_FILE='docker-compose.yml:docker-compose.dev.ym

Konstantinos Bairaktaris 1 Nov 14, 2021
Plux - A dynamic code loading framework for building plugable Python distributions

Plux plux is the dynamic code loading framework used in LocalStack. Overview The

LocalStack 65 Dec 20, 2022
🦠 A simple and fast (< 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak.

🦠 A simple and fast ( 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak. It's written in python using the 🔥 FastAPI framework. Supports multiple sources!

Marius 1.6k Jan 04, 2023
Moleey Panel with python 3

Painel-Moleey pkg upgrade && pkg update pkg install python3 pip install pyfiglet pip install colored pip install requests pip install phonenumbers pkg

Moleey. 1 Oct 17, 2021
Stack-overflow-import - Import arbitrary code from Stack Overflow as Python modules.

StackOverflow Importer Do you ever feel like all you’re doing is copy/pasting from Stack Overflow? Let’s take it one step further. from stackoverflow

Filip Haglund 3.7k Jan 08, 2023
A wrapper for the apt package manager.

A wrapper for the apt package manager.

531 Jan 04, 2023