Author

Topic: скрипт для сравнения размера блокчейна (Read 288 times)

sr. member
Activity: 770
Merit: 305
С другой стороны, эта технология позволяет более эффективно увеличить максимальное
число транзакций в одном блоке, чем тривиальное увеличение максимального размера
блока, при сохранении консенсуса со старыми Bitcoin-клиентами.
Очень коряво сказано. Вообще-то сегвит-транзакция больше по размеру, но хитровыебанный
трюк действительно позволяет сохранять консенсус со старыми версиями.

Замечу, что, по-моему, компрессия Bitcoin-транзакции почти бессмысленна, так как основная
её часть - это адрес (20 байт) и подпись (64 байта), которые имеют высокую энтропию и, как
результат, практически несжимаемы, то есть эффективность компрессии будет в большинстве
случаев весьма низкой.
Верно, но так как некоторые адреса и публичные ключи к ним используются в блокчейне многократно,
то сэкономить можно. Но это копейки, не решающие принципиально ничего. Тем более,
что в наше время производительность дороже дискового пространства.

Quote
Я полагаю, что, если бы технология SegWit была внедрена с GENESIS-блока, размер блокчейна
Bitcoin был бы больше при условии, что пользователи отправляли SegWit-транзакции. Если же в
блокчейне были бы только, так сказать, Legacy-транзакции, то да, размер блочейна остался бы таким же.
Сегвит имеет все-таки "корявости", связанные именно с обратной совместимостью.
Использовать его в чистом виде начиная с генезиса не стоит - можно ещё более оптимально
было бы сделать. Вообще, речь идет о "порядке величин". Я очередной раз напоминаю,
нет смысла в компрессии, если профит составит 5%. А вот если вдвое или вдесятеро - то имеет.
legendary
Activity: 2618
Merit: 2304
Пуркуа бы и не па. Но в чём состоит конечный смысл этого исследования?
смысла нет, но я должен убедить комиссию на защите, что таким образом segwit сокращает размер блокчейна.

Нет, Segregated Witness не сокращает размер блокчейна. Напротив, сейчас некоторые блоки Bitcoin с большим количеством Segwit-транзакций достигают свыше 2 мегабайт. С другой стороны, эта технология позволяет более эффективно увеличить максимальное число транзакций в одном блоке, чем тривиальное увеличение максимального размера блока, при сохранении консенсуса со старыми Bitcoin-клиентами.



Quote
Если что я понимаю что при внедрении segwit старые ScriptSig удаляться не будут из блокчейна (наверное), поэтому точнее будет сказать что суть данного пункта исследования ответить на вопрос, каким бы был размер блокчейна, если бы с самого начала использовался segwit.
Что такое "размер блокчейна"? Сумма всех блоков в сериализованном виде?
Ну так сериализовать их можно по-разному. Можно специализированные варианты компрессии сделать
и сэкономить пару-тройку-пяток-и-больше байт на каждой транзакции.

Ответ: размер блокчейна был бы такой же. По порядку величин.

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

Насколько я знаю, нынешний максимальный размер блока Bitcoin с внедрённой технологией SegWit (при броадкастинге в сети) теоретически может достигать 4 мегабайта.

Замечу, что, по-моему, комрессия Bitcoin-транзакции почти бессмысленна, так как основная её часть - это адрес (20 байт) и подпись (64 байта), которые имеют высокую энтропию и, как результат, практически не сжимаемы, то есть эффективность компрессии будет в большинстве случаев весьма низкой.
sr. member
Activity: 770
Merit: 305
Но я же могу при поднятии полного узла не скачивать witness, ведь свидетели вне блокчейна хранятся?
Какие в пизду свидетели? Иеговы?
Сегвит - это в первую очередь красивое название технологии.
Не пытайтесь его расшифровать - в названии суть не закодирована.

Свидетели как раз хранятся в блокчейне. Если вашими словами рассуждать.
Это если вы свежий клиент поставите. А если старый - то конечно где-то еще.

