Pull to refresh

Comments 27

Интересная концепция.
Допустим треть + 1 будут в китае, и они отвалятся(как это бывает в реальности) сеть будет парализована, т.к. недостаточно валидаторов для голосования?
Да, все верно. На самом деле, описанная вами проблема действительно актуальна, особенно в случае с Китаем. Например, у Bitcoin перерасчет сложности делается раз в 2016 блоков (~2 недели).

Получается, если вчера сложность пересчиталась, а сегодня их правительство запретило майнинг и фермы обесточили, то на следующие две недели сеть просто встанет. Сложность то коллосальная, а у Китая процентов 30 можности точно есть, так что сети останется жить на 70% от ожидаемой мощности.
Это дает два интересных свойства: в первую очередь необходимую нам детерменированность (каждый участник сети должен иметь возможность однозначно знать, кто из валидаторов станет proposer-ом в данном раунде). Но в то же время мы имеем псевдослучайный выбор, который позволит свести на нет атаки, связанные с заранее известной последовательностью proposer-ов в процессе выбора.

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

Название алгоритма не указано, но похоже это DPoS

Нет, изначально вариация на тему PBFT (в практически девственном виде). Если веса голосов участников будут зависеть от количества монет, то будет DPoS.

Да, все верно. В DPoS вашу значимость определит размер депонированной суммы, а, например, в PoI (Proof-of-Importance, используется в NEM) ваш вес зависит от «важности» в сети. Сам их алгоритм довольно нетривиален, поэтому я в течении следующего месяца обязательно про него напишу :)
Не будете ли писать и о Proof-of-Authority?
P.S. У Вас куча наинтереснейших статей по блокчейну, искреннее спасибо за них.
Не очень понимаю, что можно рассказать про PoA, если подскажете интересную тему — обязательно напишу.
Спасиб :)
Скажем так, как вы бы прокомментировали вот такую популярную картинку:

image
1. Обладание вычислительной мощностью (чипы на картинке). Анонимно
2. Обладание монетами. Анонимно
3. Обладание определенным приватным ключом (паспорт на картинке). Неанонимно
Шикарная статья, то что нужно!
Вопрос по алгоритмам консенсуса (не по этому конкретно, а вообще): получается что для достижения консенсуса нужен обмен «каждый с каждым»? А если в сети миллионы пиров?
Если скачать криптовалютный кошель, он считает хорошим соединение с сетью, когда нашел и получает данные от 4-5 нод.
Обычно держит соединение на 8, и еще несколько держит в запасе. Из чего делаем вывод, что предполагается, что 8 разных точек в сети не могут врать.
К тому же достижение консенсуса достигается не кол-вом пользователей, а большей вычислительной мощностью(PoW) или большим балансом(PoS). Если упростить.

В случае с описанным в статье базовым консенсусом – как раз-таки за счёт количества участников. Описанная база интересна, но содержит нюанс, которые с моей точки зрения ограничивают её применение. Поправьте меня, если я неправ, но каждый блок должен хранить 2/3+ неких подписей из pre-vote и/или pre-commit сообщений.

Да, в общем то верно. Вот структура блока из их документации — ссылка. Только хранить pre-vote вроде бы ни к чему, достаточно только pre-commit. Ну потому что если у вас есть pre-commit — то из этого однозначно следует, что у вас есть и pre-vote, а если их нет — то и блока нет :)
В разделе Malicious proposer на первой иллюстрации А отправляет блоки в B,D,E, но не отправляет в С, а в С блок приходит от В, почему так?
Это была попытка продемонстрировать несвязность сети нод :)
Несвязанность… Не очень понятно, но я тогда сформулирую вопрос по другому: каждый раз нода отправляет сообщения ВСЕМ, или вы как-то реализовали возможность делегировать отправление сообщений. При такой ситуации ведь самый первый вопрос в доверии, отправит ли прокси-нода сообщение дальше.
Нет, нода не отправляет сообщение всем. Представьте, что у вас 10.000 участников сети — вы же не будете держать соединение со всеми (9.999) и отправлять каждому один и тот же пакет. На то сеть и децентрализована, что вы можете держать в «контактах» штук 10 других нод и отправлять только им. А они уже, проверив сообщение на корректность, отправят своим десяти «контактам», а те своим и так далее.

Доверие действительно есть, но понятно, что его нужно тем меньше, чем больше у вас «контактов».
Вот почему спрашиваю: если 1 отправляет сообщение в 9999 узлов, то он условно говоря и зависит именно от этого множества и процентного содержания неких византийцев, а если только от десяти, то его зависимость весьма… зависима (пардон за тавтологию). Т.е. с точки зрения BCA алгоритма какая у меня может быть уверенность именно в этих 10, или следующих за ними в волне 100?

Алгоритм выбора этих десяти (именно их) и гарантирует и обеспечивает некоторую рамдомность для каждого нового запроса и защиту гипотетической атаки злобными византийцами? Т.е. что-то в духе близости адреса к хэшу? Как при таком раскладе гарантируется 100% охват и при этом минимальное или нулевое наложение (т.е. отправка тому, кто уже получал)?

Подозреваю, что это что-то из p2p или торрентов, но если возможно, объясните на пальцах. Возможно, при разработке в данном контексте вы рассматривали какие-то альтернативы, можете выложить тут какую-то такую цепочку рассуждений?

