Blockchain

Blockchain

29 мая 2018 г.
В предыдущем упражнении мы изучили простой криптографический хэш. Сегодня мы будем использовать этот хеш для записи одинаково простого блокчейна, который является алгоритмом под биткоином и другими криптовалютами.

Блок-цепь — это общедоступная база данных, в которой элементы данных хранятся в блоках в неизменяемой, проверяемой цепочке. База данных допускает две операции: примыкать, добавлять новый элемент данных в базу данных и проверять, чтобы убедиться в том, что база данных добавлена и наоборот. Нет операции удаления; после добавления данных в базу данных ее никогда нельзя удалить. Нет операции обновления; после добавления данных в базу данных она никогда не может быть изменена. И никакой операции сортировки нет; как только данные добавляются в базу данных, они никогда не могутт быть перемещены внутри цепочки.

В нашей реализации каждый блок в цепочке содержит четыре поля: индексный номер, который начинается с нуля и увеличивается каждый раз при добавлении новой привязки; которое может быть любым (для простоты мы ограничиваем данные строками); предыдущий хэш-номер и текущий хэш-номер, о котором мы поговорим ниже.

Операция adjoin принимает блок-цепочку и базу данных и возвращает новую блок-цепочку, которая является связанным списком блоков; первый блок в блочной цепочке имеет индекс 0, датум «Блок генезиса» и предыдущее число хешей 0. Текущее число хэшей — это хеш Пирсона числа конкатенированных блоков, данных и предыдущего хеш-номера. Чтобы соединить новый блок, вычислите текущее число хэшей, выделите блок, прикрепите его к голове блок-цепи и верните новую блок-цепочку.

Операция validate пересчитывает текущий номер хэша в каждом блоке в цепочке. Если какой-либо из них неверен, он останавливается и сообщает, что блок-цепочка повреждена. В противном случае, если он достигнет блока генезиса, не обнаружив ошибку, он сообщает, что блок-цепь действительна.

Ваша задача — написать программу, которая реализует простой блок-цепочку, описанную выше. Когда вы закончите, вы можете прочитать или запустить предлагаемое решение или опубликовать свое собственное решение или обсудить упражнение в комментариях ниже.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s