Pull to refresh

Comments 30

Огромное спасибо! Вот та статья, которую я ждал, чтобы быстро понять основы всех этих новых популярных штук.
Один из другого получить невозможно

Возможно я ошибаюсь, но в криптографии на эллиптических кривых (она и используется в bitcoin) получить публичный ключ из приватного — элементарная операция?
Поскольку в ходе AES-шифрования выполняется возведение в степень

Разве? Я думал, там сеть Фейстеля, где выполняется только XOR и сложение по модулю 2³².

Да, тут ошибка. Имелось ввиду RSA.

Почему-то в руководствах "bitcoin для чайников" рассказывают про хеширование и подписи, но нигде не объясняют, как сеть организована. Ну намайнил кто-то блок — как все остальные об этом узнают? У каждого майнера есть список ip адресов всех остальных майнеров?

Да, интересный вопрос. Я его не касался, поскольку технологии пиринга не новы и ортогональны блокчейну. Если попробовать поразмышлять, то кажется, что намайнив блок можно его публиковать своим пиринг-соседям, а они лавиной могут распространять его далее. Наводнения сети заведомо поддельными блоками можно избежать, т.к. ноды проверяют блок перед передачей далее.

Есть список захардкоженных узлов (раньше для сбора этих узлов применялся IRC-канал, теперь же там DNS-имена), к которым подключается новый узел, в протоколе определены сообщения типа «запросить другие известные узлы», и те захардкоженные (бутстрап-ноды) сообщают запросившему случайно выбранные адреса из известных им (т.е. адреса других к ним когда-либо подключавшихся). Обычно принимается модель «малого мира», когда каждый узел подключен к небольшому числу других, 8-20 примерно, но в целом получается достижимость от любого узла к любому через цепочку. Это позволяет оптимизировать трафик и, наверно, уменьшить вероятность кластеризации. Трафик оптимизируется, т.к. если узел получает уже пересланное им сообщение (через кольцо других узлов), он его снова не будет перепосылать, и если бы он был связан с большим числом узлов, такое «эхо» было бы намного сильнее.


Далее, когда блок намайнен, майнер его просто посылает подключенным к нему узлам, если не ошибаюсь, даже не всем сразу, а 3-4 случайно выбранным из них. Они рассылают своим «соседям» и т.д., в итоге, вся сеть получает новые данные через некоторое время. Но не принимайте мои слова на веру, я давно это всё читал и мог некоторые вещи забыть или исказить. Вообще, с удовольствием бы почитал про низкоуровневую архитектуру крупных P2P-сетей и как там решаются разного рода проблемы. Например, мне совсем неочевидно, как можно гарантировать полную связность, т.е. отсутствие обособленных островков, ни один из пиров в которых не соединён с остальной частью сети. Скорее всего, это объясняется через вероятности, но оно не очевидно.

Гы. Распределенная сеть и захардкоженные адреса узлов для подключения… Сразу же возникает вопрос, а кто их контролирует…

Какие-то узлы всё равно должны быть первыми, когда клиент запускается первый раз и вообще никого не знает. В DHT точно так же, например, часто в качестве бутстрап-ноды используется router.utorrent.com и router.bittorrent.com. Конечно, если спецслужбы контролируют большинство этих нод, можно «заманить» новых клиентов в подконтрольный им кластер, но вообще это маловероятно. Скорее всего, бутстрап-адреса раскиданы по всему миру, и клиент выбирает из них несколько случайных, чтобы снизить вероятность описанной ситуации.

других решений я пока не встречал — у всех так, по другому можно сделать только случайным сканированием сети, да и то не всегда можно определить не попал ли ты на липовые узлы
Ну так как не требуется никакой защиты передачи блока, то годится любое достаточно быстрое решение, которое организует публичный пул для блоков и для транзакций. Раньше он был простым — канал в ирке, сейчас же, большинство проектов использует пиринговую сеть, как раз для того, чтобы транслировать новые блоки и транзакции друг-другу
AES не гомоморфен относительно операции умножения, т.е. выражение
encrypted(Y*X) == encrypted(Y)*encrypted(X)
неверено. Оно будет справедливо для, например, RSA
Чисто экономический вопрос: видя, как целые фермы(!!) видеокарт майнят валюту, имеет ли вообще смысл «простым смертным» в это ввязываться с единственной видюхой в ПК и «мамкиным электричеством»? :) Т.е. когда эл.энергию оплачиваешь из своего кармана.
Если присоединяешься к пулу, и юнит-экономика сходится (т.е. достаточна ли энергоэффективность, вне зависимости от hash rate), то почему бы и нет. Правда не уверен, что в случае CPU она сойдется. Может на bitcoin gold.
с единственной видюхой в ПК и «мамкиным электричеством»? :) Т.е. когда эл.энергию оплачиваешь из своего кармана.

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

