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.
Heisenbridge a bouncer-style Matrix IRC bridge

Heisenbridge brings IRC to Matrix by creating an environment where every user connects to each network individually like they would with a traditional IRC bouncer

Toni Spets 152 Dec 28, 2022
Built as part of an assignment for S5 OOSE Subject CSE

Installation Steps: Download and install Python from here based on your operating system. I have used Python v3.8.10 for this. Clone the repository gi

Abhinav Rajesh 2 Sep 09, 2022
Arabic to Roman Converter in Python

Arabic-to-Roman-Converter Made together with https://github.com/goltaraya . Arabic to Roman Converter in Python. -Instructions: 1 - Make sure you have

Pedro Lucas Tomazeti Fernandes 6 Oct 28, 2021
Entitlement AND Hardened Runtime Check

Python3 script for macOS to recursively check /Applications and also check /usr/local/bin, /usr/bin, and /usr/sbin for binaries with problematic/interesting entitlements. Also checks for hardened run

Cedric Owens 79 Nov 16, 2022
Collection of script & resources for Foundry's Nuke software.

Author: Liam Collod. Collections of scripting stuff I wrote for Foundry's Nuke software. Utilisation You can have a look at the README.md file in each

Liam Collod 1 May 14, 2022
An implementation of Ray Tracing in One Weekend using Taichi

又一个Taichi语言的Ray Tracer 背景简介 这个Ray Tracer基本上是照搬了Peter Shirley的第一本小书Ray Tracing in One Weekend,在我写的时候参考的是Version 3.2.3这个版本。应该比其他中文博客删改了不少内容。果然Peter Shir

张皓 30 Nov 21, 2022
Tools I'm building in order to help my investments decisions

b3-tools Tools I'm building in order to help my investments decisions. Based in the REITs I've in my personal portifolio I ran a script that scrapy th

Rafael Cassau 2 Jan 21, 2022
This repository contains all the data analytics projects that I've worked on in python.

93_Python_Data_Analytics_Projects This repository contains all the data analytics projects that I've worked on in python. No. Name 01 001_Cervical_Can

Milaan Parmar / Милан пармар / _米兰 帕尔马 267 Jan 06, 2023
mypy plugin for PynamoDB

pynamodb-mypy A plugin for mypy which gives it deeper understanding of PynamoDB (beyond what's possible through type stubs). Usage Add it to the plugi

1 Oct 21, 2022
Test pour savoir si je suis capable de paratger une lib avec le monde entier !!

Data analysis Document here the project: MLproject Description: Project Description Data Source: Type of analysis: Please document the project the bet

Lucas_Penarrubia 0 Jan 18, 2022
A clock purely made with python(turtle)...

Clock A clock purely made with python(turtle)... Requirements Pythone3 IDE or any other IDE Installation Clone this repository Running Open this proje

Abhyush 1 Jan 11, 2022
Python program to start your zoom meetings

zoomstarter Python programm to start your zoom meetings More about Initially this was a bash script for starting zoom meetings, but as i started devel

Viktor Cvetanovic 2 Nov 24, 2021
Python library to natively send files to Trash (or Recycle bin) on all platforms.

Send2Trash -- Send files to trash on all platforms Send2Trash is a small package that sends files to the Trash (or Recycle Bin) natively and on all pl

Andrew Senetar 224 Jan 04, 2023
Mnemosyne: efficient learning with powerful digital flash-cards.

Mnemosyne: Optimized Flashcards and Research Project Mnemosyne is: a free, open-source, spaced-repetition flashcard program that helps you learn as ef

359 Dec 24, 2022
Course materials for a 3-day seminar "Machine Learning and NLP: Advances and Applications" at New College of Florida

Machine Learning and NLP: Advances and Applications This repository hosts the course materials used for a 3-day seminar "Machine Learning and NLP: Adv

Yoshi Suhara 11 Jun 22, 2022
A python module for DeSo

DeSo.py A python package for DeSo. Developed by ItsAditya Run pip install deso to install the module! Examples of How To Use DeSo.py Getting $DeSo pri

ItsAditya 0 Jun 30, 2022
Media Cloud Outlet Filtering

Using ABYZ and Media-Bias Fact-Check outlet databases, I've provided outlet CSV files for both and scripts to intended to match Media Cloud files to respective outlets.

Stephen Scarano 1 Feb 02, 2022
Python script to preprocess images of all Pokémon to finetune ruDALL-E

ai-generated-pokemon-rudalle Python script to preprocess images of all Pokémon (the "official artwork" of each Pokémon via PokéAPI) into a format such

Max Woolf 132 Dec 11, 2022
Procscan is a quick and dirty python script used to look for potentially dangerous api call patterns in a Procmon PML file.

PROCSCAN Procscan is a quick and dirty python script used to look for potentially dangerous api call patterns in a Procmon PML file. Installation git

Daniel Santos 9 Sep 02, 2022
Site de gestion de cave à vin utilisant une BDD manipulée avec SQLite3 via Python

cave-vin Site de gestion de cave à vin utilisant une bdd manipulée avec MySQL ACCEDER AU SITE : Pour accéder à votre cave vous aurez besoin de lancer

Elouann Lucas 0 Jul 05, 2022