Skip to content
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/bitmart-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 BitMartExchange from "data/apps/bitmart-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(BitMartExchange, 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,80 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying app benchmarks

import { type AcceptanceTestBenchmarks, 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 depositAddresses = {
"at01-resolve-onchain-name": {
result: BenchmarkResults.Fail,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildEnsNotSupportedNote({
method: 'the "withdraw" flow',
proof: {
image: at1Proof,
alt: "BitMart Exchange doesn't allow ENS names as the recipient in the withdraw flow",
},
}),
},
"at02-resolve-name-needing-normalization": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at03-resolve-offchain-eth-subname": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at04-resolve-offchain-dns-name": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at05-resolve-name-on-other-evm-chain": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at06-resolve-bitcoin-address": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at07-resolve-solana-address": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at08-handle-invalid-address-format": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:03:27Z") },
],
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,44 @@
// 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";
Comment thread
Y3drk marked this conversation as resolved.
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 at1ProofImage from "./at-1.png";

const ensv2ReadyResolution = {
"correctly-resolve-ensv2-test-name-address": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-06-30T14:01:09Z") },
],
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="BitMart exchange doesn't allow ENS name as recipient in the withdrawal flow"
src={at1ProofImage.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
</div>
),
} as const satisfies AcceptanceTestBenchmark,
} as const satisfies AcceptanceTestBenchmarks;

export default ensv2ReadyResolution;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions ensawards.org/data/apps/bitmart-exchange/icon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import React from "react";

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

import icon from "./icon.png";

const Icon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="none"
className={cn("rounded-md py-0.5 bg-white", className)}
{...props}
>
<image href={icon.src} width="24" height="24" />
</svg>
);

export default Icon;
28 changes: 28 additions & 0 deletions ensawards.org/data/apps/bitmart-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 BitMartProject from "data/projects/bitmart";

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

const BitMartExchange: App = {
id: "bitmart-exchange",
appSlug: "bitmart-exchange",
type: AppTypes.Exchange,
project: BitMartProject,
name: "BitMart",
description:
"Cryptocurrency exchange for spot and futures trading across a broad token catalog, with savings and staking options for earning on idle assets.",
socials: {
website: new URL("https://www.bitmart.com"),
twitter: new URL("https://x.com/BitMartExchange"),
},
icon: BitMartIcon,
// TODO: Add OG images
};

defineApp(BitMartExchange);

export default BitMartExchange;
18 changes: 18 additions & 0 deletions ensawards.org/data/apps/coinw-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 CoinWExchange from "data/apps/coinw-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(CoinWExchange, 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,80 @@
// Read https://github.com/namehash/ensawards/blob/main/CONTRIBUTING.md
// for additional advice on adding and modifying app benchmarks

import { type AcceptanceTestBenchmarks, 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 depositAddresses = {
"at01-resolve-onchain-name": {
result: BenchmarkResults.Fail,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildEnsNotSupportedNote({
method: 'the "Add address" feature',
proof: {
image: at1Proof,
alt: "CoinW Exchange doesn't allow ENS names as the recipient identifier in the Add address feature",
},
}),
},
"at02-resolve-name-needing-normalization": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at03-resolve-offchain-eth-subname": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at04-resolve-offchain-dns-name": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at05-resolve-name-on-other-evm-chain": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at06-resolve-bitcoin-address": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at07-resolve-solana-address": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
notes: buildNotApplicableForFailedTest({ testNumber: 1 }),
},
"at08-handle-invalid-address-format": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T08:01:28Z") },
],
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,44 @@
// 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";
Comment thread
Y3drk marked this conversation as resolved.
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 at1ProofImage from "./at-1.png";

const ensv2ReadyResolution = {
"correctly-resolve-ensv2-test-name-address": {
result: BenchmarkResults.NotApplicable,
contributions: [
{ from: contributors.y3drk, lastUpdated: parseTimestamp("2026-07-01T07:58:39Z") },
],
notes: (
<div className={cn(acceptanceTestDetailsContainerStyles, "w-full")}>
<p className="w-full">
ENSv2 ready resolution was tested using the &quot;Add address&quot; feature. 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="CoinW exchange doesn't allow ENS name as recipient in the Add address feature"
src={at1ProofImage.src}
className="w-auto h-full max-h-[325px] rounded-xl"
/>
</div>
),
} as const satisfies AcceptanceTestBenchmark,
} as const satisfies AcceptanceTestBenchmarks;

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

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

const Icon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (
<svg
width="38"
height="38"
viewBox="-3.21 0 38 38"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className={cn("p-1", className)}
{...props}
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M29.8702 1.98267H12.7348V12.9202H29.8702V1.98267ZM12.7348 22.5873L12.7348 12.9202L1.70215 12.9202L1.70217 22.5873C1.70218 30.0007 7.68443 36.0104 15.0639 36.0104H29.8702V24.9271H15.0639C13.7776 24.9271 12.7348 23.8795 12.7348 22.5873Z"
fill="#5227FF"
></path>
</svg>
);

export default Icon;
28 changes: 28 additions & 0 deletions ensawards.org/data/apps/coinw-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 CoinWProject from "data/projects/coinw";

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

const CoinWExchange: App = {
id: "coinw-exchange",
appSlug: "coinw-exchange",
type: AppTypes.Exchange,
project: CoinWProject,
name: "CoinW",
description:
"Cryptocurrency exchange offering spot and perpetual futures trading, copy trading, and earn products for managing digital assets.",
socials: {
website: new URL("https://www.coinw.com"),
twitter: new URL("https://x.com/CoinWOfficial"),
},
icon: CoinWIcon,
// TODO: Add OG images
};

defineApp(CoinWExchange);

export default CoinWExchange;
Loading
Loading