mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-04-04 15:55:23 +00:00 
			
		
		
		
	fix: read only
This commit is contained in:
		
							parent
							
								
									ac57a9b4b4
								
							
						
					
					
						commit
						4db9ee49b4
					
				| @ -4,4 +4,5 @@ const ( | ||||
| 	ErrGetStateDB          = "get EVM StateDB failed" | ||||
| 	ErrInvalidNumberOfArgs = "invalid number of arguments; expected %d; got: %d" | ||||
| 	ErrSenderNotOrigin     = "msg.sender is not from tx origin" | ||||
| 	ErrWriteOnReadOnly     = "read only call to write functions" | ||||
| ) | ||||
|  | ||||
| @ -92,6 +92,17 @@ func (d *DASignersPrecompile) RequiredGas(input []byte) uint64 { | ||||
| 	return RequiredGasMax | ||||
| } | ||||
| 
 | ||||
| func (d *DASignersPrecompile) IsTx(method string) bool { | ||||
| 	switch method { | ||||
| 	case DASignersFunctionUpdateSocket, | ||||
| 		DASignersFunctionRegisterSigner, | ||||
| 		DASignersFunctionRegisterNextEpoch: | ||||
| 		return true | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Run implements vm.PrecompiledContract.
 | ||||
| func (d *DASignersPrecompile) Run(evm *vm.EVM, contract *vm.Contract, readonly bool) ([]byte, error) { | ||||
| 	// parse input
 | ||||
| @ -106,6 +117,10 @@ func (d *DASignersPrecompile) Run(evm *vm.EVM, contract *vm.Contract, readonly b | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	// readonly check
 | ||||
| 	if readonly && d.IsTx(method.Name) { | ||||
| 		return nil, fmt.Errorf(precopmiles_common.ErrWriteOnReadOnly) | ||||
| 	} | ||||
| 	// get state db and context
 | ||||
| 	stateDB, ok := evm.StateDB.(*statedb.StateDB) | ||||
| 	if !ok { | ||||
|  | ||||
| @ -67,6 +67,20 @@ func (s *StakingPrecompile) RequiredGas(input []byte) uint64 { | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| func (s *StakingPrecompile) IsTx(method string) bool { | ||||
| 	switch method { | ||||
| 	case StakingFunctionCreateValidator, | ||||
| 		StakingFunctionEditValidator, | ||||
| 		StakingFunctionDelegate, | ||||
| 		StakingFunctionBeginRedelegate, | ||||
| 		StakingFunctionUndelegate, | ||||
| 		StakingFunctionCancelUnbondingDelegation: | ||||
| 		return true | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Run implements vm.PrecompiledContract.
 | ||||
| func (s *StakingPrecompile) Run(evm *vm.EVM, contract *vm.Contract, readonly bool) ([]byte, error) { | ||||
| 	// parse input
 | ||||
| @ -81,6 +95,10 @@ func (s *StakingPrecompile) Run(evm *vm.EVM, contract *vm.Contract, readonly boo | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	// readonly check
 | ||||
| 	if readonly && s.IsTx(method.Name) { | ||||
| 		return nil, fmt.Errorf(precopmiles_common.ErrWriteOnReadOnly) | ||||
| 	} | ||||
| 	// get state db and context
 | ||||
| 	stateDB, ok := evm.StateDB.(*statedb.StateDB) | ||||
| 	if !ok { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 MiniFrenchBread
						MiniFrenchBread