Способ выполнения задачи в компьютерной системе

Данное изобретение относится к области организации выполнения задачи компьютерами сети. Технический результат заключается в обеспечении надежности выполнения задачи в распределенной компьютерной сети при уменьшении объема хранимых данных о задаче в этой сети. Такой результат достигается за счет того, что по меньшей мере часть множества компьютеров компьютерной системы формируют распределенную базу данных; первый компьютер создает задачу, назначает стоимость ее выполнения, сохраняет данные задачи в распределенной базе данных с помощью третьего компьютера, депонирует стоимость выполнения задачи в компьютерной системе с помощью третьего компьютера и отправляет данные об этой задаче второму компьютеру; второй компьютер сообщает о готовности взять задачу для выполнения первому компьютеру; первый компьютер отправляет второму компьютеру подписанный своей цифровой подписью первый пакет данных, содержащий данные задачи; второй компьютер выполняет задачу и предоставляет первому компьютеру подписанный своей цифровой подписью второй пакет данных, содержащий в себе доказательство выполнения задачи и подписанный первым компьютером первый пакет данных; первый компьютер верифицирует доказательство и отправляет второму компьютеру подписанный своей цифровой подписью третий пакет данных, содержащий информацию об оплате и доказательство выполнения задачи; второй компьютер сохраняет третий пакет данных в распределенной базе данных компьютерной системы с помощью третьего компьютера, запрашивает депонированную оплату выполненной задачи у компьютерной системы. 13 з.п. ф-лы, 2 табл., 9 ил.

 

Область техники, к которой относится изобретение

Изобретение относится к области обработки данных компьютерными системами, в частности к способам организации выполнения задачи компьютерами сети.

Уровень техники

Известно решение (US 20090328036 A1, опубл. 31.12.2009), в котором пользователь может настраивать и приобретать виртуальные вычислительные ресурсы так же, как при покупке и настройке физических компьютеров. Один вариант осуществления позволяет пользователю выбирать различные параметры производительности, которые широко известны и используются средним пользователем персонального компьютера. Например, базовая компьютерная система может быть выбрана, а затем настроена путем выбора параметров производительности, таких как бренд процессора, тактовая частота процессора, емкость оперативной памяти (ОЗУ), емкость жесткого диска и т.д. Затем параметры производительности могут быть использованы для настройки ресурсов виртуальных вычислительных машин для обеспечения виртуального компьютера, который по существу соответствует параметрам производительности. Однако в данном решении не описаны механизмы обеспечения надежности выполнения задач виртуальными машинами.

Известно решение (US 8850442 B2, опубл. 30.09.2014), в котором получают запрос на предоставление виртуальной машины на основе информации о конфигурации. Потенциальные ресурсы для размещения виртуальной машины могут быть идентифицированы и оценены. Оцененные потенциальные ресурсы могут быть ранжированы, и оптимальный ресурс для размещения запрашиваемой виртуальной машины может быть выбран на основе рейтинга. Запрошенная виртуальная машина может быть предоставлена на выбранном оптимальном ресурсе. Однако в данном решении не описаны механизмы обеспечения надежности выполнения задач виртуальными машинами.

Известно выбранное в качестве прототипа решение (RU 2647697, опубл. 16.03.2018), в котором раскрывается способ распределения ресурсов между агентами в гетерогенной эпизодической вычислительной сети, причем способ содержит этапы, на которых обеспечивают посредством средств межмашинного информационного обмена взаимодействие между вычислительными установками, создают на каждой упомянутой вычислительной установке защищенное хранилище данных; обеспечивают гарантированное хранение входящих сообщений в защищенном хранилище данных; обеспечивают гарантированную обработку тела сообщения; к гетерогенной эпизодической вычислительной сети подключают агентов, представляющих собой вычислительные установки, обеспечивают взаимодействие между вычислительными установками; после того как создают децентрализованную базу данных, хранящую информацию о текущем состоянии ресурсов, агенты формируют и выставляют заявки, в которых указывают, какой ресурс агенты готовы предложить и по какой стоимости. Хранят в децентрализованной базе данных таблицу маршрутизации сообщений.

Однако в данном решении не описаны механизмы обеспечения надежности выполнения задач вычислительными установками.