Вот как я сейчас это вижу — при фактической маргинальности биткойна и нескольких сотнях тысяч транзакций в сутки текущий размер базы 164 GB. Если послушать евангелистов, которые пророчат замену криптовалютами на основе блокчейна текущей финансовой системы, то такой криптовалюте придется обрабатывать десятки тысяч транзакций в секунду, т.е. несколько миллиардов транзакций в сутки. Естественно, в этом случае обеспечить наличие полной базы у каждого из участников платежной системы малореально (если, конечно, не предполагать взрывного роста технологий передачи и хранения данных). А если не хранить базу, то получается, опять же, схема доверия каким-то узлам, которые ее хранят, т.е. мы фактически строим те же «банки» заново.

С интересом бы почитал, как планируют решать эту проблему.
Биткоин — это не замена карточкам и всяким пейпалам, это способ хранения и передачи ценности в распределенной trustless сети, которую (ценность) нельзя [1][2] конфисковать или украсть, и трудно отследить.

Как решение проблемы «хотим тысячи транзакций в секунду» может сработать Lightning Network [3], но к нему тоже достаточно вопросов: отход от p2p, необходимость замораживания средств в каналах, невозможность получить больше, чем заморожено, и проч.

[1] www.theregister.co.uk/2017/08/30/ex_cop_jailed_for_not_decrypting_data
[2] www.xkcd.com/538
[3] bitcoin.stackexchange.com/questions/43700/how-does-the-lightning-network-work-in-simple-terms
Да, это пожалуй самый большой слон в посудной лавке, о котором евангелисты умалчивают в пламенных речах.

Проблема масштабируемости состоит из как минимум двух подпроблем: нарастить число транзакций в секунду (TPS) и спасти жесткие диски от сотен гигабайт занятых под блокчейн.

TPS проще всего наращивается в различных delegated- алгоритмах консенсуса, напр. в EOS, напр. в Ethereum Casper (не совсем delegated, но важно то, что число нод, формирующих блоки, мало и дисциплина формирования довольно упорядочена).

Серьезно ужать блокчейн — сложнее. Есть различные легковесные решения, но, кажется, там возникает либо проблема эффективности, либо проблема доверия. Есть идеи шардинга, но, напр., в Ethereum оно только на этапе экспериментов github.com/ethereum/wiki/wiki/Sharding-FAQ.
В основном все собираются идти по пути офчейн-масштабирования — так как оно проще, хоть при этом и «кособоко».
Но есть и проекты, которые собираются придерживаться классического видения (он-чейн-масштабирование), например «Bitcoin Cash» и «Dash»:
www.dash.org/forum/threads/Как-реализовать-on-chain-масштабирование-сети-dash.15690
(т.е.в том числе и за счёт использования специального аппаратного обеспечения для скоростного хэширования транзакций Dash в множество параллельных потоков)
Посмотрите статью «Пути решения проблем централизации и масштабируемости майнинга Биткойна. От blockchain к blockchains»
www.linkedin.com/feed/update/urn:li:activity:6318054153390292992
Почему сложность майнинга возрастает со временем? Насколько я помню по началу было очень просто получить новые монеты, а сейчас целая ферма нужна. Или это просто из-за количества участников процесса?
Алгоритм устроен таким образом, чтобы новый блок выходил каждые 10 минут (плюс-минус). Если блоки добывают быстрее 10 минут, то сложность автоматически повышается. Следовательно, чем больше мощностей подключается к майнингу, тем более сложным становится процесс формирования блока и тем меньше получает каждый отдельный майнер. Однако справедлив и обратный процесс: если вдруг майнеров станет меньше, то алгоритм подстроится в обратную сторону.
Я бы предложил автору в том же духе написать книгу, от простого сложного, с упоминанием всех подводных камней (часть которых уже в комментах) и продавать как электронную книгу. Я бы купил.
По-моему, сильно не хватает информации про IOTA. Куда более «принципиально новый блокчейн», чем EOS. Настолько, что даже не блокчейн.

До IOTA появился Byteball с ациклическим направленным графом транзакций DAG, в IOTA интересно что вместо комиссий используется Hashcash при формировании транзакций. Можно сказать транзакции майнятся по одиночке. Ещё я слышал там какие-то фундаментальные проблемы у IOTA с безопасностью обнаружили.

В IOTA вроде нашли дыру в самописной хеш функции. У всех DAG-ов крайне непонятная ситуация с атаками на консенсус. Атакующий может валить в DAG много собственных транзакций, «прокачивая» собственные, и в IOTA по-моему вначале как раз не было серьезных доводов против таких атак. В ByteBall эту проблему решают с помощью 12 доверенных узлов, а в IOTA вроде уже попробовали несколько вариантов решения, но общее впечатление, что перспективы «голого» DAG
(без работы с вспомогательной основной цепочкой, как в BURST) пока мутные. Хотя это не отвергает того, что DAG — похоже единственный true способ получить такой блокчейн, чтобы каждая нода хранила не весь объем транзакций, а только те, которые интересуют только ее (ну и вспомогательные, для обеспечения работы консенсуса). Все имхо, канеш

С задачей выкачки части транз успешно справляется SPV. Рекомендую расширенную статью про эту тему (там есть ссылка на оригинал, перевод кривоват): https://goldvoice.club/@blockchained/mezhcheinovaya-kommunikaciya-pri-pomoshi-dokazatelstv-merkla-v-eos-io-daniel-larimer/

Sign up to leave a comment.