Adapter for ERC-3643 (TransferManager)
contract FairwayTo3643Adapter is ITransferManager3643 {
IPolicyEngine public policy;
bytes public ruleFrom;
bytes public ruleTo;
constructor(address _policy, bytes memory _ruleFrom, bytes memory _ruleTo) {
policy = IPolicyEngine(_policy);
ruleFrom = _ruleFrom;
ruleTo = _ruleTo;
}
function canTransfer(address from, address to, uint256)
external view
returns (bool ok, uint256 reason)
{
(bool okFrom, uint32 rFrom) = policy.isEligible(from, ruleFrom);
if (!okFrom) return (false, rFrom);
(bool okTo, uint32 rTo) = policy.isEligible(to, ruleTo);
if (!okTo) return (false, rTo);
return (true, 0);
}
}
Last updated
Was this helpful?