Раскрытие изобретения

В одном аспекте изобретения раскрыт способ выполнения задачи в компьютерной системе, содержащий этапы на которых:

по меньшей мере часть множества компьютеров компьютерной системы формируют распределенную базу данных, хранящую информацию в виде связанных блоков данных;

первый компьютер компьютерной системы создает задачу, назначает стоимость ее выполнения, сохраняет данные задачи в распределенной базе данных компьютерной системы с помощью третьего компьютера компьютерной системы, депонирует стоимость выполнения задачи в компьютерной системе с помощью третьего компьютера компьютерной системы и отправляет данные об этой задаче второму компьютеру;

второй компьютер компьютерной системы сообщает о готовности взять задачу для выполнения первому компьютеру компьютерной системы;

первый компьютер отправляет второму компьютеру подписанный своей цифровой подписью первый пакет данных, содержащий данные задачи;

второй компьютер выполняет задачу и предоставляет первому компьютеру подписанный своей цифровой подписью второй пакет данных, содержащий в себе доказательство выполнения задачи и подписанный первым компьютером первый пакет данных;

первый компьютер верифицирует доказательство и отправляет второму компьютеру подписанный своей цифровой подписью третий пакет данных, содержащий информацию об оплате и доказательство выполнения задачи;

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

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

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

первый компьютер поручает второму компьютеру выполнить задачу, при этом все данные, которыми обмениваются первый и второй компьютеры от начала выполнения задачи до ее завершения, сохраняются в первой последовательности блоков блокчейн;

причем первый компьютер сохраняет первый блок первой последовательности блоков блокчейн, а второй компьютер сохраняет второй блок первой последовательности блоков блокчейн во второй последовательности блоков блокчейн, хранящейся в третьем компьютере.

В другом аспекте изобретения раскрыта компьютерная система для выполнения задачи, содержащая:

- множество компьютеров компьютерной сети, выполненных с возможностью хранения данных сети в последовательности блоков блокчейн сети;

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

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

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

по меньшей мере часть множества компьютеров компьютерной системы формируют распределенную базу данных, хранящую информацию в виде связанных блоков данных;

первый компьютер компьютерной системы создает задачу, назначает стоимость ее выполнения, депонирует стоимость на третьем компьютере компьютерной системы, сохраняет данные о задаче у себя и отправляет данные об этой задаче исполнителю;

второй компьютер компьютерной системы откликается для выполнения задачи;

первый компьютер создает первый пакет данных, содержащий задачу и цифровую подпись первого компьютера, и отправляет пакет данных второму компьютеру;

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

первый компьютер верифицирует доказательство и отправляет второму компьютеру третий пакет данных, содержащий доказательство информации об оплате и цифровую подпись первого компьютера;

второй компьютер, связывается с третьим компьютером, который предоставляет доступ к распределенной базе данных, проверяет совпадение информации об оплате со стоимостью выполнения задачи и начинает выполнять задачу;

когда второй компьютер выполнил задачу, он запрашивает оплату у третьего компьютера и записывает данные о выполненной задаче в распределенной базе данных с помощью третьего компьютера.

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

Сущность изобретения заключается в том, что в компьютерной сети создается распределенная база данных, хранящая информацию в виде связанных блоков данных, в которой каждый блок данных содержит информацию о предыдущем. База данных хранит в том числе информацию о задаче, которую один из множества компьютеров сети опубликовал для выполнения, и информацию о выполнении этой задачи другим компьютером. Причем в распределенной базе данных компьютерной сети хранится лишь тот объем информации, который необходим и достаточен для проверки выполнения задачи, вся остальная информация сохраняется в компьютере, опубликовавшем задачу, и компьютере сообщившем, что выполнил задачу. То есть, хотя компьютер, опубликовавший задачу, и компьютер, выполняющий задачу, обмениваются большим объемом информации и множеством пакетов данных, но в распределенной базе данных компьютерной сети хранится не вся, а только необходимая и достаточная информация для обеспечения возможности проверки выполнения задачи. Это обеспечивается тем, что упомянутые два компьютера сами записывают информацию, которой обмениваются, в связанные блоки.

Технический результат, достигаемый решением, заключается в обеспечении надежности выполнения задачи в распределенной компьютерной сети при уменьшении объема хранимых данных о задаче в этой сети.

