Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions dapp/src/components/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ const NAVIGATION: FooterListItem[] = [
children: "FAQ",
href: externalHref.FAQ,
},
{
children: "Blog",
href: externalHref.BLOG,
},
{
children: "Discord",
href: externalHref.DISCORD,
Expand Down
166 changes: 54 additions & 112 deletions dapp/src/components/MidasVaultDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from "react"
import TbtcIcon from "#/assets/icons/TbtcIcon"
import { externalHref, transparency, vaults } from "#/constants"
import { externalHref, transparency } from "#/constants"
import { addressUtils } from "#/utils"
import { Button, Icon, Link, Text } from "@chakra-ui/react"
import { IconArrowUpRight } from "@tabler/icons-react"
Expand All @@ -15,46 +15,38 @@ import DeBankLink from "./shared/DeBankLink"
export default function MidasVaultDetailsDescription() {
return (
<>
This BTC-neutral vault generates yield from multiple sources: DeFi
(liquidity provision + delta-neutral strategies), options premia, and BTC
staking (Starknet).{" "}
This vault holds tBTC prior to the deployment to vetted strategies.{" "}
<Link
fontWeight="bold"
textDecoration="underline"
href={externalHref.MIDAS_TEAM}
href={externalHref.MIDAS}
isExternal
>
Midas
</Link>{" "}
provides algorithmic infrastructure and 24/7 portfolio monitoring. Risk
and strategy management are handled by{" "}
<Link
fontWeight="bold"
textDecoration="underline"
href={externalHref.RE7}
isExternal
>
Re7 Labs
</Link>
, the innovation arm of Re7 Capital and creators of the Re7 DeFi Ratings
framework. Risk parameters for the vault have been reviewed and approved
by the Acre Security Council, following the{" "}
<Link
fontWeight="bold"
textDecoration="underline"
href={externalHref.ACRE_DEPLOYMENT_POLICY}
isExternal
>
Acre Deployment Policy
</Link>
. A protocol fee of 20% on earned rewards will go to the Acre DAO and its
partners. Deposits and withdrawals are always under your direct control,
and all deployments, rewards, and redemptions are fully on-chain and
auditable.
is the infrastructure provider and reviews all deposits and redemptions
for accounting, security and additional infrastructure. The tBTC is ready
to request redeem from the Midas vault at any time with approximately 72
hour cool down time. If redeeming back to Bitcoin, there is a 0.20% fee
from the Threshold Network bridge.
</>
)
}

function AddressValue({ children }: { children: React.ReactNode }) {
return (
<Text
size="sm"
as="span"
color="text.primary"
fontWeight="semibold"
marginRight={1}
>
{children}
</Text>
)
}

export function getMidasVaultDetails({
depositFeePercentage,
withdrawalFeePercentage,
Expand All @@ -67,7 +59,7 @@ export function getMidasVaultDetails({
vaultTvlInUsd: number
}) {
return {
vaultName: "BTC-Neutral Blended Yield",
vaultName: "Midas acreBTC (macreBTC) Vault",
description: <MidasVaultDetailsDescription />,
icon: TbtcIcon,
sections: [
Expand All @@ -77,10 +69,10 @@ export function getMidasVaultDetails({
tooltip:
"Annual Percentage Yield (APY) is the annual rate of return earned on an investment.",
items: [
{ label: "Gross Annual", value: "4% (est.)" },
{ label: "Net Annual", value: "3% (est.)" },
{ label: "Net Monthly", value: "0.87% (est.)" },
{ label: "Net Weekly", value: "0.20% (est.)" },
{ label: "Gross Annual", value: "0%" },
{ label: "Net Annual", value: "0%" },
{ label: "Net Monthly", value: "0%" },
{ label: "Net Weekly", value: "0%" },
],
},
{
Expand Down Expand Up @@ -132,81 +124,46 @@ export function getMidasVaultDetails({
label: "Transparency",
items: [
{
label: "BTC-Neutral Blended Yield Vault",
label: "Available BTC (tBTC) Liquidity",
value: (
<BlockExplorerLink
type="address"
chain="ethereum"
id={vaults.VAULT_PROVIDERS.tbtc.address}
>
<Text
size="sm"
as="span"
color="text.primary"
fontWeight="semibold"
marginRight={1}
>
{addressUtils.truncateAddress(
vaults.VAULT_PROVIDERS.tbtc.address,
)}
</Text>
<Icon as={IconArrowUpRight} color="acre.50" boxSize={4} />
</BlockExplorerLink>
),
},
{
label: "Assets to be Deployed",
value: (
<DeBankLink address={transparency.ASSETS_TO_BE_DEPLOYED}>
<Text
size="sm"
as="span"
color="text.primary"
fontWeight="semibold"
marginRight={1}
>
<DeBankLink address={transparency.AVAILABLE_LIQUIDITY_BUFFER}>
<AddressValue>
{addressUtils.truncateAddress(
transparency.ASSETS_TO_BE_DEPLOYED,
transparency.AVAILABLE_LIQUIDITY_BUFFER,
)}
</Text>
</AddressValue>
<Icon as={IconArrowUpRight} color="acre.50" boxSize={4} />
</DeBankLink>
),
},
{
label: "Onchain Wallets",
label: "AcreBTC",
value: (
<DeBankLink address={transparency.ONCHAIN_WALLETS}>
<Text
size="sm"
as="span"
color="text.primary"
fontWeight="semibold"
marginRight={1}
>
{addressUtils.truncateAddress(transparency.ONCHAIN_WALLETS)}
</Text>
<BlockExplorerLink
type="token"
chain="ethereum"
id={transparency.ACREBTC_TOKEN}
>
<AddressValue>
{addressUtils.truncateAddress(transparency.ACREBTC_TOKEN)}
</AddressValue>
<Icon as={IconArrowUpRight} color="acre.50" boxSize={4} />
</DeBankLink>
</BlockExplorerLink>
),
},
{
label: "Available Liquidity Buffer",
label: "Withdrawal Queue",
value: (
<DeBankLink address={transparency.AVAILABLE_LIQUIDITY_BUFFER}>
<Text
size="sm"
as="span"
color="text.primary"
fontWeight="semibold"
marginRight={1}
>
{addressUtils.truncateAddress(
transparency.AVAILABLE_LIQUIDITY_BUFFER,
)}
</Text>
<BlockExplorerLink
type="address"
chain="ethereum"
id={transparency.WITHDRAWAL_QUEUE}
>
<AddressValue>
{addressUtils.truncateAddress(transparency.WITHDRAWAL_QUEUE)}
</AddressValue>
<Icon as={IconArrowUpRight} color="acre.50" boxSize={4} />
</DeBankLink>
</BlockExplorerLink>
),
},
],
Expand All @@ -215,22 +172,7 @@ export function getMidasVaultDetails({
sectionKey: "misc",
items: [
{
label: "Risk Manager",
value: (
<Button
as={Link}
fontSize="md"
variant="link"
rightIcon={<Icon as={IconArrowUpRight} color="acre.50" />}
href={externalHref.RE7}
isExternal
>
Re7 Labs
</Button>
),
},
{
label: "Vault Infrastructure Provider",
label: "Infrastructure Provider",
value: (
<Button
as={Link}
Expand All @@ -254,7 +196,7 @@ export function getMidasVaultDetails({
},
{
label: "Withdrawal Cooldown Time",
value: "< 72 hours (14 days after Dec 2025)",
value: "Approximately 72 hours",
},
],
},
Expand Down
27 changes: 27 additions & 0 deletions dapp/src/components/ProtocolPauseBanner.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import React from "react"
import { Card, HStack, Icon, Text } from "@chakra-ui/react"
import { IconExclamationCircle } from "@tabler/icons-react"

export default function ProtocolPauseBanner() {
return (
<Card px="6" py="6" w="100%" bg="ivoire.10">
<HStack alignItems="center" spacing={4}>
<Icon
as={IconExclamationCircle}
rounded="full"
w="9"
h="9"
p="2"
color="orange.50"
bg="oldPalette.opacity.orange.50.15"
flexShrink={0}
/>

<Text size="md" color="text.primary">
Attention: Deposits Paused and Vault Upgrade Scheduled for Fall 2026.
Withdrawals Remain Live.
</Text>
</HStack>
</Card>
)
}
5 changes: 1 addition & 4 deletions dapp/src/components/VaultDetailsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,7 @@ export function VaultDetailsModalBase({

<Flex alignSelf="start" gap={1} mt={-1} px={6}>
<Icon as={IconShieldFilled} color="ink.50" />
<Text size="xs">
No centralized custodian. All on-chain. Rewards auto-compound to
Bitcoin every ~14 days.
</Text>
<Text size="xs">No centralized custodian. All on-chain.</Text>
</Flex>
</ModalBody>
</>
Expand Down
19 changes: 4 additions & 15 deletions dapp/src/components/Vaults.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ import {
IconExclamationCircle,
IconRefresh,
} from "@tabler/icons-react"
import { getMidasVaultDetails } from "./MidasVaultDetails"
import { VaultDetails } from "./VaultDetailsModal"

const { formatNumberToCompactString, getPercentValue } = numbersUtils

Expand All @@ -47,7 +45,6 @@ type VaultItem = {
tvl: number
tvlCap: number
curator: keyof typeof vaults.VAULT_CURATORS
details: VaultDetails
}

type VaultsRootProps = CardProps
Expand Down Expand Up @@ -77,7 +74,7 @@ function VaultsRoot(props: VaultsRootProps) {
<Th>Portfolio Weight</Th>
<Th>NET APY</Th>
<Th>TVL</Th>
<Th>Risk Manager</Th>
<Th>Infrastructure Provider</Th>
</Tr>
</Thead>

Expand Down Expand Up @@ -152,7 +149,7 @@ function VaultTableRow({ vault }: { vault: VaultItem }) {
{portfolioWeightPercentage}%
</Box>
</Td>
<Td>{aprPercentage}% (est.)</Td>
<Td>{aprPercentage}%</Td>
<Td letterSpacing="-0.5px">
<Box as="span" fontWeight="bold">
{formattedTvl}
Expand Down Expand Up @@ -192,8 +189,6 @@ function VaultTableRow({ vault }: { vault: VaultItem }) {

function Vaults(props: VaultsRootProps) {
const statistics = useStatistics()
const { data: depositFeePercentage } = useDepositFeePercentage()
const { data: withdrawalFeePercentage } = useWithdrawalFeePercentage()

const handleRefetch = () => logPromiseFailure(statistics.refetch())

Expand Down Expand Up @@ -246,16 +241,10 @@ function Vaults(props: VaultsRootProps) {
{
provider: "tbtc",
portfolioWeight: 1,
apr: 11,
apr: 0,
tvl: statistics.data.tvl.usdValue,
tvlCap: statistics.data.tvl.cap,
curator: "re7",
details: getMidasVaultDetails({
depositFeePercentage,
withdrawalFeePercentage,
tvlCapInUsd: statistics.data.tvl.cap,
vaultTvlInUsd: statistics.data.tvl.usdValue,
}),
curator: "midas",
},
]

Expand Down
4 changes: 0 additions & 4 deletions dapp/src/constants/externalHref.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@ export default {
DOCS: "https://docs.acre.fi",
FAQ: "https://docs.acre.fi/faq",
CONTRACTS: "https://docs.acre.fi/contracts",
BLOG: "https://blog.acre.fi",
WEBSITE: "https://acre.fi",
TERMS_OF_USE: "https://acre.fi/terms-of-use",
PRIVACY_POLICY: "https://acre.fi/privacy-policy",
X: "https://x.com/AcreBTC",
RE7: "https://www.re7labs.xyz/",
MIDAS: "https://midas.app/",
MIDAS_TEAM: "https://midas.app/team",
ACRE_DEPLOYMENT_POLICY: "https://docs.acre.fi/acre-deployment-policy",
AAVE: "https://aave.com/",
GIZA: "https://www.gizatech.xyz/",
RE7_CAPITAL: "https://re7.capital/",
Expand Down
4 changes: 2 additions & 2 deletions dapp/src/constants/transparency.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export default {
ASSETS_TO_BE_DEPLOYED: "0xbA53a278D6d68c2C8F6d600eA93581a702A6006A",
ONCHAIN_WALLETS: "0x7C819F438250CD9331D3E8EA540B72B3FF702f07",
AVAILABLE_LIQUIDITY_BUFFER: "0x910CA844Fb578f670Ca5190c1cF4ab851155Bf99",
ACREBTC_TOKEN: "0x19531C886339dd28b9923d903F6B235C45396dedf",
WITHDRAWAL_QUEUE: "0xe7b8c14cA8Fb4f226C0A3e45e636b84809BB5D06",
}
8 changes: 4 additions & 4 deletions dapp/src/constants/vaults.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ import externalHref from "./externalHref"

const VAULT_PROVIDERS = {
tbtc: {
label: "BTC-Neutral Blended Yield",
label: "tBTC Allocator Vault",
icon: TbtcIcon,
address: "0x6A6092d9c47A7E4C085f2ED9FD4a376124587Ae0",
depositToken: "tBTC",
},
}

const VAULT_CURATORS = {
re7: {
label: "Re7 Labs",
url: externalHref.RE7,
midas: {
label: "Midas",
url: externalHref.MIDAS,
},
}

Expand Down
Loading
Loading