Comments 23
Майнеры нужны из-за искусственного завышения вычислительной сложности для составления блока. Помним, что хэш-функция в идеале непредсказуема, а узлы, которые эти блоки хранят и проверяют, не принимают блоки с хэшем, значение которого меньше фиксированного числа. Из-за этого приходится множество раз менять вышеупомянутый counter для получения нового результата хэширования до тех пор, пока хэш не станет удовлетворять условиям принятия блока в цепь.
Ни насколько. Сложность вычисления хеша одного блока не зависит от длины цепи.
Я уже описывал, что хэш должен быть больше, либо равен определенному числу (не постулат, но bitcoin использует именно эту схему).
Это искусственно ограничивает скорость создания блоков. Так что же мешает по определенным правилам регулировать это число?
И ещё кое-что. Майнеры не "майнят" оставшиеся биткоины. Они "майнят" награду за принятый в цепь блок.
Это не блокчейн в чистом виде, а частный случай – распределенный блокчейн на POW.
— Два узла одновременно обработали один и тот же блок, как быть? [Не давать так делать?]
— А если разные блоки и теперь у них одинаковая длина? [Разруливается временем? Оно разное теоретически]
— Как все-таки происходит взаимодействие по сети? Не мешает ли всякие NAT'ы и тд?
Блоки рассылаются по сети и цепочка раздваивается. После этого всё зависит от того, какой из двух блоков принял майнер, посчитавший следующий блок. Если вдруг случится так, что два майнера, принявшие разные блоки снова одновременно посчитали хэш следующего блока, смотрим дальше. Как только в какой-то цепочке блок найден быстрее, вторая альтернативная цепочка просто откидывается, и все участники сети переключаются на более длинную.
> Как все-таки происходит взаимодействие по сети? Не мешает ли всякие NAT'ы и тд?
По аналогии с торрентами. Простая p2p сеть.
Ну и чтобы два раза не вставать:
Блокчейн в вакууме, это, как это ни странно, цепочка блоков, в котором каждый следующий блок содержит хэш предыдущего. Благодаря этому достигается целостность и неизменность данных. Необязательно блоки должны подписывать майнеры, необязательно нужна сложность. Блокчейн — БД, в которой нельзя изменить какие-либо данные без изменения данных, которые были записаны позже. Всё очень просто.
Итого, час на подтверждение транзакции. Не так уж и много. Небольшая плата за свободные никем не контролируемые деньги) Размер блокчейна, imho, намного большая проблема.
С транзакциями всё в порядке. Существует специальная очередь, из которой и берут записи для формирования блоков. Поэтому, из откинутых блоков записи снова помещаются в эту очередь.
Как-то очень поверхностно, во первых для того, чтобы новый блок был принят, нужно прежде всего достигнуть консенсуса, это в случае биткоина и есть тот самый правильно подобранный nonce, эта техника называется proof of work, но можно сделать приватный блокчейн на одном сервере для личных нужд, тогда алгоритма консенсуса может и не быть, а блоки будут приниматься с некоторой фиксированной скоростью. С другой же стороны есть альтернативные алгоритмы консенсуса, которые сильно зависят от того, насколько блокчейн публичен. К примеру, если его майнят лишь определенные узлы, у которых на это есть права, а остальные имеют к нему доступ на проверку, то можно использовать более быстрые алгоритмы, чем proof of work и таким образом уменьшать время на прием транзакции из пула в блок.
А можно подробнее про пулы и блоки? Кто хранит\пополняет пулы? Пулы тоже распределенные?
Как гарантируется запись?
Вот добавили мы блок, нету никакой гарантии ни в какое время, что этот блок не будет отброшен из-за более длинной цепочки, сформированной в другом сегменте.
Нет ли в таком сценарии вектора атаки? Злоумышленник может сделать "перевод денег", и одновременно генерировать альтернативные цепочки. Тогда фактически "перевод" может не случиться, но злоумышленник успеет забрать "товар".
Кто хранит\пополняет пулы?Пользователи блокчейна добавляют желаемые записи в пул. Копии пула хранятся в узлах.
Пулы тоже распределенные?Да
Как гарантируется запись?Гарантии нету. Чем дольше блок находится в цепочке, тем выше надежность.
Вот добавили мы блок, нету никакой гарантии ни в какое время, что этот блок не будет отброшен из-за более длинной цепочки, сформированной в другом сегменте.
Теоретически, обладатель нереально мощного компьютера может сгенерировать более длинную цепочку с любыми записями, и ее примут другие узлы.
Нет ли в таком сценарии вектора атаки? Злоумышленник может сделать «перевод денег», и одновременно генерировать альтернативные цепочки. Тогда фактически «перевод» может не случиться, но злоумышленник успеет забрать «товар».Такая уязвимость называется «Атака 51%».
Декомпозиция blockchain