Предполагаемый размер базы транзакций Bitcoin



    Мне стало интересно какого размера станет база транзакций Bitcoin на реальных объемах. Т.е. представим, что Bitcoin стал официальной валютой России.
    Для примера я взяла такую статистику центрального банка России.
    В целом, точные цифры неинтересны, нам важны порядки значений.
    Допустим, 2013 год — 5 млрд. операций. Одну bitcoin-транзакцию сделаем минимальной — равной 1кБайт.

    Итак, 5 000 000 000 * 1000 = рост базы 5ТБайт/год для одной страны.

    Интересно, успеет ли закон Мура по персональным накопителям данных за развитием Bitcoin? Готов ли Bitcoin в роли децентрализованного инструмента к таким объемам? Не приведет ли слишком дорогостоящая поддержка майнинга к централизации майнеров и ослаблению системы?

    Хотелось бы услышать мнение хабравчан по этому поводу.
    Share post

    Comments 72

      +4
      всегда напрягала мысль о том, что через 5 лет личный кошелек придется качать неделю.
        +1
        Так там же вроде не обязательно качать всю базу
          +7
          И тогда конечный пользователь отдаёт контроль владельцам крупных дата-центров.
            +1
            Каким образом возможность не качать всю базу приводит к контролю владельцами крупных дата-центров?
              +4
              Пользователь перестаёт генерить блоки транзакций, и дата-центры, которые только и останутся с полными базами, могут легко поставить условие — 10% комиссия для включения твоей транзакции в блок.
                +3
                Соло майна уже давно нет на популярных валютах.
                  0
                  Чтобы генерировать новые блоки совсем не обязательно иметь у себя всю цепочку, достаточно хранить некоторое количество наиболее свежих блоков.

                  А вот децентрализовано проверить количество биткоинов на каком-нибудь незнакомом кошельке уже не получится без обхода всей цепочки.
                    0
                    Интересно, будет ли устойчиво работать подтверждение транзакции, если полная база только у 1% узлов, а тот, кто генерит транзакцию, тоже не знает баланса кошелька, с которого списываются биткойны.
                      0
                      Вы задаете совсем некорректный вопрос.

                      > если полная база только у 1% узлов

                      Представьте себе ситуацию — база (цепочка транзакций весом 100500 гигабайт) лежит в облачном сервисе с режимом дедупликации и пользуемся и вы, и я по сути дела одним файлом — мы в этом случае входим в 1% тех, кто имеет полную базу или в 99% тех кто не имеет? А если этим файлом пользуются 100 человек?

                      > а тот, кто генерит транзакцию, тоже не знает баланса кошелька, с которого списываются биткойны.

                      Тот кто генерит — вы имеете в виду тот кто отправляет? Или тот кто сгенерировал блок и включил в него эти данные? Вообще говоря, майнер должен иметь полную цепочку, так как он сильно рискует, что невалидный блок не будет принят остальной сетью. Тот, кто отправляет может иметь только свои неизрасходованные выходы.
              –9
              Можно вообще ничего не качать и использовать вебкошельки (например).
                +15
                Но это убивает идею децентрализации, в чем собственно и вопрос.
                  0
                  Здесь важно отличать хранение и использование кошелька от сбора и обработки транзакций (майнинга). Хранение кошелька локально или в облаке никак не влияет на децентрализацию. Скачивание обычным пользователем всей цепочки блоков «чтобы было» никак не влияет на децентрализацию. Угроза появится тогда, когда одна из сторон будет прозиводить более половины от всех блоков. Обычные пользователи блоки уже давно не производят.
                    0
                    Влияет, ведь идея биткоин — это именно независимость от посредников и анонимность. Не может ведь быть тысячи сервисов онлайн-кошельков, которым все доверяют? Получается опять какие то гиганты, вроде банков, гугла и MS, у которых в облаке все кошельки.
                    А они со своей стороны обяжут всех деанонимизироваться и подписывать соглашения и т.д. и т.п.
                      0
                      Для параноиков всегда есть возможность использовать локальный кошелек и локальное клиентское ПО.

                      Вероятность государственного регулирования Bitcoin (откуда как правило и берут начало подобные требования) была всегда. Но она никак не связана с потенциальной проблемой размера цепочки блоков, о которой, собственно, и написан пост.
                        +3
                        > у которых в облаке все кошельки.

                        У вас каша в голове. Кошелек я могу на локальном диске держать. Могу в облаке. Могу вам переслать. Он много не весит, а если понадобится — я себе новый сделаю. Кошелек (разумеется под паролем) вообще желательно хранить в нескольких местах для надежности.

                        А вот цепочка блоков из-за которой вы беспокоитесь — она действительно весит несколько гигабайт. Ну и что мне мешает положить ее в облако на гугль, майкрософт, яндекс и майлру? Ничего мне эти «гиганты» не смогут продиктовать — у них только моя база, а не моя свобода
                          +1
                          Биткоин — это независимость от центрального регулятора и от организаций, занимающихся переводами и подтверждающих отсутствие двойных трат, берущих за работу большой процент. А просто в наличии посредников ничего плохого нет. Если посредник облегчает жизнь за разумную плату, почему бы и не использовать его.
                  +1
                  Неделю. Я недавно с нуля проводил синхронизацию биткоина. Я больше месяца это делал. Правда я синхронизацию включал только по ночам. И то не всегда а только когда была возможность. Но все равно это было чертовски долго.
                    0
                    Я тоже в первый раз месяц качал и долго тупил почему это занимает столько времени пока не понял что скачивание блоков по какойто причине приостанавливается когда дисплей макбука выключается (НЕ спящий режим, все остальное продолжает работать и остается онлайн). Отключил выключение дисплея, поставил на минимальную яркость, и вся база скачалась за ночь.
                      0
                      Странно. А у тебя как дисплей гасился. По таймауту из настроек электропитания или по хоткею с клавы. Потому что я всегда по хоткею гасил, и у меня определенно блоки качались (я же как то синхронизировался с погашеным монитором). Может быть правда они в таком режиме качаются не на полной скорости.
                      +1
                      Так можно же торрентами скачать процентов 90-95 блокчейна, а потом на синхронизации выкачать только оставшиеся 5-10%, несравнимо быстрее получится.
                        0
                        Не для параноиков т.к. при синхронизации bitcoind верифицирует блоки на валидность (на это и уходит большая часть времени), можно быть уверенным что они настоящие, а при подмене файлом из торрента — нет.
                          0
                          скачать блокчейн «комфортным образом», после чего запустить импорт
                          -loadblock=[file]
                          большого выигрыша не добиться, но всё же должно быть быстрее.
                    –9
                    5 терабайтов это совсем не много. Даже сейчас можно дома поставить массив в 50 терабайтов за доступные для обычного человека деньги. А с течением времени это станет ещё дешевле.
                      +3
                      Абсолютно согласна, но это минимальные требования и только для 1 страны в год.
                      Но если взять транзакции всего мира, то получается что в настоящее время Биткоин не справится с задачей мировой децентрализованной валюты и все придет опять же к центральным хранилищам?
                      Или наука поднатужится и выдаст нам решение для битка, вот в чем вопрос.
                        0
                        Но если взять транзакции всего мира, то получается что в настоящее время Биткоин не справится с задачей мировой децентрализованной валюты и все придет опять же к центральным хранилищам?

                        Ну если взять прям сейчас и заменить махом, то не справится. Ну по крайней мере многие узлы, держащие «полного» клиента будут вынуждены перейти на лёгкого клиента.

                        Или наука поднатужится и выдаст нам решение для битка, вот в чем вопрос.

                        Решения есть. Самое простое — держать на узле определенную часть blockchain-а, а не весь. Распределенное хранилище.
                          0
                          Есть еще вариант (блин, забыл как он правильно называется) — удалить из базы использованные транзакции (у которых использованы все выходы) — они кроме как для истории ни для чего не нужны.
                          Это технически можно реализовать хоть каждый себе сам. Но пока это не очень актуально, и вообще-то клиент должен (не обязан, но хотелось бы) предоставлять блоки тем клиентам, у которых этих блоков еще нет.
                            0
                            Blockchain pruning — уже в заготовке, обещали в 0.9 но почему-то не сделали, ждем 0.10
                              0
                              А не подскажите, где можно об этом прочитать?
                      +3
                      1) Минимальная транзакция значительно меньше килобайта. Я бы расматривал типичную транзакцию из расчета 2 входа + 2 выхода
                      2) Существуют ограничения на размер блока и количество транзакций в блоке. Их можно потихоньку менять (это ограничения клиентов, а не протокола), но на сегодняшний день рост базы не такой значительный
                      3) Есть легкие клиенты, которые не хранят базу на локальном диске
                      4) Клиенту не обязательно иметь «у себя на диске» всю базу для совершения операций. Наличие облачных сервисов с режимом дедупликации позволяет существенно сократить «издержки» без потери «целостности» и «контроля».
                      5) Дорогостоящий майнинг — это личная проблема майнящих.

                      В общем, я бы посоветовал сперва поближе ознакомиться с предметом (есть куча тематических ресурсов), а потом уже беспокоиться.
                        0
                        1) Какой примерно размер вы бы указали?
                        2) Я попыталась экстраполировать ситуацию в будущее.
                        3) Т.е. централизация?
                        4) Т.е. централизация?
                        5) Ну и всей системы в целом — она ведь держится на майнерах.
                          +2
                          1) Это вам первое домашнее задание. Уточнить свои же предположения. Ну откройте хотя бы раз blockchain.info/!
                          2) Будущее делаем мы с вами. Как хотим — так и будет. Захотим — завтра увеличим. Разумеется, придется в этом убедить всё сообщество. Экстраполировать бесмысленно — не туда смотрите.
                          3) Не путайте децентрализованное использование и децентрализованное хранение.
                          4) Нет. Если я сегодня храню базу на своем диске и вы на своем — это нормально. Если завтра мы свои диски отдадим в дата-центр, но я буду продолжать пользоваться своим диском, а вы — своим — это же не станет централизацией? А если послезавтра дата-центр внедрит дедупликацию, которая позволит нам пользоваться данными независимо друг от друга, но в дата-центре одинаковые блоки (а они одинаковые) будут совмещены? Это не централизация. По крайней мере до того времени как таких дата-центров будет много.
                          5) И да, и нет. Майнеры нужны если есть транзакции. Не будет транзакций — никому эти майнеры не станут нужны. Было бы наивным предполагать, что «машинки для печатанья денег» (каковыми являются майнерское оборудование) будут сильно выгодными.
                            0
                            Т.е. централизация?

                            А вас не смущает тот факт, что майнят сейчас в большей степени централизовано? Один cex.io уже около 50% мощности имеет, если не больше. Реально сеть держат 2-3 организации, а домашние майнеры это уже история. Разнообразные пулы в общей сумме имеют не более 10% мощности.
                              0
                              Ну, если быть до конца честными, то пулы не на 100% «собственными мощностями» майнят — к ним цепляются как раз «домашние майнеры». Да, это получается не совсем одноранговая сеть и опять обычные пользователи попадают в зависимость от владельцев «концентраторов». Но бороться э этим нереально и вряд ли нужно.
                              cex.io (точнее уж ghash.io) имеет значительно меньше 50%
                              blockchain.info/ru/pools (хотя после последних фиксов на blockchain.info многие сервисы показывают не совсем то, что раньше что заставляет задуматься о том, что либо сейчас показывает неправильно, либо раньше — в общем, не стоит принимать на веру)
                          0
                          Альтернативный прогноз. Пока у биткоина будет больше одного центра и пока каждый из этих центров не будет производить больше половины всех блоков беспокоиться не о чем. Если вы любите умножать большие числа, предлагаю посчитать, сколько будет стоить датацентр, способный производить половину всех блоков в цепочке. Для справки: текущая вычислительная мощность сети составляет 424691.56 PFlop/s, у самого мощного суперкомпьютера — 33.86 PFlop/s.
                            0
                            а разве Flop'сы в расчёте хэшей участвуют?
                              0
                              Нет, это всего лишь для сравнения порядков.
                                +2
                                Ну и зачем эти порядки сравнивать? С тем же успехом можно общую массу сравнить…
                            0
                            В итоге оно придёт к классической брокерско — биржевой системе, когда есть отдельный вид услуги, доступ к операциям, ты заказываешь, тебе исполняют.
                              0
                              А можно смешной вопрос — сколько терабайт занимают эти пять миллиардов транзакций сейчас, в классическом виде? :)
                                0
                                Да, но что бы пользоваться Визой или Мастер Кард не нужно качать себе на жесткий диск историб 5-ти миллиардов транзакций :)

                                Хотя, вроде для работы биткоина тоже не нужно загружать всю историю транзакций.
                                0
                                А вот мне интересно, майнеры ведь, подбирая числа с красивыми хешами, генерят битки. Одновременно, они же обеспечиваю работоспособность сети, создавая новые блоки, в которых прописываются новые транзакции (если я ничего не путаю). Количество битков ограничено, и рано или поздно майнить уже будет нечего. Означает ли это, что рано или поздно биткоин загнется? Я сам в теме не особо разбираюсь, так что интересно услышать чье-то мнение.
                                  +1
                                  Ребят, ну серьезно, валюте уже 5 лет, google и yandex у всех есть, в любом FAQ по битке есть ответ на этот вопрос. Вот что будут делать майнеры.
                                    0
                                    Про комиссии понятно. Вопрос в том, возможна ли генерация блока без создания новых биткоинов.
                                      0
                                      Стоп. Есть транзакция — перевод средств, а есть транзакция — генерация монет.
                                      Майнеры нужны не только для генерации монет, но и для перевода средств. Они могут брать свою комиссию, тогда работоспособности сети будет выгодно поддерживать.
                                        +1
                                        О, спасибо, что разъяснили. Буду знать.
                                    0
                                    Количество битков ограничено, а вот количество блоков — нет. Премия за найденный блок уменьшается в 2 раза каждые 210000 блоков. В 1ю эру было 50 биткойнов за блок, сейчас 2я, уже 25 биткойнов за блок. К 33й эре, когда премия будет .00000001 — придется увеличивать точность деления, если конечно биткойны протянут до 2136 года :)
                                    +1
                                    Ну, транзакции размером не 1 кбайт, а байт 200-250. При 250 байт это будет 1.25Тб, что вполне осилить обычному пользователю.
                                    Потом, никто не отменяет распределенное хранение или частичное использование транзакции. Уже сейчас есть легковесные клиенты, которые не качают все историю (хотя использовать их данное время я бы не рекомендовал).

                                    Я думаю, IT-мир придумает, что можно сделать с такой проблемой лучше и быстрее, чем средний чиновник с традиционной валютой.
                                      0
                                      Есть еще издержки на индексирование миллиардов записей, но в нормализованной бд 5 млрд транзакций в пару тер влезет.
                                        0
                                        При 250 байт это будет 1.25Тб, что вполне осилить обычному пользователю.

                                        Очень оптимистично. Нет, если поставить такую цель, то какой-то ценой можно. Но если просто покупать комп общего назначения, то такие объёмы могут быть и не нужны с развитием онлайн-контента и облак. Я уж молчу про мобильные устройства.
                                        0
                                        Эта проблема была предсказана еще в 2011-ом году.
                                          0
                                          Bitcoin кошелек это древовидный лог событий, В эту структуру не меняют, в нее только дописывают. Мне видеться, что ствол и старые ветки лога, можно сжать или удалить или заменить на хеш.

                                          Конечно древовиный лог событий это сложная структура, но когда кошелек вырастит до 5TB, то эта проблема будет решена для десктопных и мобильных приложений
                                            0
                                            Я не шибко знаток того как всё устроено на программном уровне, поэтому могу показаться голословным, но в одном из предыдущих обсуждений этой темы кто-то тоже уже отвечал на данный вопрос.

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

                                            Конечно, при таком подходе возникают различные вопросы, например про то, что это своего рода централизация, так как у узлов, которые хранят всю историю в теории будет возможность как-то скомпрометировать основную ветвь и т.п. Но, думаю, всё зависит от того как эту фишку реализуют на программном уровне. Например, если вообще во всей системе перестать принимать во внимание транзакции старше какого-то времени… Ну или что-то в этом духе. Простите, голова забита сейчас другим, не помню как точно предлагалось это решать.
                                              0
                                              Исключать слишком старые транзакции нельзя, так как кошельки есть баланс входов и выходов, т.е. состоят из этих самых транзакций.
                                                0
                                                «кошельки есть баланс входов и выходов»
                                                «состоят из этих самых транзакций»

                                                Кошелёк это пара случайных ключей. Что означают эти ваши фразы? Объясните, пожалуйста, «на пальцах».
                                                  0
                                                  Кошелек — это пара ключей и записанный в базе транзакций баланс. Грубо говоря создав ключи вы получаете пустой кошелек, потом переводите на него денег (или получаете награду за генерацию блока) и (если я правильно понял мысль), если отрезать старые транзакции, включая ту, которой вы переводили на кошелек деньги — то как вы проверите, что они там есть?
                                                    0
                                                    A +10
                                                    A -5
                                                    A +20
                                                    можно заменить на
                                                    А +25
                                                      +1
                                                      Эти +10, -5 и +20 — это транзакции в/из других адресов. Если замените А на сразу +25, то во по всем трем другим адресам придется также делать изменения их входов и выходов, так как иначе балансы разойдутся. Если даже это провести, то следы денег исчезнут, и вся прелесть открытого Blockchain также пропадет.

                                                      Доведу до абсурда: возьмем дату-время, например 1 января 2015-го 00:00:00 и сбросим все существующие кошельки в текущие состояния. Сотрем всю предыдущую историю и скажем — вот по этим адресам эти суммы и до этого ничего не было, объявим этот момент новым Genesis. Теперь никакой истории не сохранилось вообще, а кроме того вся криптография полетит к чертям. В принципе это наверное даже неплохая идея — стереть всю историю, а snapshot как-то криптографически подписать и вынести из blockchain, чтобы можно было при желании обращаться к истории и при этом быть уверенным, что она не подделана. Если я сейчас не глупость написал. Короче вариантов больше, чем один. Сатоши, кстати в своей работе упомянул теоретический способ здорово ужать Blockchain, но я не помню как именно.

                                                        0
                                                        А нужны ли нам «следы», скажем, пятилетней давности? Ну так, в принципе?
                                                          0
                                                          обязательно нужны, другой вопрос нужны ли они на каждом смартфоне с кошельком.
                                                          0
                                                          А +25 (+хеш старого лога). Будет оригинальный лог событий и компактная версия, необходимая и достаточная для проверки подлинности новых транзакций, перевода и принятия платежей. Компактная версия не отрицает существование оригинального полного лога. Если для перевода денег достаточно десятка подтверждений, то также можно подтверждать, тождественность коротких «печатей» длинных логов.

                                                          В Биткоин перевод занимает 10 минут. У операций перевода есть дата. Можно посчитать, баланс каждого кошелька на 1 марта 2014 года и записать все балансы кошельков на 1 мара 2014 года и оставить транзакции после 1 мара 2014 года и если эту информацию подпишут 100 или 100000 кошельков, то с большой вероятностью можно полагаться на сжатый таким образом лог событий.

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

                                                            Можно вообще хранить публичные ключи 100 или 10000 кошельков, которые могут подтверждать подлинность сжатых логов.
                                                            0
                                                            Вспомнил, Satoshi предлагал дропнуть fully spent адреса, сейчас так:

                                                            There have been 25,397,303 unique public key addresses ever referenced in the blockchain. Of these some 22,982,911 of those addressees have a zero balance and have been completely spent. Likely just used for intermediate purposes. That leaves just 2,41,392 unique public key addresses with a non-zero balance.
                                                  0
                                                  Объемы вырастут значительно у накопителей, но это не суть, многие будут использовать легкие кошельки на мбильных устройствах, подключаемых, например, к базе толстого кошелька на своем домашнем компьютере. Плюс базу могут почистить от уже ставших лишними данными.
                                                    0
                                                    Что-то мне подсказывает, что будут появляться криптовалюты новых поколений. И недостатки старых будут в них устраняться, в том числе всем известные «фичи» биткойна. Ключевой вопрос — а что будет происходить со старыми криптовалютами, в частности с биткойном. Возможно они станут аналогом золотого запаса, в них будут храниться гигантские суммы, при этом кол-во самих транзакций будет уменьшаться и с легкостью будет покрыто прогрессом.
                                                      0
                                                      Ничто особо не мешает вносить изменения и непосредственно в биткоин, он разработан так, что возможно включать практически любые разумные изменения (с которыми будет согласно большинство в сети).
                                                      0
                                                      Не забывайте, что база (список транзакций) по своей сути инкрементальная. Ничто не мешает в заданные промежутки времени делать срез. Т.е. клиенту-параноику который не доверяет никаким облакам необязательно хранить 5Tb цепочки, можно пройти всю цепочку расчитать балансы всех ненулевых кошельков состоянием на «после тысячного блока» и получить базу 10gb всех непустых кошельков с балансами. И дальше хранить уже опять инкрементально цепочку. Опять накопится много данных — опять пересчитать срез.

                                                      А что касается вообще разхмеров базы, то как мне кажется не то что 5Tb даже 5 петабайт хранилища не велика затрата на возможность вести учёт всех переводов огромной страны. Только нужно понимать, что мозможности предоставляемыми ткими электронными переводмаи по сранвению с банковскими заставят количество транзакций увеличиться во много-много раз
                                                        +1
                                                        Да в самой оригинальной записке Сатоси уже предусмотрено, что дерево транзакций будет разрастаться и его не обязательно будет хранить целиком. 7-й пункт.
                                                        bitcoin.org/bitcoin.pdf
                                                          0
                                                          Когда дойдет до такого — тысячу раз успеют оптимизировать, чтобы хранить только выходы. Тоже много, но уже меньше.
                                                            0
                                                            Паника паника, разработчики биткойна идиоты которые не задумываются над масштабируемостью!

                                                            От себя рекомендую вместо услышанных дилетантских мнений ориентироваться на официальную документацию и знающих людей: en.bitcoin.it/wiki/Scalability
                                                              +1
                                                              А нет какого-нибудь лёгкого консольного сервиса, чтобы запустить его на роутере и он играл там роль клиента bitcoin (без всяких кошельков — просто скачивал и хранил базу транзакций)? Т.е. не «где-то в облаке», а на собственноручно контролируемом хосте?
                                                              Ну и в пару — десктопный клиент-кошелёк, который умел бы жить не только на локальной базе, но и подключаться и пользоваться к своей «хранилке»?
                                                                0
                                                                Самый обычный клиент, будучи запущенным «где-нибудь» на «собственноручно контролируемом хосте» как раз и будет этим заниматься.
                                                                Но клиенту на вашем локальном компьютере либо придется «верить», что никто между ним и тем клиентом не вклинился, либо перепроверять.
                                                                Причем помните, что база — это не только блоки, но и индексы для быстрой работы с этой базой. Как себя будут вести два клиента, один из которых пишет базу и обновляет индексы, а второй — мгновенно должен эту ситуацию обработать и свою оперативку «привести в соответствие»?
                                                                  0
                                                                  Ну как мгновенно… Биткойны же не в реальном времени работают, а по заданному количеству блоков в час.
                                                                  Синхронизировать пару «хранилище блоков» и «реальный клиент» — не самая сложная задача. Вопрос доверия тоже не стоит.
                                                                  Вопрос был в том, нет ли вдруг уже такой реализации.

                                                              Only users with full accounts can post comments. Log in, please.