Quote
Если что я понимаю что при внедрении segwit старые ScriptSig удаляться не будут из блокчейна (наверное), поэтому точнее будет сказать что суть данного пункта исследования ответить на вопрос, каким бы был размер блокчейна, если бы с самого начала использовался segwit.
Что такое "размер блокчейна"? Сумма всех блоков в сериализованном виде?
Ну так сериализовать их можно по-разному. Можно специализированные варианты компрессии сделать
и сэкономить пару-тройку-пяток-и-больше байт на каждой транзакции.

Ответ: размер блокчейна был бы такой же. По порядку величин. Что такое О-большое у вас в семинарии
проходят?

Quote
1) пройдется по всем транзакциям и запишет все scryptSig в сериализованном виде
2) посчитает эти подписи из расчета символ hex = 4 бита
3) вычтет из размера блокчейна (bitcoin-cli getblockchaininfo size_on_disk) подсчитанный объем всех подписей

Если хотите - могу вам помочь. Посчитать эти числа от генезиса до заданного блока
чтобы сравнить - получилось ли у нас с вами одно и то же или кто-то налажал.
Господи, какой же херней в вузах занимаются, стыдобище.
Хотя, стоит отметить, этой херней занимаются не только у нас, а везде. И всегда.
В том числе и я занимался, да.
legendary
Activity: 2317
Merit: 2318
Но я же могу при поднятии полного узла не скачивать witness,
Можешь. Новые версии Bitcoin Core, поддерживающие SegWit, отдают старым клиентам (до версии 0.13.0) SegWit-транзакции с вырезанным witness. Но в этом случае ты не сможешь верифицировать SegWit-транзакции и не сможешь получать нативные SegWit-транзакции (те, которые с адресами в формате Bech32), и таким образом не будешь являться полноценным участником сети.

Quote
ведь свидетели вне блокчейна хранятся?
Я уже выше написал: witness хранится и передаётся внутри транзакции. Где ж тогда он может храниться, если не в блокчейне?

Quote
Если что я понимаю что при внедрении segwit старые ScriptSig удаляться не будут из блокчейна (наверное),
Верно.

Quote
поэтому точнее будет сказать что суть данного пункта исследования ответить на вопрос, каким бы был размер блокчейна, если бы с самого начала использовался segwit.
Неверно. Поскольку witness находится внутри транзакций, а значит в блокчейне, то его удаление не соответствует реальности.

Quote
я в гуманитарном университете (рггу), поэтому прокатит.
Тогда другое дело, тогда твоя точка зрения, что witness хранится за пределами блокчейна где-то в астрале, имеет право на существование. Если что, можешь заявить: я - художник, я так вижу. Просто любопытно, что за специальность у тебя?

Quote
По какой теме?
Тема моего диплома "Разработка и исследование эффективности оптимального алгоритма распознавания двух классов случайных процессов по признаку модуля комплексного коэффициента корреляции".
newbie
Activity: 9
Merit: 1
Не, ну если ты учишься где-нибудь в духовной семинарии, то прокатит.
Почти) я в гуманитарном университете (рггу), поэтому прокатит. Я когда на предзащите дипломный форк биткоина показал (были изменены иконки, название монеты, сложность майнинга), они были в восторге и уговоривали работу на конкурс отправить ахах. Поэтому тут я не переживаю, хотя это грустно.

Quote
Я в своё время защищал диплом в техническом ВУЗе, где комиссия разбиралась в предметной области не хуже меня и такой подлог бы не прокатил.
По какой теме?
newbie
Activity: 9
Merit: 1
Понимаешь, ScriptSig не удаляется, а перемещается в другое место, но всё в пределах той же транзакции

Но я же могу при поднятии полного узла не скачивать witness, ведь свидетели вне блокчейна хранятся? Если что я понимаю что при внедрении segwit старые ScriptSig удаляться не будут из блокчейна (наверное), поэтому точнее будет сказать что суть данного пункта исследования ответить на вопрос, каким бы был размер блокчейна, если бы с самого начала использовался segwit.
legendary
Activity: 2317
Merit: 2318
смысла нет, но я должен убедить комиссию на защите, что таким образом segwit сокращает размер блокчейна.

