website_next: move hash logic to clients

This commit is contained in:
nym21
2026-07-01 17:04:29 +02:00
parent 5d83ee4d70
commit 153fcdf4e0
33 changed files with 1206 additions and 189 deletions
+34
View File
@@ -0,0 +1,34 @@
import assert from "node:assert/strict";
import { BrkClient, addressPayloadHashPrefix } from "../index.js";
const vectors = [
[Uint8Array.of(0x4e, 0x73), "58101afa51a1ecfd"],
[Uint8Array.from({ length: 20 }, (_, i) => i), "c3327ecb8ae1ff23"],
[Uint8Array.from({ length: 32 }, (_, i) => i), "c0186990f026b180"],
[Uint8Array.from({ length: 65 }, (_, i) => i), "0d4b77027ae7d700"],
];
for (const [payload, hash] of vectors) {
assert.equal(addressPayloadHashPrefix(payload, 16), hash);
assert.equal(BrkClient.addressPayloadHashPrefix(payload, 8), hash.slice(0, 8));
}
assert.throws(() => addressPayloadHashPrefix(Uint8Array.of(), 16), /non-empty/);
assert.throws(() => addressPayloadHashPrefix(new Uint8Array(66), 16), /at most 65/);
assert.throws(() => addressPayloadHashPrefix(Uint8Array.of(1, 2), 0), /1 to 16/);
const client = new BrkClient("http://127.0.0.1:0");
client.getAddressHashPrefixMatches = (addrType, prefix) => ({ addrType, prefix, truncated: false, addresses: [] });
assert.deepEqual(
client.getAddressPayloadHashPrefixMatches("p2pkh", Uint8Array.from({ length: 20 }, (_, i) => i), 8),
{ addrType: "p2pkh", prefix: "c3327ecb", truncated: false, addresses: [] },
);
assert.throws(
() => client.getAddressPayloadHashPrefixMatches("p2pkh", Uint8Array.of(1, 2), 8),
/p2pkh address payload length 20 bytes/,
);
assert.throws(
() => client.getAddressPayloadHashPrefixMatches("op_return", Uint8Array.of(1, 2), 8),
/Unsupported address type/,
);