- Join Sherlock Discord
- Submit findings using the issue page in your private contest repo (label issues as med or high)
- Read for more details
One or all of the following: Ethereum L2, Arbitrum, Optimism, Base
Other L2 EVM chains are eligible
DSU and USDC (USDC.e on Arbitrum)
None
None
No
No
TRUSTED
Protocol admin: TRUSTED
Markets have Owners and Coordinators which can update parameters for that specific market - these coordinators have a large amount of flexibility within their own market but should not be able to adversely affect other markets or the overall protocol.
Q: Is the code/contract expected to comply with any EIPs? Are there specific assumptions around adhering to those EIPs that Watsons should be aware of?
No
As stated above - market owners+coordinators can do many things within their markets which could adversely affect user funds within those markets. However, they should not be able to affect other markets
Flywheel being down due to external downtime - sequencer and oracle downtime does not have special case handling. Perennial also does not provide grace periods for users to cure their positions when these systems do come back up
0-value payoff functions are not supported.
None
Q: Are there any off-chain mechanisms or off-chain procedures for the protocol (keeper bots, input validation expectations, etc)?
Yes - there are keepers for oracle updates, liquidations, and order types
Q: In case of external protocol integrations, are the risks of external contracts pausing or executing an emergency withdrawal acceptable? If not, Watsons will submit issues related to these situations that can harm your protocol's functionality.
We want to be aware of issues that might arise from oracle or DSU integrations
Q: Do you expect to use any of the following tokens with non-standard behaviour with the smart contracts?
USDC
V1 Overview docs: https://docs.perennial.finance/
V2 Mechanism 1-pager: https://docs.google.com/document/d/1f-V_byFYkJdJAHMXxN2NiiDqysYhoqKzZXteee8BuIQ/edit
perennial-v2 @ 0937c269120b2c5383c883da547f080ce9dc6cca
- perennial-v2/packages/perennial-extensions/contracts/MultiInvoker.sol
- perennial-v2/packages/perennial-extensions/contracts/types/TriggerOrder.sol
- perennial-v2/packages/perennial-oracle/contracts/Oracle.sol
- perennial-v2/packages/perennial-oracle/contracts/OracleFactory.sol
- perennial-v2/packages/perennial-oracle/contracts/pyth/PythFactory.sol
- perennial-v2/packages/perennial-oracle/contracts/pyth/PythOracle.sol
- perennial-v2/packages/perennial-payoff/contracts/PayoffFactory.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/Giga.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/Kilo.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/KiloPowerHalf.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/KiloPowerTwo.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/Mega.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/MegaPowerTwo.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/Micro.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/MicroPowerTwo.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/Milli.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/MilliPowerHalf.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/MilliPowerTwo.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/Nano.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/PowerHalf.sol
- perennial-v2/packages/perennial-payoff/contracts/payoff/PowerTwo.sol
- perennial-v2/packages/perennial-vault/contracts/Vault.sol
- perennial-v2/packages/perennial-vault/contracts/VaultFactory.sol
- perennial-v2/packages/perennial-vault/contracts/lib/StrategyLib.sol
- perennial-v2/packages/perennial-vault/contracts/types/Account.sol
- perennial-v2/packages/perennial-vault/contracts/types/Checkpoint.sol
- perennial-v2/packages/perennial-vault/contracts/types/Mapping.sol
- perennial-v2/packages/perennial-vault/contracts/types/Registration.sol
- perennial-v2/packages/perennial-vault/contracts/types/VaultParameter.sol
- perennial-v2/packages/perennial/contracts/Market.sol
- perennial-v2/packages/perennial/contracts/MarketFactory.sol
- perennial-v2/packages/perennial/contracts/types/Global.sol
- perennial-v2/packages/perennial/contracts/types/Local.sol
- perennial-v2/packages/perennial/contracts/types/MarketParameter.sol
- perennial-v2/packages/perennial/contracts/types/OracleVersion.sol
- perennial-v2/packages/perennial/contracts/types/Order.sol
- perennial-v2/packages/perennial/contracts/types/Position.sol
- perennial-v2/packages/perennial/contracts/types/ProtocolParameter.sol
- perennial-v2/packages/perennial/contracts/types/RiskParameter.sol
- perennial-v2/packages/perennial/contracts/types/Version.sol
root @ 74fdd3e1acbca319f6825f44a971c8c196ebc2a9
- root/contracts/accumulator/types/Accumulator6.sol
- root/contracts/accumulator/types/UAccumulator6.sol
- root/contracts/number/types/Fixed18.sol
- root/contracts/number/types/Fixed6.sol
- root/contracts/number/types/UFixed18.sol
- root/contracts/number/types/UFixed6.sol
- root/contracts/token/types/Token6.sol
- root/contracts/attribute/Factory.sol
- root/contracts/attribute/Instance.sol
- root/contracts/attribute/Kept.sol
- root/contracts/attribute/Pausable.sol
- root/contracts/pid/types/PAccumulator6.sol
- root/contracts/pid/types/PController6.sol