code: func ExecuteNativeContract(address crypto.Address, st Interface, caller crypto.Address, input []byte, gas *uint64,
  	logger *logging.Logger) ([]byte, errors.CodedError) {
  
  	contract, ok := registeredNativeContracts[address]
  	if !ok {
  		return nil, errors.ErrorCodef(errors.ErrorCodeNativeFunction,
  			"no native contract registered at address: %v", address)
  	}
  	output, err := contract(st, caller, input, gas, logger)
  	if err != nil {
  		return nil, errors.NewException(errors.ErrorCodeNativeFunction, err.Error())
  	}
  	return output, nil
  }
docs: //-----------------------------------------------------------------------------