Я пишу контракт на целочисленную арифметику произвольной длины для использования в более крупном проекте.
Проблема в том, что как только контракт становится больше определенного размера, тестовая среда Python ethereum.tester.state().abi_contract() начинает выдавать следующую трассировку стека:
Traceback (most recent call last):
File "se_bigint.py", line 5, in <module>
bigint = s.abi_contract('bigint.se')
File "/home/ada/mypy/local/lib/python2.7/site-packages/ethereum/tester.py", line 166, in abi_contract
assert len(self.block.get_code(address), "Contract code empty")
AssertionError: Contract code empty
Вот работающий код pastebin: http://pastebin.com/1KppMmRx
А вот pastebin, который воспроизводит ошибку: http://pastebin.com/qq7mcLeM
Обратите внимание, что единственная разница между ними заключается в том, что к одной из функций контракта добавлена какая-то бессмысленная хлопотня. Также обратите внимание, что оба контракта успешно компилируются через "serpent compile bigint.se". Я вижу это как в выпуске PyPI, так и в текущей ветке разработки github.
Я бы спросил об этом на форуме Эфириума, но, похоже, я застрял там на проверке аккаунта.
Кто-нибудь знает, что может быть причиной этого, или как обойти это?
Вы поставляете достаточно газа для развертывания? До усадьбы контракты можно развертывать без кода, если во время развертывания у вас кончился газ.
Ада Мерривезер
эт