Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 62 additions & 0 deletions ensawards.org/data/apps/1inch-defi-app/benchmarks/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying app benchmarks

import type { AcceptanceTestBenchmark } from "data/acceptance-tests/types";
import OneInchDeFiApp from "data/apps/1inch-defi-app";
import { defineAppBenchmarks } from "data/benchmarks/registry";
import { BenchmarkResults } from "data/benchmarks/types";
import contributors from "data/contributors";
import { acceptanceTestDetailsContainerStyles } from "data/ens-best-practices/styles";
import type { BestPracticeBenchmarks } from "data/ens-best-practices/types";

import { parseTimestamp } from "@ensnode/ensnode-sdk";

import { cn } from "@/utils/tailwindClassConcatenation";

import correctlyResolveEnsv2TestNameAddressProofImagePortfolio from "./correctly-resolve-ensv2-test-name-address-proof-portfolio.gif";
import correctlyResolveEnsv2TestNameAddressProofImageSend from "./correctly-resolve-ensv2-test-name-address-proof-send.png";

const benchmarks: BestPracticeBenchmarks = {
// TODO: `Contract Naming` category is temporarily hidden due to unfit content,
// and so are all benchmarks belonging to it.
// We aim to fix it as soon as we have the capacity.
// See: https://github.com/namehash/ensawards/issues/222
"display-named-smart-contracts-mainnet": {
"mainnet-interactions-display-named-smart-contracts": undefined,
},
"display-named-smart-contracts-l2-chains": {
"l2-chain-interactions-display-named-smart-contracts": undefined,
},
"ensv2-ready-resolution": {
"correctly-resolve-ensv2-test-name-address": {
result: BenchmarkResults.Fail,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-09T12:41:00Z") },
],
notes: (
<div className={cn(acceptanceTestDetailsContainerStyles, "w-full")}>
<p className="w-full">
ENSv2 ready resolution was tested for two different flows of the app: &quot;send&quot;
and &quot;portfolio&quot;. In both cases the resolved address is <i>NOT</i> correct.
</p>
<div className="flex flex-col justify-start items-center gap-5">
<img
alt="1inch defi app fails to resolve the name for ENSv2"
src={correctlyResolveEnsv2TestNameAddressProofImagePortfolio.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
<img
alt="1inch defi app fails to resolve the name for ENSv2"
src={correctlyResolveEnsv2TestNameAddressProofImageSend.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
</div>
</div>
),
} as const satisfies AcceptanceTestBenchmark,
},
} as const satisfies BestPracticeBenchmarks;

defineAppBenchmarks(OneInchDeFiApp, benchmarks);

export default benchmarks;
23 changes: 23 additions & 0 deletions ensawards.org/data/apps/1inch-defi-app/icon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import React from "react";

const Icon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (
<svg
id="1"
data-name="1"
xmlns="http://www.w3.org/2000/svg"
width="181mm"
height="181mm"
version="1.1"
viewBox="0 0 513 513"
className={className}
{...props}
>
<path d="M512.8,0H0v512.8h512.8V0Z" />
<path
d="M169.7,383.7h172.9v-36.7h-63.8s0-218.7,0-218.7h-37.8c-1.5,30.6-10.3,38.3-52.1,38.3h-19.2v34.6h63.8v145.8h-63.8v36.7ZM360.7,201.2v-72.9h-36.7v72.9h36.7ZM425.1,201.2v-72.9h-36.7v72.9h36.7Z"
fill="#fff"
/>
</svg>
);

export default Icon;
30 changes: 30 additions & 0 deletions ensawards.org/data/apps/1inch-defi-app/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying apps

import OneInchProject from "data/projects/1inch/index.ts";
import { asInterpretedName } from "enssdk";

import { defineApp } from "../registry.ts";
import { type App, AppTypes } from "../types.ts";
import OneInchIcon from "./icon.tsx";

const OneInchDeFiApp: App = {
id: "1inch-defi-app",
appSlug: "1inch-defi-app",
type: AppTypes.DeFi,
project: OneInchProject,
name: '1inch"',
description:
"A DeFi aggregator app for swapping tokens across 13+ chains with the only native connection between Solana and EVM networks, with true self-custody and built-in security.",
socials: {
website: new URL("https://1inch.com/swap"),
twitter: new URL("https://x.com/1inch"),
ens: asInterpretedName("1inch.eth"),
},
icon: OneInchIcon,
// TODO: Add OG images
};

defineApp(OneInchDeFiApp);

export default OneInchDeFiApp;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
83 changes: 83 additions & 0 deletions ensawards.org/data/apps/aave-defi-app/benchmarks/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying app benchmarks

import type { AcceptanceTestBenchmark } from "data/acceptance-tests/types";
import AaveDeFiApp from "data/apps/aave-defi-app";
import { defineAppBenchmarks } from "data/benchmarks/registry";
import { BenchmarkResults } from "data/benchmarks/types";
import contributors from "data/contributors";
import {
acceptanceTestDetailsContainerStyles,
bestPracticeTechnicalDetailsLinkStyles,
} from "data/ens-best-practices/styles";
import type { BestPracticeBenchmarks } from "data/ens-best-practices/types";

import { parseTimestamp } from "@ensnode/ensnode-sdk";

import { cn } from "@/utils/tailwindClassConcatenation";

import correctlyResolveEnsv2TestNameAddressProofImageV3 from "./correctly-resolve-ensv2-test-name-address-proof-v3.gif";
import correctlyResolveEnsv2TestNameAddressProofImageV4 from "./correctly-resolve-ensv2-test-name-address-proof-v4.png";

const benchmarks: BestPracticeBenchmarks = {
// TODO: `Contract Naming` category is temporarily hidden due to unfit content,
// and so are all benchmarks belonging to it.
// We aim to fix it as soon as we have the capacity.
// See: https://github.com/namehash/ensawards/issues/222
"display-named-smart-contracts-mainnet": {
"mainnet-interactions-display-named-smart-contracts": undefined,
},
"display-named-smart-contracts-l2-chains": {
"l2-chain-interactions-display-named-smart-contracts": undefined,
},
"ensv2-ready-resolution": {
"correctly-resolve-ensv2-test-name-address": {
result: BenchmarkResults.PartialPass,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-09T11:56:00Z") },
],
notes: (
<div className={cn(acceptanceTestDetailsContainerStyles, "w-full")}>
<p className="w-full">
ENSv2 ready resolution was tested for two versions of the app:{" "}
<a
className={bestPracticeTechnicalDetailsLinkStyles}
href="https://app.aave.com/"
target="_blank"
rel="noopener noreferrer"
>
Aave&nbsp;(v3)
</a>{" "}
and{" "}
<a
className={bestPracticeTechnicalDetailsLinkStyles}
href="https://pro.aave.com/"
target="_blank"
rel="noopener noreferrer"
>
Aave&nbsp;Pro&nbsp;(v4)
</a>{" "}
using the &quot;watch&quot; tool for both of them. The resolved address is correct for
the v4 version, but <i>INCORRECT</i> for the v3 variant.
</p>
<div className="flex flex-col justify-start items-center gap-5">
<img
alt="Aave defi app fails to resolve the name for ENSv2"
src={correctlyResolveEnsv2TestNameAddressProofImageV3.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
<img
alt="Aave Pro defi app correctly resolves the name for ENSv2"
src={correctlyResolveEnsv2TestNameAddressProofImageV4.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
</div>
</div>
),
} as const satisfies AcceptanceTestBenchmark,
},
} as const satisfies BestPracticeBenchmarks;

defineAppBenchmarks(AaveDeFiApp, benchmarks);

export default benchmarks;
33 changes: 33 additions & 0 deletions ensawards.org/data/apps/aave-defi-app/icon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import React from "react";

import { cn } from "@/utils/tailwindClassConcatenation";

const Icon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (
<svg
width="266"
height="139"
viewBox="0 0 266 139"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className={cn("p-1", className)}
{...props}
>
<path
d="M97.5418 138.533C112.461 138.533 124.556 126.438 124.556 111.518C124.556 96.5987 112.461 84.5039 97.5418 84.5039C82.6221 84.5039 70.5273 96.5987 70.5273 111.518C70.5273 126.438 82.6221 138.533 97.5418 138.533Z"
fill="#9896FF"
style={{ fill: "#9896FF", fillOpacity: "1" }}
/>
<path
d="M168.149 138.533C183.069 138.533 195.164 126.438 195.164 111.518C195.164 96.5987 183.069 84.5039 168.149 84.5039C153.23 84.5039 141.135 96.5987 141.135 111.518C141.135 126.438 153.23 138.533 168.149 138.533Z"
fill="#9896FF"
style={{ fill: "#9896FF", fillOpacity: "1" }}
/>
<path
d="M132.8 0C59.4497 0 -0.0191954 60.6017 4.64786e-06 135.335H33.9264C33.9264 79.3281 77.8433 33.92 132.8 33.92C187.757 33.92 231.674 79.3281 231.674 135.335H265.6C265.613 60.6017 206.144 0 132.8 0Z"
fill="#9896FF"
style={{ fill: "#9896FF", fillOpacity: "1" }}
/>
</svg>
);

export default Icon;
30 changes: 30 additions & 0 deletions ensawards.org/data/apps/aave-defi-app/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying apps

import AaveProject from "data/projects/aave/index.ts";
import { asInterpretedName } from "enssdk";

import { defineApp } from "../registry.ts";
import { type App, AppTypes } from "../types.ts";
import AaveIcon from "./icon.tsx";

const AaveDeFiApp: App = {
id: "aave-defi-app",
appSlug: "aave-defi-app",
type: AppTypes.DeFi,
project: AaveProject,
name: "Aave",
description:
"A decentralized lending app where users can supply assets to earn yield and borrow against their collateral across Ethereum and multiple L2 networks.",
socials: {
website: new URL("https://aave.com/app"),
twitter: new URL("https://x.com/aave"),
ens: asInterpretedName("aave.eth"),
},
icon: AaveIcon,
// TODO: Add OG images
};

defineApp(AaveDeFiApp);

export default AaveDeFiApp;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
63 changes: 63 additions & 0 deletions ensawards.org/data/apps/lido-defi-app/benchmarks/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying app benchmarks

import type { AcceptanceTestBenchmark } from "data/acceptance-tests/types";
import LidoDeFiApp from "data/apps/lido-defi-app";
import { defineAppBenchmarks } from "data/benchmarks/registry";
import { BenchmarkResults } from "data/benchmarks/types";
import contributors from "data/contributors";
import { acceptanceTestDetailsContainerStyles } from "data/ens-best-practices/styles";
import type { BestPracticeBenchmarks } from "data/ens-best-practices/types.ts";

import { parseTimestamp } from "@ensnode/ensnode-sdk";

import { cn } from "@/utils/tailwindClassConcatenation";

import correctlyResolveEnsv2TestNameAddressProofImageAddress from "./correctly-resolve-ensv2-test-name-address-proof-address.png";
import correctlyResolveEnsv2TestNameAddressProofImageName from "./correctly-resolve-ensv2-test-name-address-proof-name.png";
Comment thread
Y3drk marked this conversation as resolved.
Outdated
Comment thread
Y3drk marked this conversation as resolved.
Outdated

const benchmarks: BestPracticeBenchmarks = {
// TODO: `Contract Naming` category is temporarily hidden due to unfit content,
// and so are all benchmarks belonging to it.
// We aim to fix it as soon as we have the capacity.
// See: https://github.com/namehash/ensawards/issues/222
"display-named-smart-contracts-mainnet": {
"mainnet-interactions-display-named-smart-contracts": undefined,
},
"display-named-smart-contracts-l2-chains": {
"l2-chain-interactions-display-named-smart-contracts": undefined,
},
"ensv2-ready-resolution": {
"correctly-resolve-ensv2-test-name-address": {
result: BenchmarkResults.PartialPass,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-09T13:49:30Z") },
],
notes: (
<div className={cn(acceptanceTestDetailsContainerStyles, "w-full")}>
<p className="w-full">
ENSv2 ready resolution was tested using the &quot;rewards&quot; explorer. The app
doesn't explicitly prompt the user to pass an ENS name as identifier, but when when it
Comment thread
Y3drk marked this conversation as resolved.
Outdated
receives one, the resolved address is correct.
</p>
<div className="flex flex-col justify-start items-center gap-5">
<img
alt="Lido DeFi app correctly resolves the name for ENSv2"
src={correctlyResolveEnsv2TestNameAddressProofImageName.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
<img
alt="Proof that the resolution flow is the same for address and name inputs"
src={correctlyResolveEnsv2TestNameAddressProofImageAddress.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
</div>
</div>
),
} as const satisfies AcceptanceTestBenchmark,
},
} as const satisfies BestPracticeBenchmarks;

defineAppBenchmarks(LidoDeFiApp, benchmarks);

export default benchmarks;
Loading
Loading