SegWit - это перемещение содержимого ScriptSig из входа транзакции в отдельную структуру данных внутри той же транзакции. Эта новая структура данных называется witness. Принципиальная разница между старыми транзакциями и SegWit-транзакциями, в том, что в старых транзакциях ScriptSig  принимает участие в формировании идентификатора транзакции txid, а в SegWit-транзакциях witness не принимает участие в формировании идентификатора транзакции txid.

Понимаешь, ScriptSig не удаляется, а перемещается в другое место, но всё в пределах той же транзакции. А ты, удаляя его, пытаешься доказать то, что не соответствует реальному принципу работы Биткойна. Ты пытаешься ввести в заблуждение комиссию? Не, ну если ты учишься где-нибудь в духовной семинарии, то прокатит. Я в своё время защищал диплом в техническом ВУЗе, где комиссия разбиралась в предметной области не хуже меня и такой подлог бы не прокатил.

Quote
Не понял, имеешь ввиду скрипт для блокировки? вроде не обязательно, зачем ему такм хранить если вход содержит ссылку на выход со scryptPubKey

scriptSig P2PKH-входа содержит подпись транзакции и публичный ключ, хеш которого находится в выходе, который тратит этот вход. Если для тебя это новость, то тебе следует сначала изучить скрипты стандартных транзакций, ты как-никак диплом на эту тему пишешь.
newbie
Activity: 9
Merit: 1
Пуркуа бы и не па. Но в чём состоит конечный смысл этого исследования?
смысла нет, но я должен убедить комиссию на защите, что таким образом segwit сокращает размер блокчейна.

Во-первых, в поле scriptSig хранится не только лишь подпись транзакций, но ещё и публичный ключ.
Не понял, имеешь ввиду скрипт для блокировки? вроде не обязательно, зачем ему такм хранить если вход содержит ссылку на выход со scryptPubKey

Во-вторых, в SegWit-входах подпись транзакций хранится не в поле scriptSig, а в поле witness.
Сам понимаю бесполезность такого исследования из за данного факта, по хорошему еще размер скрипта из свидетелей доставать, но это сложно для меня
legendary
Activity: 2317
Merit: 2318
для дипломной работы собираюсь оценить как повлияет удаление данных о подписи транзакции на размер текущего блокчейна биткоина,
Пуркуа бы и не па. Но в чём состоит конечный смысл этого исследования?

Quote
для этого напишу скрипт на питоне (python-bitcoinlib) который
1) пройдется по всем транзакциям и запишет все scriptSig в сериализованном виде
Во-первых, в поле scriptSig хранится не только лишь подпись транзакций, но ещё и публичный ключ.
Во-вторых, в SegWit-входах подпись транзакций хранится не в поле scriptSig, а в поле witness.

Quote
2) переведет эти подписи из расчета символ hex = 4 бита
3) вычтет из размера папки с блоками (.bitcoin/blocks) подсчитанный объем всех подписей
Понимаю, что это будут грубые расчеты, но насколько они будут правдоподобны? есть ли у вас предложения как проще решить поставленную задачу или повысить точность расчетов

Точнее будет так:
1. Взять сериализованную транзакцию, посчитать её размер.
2. Вырезать из неё подписи транзакций, посчитать получившийся размер.
3. Вычесть размер из п.2 из размера из п.1.
4. Повторить действия для следующей транзакции, результат прибавить к результату из п.3
и т. д.

Но, повторюсь, нафига всё это надо вообще? Каков практический смысл?
newbie
Activity: 9
Merit: 1
для дипломной работы собираюсь оценить как повлияет удаление данных о подписи транзакции на размер текущего блокчейна биткоина, для этого напишу скрипт на питоне (python-bitcoinlib) который
1) пройдется по всем транзакциям и запишет все scryptSig в сериализованном виде
2) посчитает эти подписи из расчета символ hex = 4 бита
3) вычтет из размера блокчейна (bitcoin-cli getblockchaininfo size_on_disk) подсчитанный объем всех подписей
Понимаю, что это будут грубые расчеты, но насколько они будут правдоподобны? есть ли у вас предложения как проще решить поставленную задачу или повысить точность расчетов
Еще интересует как получить актуальный размер блокчейна, так как bitcoin-cli getblockchaininfo size_on_disk видимо возвращает размер папки с блоками, а не размер сериализованных блоков
Jump to: