Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Referral Programme

Share your referral link. If someone arrives through it and deploys capital for 30 days or more, SukukFi pays you a monthly referral reward in a stablecoin, out of its own platform fees. The CommissionRegistry contract on Berachain mainnet records code registration, wallet linking and deployment tracking on-chain, so attribution and eligibility are publicly verifiable. Payment itself is made by the operator and is not executed by the contract.

What the programme is, and what it is not

It is a referral link and nothing more. You register a code, you share a URL, and that is the whole of your role. The person who follows your link reads the terms, makes their own decision, connects their own wallet and transacts directly with SukukFi. You never see their money, never hold it, never touch their wallet, and have no part in the transaction.

The reward comes out of SukukFi’s own revenue, not out of anyone’s capital. You receive no part of the referred participant’s deposit and no share of their return. The reward pool is a fixed percentage of the platform fees SukukFi collects from CommTrade participants. If SukukFi earns nothing, the pool is nothing.

Read the Programme Rules before you share your link. They set out what you may and may not do. They are conditions of the programme, not guidance, and breaking them ends your participation.

The Referral Reward

  • Rate: 5% of the protocol-wide fee pool per distribution period
  • Weighting: Proportional to referred deployed capital versus total deployed capital across all vaults
  • Start condition: 30 days of continuous deployment (no cliff)
  • Stop condition: The reward stops when the referred LP exits a vault
  • Payment currency: A stablecoin (USDC.e on Berachain). Protocol fees are collected in trUST from CommTrade participants and converted by SukukFi before payout, so referrers never hold trUST.
  • Frequency: Monthly

The pool is protocol-wide, not per-vault. Referrers earn proportionally to referred deployed capital across all vaults, so pushing LPs toward any particular pool offers no advantage.

Reward Calculation

Each month:

  1. The protocol collects fees from vault activity across all active pools
  2. 5% of those fees form the Referral Reward pool
  3. Each referrer’s share equals: eligible capital they referred / total eligible deployed capital across the protocol
  4. SukukFi converts the corresponding amount of collected fees to a stablecoin and the operator transfers it to each referrer’s wallet

Example:

  • Total eligible deployed capital: $2,000,000
  • Capital you referred (all eligible): $200,000
  • Your pool weight: 10%
  • Total protocol fees this month: $80,000
  • Referrer pool (5%): $4,000
  • Your referral reward: $400, paid in stablecoin

Capital deployed fewer than 30 days does not count in a given distribution. Capital deployed on day 28 counts in the next month’s calculation.

The reward is paid in a stablecoin, directly to your wallet. Nothing needs redeeming and no approval is required to convert it.

SukukFi collects protocol fees from CommTrade participants in trUST and converts them before payout. Referrers do not receive or hold trUST. trUST is confined to CommTrade participants settling wholesale telecom traffic between themselves, and paying rewards in it would put it outside that set.

What controls the programme. Two things, both verifiable on-chain: the 30-day continuous deployment minimum before capital counts, and the pool-weighted calculation, which is derived from deployment data recorded by the contract rather than from a figure SukukFi asserts. Payment timing is operator-controlled and monthly. The programme is not trustless: attribution and eligibility are on-chain, the payment is not.

The 30-Day Minimum

A 6-month cliff would mean earning nothing for half a year while your referred LP’s capital generates protocol revenue from day one. That gap makes referring economically irrational.

30 days works differently. Capital deployed for one full month counts in the next distribution. The reward accrues from month 2 onward for as long as the LP stays deployed. No cliff, no ramp, no vesting.

The window is long enough to rule out flash deposits. LP capital in ERC-7540 async vaults is naturally sticky: 15-day invoice settlement cycles make early withdrawal rare. 30 days confirms real deployment without penalising referrers with a long wait.

When an LP withdraws, their contribution drops to zero in the next pool weight calculation and the reward stops. No clawback. The stop is automatic.

Programme Rules

These are conditions of taking part. If you do not accept them, do not share your link.

What you may do

Generate a referral code and share your referral link.

That is the entire permitted activity. The link may be shared publicly or privately, and you may say that you use SukukFi yourself.

What you must not do

You must not:

  • Advise anyone on whether to deposit, how much to deposit, or which vault to use.
  • Recommend that any particular person deposit, or suggest that a deposit is suitable for them.
  • Discuss or negotiate terms. The terms are what SukukFi publishes. You have no authority to vary, interpret or supplement them.
  • Accept, hold, transmit or handle any person’s money, stablecoin, wallet, private keys or deposit instruction, at any time, for any reason.
  • Complete onboarding, connect a wallet or submit a deposit on anyone else’s behalf.
  • Hold yourself out as acting for SukukFi, or as an agent, adviser, broker, intermediary, distributor or representative of SukukFi. You are not any of those things.
  • Publish any statement about returns, yields, targets, projections or performance alongside your link, or in any communication that carries it. That includes the figures published on SukukFi’s own pages. Link to them; do not repeat them.
  • Make any claim about SukukFi that does not appear on SukukFi’s own published materials.
  • Share your link with any person in the United Kingdom, or in any jurisdiction listed under Access & Compliance.

