Jump to content
Roal

Eigenen Miner programmieren.

Empfohlene Beiträge

Guten Abend, 

ich programmiere selber schon länger in verschiedenen Programmiersprachen und wollte nun selber einen eigenen Programmieren.

Das ganze sehr einfach gehalten, sodass kein Pool support bei ist (eventuell brauche ich aber doch einen, da ich nicht die bitcoin chain geladen habe, oder ich weiche auf einen altcoin aus). Das ganze würde als test für mich dienen und mich würde es interessieren, ob ich an die Geschwindigkeit von bekannten minern komme. 

 

Wenn ich es richtig verstehe muss ich doch  nur die JSON Daten anfordern, konvertieren und diese hashen. Dementsprechend immer die nounce erhöhen und schauen, ob ich genug Nullen am Anfang von dem sha256 string habe. Sonst das ganze wieder.

Weiter unten sind zwei links, bei denen ich mich ein bisschen erkundigt habe. Dort ist sogar ein stratum support mit bei, aber alles in python und ich weiß nicht, ob dies die beste Lösung ist, da die meisten miner in C/C++ laufen. Dies sollte auch schneller sein als python.

 

Vielleicht ist ja ein Dev oder Leute, die sich mit dem mining/programmieren auskenne da die mir helfen können.

 

Danke schonmal.

http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html

https://github.com/philipperemy/my-first-bitcoin-miner

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 40 Minuten schrieb Roal:

Vielleicht ist ja ein Dev oder Leute, die sich mit dem mining/programmieren auskenne da die mir helfen können.

Wo bei denn? Du hast keine Frage gestellt.

Mach es doch einfach so, wie du geschrieben hast, das schaut ja erst mal gut aus.

Beim programmieren kann ich dir nur in Java helfen.  Die Syntax beim BTC Mining ist gut dokumentiert und nicht all zu komplex.

bearbeitet von MixMax

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 9 Minuten schrieb Adriana Monk:

Nimm Stackoverflow, da findest Du bessere Experten. Da löse ich meine Probleme auch immer.

Ach, die kennen sich wohl besser mit dem BTC-Mining aus?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
1 hour ago, MixMax said:

Und ich für Java, war nen Fehler

Ich bin einfach neugierig: Warum?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 46 Minuten schrieb PeWi:

Ich bin einfach neugierig: Warum?

Die Akzeptanz und Verbreitung ist nicht mer so doll. Viele API's und Treiber haben gar keine Java Schnittstelle mehr. Zu dem hat Java üble Einschränkungen um die sich keiner mehr kümmert. Z.B. gibt es keine 64bit Integer und damit nur sehr kurze und eingeschränkte 32bit Arrays.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
29 minutes ago, MixMax said:

Die Akzeptanz und Verbreitung ist nicht mer so doll. Viele API's und Treiber haben gar keine Java Schnittstelle mehr.

Vor knapp 20 Jahren hatte ich beruflich ein paar Jahre mit Java zu tun, ich war auch nicht ganz glücklich damit. Vor allem hatte ich das Gefühl, dass Java und sein Umfeld in rasendem Tempo komplizierter und komplexer wurden. Bei den EJBs hat mich dann endgültig die Begeisterung verlassen, und ich war nicht unglücklich, dass sich unsere Wege trennten.

Dass Akzeptanz und Verbreitung von Java sinken, hätte ich nicht gedacht. Kann man mal sehen, auch "große Namen" sind nicht gefeit ...

34 minutes ago, MixMax said:

Zu dem hat Java üble Einschränkungen um die sich keiner mehr kümmert. Z.B. gibt es keine 64bit Integer und damit nur sehr kurze und eingeschränkte 32bit Arrays.

Oops, das ist heutzutage natürlich übel.

Spielst du mit dem Gedanken, auf eine andere Sprache zu wechseln?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 7 Minuten schrieb PeWi:

Spielst du mit dem Gedanken, auf eine andere Sprache zu wechseln?

Oh ja,  und ich hab schon damit begonnen.

Je nach dem wie tief ma da drinn steckt, ist das ne Menge Arbei. Es gibt unglaublich viele Bibliotheken mit nen Haufen Methoden die man alle gelernt hat, ist echt nen Trauerspiel 😞

 

bearbeitet von MixMax

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gerade eben schrieb Adriana Monk:

Und wenn Du Python nimmst, weisst Du, dass da hinten und vorne nichts zusammenpasst. 

Ich werde meine C Kentnisse ausbauen und mich danach an C++ ganz gescheidig ranpirschen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
1 hour ago, Adriana Monk said:

