Dapp-Development

測試特定大小的合約時出現“AssertionError:合約程式碼為空”。我如何解決它?

  • March 5, 2016

我正在為任意長度的整數算術編寫契約,用於更大的項目。

問題是,一旦合約超過一定大小,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

這是一個可以工作的程式碼粘貼箱:http: //pastebin.com/1KppMmRx

這是一個重現錯誤的pastebin:http: //pastebin.com/qq7mcLeM

請注意,它們之間的唯一區別是在其中一個合約功能中添加了一些無意義的忙碌工作。另請注意,兩個合約都通過“serpent compile bigint.se”成功編譯。我在 PyPI 版本和目前的 github 開發分支上都看到了這一點。

我會在乙太坊論壇上問這個問題,但我似乎被困在那裡的帳戶驗證中。

有誰知道這可能是什麼原因,或者如何解決它?

您是否為部署提供了足夠的氣體?在 Homestead 之前,如果在部署期間用完 gas,合約可以在沒有程式碼的情況下部署。

引用自:https://ethereum.stackexchange.com/questions/1828