
Flying Tulip is an on‑chain financial system that standardizes pricing, credit, and risk across a suite of products, spot trading, lending, perpetual futures, insurance, and a settlement rail. Flying Tulip PUT Option is a unique investment mechanism that allows for a 100% refund at any time, no lockup, no fee, fully liquid in kind redemption via permissionless smart contract interaction, all while maintaining exposure to the sale tokens unlimited upside with full downside protection.
Scope
On what chains are the smart contracts going to be deployed?
Ethereum, base, BSC (binance chain), Avalanche, sonic
If you are integrating tokens, are you allowing only whitelisted tokens to work with the codebase or any complying with the standard? Are they assumed to have certain properties, e.g. be non-reentrant? Are there any types of weird tokens you want to integrate?
ftPUT whitelists tokens, for any specific network it may used the following:
-native wrapped token e.g sonic-> wrapped sonic or wETH, wBNB (all networks)
-USDC (all networks, except BSC)
-USDT (Ethereum, Avalanche)
-USDS (Ethereum)
-USDTB (Ethereum)
-USDE (Ethereum)
NOTE: under script/config/deployments.toml has a list of each network specific tokens used in current production setup plan. The lists of tokens inside deployment.toml will be referred to during judging.
Also the FT token itself is an OFT token based on the LayerZero network 0x5DD1A7A369e8273371d2DBf9d83356057088082c to enable multichain capabilities
Are there any limitations on values set by admins (or other roles) in the codebase, including restrictions on array lengths?
The privileged roles like msig admin are fully trusted, msig can upgrade implementation of putManager and pFT.
The other roles are partially trusted to specific actions.
The roles and privileges are detailed here:
ftPUT/PRIVILEGES.md in the contest repo
The msig addresses are listed here:
https://docs.flyingtulip.com/risks/multisigs/
The roles are considered trusted when completing their tasks and roles and won't harm the users and/or the protocol. If any privileged role can harm the protocol or the users in any way, it's considered informational, and they're fully trusted not to do so.
Are there any limitations on values set by admins (or other roles) in protocols you integrate with, including restrictions on array lengths?
ftPUT integrates the AAVE oracle on each of the networks and adds price bounds to the read values to protect from extreme values out of range for sale purposes
ftPUT/contracts/FlyingTulipOracle.sol
Is the codebase expected to comply with any specific EIPs?
not comply specifically, but there is an ERC-7265 inspired implementation of a circuit breaker pattern as the production phase is rolled out this works like a guarded launch to ensure complete withdrawal of TVL is not possible. EIP-violations are not considered valid issues as contracts are not intended to comply with any specific EIP.
ftPUT/contracts/cb/CircuitBreaker.sol
Are there any off-chain mechanisms involved in the protocol (e.g., keeper bots, arbitrage bots, etc.)? We assume these mechanisms will not misbehave, delay, or go offline unless otherwise specified.
N/A
What properties/invariants do you want to hold even if breaking them has a low/unknown impact?
The documented invariants can be found
ftPUT/test/invariants/INVARIANTS.md
Please discuss any design choices you made.
The FT token is an OFT token with multichain support via the LayerZero stack support.
Regarding the circuitbreaker (CB) it covers all the inflows/outflows of the yieldWrappers to keep track of the rate limits configured per token asset, since the CB was added late stage in development cycle to keep the change as low impact as possible the only value transfer it could not cover was the "putManager.withdrawFT()" function, by design choice to lower impact on CB integration changes, if an issue is found on this flow the putManager can be upgraded so that the CB can cover that flow as well (if any issue related to this flow can lead to Medium/High impact, it can be considered a valid issue).
There are several caps on all operations that can be added/removed to manage risk on TVL as well as whitelisting specific strategies and tokens. The system is intended to use low-risk yield options for the capital managed. The protocol will invest in strategies that cannot suffer a loss, and the strategies will be low-risk yield.
Please provide links to previous audits (if any) and all the known issues or acceptable risks.
known issues/risks accepted from past audits: [description of issue]: [risk accepted by FT description]
collateralFromFt = ftAmount * (1e8*1e8*1e8)/(1e13*1e9*1e18) = ftAmount * 1e24/1e40. This does not change the threshold of 0.01 FT. The two code changes above still allow some dust to be accrued/not divested when the amount is not a multiple of the threshold.Please list any relevant protocol resources.
Additional audit information.
Something that needs further validation are the in/out flows in regards to the integration with circuit breaker since this was added post audit as an additional security layer, assumptions and design choices stated above apply, regarding withdrawFT not being covered as design choice.
Total Rewards
Contest Pool
Lead Senior Watson
Lead Judge
76,500 USDC
17,000 USDC
5,000 USDC
Status
Scope
Start Time
End Time
Judging Rules