проблема с модификаторами разрешений

В этом небольшом примере я пытаюсь поиграть с модификаторами, master1 создает контракт и передает адрес master2 в качестве параметра в конструкторе.

contract testOnlyBy {
    address master1;
    address master2;

    modifier onlyByMaster1 { if (msg.sender != master1) throw; _ }
    modifier onlyByMaster2 { if (msg.sender != master2) throw; _ }
    modifier onlyByMaster1or2 { if (msg.sender != master1 || msg.sender != master2) throw; _ }

    // "0x6eec66e0133feb5e432584515880afad4be047f0"

    function testOnlyBy(address _master2) {
        master1 = msg.sender;
        master2 = _master2;
    }
    function get() external constant returns(address ret1, address ret2) {
        if (msg.sender == master1 || msg.sender == master2){
             return (master1, master2);
        }
    }
    function getonlyByMaster1() onlyByMaster1 external constant returns(address ret1, address ret2) {
        return (master1, master2);
    }
    function getonlyByMaster2() onlyByMaster2 external constant returns(address ret1, address ret2) {
         return (master1, master2);
    }

    function getonlyByMaster1or2() onlyByMaster1or2 external constant returns(address ret1, address ret2) {
         return (master1, master2);           
    }
}

функция getработает как задумано, но идея состоит в том, чтобы вместо этого использовать модификаторы.

Я не понимаю, почему getonlyByMaster1or2возвращает 0x0, хотя эти две функции эквивалентны. Я что-то упускаю ?

введите описание изображения здесь

Ответы (1)

Попробуйте изменить

modifier onlyByMaster1or2 { 
  if (msg.sender != master1 || msg.sender != master2) throw;
  _ 
}

к

modifier onlyByMaster1or2 { 
  if (msg.sender != master1 && msg.sender != master2) throw;
  _ 
}

Часть _модификатора будет запущена, если следующее выражение ложно:

(msg.sender != master1 && msg.sender != master2)

Это эквивалентно истинности следующего выражения:

(msg.sender == master1 || msg.sender == master2)

в чем логика get().

omfg, логика 101....спасибо, я голову ломал