Введение в технологию Блокчейн. Тимур Сергеевич Машнин
данных в дереве Merkle мы можем проверить членство данных за относительно короткое время.
Таким образом, деревья Меркле имеют преимущества в том, что даже если дерево содержит много элементов, нам просто нужно запомнить хеш корня дерева, который составляет всего 256 бит.
И мы можем проверить принадлежность к дереву за логарифмическое время.
Также есть вариант Merkle дерева – это сортированное дерево Merkle.
В этом дереве мы берем блоки данных внизу и сортируем их в некотором порядке.
Алфавитном, лексикографическом, числовом порядок или каком-либо другом порядке.
И как только мы отсортировали дерево Merkle, мы можем доказать, что конкретный блок не находится в дереве Merkle.
Мы можем сделать это, просто указав путь к элементу, который находится непосредственно перед местом, где этот элемент должен быть, и сразу после того, где он будет.
И тогда мы можем доказать, что оба эти элемента находятся в дереве Merkle последовательно.
И поэтому между ними нет места для элемента, который мы ищем.
Цифровые подписи
Далее мы поговорим о цифровых подписях.
Это второй криптографический примитив наряду с хеш-функциями, которые нам нужны в качестве строительных блоков для обсуждения криптовалюты.
Итак, цифровая подпись – это как подпись на бумаге только в цифровой форме.
И что это значит, что мы хотим от подписи? Это две вещи.
Во-первых, точно так же, как и для бумажной подписи, для цифровой подписи, только вы можете сделать свою подпись, но любой, кто видит вашу подпись может подтвердить, что она действительна.
И тогда вторая вещь, которую вы хотите, заключается в том, что подпись привязана к определенному документу.
Чтобы кто-то не мог взять вашу подпись с одного документа и приклеить ее на другой документ, потому что подпись – это не просто подпись.
Это означает ваше согласие или одобрение конкретного документа.
Теперь, как мы можем построить это в цифровой форме с использованием криптографии?
Вот API интерфейс для цифровых подписей.
Здесь есть три операции, которые мы должны делать.
Первое, нам нужно иметь возможность генерировать ключи, и поэтому у нас есть операции generateKeys, которая принимает размер ключа и создает два ключа, sk и pk.
Ключ sk будет секретным ключом подписи, это информация, которую вы держите в секрете и которую вы используете для создания своей подписи.
И ключ pk является общедоступным ключом проверки, который вы даете всем и который любой может использовать для проверки вашей подписи, когда они ее видят.
Вторая операция, это операция подписи.
Операция подписи берет секретный ключ подписи и сообщение, на котором вы хотите поставить свою подпись.
И она возвращает значение, которое является подписью и которое представляет собой лишь несколько бит, представляя вашу подпись.
И затем, третья операция – это проверка, которая берет то, что утверждается как правильная подпись, и подтверждает,