Aufbau einer markierten Merkle-Wurzel
Baue eine SHA-256-Merkle-Wurzel aus einem bis 64 Byte-Blättern von höchstens 4096 Bytes mit getrennten Blatt- und Elternmarkierungen.
import hashlib
def merkle_root(leaves):
if type(leaves) is not list or not 1 <= len(leaves) <= 64 or any(type(x) is not bytes or len(x) > 4096 for x in leaves):
raise ValueError("merkle.leaves")
level = [hashlib.sha256(b"\x00"+x).digest() for x in leaves]
while len(level) > 1:
if len(level) % 2:
level.append(level[-1])
level = [hashlib.sha256(b"\x01"+level[i]+level[i+1]).digest() for i in range(0, len(level), 2)]
return level[0].hex()
| Projekt | Teste eine ungerade Ebene durch Verdopplung des letzten Knotens und lehne Leere ohne Eigentumsnachweisbehauptung ab. |
|---|---|
| Vor dem Anwenden prüfen | Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen. |
| Modelle | Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen. |
import hashlib
def merkle_root(leaves):
if type(leaves) is not list or not 1 <= len(leaves) <= 64 or any(type(x) is not bytes or len(x) > 4096 for x in leaves):
raise ValueError("merkle.leaves")
level = [hashlib.sha256(b"\x00"+x).digest() for x in leaves]
while len(level) > 1:
if len(level) % 2:
level.append(level[-1])
level = [hashlib.sha256(b"\x01"+level[i]+level[i+1]).digest() for i in range(0, len(level), 2)]
return level[0].hex()
Halten Sie Byte-Konventionen bei Änderungen am Hashcode stabil
LeafVellin ist ein Programmierarbeitsbereich für Windows zum Besprechen von Quellcodeänderungen mit einem verbundenen KI-Modell. Hashcode benötigt eine besonders genaue Beschreibung der verarbeiteten Bytes: Eine harmlos wirkende Darstellungsänderung kann ein völlig anderes Ergebnis erzeugen. Beginnen Sie vor einer Umstrukturierung mit der Interoperabilitätsanforderung und einem bekannten Ein-/Ausgabe-Testfall.
Das Beispiel eines markierten Merkle-Baums bietet eine gezielte Projektaufgabe. Sie könnten den Assistenten Blattreihenfolge, unterschiedliche Präfixe für Blätter und innere Knoten sowie die Verdopplung eines ungeraden letzten Knotens prüfen lassen. Bringen Sie den Code für Blattbereitstellung und Wurzelverarbeitung mit, damit diese Konventionen über den gesamten geänderten Pfad sichtbar bleiben.
Prüfen Sie Änderungen anhand fester Testfälle für ein einzelnes Blatt, eine gerade und eine ungerade Anzahl. Führen Sie die Prüfungen im Projekt aus und vergleichen Sie exakte Wurzelwerte statt nur die Ausgabeform. Muss eine andere Implementierung übereinstimmen, verwenden Sie deren dokumentierte Konventionen und unabhängige Testfälle; allein der Name derselben Hashfunktion belegt keine kompatiblen Bäume.
Ungefilterte KI-Modelle können über unterstützte OpenAI-kompatible oder Anthropic-Endpunkte gewählt werden, soweit diese Dienste das gewählte Modell anbieten. Konfigurieren Sie bei Bedarf Zugangsdaten und prüfen Sie Werkzeuge und Kontextgrenzen. Anbieterbeschränkungen gelten weiterhin; die endgültige Entscheidung über eine Hashcodeänderung beruht auf Ihrer Prüfung und Ihren Belegen.
Fragen vor einer Bytebaum-Umstrukturierung
Worin müssen zwei Implementierungen neben der Hashfunktion übereinstimmen?
Legen Sie Blattbytes und -reihenfolge, Präfixe, Verkettung innerer Knoten und Behandlung ungerader Knotenzahlen fest. Fügen Sie exakte Testfälle für die gewählte Konstruktion hinzu. Ein gemeinsamer Hashname bedeutet keine Übereinstimmung dieser umgebenden Konventionen.
Warum einen Testfall mit einem Blatt aufnehmen?
Er isoliert die Blattkonvention von der Verarbeitung innerer Knoten und erleichtert das Erkennen eines versehentlichen zusätzlichen Hashschritts. Ergänzen Sie gerade und ungerade Mehrblatt-Testfälle, damit die Prüfung auch Verzweigungsregeln der Konstruktion abdeckt.
Sollten Textblätter direkt an Hashcode übergeben werden?
Definieren Sie Bytecodierung und etwaige Normalisierung vor dem Hashen. Nehmen Sie bei Text die Umwandlungsgrenze in die Anfrage auf. Sonst kann eine Umstrukturierung lesbaren Text erhalten und gleichzeitig die Bytes und damit den Wurzelwert verändern.
Beweist eine übereinstimmende Wurzel die Vertrauenswürdigkeit des Gesamtsystems?
Sie belegt Übereinstimmung für getestete Konstruktion und Eingaben, nicht jede Eigenschaft des umgebenden Systems. Prüfen Sie Speicherung, Vergleich und Verwendung von Wurzeln in Ihrer Anwendung und begrenzen Sie weitergehende Integritätsaussagen auf tatsächlich verfügbare Belege.
LeafVellin · Aktualisiert 2026-10-25