Nonce im Merged Mining

Beim Mining von Bitcoin wird die Nonce in den Header aufgenommen, der dann gehasht und überprüft wird, um festzustellen, ob er unter dem Zielschwellenwert liegt.
Jeder kann überprüfen, ob der Header tatsächlich unterhalb des Schwellenwerts hasht. Beim Merged Mining ist jedoch laut Wiki der Hash des Headers der Hilfskette im Coinbase-Txin-Skript der übergeordneten Kette enthalten, ohne dass die Möglichkeit besteht, die Nonce in der Hilfskette zu ändern. Die Nonce des Elternteils wird wie üblich inkrementiert, aber der Aux-Hash bleibt gleich.

Wie können wir dann die Hilfskette verifizieren?

Liegt es daran, dass die übergeordnete Nonce durch den Hash des übergeordneten Headers in die Hilfskette gelangt? Trotzdem scheint dies für die Überprüfung nicht hilfreich zu sein, da der Hash der Aux-Kette keine Schwellenwertkriterien mehr erfüllen muss.

Antworten (2)

Um die Hilfskette zu verifizieren, müssen Sie nachweisen, dass am letzten Block in dieser Hilfskette eine bestimmte Menge an Arbeit geleistet wurde. Wie bei jeder Form des Minings beinhaltet dies die Berechnung eines Hashs, der unter einem Schwellenwert liegt.

Es spielt jedoch keine Rolle, dass das Pre-Image des Hashs auch viele andere irrelevante Daten enthält, solange es irgendwo den relevanten Hilfsblock-Header enthält. Dh aus Proof-of-Work-Sicht macht es keinen Unterschied, wenn Sie dies berechnen:

while(h > aux-threshold) {
    h = hash(aux-header + nonce)
    nonce++
}
result = nonce    

dagegen:

container = hash(hash(aux-header) + other-data)
while(h > aux-threshold) {
    h = hash(container + nonce)
    nonce++
}
result = nonce

Beide werden die gleiche Menge an Arbeit in Anspruch nehmen und beide werden beweisen, dass die Arbeit am erledigt wurde aux-header. Dies liegt daran container, dass der Aux-Header nachweislich enthalten ist, und da aux-headerund other-dataim Aux-Chain-Block gespeichert sind und der Hash jederzeit neu berechnet werden kann.

Für Merged Mining containerist es also tatsächlich der gehashte Header des übergeordneten Kettenblocks und aux-headermuss nur irgendwo in den übergeordneten Block aufgenommen werden. Es könnte wirklich überall eingefügt werden, solange der übergeordnete Block den Überprüfungsprozess besteht. Beispielsweise könnten Sie den Aux-Chain-Header-Hash als Adresse in eine Multisig-Transaktion einfügen oder als Datenelement, das auf dem Stack abgelegt, aber nie in einer der Transaktionen abgelegt wird. Am einfachsten lässt es sich jedoch im txin-Skript der Coinbase-Transaktion platzieren. Diese enthält sowieso immer beliebige Daten, und ihre Position an der Spitze der Kette bedeutet, dass other-datasie die geringste Anzahl von Merkle-Zweigen enthalten kann.

Warum das Downvote Mysterium Downvoter?
Bitte achten Sie auf die richtige Groß- und Kleinschreibung, längere Texte sind dadurch viel besser lesbar, da Satzanfänge besser sichtbar sind.

Sie überprüfen die Hilfskette auf genau die gleiche Weise, außer dass Sie auch überprüfen müssen, ob der Header der Hilfskette ordnungsgemäß in der Coinbase der übergeordneten Kette enthalten ist. Aus Sicht der Hilfskette kann man sich den gesamten Header der Primärkette als Teil einer riesigen Nonce vorstellen.

Ich denke, es ist nicht so nützlich, sich den Primary-Chain-Header-Hash als Teil einer Nonce vorzustellen, da der Primary-Chain-Header-Hash unter der Aux-Chain-Schwelle liegen muss, während Nonces diese Eigenschaft nicht haben unter einer Schwelle liegen müssen.
@mulllhausen Wenn Sie Nonce als "Wert, der der Kette egal ist, definieren, der gehasht wird, um einen Wert zu erzeugen, der unter dem Ziel liegen muss", dann ist es sinnvoll, über das gesamte primäre Chain-Zeug als Teil des Nonce auf der Hilfsfunktion nachzudenken Kette.
aber wir kümmern uns um einige der Werte im primären Header - zum Beispiel ist ein korrekter Merkle-Stamm eine Voraussetzung. Ich stimme zu, dass Teile des primären Headers einer Nonce entsprechen - nur nicht das Ganze.