Некоторые размышления по поводу размера blockchain
Допустим, что на планете будет 10 миллиардов людей (к середине 21-го века).
Это вполне в рамках прогноза ООН
https://www.un.org/esa/population/publications/longrange2/WorldPop2300final.pdfКаждому человеку нужно несколько номеров счетов для разных нужд.
Сколько именно - можно прикинуть, посмотрев на типовой
план счетов бухгалтерского учетапусть 100 штук на человека.
На каждом счете может лежать какая-то сумма денег, которая займет 8 байтов
(21 000 000 биткоинов по 100 000 000 частей -> =LOG(21000000*100000000;2) =50,8993107512 битов >7 байтов).
значит, всего нужно места как минимум (без учета индексов и прочей вспомогательной информации)
8 TBпри таком подсчете учтено, что не нужно хранить старые транзакции, если деньги из них потом полностью были использованы в новых транзакциях.
Можно посчитать по другому - пронумеровать всех людей (надо 33 бита. 4 байта не хватит, поэтому 8 байт),
и для каждой монеты отметить кому она принадлежит - это менее экономный способ хранения чем предыдущий.
---
Что по этому поводу думают западные коллеги?
http://bitcoinforums.net/threads/the-blockchain-a-blessing-or-a-flaw.68/они подходят с практической стороны, исследуя текущую реализацию. 126MB of actual data for 50,000 people - это по 2520 байт на человека.
если на счет по 8 байт, то 315 счетов на человека (т.е. текущий используемый вариант хранения примерно в трое хуже одного из моих)
в расчете на 7 миллиардов людей они получили размер базы = almost 18 terabytes (что сравнимо по порядку величин с моим расчетом)
---
Проблема ограничения на размер одного блока в 1 мегабайт (там же обсуждена)
дело в том, что количество блоков в сутки = 6 * 24 часа (каждые 10 минут) => ограничено общее количество возможных транзакций
---
Проблема пропускной способности каналов связи
it would also be impossible for most people to download such a large blockchain
---
Проблема уменьшения времени проверки цепочки
http://bitcoinmedia.com/fat-blockchain/Blocks take time to be checked for correctness when we download then.
That is why the blockchain is slow. Not because downloading blocks takes time.
Downloading the entire blockchain can be done in a matter of minutes on a good internet connection.
It is the checking that takes time.
---
Английская ветка с прогнозом объема цепочки до конца 2012 года:
https://bitcointalksearch.org/topic/blockchain-size-versus-time-90871(size of both the blk00001.dat plus blkindex.dat combined)
Еще один график на ту же тему:
https://blockchain.info/charts/blocks-size?timespan=1year&showDataPoints=false&daysAverageString=1&show_header=true&scale=0&address=---
некоторые пути уменьшения размера цепочки на диске приведены здесь:
http://bitcoin.stackexchange.com/questions/478/how-do-i-reduce-the-size-of-the-block-chain-data-on-my-machine(ничего особенного - хранение только части транзакций,
вынесение проверки на специальный сервер, которому прийдется доверять)
---
Что меня удивляет, так это то, почему никто не обсуждает,
сколько оперативной памяти требуется для быстрой обработки базы данных такого размера.
Вот тут говорят про гиигабайтные блоки в цепочке (и как следствие в оперативной памяти):
http://bitcoin.stackexchange.com/questions/2798/are-there-any-studies-into-the-size-of-the-blockchain-scaling-over-timeно как уже выше упоминалось, сделали ограничение по размеру в
1 мегабайт---
Если это всё все и так знают, зачем нужна эта ветка обсуждения?
- можно обсудить параллельные алгоритмы проверки цепочки, которые бы сокращали время необходимое для её полной проверки
- можно обсудить способы кодирования транзакций на диске с целью уменьшения размера цепочки на диске
- можно обсудить способы удаления транзакций, монеты из которых были использованы позднее