Краткое описание чертежей

Фиг. 1 показывает компьютерную систему.

Фиг. 2 показывает блок-схему для пояснения принципа осуществления способа.

Фиг. 3а, 3б, 3в показывают процесс обмена при решении задачи хранения данных.

Фиг. 4а, 4б, 4в показывают процесс обмена при решении задачи хранения данных.

Фиг. 5а показывает процесс обмена при решении задачи хранения данных.

Осуществление изобретения

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

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

Распределенная база данных - база данных, составные части которой размещаются в различных узлах компьютерной сети в соответствии с каким-либо критерием.

Распределенные базы могут иметь разный уровень реплицированности - от полного отсутствия дублирования информации, до полного дублирования всей информации во всех распределенных копиях (например, блокчейн).

Распределение (включая фрагментацию и репликацию) базы данных по множеству узлов не видимо для пользователей. Это свойство называется прозрачностью, а технология распределения и реплицирования данных по множеству компьютеров, связанных сетью, является основополагающей для реализации концепции независимости данных от среды хранения.

Отдельно необходимо пояснить о технологии блокчейн. Блокчейн - выстроенная по определенным правилам непрерывная последовательная цепочка блоков (связный список), содержащих информацию. Чаще всего копии цепочек блоков хранятся на множестве разных компьютеров независимо друг от друга.

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

Стороны подписывают смарт-контракт, используя методы, аналогичные подписанию отправки средств в действующих криптовалютных сетях. После подписания сторонами смарт-контракт вступает в силу. Для обеспечения автоматизированного исполнения обязательств смарт-контракта непременно требуется среда существования, которая позволяет полностью автоматизировать выполнение пунктов контракта. Это означает, что смарт-контракты смогут существовать только внутри среды, имеющей беспрепятственный доступ исполняемого кода к объектам смарт-контракта. Все условия смарт-контракта должны иметь математическое описание и ясную логику исполнения. В связи с этим первые смарт-контракты имеют задачу формализации наиболее простых взаимоотношений, состоящих из небольшого количества условий. Имея беспрепятственный доступ к объектам смарт-контракта, смарт-контракт отслеживает по указанным условиям достижения или нарушения пунктов смарт-контракта и принимает самостоятельные решения, основываясь на запрограммированных условиях. Таким образом, основной принцип смарт-контракта состоит в полной автоматизации и достоверности исполнения договорных отношений.

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

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

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

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

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

Эти проблемы во многом решаются посредством использования смарт-контрактов, в которых программно прописываются все условия договора.

Абсолютно то же самое касается и аренды вычислительных мощностей компьютеров сети. Должна быть гарантия, что компьютер заявивший, что предоставит конкретный объем вычислительных мощностей, будет предоставлять его все оплаченное время.

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

Разработчиками было предложено решение, способное сохранить все преимущества использования смарт-контрактов и устранить указанные выше основные недостатки.

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

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

Таким образом, в компьютерной сети хранится распределенная база данных, которая хранит информацию обо всех заключенных сделках в виде связанных блоков данных (блокчейн). Эта распределенная база данных формируется множеством компьютеров сети по обычным принципам блокчейн технологии, известным из уровня техники. Эта сеть образует компьютерную систему с распределенными ресурсами хранения и вычисления.

Краткое описание работы предложенного способа

У одного из компьютеров системы (назовем его «первый компьютер», хотя порядковые номера не имеют никакого значения, а служат лишь для идентификации компьютеров в рамках объяснения разработанного способа) возникает необходимость в дополнительном месте для хранения файла или дополнительных вычислительных мощностях, он создает задачу по хранению данных или предоставлению вычислительных мощностей и отправляет эту задачу в систему. Задача должна быть описана исчерпывающим образом, чтобы другой компьютер системы, исходя из своих ресурсов, мог однозначно решить может ли он за нее взяться и выполнить.

Когда другой компьютер системы (назовем его «второй компьютер») решает, что он может выполнить эту задачу, он отправляет соответствующее сообщение первому компьютеру.

Первый компьютер создает первый пакет данных, содержащий задачу и цифровую подпись первого компьютера, и отправляет пакет данных второму компьютеру. Также первый компьютер депонирует стоимость задачи в компьютерной системе, например, на третьем компьютере компьютерной системы.

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

Подтверждением служит, в частности, его собственная электронная цифровая подпись.

Первый компьютер верифицирует доказательство и отправляет второму компьютеру третий пакет данных, содержащий доказательство информации об оплате (подписанную цифровой подписью соответствующую информацию) и цифровую подпись первого компьютера. Для каждого типа задачи разрабатывается свой способ доказательства. Например, для хранения данных доказательством будет являться как сам файл, так и sha56(sha256(файл) + случайная строка), любое устройство в сети, которое хранит тот же файл, может проверить подтверждение.

Когда нода (компьютер) сохраняет файл, она шифрует его своим публичным ключом.

// Node

// encrypt - шифрование по ключу или паролю, где publicKey - это и есть публичный ключ

newfile = encrypt(file, publicKey)

proofMiner = sha256(file)

Поскольку автор задачи на хранение тоже имеет этот файл (В моменте загрузки), он знает publicKey исполнителя, которому он отправил задачу. Автор задачи делает ту же самую функцию

proofTrue = sha256(encrypt(file, Публичный ключ исполнителя))

Далее исполнительная нода отправляет автору proofMiner, а автор уже сравнивает.

if proofTrue = = proofMiner:

sendSignWithPay

else:

wrongProof

Далее мы можем дать в сеть доказательство, либо о нарушении, либо об оплате.

У первого компьютера с компьютерной системой заключен контракт, на котором лежат токены denet, служащие для оплаты услуг внутри компьютерной сети и являющиеся эквивалентом реальных денег. Из контракта нельзя снимать средства, но можно предоставить другим цифровые подписи об оплате, и если кто-то захочет вывести средства, то автоматически появляется задержка в N блоков (количество блоков выбирается заранее) в контракте. За это время любой участник может открыть спор касательно сделки.

Второй компьютер связывается с компьютерной системой, в частности, с третьим компьютером, проверяет совпадение информации об оплате со стоимостью выполнения задачи и начинает выполнять задачу.

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

В дополнительных аспектах компьютерная система проверяет данные о выполненной задаче второго компьютера на валидность и выдает часть стоимости или полную стоимость выполнения задачи второму компьютеру согласно условиям заключенной сделки.

В некоторых аспектах компьютерная система может представлять собой известную из уровня техники блокчейн компьютерную систему.

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

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

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

Как вариант, второй компьютер может отправлять в компьютерную систему корень дерева меркла задачи хранения.

Далее компьютерная система в зависимости от результатов проверки либо забирает залог первого компьютера, если проверка показала, что задача выполнена, либо штрафует второй компьютер, если проверка показала, что задача не выполнена.

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

Если один из компьютеров не выполнил задачу, которую взял на себя, то его штрафуют, в частности, понижают его рейтинг. Другим вариантом штрафа является уменьшение стоимости выполнения задачи.

В одном из вариантов осуществления первый компьютер делегирует обязательства проверки на любой другой компьютер в сети. Что используется в варианте, когда подключается кластер из компьютеров и в одном кластере есть мастер нода, которая распределяет задачи по локальной сети.

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

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

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

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

ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

Вариант 1. Хранение данных

Первый компьютер создал задачу, берем от нее sha3(task) = = taskHash, далее когда компьютеры системы создают операции с этой задачей, во всех сообщениях они подписывают taskHash и сохраняют к себе sha3(task). В момент сохранения файла, формируется локальный блокчейн между первым компьютером и вторым компьютером - sha3(taskHash + query + digSig) = = lastQuery, предположим, что кто-то из участников договора захочет не заплатить или просто прекратит работу, тогда у обоих будет цепочка операций, подтвержденная цифровыми подписями, единственный момент потери сводится к самому последнему блоку и наименьшей операции.

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

Общий принцип такой, что компьютеры системы могут договариваться между друг другом напрямую, а в блокчейн транслировать уже самый последний этап работы.

Конкретный частный пример реализации хранения данных

Алиса - девушка, у которой есть архив фотографий себя и своих друзей с секретного мероприятия, Алиса хочет сохранить архив в компьютерной системе, в которой находится ее компьютер (первый компьютер). Алиса готова заплатить 100 условных денежных единиц - DNET. Боб - владелец компьютера (второго компьютера), на котором есть свободные 30 гб для сдачи их в аренду, Боб хочет сдавать в аренду свои 30 гб. Эта ситуация проиллюстрирована на фиг. 3а.

Алиса - создает смарт-контракт (Task SC) для выполнения задачи и кладет в него сумму за выполнение задачи. В данном случае Алиса создает задачу на хранение, она уже знает, что Боб будет выполнять эту задачу, Алиса подписывает задачу цифровой подписью (digSig Alice), для Боба и отправляет информацию о задаче Бобу. Что проиллюстрировано на фиг. 3б.

Боб запрашивает файлы (самой задачи на хранение), если он соглашается выполнять задачу, скачивая их, он проверяет эти файлы и предоставляет доказательство (proof) и свою цифровую подпись (digSig) на начало выполнения. Что проиллюстрировано на фиг. 3в. Создателем смарт-контракта может быть сформирован идентификатор задачи TaskID, который далее используется при обмене данными для идентификации задачи.

Алиса проверяет доказательство и отправляет Бобу, оффчейн транзакцию в которой содержится информация о том, что она согласна с Бобом (proof Bob) и информация о том, что она платит первый взнос за хранение данных (pay). Причем эта транзакция также подписана ее цифровой подписью (digSig Alice). Что проиллюстрировано на фиг.4а. Причем конечную транзакцию отправляют в блокчейн компьютерной системы, только после того, как задача выполнена или кто-то хочет вывести средства.

Боб в свою очередь сверяет эту информацию с информацией указанной в задаче (то есть то, сколько Алиса должна заплатить за период хранения N).

С этого момента у Боба начинает формироваться рейтинг.

Когда Боб находит sha3(filekey + hashBlock) < difficult(Alice TaskSC), Боб запрашивает вывод денежных средств за выполнение задачи на свой баланс в смарт-контракте. Что проиллюстрировано на фиг.4б. Как только нода получает файл, она сохраняет его, шифрует своим публичным ключем, затем берет от него хеш, таким образом получая filekey (filekey = sha256(encrypt(newFile, publicKey))). Сложность difficult- это величина, которая показывает насколько сложно найти хэш, который будет следующей предложенной целью сети. Сложность в данном решении определяется также как в сети Bitcoin.

Смарт-контракт проверяет данные на валидность и дает возможность вывести нужную сумму через 50 блоков блокчейн сети. Что проиллюстрировано на фиг. 4в, 5а.

Этого времени хватит, чтобы Алиса или другой участник сети, выполняющий ту же задачу, смог опубликовать опровержение. По истечению 50 блоков, Боб забирает свои заработанные средства.

Если Алиса (или другой участник сети, выполнявший ту же задачу) находит ошибку в вычислениях Боба. Алиса, отправляет залог в 250 DNET токенов и ждет 50 блоков, пока Боб докажет, что он прав (или не докажет).

Боб доказывает владение файлом, путем отправления 1-4 мб куска файла и корнем дерева меркла от этой задачи, смарт-контракт производит операцию шифрования файла и проверки доказательства от Боба, если доказательство верное, Алиса лишается всех балансов частично в пользу сети, частично в пользу Боба.

Если Боб не может доказать обратного, или доказательство Боба было неверным, то Боб будет наказан санкциями прописанными в смарт-контракте. Полная мета-информация о самой задаче попадает в блокчейн только в момент, когда возникает спор.

Вариант 2. Децентрализованный хостинг

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

Децентрализованный хостинг совмещает в себе 2 направления: децентрализованную систему, в которой устройства делятся вычислительными ресурсами или ресурсами памяти (DeNet.Core) и систему, которая работает поверх DeNet.Core и формирует задачи для DeNet.Core (DeNet.Hosting).

Далее устройством называется вычислительное устройство, которое подключается к сети DeNet.Core и делится своими мощностями, выполняя задачи.

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

Новое устройство имеет нулевой рейтинг и может выполнять только бесплатные задачи. Получить рейтинг можно, успешно завершая полученные задачи. Чем выше рейтинг у устройства, тем больше вероятность того, что оно сможет принять задачу с оплатой. Владелец устройства указывает, за сколько DeNet-токенов (условных или реальных денежных единиц) он готов сдавать 100% от указанных ресурсов. Можно указать любую сумму.

