mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-01 22:39:03 -07:00
website_next: move hash logic to clients
This commit is contained in:
@@ -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/,
|
||||
);
|
||||
Reference in New Issue
Block a user