> For the complete documentation index, see [llms.txt](https://docs.usefarlight.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.usefarlight.com/compliance/model.md).

# Compliance at the protocol boundary

Where Farlight checks eligibility, what an attestation records, and what the protocol will never do with user funds.

{% hint style="info" %}
This page describes how the protocol enforces compliance in code. It is not legal advice.
{% endhint %}

## Why the protocol decides for itself

On-chain, Stock Tokens are plain ERC-20s with no transfer restrictions. Robinhood enforces eligibility in its own interface and at KYC'd issuance and redemption; once the tokens are out, anyone may hold them. A protocol that accepts them as collateral cannot inherit the issuer's checks and has to set its own. Farlight is non-custodial, so it sets them at the **protocol boundary**: the [access registry](/architecture/eligibility.md) is consulted at every point of entry.

## What each entry point requires

| Entry point                   | Requirement                                                               |
| ----------------------------- | ------------------------------------------------------------------------- |
| Borrowing                     | `BORROWER` attestation: KYC'd and in a non-restricted jurisdiction        |
| Lending                       | `LENDER_PROFESSIONAL`; `LENDER_RETAIL` where permitted                    |
| Taking delivery of collateral | `LIQUIDATOR` attestation, for auction buyers and in-kind recipients alike |
| Transferring a slice token    | The recipient must hold a lender attestation                              |
| Using the front-end           | Geo-fencing for restricted jurisdictions                                  |

## How enforcement works

1. **Attestations, not allowlists.** Once identity, sanctions and residency checks are complete, a KYC provider issues an EAS attestation to the wallet. It carries a role, a jurisdiction class and an expiry, and nothing personal.
2. **Renewal and revocation.** Attestations expire and have to be renewed. A revocation is effective at once.
3. **Two screening layers.** The KYC provider screens at issuance and at each renewal. The sequencer runs its own sanctions screening; TRM Labs is integrated on the chain.
4. **Replaceable policy.** The registry is an adapter, so the policy engine (EAS, ONCHAINID, Chainlink ACE) and the set of accepted issuers can be swapped through the timelock without redeploying the core. If a regulator requires tighter rules, they can be applied quickly.
5. **Public reads.** Every view function stays public, so explorers and aggregators can index the protocol.

## What the protocol never does

* Hold user funds anywhere except the escrow contracts.
* Convert fiat.
* Exercise discretion over a loan. Origination, repayment, refinance and liquidation are rule-driven and can be triggered by anyone who is eligible.

These three properties are the basis of the money-transmission and "managerial discretion" analyses in [Jurisdictions](/compliance/jurisdictions.md).

## Personal data

Personal data remains with the KYC provider and is never put on-chain. An optional zero-knowledge credential route lets a wallet prove it is eligible without revealing which provider ran the check or any underlying attribute.

## Tracking the issuer

For borrowers, Farlight mirrors the Stock Token eligibility list. If Robinhood narrows that list, the attestation issuer's rules follow it. If Stock Tokens later gain on-chain transfer hooks (ERC-7943 or ERC-3643), the escrow contract will honour them and will itself be added to the allowlist. See [Collateral roadmap](/assets/future-collateral.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.usefarlight.com/compliance/model.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