Und wenn Du Python nimmst, weisst Du, dass da hinten und vorne nichts zusammenpasst. 

Das Problem hatte ich nie.

Kann es sein, dass deine Erfahrungen mit unzusammenpassendem Python noch aus der Umbruchzeit von Python2 nach Python 3 stammen?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hier geht ja gut was ab :D

Also das von mir war eine indirekte Frage, wenn daran was falsch ist gerne korrigieren.

 

Und ja ich muss zustimmen, dass meiner Meinung nach Java nix mehr Wert ist und nun aussterben wird. Nur leider will das mein Professor nicht verstehen und Unterrichtet das 😕

 

Von Matlab bin ich auch nicht überzeugt.. Arrays die bei 1 starten, alles ist eine Matrix, komische Syntax. Ist nicht so meins, muss ich aber wegen meinem Studium auch durch.

Python ist sehr interessant, da es alles kann und das sehr performant.

 

Ich bleibe aber bei meinen C Sprachen sowie Javascript + die ganzen Frameworks, da es immer gefragt ist.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
1 hour ago, MixMax said:

Ich werde meine C Kentnisse ausbauen und mich danach an C++ ganz gescheidig ranpirschen.

Heutzutage noch mit C? 😉

Ich habe viele Jahre in C programmiert und hätte auch bei der Entwicklung meines ersten Bots zum vertrauten C greifen wollen. Was mich davon abgebracht hat, war, dass ich auf die Schnelle keine einfache Lib finden konnte, mit der ich unaufwändig HTTPS-Abfragen hätte machen können. Bei "heutigen" Sprachen gehört das dagegen zur Grundausstattung, weswegen ich dann letztlich bei Python gelandet bin.

Was mich inzwischen an Python nervt, ist zum einen die schwache Geschwindigkeit bei eigener Arithmetik und die aufwändige Weitergabe von Programmen (ganz extrem, wenn man den Source nicht offenbaren will).

Deswegen liebäugle ich seit Monaten mit Go als Mittelding zwischen C und Python, aber voller Performance und einfachster Weitergabe (ein Exe - fertig). Nachteil ist, dass es bei Go weniger Libs für Gebiete außerhalb der Standardumgebung gibt als für Python (z.B. Statistik).

Rust scheint auch interessant zu sein. Vor allem das Prinzip des Besitzens von Variablen, wodurch bereits der Compiler nahezu alle Speicherfehler entdecken können soll - das hat mir bei C schon öfter schmerzlich gefehlt ... 😂

Nochmal zu C und C++ - ich habe schon öfter gelesen, dass eine C-Vorprägung hinderlich für gutes, modernes C++ sein soll. (Mangels eigener C++-Erfahrungen kann ich das nicht beurteilen.)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
3 minutes ago, Roal said:

Python ist sehr interessant, da es alles kann und das sehr performant.

Dem ersten Teil stimme ich gerne zu.

Bei zweiten nur, wenn du die Aufgaben an Libs o.ä. delegieren kannst - wenn du die selber in Python ausprogrammieren musst, ist die Geschwindigkeit oft nicht so toll bis mau verglichen mit echten Compilersprachen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 32 Minuten schrieb Roal:

Von Matlab bin ich auch nicht überzeugt.. Arrays die bei 1 starten,

 Um Himmels willen, was ist das denn für den Blödsinn 😂

vor 28 Minuten schrieb PeWi:

Heutzutage noch mit C? 😉

Ich habe viele Jahre in C programmiert und hätte auch bei der Entwicklung meines ersten Bots zum vertrauten C greifen wollen. Was mich davon abgebracht hat, war, dass ich auf die Schnelle keine einfache Lib finden konnte, mit der ich unaufwändig HTTPS-Abfragen hätte machen können. Bei "heutigen" Sprachen gehört das dagegen zur Grundausstattung, weswegen ich dann letztlich bei Python gelandet bin.

Oh ja, du glaubst nicht wie viele Projekte noch in C sind und wenn man da mal reinschauen will, oder was anpassen will, ist das schon nützlich wenn man bissle C lesen kann. C ist auch für ganz grundlegende Hardware nahe Berechnungen nützlich. Z.B. wenn man ne extrem schnelle Hashfunktion schreiben möchte, SHA256 zB. (Hm wer wollte so was hier haben? :D) Also immer wenn es um Performance geht, würde ich mich für C entscheiden. Viele Treiber sind auch noch in C und wenn man die einbinden will, kann man da einfacher mit C ran.

Und natürlich ist mir klar, wo C endet, komplexe Objektorientierte Projekte würde ich damit auch nicht beginnen.

vor 28 Minuten schrieb PeWi:

Nochmal zu C und C++ - ich habe schon öfter gelesen, dass eine C-Vorprägung hinderlich für gutes, modernes C++ sein soll. (Mangels eigener C++-Erfahrungen kann ich das nicht beurteilen.)

Kann ich auch nicht beurteilen, glaub ich auch nicht und geht mir am A.... vorbei. :D

 

bearbeitet von MixMax

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 31 Minuten schrieb PeWi:

Heutzutage noch mit C? 😉

Wenn man einen Atmega vor sich liegen hat, wirst du C benutzen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor einer Stunde schrieb Adriana Monk:

Das muss jeder selber entscheiden. Im Bereich Trading ist Matlab das Tool der Wahl, besonders wenn man viel Research macht. Die Sprache ist dazu gemacht, Matrix schnell zu verwalten. Auch sind die Toolboxen unschlagbar.

Für mich ist es halt im ersten moment eine komische Syntax und viel zu viel, als Student haben wir alles, was es dafür gibt

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
11 hours ago, MixMax said:

Oh ja, du glaubst nicht wie viele Projekte noch in C sind

Im wissenschaftlichen Umfeld sollen noch diverse Fortran-Programme herumgeistern, so wie viele wesentliche Teile bei Banken immer noch in Cobol sind.

Insofern glaube ich das mit C sofort.

11 hours ago, Roal said:

Wenn man einen Atmega vor sich liegen hat, wirst du C benutzen.

Natürlich.

Mich - als Laien - wundert sowieso, dass man so kleine Dinger wie einen Arduino heutzutage mit Python programmiert/programmieren kann.

bearbeitet von PeWi
Tippfehler

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
30 minutes ago, MixMax said:

Selbst Teile von Bitcoin-Core sind in C programmiert.

C gefällt mir nach wie vor.

Ich mag es nur nicht mehr für Aufgaben verwenden, bei denen ich nach diversen Libs suchen müssten, deren "Tätigkeitsfeld" bei moderneren Sprachen bereits in der Standard-Runtime mitgeliefert wird.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 4 Minuten schrieb PeWi:

C gefällt mir nach wie vor.

Ich mag es nur nicht mehr für Aufgaben verwenden, bei denen ich nach diversen Libs suchen müssten, deren "Tätigkeitsfeld" bei moderneren Sprachen bereits in der Standard-Runtime mitgeliefert wird.

Ganz genau so sehe ich es auch. :)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 8 Minuten schrieb Adriana Monk:

Ich kenne Leute, die alle drei Monate 10M Euro auf den Tisch legen, nur um eine Microsekunde schneller zu sein.

Jetzt hör doch mal bitte auf, mit dem Blödsinn immer.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Es bezog sich eher auf "ich kenne" und die 10M Euro.

Das mit den High Frequency Trading ist mir bekannt. Wie viel Geld, da für wirklich ausgegeben wird, weis niemand.

 

Mich stört eigenlich nur diese ständige Angeberrei ab und an.

bearbeitet von MixMax

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@Roal

Um mal was zum Thema beizutragen.  Hier ist nen Block Nr: 125552

