Bitcoin Forum
November 17, 2024, 01:47:32 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: скрипт для сравнения размера блокчейна  (Read 287 times)
pifdec (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 1


View Profile
May 31, 2019, 08:57:23 PM
Last edit: May 31, 2019, 09:31:43 PM by pifdec
 #1

для дипломной работы собираюсь оценить как повлияет удаление данных о подписи транзакции на размер текущего блокчейна биткоина, для этого напишу скрипт на питоне (python-bitcoinlib) который
1) пройдется по всем транзакциям и запишет все scryptSig в сериализованном виде
2) посчитает эти подписи из расчета символ hex = 4 бита
3) вычтет из размера блокчейна (bitcoin-cli getblockchaininfo size_on_disk) подсчитанный объем всех подписей
Понимаю, что это будут грубые расчеты, но насколько они будут правдоподобны? есть ли у вас предложения как проще решить поставленную задачу или повысить точность расчетов
Еще интересует как получить актуальный размер блокчейна, так как bitcoin-cli getblockchaininfo size_on_disk видимо возвращает размер папки с блоками, а не размер сериализованных блоков
A-Bolt
Legendary
*
Offline Offline

Activity: 2335
Merit: 2384


View Profile
May 31, 2019, 09:53:54 PM
 #2

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

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

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

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

Но, повторюсь, нафига всё это надо вообще? Каков практический смысл?
pifdec (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 1


View Profile
May 31, 2019, 10:09:38 PM
 #3

Пуркуа бы и не па. Но в чём состоит конечный смысл этого исследования?
смысла нет, но я должен убедить комиссию на защите, что таким образом segwit сокращает размер блокчейна.

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

Во-вторых, в SegWit-входах подпись транзакций хранится не в поле scriptSig, а в поле witness.
Сам понимаю бесполезность такого исследования из за данного факта, по хорошему еще размер скрипта из свидетелей доставать, но это сложно для меня
A-Bolt
Legendary
*
Offline Offline

Activity: 2335
Merit: 2384


View Profile
June 01, 2019, 11:20:34 AM
 #4

смысла нет, но я должен убедить комиссию на защите, что таким образом segwit сокращает размер блокчейна.

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

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

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

scriptSig P2PKH-входа содержит подпись транзакции и публичный ключ, хеш которого находится в выходе, который тратит этот вход. Если для тебя это новость, то тебе следует сначала изучить скрипты стандартных транзакций, ты как-никак диплом на эту тему пишешь.
pifdec (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 1


View Profile
June 01, 2019, 02:02:58 PM
 #5

Понимаешь, ScriptSig не удаляется, а перемещается в другое место, но всё в пределах той же транзакции

Но я же могу при поднятии полного узла не скачивать witness, ведь свидетели вне блокчейна хранятся? Если что я понимаю что при внедрении segwit старые ScriptSig удаляться не будут из блокчейна (наверное), поэтому точнее будет сказать что суть данного пункта исследования ответить на вопрос, каким бы был размер блокчейна, если бы с самого начала использовался segwit.
pifdec (OP)
Newbie
*
Offline Offline

Activity: 9
Merit: 1


View Profile
June 01, 2019, 02:23:45 PM
 #6

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

Quote
Я в своё время защищал диплом в техническом ВУЗе, где комиссия разбиралась в предметной области не хуже меня и такой подлог бы не прокатил.
По какой теме?
A-Bolt
Legendary
*
Offline Offline

Activity: 2335
Merit: 2384


View Profile
June 01, 2019, 03:38:59 PM
 #7

Но я же могу при поднятии полного узла не скачивать witness,
Можешь. Новые версии Bitcoin Core, поддерживающие SegWit, отдают старым клиентам (до версии 0.13.0) SegWit-транзакции с вырезанным witness. Но в этом случае ты не сможешь верифицировать SegWit-транзакции и не сможешь получать нативные SegWit-транзакции (те, которые с адресами в формате Bech32), и таким образом не будешь являться полноценным участником сети.

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

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

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

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

Quote
По какой теме?
Тема моего диплома "Разработка и исследование эффективности оптимального алгоритма распознавания двух классов случайных процессов по признаку модуля комплексного коэффициента корреляции".
amaclin1
Sr. Member
****
Offline Offline

Activity: 938
Merit: 367


View Profile
June 01, 2019, 08:44:19 PM
 #8

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

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

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

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

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

Если хотите - могу вам помочь. Посчитать эти числа от генезиса до заданного блока
чтобы сравнить - получилось ли у нас с вами одно и то же или кто-то налажал.
Господи, какой же херней в вузах занимаются, стыдобище.
Хотя, стоит отметить, этой херней занимаются не только у нас, а везде. И всегда.
В том числе и я занимался, да.
Coin-1
Legendary
*
Offline Offline

Activity: 2632
Merit: 2304



View Profile
June 07, 2019, 03:12:38 AM
 #9

Пуркуа бы и не па. Но в чём состоит конечный смысл этого исследования?
смысла нет, но я должен убедить комиссию на защите, что таким образом segwit сокращает размер блокчейна.

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



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

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

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

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

Замечу, что, по-моему, комрессия Bitcoin-транзакции почти бессмысленна, так как основная её часть - это адрес (20 байт) и подпись (64 байта), которые имеют высокую энтропию и, как результат, практически не сжимаемы, то есть эффективность компрессии будет в большинстве случаев весьма низкой.
amaclin1
Sr. Member
****
Offline Offline

Activity: 938
Merit: 367


View Profile
June 07, 2019, 03:56:55 AM
 #10

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

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

Quote
Я полагаю, что, если бы технология SegWit была внедрена с GENESIS-блока, размер блокчейна
Bitcoin был бы больше при условии, что пользователи отправляли SegWit-транзакции. Если же в
блокчейне были бы только, так сказать, Legacy-транзакции, то да, размер блочейна остался бы таким же.
Сегвит имеет все-таки "корявости", связанные именно с обратной совместимостью.
Использовать его в чистом виде начиная с генезиса не стоит - можно ещё более оптимально
было бы сделать. Вообще, речь идет о "порядке величин". Я очередной раз напоминаю,
нет смысла в компрессии, если профит составит 5%. А вот если вдвое или вдесятеро - то имеет.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!