Как было указано выше, рейтинг начисляется после успешного выполнения задачи. Рассчитывается рейтинг по формуле

ΔR=uptime⋅(VRAM⋅GRAM+VCPU⋅GCPU+…+VNet⋅GNet)

ΔR - рейтинг, который начисляется за выполнение задачи

uptime - время, потраченное на выполнение задачи

Vparam - объем параметра рогат t предоставляемого в аренду

Gparam - функция поиска средней стоимости параметра рогат за последние N платных задач:

N - наименьшее число, удовлетворяющее условиям:

где Nconst и Tconst - фиксированные величины;

ti - время, затраченное на выполнение устройством задачи i;

ci - цена за единицу параметра param уст-ва при выполнении рассматриваемой задачи i.

Такое определение рейтинга обеспечивает достоверное определение надежных устройств для аренды у них ресурсов и соответственно обеспечивает надежность выполнения предложенной задачи.

Список параметров необходимых для корректного распределения задач и формирования рейтинга приведен в таблице ниже:

Устройство может заморозить некоторое количество денежных средств, которыми гарантирует свою надежность. При неудачном выполнении задачи (например, при отключении Интернета или питания) в пользу арендатора списывается часть замороженных денежных средств. Такая гарантия повышает шанс получить задачи, когда есть другие устройства, претендующие на эти задачи

Задача - это набор файлов и системных требований. Например:

work/main.py,

manifest.json

work/main.py - основное приложение

manifest.json - требования к приложению

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

Заказчик формирует задачу, задавая необходимые параметры вычислительной системы и цену за работу. Эта информация отправляется на устройство сети, которое подбирает арендодателя, подходящего по всем заданным параметрам и готового выполнить работу за указанную цену.

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

Если устройство удовлетворяло условиям выделенных ресурсов на протяжении всей работы и с его стороны не было попыток чтения или подмены данных, то считается, что задача выполнена без ошибок. При этом, если выполнение задачи прерывается из-за внутренних ошибок, то для DeNet.Core это не считается ошибкой.

Предположим, что арендодателю удалось обмануть систему: устройство, которое сдается в аренду, не является тем устройством, за которое оно себя выдает, например, вместо заявленных 500 IOPS в действительности у устройства только 250. Когда арендодатель запускает устройство с заведомо недостоверными параметрами, то устройство:

1. подключается к сети;

2. получает проверяющую задачу;

3. получает штраф (списание рейтинга и замороженных средств).

В случае возникновения ошибки по вине арендодателя, с его рейтинга, который он мог заработать, списывается 9*ΔR, и списывается вся замороженная сумма в пользу фонда компьютерной сети (DeNet.Rewards). Средства из фонда DeNet.Rewards позже распределяются между добросовестными арендодателями.

Проверка выполнения задачи - это не проверка конечного ответа. На этом этапе нужно проверить, что устройство нас не обманывает и выполняет тот код, который был отправлен. Для этого мы разделили задачи на два типа: статические и динамические.

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

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

Состояние приложения - это примерно все содержимое его памяти, это все ее глобальные переменные, статические переменные, объекты, выделенные в стеке, регистры, открытые дескрипторы файлов и смещения файлов, открытые сетевые сокеты и связанные с ними буферы ядра и т.д. Фактически возможно сохранить это состояние и возобновить выполнение этого процесса в другом месте.

Есть стабильное состояние, то есть которое никогда не меняется, например, web-сервер, который запускает скрипт «generate_random_number.php», который в свою очередь выводит случайное число.

Есть нарабатываемые состояния, то есть web-сервер с тем же «generate_random_number.php», который после генерации числа создает файл с этим числом.

Если говорить о статической задаче, то есть (хостинг файлов, сложение двух заранее известных чисел и т.д.), то тут все просто: проверка выполнения происходит за счет репликации.

Итак, мы имеем несколько способов проверки динамической задачи:

• Собственная библиотека;

• Проверка Checksum;

• Проверка устройств тестами;

• Закрытие возможности доступа к трафику через подключение к сети через SSH-туннель;

