LLeafVellin
Робоче середовище з ШІ для коду

Побудова кореня Merkle з мітками

Побудуйте корінь Merkle SHA-256 із 1–64 байтових листків до 4096 байтів з окремими мітками листків і батьків.

● ● ●LeafVellin●
Сценарії · Побудова кореня Merkle з мітками ×
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()
✳Побудова кореня Merkle з мітками
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
ПроєктПеревірте непарний рівень дублюванням останнього вузла й відхиліть порожній ввід без трактування кореня як доказу власності.
Перевірте перед застосуваннямПорівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
МоделіНалаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
Сценарії

Побудова кореня Merkle з мітками

Сценарії ↗
Сценарії
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()
Робоче середовище з ШІ для коду

Зберігайте байтові домовленості під час зміни коду хешування

LeafVellin — робоче середовище програмування для Windows для обговорення змін коду з підключеною моделлю ШІ. Код хешування потребує особливо точного опису оброблюваних байтів: нешкідлива на вигляд зміна подання може дати зовсім інший результат. Почніть із вимоги сумісності й відомого прикладу входу та виходу до запиту рефакторингу.

Приклад дерева Меркла з тегами пропонує конкретне завдання проєкту. Можна попросити помічника дослідити порядок листків, різні префікси листків і внутрішніх вузлів та дублювання непарного останнього вузла. Надайте код, що постачає листки й споживає корінь, щоб ці домовленості залишалися видимими на всьому змінюваному шляху.

Перевірте запропоновані зміни на фіксованих прикладах для одного листка, парної й непарної кількості. Запустіть перевірки у проєкті й порівняйте точні значення коренів, а не лише форму результату. Якщо потрібен збіг з іншою реалізацією, використайте її задокументовані домовленості й незалежні приклади; самого збігу назви хеш-функції недостатньо для сумісних дерев.

Вибір моделі ШІ без фільтрів доступний через підтримувані кінцеві точки, сумісні з OpenAI, або Anthropic настільки, наскільки ці сервіси пропонують вибрану модель. Налаштуйте облікові дані за потреби й перевірте інструменти та межі контексту. Обмеження провайдера залишаються чинними, а остаточне рішення щодо зміни хешування спирається на вашу перевірку й докази.

Питання перед рефакторингом байтового дерева

Що мають узгоджувати дві реалізації крім хеш-функції?

Визначте байти й порядок листків, префікси, конкатенацію внутрішніх вузлів і обробку непарної кількості вузлів. Додайте точні приклади вибраної конструкції. Спільна назва хешу не означає узгодженості навколишніх домовленостей.

Навіщо додавати приклад одного листка?

Він ізолює домовленість листка від обробки внутрішніх вузлів і полегшує виявлення випадкового зайвого хешування. Поєднайте його з прикладами парної та непарної кількості листків, щоб перевірити й правила розгалуження конструкції.

Чи слід передавати текстові листки безпосередньо в код хешування?

Визначте кодування байтів і нормалізацію до хешування. Якщо залучений текст, додайте межу перетворення до запиту. Інакше рефакторинг може зберегти читабельний текст, але змінити байти й відповідно значення кореня.

Чи доводить збіг кореня надійність усієї системи?

Він установлює збіг для перевіреної конструкції та даних, а не всі властивості навколишньої системи. Перевірте зберігання, порівняння й використання коренів у програмі та обмежуйте ширші твердження про цілісність фактично доступними доказами.

Завантажити для Windows ↗

LeafVellin · Оновлено 2026-10-25