СПОСОБ ВЕДЕНИЯ РАСПРЕДЕЛЁННОЙ БАЗЫ ДАННЫХ В ЕДИНОЙ СРЕДЕ УЧЁТА НАПОДОБИЕ BITCOIN

Способ ведения распределенной базы данных в единой среде учета наподобие Bitcoin, состоящей из узлов (участников), имеющих свои локальные базы данных, состоящие из технических средств и программного обеспечения, имеющего управление с помощью команд, в том числе изменяющих структуру базы данных, и содержащих свою локальную цепочку данных, состоящую из звеньев (blocks), которые состоят из тела звена, содержащего набор записей и заголовка звена, содержащего ссылку на предыдущее звено в виде его хэша и хэш своего собственного тела, заключающийся в том, что создают пары закрытый (секретный) и открытый (публичный) ключ и соответствующие им номера счетов хранения и учета цифровых единиц, считают счетом (адресом) участника среды его открытый ключ или соответствующий этому ключу номер счета, считают обладателем счета того участника среды, который обладает соответствующим данному счету закрытым ключом считают электронной подписью известные способы электронного подписания цифровой информации закрытым ключом, считают, что электронная (цифровая) подпись участника соответствует его счету в среде, создают записи-заявки изменения данных, передают эти записи-заявки в среду учета, задают правила проверки на годность записей-заявок и записей получают записи-заявки из среды учета, проверяют годность их согласно заданным правилам годности, вносят записи-заявки прошедшие отбор годности во временный список хранения, выбирают записи-заявки из списка временного хранения и создают из них тело нового звена, которое потом полностью собирают, подписывают своим ключом и отправляют в среду учета, принимают новое звено из среды учета, проверяют его годность и записывают его в свою локальную цепочку данных, получают звенья цепочки или записи-заявки, проверяют их годность и передают их дальше другим участникам среды, считают числом подтверждений для заданного звена величину равную числу записанных в цепочку звеньев после данного звена плюс 1, вводят необходимые виды учетных единиц, считают, что счет имеет тот вид, учетные единицы которого содержатся на нем, считают, что учетные единицы хранятся на счету, если этот счет обладает этими единицами, считают подписантом записи того, кто подписал своим счетом эту запись, создают счета начальных участников среды, создают первоначальное звено цепочки, в которое вносят записи с созданием начальных видов учетных единиц и начальным выпуском их и распределением их по счетам начальных участников среды, отличающийся тем, что вводят понятие базная запись (Б-запись) - это запись, хранимая в локальной базе данных узла среды учета, вводят понятие цепочная запись (Ц-запись) - это запись, которая хранится в цепочке данных (блокчейне) и далее везде где конкретно не указан вид записи считают, что речь идет о цепочной записи по умолчанию, вводят понятие одобрения, значением которого некоторой Ц-записи некоторым видом учетных единиц является результат подсчета числа или доли учетных единиц данного вида хранящиеся на всех счетах подписавших данную Ц-запись, вводят понятие одобряющий счет данного вида учетных единиц - это счет, на котором хранятся учетные единицы данного вида, которые могут быть использованы для одобрения данного вида, вводят понятие необходимое одобрение для некоторого вида Ц-записи - это величина одобрения в виде абсолютного или относительного значения как доли или процента от общего числа учетных единиц данного вида в используемой цепочке данных или среде учета, считают, что величина одобрения у данной Ц-записи - это совокупность величин одобрения одобривших эту запись счетов, считают, что Ц-запись получила одобрение от некоторого вида счетов, если эта запись набрала необходимую для данного вида Ц-записи величину одобрения данного вида, вводят понятие одобрить Ц-запись, означающее что данная Ц-запись подписывается одобряющим счетом, вводят новый вид Ц-записи - описывающая Ц-запись, в которую вносят описание величин и их значения для использования в среде учета, задают виды Ц-записей-заявок, требующих одобрения, путем создания начальных описывающих Ц-записей в начальном звене цепочки или вставок кода в программное обеспечение среды учета и указания в каждой из них срока сбора одобрения, вида используемых для одобрения учетных единиц и их необходимого значения одобрения, создают список ожидания одобрения для временного хранения Ц-записей-заявок ожидающих одобрения, получают из среды Ц-записи-заявки, требующие одобрения и сохраняют их в списке ожидания одобрения, просматривают список ожидания одобрения и выявляют в нем Ц-записи-заявки с просроченным сроком хранения и удаляют их из этого списка, одобряют Ц-запись-заявку ожидающую одобрения, заменяют ее в своем списке ожидания одобрения и передают ее обратно в среду, получают из среды Ц-запись-заявку, и если она требует одобрения учетными единицами заданного вида, то вычисляют значение одобрения полученного этими единицами для данной заявки, сравнивают его с необходимым значением для данного вида записи-заявки, и в случае достаточности полученного значения включают эту заявку в тело нового звена, включают в Ц-записи-заявки команды на изменения данных в локальной базе данных и команды на изменения структуры в ней, включают в Ц-записи-заявки компьютерные программы с указанием в начальных байтах записи их языка программирования и годности к машинному исполнению из списка видов: исходный код (текст), интерпретированный код и скомпилированный код, задают списки управляющих, голосующих и рабочих счетов, начальными видами учетных единиц задают - управляющие, голосующие и рабочие виды, в первоначальное звено включают Ц-записи создания видов управляющих, голосующих и рабочих единиц, в которых задают соответствующие списки для их первоначального выпуска и распределения по счетам соответствующих видов, вводят виды Ц-записей, меняющих структуру локальной базы данных, и назначают для них в качестве вида используемых для одобрения учетных единиц управляющие единицы, срок ожидания одобрения по крайней мере в один день и размер необходимого одобрения по крайней мере в 1/10000-ю долю от общего их числа в этой цепочке данных или среде учета, создают стек отката изменений локальной базы данных, куда записывают транзакции для каждого номера звена с присвоением транзакциям номеров звеньев из цепочки данных, задают число подтверждений звена, поле которого считают его готовым к занесению в базу данных, после получения заданного числа подтверждений звеном цепочки, просматривают все Ц-записи его тела и создают из команд и программ в них одну транзакцию для локальной базы данных и сохраняют ее в стеке отката по номеру звена в цепочке данных так что, при откате цепочки данных откатывают все изменения в этой базе данных до значений соответствующих номеру последнего оставшегося звена в откаченой цепочке данных, после чего исполняют данную транзакцию, воссоздают всю базу данных с самого начала просматривая все звенья из цепочки данных с самого начального звена и последние X транзакций заносят в стек, где X - размер стека отката в случае отката изменений, если номер звена меньше чем номер самой глубокой записи в стеке, выявляют Ц-записи, в которые внесен программный код, определяют по начальным байтам в них язык программирования и машинную готовность кода к исполнению и загружают соответствующие им компиляторы или интерпретаторы и исполняют этот программный код и результат записывают в виде Б-записей в базу данных узла или создают на основе результата новую Ц-запись-заявку, подписывают ее своей подписью и отправляют в среду учета для включения ее в цепочку данных, задают правила отбора звеньев из цепочки данных, по которым совершают отбор тех звеньев, которые важны для данного узла, и совершают загрузку тел только этих звеньев и лишь заголовки у остальных, задают правила отбора для Ц-записей из звеньев для включения их в базу данных узла, по которым совершают отбор важных Ц-записей для данного узла и только их включают в транзакцию.