• Тест-кейсы;

• Хэш от состояния (если это задача со стабильным состоянием).

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

После выполнения задачи информация о выполнении (успешном или неуспешном) попадает в блокчейн транзакций и в блокчейн рейтинга.

Существует следующая классификация задач.

DeNet.Hosting - это хостинг, запущенный в сети DeNet.Core. Хостинг нужен для удобства развертывания веб-приложений. По заданным требованиям хостинг формирует и отправляет задачи в DeNet.Core.

Существует несколько способов загрузить свой сайт в DeNet.

Способ первый

1. Сформировать файл с требованиями (manifest.json), в котором будут учтены все параметры хостинга, ram, ping, cpu, location и т.д.

2. Создать архив с файлами сайта и файлом manifest.json.

3. Создать кошелек с токеном DeNet.

4. Создать задание, добавить его в список неподтвержденных транзакций.

5. Ждать, пока задачу примут.

6. Пополнять баланс кошелька и вовремя продлевать задачи.

Способ второй

1. Выбрать архитектуру своего сайта (PHP + MySQL, CDN only, Django + …).

2. Выбрать тип своего сайта (WordPress, Joomla, самописный…).

3. Выбрать тип шифрования сайта.

4. Загрузить все необходимые файлы (дампы, ssl-сертификат, архив с сайтом).

5. Пополнить баланс токенами.

6. DeNet.Hosting займется работой с вашим сайтом(балансировкой нагрузки, проверкой работы, продлением аренды и т.д.).

Способ третий (экспертный)

Конфигурация в случае с загрузкой на один сервер

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

После того, как вы создадите все необходимые конфигурации и загрузите требования к задаче, вы начнете получать запросы от серверов (майнеров). Как только вы выберете подходящего, ваши токены и токены майнера заморозятся на время выполнения задачи.

Вариант 3. Вычислительные задачи.

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

Вычислительные задачи совмещают в себе 2 направления:

1. Статичное выполнение задач

2. Динамичное выполнение задач

В первом случае одна задача выполняется на одном устройстве, во втором случае одна задачи выполняется на более, чем одном устройстве или более одной задачи выполняется на более, чем одном устройстве.

Задачи, требования к выполнению и рейтинг используются аналогично "Вариант 2. Децентрализованный хостинг"

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

Элементы, упомянутые в единственном числе, не исключают множественности элементов, если отдельно не указано иное.

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

Способы, раскрытые здесь, содержат один или несколько этапов или действий для достижения описанного способа. Этапы и/или действия способа могут заменять друг друга, не выходя за пределы объема формулы изобретения. Другими словами, если не определен конкретный порядок этапов или действий, порядок и/или использование конкретных этапов и/или действий может изменяться, не выходя за пределы объема формулы изобретения.

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

Хотя отдельно не упомянуто, но очевидно, что, когда речь идет о хранении данных, программ и т.п., подразумевается наличие машиночитаемого носителя данных, примеры машиночитаемых носителей данных включают в себя постоянное запоминающее устройство, оперативное запоминающее устройство, регистр, кэш-память, полупроводниковые запоминающие устройства, магнитные носители, такие как внутренние жесткие диски и съемные диски, магнитооптические носители и оптические носители, такие как диски CD-ROM и цифровые универсальные диски (DVD), а также любые другие известные в уровне техники носители данных.

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

Признаки, упомянутые в различных зависимых пунктах формулы, а также реализации раскрытые в различных частях описания могут быть скомбинированы с достижением полезных эффектов, даже если возможность такого комбинирования не раскрыта явно.

1. Способ выполнения задачи в компьютерной системе, содержащий этапы, на которых:

по меньшей мере часть множества компьютеров компьютерной системы формируют распределенную базу данных, хранящую информацию в виде связанных блоков данных;

первый компьютер компьютерной системы создает задачу, назначает стоимость ее выполнения, сохраняет данные задачи в распределенной базе данных компьютерной системы с помощью третьего компьютера компьютерной системы, депонирует стоимость выполнения задачи в компьютерной системе с помощью третьего компьютера компьютерной системы и отправляет данные об этой задаче второму компьютеру;

второй компьютер компьютерной системы сообщает о готовности взять задачу для выполнения первому компьютеру компьютерной системы;

