Compliance
what the code does, what you decide.
You are the operator. Licensing, tax and consumer-protection duties in every market you publish to are yours. This page explains what TIDE does to keep that burden small, and where your decisions start. Nothing here is legal advice.
01How TIDE is built
| Constraint | How the code holds it |
|---|---|
| No custody | Keys are generated on the device and encrypted with AES-256-GCM in platform secure storage. No export endpoint, no server, no backup service (lib/core/security/vault_service.dart). |
| No order routing | Quotes come from Jupiter and the user's own device submits the transaction. No relayer, no batcher. |
| No custody of the fee | The fee is paid by Jupiter directly into your token account. |
| No recommendations | The feed describes on-chain activity; it does not advise. |
| No financing | No lending, margin or credit anywhere. |
A server that coordinates or submits transactions for users changes the legal nature of a wallet, even a non-custodial one. Keep signing and sending on the user's device.
02The feed reports, it does not advise
lib/core/compliance/feed_language.dart holds the allowed verbs (swapped, received, sent, detected, observed) and a list of forbidden words. test/feed_language_test.dart scans every user-facing string on the feed and fails on words such as "signal", "buy", "sell", "opportunity", "leaderboard", "ROI" or "win rate". Feed items carry no return, rank or score.
The separate Realised tab shows realised results of followed wallets: arithmetic on a purchase and a later sale of the same token, both already confirmed on-chain, over a stated window. Open positions are counted but not valued, and nothing is projected or annualised (lib/core/standing/realised_standing.dart). If you prefer not to show it, switch realised_standings_enabled off; the tab and every route into it disappear. Do not turn it into a leaderboard or a "top traders" list.
03Copy execution
Alerting a user that something happened is different from trading for them. Copy execution is therefore a separate module:
- Separate. It lives in
lib/core/copy/andlib/features/copy/. - Off three times.
copy_execution_enabledis off, each rule starts not armed, and the user confirms the mode once. - Region-gated. Refused in the United States, Canada, the United Kingdom, Singapore, Hong Kong and Malaysia, and wherever the region is unknown (
lib/core/compliance/jurisdiction_gate.dart). You may add regions in the panel; the six cannot be removed there. - Capped. $1,000 per trade, $5,000 per 24 hours, 5 % slippage, and a token allowlist that must not be empty.
Take licensing advice before you switch it on.
04Referrals and payouts
Referral rewards are a share of fees you actually charged. Referral codes are not derived from wallet addresses, and payout rows carry a one-way participant ID. Do not build an admin tool that maps a code to an address, and do not store the two side by side.
05Store rules
- Apple 3.1.5: a wallet app needs an Apple Developer account enrolled as an organisation.
- Apple 3.1.5: apps offering crypto futures must come from a licensed institution. TIDE has no futures or perpetuals; do not add them to an iOS build.
- Google Play: publishing a crypto wallet is subject to Google Play's cryptocurrency exchange and software wallet policy. Keep TIDE non-custodial and check the current policy for each market before release.
06Before launch
- Your own terms and privacy policy are published and linked.
- Your fee is decided and disclosed. TIDE shows it on the quote before confirm.
- You decided whether to enable copy execution, with advice.
- You checked your position in every market you publish to.