Skip to content
This repository was archived by the owner on Aug 5, 2026. It is now read-only.
Merged
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
18 changes: 18 additions & 0 deletions ensawards.org/data/apps/kucoin-exchange/benchmarks/index.tsx
Original file line number Diff line number Diff line change
@@ -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;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -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";
Comment thread
Y3drk marked this conversation as resolved.
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;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -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: (
<div className={cn(acceptanceTestDetailsContainerStyles, "w-full")}>
<p className="w-full">
ENSv2 ready resolution was tested using the &quot;withdraw&quot; flow. The app doesn't
support the use of ENS names at all as the recipient identifier.
<br />
<br />
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.
</p>
<img
alt="KuCoin exchange rejects ur.integration-tests.eth in the withdraw flow"
src={ensv2ProofImage.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
</div>
),
} as const satisfies AcceptanceTestBenchmark,
} as const satisfies AcceptanceTestBenchmarks;

export default ensv2ReadyResolution;
21 changes: 21 additions & 0 deletions ensawards.org/data/apps/kucoin-exchange/icon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from "react";

const Icon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (
<svg
fill="none"
height="40"
viewBox="0 0 40 40"
width="40"
xmlns="http://www.w3.org/2000/svg"
className={className}
{...props}
>
<rect fill="#01bc8d" height="40" rx="20" width="40" />
<path
d="m15.9206 20 7.1057 7.1051 4.4903-4.4899c.7869-.7868 2.0831-.7868 2.87 0 .787.7869.787 2.083 0 2.8699l-5.9253 5.9247c-.7869.7869-2.0831.7869-2.87 0l-8.5177-8.54v5.0916c0 1.1109-.9026 2.0367-2.0368 2.0367-1.13412 0-2.0368-.9026-2.0368-2.0367v-15.8765c0-1.1341.90268-2.0367 2.0368-2.0367 1.1342 0 2.0368.9026 2.0368 2.0367v5.0453l8.5408-8.54004c.787-.78688 2.0831-.78688 2.8701 0l5.9253 5.92474c.7869.7869.7869 2.083 0 2.8699-.787.7868-2.0831.7868-2.8701 0l-4.4903-4.4899zm7.1288-2.0366c-1.1341 0-2.0368.9026-2.0368 2.0366s.9027 2.0366 2.0368 2.0366c1.1342 0 2.0369-.9026 2.0369-2.0366-.0232-1.134-.9259-2.0366-2.0369-2.0366z"
fill="#fff"
/>
</svg>
);

export default Icon;
28 changes: 28 additions & 0 deletions ensawards.org/data/apps/kucoin-exchange/index.ts
Original file line number Diff line number Diff line change
@@ -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;
4 changes: 4 additions & 0 deletions ensawards.org/data/contributors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ const contributors = {
chainId: mainnet.id,
address: asNormalizedAddress("0xc0de20a37e2dac848f81a93bd85fe4acdde7c0de"),
},
notrab: {
chainId: mainnet.id,
address: asNormalizedAddress("0xf81bc66316a3f2a60adc258f97f61dfcbdd23bb1"),
},
} as const satisfies Record<ContributorAlias, Contributor>;

export default contributors;
21 changes: 21 additions & 0 deletions ensawards.org/data/projects/kucoin/icon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from "react";

const Icon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (
<svg
fill="none"
height="40"
viewBox="0 0 40 40"
width="40"
xmlns="http://www.w3.org/2000/svg"
className={className}
{...props}
>
<rect fill="#01bc8d" height="40" rx="20" width="40" />
<path
d="m15.9206 20 7.1057 7.1051 4.4903-4.4899c.7869-.7868 2.0831-.7868 2.87 0 .787.7869.787 2.083 0 2.8699l-5.9253 5.9247c-.7869.7869-2.0831.7869-2.87 0l-8.5177-8.54v5.0916c0 1.1109-.9026 2.0367-2.0368 2.0367-1.13412 0-2.0368-.9026-2.0368-2.0367v-15.8765c0-1.1341.90268-2.0367 2.0368-2.0367 1.1342 0 2.0368.9026 2.0368 2.0367v5.0453l8.5408-8.54004c.787-.78688 2.0831-.78688 2.8701 0l5.9253 5.92474c.7869.7869.7869 2.083 0 2.8699-.787.7868-2.0831.7868-2.8701 0l-4.4903-4.4899zm7.1288-2.0366c-1.1341 0-2.0368.9026-2.0368 2.0366s.9027 2.0366 2.0368 2.0366c1.1342 0 2.0369-.9026 2.0369-2.0366-.0232-1.134-.9259-2.0366-2.0369-2.0366z"
fill="#fff"
/>
</svg>
);

export default Icon;
23 changes: 23 additions & 0 deletions ensawards.org/data/projects/kucoin/index.ts
Original file line number Diff line number Diff line change
@@ -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;
1 change: 1 addition & 0 deletions ensawards.org/data/projects/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Loading