Go-Ethereum

使用 geth 增加最大合約規模

  • January 4, 2020

我想在自己的測試鏈上部署一個大合約,繞過 EIP170 的 24576 Byte 的合約大小限制。甘納許有--allowUnlimitedContractSize這個。geth也可以嗎?

不幸的是,geth 不能輕易地配置為任意大小的合約。

MaxCodeSize常量是由SpuriousDragon fork添加的。它的應用是由一個創世參數控制的EIP158Block。理論上,從創世中禁用 SpuriousDragon 將允許任意大小的合約。

另一個問題是 geth 將事務的最大大小限制為 32 kbytes。此限制是硬編碼的,要更改它,您必須編譯自己的 geth 版本。

func (pool *TxPool) validateTx(tx *types.Transaction, local bool) error {
   // Heuristic limit, reject transactions over 32KB to prevent DOS attacks
   if tx.Size() > 32*1024 {
       return ErrOversizedData
   }

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