Можно ли претендовать на контракт? - PullRequest
0 голосов
/ 24 мая 2018

Если метод в контракте B может быть вызван только по контракту A, может ли контракт A быть замаскирован?

Код выглядит следующим образом:

pragma solidity ^0.4.23;

contract A {

    address public owner;
    B public b;

    function A(address _owner) {
        owner = _owner;
        b = B(msg.sender);
    }

    function callB() public view returns(string _greeting)  {
        require(msg.sender == owner);
        return b.onlyForA();
    }

}

contract B {

    A public a;

    function B() {
        a = new A(msg.sender);
    }

    // only contract A can call this function
    function onlyForA() public view returns(string _greeting) {
        require(msg.sender == address(a));
        return "Hello A!";
    }

}

Если злоумышленнику известен адресконтракт а, он может притвориться контрактом А, а затем вызвать метод "onlyForA" контракта Б?

...