Распределенной системы, реализующее очень простую концепцию блокчейна
Цена договорная
•
наличный расчёт, безналичный расчёт, электронные деньги
Ваша задача - разработать приложение распределенной системы, реализующее очень простую концепцию блокчейна. Для реализации используйте любую технологию по вашему предпочтению (C / C ++, Java, .NET, Python, JavaScript и т. Д.), А для связи между партнерами используйте HTTP REST или RPC / RMI-подобные подходы. Создайте проект Git ds-2018 в репозитории KPI GitLab и сохраните там свое решение.
Структура блокчейна очень простым способом Основная идея блокчейна очень проста: это распределенная база данных, которая обрабатывает постоянно растущий список упорядоченных записей. Не думайте о блокчейне с точки зрения криптовалюты и / или бизнес-транзакций. Мы будем использовать блокчейн для хранения некоторых пользовательских данных в неизменяемом распределенном списке (цепочке) в одноранговой сети узлов.
Разработайте блочную структуру, подходящую для решения блокчейна. Данные в блоке хэшируются (используется хэш-функция SHA-256), и блок связывается друг с другом путем сохранения хеша предыдущего блока. Блок состоит из индекса, отметки времени, данных (любые пользовательские данные, которые будут сохранены в блоке), хеша предыдущего блока и хеша текущего блока (который вычисляется из всех других данных блока). Блоки должны быть сохранены либо в файл, либо в базу данных, чтобы узел мог восстановиться после перезапуска.
Одноранговая сеть для распространения блокчейна
Любой узел одноранговой сети может генерировать новый блок, который добавляется в цепочку блоков узла. Сгенерированный блок затем транслируется всем другим одноранговым узлам, и они несут ответственность за добавление блока в свои собственные цепочки блоков. Целостность дополнения блока к блокчейну должна быть проверена. Мы не будем использовать настоящее «майнинг» (мы не будем реализовывать протоколы Proof-of-Work или Proof-of-Stake ). Единственная проверка целостности - это длина цепочки блоков, достоверность связанного хеша с предыдущим блоком и достоверность вычисленного хеша сгенерированного блока. Это должно гарантировать, что все узлы в конечном итоге будут содержать один и тот же блокчейн. Хэши гарантируют неизменность цепи. (Если честно, такую цепочку можно изменить, но это очень сложно.)
Основная задача этого проекта - реализовать протокол связи одноранговой сети, чтобы синхронизировать поддержку блокчейна между всеми одноранговыми узлами. Следующие действия используются для синхронизации пиров:
(Как правило, это не реальная проблема, чтобы действовать без упорядочения, потому что все цепочки блоков все еще действительны. Единственное последствие - некоторые данные доступны только в некоторых узлах.)
Пользовательский интерфейс Разработка простого пользовательского интерфейса, который позволяет пользователю выполнять следующие действия с узлом:
Структура блокчейна очень простым способом Основная идея блокчейна очень проста: это распределенная база данных, которая обрабатывает постоянно растущий список упорядоченных записей. Не думайте о блокчейне с точки зрения криптовалюты и / или бизнес-транзакций. Мы будем использовать блокчейн для хранения некоторых пользовательских данных в неизменяемом распределенном списке (цепочке) в одноранговой сети узлов.
Разработайте блочную структуру, подходящую для решения блокчейна. Данные в блоке хэшируются (используется хэш-функция SHA-256), и блок связывается друг с другом путем сохранения хеша предыдущего блока. Блок состоит из индекса, отметки времени, данных (любые пользовательские данные, которые будут сохранены в блоке), хеша предыдущего блока и хеша текущего блока (который вычисляется из всех других данных блока). Блоки должны быть сохранены либо в файл, либо в базу данных, чтобы узел мог восстановиться после перезапуска.
Одноранговая сеть для распространения блокчейна
Любой узел одноранговой сети может генерировать новый блок, который добавляется в цепочку блоков узла. Сгенерированный блок затем транслируется всем другим одноранговым узлам, и они несут ответственность за добавление блока в свои собственные цепочки блоков. Целостность дополнения блока к блокчейну должна быть проверена. Мы не будем использовать настоящее «майнинг» (мы не будем реализовывать протоколы Proof-of-Work или Proof-of-Stake ). Единственная проверка целостности - это длина цепочки блоков, достоверность связанного хеша с предыдущим блоком и достоверность вычисленного хеша сгенерированного блока. Это должно гарантировать, что все узлы в конечном итоге будут содержать один и тот же блокчейн. Хэши гарантируют неизменность цепи. (Если честно, такую цепочку можно изменить, но это очень сложно.)
Основная задача этого проекта - реализовать протокол связи одноранговой сети, чтобы синхронизировать поддержку блокчейна между всеми одноранговыми узлами. Следующие действия используются для синхронизации пиров:
- Когда узел генерирует новый блок, он передает его другим узлам.
- Когда узел подключается к новому узлу, он запрашивает последний блок.
- Когда узел встречает блок, индекс которого больше текущего известного блока, он либо добавляет блок в свою текущую цепочку блоков, либо запрашивает полную цепочку блоков. (Это означает, что самый длинный блокчейн является победителем.)
(Как правило, это не реальная проблема, чтобы действовать без упорядочения, потому что все цепочки блоков все еще действительны. Единственное последствие - некоторые данные доступны только в некоторых узлах.)
Пользовательский интерфейс Разработка простого пользовательского интерфейса, который позволяет пользователю выполнять следующие действия с узлом:
- Список блокчейн узла.
- Создать новый блок с заданными данными.
- Перечислите все одноранговые узлы в одноранговой сети.
- Добавьте новый одноранговый узел в одноранговую сеть.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.