@kaspacom/kcc20-tx-builder 0.2.5 → 0.5.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/CHANGELOG.md +26 -0
- package/README.md +54 -8
- package/RELEASING.md +93 -0
- package/SECURITY.md +16 -0
- package/artifacts/KCC20SnapshotBootstrap.placeholder.json +101677 -0
- package/artifacts/KCC20SnapshotController.placeholder.json +46547 -0
- package/artifacts/kcc20-snapshot-bootstrap/KCC20SnapshotBootstrap.placeholder.json +101677 -0
- package/artifacts/kcc20-snapshot-controller/KCC20SnapshotController.placeholder.json +46547 -0
- package/artifacts/snapshot-standards.lock.json +56 -0
- package/dist/artifacts.d.ts +31 -0
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +31 -0
- package/dist/artifacts.js.map +1 -1
- package/dist/cjs/artifacts.d.ts +31 -0
- package/dist/cjs/artifacts.js +32 -1
- package/dist/cjs/artifacts.js.map +1 -1
- package/dist/cjs/engine.js +58 -44
- package/dist/cjs/engine.js.map +1 -1
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/operations.d.ts +1 -1
- package/dist/cjs/operations.js +4 -0
- package/dist/cjs/operations.js.map +1 -1
- package/dist/cjs/sale-common.d.ts +1 -1
- package/dist/cjs/sale-common.js +39 -4
- package/dist/cjs/sale-common.js.map +1 -1
- package/dist/cjs/snapshot-deployment.d.ts +82 -0
- package/dist/cjs/snapshot-deployment.js +82 -0
- package/dist/cjs/snapshot-deployment.js.map +1 -0
- package/dist/cjs/snapshot-operation.d.ts +26 -0
- package/dist/cjs/snapshot-operation.js +1308 -0
- package/dist/cjs/snapshot-operation.js.map +1 -0
- package/dist/cjs/snapshot-signerless-transactions.d.ts +132 -0
- package/dist/cjs/snapshot-signerless-transactions.js +746 -0
- package/dist/cjs/snapshot-signerless-transactions.js.map +1 -0
- package/dist/cjs/snapshot-signerless.d.ts +226 -0
- package/dist/cjs/snapshot-signerless.js +1022 -0
- package/dist/cjs/snapshot-signerless.js.map +1 -0
- package/dist/cjs/snapshot-verification.d.ts +57 -0
- package/dist/cjs/snapshot-verification.js +100 -0
- package/dist/cjs/snapshot-verification.js.map +1 -0
- package/dist/cjs/token-operation.js +3 -3
- package/dist/cjs/token-operation.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +58 -44
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/operations.d.ts +1 -1
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +4 -0
- package/dist/operations.js.map +1 -1
- package/dist/sale-common.d.ts +1 -1
- package/dist/sale-common.d.ts.map +1 -1
- package/dist/sale-common.js +39 -4
- package/dist/sale-common.js.map +1 -1
- package/dist/snapshot-deployment.d.ts +83 -0
- package/dist/snapshot-deployment.d.ts.map +1 -0
- package/dist/snapshot-deployment.js +78 -0
- package/dist/snapshot-deployment.js.map +1 -0
- package/dist/snapshot-operation.d.ts +27 -0
- package/dist/snapshot-operation.d.ts.map +1 -0
- package/dist/snapshot-operation.js +1303 -0
- package/dist/snapshot-operation.js.map +1 -0
- package/dist/snapshot-signerless-transactions.d.ts +133 -0
- package/dist/snapshot-signerless-transactions.d.ts.map +1 -0
- package/dist/snapshot-signerless-transactions.js +735 -0
- package/dist/snapshot-signerless-transactions.js.map +1 -0
- package/dist/snapshot-signerless.d.ts +227 -0
- package/dist/snapshot-signerless.d.ts.map +1 -0
- package/dist/snapshot-signerless.js +993 -0
- package/dist/snapshot-signerless.js.map +1 -0
- package/dist/snapshot-verification.d.ts +58 -0
- package/dist/snapshot-verification.d.ts.map +1 -0
- package/dist/snapshot-verification.js +96 -0
- package/dist/snapshot-verification.js.map +1 -0
- package/dist/token-operation.js +3 -3
- package/dist/token-operation.js.map +1 -1
- package/docs/API.md +67 -0
- package/docs/COMPATIBILITY.json +84 -0
- package/docs/INTEGRATION.md +215 -0
- package/docs/LIVE_TRANSFER.md +106 -0
- package/docs/RECIPES.md +175 -0
- package/docs/TRANSACTION_GUIDE.md +163 -0
- package/docs/snapshot-start.md +27 -0
- package/examples/README.md +81 -0
- package/examples/backend/cli.ts +55 -0
- package/examples/backend/recipe.ts +39 -0
- package/examples/backend/runtime.ts +13 -0
- package/examples/frontend/index.html +48 -0
- package/examples/frontend/main.ts +213 -0
- package/examples/frontend/runtime.ts +14 -0
- package/examples/package-lock.json +1287 -0
- package/examples/package.json +23 -0
- package/examples/shared/build.ts +179 -0
- package/examples/shared/fixture.ts +24 -0
- package/examples/shared/live-transfer.ts +155 -0
- package/examples/shared/recipe-fixtures.ts +543 -0
- package/examples/shared/recipes.ts +55 -0
- package/examples/shared/signing.ts +110 -0
- package/examples/shared/timeout.ts +8 -0
- package/examples/test/browser.ts +116 -0
- package/examples/test/build.test.ts +197 -0
- package/examples/test/recipes.test.ts +59 -0
- package/examples/test/sources.test.ts +73 -0
- package/examples/tsconfig.json +26 -0
- package/examples/vendor/NOTICE.md +15 -0
- package/examples/vendor/kaspa/LICENSE +15 -0
- package/examples/vendor/kaspa/kaspa.d.ts +8908 -0
- package/examples/vendor/kaspa/kaspa.js +15202 -0
- package/examples/vendor/kaspa/kaspa_bg.wasm +0 -0
- package/examples/vendor/kaspa/package.json +24 -0
- package/package.json +21 -4
- package/src/artifacts.ts +35 -0
- package/src/engine.ts +91 -97
- package/src/index.ts +8 -0
- package/src/operations.ts +4 -0
- package/src/sale-common.ts +44 -3
- package/src/snapshot-deployment.ts +108 -0
- package/src/snapshot-operation.ts +1920 -0
- package/src/snapshot-signerless-transactions.ts +1272 -0
- package/src/snapshot-signerless.ts +1525 -0
- package/src/snapshot-verification.ts +90 -0
- package/src/token-operation.ts +3 -3
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "kaspacom-contract-standards-lock/v1",
|
|
3
|
+
"reviewedAt": "2026-09-10",
|
|
4
|
+
"kccs": {
|
|
5
|
+
"repository": "https://github.com/kaspanet/kccs",
|
|
6
|
+
"commit": "54f4f9c2730f77ec5b1ee8bc746d7f94d83b8ee6",
|
|
7
|
+
"documents": [
|
|
8
|
+
"kcc-0001.md",
|
|
9
|
+
"kcc-0002.md",
|
|
10
|
+
"kcc-0020.md",
|
|
11
|
+
"kcc-0020/borrowed-receive-authorization.md"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"kip20": {
|
|
15
|
+
"repository": "https://github.com/kaspanet/kips",
|
|
16
|
+
"document": "kip-0020.md"
|
|
17
|
+
},
|
|
18
|
+
"silverscript": {
|
|
19
|
+
"repository": "https://github.com/kaspanet/silverscript",
|
|
20
|
+
"baseCommit": "140bf184fd03dc0f5c29155f89e9e5d733a1152f",
|
|
21
|
+
"requiredPullRequests": [164, 217],
|
|
22
|
+
"requiredCommits": [
|
|
23
|
+
"97e5d7930aa7760bf9323f6f7011dce338ac38a7",
|
|
24
|
+
"7cf57773a2818675022a65374c602dcc141ea491"
|
|
25
|
+
],
|
|
26
|
+
"requiredPatches": [
|
|
27
|
+
{
|
|
28
|
+
"path": "compiler-patches/0001-fix-debugger-preserve-explicit-covenant-witnesses.patch.gz",
|
|
29
|
+
"sha256": "6090d20a7f12333f1850d5a93c53ffcfc52dedfb6d193527287ec0efe7b04867"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"path": "compiler-patches/0002-test-compiler-cover-KCC1-dispatch-with-ECDSA.patch.gz",
|
|
33
|
+
"sha256": "29b2a7f476387e73242966bf31c87c769d1d1daba5ba376da9c6eaa239b6f485"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"integrationTree": "d59eaab16114957c16de7c7198b7080e6db0126b"
|
|
37
|
+
},
|
|
38
|
+
"silverscriptKcc20": {
|
|
39
|
+
"repository": "https://github.com/kaspanet/silverscript",
|
|
40
|
+
"tag": "v1.0.0",
|
|
41
|
+
"commit": "3ed973335b59269293564805cc2c58a14595ec03",
|
|
42
|
+
"tree": "2a30f522768d9b4cae6fe30014326c689a25bd41",
|
|
43
|
+
"releaseAsset": "silverc-linux-x86_64.tar.gz",
|
|
44
|
+
"releaseAssetSha256": "058ffa17a390526f27280752f864b1bd680217cded14dfc5b7fd168d7e943fb5",
|
|
45
|
+
"releaseAssets": {
|
|
46
|
+
"linux-x64": {
|
|
47
|
+
"name": "silverc-linux-x86_64.tar.gz",
|
|
48
|
+
"sha256": "058ffa17a390526f27280752f864b1bd680217cded14dfc5b7fd168d7e943fb5"
|
|
49
|
+
},
|
|
50
|
+
"win32-x64": {
|
|
51
|
+
"name": "silverc-windows-x86_64.zip",
|
|
52
|
+
"sha256": "3e0d660c15a9e7ac90f3960da24d348b076b1891481bfe758db18accc8a102e1"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
package/dist/artifacts.d.ts
CHANGED
|
@@ -2,12 +2,43 @@ import type { ArtifactDescriptor, BuildContext } from "./models.js";
|
|
|
2
2
|
/** The only native KCC20 artifact used to build new transactions. */
|
|
3
3
|
export declare const KCC20_CURRENT_NATIVE_ARTIFACT_KEY: "KCC20.placeholder.json";
|
|
4
4
|
export declare const KCC20_ARTIFACT_SCRIPT_SHA256: Readonly<{
|
|
5
|
+
"KCC20SnapshotBootstrap.placeholder.json": "85edea7401eb415c447e6a0d0a45e1667802a269dde9fbe33d5881c4a4de51e2";
|
|
6
|
+
"KCC20SnapshotController.placeholder.json": "8f90525afcc1c23240f1d18eed30b3b377a72a323e8b48925dfac53bd5aab0ae";
|
|
5
7
|
"KCC20.placeholder.json": "4633b082f26adbf14600b767d6e2146e36ce67d63d8202c0281857922c05ac41";
|
|
6
8
|
"KCC20FeeTicket.placeholder.json": "ed81365466ee4c44db1210b3360783af8145f74e49e847848195e09c71ad6930";
|
|
7
9
|
"KCC20Orderbook.placeholder.json": "ef9fe81ff7aa2dc2df118d8d7cc126aca6f2f9c181b9c2d15727a538b23c6f71";
|
|
8
10
|
"KCC20Wrapper.placeholder.json": "f3bdf09be9aa258708a306283a4278a93cfb64f35fc50ed7d316b9b189ef9030";
|
|
9
11
|
"KCC20Vesting.placeholder.json": "1b84d74aa01b6a50edbff5bf1f9e988a5a6a00ec645458dfd3912ac532b77c33";
|
|
10
12
|
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Canonical raw artifact pins and structural metadata for signerless snapshot
|
|
15
|
+
* migrations. Consumers must use these values instead of maintaining their
|
|
16
|
+
* own copies; the raw SHA-256 pins cover the exact packaged JSON bytes.
|
|
17
|
+
*/
|
|
18
|
+
export declare const KCC20_SNAPSHOT_ARTIFACT_PINS: Readonly<{
|
|
19
|
+
bootstrap: Readonly<{
|
|
20
|
+
key: "KCC20SnapshotBootstrap.placeholder.json";
|
|
21
|
+
contractName: "KCC20SnapshotBootstrap";
|
|
22
|
+
artifactSha256: "bc566a964b5feb1c2055d5130af25951142d695472287b888c5537e9a56ee3d2";
|
|
23
|
+
scriptLength: 33718;
|
|
24
|
+
stateStart: 1;
|
|
25
|
+
stateLength: 405;
|
|
26
|
+
}>;
|
|
27
|
+
controller: Readonly<{
|
|
28
|
+
key: "KCC20SnapshotController.placeholder.json";
|
|
29
|
+
contractName: "KCC20SnapshotController";
|
|
30
|
+
artifactSha256: "f0d7b082e0680a90736948cd6658ccbc8600e097d9b4d5568013acdaafb39bf5";
|
|
31
|
+
scriptLength: 15297;
|
|
32
|
+
stateStart: 1;
|
|
33
|
+
stateLength: 432;
|
|
34
|
+
}>;
|
|
35
|
+
}>;
|
|
36
|
+
/** Canonical KCC20 template committed by both snapshot contracts. */
|
|
37
|
+
export declare const KCC20_SNAPSHOT_TOKEN_TEMPLATE_PIN: Readonly<{
|
|
38
|
+
hash: "911f0638ccb7368bf36d117f1725073ae7ee487ce8b58ca3e8375051c2d40f6c";
|
|
39
|
+
prefixLength: 1;
|
|
40
|
+
suffixLength: 25439;
|
|
41
|
+
}>;
|
|
11
42
|
export type Kcc20ArtifactKey = keyof typeof KCC20_ARTIFACT_SCRIPT_SHA256;
|
|
12
43
|
export declare function isKcc20ArtifactKey(value: string): value is Kcc20ArtifactKey;
|
|
13
44
|
export declare function assertKcc20ArtifactScriptHash(key: Kcc20ArtifactKey, artifact: unknown): void;
|
package/dist/artifacts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpE,qEAAqE;AACrE,eAAO,MAAM,iCAAiC,EAC5C,wBAAiC,CAAC;AAEpC,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpE,qEAAqE;AACrE,eAAO,MAAM,iCAAiC,EAC5C,wBAAiC,CAAC;AAEpC,eAAO,MAAM,4BAA4B;;;;;;;;EAavC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;EAmBvC,CAAC;AAEH,qEAAqE;AACrE,eAAO,MAAM,iCAAiC;;;;EAI5C,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,4BAA4B,CAAC;AAEzE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAK3E;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,OAAO,GAChB,IAAI,CA6BN;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,GACV,kBAAkB,CAUpB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,MAAM,GACnB,IAAI,CAQN"}
|
package/dist/artifacts.js
CHANGED
|
@@ -3,12 +3,43 @@ import { sha256 } from "@noble/hashes/sha256";
|
|
|
3
3
|
/** The only native KCC20 artifact used to build new transactions. */
|
|
4
4
|
export const KCC20_CURRENT_NATIVE_ARTIFACT_KEY = "KCC20.placeholder.json";
|
|
5
5
|
export const KCC20_ARTIFACT_SCRIPT_SHA256 = Object.freeze({
|
|
6
|
+
"KCC20SnapshotBootstrap.placeholder.json": "85edea7401eb415c447e6a0d0a45e1667802a269dde9fbe33d5881c4a4de51e2",
|
|
7
|
+
"KCC20SnapshotController.placeholder.json": "8f90525afcc1c23240f1d18eed30b3b377a72a323e8b48925dfac53bd5aab0ae",
|
|
6
8
|
[KCC20_CURRENT_NATIVE_ARTIFACT_KEY]: "4633b082f26adbf14600b767d6e2146e36ce67d63d8202c0281857922c05ac41",
|
|
7
9
|
"KCC20FeeTicket.placeholder.json": "ed81365466ee4c44db1210b3360783af8145f74e49e847848195e09c71ad6930",
|
|
8
10
|
"KCC20Orderbook.placeholder.json": "ef9fe81ff7aa2dc2df118d8d7cc126aca6f2f9c181b9c2d15727a538b23c6f71",
|
|
9
11
|
"KCC20Wrapper.placeholder.json": "f3bdf09be9aa258708a306283a4278a93cfb64f35fc50ed7d316b9b189ef9030",
|
|
10
12
|
"KCC20Vesting.placeholder.json": "1b84d74aa01b6a50edbff5bf1f9e988a5a6a00ec645458dfd3912ac532b77c33",
|
|
11
13
|
});
|
|
14
|
+
/**
|
|
15
|
+
* Canonical raw artifact pins and structural metadata for signerless snapshot
|
|
16
|
+
* migrations. Consumers must use these values instead of maintaining their
|
|
17
|
+
* own copies; the raw SHA-256 pins cover the exact packaged JSON bytes.
|
|
18
|
+
*/
|
|
19
|
+
export const KCC20_SNAPSHOT_ARTIFACT_PINS = Object.freeze({
|
|
20
|
+
bootstrap: Object.freeze({
|
|
21
|
+
key: "KCC20SnapshotBootstrap.placeholder.json",
|
|
22
|
+
contractName: "KCC20SnapshotBootstrap",
|
|
23
|
+
artifactSha256: "bc566a964b5feb1c2055d5130af25951142d695472287b888c5537e9a56ee3d2",
|
|
24
|
+
scriptLength: 33718,
|
|
25
|
+
stateStart: 1,
|
|
26
|
+
stateLength: 405,
|
|
27
|
+
}),
|
|
28
|
+
controller: Object.freeze({
|
|
29
|
+
key: "KCC20SnapshotController.placeholder.json",
|
|
30
|
+
contractName: "KCC20SnapshotController",
|
|
31
|
+
artifactSha256: "f0d7b082e0680a90736948cd6658ccbc8600e097d9b4d5568013acdaafb39bf5",
|
|
32
|
+
scriptLength: 15297,
|
|
33
|
+
stateStart: 1,
|
|
34
|
+
stateLength: 432,
|
|
35
|
+
}),
|
|
36
|
+
});
|
|
37
|
+
/** Canonical KCC20 template committed by both snapshot contracts. */
|
|
38
|
+
export const KCC20_SNAPSHOT_TOKEN_TEMPLATE_PIN = Object.freeze({
|
|
39
|
+
hash: "911f0638ccb7368bf36d117f1725073ae7ee487ce8b58ca3e8375051c2d40f6c",
|
|
40
|
+
prefixLength: 1,
|
|
41
|
+
suffixLength: 25439,
|
|
42
|
+
});
|
|
12
43
|
export function isKcc20ArtifactKey(value) {
|
|
13
44
|
return Object.prototype.hasOwnProperty.call(KCC20_ARTIFACT_SCRIPT_SHA256, value);
|
|
14
45
|
}
|
package/dist/artifacts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,qEAAqE;AACrE,MAAM,CAAC,MAAM,iCAAiC,GAC5C,wBAAiC,CAAC;AAEpC,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,CAAC,iCAAiC,CAAC,EACjC,kEAAkE;IACpE,iCAAiC,EAC/B,kEAAkE;IACpE,iCAAiC,EAC/B,kEAAkE;IACpE,+BAA+B,EAC7B,kEAAkE;IACpE,+BAA+B,EAC7B,kEAAkE;CACrE,CAAC,CAAC;AAIH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CACzC,4BAA4B,EAC5B,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,GAAqB,EACrB,QAAiB;IAEjB,MAAM,MAAM,GAAI,QAAwC,EAAE,MAAM,CAAC;IACjE,MAAM,KAAK,GACT,MAAM,YAAY,UAAU;QAC1B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnB,MAAM,CAAC,KAAK,CACV,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAC9D;YACH,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,iBAAiB,CACzB,mBAAmB,EACnB,2CAA2C,GAAG,EAAE,EAChD,EAAE,WAAW,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,YAAY,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,iBAAiB,CACzB,mBAAmB,EACnB,uCAAuC,GAAG,EAAE,EAC5C,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,CAC/C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,GAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,iBAAiB,CACzB,mBAAmB,EACnB,0CAA0C,GAAG,EAAE,EAC/C,EAAE,WAAW,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAA4B,EAC5B,YAAoB;IAEpB,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,iBAAiB,CACzB,mBAAmB,EACnB,uCAAuC,QAAQ,CAAC,GAAG,EAAE,EACrD,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/artifacts.d.ts
CHANGED
|
@@ -2,12 +2,43 @@ import type { ArtifactDescriptor, BuildContext } from "./models.js";
|
|
|
2
2
|
/** The only native KCC20 artifact used to build new transactions. */
|
|
3
3
|
export declare const KCC20_CURRENT_NATIVE_ARTIFACT_KEY: "KCC20.placeholder.json";
|
|
4
4
|
export declare const KCC20_ARTIFACT_SCRIPT_SHA256: Readonly<{
|
|
5
|
+
"KCC20SnapshotBootstrap.placeholder.json": "85edea7401eb415c447e6a0d0a45e1667802a269dde9fbe33d5881c4a4de51e2";
|
|
6
|
+
"KCC20SnapshotController.placeholder.json": "8f90525afcc1c23240f1d18eed30b3b377a72a323e8b48925dfac53bd5aab0ae";
|
|
5
7
|
"KCC20.placeholder.json": "4633b082f26adbf14600b767d6e2146e36ce67d63d8202c0281857922c05ac41";
|
|
6
8
|
"KCC20FeeTicket.placeholder.json": "ed81365466ee4c44db1210b3360783af8145f74e49e847848195e09c71ad6930";
|
|
7
9
|
"KCC20Orderbook.placeholder.json": "ef9fe81ff7aa2dc2df118d8d7cc126aca6f2f9c181b9c2d15727a538b23c6f71";
|
|
8
10
|
"KCC20Wrapper.placeholder.json": "f3bdf09be9aa258708a306283a4278a93cfb64f35fc50ed7d316b9b189ef9030";
|
|
9
11
|
"KCC20Vesting.placeholder.json": "1b84d74aa01b6a50edbff5bf1f9e988a5a6a00ec645458dfd3912ac532b77c33";
|
|
10
12
|
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Canonical raw artifact pins and structural metadata for signerless snapshot
|
|
15
|
+
* migrations. Consumers must use these values instead of maintaining their
|
|
16
|
+
* own copies; the raw SHA-256 pins cover the exact packaged JSON bytes.
|
|
17
|
+
*/
|
|
18
|
+
export declare const KCC20_SNAPSHOT_ARTIFACT_PINS: Readonly<{
|
|
19
|
+
bootstrap: Readonly<{
|
|
20
|
+
key: "KCC20SnapshotBootstrap.placeholder.json";
|
|
21
|
+
contractName: "KCC20SnapshotBootstrap";
|
|
22
|
+
artifactSha256: "bc566a964b5feb1c2055d5130af25951142d695472287b888c5537e9a56ee3d2";
|
|
23
|
+
scriptLength: 33718;
|
|
24
|
+
stateStart: 1;
|
|
25
|
+
stateLength: 405;
|
|
26
|
+
}>;
|
|
27
|
+
controller: Readonly<{
|
|
28
|
+
key: "KCC20SnapshotController.placeholder.json";
|
|
29
|
+
contractName: "KCC20SnapshotController";
|
|
30
|
+
artifactSha256: "f0d7b082e0680a90736948cd6658ccbc8600e097d9b4d5568013acdaafb39bf5";
|
|
31
|
+
scriptLength: 15297;
|
|
32
|
+
stateStart: 1;
|
|
33
|
+
stateLength: 432;
|
|
34
|
+
}>;
|
|
35
|
+
}>;
|
|
36
|
+
/** Canonical KCC20 template committed by both snapshot contracts. */
|
|
37
|
+
export declare const KCC20_SNAPSHOT_TOKEN_TEMPLATE_PIN: Readonly<{
|
|
38
|
+
hash: "911f0638ccb7368bf36d117f1725073ae7ee487ce8b58ca3e8375051c2d40f6c";
|
|
39
|
+
prefixLength: 1;
|
|
40
|
+
suffixLength: 25439;
|
|
41
|
+
}>;
|
|
11
42
|
export type Kcc20ArtifactKey = keyof typeof KCC20_ARTIFACT_SCRIPT_SHA256;
|
|
12
43
|
export declare function isKcc20ArtifactKey(value: string): value is Kcc20ArtifactKey;
|
|
13
44
|
export declare function assertKcc20ArtifactScriptHash(key: Kcc20ArtifactKey, artifact: unknown): void;
|
package/dist/cjs/artifacts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KCC20_ARTIFACT_SCRIPT_SHA256 = exports.KCC20_CURRENT_NATIVE_ARTIFACT_KEY = void 0;
|
|
3
|
+
exports.KCC20_SNAPSHOT_TOKEN_TEMPLATE_PIN = exports.KCC20_SNAPSHOT_ARTIFACT_PINS = exports.KCC20_ARTIFACT_SCRIPT_SHA256 = exports.KCC20_CURRENT_NATIVE_ARTIFACT_KEY = void 0;
|
|
4
4
|
exports.isKcc20ArtifactKey = isKcc20ArtifactKey;
|
|
5
5
|
exports.assertKcc20ArtifactScriptHash = assertKcc20ArtifactScriptHash;
|
|
6
6
|
exports.requireArtifact = requireArtifact;
|
|
@@ -10,12 +10,43 @@ const sha256_1 = require("@noble/hashes/sha256");
|
|
|
10
10
|
/** The only native KCC20 artifact used to build new transactions. */
|
|
11
11
|
exports.KCC20_CURRENT_NATIVE_ARTIFACT_KEY = "KCC20.placeholder.json";
|
|
12
12
|
exports.KCC20_ARTIFACT_SCRIPT_SHA256 = Object.freeze({
|
|
13
|
+
"KCC20SnapshotBootstrap.placeholder.json": "85edea7401eb415c447e6a0d0a45e1667802a269dde9fbe33d5881c4a4de51e2",
|
|
14
|
+
"KCC20SnapshotController.placeholder.json": "8f90525afcc1c23240f1d18eed30b3b377a72a323e8b48925dfac53bd5aab0ae",
|
|
13
15
|
[exports.KCC20_CURRENT_NATIVE_ARTIFACT_KEY]: "4633b082f26adbf14600b767d6e2146e36ce67d63d8202c0281857922c05ac41",
|
|
14
16
|
"KCC20FeeTicket.placeholder.json": "ed81365466ee4c44db1210b3360783af8145f74e49e847848195e09c71ad6930",
|
|
15
17
|
"KCC20Orderbook.placeholder.json": "ef9fe81ff7aa2dc2df118d8d7cc126aca6f2f9c181b9c2d15727a538b23c6f71",
|
|
16
18
|
"KCC20Wrapper.placeholder.json": "f3bdf09be9aa258708a306283a4278a93cfb64f35fc50ed7d316b9b189ef9030",
|
|
17
19
|
"KCC20Vesting.placeholder.json": "1b84d74aa01b6a50edbff5bf1f9e988a5a6a00ec645458dfd3912ac532b77c33",
|
|
18
20
|
});
|
|
21
|
+
/**
|
|
22
|
+
* Canonical raw artifact pins and structural metadata for signerless snapshot
|
|
23
|
+
* migrations. Consumers must use these values instead of maintaining their
|
|
24
|
+
* own copies; the raw SHA-256 pins cover the exact packaged JSON bytes.
|
|
25
|
+
*/
|
|
26
|
+
exports.KCC20_SNAPSHOT_ARTIFACT_PINS = Object.freeze({
|
|
27
|
+
bootstrap: Object.freeze({
|
|
28
|
+
key: "KCC20SnapshotBootstrap.placeholder.json",
|
|
29
|
+
contractName: "KCC20SnapshotBootstrap",
|
|
30
|
+
artifactSha256: "bc566a964b5feb1c2055d5130af25951142d695472287b888c5537e9a56ee3d2",
|
|
31
|
+
scriptLength: 33718,
|
|
32
|
+
stateStart: 1,
|
|
33
|
+
stateLength: 405,
|
|
34
|
+
}),
|
|
35
|
+
controller: Object.freeze({
|
|
36
|
+
key: "KCC20SnapshotController.placeholder.json",
|
|
37
|
+
contractName: "KCC20SnapshotController",
|
|
38
|
+
artifactSha256: "f0d7b082e0680a90736948cd6658ccbc8600e097d9b4d5568013acdaafb39bf5",
|
|
39
|
+
scriptLength: 15297,
|
|
40
|
+
stateStart: 1,
|
|
41
|
+
stateLength: 432,
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
/** Canonical KCC20 template committed by both snapshot contracts. */
|
|
45
|
+
exports.KCC20_SNAPSHOT_TOKEN_TEMPLATE_PIN = Object.freeze({
|
|
46
|
+
hash: "911f0638ccb7368bf36d117f1725073ae7ee487ce8b58ca3e8375051c2d40f6c",
|
|
47
|
+
prefixLength: 1,
|
|
48
|
+
suffixLength: 25439,
|
|
49
|
+
});
|
|
19
50
|
function isKcc20ArtifactKey(value) {
|
|
20
51
|
return Object.prototype.hasOwnProperty.call(exports.KCC20_ARTIFACT_SCRIPT_SHA256, value);
|
|
21
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/artifacts.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/artifacts.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/engine.js
CHANGED
|
@@ -6,6 +6,7 @@ const sha256_1 = require("@noble/hashes/sha256");
|
|
|
6
6
|
const sale_common_js_1 = require("./sale-common.js");
|
|
7
7
|
const abi_js_1 = require("./abi.js");
|
|
8
8
|
const operations_js_1 = require("./operations.js");
|
|
9
|
+
const snapshot_operation_js_1 = require("./snapshot-operation.js");
|
|
9
10
|
const protocol_js_1 = require("./protocol.js");
|
|
10
11
|
const deploy_receipt_js_1 = require("./deploy-receipt.js");
|
|
11
12
|
const artifacts_js_1 = require("./artifacts.js");
|
|
@@ -40,20 +41,16 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
40
41
|
throw new Error("No source provider or RPC client was supplied to the KCC20 builder");
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return InjectedRpcClient;
|
|
47
|
-
return Reflect.get(target, property, receiver);
|
|
48
|
-
},
|
|
49
|
-
});
|
|
44
|
+
// Bundlers can freeze module namespace exports. A Proxy cannot replace a
|
|
45
|
+
// non-configurable RpcClient property; copy the host exports before adapting it.
|
|
46
|
+
const kaspaWasm = { ...options.wasm, RpcClient: InjectedRpcClient };
|
|
50
47
|
const INPUT_SCHEMA = "kcc20-in-process-pskt-builder-input/v1";
|
|
51
48
|
const OUTPUT_SCHEMA = "kcc20-in-process-pskt-builder-output/v1";
|
|
52
49
|
const DEFAULT_DEPLOY_TKAS = 1;
|
|
53
50
|
const DEFAULT_PRIORITY_FEE = 10000n;
|
|
54
51
|
const DEFAULT_MATCHER_PRIORITY_FEE = 30000000n;
|
|
55
52
|
const DEFAULT_WRAPPER_DEPLOY_PRIORITY_FEE = 10000000n;
|
|
56
|
-
const DEFAULT_WRPC_URL = "
|
|
53
|
+
const DEFAULT_WRPC_URL = "wss://tn10-node.kaspa.com/testnet-10";
|
|
57
54
|
const MIN_FILL_GROSS_SOMPI = 50000000n;
|
|
58
55
|
const MIN_RELAY_FEE_PER_MASS_SOMPI = 100n;
|
|
59
56
|
const TOCCATA_COMPUTE_BUDGET_MASS_PER_UNIT = 100n;
|
|
@@ -116,7 +113,10 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
116
113
|
.then((artifact) => {
|
|
117
114
|
if (!artifact)
|
|
118
115
|
throw new Error(`Missing supplied KCC20 artifact: ${path}`);
|
|
119
|
-
const
|
|
116
|
+
const artifactValue = artifact && typeof artifact === "object" && !Array.isArray(artifact)
|
|
117
|
+
? (artifact.artifact ?? artifact)
|
|
118
|
+
: artifact;
|
|
119
|
+
const normalized = (0, abi_js_1.normalizeSilverScriptArtifact)(artifactValue);
|
|
120
120
|
(0, artifacts_js_1.assertKcc20ArtifactScriptHash)(path, normalized);
|
|
121
121
|
return normalized;
|
|
122
122
|
})
|
|
@@ -294,6 +294,15 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
294
294
|
function covenantScriptBuilder(kw) {
|
|
295
295
|
return new kw.ScriptBuilder({ flags: { covenantsEnabled: true } });
|
|
296
296
|
}
|
|
297
|
+
const buildSnapshotMigrationPskt = (0, snapshot_operation_js_1.createKcc20SnapshotPsktBuilder)({
|
|
298
|
+
wasm: options.wasm,
|
|
299
|
+
artifacts: options.artifacts,
|
|
300
|
+
artifactProvider: options.artifactProvider,
|
|
301
|
+
config: options.config,
|
|
302
|
+
sourceProvider: options.sourceProvider,
|
|
303
|
+
rpcClientFactory: options.rpcClientFactory,
|
|
304
|
+
transactionWithCalculatedFeeChange,
|
|
305
|
+
});
|
|
297
306
|
const psktBuilderByKey = Object.freeze({
|
|
298
307
|
"kcc20.deploy-token": buildKcc20DeployPskt,
|
|
299
308
|
"kcc20.mint": buildKcc20MintPskt,
|
|
@@ -319,6 +328,10 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
319
328
|
"kcc20orderbook.cancel-ask": buildWrappedCancelPskt,
|
|
320
329
|
"kcc20orderbook.cancel-bid": buildWrappedCancelPskt,
|
|
321
330
|
"kcc20orderbook.matcher-settle-crossed": buildWrappedCrossMatchPskt,
|
|
331
|
+
"kcc20-snapshot.deploy-bootstrap": buildSnapshotMigrationPskt,
|
|
332
|
+
"kcc20-snapshot.deploy-controller": buildSnapshotMigrationPskt,
|
|
333
|
+
"kcc20-snapshot.start": buildSnapshotMigrationPskt,
|
|
334
|
+
"kcc20-snapshot.claim": buildSnapshotMigrationPskt,
|
|
322
335
|
});
|
|
323
336
|
const missingBuilderKeys = operations_js_1.KCC20_BUILDER_KEYS.filter((builderKey) => !psktBuilderByKey[builderKey]);
|
|
324
337
|
if (missingBuilderKeys.length) {
|
|
@@ -1851,8 +1864,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
1851
1864
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
1852
1865
|
const tokenOutputSompi = parseU64(env.KCC20_WRAP_TOKEN_OUTPUT_SOMPI ||
|
|
1853
1866
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
1854
|
-
const priorityFee = parseU64(env.KCC20_WRAP_PRIORITY_FEE_SOMPI ||
|
|
1855
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
1867
|
+
const priorityFee = parseU64(env.KCC20_WRAP_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
1856
1868
|
const computeBudget = parsePositiveNumber(env.KCC20_WRAP_COMPUTE_BUDGET || 700, "computeBudget");
|
|
1857
1869
|
const [wrapperArtifacts, wrappedArtifacts] = await Promise.all([
|
|
1858
1870
|
readWrapperArtifacts(),
|
|
@@ -2122,8 +2134,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
2122
2134
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
2123
2135
|
const tokenOutputSompi = parseU64(env.KCC20_UNWRAP_TOKEN_OUTPUT_SOMPI ||
|
|
2124
2136
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
2125
|
-
const priorityFee = parseU64(env.KCC20_UNWRAP_PRIORITY_FEE_SOMPI ||
|
|
2126
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2137
|
+
const priorityFee = parseU64(env.KCC20_UNWRAP_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2127
2138
|
const computeBudget = parsePositiveNumber(env.KCC20_UNWRAP_COMPUTE_BUDGET || 700, "computeBudget");
|
|
2128
2139
|
const [wrapperArtifacts, wrappedArtifacts] = await Promise.all([
|
|
2129
2140
|
readWrapperArtifacts(),
|
|
@@ -2451,8 +2462,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
2451
2462
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
2452
2463
|
const tokenOutputSompi = parseU64(env.KCC20_ORDER_TOKEN_OUTPUT_SOMPI ||
|
|
2453
2464
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
2454
|
-
const priorityFee = parseU64(env.KCC20_ORDER_PRIORITY_FEE_SOMPI ||
|
|
2455
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2465
|
+
const priorityFee = parseU64(env.KCC20_ORDER_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2456
2466
|
const computeBudget = parsePositiveNumber(env.KCC20_ORDER_COMPUTE_BUDGET || 700, "computeBudget");
|
|
2457
2467
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
2458
2468
|
const activeUtxo = isBid ? rootUtxo : holderUtxo;
|
|
@@ -2698,8 +2708,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
2698
2708
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
2699
2709
|
const tokenOutputSompi = parseU64(env.KCC20_FILL_TOKEN_OUTPUT_SOMPI ||
|
|
2700
2710
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
2701
|
-
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI ||
|
|
2702
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2711
|
+
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2703
2712
|
const computeBudget = parsePositiveNumber(env.KCC20_FILL_COMPUTE_BUDGET || 800, "computeBudget");
|
|
2704
2713
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
2705
2714
|
const ticketArtifacts = ticketUtxo ? await readFeeTicketArtifacts() : null;
|
|
@@ -2983,8 +2992,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
2983
2992
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
2984
2993
|
const tokenOutputSompi = parseU64(env.KCC20_FILL_TOKEN_OUTPUT_SOMPI ||
|
|
2985
2994
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
2986
|
-
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI ||
|
|
2987
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2995
|
+
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
2988
2996
|
const computeBudget = parsePositiveNumber(env.KCC20_FILL_COMPUTE_BUDGET || 800, "computeBudget");
|
|
2989
2997
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
2990
2998
|
const ticketArtifacts = ticketUtxo ? await readFeeTicketArtifacts() : null;
|
|
@@ -3389,8 +3397,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
3389
3397
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
3390
3398
|
const tokenOutputSompi = parseU64(env.KCC20_FILL_TOKEN_OUTPUT_SOMPI ||
|
|
3391
3399
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
3392
|
-
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI ||
|
|
3393
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
3400
|
+
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
3394
3401
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
3395
3402
|
const ticketArtifacts = params.feeTicketId
|
|
3396
3403
|
? await readFeeTicketArtifacts()
|
|
@@ -3752,8 +3759,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
3752
3759
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
3753
3760
|
const tokenOutputSompi = parseU64(env.KCC20_FILL_TOKEN_OUTPUT_SOMPI ||
|
|
3754
3761
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
3755
|
-
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI ||
|
|
3756
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
3762
|
+
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
3757
3763
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
3758
3764
|
const wrappedArtifact = wrappedArtifacts[0].artifact;
|
|
3759
3765
|
const ticketArtifacts = params.feeTicketId
|
|
@@ -4249,8 +4255,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
4249
4255
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
4250
4256
|
const configuredTokenOutputSompi = parseU64(env.KCC20_FILL_TOKEN_OUTPUT_SOMPI ||
|
|
4251
4257
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi");
|
|
4252
|
-
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI ||
|
|
4253
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
4258
|
+
const priorityFee = parseU64(env.KCC20_FILL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
4254
4259
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
4255
4260
|
const ticketArtifacts = params.feeTicketId
|
|
4256
4261
|
? await readFeeTicketArtifacts()
|
|
@@ -4984,9 +4989,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
4984
4989
|
DEFAULT_MATCHER_PRIORITY_FEE.toString(), "priorityFee");
|
|
4985
4990
|
const networkFeeReserve = parseU64(env.KCC20_MATCHER_NETWORK_FEE_RESERVE_SOMPI || "5000000", "networkFeeReserve");
|
|
4986
4991
|
const transactionFeeReserve = priorityFee + networkFeeReserve;
|
|
4987
|
-
const computeBudget = parsePositiveNumber(env.KCC20_MATCHER_COMPUTE_BUDGET ||
|
|
4988
|
-
env.KCC20_FILL_COMPUTE_BUDGET ||
|
|
4989
|
-
800, "computeBudget");
|
|
4992
|
+
const computeBudget = parsePositiveNumber(env.KCC20_MATCHER_COMPUTE_BUDGET || env.KCC20_FILL_COMPUTE_BUDGET || 800, "computeBudget");
|
|
4990
4993
|
const privateKeyHex = String(env.KCC20_WRAPPER_OPERATOR_PRIVATE_KEY || "")
|
|
4991
4994
|
.trim()
|
|
4992
4995
|
.replace(/^0x/i, "");
|
|
@@ -5436,8 +5439,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
5436
5439
|
const network = request.network || env.KASPA_NETWORK || "testnet-10";
|
|
5437
5440
|
const walletAddress = requireKaspaAddress(request.owner?.walletAddress);
|
|
5438
5441
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
5439
|
-
const priorityFee = parseU64(env.KCC20_CANCEL_PRIORITY_FEE_SOMPI ||
|
|
5440
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
5442
|
+
const priorityFee = parseU64(env.KCC20_CANCEL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
5441
5443
|
const computeBudget = parsePositiveNumber(env.KCC20_CANCEL_COMPUTE_BUDGET || 800, "computeBudget");
|
|
5442
5444
|
const wrappedArtifacts = await readWrappedArtifacts();
|
|
5443
5445
|
const orderState = kcc20V3WrappedStateFromUtxo(orderUtxo, canonicalTokenId, request.owner);
|
|
@@ -5655,8 +5657,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
5655
5657
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
5656
5658
|
const tokenOutputSompi = assertKcc20TokenOutputSompi(parseU64(env.KCC20_MINT_TOKEN_OUTPUT_SOMPI ||
|
|
5657
5659
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi"), "mint");
|
|
5658
|
-
const priorityFee = parseU64(env.KCC20_MINT_PRIORITY_FEE_SOMPI ||
|
|
5659
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
5660
|
+
const priorityFee = parseU64(env.KCC20_MINT_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
5660
5661
|
const computeBudget = parsePositiveNumber(env.KCC20_MINT_COMPUTE_BUDGET || sale_common_js_1.DEFAULT_COMPUTE_BUDGET, "computeBudget");
|
|
5661
5662
|
const inputState = {
|
|
5662
5663
|
amount: 0n,
|
|
@@ -5986,8 +5987,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
5986
5987
|
}
|
|
5987
5988
|
const priorityFee = parseU64(env.KCC20_MINT_AVAILABILITY_PRIORITY_FEE_SOMPI ||
|
|
5988
5989
|
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
5989
|
-
const computeBudget = parsePositiveNumber(env.KCC20_MINT_AVAILABILITY_COMPUTE_BUDGET ||
|
|
5990
|
-
sale_common_js_1.DEFAULT_COMPUTE_BUDGET, "computeBudget");
|
|
5990
|
+
const computeBudget = parsePositiveNumber(env.KCC20_MINT_AVAILABILITY_COMPUTE_BUDGET || sale_common_js_1.DEFAULT_COMPUTE_BUDGET, "computeBudget");
|
|
5991
5991
|
const rpc = new kaspaWasm.RpcClient({
|
|
5992
5992
|
url: env.KASPA_WRPC_URL || DEFAULT_WRPC_URL,
|
|
5993
5993
|
encoding: kaspaWasm.Encoding.Borsh,
|
|
@@ -6336,8 +6336,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
6336
6336
|
const network = request.network || env.KASPA_NETWORK || "testnet-10";
|
|
6337
6337
|
const walletAddress = requireKaspaAddress(request.owner?.walletAddress);
|
|
6338
6338
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
6339
|
-
const priorityFee = parseU64(env.KCC20_REVEAL_PRIORITY_FEE_SOMPI ||
|
|
6340
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
6339
|
+
const priorityFee = parseU64(env.KCC20_REVEAL_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
6341
6340
|
const computeBudget = parsePositiveNumber(env.KCC20_REVEAL_COMPUTE_BUDGET || sale_common_js_1.DEFAULT_COMPUTE_BUDGET, "computeBudget");
|
|
6342
6341
|
const inputState = kcc20StateFromUtxo(activeTokenUtxo, request.owner);
|
|
6343
6342
|
if (inputState.isMintAuthority) {
|
|
@@ -6478,8 +6477,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
6478
6477
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
6479
6478
|
const tokenOutputSompi = assertKcc20TokenOutputSompi(parseU64(env.KCC20_TRANSFER_TOKEN_OUTPUT_SOMPI ||
|
|
6480
6479
|
sale_common_js_1.DEFAULT_TOKEN_OUTPUT_SOMPI.toString(), "tokenOutputSompi"), "transfer");
|
|
6481
|
-
const priorityFee = parseU64(env.KCC20_TRANSFER_PRIORITY_FEE_SOMPI ||
|
|
6482
|
-
DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
6480
|
+
const priorityFee = parseU64(env.KCC20_TRANSFER_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
6483
6481
|
const computeBudget = parsePositiveNumber(env.KCC20_TRANSFER_COMPUTE_BUDGET || sale_common_js_1.DEFAULT_COMPUTE_BUDGET, "computeBudget");
|
|
6484
6482
|
const inputState = kcc20StateFromUtxo(activeHolderUtxo, request.owner);
|
|
6485
6483
|
if (inputState.isMintAuthority || inputState.amount <= 0n) {
|
|
@@ -6529,7 +6527,18 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
6529
6527
|
if (!tokenEntry) {
|
|
6530
6528
|
throw new Error(`active holder UTXO ${tokenTxid}:${tokenVout} not found`);
|
|
6531
6529
|
}
|
|
6532
|
-
const
|
|
6530
|
+
const rpcScript = tokenEntry.scriptPublicKey ??
|
|
6531
|
+
tokenEntry.entry?.scriptPublicKey ?? tokenEntry.utxoEntry?.scriptPublicKey;
|
|
6532
|
+
if (!rpcScript || kw.addressFromScriptPublicKey(rpcScript, network)?.toString() !== tokenAddress) {
|
|
6533
|
+
throw new Error("active holder RPC script does not match rebuilt covenant state");
|
|
6534
|
+
}
|
|
6535
|
+
if (activeHolderUtxo.amountSompi != null &&
|
|
6536
|
+
BigInt(activeHolderUtxo.amountSompi) !== (0, sale_common_js_1.utxoAmountSompi)(tokenEntry)) {
|
|
6537
|
+
throw new Error("active holder KAS amount does not match RPC");
|
|
6538
|
+
}
|
|
6539
|
+
const spendCovenantId = params.activeHolderNativeCovenantId
|
|
6540
|
+
? requireMatchingCovenantId(tokenEntry, covenantId, "active holder")
|
|
6541
|
+
: covenantIdFromUtxoEntry(tokenEntry) ?? covenantId;
|
|
6533
6542
|
let outputSompi = 0n;
|
|
6534
6543
|
const recipientOutputIndex = 0;
|
|
6535
6544
|
const outputs = [
|
|
@@ -6656,9 +6665,13 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
6656
6665
|
const network = request.network || env.KASPA_NETWORK || "testnet-10";
|
|
6657
6666
|
const walletAddress = requireKaspaAddress(request.owner?.walletAddress);
|
|
6658
6667
|
const rpcUrl = env.KASPA_WRPC_URL || DEFAULT_WRPC_URL;
|
|
6659
|
-
const
|
|
6660
|
-
|
|
6661
|
-
|
|
6668
|
+
const requestedOutputSompi = params.outputSompi === undefined || params.outputSompi === null
|
|
6669
|
+
? undefined
|
|
6670
|
+
: assertKcc20TokenOutputSompi(parseU64(params.outputSompi, "outputSompi"), "deploy");
|
|
6671
|
+
const amountTkas = requestedOutputSompi === undefined
|
|
6672
|
+
? parseAmountTkas(env.KCC20_DEPLOY_OUTPUT_TKAS || DEFAULT_DEPLOY_TKAS)
|
|
6673
|
+
: undefined;
|
|
6674
|
+
const priorityFee = parseU64(env.KCC20_DEPLOY_PRIORITY_FEE_SOMPI || DEFAULT_PRIORITY_FEE.toString(), "priorityFee");
|
|
6662
6675
|
const metadata = {
|
|
6663
6676
|
ticker: normalizeTicker(params.ticker || ""),
|
|
6664
6677
|
name: normalizeTokenName(params.tokenName || ""),
|
|
@@ -6757,7 +6770,8 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
6757
6770
|
});
|
|
6758
6771
|
const contractAddress = covenantOutputs[0].address;
|
|
6759
6772
|
const canonicalCovenantId = (0, sale_common_js_1.p2shScriptHashHex)(kw, covenantOutputs[0].script);
|
|
6760
|
-
const deploySompi =
|
|
6773
|
+
const deploySompi = requestedOutputSompi ??
|
|
6774
|
+
BigInt(Math.round(amountTkas * Number(sale_common_js_1.SOMPI_PER_TKAS)));
|
|
6761
6775
|
const premintOutputIndex = premintState ? covenantOutputs.length - 1 : null;
|
|
6762
6776
|
const rpc = new RpcClient({
|
|
6763
6777
|
url: rpcUrl,
|
|
@@ -6768,7 +6782,7 @@ function createKcc20PsktBuilderEngine(options) {
|
|
|
6768
6782
|
try {
|
|
6769
6783
|
const utxos = await getUtxosByAddresses(rpc, [walletAddress]);
|
|
6770
6784
|
const outputSompi = deploySompi * BigInt(covenantOutputs.length);
|
|
6771
|
-
const fundingEntry = (0, sale_common_js_1.selectFundingEntry)(utxos.entries, outputSompi + priorityFee + 10000000n);
|
|
6785
|
+
const fundingEntry = (0, sale_common_js_1.selectFundingEntry)(utxos.entries, outputSompi + priorityFee + 10000000n, [], params.fundingOutpoint);
|
|
6772
6786
|
const fundingChangeOutputIndex = covenantOutputs.length;
|
|
6773
6787
|
const change = (0, sale_common_js_1.utxoAmountSompi)(fundingEntry) - outputSompi - priorityFee;
|
|
6774
6788
|
if (change <= 10000n) {
|