Raw Block:  0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a146950401000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0804f2b9441a022a01ffffffff014034152a01000000434104d879d5ef8b70cf0a33925101b64429ad7eb370da8ad0b05c9cd60922c363a1eada85bcc2843b7378e226735048786c790b30b28438d22acfade24ef047b5f865ac000000000100000001ad6279669bcc8e3003267d97c9e364a9835ea7a5b53871d057783ef96f468d73000000008c4930460221009805aa00cb6f80ca984584d4ca40f637fc948e3dbe159ea5c4eb6941bf4eb763022100e1cc0852d3f6eb87839edca1f90169088ed3502d8cde2f495840acac69eefc9801410486477e6a23cb25c9a99f0c467c6fc86197e718ebfd41d1aef7cc3cbd75197c1f1aaba985b22b366a0729ccb8aa38277809d6d218cf4077ac9f29a953b5435222ffffffff0280f0fa02000000001976a9146f31097e564b9d54ebad662d5c4b5621c18ff52388ac007ddaac000000001976a9147228033b48b380900501c39c61da4ab453ca88e888ac0000000001000000035a19f341c42071f9cec7df37c4853c95d6aecc95e3bf19e3181d30d99552b8c9000000008a473044022025bca5dc0fe42aca5f07c9b3fe1b3f72113ffbc3522f8d3ebb2457f5bdf8f9b2022030ff687c00a63e810b21e447d3a57b2749ebea553cab763eb9b99e1b9839653b014104469f7eb54b90d90106b1a5412b41a23516028e81ad35e0418a4460707ae39a4bf0101b632260fb08979aba0ceea576b5400c7cf30b539b055ec4c0b96ab00984ffffffff5b72d3f4b6b72b3511bddd9994f28a91cc03212f200f71b91df13e711d58c1da000000008c493046022100fbef2589b7c52a3be0fd8dd3624445da9c8930f0e51f6a33d76dc0ca0304473d0221009ec433ca6a9f16184db46468ff39cafaa9643021e0c66a1de1e6f9a612092790014104b27f4de096ac6431eec4b807a0d3db3e9f9be48faab692d5559624acb1faf4334dd440ebf32a81506b7c49d8cf40e4b3f5c6b6e99fcb6d3e8a298174bd2b348dffffffff292e94738851718433a3168e43cab1c6a811e9a0f35b06b6cec60fea9abe0f43010000008a4730440220582813f2c2d7cbb84521f81d6c2a1147e5296e90bee05f583b3df108fdac72010220232b43a2e596cef59f82c8bfff1a310d85e7beb3e607076ff8966d6d374dc12b014104a8514ca51137c6d8a4befa476a7521197b886fceafa9f5c2830bea6df62792a6dd46f2b26812b250f13fad473e5cab6dcceaa2d53cf2c82e8e03d95a0e70836bffffffff0240420f00000000001976a914429e6bd3c9a9ca4be00a4b2b02fd4f5895c1405988ac4083e81c000000001976a914e55756cb5395a4b39369d0f1f0a640c12fd867b288ac000000000100000002c8a8356402b9271ae73116b3a613d0a489aa3441a72d4b53a98eb7837584e17a010000008a4730440220771ae3ed7f2507f5682d6f63f59fa17187f1c4bdb33aa96373e73d42795d23b702206545376155d36db49560cf9c959d009f8e8ea668d93f47a4c8e9b27dc6b330230141048a976a8aa3f805749bf62df59168e49c163abafde1d2b596d685985807a221cbddf5fb72687678c41e35de46db82b49a48a2b9accea3648407c9ce2430724829ffffffffa4f0111c9248f7360b6e3fed4856563eb0aa82b10303c14befae96ed4818c7fe010000008c49304602210087fc57bd3ce0a03f0f7a3300a84dde8d5eba23dfdc64b8f2c17950c5213158d102210098141fbd22da33629cfc25b84d49b397144e1ec6287e0edd53dbb426aa6a72ed014104dee3ef362ae99b46422c8028f900a138c872776b2fcffed3f9cd02ee4b068a6df516a50249ae6d8f420f9ce19cdfc4663961296a71cd62b04a2c8a14ff89b1d0ffffffff01c0e1e400000000001976a914e43f7c61b3ef143b0fe4461c7d26f67377fd207588ac00000000

Der Blockhash ist: 00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d

Und so geht es :

  >>> hashlib importieren
 >>> header_hex = ("01000000" +
  "81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a3080000000000" +
  "e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
  "c7f5d74d" +
  "f2b9441a" +
  "42a14695")
 >>> header_bin = header_hex.decode ('hex')
 >>> hash = hashlib.sha256 (hashlib.sha256 (header_bin) .digest ()). digest ()
 >>> hash.encode ('hex_codec')
 "1dbd981fe6985776b644b173a4d0385ddc1aa2a829688d1e00000000000000"
 >>> Hash [:: - 1] .encode ('hex_codec')
 "00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d" 

Ist hier genau beschrieben für diese Beispiel: https://translate.google.com/translate?hl=de&sl=en&u=https://en.bitcoin.it/wiki/Block_hashing_algorithm&prev=search

 

In Java sind das übrigens nur die paar Zeilen hier:

public byte[] getBlockHash()
{   
    byte[] h = new byte[80];
    System.arraycopy(blk, 0, h, 0, 80);   
    h = Calc.getHashSHA256(Calc.getHashSHA256(h));
    Convert.swapBytes(h);
    return h;
}

 

 

Und die Kurzversion ist:

Hash einfach 2 mal die ersten 80Bytes mit SHA256 und mach danach nen ByteSwap. Fertig. :)

bearbeitet von MixMax

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


×
×
  • Neu erstellen...

Wichtige Information

Wir speichern Cookies auf Ihrem Gerät, um diese Seite besser zu machen. Sie können Ihre Cookie-Einstellungen anpassen, ansonsten gehen wir davon aus, dass Sie damit einverstanden sind. In unseren Datenschutzerklärungen finden sie weitere Informationen.