Information Security
Python
Programming
Cryptocurrencies
Comments 34
+2

Вы под GNU или под какой другой лицензией публикуете код? А то так не понятно насколько свободно его можно использовать.

UFO landed and left these words here
+3
Вы код видели? Это какая-то поделка начинающего изучать python, внутри нет ничего полезного, ну кроме примеров, как не надо делать.
-3
Я вот код не смотрел, честно скажу… Но если человек сам разобрал побайтно файл блокчейна — это реально круто. Ну просто потому, что он вообще-то во многом выглядит как шум.
+3
Не вижу ничего крутого, формат известен, есть куча готовых библиотек, в том числе и на python. Еще один разобрал, ну Ok, зачем же такой кривой код показывать тут, на Хабре?
0
Не могли бы вы привести примеры существующих готовых библиотек?
0
как при помощи этих библиотек получить список хэшей всех транзакций?
0
Ваши умственные способности ясны, можете дальше не продолжать.
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
В Issues данного проекта отмечено, что код не работает с SegWit, т.е. с транзакциями нового типа. Приведённый Вами код не имеет смысла при отсутствии совместимости с SegWit транзакциями. Как-то так.
UFO landed and left these words here
+1
Для ленивых вставляю случайный кусок кода, он весь примерно такой — просто сплошняком идет вот такой вот столбец
                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
0

Может это ради скорости. Мне тоже приходилось разворачивать функции так как их вызов замедлял исполнение скрипта.

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

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

Если интересны практические рекомендации: стоило бы код как то отрефачить чтобы убрать эти повторения, функции выделить, комментарии написать, выделить какие-то логические сущности. Имена тоже можно было бы дать человеческие переменным, это вообще фи, вы же с людьми кодом делитесь.

А так, код выглядит, как парсер, сегенеренный каким-нибудь ANTLR.
0
Вот, например, у вас кусок кода
        for j in range(4):
            b = f.read(1)
            b = b.hex().upper()
            tmpHex = b + tmpHex

с разными параметрами повторяется мильон раз. Я не совсем понимаю смысл этой части кода, и оставим в стороне то, что у вы переменную переприсваиваете, но почему бы не вынести это в функцию? Вы тогда могли бы уменшить код строчек на 20 и читать его было бы проще
0
Всё зависит от цели, которой придерживается юзер, используя мой парсер. В большинстве случаев, достаточно того, что есть. Или у вас есть идеи, как сделать код более «массовым»?
0
Да, вот только если парсер представляется на суд общественности, то ожидается, что разработчик позаботился о том, чтобы код был доступен для восприятия общественности. Я по крайней мере ожидал такого.
-1
Или вы предлагаете обсудить реализованное решение на предмет его технической новизны и практической значимости в вопросах исследования базы данных блокчейн по существу? Не могли бы вы детализировать свой комментарий?
0
Мне кажется, зря вы в бочку лезете. Я вам написал очень детальный комментарий — как подрефачить ваш код, чтобы он выглядел по человечески. Вместо того, чтобы препираться, могли бы давно это сделать, выглядело бы круто. Больше отвечать вам не буду, не вижу смысла.
0
Все существующие парсеры не имеют поддержки транзакций с Witness флагом.
Only those users with full accounts are able to leave comments.  , please.