Ich habe viele Artikel gelesen und versucht zu verstehen, wie man die von getwork
; habe ich aber total übersehen getblocktemplate
.
Ich versuche nur zu verstehen, wie alle folgenden Daten zusammengesetzt werden, um Hashes zu generieren, um einen gültigen Block zu bilden (unter Verwendung verschiedener Nonces).
Entschuldigung, falls dies bereits beantwortet wurde. Ich weiß, dass es viele Artikel darüber gibt, wie man einen Block-Header zusammenstellt und Midstate verwendet, etc. Das meiste davon verstehe ich; aber die Datenzusammensetzung von getblocktemplate
ist ein bisschen anders und hat mich wirklich umgehauen.
Wenn jemand so freundlich wäre, den gesamten Hashing-Prozess (aus Mining-Sicht) zu erklären, würde ich mich sehr darüber freuen. Eine programmatische Erklärung wäre ideal, da ich versuche, meinen eigenen Mining-Client zu erstellen.
{
"result":{
"version":2,
"previousblockhash":"00000000000000075f2f454573766ffae69fe41d6c7ccfcabbf8588fcd80ed52",
"transactions":[
{
"data":"0100000001cba672d0bfdbcc441d171ef0723a191bf050932c6f8adc8a05b0cac2d1eb022f010000006c493046022100a23472410d8fd7eabf5c739bdbee5b6151ff31e10d5cb2b52abeebd5e9c06977022100c2cdde5c632eaaa1029dff2640158aaf9aab73fa021ed4a48b52b33ba416351801210212ee0e9c79a72d88db7af3fed18ae2b7ca48eaed995d9293ae0f94967a70cdf6ffffffff02905f0100000000001976a91482db4e03886ee1225fefaac3ee4f6738eb50df9188ac00f8a093000000001976a914c94f5142dd7e35f5645735788d0fe1343baf146288ac00000000",
"hash":"7c90a5087ac4d5b9361d47655812c89b4ad0dee6ecd5e08814d00ce7385aa317",
"depends":[],
"fee":10000,
"sigops":2
},
...
],
"coinbaseaux":{
"flags":"062f503253482f"
},
"coinbasevalue":2501100000,
"target":"0000000000000026222200000000000000000000000000000000000000000000",
"mintime":1379549850,
"mutable":[
"time",
"transactions",
"prevblock"
],
"noncerange":"00000000ffffffff",
"sigoplimit":20000,
"sizelimit":1000000,
"curtime":1379553872,
"bits":"19262222",
"height":258736
},
"error":null,
"id":"curltest"
}
Das Wiki hat eine extrem gute Erklärung, mit einem Python-Durchlauf, der Sie von der GBT-Ausgabe zur gemeinsamen Einreichung führt. Sie können sich auch einige der Implementierungen in Luke-Jrs "gmp-proxy" ansehen, der GBT-Antworten in eine getwork
kompatible Schnittstelle übersetzt.
https://en.bitcoin.it/wiki/Getblocktemplate
https://gitlab.com/bitcoin/eloipool/blob/master/gmp-proxy.py
Sie möchten sich wahrscheinlich die BIPs 22 und 23 sowie den Quellcode von libblkmaker ansehen (der ein Anwendungsbeispiel enthält).
xil3
{"capabilities": ["coinbasetxn", "workid", "coinbase/append"]}
. Auch bei den Rückgabedaten -'"mutable":["time","transactions","prevblock"]
vs"mutable": ["coinbase/append"]
. In meiner GBT-Antwort hat escoinbaseaux flags
stattcoinbasetxn data
- was bedeutet das? Was bedeutet genauheight
? Wie setzt sich das alles zusammen? Es erklärt nicht die kleineren Details.xil3
Anonym
xil3
Luke-Jr