Да ... есть ошибка где-то там ...
Попробуйте следующее
от Bitcoin импорта *
serialize_script (deserialize_script ( 'ас'))
---
RuntimeError: максимальная глубина рекурсии превышена при вызове объекта Python
Yeh, я часто запускать скрипты на IOS Pythonista, и есть много ошибок рекурсии, которые возникают, т.к. по умолчанию глубина рекурсии 256; поэтому установка
sys.setrecursiondepth (512) часто работает в этой среде.
pybitcointools ошибка странно, потому что код упорядочивает multisig сценарии, но есть ошибка с CHECKMULTISIG; поэтому вместо сериализации «аи», это только добавляет «аи» к концу возвращаемой строки.
Я смотрю на использование этого кода:
Защиту mk_script (* арг):
# LST = [ '76', 'A9', '14', 'dd6cce9f255a8cc17bda8ba0373df8e861cb866e', '88', 'ас']
если LEN (аргументы) == 1 и isinstance (арг [0], (список, кортеж))
LST = лист (арг [0])
Элиф Len (арг) > 1 и все (карта (лямбда о: isinstance (о, ул), арг)):
LST = [арг]
еще:
LST = [changebase (ул (х), 10, 16, 2), если isinstance (х, (интермедиат, долго)) остальное х для х в арг]
llens = [LEN (changebase (х, 16, 256, 1)) для й в LST] длина # байт
ворс = карта (лямбда ч: декодирование (ч, 16), LST) # список, как Интс
ASM = 0xff
для г в диапазоне (LEN (ворс)):
ASM = ASM << (8 * llens [я]) | ворс [я]
asmhex = "0x" + Кодирование (ASM, 16, (сумма (llens) + 1) * 2)
Окончательный = asmhex.partition ( '0xff') [- 1]
вернуться окончательным
Как бы я идти о тонких настройках этого кода, чтобы избежать ручного добавления
push20?
то есть. Я хочу использовать
mk_script ([ '76', 'A9', 'dd6cce9f255a8cc17bda8ba0373df8e861cb866e', '88', 'ас'])
... вместо
mk_script ([ '76', 'A9', '14', 'dd6cce9f255a8cc17bda8ba0373df8e861cb866e', '88', 'ас'])
(Обратите внимание "14" предшествующий pubkeyhash, который действует как
толкать 20 байт).
Я бы предпочел, чтобы избежать использования нажимные байтов