Если метод в контракте 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" контракта Б?