diff --git a/apps/common/components/ListHead.tsx b/apps/common/components/ListHead.tsx index 88bb1118e..4d60599d3 100644 --- a/apps/common/components/ListHead.tsx +++ b/apps/common/components/ListHead.tsx @@ -59,10 +59,9 @@ export function ListHead({ const [chain, token, ...rest] = items; return (
{chain.label}
- -{chain.label}
{label}
diff --git a/apps/vaults-v3/components/details/tabs/VaultDetailsStrategies.tsx b/apps/vaults-v3/components/details/tabs/VaultDetailsStrategies.tsx index 46e7747da..72242aa86 100755 --- a/apps/vaults-v3/components/details/tabs/VaultDetailsStrategies.tsx +++ b/apps/vaults-v3/components/details/tabs/VaultDetailsStrategies.tsx @@ -91,6 +91,7 @@ export function VaultDetailsStrategies({currentVault}: {currentVault: TYDaemonVa }} items={[ {label: 'Vault', value: 'name', sortable: true, className: 'col-span-2'}, + {label: 'Risk Level', value: 'score', sortable: true, className: 'col-span-1'}, {label: 'Est. APY', value: 'estAPY', sortable: true, className: 'col-span-2'}, {label: 'Hist. APY', value: 'APY', sortable: true, className: 'col-span-2'}, {label: 'Available', value: 'available', sortable: true, className: 'col-span-2'}, diff --git a/apps/vaults-v3/components/details/tabs/VaultRiskInfo.tsx b/apps/vaults-v3/components/details/tabs/VaultRiskInfo.tsx new file mode 100755 index 000000000..2096980b6 --- /dev/null +++ b/apps/vaults-v3/components/details/tabs/VaultRiskInfo.tsx @@ -0,0 +1,177 @@ +import {type ReactElement, useMemo} from 'react'; +import {cl} from '@builtbymom/web3/utils'; + +import type {TYDaemonVault} from '@yearn-finance/web-lib/utils/schemas/yDaemonVaultsSchemas'; + +export function VaultRiskInfo({currentVault}: {currentVault: TYDaemonVault}): ReactElement { + const hasRiskScore = useMemo(() => { + let sum = 0; + currentVault.info.riskScore?.forEach(score => { + sum += score; + }); + return sum; + }, [currentVault.info.riskScore]); + + return ( +{'Review'}
+ + { + 'To have a unified reviewScore for both internal and external strategies, we assume that the strategist writer itself is either a Source of Trust (internal) or not (external). So all internal strategies always includes that 1 additional source of trust in addition. Together with all other Sources of Trust (SoTs) in this list: internal strategist wrote the strategy, peer reviews, expert peer reviews, ySec security reviews and ySec recurring security review. Each item accounts for 1 SoT point, and any combinations of these gives the number of SoTs a strategy has and thus gives the associated review score: \n\t\t1 -> 5 SoT \n\t\t2 -> 4 SoT\n\t\t3 -> 3 SoT\n\t\t4 -> 2 SoT\n\t\t5 -> 1 SoT' + } + +{currentVault.info.riskScore[0]}
+{'Testing'}
+ + { + 'The testing coverage of the strategy being evaluated. \n\t\t1 -> 95%+\n\t\t2 -> 90%+\n\t\t3 -> 80%+\n\t\t4 -> 70%+\n\t\t5 -> below 70%' + } + +{currentVault.info.riskScore[1]}
+{'Complexity'}
+ + { + 'The sLOC count of the strategy being evaluated. \n\t\t1 -> 0-150 sLOC\n\t\t2 -> 150-300 sLOC\n\t\t3 -> 300-450 sLOC\n\t\t4 -> 450-600 sLOC\n\t\t5 -> 750+ sLOC' + } + +{currentVault.info.riskScore[2]}
+{'Risk Exposure'}
+ + { + 'This score aims to find out how much and how often a strategy can be subject to losses. \n\t\t1 -> Strategy has no lossable cases, only gains, up only.\n\t\t2 -> Loss of funds or non recoverable funds up to 0-10% (Example, deposit/withdrawal fees or anything protocol specific)\n\t\t3 -> Loss of funds or non recoverable funds up to 10-15% (Example, Protocol specific IL exposure, very high deposit/withdrawal fees)\n\t\t4 -> Loss of funds or non recoverable funds up to 15-70% (Example, adding liquidity to single sided curve stable pools)\n\t\t5 -> Loss of funds or non recoverable funds up to 70-100% (Example, Leveraging cross assets and got liquidated, adding liquidity to volatile pairs single sided)' + } + +{currentVault.info.riskScore[3]}
+{'Protocol Integration'}
+ + { + 'The protocols that are integrated into the strategy that is being evaluated. \n\t\t1 -> Strategy interacts with 1 external protocol\n\t\t2 -> Strategy interacts with 2 external protocols\n\t\t3 -> Strategy interacts with 3 external protocols\n\t\t4 -> Strategy interacts with 4 external protocols\n\t\t5 -> Strategy interacts with 5 external protocols' + } + +{currentVault.info.riskScore[4]}
+{'Centralization Risk'}
+ + { + 'The centralization score of the strategy that is being evaluated. \n\t\t1 -> Strategy operates without dependency on any privileged roles, ensuring full permissionlessness.\n\t\t2 -> Strategy has privileged roles but they are not vital for operations and pose minimal risk of rug possibilities\n\t\t3 -> Strategy involves privileged roles but less frequently and with less risk of rug possibilities\n\t\t4 -> Strategy frequently depends on off-chain management but has safeguards against rug possibilities by admins\n\t\t5 -> Strategy heavily relies on off-chain management, potentially exposing user funds to rug possibilities by admins' + } + +{currentVault.info.riskScore[5]}
+{'External Protocol Audit'}
+ + { + 'The public audits count of the external protocols. \n\t\t1 -> Audit conducted by 4 or more trusted firm or security researcher conducted.\n\t\t2 -> Audit conducted by 3 trusted firm or security researcher conducted\n\t\t3 -> Audit conducted by 2 trusted firm or security researcher conducted\n\t\t4 -> Audit conducted by 1 trusted firm or security researcher conducted\n\t\t5 -> No audit conducted by a trusted firm or security researcher' + } + +{currentVault.info.riskScore[6]}
+{'External Protocol Centralisation'}
+ + { + "Measurement of the centralization score of the external protocols. \n\t\t1 -> Contracts owner is a multisig with known trusted people with Timelock OR Contracts are governanceless, immutable OR Contracts owner can't do any harm to our strategy by setting parameters in external protocol contracts.\n\t\t2 -> Contracts owner is a multisig with known trusted people\n\t\t3 -> Contracts owner is a multisig with known people but multisig threshold is very low\n\t\t4 -> Contracts owner is a multisig but the addresses are not known/hidden OR Contracts owner can harm our strategy by setting parameters in external protocol contracts up to some degree\n\t\t5 -> Contracts owner is an EOA or a multisig with less than 4 members OR Contracts are not verified OR Contracts owner can harm our strategy completely" + } + +{currentVault.info.riskScore[7]}
+{'External Protocol TVL'}
+ + { + 'The active TVL that the external protocol holds. \n\t\t1 -> TVL of $480M or more\n\t\t2 -> TVL between $120M and $480M\n\t\t3 -> TVL between $40M and $120M\n\t\t4 -> TVL between $10M and $40M\n\t\t5 -> TVL of $10M or less' + } + +{currentVault.info.riskScore[8]}
+{'External Protocol Longevity'}
+ + { + 'How long the external protocol contracts in scope have been deployed alive. \n\t\t1 -> 24 months or more\n\t\t2 -> Between 18 and 24 months\n\t\t3 -> Between 12 and 18 months\n\t\t4 -> Between 6 and 12 months\n\t\t5 -> Less than 6 months' + } + +{currentVault.info.riskScore[9]}
+{'External Protocol Type'}
+ + { + "This is a rough estimate of evaluating a protocol's purpose. \n\t\t1 -> Blue-chip protocols such as AAVE, Compound, Uniswap, Curve, Convex, and Balancer.\n\t\t2 -> Slightly modified forked blue-chip protocols\n\t\t3 -> AMM lending/borrowing protocols that are not forks of blue-chip protocols, leveraged farming protocols, as well as newly conceptualized protocols\n\t\t4 -> Cross-chain applications, like cross-chain bridges, cross-chain yield aggregators, and cross-chain lending/borrowing protocols\n\t\t5 -> The main expertise of the protocol lies in off-chain operations, such as RWA protocols" + } + +{currentVault.info.riskScore[10]}
+