@alephium/web3 0.38.0 → 0.38.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -6,6 +6,8 @@ export declare enum AddressType {
|
|
|
6
6
|
P2C = 3
|
|
7
7
|
}
|
|
8
8
|
export declare function validateAddress(address: string): void;
|
|
9
|
+
export declare function isAssetAddress(address: string): boolean;
|
|
10
|
+
export declare function isContractAddress(address: string): boolean;
|
|
9
11
|
export declare function groupOfAddress(address: string): number;
|
|
10
12
|
export declare function contractIdFromAddress(address: string): Uint8Array;
|
|
11
13
|
export declare function tokenIdFromAddress(address: string): Uint8Array;
|
|
@@ -20,7 +20,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
20
20
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.xorByte = exports.subContractId = exports.contractIdFromTx = exports.addressFromTokenId = exports.addressFromContractId = exports.addressFromScript = exports.addressFromPublicKey = exports.publicKeyFromPrivateKey = exports.groupOfPrivateKey = exports.tokenIdFromAddress = exports.contractIdFromAddress = exports.groupOfAddress = exports.validateAddress = exports.AddressType = void 0;
|
|
23
|
+
exports.xorByte = exports.subContractId = exports.contractIdFromTx = exports.addressFromTokenId = exports.addressFromContractId = exports.addressFromScript = exports.addressFromPublicKey = exports.publicKeyFromPrivateKey = exports.groupOfPrivateKey = exports.tokenIdFromAddress = exports.contractIdFromAddress = exports.groupOfAddress = exports.isContractAddress = exports.isAssetAddress = exports.validateAddress = exports.AddressType = void 0;
|
|
24
24
|
const elliptic_1 = require("elliptic");
|
|
25
25
|
const bn_js_1 = __importDefault(require("bn.js"));
|
|
26
26
|
const constants_1 = require("../constants");
|
|
@@ -37,6 +37,10 @@ var AddressType;
|
|
|
37
37
|
AddressType[AddressType["P2C"] = 3] = "P2C";
|
|
38
38
|
})(AddressType = exports.AddressType || (exports.AddressType = {}));
|
|
39
39
|
function validateAddress(address) {
|
|
40
|
+
decodeAndValidateAddress(address);
|
|
41
|
+
}
|
|
42
|
+
exports.validateAddress = validateAddress;
|
|
43
|
+
function decodeAndValidateAddress(address) {
|
|
40
44
|
let decoded;
|
|
41
45
|
try {
|
|
42
46
|
decoded = bs58_1.default.decode(address);
|
|
@@ -50,19 +54,27 @@ function validateAddress(address) {
|
|
|
50
54
|
if (addressType === AddressType.P2MPKH) {
|
|
51
55
|
// [1, n, ...hashes, m]
|
|
52
56
|
if ((decoded.length - 3) % 32 === 0)
|
|
53
|
-
return;
|
|
57
|
+
return decoded;
|
|
54
58
|
}
|
|
55
59
|
else if (addressType === AddressType.P2PKH || addressType === AddressType.P2SH || addressType === AddressType.P2C) {
|
|
56
60
|
// [type, ...hash]
|
|
57
61
|
if (decoded.length === 33)
|
|
58
|
-
return;
|
|
62
|
+
return decoded;
|
|
59
63
|
}
|
|
60
64
|
throw new Error(`Invalid address: ${address}`);
|
|
61
65
|
}
|
|
62
|
-
|
|
66
|
+
function isAssetAddress(address) {
|
|
67
|
+
const addressType = decodeAndValidateAddress(address)[0];
|
|
68
|
+
return addressType === AddressType.P2PKH || addressType === AddressType.P2MPKH || addressType === AddressType.P2SH;
|
|
69
|
+
}
|
|
70
|
+
exports.isAssetAddress = isAssetAddress;
|
|
71
|
+
function isContractAddress(address) {
|
|
72
|
+
const addressType = decodeAndValidateAddress(address)[0];
|
|
73
|
+
return addressType === AddressType.P2C;
|
|
74
|
+
}
|
|
75
|
+
exports.isContractAddress = isContractAddress;
|
|
63
76
|
function groupOfAddress(address) {
|
|
64
|
-
|
|
65
|
-
const decoded = bs58_1.default.decode(address);
|
|
77
|
+
const decoded = decodeAndValidateAddress(address);
|
|
66
78
|
const addressType = decoded[0];
|
|
67
79
|
const addressBody = decoded.slice(1);
|
|
68
80
|
if (addressType == AddressType.P2PKH) {
|
package/package.json
CHANGED
package/src/utils/address.ts
CHANGED
|
@@ -35,6 +35,10 @@ export enum AddressType {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export function validateAddress(address: string) {
|
|
38
|
+
decodeAndValidateAddress(address)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function decodeAndValidateAddress(address: string): Uint8Array {
|
|
38
42
|
let decoded: Uint8Array
|
|
39
43
|
try {
|
|
40
44
|
decoded = bs58.decode(address)
|
|
@@ -46,19 +50,27 @@ export function validateAddress(address: string) {
|
|
|
46
50
|
const addressType = decoded[0]
|
|
47
51
|
if (addressType === AddressType.P2MPKH) {
|
|
48
52
|
// [1, n, ...hashes, m]
|
|
49
|
-
if ((decoded.length - 3) % 32 === 0) return
|
|
53
|
+
if ((decoded.length - 3) % 32 === 0) return decoded
|
|
50
54
|
} else if (addressType === AddressType.P2PKH || addressType === AddressType.P2SH || addressType === AddressType.P2C) {
|
|
51
55
|
// [type, ...hash]
|
|
52
|
-
if (decoded.length === 33) return
|
|
56
|
+
if (decoded.length === 33) return decoded
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
throw new Error(`Invalid address: ${address}`)
|
|
56
60
|
}
|
|
57
61
|
|
|
58
|
-
export function
|
|
59
|
-
|
|
62
|
+
export function isAssetAddress(address: string) {
|
|
63
|
+
const addressType = decodeAndValidateAddress(address)[0]
|
|
64
|
+
return addressType === AddressType.P2PKH || addressType === AddressType.P2MPKH || addressType === AddressType.P2SH
|
|
65
|
+
}
|
|
60
66
|
|
|
61
|
-
|
|
67
|
+
export function isContractAddress(address: string) {
|
|
68
|
+
const addressType = decodeAndValidateAddress(address)[0]
|
|
69
|
+
return addressType === AddressType.P2C
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function groupOfAddress(address: string): number {
|
|
73
|
+
const decoded = decodeAndValidateAddress(address)
|
|
62
74
|
const addressType = decoded[0]
|
|
63
75
|
const addressBody = decoded.slice(1)
|
|
64
76
|
|