И ещё, с одной стороны, при отправке тупо всем 9999 сообщений это кажется много, но ведь в конечном итоге эти 9999 запросов пройдутся по сети всё равно, и если каждый из узлов при инициализации новой транзакции будет вместо отправки «волны» массово броадкастить (так и хотелось написать «спамить»), то при какой-то более-менее равномерной нагрузке в сети всё окажется достаточно равноценно… Можете дать свои соображения по этому вопросу? Понятно, что при 1000000 узлов это видится по другому, но тем не менее, для не такого колоссального числа узлов, измеряемого тысячами, а не десятками тысяч и более?
Отвечая на ваш claygod вопрос ниже, то бишь тут.
У вас возникла путаница из-за заметной разницы между красивой обёрткойконцепцией и реально работающей моделью. Ключевое в идеальной ситуации(тот самый конь), когда все вокруг византийцы и надо проверятьопросить всех 9999. Далее удобство пользования. И реально структура сети.
По пунктам:
1. В реальности византийцев уже давно нет и можно с уверенностью считать, что 99% такие же как и вы. То есть обычный пользователь сети, которых если интересует сеть, то больше теоретически. Описанное правильнее называть не византийскими генералами, а византийской пехотой которая по этой схеме проверяет всю армию. Они б просто завалили друг друга посланиями и проверяли их пару недель.
2. Если вам надо обменяться с 5001 (на самом деле 50%+1, а не всем) ради проверки одного сообщения. Это значит в понятных цифрах, что если б биткоин работал как вы описываете, понадобилось бы подключение 70-100Mbit/s
упрощенно в цифрах
Биткоин по скорости уступает многих альтернативам, но даже его заявленные 7 транзакций в секунду, который на самом деле обычно около 4-5.
Итого упростим многое из протокола и получим 1kb опросить 5000 раз = 5 мегабайт в секунду т.е. ~50Mbit только, чтоб проверять проходящие в сети транзакции. Как думаете много ли будет желающих? Бонус: сеть лайткоин может в 10 раз быстрее.

3. Реальная структура инета не позволяет выдать всем статический «белый» IP. А потому, все у кого нет «белого» IP или он динамический приходится подключаться к тем у кого они есть. И именно они становятся в этом случае генералами. Но мы как солдат 21го века держим связь сразу с 8 генералами, сверяя все сообщения, хотя возмутители спокойствия из сети быстро выбрасываются, и вы о них не узнаете(не получите IP для подключения). На самом деле просто для скорости — многопоточного скачиванияполучения информации.

Попытка изложить достаточно понимания без специальных знаний.
TrllServ, спасибо за разъяснение, как говорится, век живи, век учись. С точки зрения показанных вами цифр я бы сказал, что броадкаст возможен лишь в какой-то небольшой сети, сотни штук (100*1kb=0.1mb). Но и при таком варианте 1000 транзакций в секунду создаст трафик ~100Mbit, что конечно, весьма много.
(Поправьте мои рассуждения, если они неверны).

И тогда если можно, разьясните, как же всё-таки гарантируется доставка сообщения всем? Да и с немногими, но возможными византийцами как быть в этом случае? К примеру в википедии на странице Одноранговая сеть упомянуто, что к примеру RIAA дискредитирует пиринговые сети, что в контексте блокчейна даже ещё больше вызывает вопросов.
claygod, ну зачем же так сурово? (шутко)
я пол часа ищу на профильных сайтах, атаку RIAA которая дискредитирует p2p. А оказалось, что яндекс прав подсовывая любезно информацию про музыку и ссылку на википению. Не ищем легких путей.
По существу вопроса.
Во первых это не дискредитирует технически систему, она не становится уязвимой. Тут просто ищется повод, что б применить судебное решение по отработанной схеме(прецедентам). Более того, аналогичная атака начата на Биткоин, кто-то намеренно положил в блокчейн, очень хитрым способом, что-то «похожее на детское порно». Слово «похожее», добавляется, что б исключить судебное преследование распространяющего СМИ. geektimes.ru/post/299275
Особо интересны каменты. Пример «фотография порвана на тысячи кусочков и раскидана по блокам» очень точное описание способа, что-то положить в сеть биткоин. Можно ли считать это можно ли это считать злым умыслом всех кто хранит полную историю — мне кажется сомнительно. Но какое примут решение, если дойдет до суда, я не сомневаюсь. Копирасты умеют превратить в бред всё за что берутся.

Во вторых, там же написано, что было найдено решение.
Как и написал Pavlov_dog, реальные клиенты не держат связь сразу со всеми — слишком затратно, а при увеличении сети станет просто не реальной нагрузкой. Большинство ныне существующих проектов держат всего 8 соединений и считают это надёжной связью с сетью. Ещё несколько контактов проверяют и держат «про запас».

Работа чем-то похожа на работу GPS приемника в работе и выборе спутников.
Спасибо за ответ, чуть выше я ещё задал вопросы, поглядите пожалуйста, чтобы не дублировать в соседних ветках.
UFO just landed and posted this here
> Я правильно понимаю, что это означает, что сеть не децентрализована — ведь у неё есть выделенные узлы?

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

> Ещё один вопрос — как решается проблема того, что узел может «майнить» без особых затрат разные форки?

А в такой сети не может быть форков, в этом ее прелесть.
в ближайшее время мы опубликуем как минимум три статьи про эту замечательную технологию. Первая будет представлять из себя некоторый overview всего проекта и его возможностей. А во второй будет максимально подробно продемонстрирован процесс создания своего блокчейна (никакого ICO, обещаем!) на связке Tendermint + Python 3.

Таки нет? Pavlov_dog
Sign up to leave a comment.

Articles