Construction de racine Merkle étiquetée
Construisez une racine Merkle SHA-256 de une à 64 feuilles de 4096 octets au plus avec des étiquettes distinctes pour feuilles et parents.
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()
| Projet | Testez un niveau impair en dupliquant son dernier nœud et rejetez le vide sans prendre la racine pour une preuve de propriété. |
|---|---|
| Vérifiez avant d’appliquer | Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications. |
| Modèles | Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément. |
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()
Préservez les conventions d’octets lors des modifications du hachage
LeafVellin est un espace de programmation sous Windows pour discuter des modifications du code source avec un modèle d’IA connecté. Le code de hachage exige une description particulièrement précise des octets traités : un changement de représentation apparemment anodin peut produire un résultat entièrement différent. Commencez par l’exigence d’interopérabilité et un jeu d’entrée-sortie connu avant de demander une refactorisation.
L’exemple d’arbre de Merkle avec préfixes distinctifs offre une tâche de projet ciblée. Vous pourriez demander à l’assistant d’examiner l’ordre des feuilles, les préfixes distincts des feuilles et des nœuds internes, et la duplication d’un dernier nœud lorsque leur nombre est impair. Fournissez le code qui alimente les feuilles et exploite la racine afin que ces conventions restent visibles sur tout le chemin modifié.
Évaluez les modifications proposées sur des jeux de test fixes avec une feuille, un nombre pair et un nombre impair de feuilles. Exécutez les vérifications du projet et comparez les valeurs exactes des racines, pas seulement la forme de sortie. Si une autre implémentation doit concorder, utilisez ses conventions documentées et des tests indépendants ; le seul accord sur le nom de la fonction de hachage n’établit pas la compatibilité des arbres.
Le choix de modèles d’IA sans filtre est disponible via les points de terminaison compatibles OpenAI ou Anthropic pris en charge dans la mesure où ces services proposent le modèle sélectionné. Configurez les identifiants si nécessaire et vérifiez les outils et limites de contexte. Les restrictions du fournisseur restent applicables et la décision finale concernant une modification du hachage repose sur votre examen et vos preuves.
Questions avant une refactorisation d’arbre d’octets
Sur quoi deux implémentations doivent-elles s’accorder en plus de la fonction de hachage ?
Précisez les octets des feuilles et leur ordre, les préfixes, la concaténation des nœuds internes et le traitement des nombres impairs de nœuds. Incluez des jeux de test exacts pour la construction choisie. Un nom de hachage commun n’implique pas un accord sur ces conventions.
Pourquoi inclure un jeu de test à une feuille ?
Il isole la convention de feuille du traitement des nœuds internes et facilite la détection d’une étape de hachage supplémentaire accidentelle. Associez-le à des tests de plusieurs feuilles en nombre pair et impair pour couvrir aussi les règles de branchement de la construction.
Faut-il transmettre directement des feuilles textuelles au code de hachage ?
Définissez l’encodage en octets et toute normalisation avant le hachage. Incluez la frontière de conversion dans la demande si du texte intervient. Sinon, une refactorisation peut préserver le texte lisible tout en modifiant les octets, donc la valeur de la racine.
Une racine concordante prouve-t-elle la fiabilité du système global ?
Elle établit un accord pour la construction et les entrées testées, pas toutes les propriétés du système environnant. Examinez le stockage, la comparaison et l’utilisation des racines dans votre application et limitez les affirmations plus larges d’intégrité aux preuves réellement disponibles.
LeafVellin · Mis à jour 2026-10-25