From 97b7e971de08f0d1d856634a6bcb7c9270ca1b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Petr=C5=AF?= <77172125+fpetru104@users.noreply.github.com> Date: Mon, 20 Feb 2023 19:18:32 +0100 Subject: [PATCH 01/20] Updated Czech translation --- Resources/PC_Miner_langs.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/PC_Miner_langs.json b/Resources/PC_Miner_langs.json index d2f3220a..fa0da428 100644 --- a/Resources/PC_Miner_langs.json +++ b/Resources/PC_Miner_langs.json @@ -1624,11 +1624,11 @@ "node_picker_unavailable": "Výběrčí uzlů nejspíš nepracuje správně - zkusím to znovu za ", "node_picker_error": "Fatální chyba při vybírání uzlů - zkusím to znovu za ", "connecting_node": " Získaný těžební uzel: ", - "new_version": "A new version is available, you want to update miner [Y/n] ? ", - "updating": "The miner is outdated. Updating....", - "ask_mining_key": "Enter your mining key (only required if you activated this option in the webwallet - press enter to skip): ", - "mining_key_required": "Mining key is required to mine on this account", - "invalid_mining_key": "The mining key you provided is invalid!" + "new_version": "Je dostupná nová verze. Chceš aktualizovat těžební program [Y/n] ? ", + "updating": "Těžební program je zastaralý. Aktualizuji....", + "ask_mining_key": "Zadej svůj těžební klíč (požadováno v případech, kdy tato možnost byla nastavena ve webové peněžence - stiskni enter pro přeskočení): ", + "mining_key_required": "Těžební klíč je nutný pro těžbu na tomto účtu", + "invalid_mining_key": "Zadaný těžební klíč je neplatný!" }, "japanese": { "translation_autor": "Ikko Ashimine", From 5750c209106e7b2a07f53b2817b39438e5043031 Mon Sep 17 00:00:00 2001 From: Axorax <78349410+Axorax@users.noreply.github.com> Date: Wed, 22 Feb 2023 00:26:31 +0600 Subject: [PATCH 02/20] Add Duino Lookup to other tools --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 66e48640..50c8de92 100644 --- a/README.md +++ b/README.md @@ -213,6 +213,7 @@ All tests were performed using the DUCO-S1 algorithm **without fasthash accelera * [Duino Stats](https://github.com/Bilaboz/duino-stats) official Discord bot by Bilaboz * [DuCoWallet](https://github.com/viktor02/DuCoWallet) GUI Wallet by viktor02 * [Duco-widget-ios](https://github.com/naphob/duco-widget-ios) - a Duino-Coin iOS widget by Naphob + * [Duino Lookup](https://axorax.github.io/duino-lookup/) by axorax You may also view a similar list on the [website](https://duinocoin.com/apps). From ea66368139432796fa019e2634dc479e9a9ef2f8 Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Thu, 23 Feb 2023 18:22:54 +0100 Subject: [PATCH 03/20] Reset share counters after connection loss --- PC_Miner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PC_Miner.py b/PC_Miner.py index 535b9a2d..9930ae8a 100644 --- a/PC_Miner.py +++ b/PC_Miner.py @@ -1053,6 +1053,8 @@ def mine(id: int, user_settings: list, last_report = time() r_shares, last_shares = 0, 0 while True: + accept.value = 0 + reject.value = 0 try: Miner.m_connect(id, pool) while True: @@ -1177,13 +1179,11 @@ def mine(id: int, user_settings: list, break break except Exception as e: - print(traceback.format_exc()) pretty_print(get_string("error_while_mining") + " " + str(e), "error", "net" + str(id)) sleep(5) break except Exception as e: - print(traceback.format_exc()) pretty_print(get_string("error_while_mining") + " " + str(e), "error", "net" + str(id)) From 14241a3c10e107e64248a2e516eef8473e2dcffb Mon Sep 17 00:00:00 2001 From: TheFrenchTechMan <95764063+TheFrenchTechMan@users.noreply.github.com> Date: Sat, 25 Feb 2023 12:56:55 +0100 Subject: [PATCH 04/20] Update PC_Miner_langs.json Corrected some typos, punctuation errors, and formulation errors --- Resources/PC_Miner_langs.json | 68 +++++++++++++++++------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/Resources/PC_Miner_langs.json b/Resources/PC_Miner_langs.json index d2f3220a..e3b6d1f5 100644 --- a/Resources/PC_Miner_langs.json +++ b/Resources/PC_Miner_langs.json @@ -718,39 +718,39 @@ "invalid_mining_key": "La llave de minado ingresada no es válida!" }, "french": { - "translation_autor": "Bilaboz", + "translation_autor": "Bilaboz, TheFrenchTechMan", "translation": "Traduction française: ", "sigint_detected": " SIGINT détecté - Fermeture...", - "goodbye": " A bientôt!", - "greeting_morning": "J'espère que vous passez une bonne matinée!", - "greeting_noon": "J'espère que vous passez un bon après-midi", - "greeting_afternoon": "J'espère que vous passez un bon après-midi", - "greeting_evening": "Passez une bonne soirée!", - "greeting_back": "Content de te revoir", + "goodbye": " A bientôt !", + "greeting_morning": "J'espère que vous passez une bonne matinée !", + "greeting_noon": "J'espère que vous passez un bon après-midi !", + "greeting_afternoon": "J'espère que vous passez un bon après-midi !", + "greeting_evening": "Passez une bonne soirée !", + "greeting_back": "Content de vous revoir !", "banner": "Mineur Officiel (Python) Duino-Coin ©", - "donation_level": "Niveau de donation pour le développeur: ", - "ask_difficulty": "Veuillez sélectionner la difficulté de minage que vous souhaitez utiliser (1-3): ", - "low_diff": "Faible difficulté (pour les ordinateurs Raspberry Pis ou plus anciens)", + "donation_level": "Niveau de donation pour le développeur : ", + "ask_difficulty": "Veuillez sélectionner la difficulté de minage que vous souhaitez utiliser (1-3) : ", + "low_diff": "Difficulté faible (pour les ordinateurs Raspberry Pis ou plus anciens)", "medium_diff": "Difficulté moyenne (pour les ordinateurs normaux)", "net_diff": "Difficulté du réseau (pour les ordinateurs puissants)", - "low_diff_short": "Low Difficulty", + "low_diff_short": "Difficulté faible", "medium_diff_short": "Difficulté moyenne", - "net_diff_short": "Difficulté en réseau", - "algorithm": "Algorithme: ", - "rig_identifier": "Nom du mineur/rig: ", + "net_diff_short": "Difficulté du réseau", + "algorithm": "Algorithme : ", + "rig_identifier": "Nom du mineur/rig : ", "basic_config_tool": "\nEditeur de configuration Duino-Coin\nEditez ", "edit_config_file_warning": "le fichier /Miner_config.cfg si vous voulez changer votre configuration ultérieurement.", - "dont_have_account": "Vous n'avez pas encore de compte Duino-Coin? Utilisez ", - "wallet": "Porte-feuille", + "dont_have_account": "Vous n'avez pas encore de compte Duino-Coin ? Utilisez ", + "wallet": "Portefeuille", "register_warning": " pour en créer un.\n", - "ask_username": "Entrez votre nom d'utilisateur Duino-Coin: ", - "ask_intensity": "Choisissez l'intensité de minage (1-100)% (recommandé: 95): ", + "ask_username": "Entrez votre nom d'utilisateur Duino-Coin : ", + "ask_intensity": "Choisissez l'intensité de minage (1-100)% (recommandé: 95) : ", "ask_threads": "Choisissez le nombre de threads (recommandé pour votre système: ", - "ask_lower_difficulty": "Voulez vous utiliser une difficulté de minage plus basse (pour les systèmes les plus lents)? (y/N): ", - "ask_rig_identifier": "Voulez vous ajouter un indentifieur (un nom) à ce mineur/rig? (y/N): ", - "ask_rig_name": "Entrez le nom du mineur/rig désiré: ", - "ask_donation_level": "Choisissez le niveau de donation (0-5) (recommandé: 1), cela ne réduira pas vos gains: ", - "config_saved": "Configuration sauvegardée! Lancement du mineur", + "ask_lower_difficulty": "Voulez vous utiliser une difficulté de minage plus basse (pour les systèmes les plus lents) ? (y/N) : ", + "ask_rig_identifier": "Voulez vous ajouter un indentifieur (un nom) à ce mineur/rig? (y/N) : ", + "ask_rig_name": "Entrez le nom du mineur/rig désiré : ", + "ask_donation_level": "Choisissez le niveau de donation (0-5) (recommandé : 1), cela ne réduira pas vos gains : ", + "config_saved": "Configuration sauvegardée ! Lancement du mineur", "load_config_error": " Erreur durant le chargement du fichier de configuration (", "load_config_error_warning": "/Miner_config.cfg). Essayez de le supprimer et relancez le mineur. Exiting in 10s", "free_network_warning": " Le réseau Duino-Coin est un service complètement gratuit et le sera toujours", @@ -758,7 +758,7 @@ "learn_more_donate": " pour en apprendre d'avantage sur comment vous pouvez nous aider :)", "starting_donation": "Démarrage du service de donation", "thanks_donation": " Merci d'être un super donateur ❤️ \nVotre don nous aidera a maintenir le serveur et permettra un développement ultérieur", - "data_error": " Erreur lors de la récupération des données depuis GitHub! Nouvel essai dans 10s.", + "data_error": " Erreur lors de la récupération des données depuis GitHub ! Nouvel essai dans 10s.", "connected": " Connecté", "connected_server": " au serveur principal Duino-Coin (v", "outdated_miner": " Mineur obsolète (v", @@ -788,7 +788,7 @@ "uptime_minutes": " minutes", "uptime_hour": " heure", "uptime_hours": " heures", - "periodic_mining_report": "Rapport de minage périodique: ", + "periodic_mining_report": "Rapport de minage périodique : ", "report_period": "\n\t\t‖ Durant les dernières ", "report_time": " secondes", "report_body1": "\n\t\t‖ Vous avez miné ", @@ -797,18 +797,18 @@ "report_body4": "\n\t\t‖ Avec un hashrate de ", "report_body5": "\n\t\t‖ Dans cette période, vous avez résolu ", "report_body6": " hashes", - "report_body7": "\n\t\t‖ Blocs trouvés: ", - "total_mining_time": "\n\t\t‖ Uptime total du mineur: ", + "report_body7": "\n\t\t‖ Blocs trouvés : ", + "total_mining_time": "\n\t\t‖ Uptime total du mineur : ", "fasthash_available": "Utilisation des accélérations de hachage fasthash", "fasthash_download": "Téléchargement du module d'accélération fasthash", - "node_picker_unavailable": "Node picker doesn't seem to be responding properly - retrying in ", - "node_picker_error": "Erreur fatale lors de la récupération du serveur à partir du sélecteur de node picker - nouvel essai dans ", - "connecting_node": " Mining node récupéré: ", - "new_version": "Une nouvelle version est disponnible, voulez vous faire la mise à jour [Y/n] ? ", - "updating": "Le mineur est obsolète. Mise a jour....", - "ask_mining_key": "Entrez votre clé de minage (mining key) - (Cela est seulement nécessaire si vous avez activé cette option dans le webwallet): ", + "node_picker_unavailable": "La sélecteur de node ne semble pas répondre corrctement - nouvel essai dans ", + "node_picker_error": "Erreur fatale lors de la récupération du serveur à partir du sélecteur de node - nouvel essai dans ", + "connecting_node": " Node de minage récupéré : ", + "new_version": "Une nouvelle version est disponible, voulez vous faire la mise à jour [Y/n] ? ", + "updating": "Le mineur est obsolète. Mise a jour...", + "ask_mining_key": "Entrez votre clé de minage (mining key) - (Cela est seulement nécessaire si vous avez activé cette option dans le webwallet) : ", "mining_key_required": "Une clé de minage (mining key) est nécessaire pour miner sur ce compte", - "invalid_mining_key": "La clé de minage fournie est invalide!" + "invalid_mining_key": "La clé de minage fournie est invalide !" }, "russian": { "translation_autor": "5Q", From 072b945ed43622587883998e2352ecdff42059c8 Mon Sep 17 00:00:00 2001 From: LDarki <51938450+LDarki@users.noreply.github.com> Date: Wed, 1 Mar 2023 19:52:56 -0300 Subject: [PATCH 05/20] Fix issue #1624 --- PC_Miner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PC_Miner.py b/PC_Miner.py index 9930ae8a..9eb734b5 100644 --- a/PC_Miner.py +++ b/PC_Miner.py @@ -72,7 +72,7 @@ def handler(signal_received, frame): if sys.platform == "win32": _exit(0) else: - Popen("kill $(ps awux | grep PC_Miner | grep -v grep | awk '{print $2}')", + Popen("kill $(ps aux | grep PC_Miner | awk '{print $2}')", shell=True, stdout=PIPE) From 662cc1127593a98450461ffa8f1a49d624649b19 Mon Sep 17 00:00:00 2001 From: mininuke69 <118979770+mininuke69@users.noreply.github.com> Date: Fri, 3 Mar 2023 12:18:27 +0100 Subject: [PATCH 06/20] Update AVR_Miner.py --- AVR_Miner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AVR_Miner.py b/AVR_Miner.py index 5bb33f13..aac56c19 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -161,7 +161,7 @@ def check_updates(): if float(Settings.VER) < float(data["tag_name"]): # If is outdated update = input(Style.BRIGHT + get_string("new_version")) - if update == "Y" or update == "y": + if update.upper() == "Y": pretty_print("sys0", get_string("updating"), "warning") DATA_DIR = "Duino-Coin AVR Miner " + str(data["tag_name"]) # Create new version config folder @@ -320,7 +320,7 @@ def check_mining_key(user_settings): "error") retry = input("You want to retry? (y/n): ") - if retry == "y" or retry == "Y": + if retry.upper() == "Y": mining_key = input("Enter your mining key: ") user_settings["mining_key"] = b64.b64encode(mining_key.encode("utf-8")).decode('utf-8') config["AVR Miner"] = user_settings From 7b9d1f70993fceae5b92b2b69728fab14d67eacf Mon Sep 17 00:00:00 2001 From: mininuke69 <118979770+mininuke69@users.noreply.github.com> Date: Fri, 3 Mar 2023 12:24:00 +0100 Subject: [PATCH 07/20] Update AVR_Miner_langs.json "serverfout" is ONE word --- Resources/AVR_Miner_langs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/AVR_Miner_langs.json b/Resources/AVR_Miner_langs.json index 705c93c0..5f84872b 100644 --- a/Resources/AVR_Miner_langs.json +++ b/Resources/AVR_Miner_langs.json @@ -1268,7 +1268,7 @@ "mining_algorithm": " gebruikte algoritme is DUCO-S1A (", "mining_avr_connection_error": " Fout tijdens het verbinden met de AVR! Opnieuw proberen in 10s", "mining_avr_not_responding": " Antwoord duurt langer dan verwacht, er wordt een nieuwe opdracht gestuurd ", - "internal_server_error": " Interne server fout.", + "internal_server_error": " Interne serverfout.", "retrying": " Opnieuw proberen in 10s", "mining_user": " Gebruiker ", "mining_not_exist": " bestaat niet.", From c86a062617200b493c3e86e06770d6db52296933 Mon Sep 17 00:00:00 2001 From: espducominer <127012973+espducominer@users.noreply.github.com> Date: Sun, 5 Mar 2023 11:16:00 +0300 Subject: [PATCH 08/20] Update ESP32_Code.ino Fixing wifi core assignment --- ESP32_Code/ESP32_Code.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ESP32_Code/ESP32_Code.ino b/ESP32_Code/ESP32_Code.ino index cf208f05..0a1f5cd4 100644 --- a/ESP32_Code/ESP32_Code.ino +++ b/ESP32_Code/ESP32_Code.ino @@ -963,7 +963,7 @@ void setup() { xMutex = xSemaphoreCreateMutex(); xTaskCreatePinnedToCore( WiFireconnect, "WiFirec", 10000, NULL, NUMBEROFCORES + 2, &WiFirec, - mqttCore); // create a task with highest priority and executed on core 0 + wifiCore); // create a task with highest priority and executed on core 0 delay(250); // If MQTT is enabled create a sending thread From e364090aeaf11ca36db691f12221b39dd705e6f2 Mon Sep 17 00:00:00 2001 From: ygboucherk Date: Sat, 8 Apr 2023 18:34:16 +0200 Subject: [PATCH 09/20] Add settings to gitignore Prevents mistakenly posting miner settings (possibly mining key) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 95c3303f..0d0b5131 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,4 @@ venv/ ENV/ env.bak/ venv.bak/ +Duino-Coin PC Miner 3.4/Settings.cfg From 0f5ff4bd8eef2b7b67e5e3d2c5f42c13d8d15cc5 Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 15 Apr 2023 18:58:56 +0200 Subject: [PATCH 10/20] Update AVR_Miner.py --- AVR_Miner.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/AVR_Miner.py b/AVR_Miner.py index aac56c19..7a343f1e 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -31,9 +31,8 @@ import pip from subprocess import DEVNULL, Popen, check_call, call -from threading import Thread +from threading import Thread, Semaphore from threading import Lock as thread_lock -from threading import Semaphore import base64 as b64 From 5caac5e45d82d189fd6fcb6a329364796a1185fc Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:29:52 +0200 Subject: [PATCH 11/20] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0d0b5131..2e315104 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ Wallet_*/ PCMiner_*/ AVRMiner_*/ +Duino-Coin PC Miner */ +Duino-Coin AVR Miner */ # Byte-compiled and optimized files __pycache__/ @@ -63,4 +65,3 @@ venv/ ENV/ env.bak/ venv.bak/ -Duino-Coin PC Miner 3.4/Settings.cfg From 1e22bd8b8883116a1bb3c3f0ff4f9cd2b51ca44b Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:30:40 +0200 Subject: [PATCH 12/20] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index fd6ef7b9..b2bc599c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019-2022 Robert Piotrowski +Copyright (c) 2019-present Robert Piotrowski Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From cd7d21d8f9d0c115d9d51a4cfad0b3eee888f978 Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 22 Apr 2023 09:56:22 +0200 Subject: [PATCH 13/20] Update AVR_Miner.py -boards can have unique rig identifiers -starting diff correction -small misc improvements --- AVR_Miner.py | 88 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/AVR_Miner.py b/AVR_Miner.py index 7a343f1e..8711fd83 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Duino-Coin Official AVR Miner 3.4 © MIT licensed +Duino-Coin Official AVR Miner 3.45 © MIT licensed https://duinocoin.com https://github.com/revoxhere/duino-coin Duino-Coin Team & Community 2019-2023 @@ -31,8 +31,9 @@ import pip from subprocess import DEVNULL, Popen, check_call, call -from threading import Thread, Semaphore +from threading import Thread from threading import Lock as thread_lock +from threading import Semaphore import base64 as b64 @@ -108,7 +109,7 @@ def port_num(com): class Settings: - VER = '3.4' + VER = '3.45' SOC_TIMEOUT = 15 REPORT_TIME = 120 AVR_TIMEOUT = 10 @@ -160,7 +161,7 @@ def check_updates(): if float(Settings.VER) < float(data["tag_name"]): # If is outdated update = input(Style.BRIGHT + get_string("new_version")) - if update.upper() == "Y": + if update == "Y" or update == "y": pretty_print("sys0", get_string("updating"), "warning") DATA_DIR = "Duino-Coin AVR Miner " + str(data["tag_name"]) # Create new version config folder @@ -290,7 +291,6 @@ def check_mining_key(user_settings): print("sys0", Style.RESET_ALL + get_string("config_saved"), "info") - sleep(1.5) return if not response["success"]: @@ -310,7 +310,6 @@ def check_mining_key(user_settings): print("sys0", Style.RESET_ALL + get_string("config_saved"), "info") - sleep(1.5) check_mining_key(config) else: pretty_print( @@ -318,8 +317,8 @@ def check_mining_key(user_settings): get_string("invalid_mining_key"), "error") - retry = input("You want to retry? (y/n): ") - if retry.upper() == "Y": + retry = input("Do you want to retry? (y/n): ") + if retry == "y" or retry == "Y": mining_key = input("Enter your mining key: ") user_settings["mining_key"] = b64.b64encode(mining_key.encode("utf-8")).decode('utf-8') config["AVR Miner"] = user_settings @@ -650,12 +649,16 @@ def load_config(): if not correct_username: print(get_string("incorrect_username")) - mining_key = input(Style.RESET_ALL + Fore.YELLOW + response = requests.get( + "https://server.duinocoin.com/mining_key" + + "?u=" + username, timeout=10 + ).json() + + mining_key = "None" + if response["has_key"]: + mining_key = input(Style.RESET_ALL + Fore.YELLOW + get_string("ask_mining_key") + Fore.RESET + Style.BRIGHT) - if not mining_key: - mining_key = "None" - else: mining_key = b64.b64encode(mining_key.encode("utf-8")).decode('utf-8') print(Style.RESET_ALL + Fore.YELLOW @@ -674,6 +677,7 @@ def load_config(): port_names.append(port.device) avrport = '' + rig_identifier = '' while True: current_port = input( Style.RESET_ALL + Fore.YELLOW @@ -681,29 +685,33 @@ def load_config(): + Fore.RESET + Style.BRIGHT) if current_port in port_names: + confirm_identifier = input( + Style.RESET_ALL + Fore.YELLOW + + get_string('ask_rig_identifier') + + Fore.RESET + Style.BRIGHT) + if confirm_identifier == 'y' or confirm_identifier == 'Y': + current_identifier = input( + Style.RESET_ALL + Fore.YELLOW + + get_string('ask_rig_name') + + Fore.RESET + Style.BRIGHT) + rig_identifier += current_identifier + else: + rig_identifier += "None" + avrport += current_port confirmation = input( Style.RESET_ALL + Fore.YELLOW + get_string('ask_anotherport') + Fore.RESET + Style.BRIGHT) - if confirmation == 'y' or confirmation == 'Y': avrport += ',' + rig_identifier += ',' else: break else: print(Style.RESET_ALL + Fore.RED + 'Please enter a valid COM port from the list above') - rig_identifier = input( - Style.RESET_ALL + Fore.YELLOW - + get_string('ask_rig_identifier') - + Fore.RESET + Style.BRIGHT) - if rig_identifier == 'y' or rig_identifier == 'Y': - rig_identifier = input( - Style.RESET_ALL + Fore.YELLOW - + get_string('ask_rig_name') - + Fore.RESET + Style.BRIGHT) else: rig_identifier = 'None' @@ -741,6 +749,7 @@ def load_config(): config.write(configfile) avrport = avrport.split(',') + rig_identifier = rig_identifier.split(',') print(Style.RESET_ALL + get_string('config_saved')) hashrate_list = [0] * len(avrport) @@ -751,7 +760,7 @@ def load_config(): avrport = avrport.replace(" ", "").split(',') donation_level = int(config["AVR Miner"]['donate']) debug = config["AVR Miner"]['debug'] - rig_identifier = config["AVR Miner"]['identifier'] + rig_identifier = config["AVR Miner"]['identifier'].split(',') Settings.SOC_TIMEOUT = int(config["AVR Miner"]["soc_timeout"]) Settings.AVR_TIMEOUT = float(config["AVR Miner"]["avr_timeout"]) discord_presence = config["AVR Miner"]["discord_presence"] @@ -801,7 +810,7 @@ def greeting(): + Settings.BLOCK + Style.NORMAL + Fore.RESET + get_string('avr_on_port') + Style.BRIGHT + Fore.YELLOW - + ' '.join(avrport)) + + ', '.join(avrport)) if osname == 'nt' or osname == 'posix': print( @@ -910,10 +919,6 @@ def share_print(id, type, accept, reject, total_hashrate, Produces nicely formatted CLI output for shares: HH:MM:S |avrN| ⛏ Accepted 0/0 (100%) ∙ 0.0s ∙ 0 kH/s ⚙ diff 0 k ∙ ping 0ms """ - try: - diff = get_prefix("", int(diff), 0) - except: - diff = "?" try: total_hashrate = get_prefix("H/s", total_hashrate, 2) @@ -947,12 +952,13 @@ def share_print(id, type, accept, reject, total_hashrate, + f"ping {(int(ping))}ms") -def mine_avr(com, threadid, fastest_pool): +def mine_avr(com, threadid, fastest_pool, thread_rigid): global hashrate start_time = time() report_shares = 0 last_report_share = 0 while True: + shares = [0, 0, 0] while True: try: ser.close() @@ -1040,7 +1046,8 @@ def mine_avr(com, threadid, fastest_pool): prev_hash = "ba29a15896fd2d792d5c4b60668bf2b9feebc51d" exp_hash = "d0beba883d7e8cd119ea2b0e09b78f60f29e0968" exp_result = 50 - while True: + retries = 0 + while retries < 3: try: debug_output(com + ': Sending hash test to the board') ser.write(bytes(str(prev_hash @@ -1068,20 +1075,27 @@ def mine_avr(com, threadid, fastest_pool): break except Exception as e: debug_output(str(e)) + retries += 1 + else: + pretty_print('sys' + port_num(com), + f"Can't start mining on {com}" + Fore.RESET + + f" - board keeps responding improperly. " + + "Check if the code has been uploaded correctly " + + "and your device is supported by Duino-Coin.", + 'error') + break start_diff = "AVR" - if hashrate_test > 6000: + if hashrate_test > 12000: + start_diff = "ESP32" + elif hashrate_test > 6000: start_diff = "ESP8266H" - elif hashrate_test > 4500: start_diff = "ESP8266" - elif hashrate_test > 1000: start_diff = "DUE" - elif hashrate_test > 500: start_diff = "ARM" - elif hashrate_test > 300: start_diff = "MEGA" @@ -1181,7 +1195,7 @@ def mine_avr(com, threadid, fastest_pool): + Settings.SEPARATOR + f'Official AVR Miner {Settings.VER}' + Settings.SEPARATOR - + str(rig_identifier) + + str(thread_rigid) + Settings.SEPARATOR + str(result[2])) @@ -1327,7 +1341,7 @@ def calculate_uptime(start_time): for port in avrport: Thread(target=mine_avr, args=(port, threadid, - fastest_pool)).start() + fastest_pool, rig_identifier[threadid])).start() threadid += 1 except Exception as e: debug_output(f'Error launching AVR thread(s): {e}') From 0bdc7e3f6781b9206bc8bb46fac8e3881924f325 Mon Sep 17 00:00:00 2001 From: dexter3k Date: Thu, 27 Apr 2023 01:14:58 +0300 Subject: [PATCH 14/20] Improve arduino hashrate to 340 hps --- Arduino_Code/Arduino_Code.ino | 180 +++++++++++++++------------ Arduino_Code/backend.cpp | 25 ---- Arduino_Code/config.h | 28 ----- Arduino_Code/duco_hash.cpp | 152 +++++++++++++++++++++++ Arduino_Code/duco_hash.h | 19 +++ Arduino_Code/sha1.cpp | 58 --------- Arduino_Code/sha1.h | 48 -------- Arduino_Code/sha1/basic.h | 26 ---- Arduino_Code/sha1/constants.c | 30 ----- Arduino_Code/sha1/constants.h | 58 --------- Arduino_Code/sha1/default.h | 31 ----- Arduino_Code/sha1/hash.c | 222 ---------------------------------- Arduino_Code/sha1/hash.h | 56 --------- Arduino_Code/sha1/sha1.c | 36 ------ Arduino_Code/sha1/sha1.h | 33 ----- Arduino_Code/sha1/types.c | 52 -------- Arduino_Code/sha1/types.h | 60 --------- 17 files changed, 274 insertions(+), 840 deletions(-) delete mode 100644 Arduino_Code/backend.cpp delete mode 100644 Arduino_Code/config.h create mode 100644 Arduino_Code/duco_hash.cpp create mode 100644 Arduino_Code/duco_hash.h delete mode 100644 Arduino_Code/sha1.cpp delete mode 100644 Arduino_Code/sha1.h delete mode 100644 Arduino_Code/sha1/basic.h delete mode 100644 Arduino_Code/sha1/constants.c delete mode 100644 Arduino_Code/sha1/constants.h delete mode 100644 Arduino_Code/sha1/default.h delete mode 100644 Arduino_Code/sha1/hash.c delete mode 100644 Arduino_Code/sha1/hash.h delete mode 100644 Arduino_Code/sha1/sha1.c delete mode 100644 Arduino_Code/sha1/sha1.h delete mode 100644 Arduino_Code/sha1/types.c delete mode 100644 Arduino_Code/sha1/types.h diff --git a/Arduino_Code/Arduino_Code.ino b/Arduino_Code/Arduino_Code.ino index fa594b05..60062380 100644 --- a/Arduino_Code/Arduino_Code.ino +++ b/Arduino_Code/Arduino_Code.ino @@ -23,24 +23,26 @@ for default settings use -O0. -O may be a good tradeoff between both */ /* For 8-bit microcontrollers we should use 16 bit variables since the difficulty is low, for all the other cases should be 32 bits. */ #if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_MEGAAVR) -typedef uint16_t uintDiff; +typedef uint32_t uintDiff; #else typedef uint32_t uintDiff; #endif // Arduino identifier library - https://github.com/ricaun #include "uniqueID.h" -#include "sha1.h" -// Create globals -String lastblockhash = ""; -String newblockhash = ""; +#include "duco_hash.h" + +String get_DUCOID() { + String ID = "DUCOID"; + char buff[4]; + for (size_t i = 0; i < 8; i++) { + sprintf(buff, "%02X", (uint8_t)UniqueID8[i]); + ID += buff; + } + return ID; +} + String DUCOID = ""; -uintDiff difficulty = 0; -uintDiff ducos1result = 0; -// 40+40+20+3 is the maximum size of a job -const uint16_t job_maxsize = 104; -uint8_t job[job_maxsize]; -Sha1Wrapper Sha1_base; void setup() { // Prepare built-in led pin as output @@ -54,83 +56,107 @@ void setup() { Serial.flush(); } +void lowercase_hex_to_bytes(char const * hexDigest, uint8_t * rawDigest) { + for (uint8_t i = 0, j = 0; j < SHA1_HASH_LEN; i += 2, j += 1) { + uint8_t x = hexDigest[i]; + uint8_t b = x >> 6; + uint8_t r = ((x & 0xf) | (b << 3)) + b; + + x = hexDigest[i + 1]; + b = x >> 6; + + rawDigest[j] = (r << 4) | (((x & 0xf) | (b << 3)) + b); + } +} + // DUCO-S1A hasher -uintDiff ducos1a(String lastblockhash, String newblockhash, - uintDiff difficulty) { - newblockhash.toUpperCase(); - const char *c = newblockhash.c_str(); - uint8_t final_len = newblockhash.length() >> 1; - for (uint8_t i = 0, j = 0; j < final_len; i += 2, j++) - job[j] = ((((c[i] & 0x1F) + 9) % 25) << 4) + ((c[i + 1] & 0x1F) + 9) % 25; - - // Difficulty loop +uintDiff ducos1a(char const * prevBlockHash, char const * targetBlockHash, uintDiff difficulty) { #if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_MEGAAVR) // If the difficulty is too high for AVR architecture then return 0 if (difficulty > 655) return 0; #endif - Sha1_base.init(); - Sha1_base.print(lastblockhash); - for (uintDiff ducos1res = 0; ducos1res < difficulty * 100 + 1; ducos1res++) { - Sha1 = Sha1_base; - Sha1.print(String(ducos1res)); - // Get SHA1 result - uint8_t *hash_bytes = Sha1.result(); - if (memcmp(hash_bytes, job, SHA1_HASH_LEN * sizeof(char)) == 0) { - // If expected hash is equal to the found hash, return the result - return ducos1res; - } - } - return 0; + + uint8_t target[SHA1_HASH_LEN]; + lowercase_hex_to_bytes(targetBlockHash, target); + + uintDiff const maxNonce = difficulty * 100 + 1; + return ducos1a_mine(prevBlockHash, target, maxNonce); } -String get_DUCOID() { - String ID = "DUCOID"; - char buff[4]; - for (size_t i = 0; i < 8; i++) { - sprintf(buff, "%02X", (uint8_t)UniqueID8[i]); - ID += buff; +uintDiff ducos1a_mine(char const * prevBlockHash, uint8_t const * target, uintDiff maxNonce) { + static duco_hash_state_t hash; + duco_hash_init(&hash, prevBlockHash); + + char nonceStr[10 + 1]; + for (uintDiff nonce = 0; nonce < maxNonce; nonce++) { + ultoa(nonce, nonceStr, 10); + + uint8_t const * hash_bytes = duco_hash_try_nonce(&hash, nonceStr); + if (memcmp(hash_bytes, target, SHA1_HASH_LEN) == 0) { + return nonce; + } } - return ID; + + return 0; } void loop() { // Wait for serial data - if (Serial.available() > 0) { - memset(job, 0, job_maxsize); - // Read last block hash - lastblockhash = Serial.readStringUntil(','); - // Read expected hash - newblockhash = Serial.readStringUntil(','); - // Read difficulty - difficulty = strtoul(Serial.readStringUntil(',').c_str(), NULL, 10); - // Clearing the receive buffer reading one job. - while (Serial.available()) Serial.read(); - // Turn on the built-in led - #if defined(ARDUINO_ARCH_AVR) - PORTB = PORTB | B00100000; - #else - digitalWrite(LED_BUILTIN, LOW); - #endif - // Start time measurement - uint32_t startTime = micros(); - // Call DUCO-S1A hasher - ducos1result = ducos1a(lastblockhash, newblockhash, difficulty); - // Calculate elapsed time - uint32_t elapsedTime = micros() - startTime; - // Turn on the built-in led - #if defined(ARDUINO_ARCH_AVR) - PORTB = PORTB & B11011111; - #else - digitalWrite(LED_BUILTIN, HIGH); - #endif - // Clearing the receive buffer before sending the result. - while (Serial.available()) Serial.read(); - // Send result back to the program with share time - Serial.print(String(ducos1result, 2) - + "," - + String(elapsedTime, 2) - + "," - + String(DUCOID) - + "\n"); + if (Serial.available() <= 0) { + return; + } + + // Reserve 1 extra byte for comma separator (and later zero) + char lastBlockHash[40 + 1]; + char newBlockHash[40 + 1]; + + // Read last block hash + if (Serial.readBytesUntil(',', lastBlockHash, 41) != 40) { + return; + } + lastBlockHash[40] = 0; + + // Read expected hash + if (Serial.readBytesUntil(',', newBlockHash, 41) != 40) { + return; } + newBlockHash[40] = 0; + + // Read difficulty + uintDiff difficulty = strtoul(Serial.readStringUntil(',').c_str(), NULL, 10); + // Clearing the receive buffer reading one job. + while (Serial.available()) Serial.read(); + // Turn on the built-in led + #if defined(ARDUINO_ARCH_AVR) + PORTB = PORTB | B00100000; + #else + digitalWrite(LED_BUILTIN, LOW); + #endif + + // Start time measurement + uint32_t startTime = micros(); + + // Call DUCO-S1A hasher + uintDiff ducos1result = ducos1a(lastBlockHash, newBlockHash, difficulty); + + // Calculate elapsed time + uint32_t elapsedTime = micros() - startTime; + + // Turn on the built-in led + #if defined(ARDUINO_ARCH_AVR) + PORTB = PORTB & B11011111; + #else + digitalWrite(LED_BUILTIN, HIGH); + #endif + + // Clearing the receive buffer before sending the result. + while (Serial.available()) Serial.read(); + + // Send result back to the program with share time + Serial.print(String(ducos1result, 2) + + "," + + String(elapsedTime, 2) + + "," + + String(DUCOID) + + "\n"); } diff --git a/Arduino_Code/backend.cpp b/Arduino_Code/backend.cpp deleted file mode 100644 index 70c9d201..00000000 --- a/Arduino_Code/backend.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#pragma GCC optimize ("-Ofast") -#include "config.h" - -#ifndef SHA1_DISABLED -#include "sha1/constants.c" -#include "sha1/hash.c" -#include "sha1/types.c" -#include "sha1/sha1.c" -#endif diff --git a/Arduino_Code/config.h b/Arduino_Code/config.h deleted file mode 100644 index 4406388a..00000000 --- a/Arduino_Code/config.h +++ /dev/null @@ -1,28 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#pragma GCC optimize ("-Ofast") - -// include the module config first, -// overwrite it in the arduino interface config. -#include "sha1/default.h" - -#ifndef SHA_CONFIG_H_ -#define SHA_CONFIG_H_ - -// No changes yet. - -#endif diff --git a/Arduino_Code/duco_hash.cpp b/Arduino_Code/duco_hash.cpp new file mode 100644 index 00000000..f5d1cc16 --- /dev/null +++ b/Arduino_Code/duco_hash.cpp @@ -0,0 +1,152 @@ +#include "duco_hash.h" + +#pragma GCC optimize ("-Ofast") + +#define sha1_rotl(bits,word) (((word) << (bits)) | ((word) >> (32 - (bits)))) + +void duco_hash_block(duco_hash_state_t * hasher) { + // NOTE: keeping this static improves performance quite a lot + static uint32_t w[16]; + + for (uint8_t i = 0, i4 = 0; i < 16; i++, i4 += 4) { + w[i] = (uint32_t(hasher->buffer[i4]) << 24) | + (uint32_t(hasher->buffer[i4 + 1]) << 16) | + (uint32_t(hasher->buffer[i4 + 2]) << 8) | + (uint32_t(hasher->buffer[i4 + 3])); + } + + uint32_t a = hasher->tempState[0]; + uint32_t b = hasher->tempState[1]; + uint32_t c = hasher->tempState[2]; + uint32_t d = hasher->tempState[3]; + uint32_t e = hasher->tempState[4]; + + for (uint8_t i = 10; i < 80; i++) { + if (i >= 16) { + w[i & 15] = sha1_rotl(1, w[(i-3) & 15] ^ w[(i-8) & 15] ^ w[(i-14) & 15] ^ w[(i-16) & 15]); + } + + uint32_t temp = sha1_rotl(5, a) + e + w[i & 15]; + if (i < 20) { + temp += (b & c) | ((~b) & d); + temp += 0x5a827999; + } else if(i < 40) { + temp += b ^ c ^ d; + temp += 0x6ed9eba1; + } else if(i < 60) { + temp += (b & c) | (b & d) | (c & d); + temp += 0x8f1bbcdc; + } else { + temp += b ^ c ^ d; + temp += 0xca62c1d6; + } + + e = d; + d = c; + c = sha1_rotl(30, b); + b = a; + a = temp; + } + + a += 0x67452301; + b += 0xefcdab89; + c += 0x98badcfe; + d += 0x10325476; + e += 0xc3d2e1f0; + + hasher->result[0 * 4 + 0] = a >> 24; + hasher->result[0 * 4 + 1] = a >> 16; + hasher->result[0 * 4 + 2] = a >> 8; + hasher->result[0 * 4 + 3] = a; + hasher->result[1 * 4 + 0] = b >> 24; + hasher->result[1 * 4 + 1] = b >> 16; + hasher->result[1 * 4 + 2] = b >> 8; + hasher->result[1 * 4 + 3] = b; + hasher->result[2 * 4 + 0] = c >> 24; + hasher->result[2 * 4 + 1] = c >> 16; + hasher->result[2 * 4 + 2] = c >> 8; + hasher->result[2 * 4 + 3] = c; + hasher->result[3 * 4 + 0] = d >> 24; + hasher->result[3 * 4 + 1] = d >> 16; + hasher->result[3 * 4 + 2] = d >> 8; + hasher->result[3 * 4 + 3] = d; + hasher->result[4 * 4 + 0] = e >> 24; + hasher->result[4 * 4 + 1] = e >> 16; + hasher->result[4 * 4 + 2] = e >> 8; + hasher->result[4 * 4 + 3] = e; +} + +void duco_hash_init(duco_hash_state_t * hasher, char const * prevHash) { + for (uint8_t i = 0; i < 40; i++) { + hasher->buffer[i] = prevHash[i]; + } + + if (prevHash == (void*)(0xffffffff)) { + // NOTE: THIS IS NEVER CALLED + // This is here to keep a live reference to hash_block + // Otherwise GCC tries to inline it entirely into the main loop + // Which causes massive perf degradation + duco_hash_block(nullptr); + } + + // Do first 10 rounds as these are going to be the same all time + + uint32_t a = 0x67452301; + uint32_t b = 0xefcdab89; + uint32_t c = 0x98badcfe; + uint32_t d = 0x10325476; + uint32_t e = 0xc3d2e1f0; + + static uint32_t w[10]; + + for (uint8_t i = 0, i4 = 0; i < 10; i++, i4 += 4) { + w[i] = (uint32_t(hasher->buffer[i4]) << 24) | + (uint32_t(hasher->buffer[i4 + 1]) << 16) | + (uint32_t(hasher->buffer[i4 + 2]) << 8) | + (uint32_t(hasher->buffer[i4 + 3])); + } + + for (uint8_t i = 0; i < 10; i++) { + uint32_t temp = sha1_rotl(5, a) + e + w[i & 15]; + temp += (b & c) | ((~b) & d); + temp += 0x5a827999; + + e = d; + d = c; + c = sha1_rotl(30, b); + b = a; + a = temp; + } + + hasher->tempState[0] = a; + hasher->tempState[1] = b; + hasher->tempState[2] = c; + hasher->tempState[3] = d; + hasher->tempState[4] = e; +} + +void duco_hash_set_nonce(duco_hash_state_t * hasher, char const * nonce) { + uint8_t * b = hasher->buffer; + + uint8_t off = SHA1_HASH_LEN * 2; + for (uint8_t i = 0; i < 10 && nonce[i] != 0; i++) { + b[off++] = nonce[i]; + } + + uint8_t total_bytes = off; + + b[off++] = 0x80; + while (off < 62) { + b[off++] = 0; + } + + b[62] = total_bytes >> 5; + b[63] = total_bytes << 3; +} + +uint8_t const * duco_hash_try_nonce(duco_hash_state_t * hasher, char const * nonce) { + duco_hash_set_nonce(hasher, nonce); + duco_hash_block(hasher); + + return hasher->result; +} diff --git a/Arduino_Code/duco_hash.h b/Arduino_Code/duco_hash.h new file mode 100644 index 00000000..fae94d18 --- /dev/null +++ b/Arduino_Code/duco_hash.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +#define SHA1_BLOCK_LEN 64 +#define SHA1_HASH_LEN 20 + +struct duco_hash_state_t { + uint8_t buffer[SHA1_BLOCK_LEN]; + uint8_t result[SHA1_HASH_LEN]; + uint32_t tempState[5]; + + uint8_t block_offset; + uint8_t total_bytes; +}; + +void duco_hash_init(duco_hash_state_t * hasher, char const * prevHash); + +uint8_t const * duco_hash_try_nonce(duco_hash_state_t * hasher, char const * nonce); diff --git a/Arduino_Code/sha1.cpp b/Arduino_Code/sha1.cpp deleted file mode 100644 index ed8eebf9..00000000 --- a/Arduino_Code/sha1.cpp +++ /dev/null @@ -1,58 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#pragma GCC optimize ("-Ofast") - -#include "sha1.h" - -#ifndef SHA1_DISABLED -#ifndef SHA1_DISABLE_WRAPPER -void Sha1Wrapper::init(void) -{ - sha1_hasher_init(&_hasher); -} - -#ifdef SHA1_ENABLE_HMAC -void Sha1Wrapper::initHmac(const uint8_t * secret, uint16_t secretLength) -{ - sha1_hasher_init_hmac(&_hasher, secret, secretLength); -} - -uint8_t * Sha1Wrapper::resultHmac(void) -{ - return sha1_hasher_gethmac(&_hasher); -} -#endif - - -size_t Sha1Wrapper::write(uint8_t byte) -{ - if(sha1_hasher_putc(&_hasher, byte) == byte) - { - return 1; - } - return 0; -} - -uint8_t * Sha1Wrapper::result(void) -{ - return sha1_hasher_gethash(&_hasher); -} - -Sha1Wrapper Sha1; - -#endif -#endif diff --git a/Arduino_Code/sha1.h b/Arduino_Code/sha1.h deleted file mode 100644 index 50bfe622..00000000 --- a/Arduino_Code/sha1.h +++ /dev/null @@ -1,48 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#pragma GCC optimize ("-Ofast") - -#include "config.h" - -#ifndef Sha1_h -#define Sha1_h - -#include -#include "Print.h" -#include "sha1/sha1.h" - -#ifndef SHA1_DISABLE_WRAPPER -class Sha1Wrapper : public Print -{ - public: - void init(void); - uint8_t * result(void); -#ifdef SHA1_ENABLE_HMAC - void initHmac(const uint8_t * secret, uint16_t secretLength); - uint8_t * resultHmac(void); -#endif - virtual size_t write(uint8_t); - using Print::write; - private: - struct sha1_hasher_s _hasher; - -}; - -extern Sha1Wrapper Sha1; -#endif - -#endif diff --git a/Arduino_Code/sha1/basic.h b/Arduino_Code/sha1/basic.h deleted file mode 100644 index 1f021c7c..00000000 --- a/Arduino_Code/sha1/basic.h +++ /dev/null @@ -1,26 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#ifndef SHA1_BASIC_H_ -#define SHA1_BASIC_H_ - -#include "default.h" -#include - -#define sha1_rotl(bits,word) (((word) << (bits)) | ((word) >> (32 - (bits)))) - -#endif - diff --git a/Arduino_Code/sha1/constants.c b/Arduino_Code/sha1/constants.c deleted file mode 100644 index 4d044969..00000000 --- a/Arduino_Code/sha1/constants.c +++ /dev/null @@ -1,30 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#include "constants.h" - -const uint32_t sha1_init_state[SHA1_HASH_LEN / 4] PROGMEM = -{ - 0x67452301, 0xefcdab89, 0x98badcfe, - 0x10325476, 0xc3d2e1f0 -}; - -const uint32_t sha1_constants[4] PROGMEM = -{ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6 -}; - - diff --git a/Arduino_Code/sha1/constants.h b/Arduino_Code/sha1/constants.h deleted file mode 100644 index 294d72d0..00000000 --- a/Arduino_Code/sha1/constants.h +++ /dev/null @@ -1,58 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#ifndef SHA1_CONSTANTS_H_ -#define SHA1_CONSTANTS_H_ - -#include "default.h" -#include - -#define SHA1_BLOCK_LEN 64 -#define SHA1_HASH_LEN 20 - -#include "Arduino.h" - -extern const uint32_t sha1_init_state[SHA1_HASH_LEN / 4] PROGMEM; - -extern const uint32_t sha1_constants[4] PROGMEM; - - -// From RFC3174 (http://www.faqs.org/rfcs/rfc3174.html) -// (Section 5): -// -// A sequence of constant words K(0), K(1), ... , K(79) is used in the -// SHA-1. In hex these are given by -// -// K(t) = 5A827999 ( 0 <= t <= 19) -// -// K(t) = 6ED9EBA1 (20 <= t <= 39) -// -// K(t) = 8F1BBCDC (40 <= t <= 59) -// -// K(t) = CA62C1D6 (60 <= t <= 79). -// -// This can be achieved using an integer division by 20 and only 4 constants. - -#define sha1_k(i) pgm_read_dword(sha1_constants + (i / 20)) - - -#ifdef SHA1_ENABLE_HMAC -#define SHA1_HMAC_IPAD 0x36 -#define SHA1_HMAC_OPAD 0x5c -#endif - -#endif - diff --git a/Arduino_Code/sha1/default.h b/Arduino_Code/sha1/default.h deleted file mode 100644 index 2474e9e8..00000000 --- a/Arduino_Code/sha1/default.h +++ /dev/null @@ -1,31 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -// This file is the module config header -// when the arduino interface is NOT used. -// -// If you want to use the library with Arduino, -// edit sha/config.h. If you use a proper build system, -// use this config file for sha1 and sha/sha256/default.h -// for sha256. -#ifndef SHA1_DEFAULT_H_ -#define SHA1_DEFAULT_H_ - -#define SHA1_ENABLE_HMAC - - -#endif - diff --git a/Arduino_Code/sha1/hash.c b/Arduino_Code/sha1/hash.c deleted file mode 100644 index 143ed63e..00000000 --- a/Arduino_Code/sha1/hash.c +++ /dev/null @@ -1,222 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#include "hash.h" -#include -#include - - -void sha1_hash_block(sha1_hasher_t hasher) -{ - uint8_t i; - uint32_t a, b, c, d, e, temp; - - // XXX: Omit initializing the message schedule. - // See how I did this below. - // Allocating the message schedule would eat 2k RAM - // which is a no-go on an AVR. - uint8_t i4; - // On x86 we have to change the byte order, because... - // I actually do not know. - for(i = i4 = 0; i < 16; i++, i4 += 4) - { - hasher->buffer.words[i] = (((uint32_t)hasher->buffer.bytes[i4]) << 24) | - (((uint32_t)hasher->buffer.bytes[i4 + 1]) << 16) | - (((uint32_t)hasher->buffer.bytes[i4 + 2]) << 8) | - (((uint32_t)hasher->buffer.bytes[i4 + 3])); - } - - a = hasher->state.words[0]; - b = hasher->state.words[1]; - c = hasher->state.words[2]; - d = hasher->state.words[3]; - e = hasher->state.words[4]; - - for(i = 0; i < 80; i++) - { - // XXX: - // This part of the computation omits the message schedule - // W as described in https://tools.ietf.org/html/rfc4634 - // The first 16 words of the message schedule is just the block - // anyways and the computation of the message schedule uses only - // the last 16 words, so we can do that. - if( i >= 16 ) - { - hasher->buffer.words[i & 15] = sha1_rotl(1 - , hasher->buffer.words[(i - 3)& 15] - ^ hasher->buffer.words[(i - 8)& 15] - ^ hasher->buffer.words[(i - 14)& 15] - ^ hasher->buffer.words[(i - 16)& 15]); - } - - temp = sha1_rotl(5, a) + e + hasher->buffer.words[i & 15] + sha1_k(i); - if(i < 20) - { - temp += (b & c) | ((~b) & d); - } - else if(i < 40) - { - temp += b ^ c ^ d; - } - else if(i < 60) - { - temp += (b & c) | (b & d) | (c & d); - } - else - { - temp += b ^ c ^ d; - } - - - - - - e = d; - d = c; - c = sha1_rotl(30, b); - b = a; - a = temp; - } - hasher->state.words[0] += a; - hasher->state.words[1] += b; - hasher->state.words[2] += c; - hasher->state.words[3] += d; - hasher->state.words[4] += e; - -} - - - -void sha1_hasher_add_byte(sha1_hasher_t hasher, uint8_t byte) -{ - hasher->buffer.bytes[hasher->block_offset] = byte; - hasher->block_offset++; - if(hasher->block_offset == SHA1_BLOCK_LEN) - { - sha1_hash_block(hasher); - hasher->block_offset = 0; - } -} - -/** - * NOTE: once the block has been pad'ed the hasher will - * produce nonsense data. Therefore putc will return EOF - * once the hasher has been pad'ed (this happens, when - * sha1_hasher_gethash or sha1_hasher_gethmac are invoced). - * */ -uint8_t sha1_hasher_putc(sha1_hasher_t hasher, uint8_t byte) -{ - if(hasher->_lock) - { - return EOF; - } - hasher->total_bytes++; - sha1_hasher_add_byte(hasher, byte); - return byte; - -} - - - -void sha1_hasher_pad(sha1_hasher_t hasher) -{ - hasher->_lock = 1; - sha1_hasher_add_byte(hasher, 0x80); - while(hasher->block_offset != 56) - { - sha1_hasher_add_byte(hasher, 0); - } - - // FIXME: - // Use a loop for this. - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 56); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 48); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 40); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 32); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 24); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 16); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8 >> 8); - sha1_hasher_add_byte(hasher, hasher->total_bytes * 8); - -} - -uint8_t * sha1_hasher_gethash(sha1_hasher_t hasher) -{ - sha1_hasher_pad(hasher); - uint8_t i; - - // switch byte order. - for(i = 0; i < (SHA1_HASH_LEN / 4); i++) - { - uint32_t a, b; - a = hasher->state.words[i]; - b = a << 24; - b |= ( a << 8) & 0x00ff0000; - b |= ( a >> 8) & 0x0000ff00; - b |= a >> 24; - hasher->state.words[i] = b; - } - return hasher->state.bytes; -} - - -#ifdef SHA1_ENABLE_HMAC -void sha1_hasher_init_hmac(sha1_hasher_t hasher, const uint8_t * key, size_t key_len) -{ - uint8_t i; - memset(hasher->hmac_key_buffer, 0, SHA1_BLOCK_LEN); - - if(key_len > SHA1_BLOCK_LEN) - { - sha1_hasher_init(hasher); - while(key_len--) - { - sha1_hasher_putc(hasher, *key++); - } - memcpy(hasher->hmac_key_buffer, - sha1_hasher_gethash(hasher), - SHA1_HASH_LEN); - } - else - { - memcpy(hasher->hmac_key_buffer, key, key_len); - } - sha1_hasher_init(hasher); - for(i = 0; i < SHA1_BLOCK_LEN; i++) - { - sha1_hasher_putc(hasher, hasher->hmac_key_buffer[i] ^ SHA1_HMAC_IPAD); - } - -} -uint8_t * sha1_hasher_gethmac(sha1_hasher_t hasher) -{ - uint8_t i; - memcpy(hasher->hmac_inner_hash, sha1_hasher_gethash(hasher), - SHA1_HASH_LEN); - sha1_hasher_init(hasher); - - for(i = 0; i < SHA1_BLOCK_LEN; i++) - { - sha1_hasher_putc(hasher, hasher->hmac_key_buffer[i] ^ SHA1_HMAC_OPAD); - } - for(i = 0; i < SHA1_HASH_LEN; i++) - { - sha1_hasher_putc(hasher, hasher->hmac_inner_hash[i]); - } - return sha1_hasher_gethash(hasher); -} -#endif - diff --git a/Arduino_Code/sha1/hash.h b/Arduino_Code/sha1/hash.h deleted file mode 100644 index 28dc4850..00000000 --- a/Arduino_Code/sha1/hash.h +++ /dev/null @@ -1,56 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#ifndef SHA1_HASH_H_ -#define SHA1_HASH_H_ - - -#include "default.h" -#include "constants.h" -#include "types.h" -#include "basic.h" - -void sha1_hash_block(sha1_hasher_t hasher); - -void sha1_hasher_add_byte(sha1_hasher_t hasher, uint8_t byte); - -/** - * NOTE: once the block has been pad'ed the hasher will - * produce nonsense data. Therefore putc will return EOF - * once the hasher has been pad'ed (this happens, when - * sha1_hasher_gethash or sha1_hasher_gethmac are invoced). - * */ -uint8_t sha1_hasher_putc(sha1_hasher_t hasher, uint8_t byte); - -void sha1_hasher_pad(sha1_hasher_t hasher); - -/** - * NOTE: this will NOT return a copy of the data but - * a REFERENCE! One MUST NOT free the result. - * - * Also this modifies the state of the hasher. The - * hasher has an internal lock ensuring that writing - * to the hasher fails after this operation. - * */ -uint8_t * sha1_hasher_gethash(sha1_hasher_t hasher); - -#ifdef SHA1_ENABLE_HMAC -void sha1_hasher_init_hmac(sha1_hasher_t hasher, const uint8_t * key, size_t key_len); -uint8_t * sha1_hasher_gethmac(sha1_hasher_t hasher); -#endif - -#endif - diff --git a/Arduino_Code/sha1/sha1.c b/Arduino_Code/sha1/sha1.c deleted file mode 100644 index 925374eb..00000000 --- a/Arduino_Code/sha1/sha1.c +++ /dev/null @@ -1,36 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#include "sha1.h" - -ssize_t sha1_hasher_write(sha1_hasher_t hasher, const void * buf, size_t count) -{ - size_t written = 0; - uint8_t chk_result; - char c; - while(written < count) - { - c = ((char *) buf)[written]; - chk_result = sha1_hasher_putc(hasher, c); - if(chk_result != c) - { - return -1; - } - written++; - } - return written; -} - diff --git a/Arduino_Code/sha1/sha1.h b/Arduino_Code/sha1/sha1.h deleted file mode 100644 index 24544498..00000000 --- a/Arduino_Code/sha1/sha1.h +++ /dev/null @@ -1,33 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#ifndef SHA1_SHA1_H_ -#define SHA1_SHA1_H_ - -#include "default.h" -#include "types.h" -#include "hash.h" -#include -//#include - -#ifndef ssize_t -#define ssize_t long int -#endif - -ssize_t sha1_hasher_write(sha1_hasher_t hasher, const void * buf, size_t count); - -#endif - diff --git a/Arduino_Code/sha1/types.c b/Arduino_Code/sha1/types.c deleted file mode 100644 index 0199bbfe..00000000 --- a/Arduino_Code/sha1/types.c +++ /dev/null @@ -1,52 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#include "types.h" -#include -#include -#include "constants.h" - -sha1_hasher_t sha1_hasher_new(void) -{ - sha1_hasher_t hasher = (sha1_hasher_t) malloc(sizeof(struct sha1_hasher_s)); - if(!hasher) - { - return NULL; - } - sha1_hasher_init(hasher); - return hasher; -} - -void sha1_hasher_init(sha1_hasher_t hasher) -{ - uint8_t i; - for(i = 0; i < SHA1_HASH_LEN / 4; i++) - { - hasher->state.words[i] = pgm_read_dword(sha1_init_state + i); - } - hasher->block_offset = 0; - hasher->total_bytes = 0; - hasher->_lock = 0; - -} - - -void sha1_hasher_del(sha1_hasher_t hasher) -{ - free(hasher); -} - - diff --git a/Arduino_Code/sha1/types.h b/Arduino_Code/sha1/types.h deleted file mode 100644 index d0a681f5..00000000 --- a/Arduino_Code/sha1/types.h +++ /dev/null @@ -1,60 +0,0 @@ -// This file is part of cryptosuite2. // -// // -// cryptosuite2 is free software: you can redistribute it and/or modify // -// it under the terms of the GNU General Public License as published by // -// the Free Software Foundation, either version 3 of the License, or // -// (at your option) any later version. // -// // -// cryptosuite2 is distributed in the hope that it will be useful, // -// but WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // -// GNU General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with cryptosuite2. If not, see . // -// // - -#ifndef SHA1_TYPES_H_ -#define SHA1_TYPES_H_ - -#include "default.h" -#include -#include -#include "constants.h" - - -typedef union -{ - uint8_t bytes[SHA1_HASH_LEN]; - uint32_t words[SHA1_HASH_LEN / 4]; - -} sha1_state_t; - -typedef union -{ - uint8_t bytes[SHA1_BLOCK_LEN]; - uint32_t words[SHA1_BLOCK_LEN / 4]; - -} sha1_block_t; - -typedef struct __attribute__((__packed__)) sha1_hasher_s -{ - sha1_state_t state; - sha1_block_t buffer; - - uint8_t block_offset; - uint64_t total_bytes; - uint8_t _lock; -#ifdef SHA1_ENABLE_HMAC - uint8_t hmac_key_buffer[SHA1_BLOCK_LEN]; - uint8_t hmac_inner_hash[SHA1_HASH_LEN]; -#endif -} * sha1_hasher_t; - -sha1_hasher_t sha1_hasher_new(void); -void sha1_hasher_del(sha1_hasher_t hasher); -void sha1_hasher_init(sha1_hasher_t hasher); - - -#endif - From 6a57e220bad4a4f33533e853c429fdc6582e37c5 Mon Sep 17 00:00:00 2001 From: EeroVakiparta Date: Sun, 30 Apr 2023 19:06:05 +0300 Subject: [PATCH 15/20] Add Finnish translation and related modifications - _langs.json files translation - Finnish README - Links to Finnish README - language option for _Miner & Wallet python files --- AVR_Miner.py | 2 + PC_Miner.py | 2 + README.md | 2 + Resources/AVR_Miner_langs.json | 94 ++++++ Resources/CLI_Wallet_langs.json | 90 ++++++ Resources/PC_Miner_langs.json | 105 +++++++ Resources/README_TRANSLATIONS/README-fr-FR.md | 2 + Resources/README_TRANSLATIONS/README_cz_CZ.md | 2 + Resources/README_TRANSLATIONS/README_de_DE.md | 2 + .../README_TRANSLATIONS/README_es_LATAM.md | 2 + Resources/README_TRANSLATIONS/README_fi_FI.md | 282 ++++++++++++++++++ Resources/README_TRANSLATIONS/README_id_ID.md | 2 + Resources/README_TRANSLATIONS/README_in_HI.md | 2 + Resources/README_TRANSLATIONS/README_it_IT.md | 2 + Resources/README_TRANSLATIONS/README_ja_JP.md | 2 + Resources/README_TRANSLATIONS/README_kr_KR.md | 2 + Resources/README_TRANSLATIONS/README_pt_BR.md | 2 + Resources/README_TRANSLATIONS/README_ru_RU.md | 3 + Resources/README_TRANSLATIONS/README_sk_SK.md | 2 + Resources/README_TRANSLATIONS/README_th_TH.md | 2 + Resources/README_TRANSLATIONS/README_tr_TR.md | 2 + Resources/README_TRANSLATIONS/README_zh_CN.md | 2 + Resources/Wallet_langs.json | 105 +++++++ Wallet.py | 2 + 24 files changed, 715 insertions(+) create mode 100644 Resources/README_TRANSLATIONS/README_fi_FI.md diff --git a/AVR_Miner.py b/AVR_Miner.py index 8711fd83..df680c67 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -529,6 +529,8 @@ def start(donation_level): lang = "indonesian" elif locale.startswith("cz"): lang = "czech" + elif locale.startswith("fi"): + lang = "finnish" else: lang = 'english' else: diff --git a/PC_Miner.py b/PC_Miner.py index 9eb734b5..48ff4bac 100644 --- a/PC_Miner.py +++ b/PC_Miner.py @@ -853,6 +853,8 @@ def preload(): lang = "indonesian" elif locale.startswith("cz"): lang = "czech" + elif locale.startswith("fi"): + lang = "finnish" else: lang = "english" else: diff --git a/README.md b/README.md index 50c8de92..491e0dee 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,8 @@ + + diff --git a/Resources/AVR_Miner_langs.json b/Resources/AVR_Miner_langs.json index 5f84872b..e2b045d1 100644 --- a/Resources/AVR_Miner_langs.json +++ b/Resources/AVR_Miner_langs.json @@ -1387,5 +1387,99 @@ "motd": "本日のサーバーメッセージ: ", "hashrate_test": "ハッシュレートのテストは以下にて終了 ", "hashrate_test_diff": "、開始時の難易度を設定: " + }, + "finnish": { + "translation_autor": "EeroVakiparta", + "sigint_detected": " SIGINT havaittu - Poistutaan siististi.", + "goodbye": " Nähdään pian!", + "greeting_morning": "Toivotamme sinulle ihanaa aamua", + "greeting_noon": "Toivotamme sinulle herkullista keskipäivää", + "greeting_afternoon": "Toivotamme sinulle rauhallista iltapäivää", + "greeting_evening": "Toivotamme sinulle kotoisaa iltaa", + "greeting_back": "Tervetuloa takaisin", + "banner": "Virallinen Duino-Coin © AVR Miner", + "donation_level": "Kehittäjien lahjoitustaso: ", + "avr_on_port": "AVR-piirilevy(t) portissa/porteissa: ", + "algorithm": "Algoritmi: ", + "rig_identifier": "Rig-tunniste: ", + "basic_config_tool": "\nDuino-Coinin perusasetusten työkalu\nMuokkaa ", + "edit_config_file_warning": "/Miner_config.cfg-tiedostoa myöhemmin, jos haluat muuttaa sitä.", + "dont_have_account": "Eikö sinulla ole vielä Duino-Coin-tiliä? Käytä ", + "wallet": "Lompakko", + "register_warning": " rekisteröityäksesi palvelimelle.\n", + "ask_username": "Syötä Duino-Coin-käyttäjätunnuksesi: ", + "ports_message": "Asetustyökalu on löytänyt seuraavat portit:", + "ports_notice": "Jos et näe kehitysalustaasi täällä, varmista, että se on kunnolla kytketty ja ohjelmalla on pääsy siihen (ylläpito-/sudo-oikeudet).", + "ask_avrport": "Syötä kehitysalustasi sarjaportti (esim. COM1 (Windows) tai /dev/ttyUSB1 (Unix)): ", + "ask_anotherport": "Haluatko lisätä toisen kehitysalustan? (y/N): ", + "ask_higherdiff": "Haluatko käyttää korkeampaa vaikeustasoa (vain Arduino DUE -boardeille) (y/N): ", + "ask_rig_identifier": "Haluatko lisätä tunnisteen (nimen) tälle rigille? (y/N) ", + "ask_rig_name": "Syötä haluttu rigin nimi: ", + "ask_donation_level": "Aseta kehittäjien lahjoitustaso (0-5) (suositus: 1), tämä ei vähennä tulojasi: ", + "config_saved": "Asetukset tallennettu! Käynnistetään louhija", + "free_network_warning": " Duino-Coin-verkko on täysin ilmainen palvelu ja tulee aina olemaan", + "donate_warning": "\nEmme ota mitään maksuja louhinnastasi.\nVoit todella auttaa meitä ylläpitämään palvelinta ja matalakuluisia vaihtoja lahjoittamalla.\nKäy osoitteessa ", + "learn_more_donate": " saadaksesi lisätietoja siitä, miten voit auttaa :)", + "starting_donation": "Aloitetaan lahjoitusprosessi", + "thanks_donation": " Kiitos, että olet mahtava lahjoittaja ❤️ \nLahjoituksesi auttaa meitä ylläpitämään palvelinta ja mahdollistamaan jatkokehityksen", + "data_error": " Virhe noudettaessa tietoja GitHubista! Yritetään uudelleen 10 sekunnin kuluttua.", + "connected": " Yhdistetty", + "connected_server": " yhdistetty pää-Duino-Coin-palvelimeen (v", + "outdated_miner": " Louhija on vanhentunut (v", + "server_is_on_version": " palvelin on versiossa v", + "update_warning": ", lataa uusin versio osoitteesta https://github.com/revoxhere/duino-coin/releases/", + "connecting_error": " Virhe yhteyden muodostamisessa palvelimeen. Yritetään uudelleen 10s päästä", + "duco_avr_miner": "Duino-Coin AVR Miner (v", + "accepted_shares": " hyväksytyt osakkeet", + "accepted": " Hyväksytty ", + "block_found": " Lohko löydetty ", + "rejected": " Hylätty ", + "error_while_mining": " Virhe louhinnassa - todennäköisesti yhteysvirhe - käynnistetään uudelleen 5s päästä.", + "board_on_port": " AVR lauta portissa ", + "board_is_connected": " on yhdistetty", + "board_connection_error": " AVR-yhteysvirhe portissa ", + "board_connection_error2": ", tarkista, onko se kytketty vai ei", + "mining_start": " AVR-louhintasäie käynnistyy", + "mining_algorithm": " käyttäen DUCO-S1A -algoritmia (", + "mining_avr_connection_error": " Virhe yhdistettäessä AVR:ään! Yritetään uudelleen 10s päästä", + "mining_avr_not_responding": " Arduino kestää odotettua kauemmin, lähetetään sille uusi työ ", + "internal_server_error": " Sisäinen palvelinvirhe.", + "retrying": " Yritetään uudelleen 10s päästä", + "mining_user": " Käyttäjä ", + "mining_not_exist": " ei ole olemassa.", + "mining_not_exist_warning": " Varmista, että olet syöttänyt käyttäjätunnuksen oikein. Tarkista asetustiedostosi. Yritetään uudelleen 10s päästä", + "load_config_error": " Virhe ladattaessa asetustiedostoa (", + "load_config_error_warning": "/Miner_config.cfg). Kokeile poistaa se ja suorittaa konfiguraatio uudelleen. Poistutaan 10s päästä", + "connection_search": "Etsitään nopeinta nodea, johon yhdistää", + "uptime_seconds": " sekuntia", + "uptime_minute": " minuutti", + "uptime_minutes": " minuuttia", + "uptime_hour": " tunti", + "uptime_hours": " tuntia", + "periodic_mining_report": "Periodinen louhintaraportti: ", + "report_period": "\n\t\t‖ Viimeisten ", + "report_time": " sekunnin aikana", + "report_body1": "\n\t\t‖ Olet louhinut ", + "report_body2": " osaketta (", + "report_body3": " osaketta/s)", + "report_body4": "\n\t\t‖ Hashrate: ", + "report_body5": "\n\t\t‖ Tänä aikana olet ratkaissut ", + "report_body6": " hasheja", + "report_body7": "\n\t\t‖ Löydetyt lohkot: ", + "total_mining_time": "\n\t\t‖ Louhijan kokonaiskäyttöaika: ", + "node_picker_unavailable": "Nodevalitsija ei näytä vastaavan kunnolla - yritetään uudelleen ", + "node_picker_error": "Vakava virhe haettaessa palvelinta nodenvalitsijasta - yritetään uudelleen ", + "connecting_node": " Haettu louhintanode: ", + "new_version": "Uusi versio on saatavilla, haluatko päivittää louhijan [Y/n] ? ", + "updating": "Louhija on vanhentunut. Päivitetään....", + "ask_mining_key": "Anna louhintatunnus (vain tarvittaessa, jos olet aktivoinut tämän vaihtoehdon verkkolompakossa - paina Enter ohittaaksesi): ", + "mining_key_required": "Louhintatunnus vaaditaan tälle tilille louhimiseen", + "invalid_mining_key": "Annettu louhintatunnus on virheellinen!", + "incorrect_username": "Annettu käyttäjätunnus ei ole olemassa!", + "system_threads_notice": "Varoitus: yrität käyttää enemmän säikeitä kuin sinulla on.\n\t\tTämä aiheuttaa ei-toivottuja sivuvaikutuksia, kuten järjestelmän vastaamattomuutta.\n\t\tAloitetaan 10s päästä", + "using_config": "Käytetään konfiguraatiotiedostoa: ", + "motd": "Palvelimen päivän viesti: ", + "hashrate_test": "Hashrate-testi päättyi ", + "hashrate_test_diff": ", määritetty aloitusvaikeustaso: " } } diff --git a/Resources/CLI_Wallet_langs.json b/Resources/CLI_Wallet_langs.json index 03acb2fc..27820c39 100644 --- a/Resources/CLI_Wallet_langs.json +++ b/Resources/CLI_Wallet_langs.json @@ -898,5 +898,95 @@ "donate_3": " (wrapperのアドレス)", "donate_4": " (revox, DUCO 主任開発者)", "donate_5": " (wDUCO開発者)" + }, + "finnish": { + "translation_autor": "EeroVakiparta", + "cant_connect_to_server": "Ei voida muodostaa yhteyttä palvelimeen. Se on luultavasti huollossa tai tilapäisesti poissa käytöstä.\nYritetään uudelleen 15 sekunnin kuluttua.", + "cant_recieve_pool_ip_and_port": " Poolin osoitetta ja IP-osoitetta ei voi vastaanottaa.\nPoistutaan 15 sekunnin kuluttua.", + "server_message": "Palvelimen viesti: ", + "success": "Onnistui!", + "cancelled": "Peruutettu...", + "duco_commands": " DUCO komennot:", + "wrapper_commands": " Wrapperiin liittyvät komennot:", + "base64_not_installed": "Base64:ää ei ole asennettu. Asenna manuaalisesti \"base64\"\nPoistutaan 15 sekunnissa.", + "tronpy_not_installed": "Tronpya ei ole asennettu. Asenna se käyttämällä: python3 -m pip install tronpy.\nWrapperi on poistettu käytöstä, koska tronpya ei ole asennettu.", + "tronpy_not_installed_2": "Tronpya ei ole asennettu. Asenna se käyttämällä: python3 -m pip install tronpy.", + "cryptography_not_installed": "Cryptographyä ei ole asennettu. Asenna se käyttämällä: python3 -m pip install cryptography.\nPoistutaan 15 sekunnissa.", + "secrets_not_installed": "Secrets ei ole asennettu. Asenna se käyttämällä: python3 -m pip install secrets.\nPoistutaan 15 sekunnissa.", + "websocket_not_installed": "Websocket-client ei ole asennettu. Asenna se käyttämällä: python3 -m pip install websocket-client.\nPoistutaan 15s päästä.", + "colorama_not_installed": "Colorama ei ole asennettu. Asenna se käyttämällä: python3 -m pip install colorama.\nPoistutaan 15s päästä.", + "first_run": "Duino-Coin CLI Wallet ensimmäinen käynnistys\n", + "select_option": "Valitse vaihtoehto", + "choice_input": " 1 - Kirjaudu sisään\n 2 - Rekisteröidy\n 3 - Poistu\n", + "choice_input_wrapper": "1 - Luo uusi avain\n2 - Tuo avain \n3 - Peruuta\n", + "value_not_numeric": "Virhe, arvon tulee olla numeerinen", + "enter_username": "Syötä käyttäjätunnuksesi: ", + "enter_email": "Syötä sähköpostiosoitteesi: ", + "enter_password": "Syötä salasanasi (ei näytetä yksityisyyden vuoksi): ", + "confirm_password": "CVahvista salasanasi (ei näytetä yksityisyyden vuoksi): ", + "enter_current_password": "Syötä nykyinen salasanasi: ", + "enter_new_password": "Syötä uusi salasana: ", + "agree_requirments": "Rekisteröimällä uuden tilin hyväksyt käyttöehdot ja tietosuojakäytännön, jotka ovat saatavilla osoitteessa ", + "register_success": "Uuden tilin rekisteröinti onnistu", + "register_failed": "Uuden käyttäjän rekisteröinti epäonnistui, syy: ", + "login_success": "Onnistunut kirjautuminen", + "login_failed": "Kirjautuminen epäonnistui, syy: ", + "decrypt_private_key": "Lauseke yksityisen avaimen salauksen purkamiseen: ", + "encrypt_private_key": "Syötä salauslauseke yksityisen avaimen salaamiseen: ", + "invalid_passphrase_wrapper": "Virheellinen salauslauseke, wrapper poistetaan käytöstä tämän istunnon ajan", + "input_private_key": "Syötä oma yksityinen avaimesi: ", + "incorrect_key": "Annettu avain on virheellinen", + "incorrect_value": "Annettu arvo on virheellinen", + "cli_wallet_text": "\nDuino-Coin CLI-lompakko", + "you_have": "Sinulla on ", + "which_is_about": "Mikä on noin ", + "duco_price": "DUCO hinta: ", + "pending_unwraps": "Odottavat unwrapit ", + "tron_address": "Tron-osoite vastaanottoa varten: ", + "trx_balance": "TRX-saldo (hyödyllinen kuluissa): ", + "how_encrypt_private_key": "Miten haluat salata yksityisen avaimen asetustiedostossa?", + "encryption_choice": "1 - salaa se käyttämällä DUCO-salasanaa\n2 - käytä omaa salauslauseketta (turvallisempi)", + "amount_to_wrap": "Syötä wräpättävä määrä (vähintään 10): ", + "no_amount_numeric": "EI, määrän pitää olla numeerinen... keskeytetään", + "enter_tron_address_or_local": "Syötä tron-osoite tai jätä tyhjäksi valitaksesi paikallisen lompakon: ", + "error_min_10_duco": "Virhe, vähimmäismäärä on 10 DUCO:a", + "error_unsufficient_balance": "Virhe, riittämätön saldo", + "error_wrong_passphrase": "Wrapper poistettu käytöstä, syötit väärän salauslausekkeen", + "error_configure_wrapperconf": "Wrapper poistettu käytöstä, määritä se käyttämällä wrapperconf", + "error_not_enough_energy_or_trx": "Epäonnistui, sinulla pitäisi olla tarpeeksi energiaa tai trx:ää", + "enter_amount_unwrap": "Syötä määrä, jonka haluat wräpätä auki: ", + "initiating_unwrap": "Aloitetaan wrapin avaaminen...\nTXid:", + "error_initiating_unwrap": "Wrapperin avaamisen aloittamisessa tapahtui virhe, keskeytetään", + "amount_over_pending_values": "Määrä on odottavia arvoja suurempi, käytetään odottavia arvoja säästääksemme siirtokuluja", + "transaction_send_txid": "Siirto lähetetty, txid:", + "finished_unwrapping": "Unwräppäys valmis", + "confirm_export_private_key": "Kirjoita YES vahvistaaksesi yksityisen avaimen viennin: ", + "private_key": "Yksityinen avain: ", + "cancelled_invalid_confirmation": "Peruutettu, virheellinen vahvistus", + "help_list_command": "Kirjoita help nähdäksesi saatavilla olevat komennot", + "duco_console": "DUCO-konsoli ᕲ ", + "enter_recipients_name": "Syötä vastaanottajan käyttäjätunnus: ", + "enter_amount_transfer": "Syötä siirrettävä määrä: ", + "enter_tron_recipients_name": "Syötä vastaanottajan TRON-osoite: ", + "enter_tron_amount_transfer": "Syötä siirrettävä määrä: ", + "amount_numeric": "Määrän pitäisi olla numeerinen... keskeytetään", + "tron_transaction_submitted": "Siirto lähetetty TRON-verkkoon\nTXID:", + "tron_successful_transaction": "Onnistunut siirto", + "tron_error_transaction": "Virhe siirron vahvistamisessa", + "see_you_soon": " Nähdään pian!", + "sigint_detected": "\nSIGINT havaittu - Poistutaan hienovaraisesti.", + "about_1": "Duino-Coin CLI-lompakko on tehty <3 Duino-Coin-yhteisön toimesta", + "about_2": "Tämä on versio ", + "about_3": "Ja se on jaettu MIT-lisenssin alaisuudessa", + "about_4": "Palvelimen versio: ", + "about_5": "Palvelin on versiossa ", + "about_6": ", mutta clientti on versiossa ", + "about_7": ", sinun kannattaa harkita viimeisimmän julkaisun lataamista", + "about_8": "Client on ajan tasalla", + "donate_1": "Voit halutessasi lahjoittaa auttaaksesi DUCO:n ja wDUCO:n ylläpidossa (wrapping/unwrapping aiheuttaa ylläpitäjille kuluja)", + "donate_2": "TRON ja tokenit: ", + "donate_3": " (wrapperi osoite)", + "donate_4": " (revox, DUCO:n pääkehittäjä)", + "donate_5": " (wDUCO-kehittäjä)" } } diff --git a/Resources/PC_Miner_langs.json b/Resources/PC_Miner_langs.json index ab280415..0a38525a 100644 --- a/Resources/PC_Miner_langs.json +++ b/Resources/PC_Miner_langs.json @@ -1734,5 +1734,110 @@ "system_threads_notice": "警告:あなたは持っている以上のスレッドを使用しようとしています。\n\t\tこれは、システムが応答しなくなるなど、予期せぬ副作用を引き起こすことになります。\n\t\t10秒後に開始します", "using_config": "設定ファイル: ", "motd": "本日のサーバーメッセージ: " + }, + "finnish": { + "translation_autor": "EeroVakiparta", + "translation": "Suomenkielinen käännös: ", + "sigint_detected": " SIGINT havaittu - Poistutaan hienovaraisesti.", + "goodbye": " Nähdään pian!", + "greeting_morning": "Ihanaa aamua", + "greeting_noon": "Menny töihin", + "greeting_afternoon": "Rauhallista iltapäivää", + "greeting_evening": "Kotoisaa iltaa", + "greeting_back": "Tervetuloa takaisin", + "banner": "Virallinen Duino-Coin © Python Miner", + "donation_level": "Kehittäjän lahjoitustaso: ", + "ask_algorithm": "Valitse käytettävä louhintamenetelmä (1-2): ", + "ask_difficulty": "Valitse käytettävä louhintavaikeus (1-3): ", + "low_diff": "Matala vaikeus (heikommille Raspberry Pi -laitteille (Zero/1/2/3) ja vanhemmille tietokoneille)", + "medium_diff": "Keskitaso vaikeus (tehokkaammille Raspberry Pi -laitteille (4/400) ja tyypillisille tietokoneille)", + "net_diff": "Verkon vaikeus (tehokkaille tietokoneille)", + "low_diff_short": "Matala vaikeus", + "medium_diff_short": "Keskitaso vaikeus", + "net_diff_short": "Verkon vaikeus", + "algorithm": "Algoritmi: ", + "rig_identifier": "Rig-tunniste: ", + "basic_config_tool": "\nDuino-Coin perusasetustyökalu\nMuokkaa ", + "edit_config_file_warning": "/Miner_config.cfg -tiedostoa myöhemmin, jos haluat muuttaa asetuksia.", + "dont_have_account": "Eikö sinulla ole vielä Duino-Coin-tiliä? Käytä ", + "wallet": "Lompakko", + "register_warning": " rekisteröityäksesi palvelimelle.\n", + "ask_username": "Syötä Duino-Coin-käyttäjätunnuksesi: ", + "ask_intensity": "Aseta louhintaintensiteetti (1-100)% (suositus: 95): ", + "ask_threads": "Aseta louhintasäikeiden määrä (suositus järjestelmällesi: ", + "ask_lower_difficulty": "Haluatko käyttää alhaisempaa vaikeustasoa louhintaan (hitaimmille järjestelmille)? (y/N): ", + "ask_rig_identifier": "Haluatko lisätä tunnisteen (nimen) tälle rigille? (y/N): ", + "ask_rig_name": "Syötä haluttu rigin nimi: ", + "ask_donation_level": "Aseta kehittäjän lahjoitustaso (0-5) (suositus: 1), tämä ei vähennä ansioitasi: ", + "config_saved": "Asetukset tallennettu! Käynnistetään louhintaa", + "load_config_error": " Virhe ladattaessa asetustiedostoa (", + "load_config_error_warning": "/Miner_config.cfg). Yritä poistaa se ja suorita määritys uudelleen. Poistutaan 10 sekunnin kuluttua", + "free_network_warning": " Duino-Coin-verkko on täysin ilmainen palvelu ja tulee aina olemaan", + "donate_warning": "\nEmme ota mitään maksuja louhinnastasi.\nVoit todella auttaa meitä ylläpitämään palvelinta ja pienmaksullisia vaihtoja lahjoittamalla.\nVieraile ", + "learn_more_donate": " saadaksesi lisätietoja siitä, miten voit auttaa :)", + "starting_donation": "Aloitetaan lahjoitusprosessi", + "thanks_donation": " Kiitos, että olet mahtava lahjoittaja ❤️ \nLahjoituksesi auttaa meitä ylläpitämään palvelinta ja mahdollistaa jatkokehityksen", + "data_error": " Virhe noutaessa tietoja GitHubista! Yritetään uudelleen 10 sekunnin kuluttua.", + "connected": " Yhdistetty", + "connected_server": " päämestari Duino-Coin -palvelimeen (v", + "outdated_miner": " Louhija on vanhentunut (v", + "server_is_on_version": " palvelin on versiossa v", + "update_warning": ", lataa uusin versio osoitteesta https://github.com/revoxhere/duino-coin/releases/", + "connecting_error": " Virhe yhdistäessä palvelimeen. Yritetään uudelleen 10 sekunnin kuluttua", + "mining_thread": " Louhintasäie #", + "mining_thread_starting": " käynnistyy", + "using_algo": " käyttäen DUCO-S1 -algoritmia tehokkuudella ", + "using_algo_xxh": " käyttäen XXHASH-algoritmia tehokkuudella ", + "efficiency": "tehokkuus", + "duco_python_miner": "Virallinen Duino-Coin Python Miner (v", + "accepted_shares": " hyväksytyt osuudet", + "accepted": " Hyväksytty ", + "block_found": " Lohko löydetty ", + "internal_server_error": " Sisäinen palvelinvirhe.", + "retrying": " Yritetään uudelleen 10 sekunnin kuluttua", + "rejected": " Hylätty ", + "error_while_mining": " Virhe louhinnassa - todennäköisesti yhteysvirhe - käynnistetään uudelleen 5 sekunnin kuluttua.", + "mining_user": " Käyttäjä ", + "mining_not_exist": " ei ole olemassa.", + "mining_not_exist_warning": " Varmista, että olet syöttänyt käyttäjätunnuksen oikein. Tarkista konfiguraatiotiedosto. Yritetään uudelleen 10 sekunnin kuluttua", + "max_threads_notice": "Duino-Coinin louhinta monilla säikeillä aiheuttaa tuoton vähenemisen - louhintasäikeet pienennetty 16:een", + "max_hashrate_notice": "Duino-Coinin louhinta tehokkaalla laitteistolla ei välttämättä ole erittäin kannattavaa sinulle - ehdotamme kokeilemaan Coin Magi (https://xmg.network) - 'sisar' kolikko", + "recommended": "suositeltava", + "connection_search": "Etsitään nopeinta nodea, johon yhdistää", + "uptime_seconds": " sekuntia", + "uptime_minute": " minuutti", + "uptime_minutes": " minuuttia", + "uptime_hour": " tunti", + "uptime_hours": " tuntia", + "periodic_mining_report": "Säännöllinen louhintaraportti: ", + "report_period": "\n\t\t‖ Viimeisen ", + "report_time": " sekunnin aikana", + "report_body1": "\n\t\t‖ Olet louhinut ", + "report_body2": " osaketta (", + "report_body3": " osaketta/s)", + "report_body4": "\n\t\t‖ Teholla ", + "report_body5": "\n\t\t‖ Tänä aikana olet ratkaissut ", + "report_body6": " hajautusta", + "report_body7": "\n\t\t‖ Löydetyt lohkot: ", + "total_mining_time": "\n\t\t‖ Kaiken kaikkiaan louhijan toiminta-aika: ", + "fasthash_available": "Käytetään fasthash-hajautusnopeuksia", + "fasthash_download": "Ladataan fasthash-kiihdytysmoduuli", + "node_picker_unavailable": "Nodenn valitsin ei näytä vastaavan oikein - yritetään uudelleen ", + "node_picker_error": "Vakava virhe noudettaessa palvelinta noden valitsimesta - yritetään uudelleen ", + "connecting_node": " Haettu louhintanode: ", + "new_version": "Uusi versio on saatavilla, haluatko päivittää louhijan (Y/n) ? ", + "updating": "Louhija on vanhentunut. Päivitetään....", + "ask_mining_key": "Syötä louhintatunnuksesi (vain tarpeen, jos aktivoit tämän vaihtoehdon web-lompakossa - paina enter ohittaaksesi): ", + "mining_key_required": "Louhintatunnus vaaditaan tälle tilille louhimiseen", + "invalid_mining_key": "Antamasi louhintatunnus on virheellinen!", + "running_on_rpi": "Louhija näyttää toimivan Raspberry Pi:llä.", + "running_on_rpi2": "Sisäiset tila-LEDit syttyvät louhintaprosessin tilan mukaisesti", + "discord_launch_error": "Virhe käynnistettäessä Discord RPC-säiettä:", + "discord_update_error": "Virhe päivitettäessä Discord RPC-tilastoja:", + "key_retry": "Haluatko yrittää uudelleen? (Y/n): ", + "incorrect_username": "Antamasi käyttäjänimi ei ole olemassa!", + "system_threads_notice": "Varoitus: yrität käyttää enemmän säikeitä kuin sinulla on.\n\t\tTämä aiheuttaa ei-toivottuja sivuvaikutuksia, kuten järjestelmän vastaamattomuuden.\n\t\tAloitetaan 10s kuluttua", + "using_config": "Käyttöasetustiedosto: ", + "motd": "Palvelimen päivän viesti: " } } diff --git a/Resources/README_TRANSLATIONS/README-fr-FR.md b/Resources/README_TRANSLATIONS/README-fr-FR.md index 3145c8d7..092bd177 100644 --- a/Resources/README_TRANSLATIONS/README-fr-FR.md +++ b/Resources/README_TRANSLATIONS/README-fr-FR.md @@ -38,6 +38,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_cz_CZ.md b/Resources/README_TRANSLATIONS/README_cz_CZ.md index c2da2dd9..97387201 100644 --- a/Resources/README_TRANSLATIONS/README_cz_CZ.md +++ b/Resources/README_TRANSLATIONS/README_cz_CZ.md @@ -41,6 +41,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_de_DE.md b/Resources/README_TRANSLATIONS/README_de_DE.md index 06b107cb..e02f14f1 100644 --- a/Resources/README_TRANSLATIONS/README_de_DE.md +++ b/Resources/README_TRANSLATIONS/README_de_DE.md @@ -44,6 +44,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_es_LATAM.md b/Resources/README_TRANSLATIONS/README_es_LATAM.md index d3a43d97..dd11bcc8 100644 --- a/Resources/README_TRANSLATIONS/README_es_LATAM.md +++ b/Resources/README_TRANSLATIONS/README_es_LATAM.md @@ -45,6 +45,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_fi_FI.md b/Resources/README_TRANSLATIONS/README_fi_FI.md new file mode 100644 index 00000000..1f8569b3 --- /dev/null +++ b/Resources/README_TRANSLATIONS/README_fi_FI.md @@ -0,0 +1,282 @@ + + + + + + +

+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + +
+ +

+ Duino-Coin on kolikko, jota voi louhia Arduinolla, ESP8266/32-korteilla, Raspberry Pi:llä, tietokoneilla ja monella muulla laitteella (mukaan lukien Wi-Fi-reitittimet, älytelevisiot, älypuhelimet, älykellot, SBC:t, MCUs tai jopa GPU:t). +

+ + +| Avainominaisuudet | Tekniset tiedot | Tuetut piirikortit (muutamia esimerkkejä) | +|-|-|-| +| 💻 Tukee laajaa valikoimaa alustoja
👥 Nopeasti kasvava yhteisö
💱 Helppo käyttää ja vaihtaa
(DUCO-pörssissä, JustSwap, SushiSwap)
🌎 Saatavilla kaikkialla
:new: Täysin alkuperäinen ja avoimen lähdekoodin projekti
🌳 Aloittelijaystävällinen ja ympäristöystävällinen
💰 Kustannustehokas ja helppo louhia | ⚒️ Algoritmi: DUCO-S1
♐ Palkkiot: tuettu "Kolka-järjestelmällä"
jonka avulla voidaan palkita louhijoita oikeudenmukaisesti
⚡ Siirtoaika: Heti
🪙 Kolikkovaranto: Rajaton
(poltto tapahtuu)
🔤 Tunnus: DUCO (ᕲ)
🔢 Desimaalit: jopa 20 | ♾️ Arduino (Uno, Nano, Mega, Due, Pro Mini, jne.)
📶 ESP8266 (NodeMCU, Wemos, jne.)
📶 ESP32 (ESP-WROOM, ESP32-CAM, jne.)
🍓 Raspberry Pi (1, 2, Zero (W/WH), 3, 4, Pico, 400)
🍊 Orange Pi (Zero, Zero 2, PC, Plus, jne.)
⚡ Teensy 4.1 -kortit | + + +## Aloittaminen + +#### Helpoin tapa aloittaa Duino-Coinin kanssa on ladata [viimeisin julkaisu](https://github.com/revoxhere/duino-coin/releases/latest) käyttöjärjestelmällesi.
+Latauksen jälkeen pura paketti ja käynnistä haluamasi ohjelma.
+Mitään riippuvuuksia ei tarvita. + +Jos tarvitset apua, voit tutustua virallisiin aloitusoppaisiin, jotka löytyvät viralliselta verkkosivustolta.
+UKK ja vianmääritysohjeita löytyy [Wikistä](https://github.com/revoxhere/duino-coin/wiki).
+ + +#### Linux (manuaalinen asennus) + +```BASH +sudo apt update +sudo apt install python3 python3-pip git python3-pil python3-pil.imagetk -y # Asenna vaaditut riippuvuudet +git clone https://github.com/revoxhere/duino-coin # Kloonaa Duino-Coin repositorio +cd duino-coin +python3 -m pip install -r requirements.txt # Asenna pip-riippuvuudet +``` + +Tämän jälkeen voit käynnistää ohjelman kirjoittamalla (esim. `python3 PC_Miner.py`). + +#### Windows (manuaalinen asennus) + +1. Lataa ja asenna [Python 3](https://www.python.org/downloads/) (varmista, että lisäät Pythonin ja Pipin PATH:iin) +2. Lataa [the Duino-Coin repo](https://github.com/revoxhere/duino-coin/archive/master.zip) +3. Pura ladattu zip-tiedosto ja avaa kansio komentokehotteessa +4. Komentokehotteessa kirjoita `py -m pip install -r requirements.txt` asentaaksesi tarvittavat pip-riippuvuudet + +When you have completed the installation, you can launch the software by either double-clicking on the desired .py file or typing py PC_Miner.py in the command prompt. + +#### Raspberry Pi (automaattinen asennus) + +```BASH +wget https://raw.githubusercontent.com/revoxhere/duino-coin/master/Tools/duco-install-rpi.sh +sudo chmod a+x duco-install-rpi.sh +./duco-install-rpi.sh +``` + +## DUCO, wDUCO, bscDUCO, maticDUCO & celoDUCO + +Duino-Coin on hybridivaluutta, joka tarjoaa tuen sekä keskitetyille että hajautetuille tavoille tallentaa varoja. Duino-Coinit voidaan muuntaa wDUCO: ksi, bscDUCO: ksi tai muiksi vastaaviksi Duino-Coiniksi, jotka ovat tallennettu (kääritty) muihin verkkoihin tokeneina. Esimerkkiohjeet wDUCO:n käyttämisestä ovat saatavilla [wDUCO wiki](https://github.com/revoxhere/duino-coin/wiki/wDUCO-tutorial). Kolikot voidaan kääriä suoraan verkkolompakostasi - napsauta Wrap Coins -painiketta aloittaaksesi. + +## Kehitys + +Panostasi-tekijöistä tekee avoimen lähdekoodiyhteisöstä niin uskomattoman hienon paikan oppia, inspiroitua ja luoda.
+Kaikki panostuksesi Duino-Coin-projektiin ovat erittäin arvostettuja. + +Kuinka voit auttaa? + +* Forkkaa projektin repositorio +* Luo uusi haarautumishaara (feature branch) +* Tee muutokset +* Varmista, että kaikki toimii tarkoitetulla tavalla +* Luo uusi vedä-pyyntö (pull request) + +Palvelimen lähdekoodi, API-kutsujen dokumentaatio sekä viralliset kirjastot oman sovelluksen kehittämiseen Duino-Coinille ovat saatavilla [useful tools](https://github.com/revoxhere/duino-coin/tree/useful-tools) -haarassa. + + +## Testatut laitteet ja kehysalustat + +### Huomaa, että palkkiot riippuvat monista tekijöistä ja alla oleva taulukko on vain suuntaa antava. + + | Laite/CPU/SBC/MCU/piiri | Keskimääräinen hashrate
(kaikki säikeet) | Louhinta
säikeet | Virran
-kulutus | Keskimääräinen
DUCO/päivä | + |-----------------------------------------------------------|-----------------------------------|-------------------|----------------|---------------------| + | Arduino Pro Mini, Uno, Nano jne.
(Atmega 328p/pb/16u2) | 258 H/s | 1 | 0.2 W | 15-20 | + | Raspberry Pi Pico | 5 kH/s | 1 | 0.3 W | 10 | + | Teensy 4.1 (pehmeä salaus) | 80 kH/s | 1 | 0.5 W | ? | + | NodeMCU, Wemos D1 jne.
(ESP8266) | 9-10 kH/s (160MHz) 5 kH/s (80Mhz) | 1 | 0.6 W | 3-6 | + | ESP32 | 40-42 kH/s | 2 | 1 W | 6-9 | + | Raspberry Pi Zero | 18 kH/s | 1 | 1.1 W | ? | + | Raspberry Pi 3 **(32bit)** | 440 kH/s | 4 | 5.1 W | 4-5 | + | Raspberry Pi 4 **(32bit)** | 740 kH/s | 4 | 6.4 W | ? | + | Raspberry Pi 4 **(64bit, fasthash)** | 6.8 MH/s | 4 | 6.4 W | 5 | + | ODROID XU4 | 1.0 MH/s | 8 | 5 W | 6 | + | Atomic Pi | 690 kH/s | 4 | 6 W | ? | + | Orange Pi Zero 2 | 740 kH/s | 4 | 2.55 W | ? | + | Khadas Vim 2 Pro | 1.12 MH/s | 8 | 6.2 W | ? | + | Libre Computers Tritium H5CC | 480 kH/s | 4 | 5 W | ? | + | Libre Computers Le Potato | 410 kH/s | 4 | 5 W | ? | + | Pine64 ROCK64 | 640 kH/s | 4 | 5 W | ? | + | Intel Celeron G1840 | 1.25 MH/s | 2 | 53 W | 3.3 | + | Intel Core i5-2430M | 1.18 MH/s | 4 | 35 W | 6.5 | + | Intel Core i5-3230M | 1.52 MH/s | 4 | 35 W | 7.2 | + | Intel Core i5-5350U | 1.35 MH/s | 4 | 15 W | 6.0 | + | Intel Core i5-7200U | 1.62 MH/s | 4 | 15 W | 7.5 | + | Intel Core i5-8300H | 3.67 MH/s | 8 | 45 W | 9.1 | + | Intel Core i3-4130 | 1.45 MH/s | 4 | 54 W | 3.7 | + | AMD Ryzen 5 2600 | 4.9 MH/s | 12 | 65 W | 15.44 | + | AMD Ryzen R1505G **(fasthash)** | 8.5 MH/s | 4 | 35 W | - | + | Intel Core i7-11370H **(fasthash)** | 17.3 MH/s | 8 | 35 W | 4.28 | + | Realtek RTD1295 | 490 kH/s | 4 | - | - | + | Realtek RTD1295 **(fasthash)** | 3.89 MH/s | 4 | - | - | + +Kaikki testit suoritettiin käyttäen DUCO-S1-algoritmia **ilman fasthash-kiihdytyksiä**, ellei toisin mainita. Tämä taulukko päivitetään aktiivisesti. + + + +## Yhteisön tekemät ohjelmistot + +### Huomioithan, että nämä ohjelmistot eivät ole kehittämiämme, emmekä anna mitään takuita siitä, ettei niiden käyttö johda tilin sulkemiseen. Käytä niitä omalla vastuullasi. + + ### Muut tiedossa olevat Duino-Coinin kaivostyökalut: + * :point_right: [**RP2040-HAT-MINING-C**](https://github.com/Wiznet/RP2040-HAT-MINING-C) - **WIZnet RP2040** mining stack + * [DuinoCoinEthernetMiner](https://github.com/Pumafron/DuinoCoinEthernetMiner) - Arduino Ethernet shield Miner by Pumafron + * [STM8 DUCO Miner](https://github.com/BBS215/STM8_DUCO_miner) - STM8S firmware for mining DUCO by BBS215 + * [DuinoCoinbyLabVIEW](https://github.com/ericddm/DuinoCoinbyLabVIEW) - miner for LabVIEW family by ericddm + * [Duino-JS](https://github.com/Hoiboy19/Duino-JS) - a JavaScript miner which you can easily implement in your site by Hoiboy19 + * [Duinotize](https://github.com/mobilegmYT/Duinotize) - Duino website monetizer by mobilegmYT + * [hauchel's duco-related stuff repository](https://github.com/hauchel/duco/) - Collection of various codes for mining DUCO on other microcontrollers + * [duino-coin-php-miner](https://github.com/ricardofiorani/duino-coin-php-miner) Dockerized Miner in PHP by ricardofiorani + * [duino-coin-kodi](https://github.com/SandUhrGucker/duino-coin-kodi) - Mining addon for Kodi Media Center by SandUhrGucker + * [MineCryptoOnWifiRouter](https://github.com/BastelPichi/MineCryptoOnWifiRouter) - Python script to mine Duino-Coin on routers by BastelPichi + * [Duino-Coin_Android_Cluster Miner](https://github.com/DoctorEenot/DuinoCoin_android_cluster) - mine with less connections on multiple devices by DoctorEenot + * [ESPython DUCO Miner](https://github.com/fabiopolancoe/ESPython-DUCO-Miner) - MicroPython miner for ESP boards by fabiopolancoe + * [DUCO Miner for Nintendo 3DS](https://github.com/BunkerInnovations/duco-3ds) - Python miner for Nintendo 3DS by PhereloHD & HGEpro + * [Dockerized DUCO Miner](https://github.com/Alicia426/Dockerized_DUCO_Miner_minimal) - Miner in Docker by Alicia426 + * [NodeJS-DuinoCoin-Miner](https://github.com/LDarki/NodeJS-DuinoCoin-Miner/) - simple NodeJS miner by LDarki + * [d-cpuminer](https://github.com/phantom32-0/d-cpuminer) - pure C miner by phantom32 & revoxhere + * [Go Miner](https://github.com/yippiez/go-miner) by yippiez + * [ducominer](https://github.com/its5Q/ducominer) by its5Q + * [Unofficial miners directory](https://github.com/revoxhere/duino-coin/tree/master/Unofficial%20miners) + * [Julia Miner](https://github.com/revoxhere/duino-coin/blob/master/Unofficial%20miners/Julia_Miner.jl) by revoxhere + * [Ruby Miner](https://github.com/revoxhere/duino-coin/blob/master/Unofficial%20miners/Ruby_Miner.rb) by revoxhere + * [Minimal Python Miner (DUCO-S1)](https://github.com/revoxhere/duino-coin/blob/master/Unofficial%20miners/Minimal_PC_Miner.py) by revoxhere + * [Teensy 4.1 code for Arduino IDE](https://github.com/revoxhere/duino-coin/blob/master/Unofficial%20miners/Teensy_code/Teensy_code.ino) by joaquinbvw + + ### Muut työkalut: + * [Duino Miner](https://github.com/g7ltt/Duino-Miner) - Arduino Nano based DUCO miner files and documentation by g7ltt + * [DUINO Mining Rig](https://repalmakershop.com/pages/duino-mining-rig) - 3D files, PCB designs and instructions for creating your own Duino rig by ReP_AL + * [DuinoCoin-balance-Home-Assistant](https://github.com/NL647/DuinoCoin-balance-Home-Assistant) - addon for home assistant displaying your balance by NL647 + * [ducopanel](https://github.com/ponsato/ducopanel) - a GUI app for controling your Duino-Coin miners by ponsato + * [Duino AVR Monitor](https://www.microsoft.com/store/apps/9NJ7HPFSR9V5) - GUI Windows App for monitoring AVR devices mining DUCO by niknak + * [Duino-Coin Arduino library](https://github.com/ricaun/arduino-DuinoCoin) by ricaun + * [DuinoCoinI2C](https://github.com/ricaun/DuinoCoinI2C) - Use ESP8266/ESP32 as a master for Arduinos by ricaun + * [Duino-Coin Mining Dashboard](https://lulaschkas.github.io/duco-mining-dashboard/) and troubleshooting helper by Lulaschkas + * [duco-miners](https://github.com/dansinclair25/duco-miners) CLI mining dashboard made by dansinclair25 + * [Duco-Coin Symbol Icon ttf](https://github.com/SandUhrGucker/Duco-Coin-Symbol-Icon-ttf-.h) by SandUhrGucker + * [DUCO Monitor](https://siunus.github.io/duco-monitor/) account statistics website by siunus + * [Duino Stats](https://github.com/Bilaboz/duino-stats) official Discord bot by Bilaboz + * [DuCoWallet](https://github.com/viktor02/DuCoWallet) GUI Wallet by viktor02 + * [Duco-widget-ios](https://github.com/naphob/duco-widget-ios) - a Duino-Coin iOS widget by Naphob + * [Duino Lookup](https://axorax.github.io/duino-lookup/) by axorax + + Voit tarkastella vastaavaa listaa myös Duino-Coinin virallisilla verkkosivuilla. [website](https://duinocoin.com/apps). + + +## License + +Duino-Coin on pääosin jaettu MIT-lisenssillä. Lisätietoja saat tiedostosta `LICENSE`. +Joissakin kolmannen osapuolen tiedostoissa saattaa olla erilaiset lisenssit - tarkista niiden `LICENSE` -lausekkeet (yleensä lähdekooditiedoston alusta). + + +## Käyttöehdot +1. Duino-Coinit ("DUCO:t") ansaitaan louhimalla prosessilla, jota kutsutaan kaivamiseksi.
+2. Louhinta tapahtuu käyttämällä DUCO-S1-algoritmia (kuten selitetty Duino-Coinin Whitepaperissa), jossa oikean vastauksen löytäminen matemaattiseen ongelmaan antaa louhijalle palkkion.
+3. Louhinta voidaan suorittaa virallisesti käyttäen CPU:ita, AVR-kortteja (esim. Arduino-kortteja), yksikorttitietokoneita (esim. Raspberry Pi -kortteja) ja ESP32/8266-kortteja virallisten kaivostyöläisten käyttämisen avulla (muut virallisesti sallitut kaivostyöläiset on kuvattu README:n yläosassa).
+4. Kaikkien kaivostyöläisten on käytettävä heille sopivaa vaikeustasoa. +5. Louhinta GPU:illa, FPGA:illa ja muilla korkean suorituskyvyn laitteilla on sallittua, mutta käyttämällä vain EXTREME-louhintavaikeutta.
+6. Mitkä tahansa käyttäjät, jotka käyttävät kaivostyöläisiä, joille ei ole sopiva vaikeustaso (katso vaikeuslista), rajoitetaan automaattisesti siirtymällä oikealle vaikeustasolle.
+7. Mitkä tahansa käyttäjät, jotka yrittävät käyttää liian alhaista vaikeustasoa kuin heille sopii, saattavat saada tilapäisen eston tai pysyvän porttikiellon.
+8. Porttikiellon yhteydessä käyttäjä estetään pääsemästä käsiksi kolikoihinsa ja hänen tilinsä poistetaan.
+9. Vaihtoon kelpaavat vain laillisesti ansaitut kolikot.
+10. Tilejä voidaan väliaikaisesti keskeyttää tutkimaan ToS-rikkomuksia ("rikkomus" tai "väärinkäyttö").
+11. Vaihtopyynnön tekeminen viralliselle DUCO-vaihdolle ("virallinen vaihto") voi viivästyä ja/tai hylätä tutkimusten aikana.
+12. Viralliselle vaihdolle tehtyjä vaihtopyyntöjä voidaan hylätä ToS-rikkomusten ja/tai vähäisen rahoituksen vuoksi.
+13. Ilmaisilla pilvipalveluilla (tai ilmaisilla VPS-palveluilla, kuten Repl.it, GitHub Actions jne.) louhkiminen ei ole sallittua, koska se on epäreilua muille.
+14. Käyttäjän DUCOja voidaan polttaa, jos rikkomus voidaan todistaa.
+15. Nämä käyttöehdot voivat muuttua milloin tahansa ilman ennakkoilmoitusta.
+16. Useampien käyttäjätilien omistaminen ilman järkevää syytä (esim. mon louhiminen) ei ole sallittua - useita tilejä käytettäessä samalla tietokoneella/verkolla, ellei niille ole myönnetty poikkeusta, tullaan estämään.
+17. Muiden palveluiden tai tuotteiden mainostaminen lähettämällä tapahtumia ei ole sallittua.
+18. Suuri määrä tapahtumia lyhyessä ajassa voi aktivoida Kolka-järjestelmän, joka rajoittaa ja/tai estää käyttäjän.
+19. Yhteisön tekemien ohjelmien on noudatettava sääntöjä (käyttöehdot, vaikeustasot jne.) - järjestelmän väärinkäyttö johtaa ohjelmiston ja/tai käyttäjän estämiseen.
+20. Tilit, joiden nimi tai käyttö on harhaanjohtavaa (henkilöllisyyden varastaminen, tekaistut bottitilit jne.), eivät ole sallittuja..
+21. Loukkaavan tai epäolennaisen todentamiskuvan ja/tai kuvauksen lähettäminen johtaa tilin välittömään estämiseen. +22. Jokaisen Duino-Coin-käyttäjän on noudatettava edellä mainittuja sääntöjä. Epäasianmukainen käyttäytyminen johtaa tilin estämiseen.
+ + +## Tietosuojakäytäntö +1. Pääpalvelimella tallennetaan käyttäjien käyttäjänimet, tiivistetyt salasanat (bcrypt-menetelmällä), tilin luomispäivämäärät, viimeiset kirjautumisajat ja sähköpostiosoitteet.
+2. Sähköpostiosoitteet eivät ole julkisesti saatavilla ja niitä käytetään vain käyttäjän kanssa tarvittaessa kommunikointiin, vahvistamaan vaihtoja DUCO-Exchange -sivustolla ja vastaanottamaan satunnaisia uutiskirjeitä (suunniteltu tulevaisuutta varten).
+3. Saldot, siirrot ja kaivostoimintaan liittyvät tiedot ovat julkisesti saatavilla JSON APIn kautta.
+4. Tietosuojakäytäntöä voidaan muuttaa tulevaisuudessa, mutta käyttäjät saavat ilmoituksen ennen muutoksia. + + +## Aktiiviset projektin ylläpitäjät + +* [@revoxhere](https://github.com/revoxhere/) - robik123.345@gmail.com (Johtava Python-kehittäjä, projektin perustaja) +* [@Bilaboz](https://github.com/bilaboz/) (Johtava NodeJS-kehittäjä) +* [@connorhess](https://github.com/connorhess) (Johtava Python-kehittäjä, Node-S:n omistaja) +* [@JoyBed](https://github.com/JoyBed) (Johtava AVR-kehittäjä) +* [@Yennefer](https://www.instagram.com/vlegle/) (Johtava sosiaalisen median manageri) +* [@Tech1k](https://github.com/Tech1k/) - kristian@beyondcoin.io (Johtava Webmaster ja DUCO-kehittäjä) +* [@ygboucherk](https://github.com/ygboucherk) ([wDUCO](https://github.com/ygboucherk/wrapped-duino-coin-v2) kehittäjä) +* [@Lulaschkas](https://github.com/Lulaschkas) (Kehittäjä) +* [@joaquinbvw](https://github.com/joaquinbvw) (AVR kehittäjä) + +Suuret kiitokset kaikille [contributors](https://github.com/revoxhere/duino-coin/graphs/contributors), jotka ovat auttaneet kehittämään Duino-Coin-projektia. + +
+ +Projektin linkki: [https://github.com/revoxhere/duino-coin/](https://github.com/revoxhere/duino-coin/) +
+Verkkosivuston linkki: [https://duinocoin.com/](https://duinocoin.com/) +
+Duino-Coin tilan sivu: [https://status.duinocoin.com](https://status.duinocoin.com) diff --git a/Resources/README_TRANSLATIONS/README_id_ID.md b/Resources/README_TRANSLATIONS/README_id_ID.md index c9c671a4..85821dcb 100644 --- a/Resources/README_TRANSLATIONS/README_id_ID.md +++ b/Resources/README_TRANSLATIONS/README_id_ID.md @@ -32,6 +32,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_in_HI.md b/Resources/README_TRANSLATIONS/README_in_HI.md index 35c29e3e..d63d3987 100644 --- a/Resources/README_TRANSLATIONS/README_in_HI.md +++ b/Resources/README_TRANSLATIONS/README_in_HI.md @@ -43,6 +43,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_it_IT.md b/Resources/README_TRANSLATIONS/README_it_IT.md index 7544f46f..5bfcae04 100644 --- a/Resources/README_TRANSLATIONS/README_it_IT.md +++ b/Resources/README_TRANSLATIONS/README_it_IT.md @@ -39,6 +39,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_ja_JP.md b/Resources/README_TRANSLATIONS/README_ja_JP.md index d0c7adbe..fb21bbf3 100644 --- a/Resources/README_TRANSLATIONS/README_ja_JP.md +++ b/Resources/README_TRANSLATIONS/README_ja_JP.md @@ -45,6 +45,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_kr_KR.md b/Resources/README_TRANSLATIONS/README_kr_KR.md index 2e7fac84..d6eb2a3f 100644 --- a/Resources/README_TRANSLATIONS/README_kr_KR.md +++ b/Resources/README_TRANSLATIONS/README_kr_KR.md @@ -31,6 +31,8 @@ + +
diff --git a/Resources/README_TRANSLATIONS/README_pt_BR.md b/Resources/README_TRANSLATIONS/README_pt_BR.md index 0c320f7c..6d656ec0 100644 --- a/Resources/README_TRANSLATIONS/README_pt_BR.md +++ b/Resources/README_TRANSLATIONS/README_pt_BR.md @@ -27,6 +27,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_ru_RU.md b/Resources/README_TRANSLATIONS/README_ru_RU.md index 79256448..7e58ea11 100644 --- a/Resources/README_TRANSLATIONS/README_ru_RU.md +++ b/Resources/README_TRANSLATIONS/README_ru_RU.md @@ -20,6 +20,9 @@ + + +
diff --git a/Resources/README_TRANSLATIONS/README_sk_SK.md b/Resources/README_TRANSLATIONS/README_sk_SK.md index 27a710e8..9081907f 100644 --- a/Resources/README_TRANSLATIONS/README_sk_SK.md +++ b/Resources/README_TRANSLATIONS/README_sk_SK.md @@ -38,6 +38,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_th_TH.md b/Resources/README_TRANSLATIONS/README_th_TH.md index 28c96837..25a5638c 100644 --- a/Resources/README_TRANSLATIONS/README_th_TH.md +++ b/Resources/README_TRANSLATIONS/README_th_TH.md @@ -30,6 +30,8 @@ + + diff --git a/Resources/README_TRANSLATIONS/README_tr_TR.md b/Resources/README_TRANSLATIONS/README_tr_TR.md index 7777b7ef..04941a83 100644 --- a/Resources/README_TRANSLATIONS/README_tr_TR.md +++ b/Resources/README_TRANSLATIONS/README_tr_TR.md @@ -14,6 +14,8 @@
+ + diff --git a/Resources/README_TRANSLATIONS/README_zh_CN.md b/Resources/README_TRANSLATIONS/README_zh_CN.md index c1abe736..4ceabcc6 100644 --- a/Resources/README_TRANSLATIONS/README_zh_CN.md +++ b/Resources/README_TRANSLATIONS/README_zh_CN.md @@ -34,6 +34,8 @@ + + diff --git a/Resources/Wallet_langs.json b/Resources/Wallet_langs.json index fe16bfcd..1c827ecd 100644 --- a/Resources/Wallet_langs.json +++ b/Resources/Wallet_langs.json @@ -2094,5 +2094,110 @@ "sessionprofit_unavailable2": "最初に見積もり利益を確認する。", "tray_show": "ウィンドウを表示する", "tray_exit": "ウィンドウを閉じる" + }, + "finnish": { + "translation_author": "EeroVakiparta", + "welcome_message": "Tervetuloa\nDuino-Coin\nTkinter GUI Lompakkoon", + "warning": "Varoitus", + "duino_coin_wallet": "Duino-Coin Lompakko", + "uppercase_duino_coin_wallet": "DUINO-COIN LOMPAKKO", + "loading_database": "Ladataan tietokantaa...", + "please_wait": "Odota hetki...", + "please_wait_calculating": "Odota hetki - lasketaan...", + "preparing_wallet_window": "Valmistellaan lompakon ikkunaa...", + "username": "KÄYTTÄJÄTUNNUS", + "passwd": "SALASANA", + "keep_me_logged_in": "Pidä minut kirjautuneena", + "login": "KIRJAUDU", + "register": "REKISTERÖIDY", + "login_error": "Kirjautumisvirhe", + "fill_the_blanks_warning": "Täytä ensin tyhjät kohdat", + "registration_success": "Rekisteröinti onnistui", + "registration_success_msg": "Uusi käyttäjä on rekisteröity onnistuneesti. Voit nyt kirjautua sisään", + "register_on_network": "Rekisteröidy verkkoon", + "register_tos_warning": "Käyttämällä Duino-Coinia hyväksyt noudattavasi käyttöehtoja", + "confirm_passwd": "Vahvista salasana", + "old_passwd": "VANHA SALASANA", + "new_passwd": "UUSI SALASANA", + "confirm_new_passwd": "VAHVISTA UUSI SALASANA", + "register_error": "Käyttäjän rekisteröintivirhe", + "error_passwd_dont_match": "Salasanat eivät täsmää", + "same_passwd_error": "Uusi salasana on sama kuin vanha", + "loading": "Ladataan", + "wallet": "Lompakko", + "recipient": "VASTAANOTTAJA", + "amount": "MÄÄRÄ", + "send_funds": "LÄHETÄ DUCO", + "send_funds_warning": "Haluatko varmasti lähettää", + "send_funds_to": "kohteeseen", + "wrap_duco": "KÄÄRI DUCO", + "unwrap_duco": "PURKAUTA DUCO", + "estimated_profit": "ARVIOITU TUOTTO", + "estimated_profit_miner_warning": "Käynnistä louhintalaitteet ensin nähdäksesi arvioidun tuoton.", + "wallet_transactions": "Duino-Coin Lompakko - Tapahtumat", + "local_transactions": "PAIKALLISET TAPAHTUMAT", + "transaction_list": "TAPAHTUMALUETTELO", + "transaction_list_notice": "Klikkaa tapahtumaa nähdäksesi sen selaimessa.", + "currency_converter": "VALUUTTAMUUNNIN", + "from": "MISTÄ", + "to": "MIHIN", + "input_amount": "SYÖTÄ MÄÄRÄ", + "calculate": "LASKE", + "calculate_error": "Virheellinen laskenta", + "wallet_calculator": "Duino-Coin Lompakko - Valuuttamuunnin", + "result": "TULOS", + "statistics": "Tilastot", + "statistics_title": "Duino-Coin Lompakko - Tilastot", + "your miners": "SINUN LOUHIJAT", + "statistics_miner_warning": "Louhijoita ei voitu havaita tililläsi", + "richlist": "RIKASLISTA", + "network_info": "VERKON TIEDOT", + "difficulty": "Vaikeustaso", + "mined_blocks": "Louhitut lohkot", + "network_hashrate": "Verkon hashrate", + "active_miners": "Aktiiviset louhijat", + "estimated_price": "arvioitu hinta", + "registered_users": "Rekisteröityneet käyttäjät", + "mined_duco": "Kaiken aikaa louhittu DUCO", + "wrapper_title": "Duino-Coin Lompakko - Kääre", + "wrapped_error_tronpy": "Tronpy ei ole asennettu, asenna se käyttämällä komentoa `pip install tronpy`", + "wrapper_error": "Kääre ei ole määritetty. Määritä se asetuksissa!", + "wrapper_error_title": "Kääre-virhe", + "invalid_passphrase": "Virheellinen tunnuslause, poistetaan kääre käytöstä täksi istunnoksi", + "wrapper_config_title": "DUCO Kääre-asetukset", + "unwrapper_title": "Duino-Coin Lompakko - Kääreen purkaja", + "unwrap_amount": "Purkamisen määrä: ", + "ask_passphrase": "Tunnuslause (yksityisen avaimen käyttöön):", + "ask_private_key": "Yksityinen avain: ", + "passphrase": "Tunnuslause: ", + "settings": "Asetukset", + "uppercase_settings": "ASETUKSET", + "settings_title": "Duino-Coin Lompakko - Asetukset", + "logout": "KIRJAUDU ULOS", + "change_passwd": "VAIHDA SALASANA", + "change_passwd_lowercase": "Vaihda salasana", + "change_passwd_error": "Virhe salasanan vaihtamisessa", + "change_passwd_ok": "Salasana vaihdettu", + "configure_wrapper": "MÄÄRITÄ KÄÄRE", + "configure_wrapper_lowercase": "Määritä kääre", + "clear_transactions": "TYHJENNÄ TAPAHTUMAT", + "logged_in_as": "Kirjautunut käyttäjänä", + "wallet_version": "Lompakon versio", + "minute": "MINUUTTI", + "hour": "TUNTI", + "day": "PÄIVÄ", + "config_dev_warning": "Lisää vaihtoehtoja tulee tulevaisuudessa", + "your_miners": "SINUN KAIVUREITA", + "session": "ISTUNTO", + "wrapper_success": "Onnistunut kääriminen", + "wrapper_amount_to_wrap": "Käärittävä määrä", + "email": "SÄHKÖPOSTI", + "wrapper_error_tronpy": "Virhe Tronpyssa", + "translation_author_message": "Lompakko käännetty:", + "notification_new_transaction": "Uusi siirto", + "sessionprofit_unavailable1": "Käynnistä kaivurit", + "sessionprofit_unavailable2": "ensin nähdäksesi arvioidun tuoton.", + "tray_show": "Näytä ikkuna", + "tray_exit": "Sulje ikkuna" } } diff --git a/Wallet.py b/Wallet.py index 9530a058..baba00f8 100644 --- a/Wallet.py +++ b/Wallet.py @@ -2623,6 +2623,8 @@ def clear_amount_placeholder(self): lang = "thai" elif locale.startswith("ko"): lang = "korean" + elif locale.startswith("fi"): + lang = "finnish" else: lang = "english" except IndexError: From ba96c0e8c85f1732b261d827c26b68f8ea29e711 Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 6 May 2023 12:44:50 +0200 Subject: [PATCH 16/20] Update difficulty list for new arduino code --- AVR_Miner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AVR_Miner.py b/AVR_Miner.py index df680c67..733cde13 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -1096,9 +1096,9 @@ def mine_avr(com, threadid, fastest_pool, thread_rigid): start_diff = "ESP8266" elif hashrate_test > 1000: start_diff = "DUE" - elif hashrate_test > 500: + elif hashrate_test > 520: start_diff = "ARM" - elif hashrate_test > 300: + elif hashrate_test > 370: start_diff = "MEGA" pretty_print('sys' + port_num(com), From 4cbbe25c8fe3b6c9f942c5f090ef9124b4804f2e Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 6 May 2023 17:45:49 +0200 Subject: [PATCH 17/20] Version bump --- PC_Miner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PC_Miner.py b/PC_Miner.py index 48ff4bac..e957477b 100644 --- a/PC_Miner.py +++ b/PC_Miner.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Duino-Coin Official PC Miner 3.4 © MIT licensed +Duino-Coin Official PC Miner 3.5 © MIT licensed https://duinocoin.com https://github.com/revoxhere/duino-coin Duino-Coin Team & Community 2019-2023 @@ -140,7 +140,7 @@ class Settings: """ ENCODING = "UTF8" SEPARATOR = "," - VER = 3.4 + VER = 3.5 DATA_DIR = "Duino-Coin PC Miner " + str(VER) TRANSLATIONS = ("https://raw.githubusercontent.com/" + "revoxhere/" From 95291dab106e21c8eb11942c0da80a361ffbae28 Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 6 May 2023 17:46:18 +0200 Subject: [PATCH 18/20] Version bump --- AVR_Miner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AVR_Miner.py b/AVR_Miner.py index 733cde13..4695e15b 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Duino-Coin Official AVR Miner 3.45 © MIT licensed +Duino-Coin Official AVR Miner 3.5 © MIT licensed https://duinocoin.com https://github.com/revoxhere/duino-coin Duino-Coin Team & Community 2019-2023 @@ -109,7 +109,7 @@ def port_num(com): class Settings: - VER = '3.45' + VER = '3.5' SOC_TIMEOUT = 15 REPORT_TIME = 120 AVR_TIMEOUT = 10 From fb2a672a6e0d198dbbe713f80500b75bd851150c Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 6 May 2023 17:47:07 +0200 Subject: [PATCH 19/20] Version bump --- ESP8266_Code/ESP8266_Code.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ESP8266_Code/ESP8266_Code.ino b/ESP8266_Code/ESP8266_Code.ino index d1d317a3..ffccd876 100644 --- a/ESP8266_Code/ESP8266_Code.ino +++ b/ESP8266_Code/ESP8266_Code.ino @@ -3,7 +3,7 @@ ( _ \( )( )(_ _)( \( )( _ )___ / __)( _ )(_ _)( \( ) )(_) ))(__)( _)(_ ) ( )(_)((___)( (__ )(_)( _)(_ ) ( (____/(______)(____)(_)\_)(_____) \___)(_____)(____)(_)\_) - Official code for ESP8266 boards version 3.4 + Official code for ESP8266 boards version 3.5 Duino-Coin Team & Community 2019-2022 © MIT Licensed https://duinocoin.com @@ -158,7 +158,7 @@ const bool LED_BLINKING = true; const char * DEVICE = "ESP8266"; const char * POOLPICKER_URL[] = {"https://server.duinocoin.com/getPool"}; const char * MINER_BANNER = "Official ESP8266 Miner"; -const char * MINER_VER = "3.4"; +const char * MINER_VER = "3.5"; unsigned int share_count = 0; unsigned int port = 0; unsigned int difficulty = 0; From 352fdf3c590b312a68b8f6ef29f5f7c0caae3a94 Mon Sep 17 00:00:00 2001 From: Robert Piotrowski <50244265+revoxhere@users.noreply.github.com> Date: Sat, 6 May 2023 17:47:23 +0200 Subject: [PATCH 20/20] Version bump --- ESP32_Code/ESP32_Code.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ESP32_Code/ESP32_Code.ino b/ESP32_Code/ESP32_Code.ino index 0a1f5cd4..3c17b18b 100644 --- a/ESP32_Code/ESP32_Code.ino +++ b/ESP32_Code/ESP32_Code.ino @@ -3,7 +3,7 @@ ( _ \( )( )(_ _)( \( )( _ )___ / __)( _ )(_ _)( \( ) )(_) ))(__)( _)(_ ) ( )(_)((___)( (__ )(_)( _)(_ ) ( (____/(______)(____)(_)\_)(_____) \___)(_____)(____)(_)\_) - Official code for ESP32 boards version 3.4 + Official code for ESP32 boards version 3.5 Duino-Coin Team & Community 2019-2022 © MIT Licensed https://duinocoin.com @@ -265,7 +265,7 @@ SemaphoreHandle_t xMutex; const char * DEVICE = "ESP32"; const char * POOLPICKER_URL[] = {"https://server.duinocoin.com/getPool"}; const char * MINER_BANNER = "Official ESP32 Miner"; -const char * MINER_VER = "3.4"; +const char * MINER_VER = "3.5"; String pool_name = ""; String host = ""; String node_id = "";