Approved wording

If you want something to say, use this and nothing more:

I use SukukFi. If you want to look at it yourself, here is my referral link: [link]

Anything beyond that is your own communication and your own responsibility, and it may breach these rules.

Who may take part

You must not take part if you are resident in, or a national of, the United Kingdom or any jurisdiction listed under Access & Compliance.

If you break these rules

SukukFi may withhold accrued rewards, deregister your code and exclude you from the programme. Attribution already recorded on-chain cannot be deleted, but payment is operator-made and can be stopped.

Why the programme is built this way

A referral link that a person follows of their own accord, to a platform they then deal with directly, is a different thing from someone bringing about an investment on another person’s behalf. The rules exist to keep it the first thing. The reward being a share of SukukFi’s platform fees rather than of anyone’s capital or returns is part of the same design.

Each referrer gets a unique bytes32 code derived from their wallet address:

code = keccak256(abi.encodePacked(referrerAddress, 0))

No server generates this and no database stores it. The same address always produces the same code. Any party can verify a code’s origin on-chain by checking whether keccak256(abi.encodePacked(claimedAddress, 0)) matches the registered code.

Codes are first-come, first-served. One address, one code. The registry maps both directions: code to referrer and referrer to code.

A referral link takes the form:

https://app.sukuk.fi/?ref=0xYOUR_CODE_HEX#vault

When an LP clicks your link, the app saves the code. At deposit time, the app calls linkLP(code) on-chain. That link is permanent and cannot be updated.

Step-by-Step Flow

For Referrers

  1. Register. Navigate to Invite Code in the app, connect your wallet, and click Register a Referral Code. One transaction: registerCode(bytes32 code), where the code derives from your address. Once confirmed, your code is live.
  2. Share your referral link. The app shows a shareable URL: app.sukuk.fi/?ref=0x...#vault. Share it.
  3. LP deposits via your link. When the LP deposits, the app calls linkLP(yourCode) on their behalf. Your code is linked to their wallet on-chain.
  4. Deployment gets recorded. The SukukFi operator calls recordDeployment(lpAddress) once the LP’s capital is active in a vault. This starts the 30-day clock. Your dashboard shows a countdown per referred LP.
  5. The reward is paid monthly. After 30 days of deployment, the LP counts in the next pool weight calculation. SukukFi converts the corresponding fees to a stablecoin and the operator transfers it to your wallet.

For LPs Being Referred

Referred LPs do nothing differently. Arriving via a referral link, the app calls linkLP() at deposit time, in the same transaction flow as the deposit. No extra step, no additional gas.

An LP links once. Re-depositing later via a different link or without one leaves the original link in place. LPs cannot change their referrer after the first deposit.

LPs who deposit without a referral link have no referrer on their wallet. Their capital contributes to no one’s pool weight.

The Referral Dashboard

The Invite Code view in the app shows three states:

Not connected: Prompt to connect wallet.

Connected, not registered: Three steps to onboard:

  1. Connect your wallet (done)
  2. Register as an referrer by sending registerCode()
  3. Share your referral link

Connected and registered: Your referrer dashboard showing:

  • Your Code: the bytes32 hex value registered to your address
  • Your Referral Link: the shareable URL
  • Referred LPs: count of wallets linked to your code
  • Total Paid: cumulative referral reward paid to you across all distributions
  • Days Until Eligible: countdown for the nearest LP approaching 30 days

Smart Contract Reference

A note on the on-chain names. The deployed contract is called CommissionRegistry and several of its functions use the word introducer. Those are immutable identifiers from an earlier version of this programme and cannot be renamed without redeploying. They mean nothing more than “the wallet that registered the referral code”. The programme is a referral programme and the Programme Rules govern it.

ContractCommissionRegistry
Address0x0eEF48743f52Ce317222692DB03143D53C4257ac
NetworkBerachain mainnet (chainId 80094)
Deployment tx0x452bc1653b440602803c68b2cc5194c1711f56226ed6f0f8fb5b5828f856e9b9
Payment token in the deployed contracttrUST (0xdaB8586b5126b7B1FCA5611543905597c9910670), set as an immutable at construction. This function is not used. See Distribution Mechanics below.
Minimum deployment30 days
StandardNon-upgradeable Solidity ^0.8.24

