-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbase58check-test.js
72 lines (58 loc) · 1.99 KB
/
base58check-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
"use strict";
const BASE58 = `123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`;
let Base58Check = require("./base58check.js").Base58Check;
let bs58 = require(`base-x`)(BASE58);
let b58c = Base58Check.create({
pubKeyHashVersion: "4c",
privateKeyVersion: "cc",
// TODO allow changing dicitonary
});
async function toWif() {
await [
// generated with dashcore
"XJQSCYgjEvXzDNj5QUSn1jxspgSJtBZ9Mtp5gHZ3cBrdMj2FYdxU",
"XBnGvT9GP1LsXNC3mXHmKx544FaY4kBQzSYUQ77X2P17AaVgQbYv",
"XFShaP4gGuXohTW4VGTaTvRptmhbsi7PPJuQpTjDouzC2yjVU4yT",
"XFPzxuhx4hW75uyJKRczmk88EUqeQsTHP1xngXXPKWrwhoineRLL",
"XFtVTxMFh1Ls1ySfg1TPVZCYswaJuuMx3CTar1XcfN5NceysSRqA",
"XJLDiUFwgFTi6CcjJFiJUCHJGfsfhSUgZ8jgyPm2AhPfDaTS21gm",
"XDgzfzNmKvbHk71EVpjUB6LDqWa8Pq88baD6iUo4oBzcekfL3Fdz",
"XE79AWSyEb1TdKSbbRVnEMCRp8kfK5iX1CdbmPkPNkWfCWZ3AQpz",
"XFPxuUn5Epz625e6FXAVXL5W8C87iLc8q8KK8ioexsU8dwj9RidW",
"XFdqUukoCypRmmSrVWCZm5gFC7DGKNByHr66DmVL6JZTEPzmkoog",
"XCBPnETeYM3CESgw94wM19u6qR4YWkokHB9MuCD4faTMbVeBRkmT",
].reduce(async function (prev, prv) {
await b58c.verify(prv);
}, Promise.resolve());
}
async function toPubKeyHash() {
let reference = `Xd5GzCN6mp77BeVEe6FrgqQt8MA1ge4Fsw`;
let hex = `4c 1a2e668007a28dbecb420a8e9ce8cdd1651f213d 6496ad2a`;
hex = hex.replace(/\s*/g, ``);
let bufAddr = Buffer.from(hex, `hex`);
let addr = bs58.encode(bufAddr);
if (addr !== reference) {
throw new Error(
"[SANITY FAIL] the universe no longer obeys the law of base58"
);
}
let parts = await b58c.verify(addr);
console.info(`\t` + JSON.stringify(parts));
let full = await b58c.encode(parts);
console.info(`\t${full}`);
if (full !== addr) {
throw new Error(`expected '${addr}' but got '${full}'`);
}
}
async function main() {
console.info("");
console.info("To WIF...");
await toWif();
console.info(`PASS`);
console.info("");
console.info(`To PubKeyHash...`);
await toPubKeyHash();
console.info(`PASS`);
console.info("");
}
main();