I deployed an exactly same contract to both ETH and ETC. And I could see the contract doesn't work correctly only on ETC.
contract ContractA {
ContractB public BB;
// Common
constructor () public {
BB = ContractB(msg.sender);
}
function () public payable {
require(msg.value > 0);
BB.destination().transfer(msg.value);
BB.logDeposit(msg.sender, msg.value);
}
}
It seems that it fails on the line BB.destination().transfer(msg.value);
. I think reading destination()
works and then it fails when it tries transferring.
I suspect that the OPCODEs for those chains are different, but couldn't get any clue.