diff --git a/ensawards.org/data/apps/kucoin-exchange/benchmarks/index.tsx b/ensawards.org/data/apps/kucoin-exchange/benchmarks/index.tsx new file mode 100644 index 00000000..824e6a0b --- /dev/null +++ b/ensawards.org/data/apps/kucoin-exchange/benchmarks/index.tsx @@ -0,0 +1,18 @@ +// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md +// for additional advice on adding and modifying app benchmarks + +import KuCoinExchange from "data/apps/kucoin-exchange"; +import { defineAppBenchmarks } from "data/benchmarks/registry"; +import type { BestPracticeBenchmarks } from "data/ens-best-practices/types"; + +import depositAddresses from "./resolution/deposit-addresses"; +import ensv2ReadyResolution from "./resolution/ensv2-ready-resolution"; + +const benchmarks: BestPracticeBenchmarks = { + "ensv2-ready-resolution": ensv2ReadyResolution, + "deposit-addresses": depositAddresses, +}; + +defineAppBenchmarks(KuCoinExchange, benchmarks); + +export default benchmarks; diff --git a/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/deposit-addresses/at-1.png b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/deposit-addresses/at-1.png new file mode 100644 index 00000000..42c17bcd Binary files /dev/null and b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/deposit-addresses/at-1.png differ diff --git a/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/deposit-addresses/index.tsx b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/deposit-addresses/index.tsx new file mode 100644 index 00000000..efe1ded3 --- /dev/null +++ b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/deposit-addresses/index.tsx @@ -0,0 +1,107 @@ +// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md +// for additional advice on adding and modifying app benchmarks + +import type { AcceptanceTestBenchmarks } from "data/benchmarks/types"; +import { BenchmarkResults } from "data/benchmarks/types"; +import contributors from "data/contributors"; +import { + buildEnsNotSupportedNote, + buildNotApplicableForFailedTest, +} from "data/ens-best-practices/resolution/deposit-addresses/notes"; + +import { parseTimestamp } from "@ensnode/ensnode-sdk"; + +import at1Proof from "./at-1.png"; + +const method = 'the "withdraw" flow'; + +const depositAddresses = { + "at01-resolve-onchain-name": { + result: BenchmarkResults.Fail, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildEnsNotSupportedNote({ + method, + proof: { + image: at1Proof, + alt: "KuCoin doesn't accept ENS names as withdrawal addresses", + }, + }), + }, + "at02-resolve-name-needing-normalization": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, + "at03-resolve-offchain-eth-subname": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, + "at04-resolve-offchain-dns-name": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, + "at05-resolve-name-on-other-evm-chain": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, + "at06-resolve-bitcoin-address": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, + "at07-resolve-solana-address": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, + "at08-handle-invalid-address-format": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:36:36Z"), + }, + ], + notes: buildNotApplicableForFailedTest({ testNumber: 1 }), + }, +} as const satisfies AcceptanceTestBenchmarks; + +export default depositAddresses; diff --git a/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/ensv2-ready-resolution/at-1.png b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/ensv2-ready-resolution/at-1.png new file mode 100644 index 00000000..fb6e13d7 Binary files /dev/null and b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/ensv2-ready-resolution/at-1.png differ diff --git a/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/ensv2-ready-resolution/index.tsx b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/ensv2-ready-resolution/index.tsx new file mode 100644 index 00000000..9049e8ef --- /dev/null +++ b/ensawards.org/data/apps/kucoin-exchange/benchmarks/resolution/ensv2-ready-resolution/index.tsx @@ -0,0 +1,47 @@ +// 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 type { AcceptanceTestBenchmarks } from "data/benchmarks/types"; +import { BenchmarkResults } from "data/benchmarks/types"; +import contributors from "data/contributors"; +import { acceptanceTestDetailsContainerStyles } from "data/ens-best-practices/styles"; + +import { parseTimestamp } from "@ensnode/ensnode-sdk"; + +import { cn } from "@/utils/tailwindClassConcatenation"; + +import ensv2ProofImage from "./at-1.png"; + +const ensv2ReadyResolution = { + "correctly-resolve-ensv2-test-name-address": { + result: BenchmarkResults.NotApplicable, + contributions: [ + { + from: contributors.notrab, + lastUpdated: parseTimestamp("2026-07-02T07:38:16Z"), + }, + ], + notes: ( +
+

+ ENSv2 ready resolution was tested using the "withdraw" flow. The app doesn't + support the use of ENS names at all as the recipient identifier. +
+
+ While that's a key issue that this app is encouraged to improve, this best practice is + applicable specifically to apps that already have an existing ENS integration and making + sure existing integrations are ENSv2 compatible. Therefore, for this best practice we + apply a rating of not applicable. +

