UNPKG

900 BJavaScriptView Raw
1import { base58Decode } from '../base58/index.js';
2import { checkAddressChecksum } from './checksum.js';
3import { defaults } from './defaults.js';
4/**
5 * @name checkAddress
6 * @summary Validates an ss58 address.
7 * @description
8 * From the provided input, validate that the address is a valid input.
9 */
10export function checkAddress(address, prefix) {
11 let decoded;
12 try {
13 decoded = base58Decode(address);
14 }
15 catch (error) {
16 return [false, error.message];
17 }
18 const [isValid, , , ss58Decoded] = checkAddressChecksum(decoded);
19 if (ss58Decoded !== prefix) {
20 return [false, `Prefix mismatch, expected ${prefix}, found ${ss58Decoded}`];
21 }
22 else if (!defaults.allowedEncodedLengths.includes(decoded.length)) {
23 return [false, 'Invalid decoded address length'];
24 }
25 return [isValid, isValid ? null : 'Invalid decoded address checksum'];
26}