Go-Ethereum
使用 geth 增加最大合約規模
我想在自己的測試鏈上部署一個大合約,繞過 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 }