Pull to refresh

Comments 23

Спасибо. Не совсем понятно, что есть узел и что есть майнер?

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

И насколько сильно сложность увеличивается с увеличением длины цепи? К примеру на 10 000 000 записей.

Ни насколько. Сложность вычисления хеша одного блока не зависит от длины цепи.

Тогда почему чем больше майнится биткоинов, тем сложнее майнить оставшиеся?

Я уже описывал, что хэш должен быть больше, либо равен определенному числу (не постулат, но bitcoin использует именно эту схему).
Это искусственно ограничивает скорость создания блоков. Так что же мешает по определенным правилам регулировать это число?

И ещё кое-что. Майнеры не "майнят" оставшиеся биткоины. Они "майнят" награду за принятый в цепь блок.

Это не блокчейн в чистом виде, а частный случай – распределенный блокчейн на POW.

Да, строго говоря — БЧ — это просто последовательные записи, связанные между собой контрольными суммами. А распределённость — это уже необязательная фича.

А есть ли практическое применение нераспределенного блокчейна?

Вопрос был о возможности нераспределённого БЧ. На практике он просто не востребован, так как не имеет особого смысла — если источник данных централизован у него нет необходимости сомневаться в собственной надёжности :)

github – централизованный блокчейн.

Было бы интересно узнать как именно происходит процесс подтверждения транзакции в классическом POW блокчейне.
Когда один из узлов принял блок с транзакцией — это произошло первое подтверждение. Каждый последующий блок над ним дает еще одно подтверждение.
Несколько простых вопросов (и напрашивающихся решений в квадратных скобках):
— Два узла одновременно обработали один и тот же блок, как быть? [Не давать так делать?]
— А если разные блоки и теперь у них одинаковая длина? [Разруливается временем? Оно разное теоретически]
— Как все-таки происходит взаимодействие по сети? Не мешает ли всякие NAT'ы и тд?
> Два узла одновременно обработали один и тот же блок, как быть? [Не давать так делать?]

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

> Как все-таки происходит взаимодействие по сети? Не мешает ли всякие NAT'ы и тд?
По аналогии с торрентами. Простая p2p сеть.

Ну и чтобы два раза не вставать:
Блокчейн в вакууме, это, как это ни странно, цепочка блоков, в котором каждый следующий блок содержит хэш предыдущего. Благодаря этому достигается целостность и неизменность данных. Необязательно блоки должны подписывать майнеры, необязательно нужна сложность. Блокчейн — БД, в которой нельзя изменить какие-либо данные без изменения данных, которые были записаны позже. Всё очень просто.
Т.е. пока твой блок не закроют следующим, нельзя быть уверенным, что он останется в цепочке? Как-то не очень надежно выглядит для финансовых транзакций…
Более того, даже если его уже закрыли следующим, есть вероятность, что вся цепочка будет отброшена. Поэтому рекомендуют дожидаться 6-ти подтверждающих блоков, тогда шанс, что цепочка будет отброшена настолько мизерный, что им можно пренебречь.
Итого, час на подтверждение транзакции. Не так уж и много. Небольшая плата за свободные никем не контролируемые деньги) Размер блокчейна, imho, намного большая проблема.

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

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

А можно подробнее про пулы и блоки? Кто хранит\пополняет пулы? Пулы тоже распределенные?


Как гарантируется запись?
Вот добавили мы блок, нету никакой гарантии ни в какое время, что этот блок не будет отброшен из-за более длинной цепочки, сформированной в другом сегменте.


Нет ли в таком сценарии вектора атаки? Злоумышленник может сделать "перевод денег", и одновременно генерировать альтернативные цепочки. Тогда фактически "перевод" может не случиться, но злоумышленник успеет забрать "товар".

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

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

Нет ли в таком сценарии вектора атаки? Злоумышленник может сделать «перевод денег», и одновременно генерировать альтернативные цепочки. Тогда фактически «перевод» может не случиться, но злоумышленник успеет забрать «товар».
Такая уязвимость называется «Атака 51%».
Sign up to leave a comment.

Articles