Comments 35
Вы под GNU или под какой другой лицензией публикуете код? А то так не понятно насколько свободно его можно использовать.
+2
UFO just landed and posted this here
Вы код видели? Это какая-то поделка начинающего изучать python, внутри нет ничего полезного, ну кроме примеров, как не надо делать.
+3
Я вот код не смотрел, честно скажу… Но если человек сам разобрал побайтно файл блокчейна — это реально круто. Ну просто потому, что он вообще-то во многом выглядит как шум.
-3
Не вижу ничего крутого, формат известен, есть куча готовых библиотек, в том числе и на python. Еще один разобрал, ну Ok, зачем же такой кривой код показывать тут, на Хабре?
+3
Не могли бы вы привести примеры существующих готовых библиотек?
0
«основная» и одна из старых github.com/petertodd/python-bitcoinlib
а остальные это типа github.com/ofek/bit с «простым» дизайном
а остальные это типа github.com/ofek/bit с «простым» дизайном
0
как при помощи этих библиотек получить список хэшей всех транзакций?
0
мне за вас читать документацию к ним?
0
Ты троль местный чтоли?
-2
Ваши умственные способности ясны, можете дальше не продолжать.
0
Не хотел никого обидеть. Дело в том, что при помощи существующих библиотек (в том числе и тех, что вы так любезно подсказали) невозможно получить такие очень полезные вещи как: список всех хэшей транзакций, список всех использованных адресов и так далее.
0
Все там можно получить, изучайте документацию и примеры.
0
Не то, чтобы я пытаюсь спорить. Утверждаю, что эти библиотеки не обладают указанными функциями.
0
from bitcoin.core import b2lx, CBlock
cblock = CBlock.deserialize(bytes.fromhex(hex_rawblock))
for tx in cblock.vtx:
print(b2lx(tx.GetTxid()))
0
UFO just landed and posted this here
Для ленивых вставляю случайный кусок кода, он весь примерно такой — просто сплошняком идет вот такой вот столбец
for j in range(1,c):
b = f.read(1)
b = b.hex().upper()
tmpHex = b + tmpHex
scriptLength = int(tmpHex,16)
tmpHex = tmpHex + tmpB
RawTX = RawTX + reverse(tmpHex)
tmpHex = ''
for j in range(scriptLength):
b = f.read(1)
b = b.hex().upper()
tmpHex = tmpHex + b
resList.append('Input script = ' + tmpHex)
RawTX = RawTX + tmpHex
tmpHex = ''
for j in range(4):
b = f.read(1)
b = b.hex().upper()
tmpHex = tmpHex + b
resList.append('sequenceNumber = ' + tmpHex)
RawTX = RawTX + tmpHex
+1
Может это ради скорости. Мне тоже приходилось разворачивать функции так как их вызов замедлял исполнение скрипта.
0
Это является чем-то необычным? Код безупречно выполняет свою функцию. В чём проблема?
0
Возможно, я не так понял ваш пост, поверьте, не хотел вас обидеть, но я его открыл, чтобы почитать код, и понять, как внутри устроен блокчейн. И есть такая телега (не уверен, что помню дословно), что типа код это не только инструкция машине, как получить искомый результат, но еще и способ коммуникации с абстрактными коллегами. И вторая функция подчас важнее, особенно, когда вы работаете в коллективе с реальными людьми.
Чтобы из этого кода мне понять, как устроен блокчейн, какие в его формате элементы, как они между собой взаимосвязаны, мне надо потратить неделю по вечерам, причем большую работу проделаю я, читая спецификацию и понимая, как ваш код работает (утрирую).
Если интересны практические рекомендации: стоило бы код как то отрефачить чтобы убрать эти повторения, функции выделить, комментарии написать, выделить какие-то логические сущности. Имена тоже можно было бы дать человеческие переменным, это вообще фи, вы же с людьми кодом делитесь.
А так, код выглядит, как парсер, сегенеренный каким-нибудь ANTLR.
Чтобы из этого кода мне понять, как устроен блокчейн, какие в его формате элементы, как они между собой взаимосвязаны, мне надо потратить неделю по вечерам, причем большую работу проделаю я, читая спецификацию и понимая, как ваш код работает (утрирую).
Если интересны практические рекомендации: стоило бы код как то отрефачить чтобы убрать эти повторения, функции выделить, комментарии написать, выделить какие-то логические сущности. Имена тоже можно было бы дать человеческие переменным, это вообще фи, вы же с людьми кодом делитесь.
А так, код выглядит, как парсер, сегенеренный каким-нибудь ANTLR.
0
Вот, например, у вас кусок кода
с разными параметрами повторяется мильон раз. Я не совсем понимаю смысл этой части кода, и оставим в стороне то, что у вы переменную переприсваиваете, но почему бы не вынести это в функцию? Вы тогда могли бы уменшить код строчек на 20 и читать его было бы проще
for j in range(4):
b = f.read(1)
b = b.hex().upper()
tmpHex = b + tmpHex
с разными параметрами повторяется мильон раз. Я не совсем понимаю смысл этой части кода, и оставим в стороне то, что у вы переменную переприсваиваете, но почему бы не вынести это в функцию? Вы тогда могли бы уменшить код строчек на 20 и читать его было бы проще
0
Всё зависит от цели, которой придерживается юзер, используя мой парсер. В большинстве случаев, достаточно того, что есть. Или у вас есть идеи, как сделать код более «массовым»?
0
Да, вот только если парсер представляется на суд общественности, то ожидается, что разработчик позаботился о том, чтобы код был доступен для восприятия общественности. Я по крайней мере ожидал такого.
0
Все существующие парсеры не имеют поддержки транзакций с Witness флагом.
0
Это лучший инструмент в части "что такое блокчейн". Токсичное сообщество здесь, но это не точно)
0
Sign up to leave a comment.
Парсер Блокчейна в 300 строчек на Python