первый компьютер отправляет второму компьютеру подписанный своей цифровой подписью первый пакет данных, содержащий данные задачи;

второй компьютер выполняет задачу и предоставляет первому компьютеру подписанный своей цифровой подписью второй пакет данных, содержащий в себе доказательство выполнения задачи и подписанный первым компьютером первый пакет данных;

первый компьютер верифицирует доказательство и отправляет второму компьютеру подписанный своей цифровой подписью третий пакет данных, содержащий информацию об оплате и доказательство выполнения задачи;

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

2. Способ по п. 1, в котором компьютерная система проверяет третий пакет данных на валидность и выдает часть стоимости или полную стоимость выполнения задачи второму компьютеру.

3. Способ по п. 2, в котором в котором компьютерная система представляет собой блокчейн компьютерную систему.

4. Способ по п. 3, в котором компьютерная система выдает часть стоимости или полную стоимость выполнения задачи второму компьютеру через заранее заданное количество блоков блокчейн.

5. Способ по п. 4, в котором, если первый компьютер находит ошибку в выполнении задачи вторым компьютером, он отправляет опровержение выполнения задачи в компьютерную систему.

6. Способ по п. 5, в котором вместе с опровержением первый компьютер отправляет предварительно заданный залог.

7. Способ по п. 6, в котором второй компьютер отправляет по меньшей мере часть информации, необходимой для выполнения задачи, в компьютерную систему, компьютерная система проверяет третий пакет данных, чтобы определить выполнение задачи.

8. Способ по п. 7, в котором компьютерная система в зависимости от результатов проверки либо забирает залог первого компьютера, либо штрафует второй компьютер.

9. Способ по п. 2, в котором компьютерная система формирует рейтинг для компьютеров системы.

10. Способ по п. 8, в котором штрафом для второго компьютера является понижение его рейтинга.

11. Способ по п. 2, в котором, первый компьютер делегирует обязательства проверки на любой другой компьютер в сети.

12. Способ по п. 11, в котором первый компьютер создает запись в распределенной базе данных, согласно которой он дает разрешение пользоваться частью его средств для оплаты задач.

13. Способ по п. 1, в котором первый компьютер отправляет данные о задаче четвертому компьютеру компьютерной системы, который становится делегатом проверки.

14. Способ по п. 1, в котором второй компьютер перед выполнением задачи посредством третьего компьютера проверяет достаточность депонированной стоимости выполнения задачи для оплаты стоимости выполнения задачи.



 

Похожие патенты:

Группа изобретений относится к области передачи данных. Сеть (16) простирается через первое рельсовое транспортное средство (2) и механически сцепленное с первым рельсовым транспортным средством (2) второе рельсовое транспортное средство (4).

Изобретение относится к цифровой технике в сфере обмена информацией с использованием последовательных асинхронных интерфейсов. Технический результат - повышение стабильности длительности входных сигналов в асинхронных устройствах.

Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении раннего обнаружения вредоносных программных агентов и выведения их из строя.

Изобретение относится к системам управления. Система для динамической балансировки нагрузки элемента перераспределения в пределах группы вычислительных ресурсов, обеспечивающих промышленный процесс, организованный в действующей конфигурации M:N, осуществляет доступ из хранилища данных к рабочим данным компонентов действующей конфигурации M:N.

Группа изобретений относится к вычислительной технике и может быть использована для аварийного переключения с использованием идентичных или почти идентичных аппаратных средств.

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

Изобретение относится к сетям беспроводной связи и, в частности, к конфигурациям разделенного канала-носителя восходящей линии связи для UE. Технический результат - UE предварительно выбирает маршрут, в котором размещаются PDU PDCP, независимо от того, имеет UE разрешение или нет в этом маршруте.

Изобретение относится к области моделирования сложных технических систем. Технический результат заключается в повышении достоверности оценки моделируемых процессов.

Изобретение относится к области распространения программного обеспечения, а именно к распространению программного обеспечения в сети связи рельсового транспортного средства.

Изобретение относится к способу управления космическим аппаратом (КА). Для управления КА в процессе его эксплуатации реализуют различные режимы изменения его параметров и бортовых систем.
Наверх