core, params: EIP#170
This commit is contained in:
		
							parent
							
								
									a91908e567
								
							
						
					
					
						commit
						0231d8f86d
					
				| @ -150,11 +150,13 @@ func Create(env vm.Environment, caller vm.ContractRef, code []byte, gas, gasPric | ||||
| 	defer contract.Finalise() | ||||
| 
 | ||||
| 	ret, err = env.Vm().Run(contract, nil) | ||||
| 	// check whether the max code size has been exceeded
 | ||||
| 	maxCodeSizeExceeded := len(ret) > params.MaxCodeSize | ||||
| 	// if the contract creation ran successfully and no errors were returned
 | ||||
| 	// calculate the gas required to store the code. If the code could not
 | ||||
| 	// be stored due to not enough gas set an error and let it be handled
 | ||||
| 	// by the error checking condition below.
 | ||||
| 	if err == nil { | ||||
| 	if err == nil && !maxCodeSizeExceeded { | ||||
| 		dataGas := big.NewInt(int64(len(ret))) | ||||
| 		dataGas.Mul(dataGas, params.CreateDataGas) | ||||
| 		if contract.UseGas(dataGas) { | ||||
| @ -167,9 +169,9 @@ func Create(env vm.Environment, caller vm.ContractRef, code []byte, gas, gasPric | ||||
| 	// When an error was returned by the EVM or when setting the creation code
 | ||||
| 	// above we revert to the snapshot and consume any gas remaining. Additionally
 | ||||
| 	// when we're in homestead this also counts for code storage gas errors.
 | ||||
| 	if err != nil && (env.ChainConfig().IsHomestead(env.BlockNumber()) || err != vm.CodeStoreOutOfGasError) { | ||||
| 	if maxCodeSizeExceeded || | ||||
| 		(err != nil && (env.ChainConfig().IsHomestead(env.BlockNumber()) || err != vm.CodeStoreOutOfGasError)) { | ||||
| 		contract.UseGas(contract.Gas) | ||||
| 
 | ||||
| 		env.RevertToSnapshot(snapshotPreTransfer) | ||||
| 
 | ||||
| 		// Nothing should be returned when an error is thrown.
 | ||||
|  | ||||
| @ -14,9 +14,6 @@ | ||||
| // You should have received a copy of the GNU Lesser General Public License
 | ||||
| // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 | ||||
| 
 | ||||
| // DO NOT EDIT!!!
 | ||||
| // AUTOGENERATED FROM generators/defaults.go
 | ||||
| 
 | ||||
| package params | ||||
| 
 | ||||
| import "math/big" | ||||
| @ -72,4 +69,5 @@ var ( | ||||
| 	MemoryGas            = big.NewInt(3)      // Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL.
 | ||||
| 	TxDataNonZeroGas     = big.NewInt(68)     // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions.
 | ||||
| 
 | ||||
| 	MaxCodeSize = 24576 | ||||
| ) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user