+ KuCoin exchange rejects ur.integration-tests.eth in the withdraw flow +
+ ), + } as const satisfies AcceptanceTestBenchmark, +} as const satisfies AcceptanceTestBenchmarks; + +export default ensv2ReadyResolution; diff --git a/ensawards.org/data/apps/kucoin-exchange/icon.tsx b/ensawards.org/data/apps/kucoin-exchange/icon.tsx new file mode 100644 index 00000000..ec68800a --- /dev/null +++ b/ensawards.org/data/apps/kucoin-exchange/icon.tsx @@ -0,0 +1,21 @@ +import React from "react"; + +const Icon = ({ className, ...props }: React.SVGProps) => ( + + + + +); + +export default Icon; diff --git a/ensawards.org/data/apps/kucoin-exchange/index.ts b/ensawards.org/data/apps/kucoin-exchange/index.ts new file mode 100644 index 00000000..1e08c075 --- /dev/null +++ b/ensawards.org/data/apps/kucoin-exchange/index.ts @@ -0,0 +1,28 @@ +// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md +// for additional advice on adding and modifying apps + +import KuCoinProject from "data/projects/kucoin"; + +import { defineApp } from "../registry.ts"; +import { type App, AppTypes } from "../types.ts"; +import KuCoinIcon from "./icon.tsx"; + +const KuCoinExchange: App = { + id: "kucoin-exchange", + appSlug: "kucoin-exchange", + type: AppTypes.Exchange, + project: KuCoinProject, + name: "KuCoin", + description: + "Cryptocurrency exchange app for buying, selling, and trading Bitcoin, Ethereum, and 1,000+ altcoins.", + socials: { + website: new URL("https://www.kucoin.com"), + twitter: new URL("https://x.com/KuCoinCom"), + }, + icon: KuCoinIcon, + // TODO: Add OG images +}; + +defineApp(KuCoinExchange); + +export default KuCoinExchange; diff --git a/ensawards.org/data/contributors/index.ts b/ensawards.org/data/contributors/index.ts index 2c149156..2b660189 100644 --- a/ensawards.org/data/contributors/index.ts +++ b/ensawards.org/data/contributors/index.ts @@ -44,6 +44,10 @@ const contributors = { chainId: mainnet.id, address: asNormalizedAddress("0xc0de20a37e2dac848f81a93bd85fe4acdde7c0de"), }, + notrab: { + chainId: mainnet.id, + address: asNormalizedAddress("0xf81bc66316a3f2a60adc258f97f61dfcbdd23bb1"), + }, } as const satisfies Record; export default contributors; diff --git a/ensawards.org/data/projects/kucoin/icon.tsx b/ensawards.org/data/projects/kucoin/icon.tsx new file mode 100644 index 00000000..ec68800a --- /dev/null +++ b/ensawards.org/data/projects/kucoin/icon.tsx @@ -0,0 +1,21 @@ +import React from "react"; + +const Icon = ({ className, ...props }: React.SVGProps) => ( + + + + +); + +export default Icon; diff --git a/ensawards.org/data/projects/kucoin/index.ts b/ensawards.org/data/projects/kucoin/index.ts new file mode 100644 index 00000000..9e8b937a --- /dev/null +++ b/ensawards.org/data/projects/kucoin/index.ts @@ -0,0 +1,23 @@ +// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md +// for additional advice on adding and modifying projects + +import { defineProject } from "../registry.ts"; +import type { Project } from "../types.ts"; +import { ProjectIds } from "../types.ts"; +import KuCoinIcon from "./icon.tsx"; + +const KuCoinProject: Project = { + id: ProjectIds.KuCoin, + name: "KuCoin", + description: + "Trusted cryptocurrency exchange for buying, selling, and trading Bitcoin, Ethereum, and 1,000+ altcoins, with secure access to the Web3 economy.", + icon: KuCoinIcon, + socials: { + website: new URL("https://www.kucoin.com"), + twitter: new URL("https://x.com/KuCoinCom"), + }, +}; + +defineProject(KuCoinProject); + +export default KuCoinProject; diff --git a/ensawards.org/data/projects/types.ts b/ensawards.org/data/projects/types.ts index cde40b6f..aec22ea5 100644 --- a/ensawards.org/data/projects/types.ts +++ b/ensawards.org/data/projects/types.ts @@ -54,6 +54,7 @@ export const ProjectIds = { BitMart: "project-bitmart", CoinW: "project-coinw", WEEX: "project-weex", + KuCoin: "project-kucoin", Bitunix: "project-bitunix", XTcom: "project-xtcom", WhiteBIT: "project-whitebit",