To comply with the Swiss Anti-Money Laundering Act (AMLA) and enforce the "Travel Rule", Moeba operates as a **Permissioned DeFi protocol**. Both Sponsors and Investors must be verified.
Insurers must submit a registration request to the `HPIVFactory.sol` containing their Legal Entity name and an IPFS hash of their KYB documentation. Only approved Sponsors can deploy Vaults.
// Snippet from HPIVFactory.sol : Sponsor Whitelist
struct SponsorRequest {
string companyName; // Legal entity name
string kybHash; // IPFS Hash containing proof
RequestStatus status;
uint256 requestDate;
}
function registerSponsor(string memory _companyName, string memory _kybHash) external {
require(!isWhitelistedSponsor[msg.sender], "Already whitelisted");
// ... logic to request approval
}
Investors must be whitelisted in the centralized `HPIVCompliance.sol` registry. This check is injected directly into the `_update` function of the Vault tokens, freezing any Peer-to-Peer transfer to an unverified address.
// Snippet from HPIVJuniorToken.sol & HPIVVault.sol
function _update(address from, address to, uint256 value) internal virtual override {
// Blocks P2P transfers if receiver is not KYC'd
if (from != address(0) && to != address(0)) {
require(
ICompliance(complianceModule).isAllowed(to),
"Receiver must be KYC whitelisted"
);
}
super._update(from, to, value);
}