Comments 30
Один из другого получить невозможно
Возможно я ошибаюсь, но в криптографии на эллиптических кривых (она и используется в bitcoin) получить публичный ключ из приватного — элементарная операция?
Поскольку в ходе AES-шифрования выполняется возведение в степень
Разве? Я думал, там сеть Фейстеля, где выполняется только XOR и сложение по модулю 2³².
Почему-то в руководствах "bitcoin для чайников" рассказывают про хеширование и подписи, но нигде не объясняют, как сеть организована. Ну намайнил кто-то блок — как все остальные об этом узнают? У каждого майнера есть список ip адресов всех остальных майнеров?
Есть список захардкоженных узлов (раньше для сбора этих узлов применялся IRC-канал, теперь же там DNS-имена), к которым подключается новый узел, в протоколе определены сообщения типа «запросить другие известные узлы», и те захардкоженные (бутстрап-ноды) сообщают запросившему случайно выбранные адреса из известных им (т.е. адреса других к ним когда-либо подключавшихся). Обычно принимается модель «малого мира», когда каждый узел подключен к небольшому числу других, 8-20 примерно, но в целом получается достижимость от любого узла к любому через цепочку. Это позволяет оптимизировать трафик и, наверно, уменьшить вероятность кластеризации. Трафик оптимизируется, т.к. если узел получает уже пересланное им сообщение (через кольцо других узлов), он его снова не будет перепосылать, и если бы он был связан с большим числом узлов, такое «эхо» было бы намного сильнее.
Далее, когда блок намайнен, майнер его просто посылает подключенным к нему узлам, если не ошибаюсь, даже не всем сразу, а 3-4 случайно выбранным из них. Они рассылают своим «соседям» и т.д., в итоге, вся сеть получает новые данные через некоторое время. Но не принимайте мои слова на веру, я давно это всё читал и мог некоторые вещи забыть или исказить. Вообще, с удовольствием бы почитал про низкоуровневую архитектуру крупных P2P-сетей и как там решаются разного рода проблемы. Например, мне совсем неочевидно, как можно гарантировать полную связность, т.е. отсутствие обособленных островков, ни один из пиров в которых не соединён с остальной частью сети. Скорее всего, это объясняется через вероятности, но оно не очевидно.
Гы. Распределенная сеть и захардкоженные адреса узлов для подключения… Сразу же возникает вопрос, а кто их контролирует…
Какие-то узлы всё равно должны быть первыми, когда клиент запускается первый раз и вообще никого не знает. В DHT точно так же, например, часто в качестве бутстрап-ноды используется router.utorrent.com и router.bittorrent.com. Конечно, если спецслужбы контролируют большинство этих нод, можно «заманить» новых клиентов в подконтрольный им кластер, но вообще это маловероятно. Скорее всего, бутстрап-адреса раскиданы по всему миру, и клиент выбирает из них несколько случайных, чтобы снизить вероятность описанной ситуации.
encrypted(Y*X) == encrypted(Y)*encrypted(X)
неверено. Оно будет справедливо для, например, RSA
с единственной видюхой в ПК и «мамкиным электричеством»? :) Т.е. когда эл.энергию оплачиваешь из своего кармана.
С такой конфигурацией точно нет. Вот тут whattomine.com можно посчитать текущую доходность в зависимости от конфига, валюты и цены электричества.
Вот как я сейчас это вижу — при фактической маргинальности биткойна и нескольких сотнях тысяч транзакций в сутки текущий размер базы 164 GB. Если послушать евангелистов, которые пророчат замену криптовалютами на основе блокчейна текущей финансовой системы, то такой криптовалюте придется обрабатывать десятки тысяч транзакций в секунду, т.е. несколько миллиардов транзакций в сутки. Естественно, в этом случае обеспечить наличие полной базы у каждого из участников платежной системы малореально (если, конечно, не предполагать взрывного роста технологий передачи и хранения данных). А если не хранить базу, то получается, опять же, схема доверия каким-то узлам, которые ее хранят, т.е. мы фактически строим те же «банки» заново.
С интересом бы почитал, как планируют решать эту проблему.
Как решение проблемы «хотим тысячи транзакций в секунду» может сработать 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 в множество параллельных потоков)
www.linkedin.com/feed/update/urn:li:activity:6318054153390292992
До IOTA появился Byteball с ациклическим направленным графом транзакций DAG, в IOTA интересно что вместо комиссий используется Hashcash при формировании транзакций. Можно сказать транзакции майнятся по одиночке. Ещё я слышал там какие-то фундаментальные проблемы у IOTA с безопасностью обнаружили.
(без работы с вспомогательной основной цепочкой, как в BURST) пока мутные. Хотя это не отвергает того, что DAG — похоже единственный true способ получить такой блокчейн, чтобы каждая нода хранила не весь объем транзакций, а только те, которые интересуют только ее (ну и вспомогательные, для обеспечения работы консенсуса). Все имхо, канеш
С задачей выкачки части транз успешно справляется SPV. Рекомендую расширенную статью про эту тему (там есть ссылка на оригинал, перевод кривоват): https://goldvoice.club/@blockchained/mezhcheinovaya-kommunikaciya-pri-pomoshi-dokazatelstv-merkla-v-eos-io-daniel-larimer/
Blockchain глазами разработчика