GRUNDKUNSKAP [4]: Programvara för Duinocoinbrytning

Vilken programvara behöver du för att bryta Duinocoin (DUCO)?

Du utvinner Duinocoin med hjälp av särskild programvara för gruvdrift. Vilken programvara behöver du för de olika möjliga hårdvaruplattformarna och var får du tag på den? ".

Det är möjligt att utvinna Duinocoin med olika hårdvara och därmed också olika mjukvarulösningar. Det finns två grundläggande komponenter: en del som kommunicerar med poolservrarna, hämtar jobb och skickar tillbaka resultat, och en andra del som bearbetar jobben med DUCO-S1-algoritmen.

Översikt

Följande fyra artiklar ger en första och grov översikt över hela Duinocoin-projektet:

  1. GRUNDKUNSKAP [1]: Översikt över Duinocoin
  2. GRUNDKUNSKAP [2]: Konfigurera Duinocoin-plånbok
  3. GRUNDKUNSKAP [3]: Hårdvara för Duinocoin
  4. GRUNDKUNSKAP [4]: Programvara för Duinocoinbrytning

Andra artiklar på duinocoin.com går i detalj in på de enskilda aspekterna av Duinocoin (DUCO) och t.ex. byggandet av gruvriggar.

Github revoxhere

Duinocoin programvara av "revoxhere

Även om ett helt team av unga utvecklare har arbetat med Duinocoin-programvaran under en längre tid, har en ung programmerare utvecklat de första versionerna helt själv: Robert "revoxhere" Piotrowski. Duinocoin-programvaran för gruvdrift, men även program för DUCO:s webbtjänster och Rest API:er samt verktyg för Magicoin (MAGI) finns i hans Github-förråd på https://github.com/revoxhere.

Tips: Det är förresten särskilt spännande att analysera de första versionerna av Duinocoinen och se hur hela Duinocoinuniversumet har uppstått ur ett mycket enkelt projekt - och hur det kommer att utvecklas i framtiden.

Kommunikation med poolservrarna

Eftersom varje Duinocoin-gravare vill skicka sina resultat till servrarna med några sekunders mellanrum och begära ett nytt jobb, skulle ett enda serversystem bli överbelastat av detta. Därför finns det flera så kallade poolservrar som tar över denna uppgift. Varje gruvarbetare frågar först en central plats vilken poolserver den ska använda. Det är bland annat utnyttjandet av servrarna som avgör vilken pool man tilldelas.

Tips: För teständamål kan du också göra begäran själv med en webbläsare: https://server.duinocoin.com/getPool.

Svaret kommer i JSON-format (JavaScript Object Notation) och består av IP-adressen, poolnamnet, portadressen, servernamnet och ett statusmeddelande ("true" för "fungerade!"). Gruvarbetaren kontaktar nu poolservern, loggar in och ber om det första jobbet.

Uppdraget skickas vidare till den faktiska gruvmotorn - det kan vara själva kommunikationsdatorn (PC_Miner.py) eller mikrokontroller som är anslutna via USB eller I²C (AVR_Miner.py). Om ett resultat har beräknats med DUCO-S1 rapporteras det tillbaka till poolservern och väntar på svar. Svaret kan vara "GODT" för en korrekt beräkning eller "SJUKT" för ett felaktigt resultat eller ett annat problem.

Job:   Hash1=E320D1, Hash2=7B025A, Difficulty=6
Miner: Är SHA1(Hash1 + 0..Difficulty) = Hash2 ?
        SHA1(E320D1 + 0) = 32C812 -> fel
        SHA1(E320D1 + 1) = BC3D24 -> fel
        SHA1(E320D1 + 2) = 0B0443 -> fel
        SHA1(E320D1 + 3) = 223F42 -> fel
        SHA1(E320D1 + 4) = 7B025A -> korrekt, lösning = 4

Vad är SHA1?

SHA1 (Secure Hash Algorithm #1) är en gammal och numera lätt knäckt hash-algoritm som utvecklades 1993 av NIST (National Institute of Standards and Technology) tillsammans med NSA (National Security Agency). Så länge säkerheten inte är ett problem kan SHA användas för enkla hashuppgifter som DUCO-S1 utan problem. SHA1 kräver relativt lite datorkraft.

Förutom resultatet registreras även antal SHA1-tester. Tillsammans med den tid det tog gruvarbetaren att lösa uppgiften ger detta hashes/sekund (H/s). Med hjälp av Kolka kontrollerar poolservrarna om H/s motsvarar den använda plattformen och svårighetsgraden (En Arduino UNO klarar för närvarande 268 H/s).

Hela programvaran för gruvdrift i ett paket

Github Duinocoin

Bortsett från programvaran för (pool)servern finns all programvara för Duinocoin miner i ett paket på Github.

Paketet kan laddas ner via den gröna knappen "Code / Download ZIP" och packas upp i en katalog.

Om du använder GNU/Linux eller en BSD som Mac OS X, FreeBSD, NetBSD eller OpenBSD kan du också göra detta med git:

git clone --depth 1 -b 3.18 https://github.com/revoxhere/duino-coin

Den föga kända parametern "-b 3.18" hämtar exakt denna (för närvarande aktuella) version. Du får en katalog "duino-coin" med alla filer som behövs för normala DUCO-miners:

Adresser:

  • I Arduino_Code finns den skiss som du måste flasha till en Arduino UNO/Nano.
  • ESP8266_Code och ESP32_Code innehåller källkoden för ESP-mikrokontrollerna.
  • Resources innehåller officiella bilder, symboler och översättningar.
  • Tools innehåller några hjälpskript för Raspberry Pi och för att ladda upp Arduino-skisser.
  • Unofficial Miners innehåller en del icke-officiella minerskript/kod. Tips: Julia_Miner.jl är superimpel!

Filer:

  • AVR-Miner.py är Python3-skriptet för PC:n för att gräva med Arduino(s).
  • PC_Miner.py är en Python3-miner för PC (och Raspberry Pi).
  • CLI_Wallet.py och Wallet.py är två implementationer av plånböcker - se upp, båda är föråldrade!
  • README.md är ReadMe formaterad i Markdown.
  • LICENSE innehåller MIT-licensen (till skillnad från GPL3) som är helt fri. Ett bra val!
  • requirements.txt innehåller en lista över Python3-moduler som behövs för skriptet.