Key Functions

FunctionCallerDescription
registerCode(bytes32 code)ReferrerRegisters the caller as an referrer with the given code. Code must equal keccak256(abi.encodePacked(msg.sender, 0)). Reverts if the address already has a code or the code is already taken.
linkLP(bytes32 code)LP (at deposit)Links the caller’s wallet to the referrer who owns code. Can only be called once per LP address. Reverts if LP is already linked or code is unregistered.
recordDeployment(address lp)Admin / KeeperRecords the timestamp at which the LP’s capital was deployed into a vault. Starts the 30-day eligibility clock. Can only be called by the protocol operator.
recordDeployments(address[] lps)Admin / KeeperBatch version of recordDeployment. Processes multiple LPs in one transaction.
isEligible(address lp)View (anyone)Returns true if the LP’s capital has been deployed for 30 or more days.
daysUntilEligible(address lp)View (anyone)Returns the number of days remaining until the LP becomes eligible. Returns type(uint256).max if deployment has not been recorded yet.
distribute(address[] introducers, uint256[] amounts)AdminTransfers trUST from the contract to each referrer address and updates totalPaid. Not used. The reward is paid in a stablecoin instead, so this function is not called and the contract holds no trUST.
getIntroducer(address lp)View (anyone)Returns the referrer address associated with a given LP wallet, or address(0) if unlinked.
codeOf(address introducer)View (anyone)Returns the bytes32 code registered to a referrer address, or bytes32(0) if not registered.
lpCode(address lp)View (anyone)Returns the code the LP linked at deposit time, or bytes32(0) if unlinked.
totalPaid(address introducer)View (anyone)Cumulative amount recorded by distribute(). Reads zero while distribute() is unused.
introducerOf(bytes32 code)View (anyone)Reverse lookup: returns the referrer address that registered a given code.

Distribution Mechanics

Eligibility and attribution are on-chain. Payment is not.

At month end the protocol operator:

  1. Identifies all LPs with a recorded deployment timestamp 30+ days old (isEligible())
  2. Queries each LP’s linked referrer via getIntroducer()
  3. Calculates each referrer’s pool weight: eligible referred capital / total eligible deployed capital
  4. Applies the 5% fee pool to compute each referrer’s referral reward
  5. Converts the corresponding fees, collected in trUST, to a stablecoin and transfers it to each qualifying referrer

Why payment is not made by the contract. CommissionRegistry was deployed with trUST as an immutable payment token. trUST is confined to CommTrade participants settling wholesale telecom traffic between themselves, and paying referral reward in it would place it in wallets outside that set. Referral reward is therefore paid in a stablecoin, which the contract cannot do. The contract will be redeployed with a stablecoin payment token, at which point payment returns on-chain and totalPaid becomes meaningful again.

What this means for you. Steps 1 to 3 are publicly verifiable from the contract: anyone can check which LPs are linked to which referrer and when each became eligible. Step 5 is a transfer the operator makes, visible on-chain as an ordinary stablecoin transfer but not enforced by the contract.

Frequently Asked Questions

Can I have multiple codes?

No. One address, one code. Register a second wallet if you need a separate code.

No. The link sets on the first deposit and cannot be changed. This prevents switching referrers after capital is already deployed.

What happens if my referred LP withdraws and re-deposits?

Withdrawal ends the deployment record and removes the LP from pool weight calculations. Re-depositing lets the operator call recordDeployment() again, restarting the 30-day clock. The original referrer link persists across the withdrawal and re-deposit.

Is there a minimum deposit size to qualify?

None at the CommissionRegistry level. Any LP with a recorded deployment contributes to pool weight, regardless of deposit size.

When exactly does the 30-day clock start?

When the operator calls recordDeployment(lpAddress), not at deposit time. A short lag exists between an LP’s ERC-7540 async deposit completing and the operator confirming deployment on-chain.

How do I know my referred LPs have been recorded?

Your referrer dashboard shows a countdown per referred LP. You can also call daysUntilEligible(lpAddress) on the contract directly; type(uint256).max means no deployment has been recorded yet.

Can I use my invite code to supplement my own yield?

Yes, with two wallets. Register an invite code on a second wallet, then deposit from your primary wallet using that second wallet’s referral link. Your primary wallet earns LP yield on its deployed capital; your second wallet earns referral reward on that same capital from the 5% referrer pool. That is additive yield, not a redirect of it. Single-wallet self-referral does not work the same way: referral reward on your own deposit from the same address is yield you were already receiving as an LP.

Is the code registered to my address or my ENS name?

Your raw EVM address. ENS names resolve to that address, and the contract uses the resolved value.