mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 03:17:27 +00:00 
			
		
		
		
	
						commit
						559d1beb03
					
				@ -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