On this page

Issuer compliance contracts

Choose whether an external, issuer-supplied compliance contract checks your asset's transfers. Omnisea calls this contract to decide whether a transfer is allowed. The choice to use one is permanent; an existing compliance contract can be replaced.

No issuer compliance contract means Omnisea adds no issuer-defined compliance checks. It does not remove restrictions built into the original token, such as a pause or blocklist. If you create the asset without a compliance contract, one cannot be added later.

In the API and contract responses, complianceMode is false without an issuer compliance contract and true when issuer compliance checks are required. These technical field names are unchanged.

BehaviorNo issuer compliance contractIssuer compliance contract
Creation argumentZero addressA deployed origin compliance contract
Existing peers pre-enabledYesNo; enable each destination explicitly
Add or remove issuer compliance checks laterCannot add themCannot remove them; the contract can be replaced
Set or update a compliance contractNot availableOrigin creator only
Remote policy setupNoneRequired on each destination

What compliance checks

For assets with issuer compliance checks, the router calls the contract with the asset ID, source/destination EIDs, sender, recipient and amount. Remote OFTs also check ordinary holder-to-holder transfers. Router-controlled fee movements are exempt. Transfers fail if the required destination compliance contract is missing or does not work.

Implement and test IOmniseaCompliance against the contract source for this release. Do not assume an ERC-20 blocklist interface is interchangeable. A policy can reject transfers or become unavailable, so include failure and recovery tests for your actual policy.

Configure policy

Use setCompliance(assetId, compliance) on the origin, or directly on a remote chain for that chain. Use setRemoteCompliance(assetId, eid, complianceBytes32, extraOptions) for an enabled destination and pay Lens quoteSync. The initial enableChain for an asset with an issuer compliance contract also carries its remote policy address.

Remote configuration uses origin-authenticated messages and nonce ordering. A later-delivered older update can be ignored. Read the final policy address and inspect ComplianceUpdated or StaleConfigIgnored; transport delivery alone is not confirmation that your requested value was applied.

Before making a choice

Without an issuer compliance contract, Omnisea does not apply additional issuer-defined checks to transfers. With one, the issuer can enforce its transfer policy and is responsible for configuring and maintaining it. Neither changes the risks of the original ERC-20, enabled peer chains or LayerZero defaults. See Security model.