ecash-lib 3.1.0 → 4.0.0
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.
- package/README.md +2 -0
- package/dist/consts.d.ts +20 -0
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +21 -1
- package/dist/consts.js.map +1 -1
- package/dist/ffi/ecash_lib_wasm_bg_browser.js +2597 -1753
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +5 -1
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +5 -1
- package/dist/ffi/ecash_lib_wasm_browser.d.ts +22 -1
- package/dist/ffi/ecash_lib_wasm_browser.js +115 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +17 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.js +116 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/initBrowser.js +7 -2
- package/dist/initBrowser.js.map +1 -1
- package/dist/initNodeJs.js +6 -1
- package/dist/initNodeJs.js.map +1 -1
- package/dist/io/bytes.d.ts +2 -0
- package/dist/io/bytes.d.ts.map +1 -1
- package/dist/io/bytes.js +10 -2
- package/dist/io/bytes.js.map +1 -1
- package/dist/payment/action.d.ts +107 -0
- package/dist/payment/action.d.ts.map +1 -0
- package/dist/payment/action.js +13 -0
- package/dist/payment/action.js.map +1 -0
- package/dist/payment/asn1.d.ts +61 -0
- package/dist/payment/asn1.d.ts.map +1 -0
- package/dist/payment/asn1.js +322 -0
- package/dist/payment/asn1.js.map +1 -0
- package/dist/payment/index.d.ts +5 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +39 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/payment/output.d.ts +31 -0
- package/dist/payment/output.d.ts.map +1 -0
- package/dist/payment/output.js +6 -0
- package/dist/payment/output.js.map +1 -0
- package/dist/payment/x509.d.ts +17 -0
- package/dist/payment/x509.d.ts.map +1 -0
- package/dist/payment/x509.js +23 -0
- package/dist/payment/x509.js.map +1 -0
- package/dist/publicKeyCrypto.d.ts +25 -0
- package/dist/publicKeyCrypto.d.ts.map +1 -0
- package/dist/publicKeyCrypto.js +48 -0
- package/dist/publicKeyCrypto.js.map +1 -0
- package/dist/token/alp.d.ts +28 -0
- package/dist/token/alp.d.ts.map +1 -1
- package/dist/token/alp.js +25 -2
- package/dist/token/alp.js.map +1 -1
- package/dist/token/alp.parse.d.ts +73 -0
- package/dist/token/alp.parse.d.ts.map +1 -0
- package/dist/token/alp.parse.js +168 -0
- package/dist/token/alp.parse.js.map +1 -0
- package/dist/token/common.d.ts +31 -0
- package/dist/token/common.d.ts.map +1 -1
- package/dist/token/common.js +23 -5
- package/dist/token/common.js.map +1 -1
- package/dist/token/empp.d.ts +10 -0
- package/dist/token/empp.d.ts.map +1 -1
- package/dist/token/empp.js +38 -1
- package/dist/token/empp.js.map +1 -1
- package/dist/token/slp.d.ts +20 -0
- package/dist/token/slp.d.ts.map +1 -1
- package/dist/token/slp.js +17 -2
- package/dist/token/slp.js.map +1 -1
- package/dist/token/slp.parse.d.ts +91 -0
- package/dist/token/slp.parse.d.ts.map +1 -0
- package/dist/token/slp.parse.js +251 -0
- package/dist/token/slp.parse.js.map +1 -0
- package/package.json +2 -2
- package/src/consts.ts +20 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.js +2597 -1753
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +5 -1
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +5 -1
- package/src/ffi/ecash_lib_wasm_browser.d.ts +22 -1
- package/src/ffi/ecash_lib_wasm_browser.js +115 -0
- package/src/ffi/ecash_lib_wasm_nodejs.d.ts +17 -0
- package/src/ffi/ecash_lib_wasm_nodejs.js +116 -1
- package/src/index.ts +3 -0
- package/src/initBrowser.ts +7 -3
- package/src/initNodeJs.ts +6 -1
- package/src/io/bytes.ts +11 -2
- package/src/payment/action.ts +123 -0
- package/src/payment/asn1.ts +440 -0
- package/src/payment/index.ts +11 -0
- package/src/payment/output.ts +37 -0
- package/src/payment/x509.ts +21 -0
- package/src/publicKeyCrypto.ts +62 -0
- package/src/token/alp.parse.ts +258 -0
- package/src/token/alp.ts +41 -1
- package/src/token/common.ts +43 -4
- package/src/token/empp.ts +42 -1
- package/src/token/slp.parse.ts +386 -0
- package/src/token/slp.ts +42 -1
package/dist/token/slp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slp.js","sourceRoot":"","sources":["../../src/token/slp.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,yCAAuC;AACvC,yCAA0C;AAC1C,oCAA2C;AAC3C,4CAAuD;AACvD,4CAAsC;AACtC,2CAAqE;AAErE,uBAAuB;AACV,QAAA,YAAY,GAAG,IAAA,mBAAU,EAAC,
|
|
1
|
+
{"version":3,"file":"slp.js","sourceRoot":"","sources":["../../src/token/slp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Script } from '../script.js';
|
|
2
|
+
import { BURN_STR, GENESIS_STR, GenesisInfo, MINT_STR, SEND_STR, UNKNOWN_STR } from './common.js';
|
|
3
|
+
import { SLP_FUNGIBLE, SLP_MINT_VAULT, SLP_NFT1_GROUP, SlpTokenType_Number } from './slp.js';
|
|
4
|
+
/** Parsed SLP GENESIS OP_RETURN Script */
|
|
5
|
+
export interface SlpGenesis {
|
|
6
|
+
/** "GENESIS" */
|
|
7
|
+
txType: typeof GENESIS_STR;
|
|
8
|
+
/** Token type of the token to create */
|
|
9
|
+
tokenType: SlpTokenType_Number;
|
|
10
|
+
/** Info about the token */
|
|
11
|
+
genesisInfo: GenesisInfo;
|
|
12
|
+
/** Number of token atoms to initially mint to out_idx=1 */
|
|
13
|
+
initialAtoms: bigint;
|
|
14
|
+
/** Output index to send the mint baton to, or undefined if none */
|
|
15
|
+
mintBatonOutIdx?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parsed SLP MINT (token type 0x01 and 0x81) OP_RETURN Script.
|
|
19
|
+
* Note: Token type 0x41 has no mint batons.
|
|
20
|
+
**/
|
|
21
|
+
export interface SlpMintClassic {
|
|
22
|
+
/** "MINT" */
|
|
23
|
+
txType: typeof MINT_STR;
|
|
24
|
+
/** Token type of the token to mint */
|
|
25
|
+
tokenType: typeof SLP_FUNGIBLE | typeof SLP_NFT1_GROUP;
|
|
26
|
+
/** Token ID of the token to mint */
|
|
27
|
+
tokenId: string;
|
|
28
|
+
/** Number of token atoms to mint to out_idx=1 */
|
|
29
|
+
additionalAtoms: bigint;
|
|
30
|
+
/** Output index to send the mint baton to, or undefined to destroy it */
|
|
31
|
+
mintBatonOutIdx?: number;
|
|
32
|
+
}
|
|
33
|
+
/** Parsed SLP MINT (token type 0x02) OP_RETURN Script */
|
|
34
|
+
export interface SlpMintVault {
|
|
35
|
+
/** "MINT" */
|
|
36
|
+
txType: typeof MINT_STR;
|
|
37
|
+
/** Token type of the token to mint (0x02) */
|
|
38
|
+
tokenType: typeof SLP_MINT_VAULT;
|
|
39
|
+
/** Token ID of the token to mint */
|
|
40
|
+
tokenId: string;
|
|
41
|
+
/** Array of the number of token atoms to mint to the outputs at 1 to N */
|
|
42
|
+
additionalAtomsArray: bigint[];
|
|
43
|
+
}
|
|
44
|
+
/** Parsed SLP MINT OP_RETURN Script */
|
|
45
|
+
export type SlpMint = SlpMintClassic | SlpMintVault;
|
|
46
|
+
/** Parsed SLP SEND OP_RETURN Script */
|
|
47
|
+
export interface SlpSend {
|
|
48
|
+
/** "SEND" */
|
|
49
|
+
txType: typeof SEND_STR;
|
|
50
|
+
/** Token type of the token to send */
|
|
51
|
+
tokenType: SlpTokenType_Number;
|
|
52
|
+
/** Token ID of the token to send */
|
|
53
|
+
tokenId: string;
|
|
54
|
+
/** Array of the number of token atoms to send to the outputs at 1 to N */
|
|
55
|
+
sendAtomsArray: bigint[];
|
|
56
|
+
}
|
|
57
|
+
/** Parsed SLP BURN OP_RETURN Script */
|
|
58
|
+
export interface SlpBurn {
|
|
59
|
+
/** "BURN" */
|
|
60
|
+
txType: typeof BURN_STR;
|
|
61
|
+
/** Token type of the token to burn */
|
|
62
|
+
tokenType: SlpTokenType_Number;
|
|
63
|
+
/** Token ID of the token to burn */
|
|
64
|
+
tokenId: string;
|
|
65
|
+
/** How many tokens should be burned */
|
|
66
|
+
burnAtoms: bigint;
|
|
67
|
+
}
|
|
68
|
+
/** New unknown SLP token type or tx type */
|
|
69
|
+
export interface SlpUnknown {
|
|
70
|
+
/** Placeholder for unknown token type or tx type */
|
|
71
|
+
txType: typeof UNKNOWN_STR;
|
|
72
|
+
/** Token type number */
|
|
73
|
+
tokenType: number;
|
|
74
|
+
}
|
|
75
|
+
/** Parsed SLP OP_RETURN Script */
|
|
76
|
+
export type SlpData = SlpGenesis | SlpMint | SlpSend | SlpBurn | SlpUnknown;
|
|
77
|
+
/**
|
|
78
|
+
* Parse the given SLP OP_RETURN Script.
|
|
79
|
+
*
|
|
80
|
+
* For data that's clearly not SLP it will return `undefined`.
|
|
81
|
+
* For example, if the OP_RETURN or LOKAD ID is missing.
|
|
82
|
+
*
|
|
83
|
+
* For an unknown token type, it'll return SlpUnknown.
|
|
84
|
+
*
|
|
85
|
+
* For a known token type, it'll parse the remaining data, or throw an error if
|
|
86
|
+
* the format is invalid or if there's an unknown tx type.
|
|
87
|
+
*
|
|
88
|
+
* This behavior mirrors that of Chronik for consistency.
|
|
89
|
+
**/
|
|
90
|
+
export declare function parseSlp(opreturnScript: Script): SlpData | undefined;
|
|
91
|
+
//# sourceMappingURL=slp.parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slp.parse.d.ts","sourceRoot":"","sources":["../../src/token/slp.parse.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAgB,MAAM,cAAc,CAAC;AACpD,OAAO,EACH,QAAQ,EACR,WAAW,EACX,WAAW,EAEX,QAAQ,EACR,QAAQ,EAER,WAAW,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAEH,YAAY,EAIZ,cAAc,EAGd,cAAc,EACd,mBAAmB,EACtB,MAAM,UAAU,CAAC;AAElB,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACvB,gBAAgB;IAChB,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,wCAAwC;IACxC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,2BAA2B;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;IAGI;AACJ,MAAM,WAAW,cAAc;IAC3B,aAAa;IACb,MAAM,EAAE,OAAO,QAAQ,CAAC;IACxB,sCAAsC;IACtC,SAAS,EAAE,OAAO,YAAY,GAAG,OAAO,cAAc,CAAC;IACvD,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,yDAAyD;AACzD,MAAM,WAAW,YAAY;IACzB,aAAa;IACb,MAAM,EAAE,OAAO,QAAQ,CAAC;IACxB,6CAA6C;IAC7C,SAAS,EAAE,OAAO,cAAc,CAAC;IACjC,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,uCAAuC;AACvC,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC;AAEpD,uCAAuC;AACvC,MAAM,WAAW,OAAO;IACpB,aAAa;IACb,MAAM,EAAE,OAAO,QAAQ,CAAC;IACxB,sCAAsC;IACtC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,uCAAuC;AACvC,MAAM,WAAW,OAAO;IACpB,aAAa;IACb,MAAM,EAAE,OAAO,QAAQ,CAAC;IACxB,sCAAsC;IACtC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACvB,oDAAoD;IACpD,MAAM,EAAE,OAAO,WAAW,CAAC;IAC3B,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,kCAAkC;AAClC,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5E;;;;;;;;;;;;IAYI;AACJ,wBAAgB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAgEpE"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) 2025 The Bitcoin developers
|
|
3
|
+
// Distributed under the MIT software license, see the accompanying
|
|
4
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseSlp = void 0;
|
|
7
|
+
const str_js_1 = require("../io/str.js");
|
|
8
|
+
const hex_js_1 = require("../io/hex.js");
|
|
9
|
+
const opcode_js_1 = require("../opcode.js");
|
|
10
|
+
const op_js_1 = require("../op.js");
|
|
11
|
+
const common_js_1 = require("./common.js");
|
|
12
|
+
const slp_js_1 = require("./slp.js");
|
|
13
|
+
/**
|
|
14
|
+
* Parse the given SLP OP_RETURN Script.
|
|
15
|
+
*
|
|
16
|
+
* For data that's clearly not SLP it will return `undefined`.
|
|
17
|
+
* For example, if the OP_RETURN or LOKAD ID is missing.
|
|
18
|
+
*
|
|
19
|
+
* For an unknown token type, it'll return SlpUnknown.
|
|
20
|
+
*
|
|
21
|
+
* For a known token type, it'll parse the remaining data, or throw an error if
|
|
22
|
+
* the format is invalid or if there's an unknown tx type.
|
|
23
|
+
*
|
|
24
|
+
* This behavior mirrors that of Chronik for consistency.
|
|
25
|
+
**/
|
|
26
|
+
function parseSlp(opreturnScript) {
|
|
27
|
+
const ops = opreturnScript.ops();
|
|
28
|
+
const opreturnOp = ops.next();
|
|
29
|
+
// Return undefined if not OP_RETURN
|
|
30
|
+
if (opreturnOp === undefined ||
|
|
31
|
+
(0, op_js_1.isPushOp)(opreturnOp) ||
|
|
32
|
+
opreturnOp !== opcode_js_1.OP_RETURN) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
// Return undefined if LOKAD ID is not "SLP\0"
|
|
36
|
+
const lokadId = ops.next();
|
|
37
|
+
if (lokadId === undefined || !(0, op_js_1.isPushOp)(lokadId)) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
if ((0, str_js_1.bytesToStr)(lokadId.data) !== slp_js_1.SLP_LOKAD_ID_STR) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
// Parse token type
|
|
44
|
+
const tokenTypeBytes = nextBytes(ops);
|
|
45
|
+
if (tokenTypeBytes === undefined) {
|
|
46
|
+
throw new Error('Missing tokenType');
|
|
47
|
+
}
|
|
48
|
+
if (tokenTypeBytes.length !== 1) {
|
|
49
|
+
throw new Error('tokenType must be exactly 1 byte');
|
|
50
|
+
}
|
|
51
|
+
const tokenType = tokenTypeBytes[0];
|
|
52
|
+
if (tokenType !== slp_js_1.SLP_FUNGIBLE &&
|
|
53
|
+
tokenType !== slp_js_1.SLP_MINT_VAULT &&
|
|
54
|
+
tokenType !== slp_js_1.SLP_NFT1_GROUP &&
|
|
55
|
+
tokenType !== slp_js_1.SLP_NFT1_CHILD) {
|
|
56
|
+
return {
|
|
57
|
+
txType: common_js_1.UNKNOWN_STR,
|
|
58
|
+
tokenType,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Parse tx type (GENESIS, MINT, SEND, BURN)
|
|
62
|
+
const txTypeBytes = nextBytes(ops);
|
|
63
|
+
if (txTypeBytes === undefined) {
|
|
64
|
+
throw new Error('Missing txType');
|
|
65
|
+
}
|
|
66
|
+
const txType = (0, str_js_1.bytesToStr)(txTypeBytes);
|
|
67
|
+
// Handle tx type specific parsing.
|
|
68
|
+
// Advances the `ops` Script iterator
|
|
69
|
+
switch (txType) {
|
|
70
|
+
case common_js_1.GENESIS_STR:
|
|
71
|
+
return nextGenesis(ops, tokenType);
|
|
72
|
+
case common_js_1.MINT_STR:
|
|
73
|
+
return nextMint(ops, tokenType);
|
|
74
|
+
case common_js_1.SEND_STR:
|
|
75
|
+
return nextSend(ops, tokenType);
|
|
76
|
+
case common_js_1.BURN_STR:
|
|
77
|
+
return nextBurn(ops, tokenType);
|
|
78
|
+
default:
|
|
79
|
+
throw new Error('Unknown txType');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.parseSlp = parseSlp;
|
|
83
|
+
function nextGenesis(ops, tokenType) {
|
|
84
|
+
// Parse genesis info
|
|
85
|
+
const tokenTicker = (0, str_js_1.bytesToStr)(nextBytesRequired(ops, 'tokenTicker'));
|
|
86
|
+
const tokenName = (0, str_js_1.bytesToStr)(nextBytesRequired(ops, 'tokenName'));
|
|
87
|
+
const url = (0, str_js_1.bytesToStr)(nextBytesRequired(ops, 'url'));
|
|
88
|
+
const hash = nextBytesRequired(ops, 'hash');
|
|
89
|
+
if (hash.length !== 0 && hash.length !== slp_js_1.SLP_GENESIS_HASH_NUM_BYTES) {
|
|
90
|
+
throw new Error(`hash must be either 0 or ${slp_js_1.SLP_GENESIS_HASH_NUM_BYTES} bytes`);
|
|
91
|
+
}
|
|
92
|
+
const decimalsBytes = nextBytesRequired(ops, 'decimals');
|
|
93
|
+
if (decimalsBytes.length !== 1) {
|
|
94
|
+
throw new Error('decimals must be exactly 1 byte');
|
|
95
|
+
}
|
|
96
|
+
const decimals = decimalsBytes[0];
|
|
97
|
+
if (decimals > common_js_1.MAX_DECIMALS) {
|
|
98
|
+
throw new Error(`decimals must be at most ${common_js_1.MAX_DECIMALS}`);
|
|
99
|
+
}
|
|
100
|
+
// Parse mint data
|
|
101
|
+
let mintVaultScripthash = undefined;
|
|
102
|
+
let mintBatonOutIdx = undefined;
|
|
103
|
+
if (tokenType === slp_js_1.SLP_MINT_VAULT) {
|
|
104
|
+
const scripthashBytes = nextBytesRequired(ops, 'mintVaultScripthash');
|
|
105
|
+
if (scripthashBytes.length !== slp_js_1.SLP_MINT_VAULT_SCRIPTHASH_NUM_BYTES) {
|
|
106
|
+
throw new Error(`mintVaultScripthash must be exactly ${slp_js_1.SLP_MINT_VAULT_SCRIPTHASH_NUM_BYTES} ` +
|
|
107
|
+
'bytes long');
|
|
108
|
+
}
|
|
109
|
+
mintVaultScripthash = (0, hex_js_1.toHex)(scripthashBytes);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
mintBatonOutIdx = nextMintOutIdx(ops, tokenType);
|
|
113
|
+
}
|
|
114
|
+
const initialAtoms = parseSlpAtoms(nextBytesRequired(ops, 'initialAtoms'));
|
|
115
|
+
nextEnd(ops, 'GENESIS');
|
|
116
|
+
return {
|
|
117
|
+
txType: common_js_1.GENESIS_STR,
|
|
118
|
+
tokenType,
|
|
119
|
+
genesisInfo: {
|
|
120
|
+
tokenTicker,
|
|
121
|
+
tokenName,
|
|
122
|
+
url,
|
|
123
|
+
hash: hash.length !== 0 ? (0, hex_js_1.toHex)(hash) : undefined,
|
|
124
|
+
mintVaultScripthash,
|
|
125
|
+
decimals,
|
|
126
|
+
},
|
|
127
|
+
initialAtoms,
|
|
128
|
+
mintBatonOutIdx,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function nextMint(ops, tokenType) {
|
|
132
|
+
const tokenId = nextTokenId(ops);
|
|
133
|
+
if (tokenType === slp_js_1.SLP_MINT_VAULT) {
|
|
134
|
+
const additionalAtomsArray = nextSlpAtomsArray(ops);
|
|
135
|
+
return {
|
|
136
|
+
txType: common_js_1.MINT_STR,
|
|
137
|
+
tokenType,
|
|
138
|
+
tokenId,
|
|
139
|
+
additionalAtomsArray,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
else if (tokenType === slp_js_1.SLP_NFT1_CHILD) {
|
|
143
|
+
throw new Error('SLP_NFT1_CHILD cannot have MINT transactions');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const mintBatonOutIdx = nextMintOutIdx(ops, tokenType);
|
|
147
|
+
const additionalAtoms = parseSlpAtoms(nextBytesRequired(ops, 'additionalAtoms'));
|
|
148
|
+
nextEnd(ops, 'MINT');
|
|
149
|
+
return {
|
|
150
|
+
txType: common_js_1.MINT_STR,
|
|
151
|
+
tokenType,
|
|
152
|
+
tokenId,
|
|
153
|
+
additionalAtoms,
|
|
154
|
+
mintBatonOutIdx,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function nextSend(ops, tokenType) {
|
|
159
|
+
const tokenId = nextTokenId(ops);
|
|
160
|
+
const sendAtomsArray = nextSlpAtomsArray(ops);
|
|
161
|
+
return {
|
|
162
|
+
txType: common_js_1.SEND_STR,
|
|
163
|
+
tokenType,
|
|
164
|
+
tokenId,
|
|
165
|
+
sendAtomsArray,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function nextBurn(ops, tokenType) {
|
|
169
|
+
const tokenId = nextTokenId(ops);
|
|
170
|
+
const burnAtoms = parseSlpAtoms(nextBytesRequired(ops, 'burnAtoms'));
|
|
171
|
+
nextEnd(ops, 'BURN');
|
|
172
|
+
return {
|
|
173
|
+
txType: common_js_1.BURN_STR,
|
|
174
|
+
tokenType,
|
|
175
|
+
tokenId,
|
|
176
|
+
burnAtoms,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function nextBytes(iter) {
|
|
180
|
+
const op = iter.next();
|
|
181
|
+
if (op === undefined) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
if (!(0, op_js_1.isPushOp)(op)) {
|
|
185
|
+
throw new Error('SLP only supports push-ops');
|
|
186
|
+
}
|
|
187
|
+
return op.data;
|
|
188
|
+
}
|
|
189
|
+
function nextBytesRequired(iter, name) {
|
|
190
|
+
const bytes = nextBytes(iter);
|
|
191
|
+
if (bytes === undefined) {
|
|
192
|
+
throw new Error('Missing ' + name);
|
|
193
|
+
}
|
|
194
|
+
return bytes;
|
|
195
|
+
}
|
|
196
|
+
function nextMintOutIdx(iter, tokenType) {
|
|
197
|
+
const outIdxBytes = nextBytesRequired(iter, 'mintBatonOutIdx');
|
|
198
|
+
if (outIdxBytes.length > 1) {
|
|
199
|
+
throw new Error('mintBatonOutIdx must be at most 1 byte long');
|
|
200
|
+
}
|
|
201
|
+
if (outIdxBytes.length === 1) {
|
|
202
|
+
if (tokenType === slp_js_1.SLP_NFT1_CHILD) {
|
|
203
|
+
throw new Error('SLP_NFT1_CHILD cannot have a mint baton');
|
|
204
|
+
}
|
|
205
|
+
const mintBatonOutIdx = outIdxBytes[0];
|
|
206
|
+
if (mintBatonOutIdx < 2) {
|
|
207
|
+
throw new Error('mintBatonOutIdx must be at least 2');
|
|
208
|
+
}
|
|
209
|
+
return mintBatonOutIdx;
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
function nextTokenId(iter) {
|
|
214
|
+
const tokenIdBytes = nextBytesRequired(iter, 'tokenId');
|
|
215
|
+
if (tokenIdBytes.length !== common_js_1.TOKEN_ID_NUM_BYTES) {
|
|
216
|
+
throw new Error(`tokenId must be exactly ${common_js_1.TOKEN_ID_NUM_BYTES} bytes long`);
|
|
217
|
+
}
|
|
218
|
+
// Note: SLP token ID endianness is big-endian
|
|
219
|
+
return (0, hex_js_1.toHex)(tokenIdBytes);
|
|
220
|
+
}
|
|
221
|
+
function nextSlpAtomsArray(iter) {
|
|
222
|
+
const atomsArray = [];
|
|
223
|
+
let bytes = undefined;
|
|
224
|
+
while ((bytes = nextBytes(iter)) !== undefined) {
|
|
225
|
+
atomsArray.push(parseSlpAtoms(bytes));
|
|
226
|
+
}
|
|
227
|
+
if (atomsArray.length === 0) {
|
|
228
|
+
throw new Error('atomsArray cannot be empty');
|
|
229
|
+
}
|
|
230
|
+
if (atomsArray.length > slp_js_1.SLP_MAX_SEND_OUTPUTS) {
|
|
231
|
+
throw new Error(`atomsArray can at most be ${slp_js_1.SLP_MAX_SEND_OUTPUTS} items long`);
|
|
232
|
+
}
|
|
233
|
+
return atomsArray;
|
|
234
|
+
}
|
|
235
|
+
function nextEnd(iter, txType) {
|
|
236
|
+
if (iter.next() !== undefined) {
|
|
237
|
+
throw new Error(`Superfluous ${txType} bytes`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function parseSlpAtoms(bytes) {
|
|
241
|
+
if (bytes.length !== slp_js_1.SLP_ATOMS_NUM_BYTES) {
|
|
242
|
+
throw new Error(`SLP atoms must be exactly ${slp_js_1.SLP_ATOMS_NUM_BYTES} bytes long`);
|
|
243
|
+
}
|
|
244
|
+
let number = 0n;
|
|
245
|
+
for (let i = 0; i < slp_js_1.SLP_ATOMS_NUM_BYTES; ++i) {
|
|
246
|
+
number <<= 8n;
|
|
247
|
+
number |= BigInt(bytes[i]);
|
|
248
|
+
}
|
|
249
|
+
return number;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=slp.parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slp.parse.js","sourceRoot":"","sources":["../../src/token/slp.parse.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ecash-lib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Library for eCash transaction building",
|
|
5
5
|
"main": "./dist/indexNodeJs.js",
|
|
6
6
|
"browser": "./dist/indexBrowser.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@types/mocha": "^10.0.6",
|
|
34
34
|
"@types/node": "^20.12.7",
|
|
35
35
|
"chai": "^5.1.0",
|
|
36
|
-
"chronik-client": "^3.
|
|
36
|
+
"chronik-client": "^3.3.0",
|
|
37
37
|
"mocha": "^10.4.0",
|
|
38
38
|
"mocha-junit-reporter": "^2.2.1",
|
|
39
39
|
"nyc": "^15.1.0",
|
package/src/consts.ts
CHANGED
|
@@ -6,3 +6,23 @@
|
|
|
6
6
|
export const DEFAULT_DUST_SATS = 546n;
|
|
7
7
|
/** Default fee per kB on the eCash network. */
|
|
8
8
|
export const DEFAULT_FEE_SATS_PER_KB = 1000n;
|
|
9
|
+
/**
|
|
10
|
+
* Confirmations required before coinbase utxos
|
|
11
|
+
* are spendable
|
|
12
|
+
*
|
|
13
|
+
* On eCash, coinbase utxos may be
|
|
14
|
+
*
|
|
15
|
+
* - mining rewards
|
|
16
|
+
* - staking rewards
|
|
17
|
+
* - IFP rewards
|
|
18
|
+
*/
|
|
19
|
+
export const COINBASE_MATURITY = 100;
|
|
20
|
+
/**
|
|
21
|
+
* As of May 5, 2025, the max bytes permitted in an OP_RETURN
|
|
22
|
+
* output on the eCash (XEC) network
|
|
23
|
+
*
|
|
24
|
+
* NB SLP spec works within this limit, ALP spec supports actions
|
|
25
|
+
* beyond this limit. For now, ecash-wallet is written accounting
|
|
26
|
+
* for this limit in ALP token action validation.
|
|
27
|
+
*/
|
|
28
|
+
export const OP_RETURN_MAX_BYTES = 223;
|