Про консенсус хочется поподробнее сейчас. А вообще не все делают сейчас по принципу победителя, IOTA имеет без блокчейна механизм (сейчас разбираюсь что и как) и вот еще нашел p2p сеть поверх физической, заявлена анонимность, все дела:
http://netsukuku.freaknet.org - достаточно старый проект, есть инфа по-русски в том числе, на хабре в частности.
Проект netsukuku достаточно интересен, но мне кажется будущее уже за беспроводными Mesh-сетями.
В IOTA хуже то, что данные по транзакциям не контролируются всей сетью, мы отдаем на проверку только двум участникам. Да это дает скорость, но это очень сильно снижает надежность и безопасность.
А теперь поговорим о принципах работы алгоритма консенсуса в моей анонимной криптовалюте. Для начала Вы должны понять структуру транзакции, сделаем буфер транзакций в виде таблицы базы данный, в ней пока будет только одна ваша транзакция:
| id | хеш-адрес отправителя | хеш-адрес получателя| хеш-подпись отправителя | хеш-адрес вашего клиента | хеш-подпись вашего клиента |
Думаю первые 4 колонки понятны, объясню оставшиеся две и главное зачем они добавлены. Если Вы посмотрите на рисунки, где я показываю имитацию взаимодействия в такой сети, то увидите, что для 10 участников может быть только максимальная цепочка из 10 транзакций.
Я создал правило, что в построении текущего блока каждый участник сети может создать только одну транзакцию. И именно последние 2 колонки показывают, что за клиент создал эти транзакции, если появиться любая другая транзакция, но от такого устройства, то она уже не примится сетью, т.к. две и больше транзакций с одного клиента отправлять нельзя.
Говорю сразу, хеш-адрес устройства меняется при каждом новом заходе в сеть или если Вы в сети долго, то через каждые 3 часа например, чтобы по этому хеш адресу невозможно было Вас отследить.
Итак Вы видели структуру транзакций, но чтобы мне было Вам наглядней объяснить, я принял следующие сокращения: устройство 1 с именем User1(тоже упрощаем имя для лучшей наглядности) имеет в буфере обмена свою какую-то транзакцию, для наглядности я обозначил её 01.
И так устройство 1 имеет транзакцию 01 и так далее до десяти. Так как условный пример я приводил на 10 устройствах.
Теперь давайте посмотрим еще раз на это изображение, чтобы понять как взаимодействуют между собой устройства и выращивают консенсус.
Предлагаю обратить внимание на транзакции User01 и User03. В отличие от других у них только 2 одинаковые для них транзакции 03 (транзакция User3) и 01 (транзакция User1). Если отбросить всю остальную сеть, то для них консенсус уже наступил, т.к. они имеют у себя полностью одинаковые блоки со своими транзакциями в определенном порядке.
Почему получилась между этими устройствами именно такая последовательность, а не наоборот. Я создал правило, при одинаковом количестве транзакций, приоритет получает транзакция пользователя к которому подключились, использовалась логика, раз ты подключился ко мне, а не я , то тебе это нужнее, значит уступе мне в приоритете транзакции.
Таким образом, чтобы образовалась такая последовательность транзакций 03 01 нужно чтобы User1 подключился к User3 и если они в буфере будут иметь только свои транзакции, то образуется такая последовательность.
Когда же цепочка из таких транзакций растет, то там будут применяться уже другие правила.