@ickb/sdk 9000.0.1 → 9001.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 +14 -11
- package/dist/constants.d.ts +0 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -24
- package/dist/constants.js.map +1 -1
- package/dist/conversion/estimate.d.ts +0 -6
- package/dist/conversion/estimate.d.ts.map +1 -1
- package/dist/conversion/estimate.js +1 -1
- package/dist/conversion/estimate.js.map +1 -1
- package/dist/conversion/maturity.d.ts +1 -1
- package/dist/conversion/maturity.js +13 -12
- package/dist/conversion/maturity.js.map +1 -1
- package/dist/conversion/plans.d.ts.map +1 -1
- package/dist/conversion/plans.js +6 -6
- package/dist/conversion/plans.js.map +1 -1
- package/dist/conversion/projection.d.ts +5 -6
- package/dist/conversion/projection.d.ts.map +1 -1
- package/dist/conversion/projection.js +11 -8
- package/dist/conversion/projection.js.map +1 -1
- package/dist/conversion/types.d.ts +29 -17
- package/dist/conversion/types.d.ts.map +1 -1
- package/dist/conversion/withdrawal_ring.d.ts +1 -3
- package/dist/conversion/withdrawal_ring.d.ts.map +1 -1
- package/dist/conversion/withdrawal_ring.js +4 -4
- package/dist/conversion/withdrawal_ring.js.map +1 -1
- package/dist/dao.d.ts +19 -5
- package/dist/dao.d.ts.map +1 -1
- package/dist/dao.js +24 -12
- package/dist/dao.js.map +1 -1
- package/dist/index.d.ts +9 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/logic.d.ts +10 -14
- package/dist/logic.d.ts.map +1 -1
- package/dist/logic.js +28 -39
- package/dist/logic.js.map +1 -1
- package/dist/order/cells.d.ts +10 -49
- package/dist/order/cells.d.ts.map +1 -1
- package/dist/order/cells.js +28 -146
- package/dist/order/cells.js.map +1 -1
- package/dist/order/conversion.d.ts +3 -9
- package/dist/order/conversion.d.ts.map +1 -1
- package/dist/order/conversion.js +8 -11
- package/dist/order/conversion.js.map +1 -1
- package/dist/order/fill.d.ts +2 -2
- package/dist/order/fill.js +3 -3
- package/dist/order/fill.js.map +1 -1
- package/dist/order/info.d.ts.map +1 -1
- package/dist/order/info.js +3 -0
- package/dist/order/info.js.map +1 -1
- package/dist/order/matcher.d.ts +1 -1
- package/dist/order/matcher.d.ts.map +1 -1
- package/dist/order/matcher.js +3 -2
- package/dist/order/matcher.js.map +1 -1
- package/dist/order/order.d.ts +6 -2
- package/dist/order/order.d.ts.map +1 -1
- package/dist/order/order.js +32 -37
- package/dist/order/order.js.map +1 -1
- package/dist/order/order_data.d.ts.map +1 -1
- package/dist/order/order_data.js +3 -0
- package/dist/order/order_data.js.map +1 -1
- package/dist/order/ratio.d.ts +0 -2
- package/dist/order/ratio.d.ts.map +1 -1
- package/dist/order/ratio.js +3 -11
- package/dist/order/ratio.js.map +1 -1
- package/dist/order/relative.d.ts.map +1 -1
- package/dist/order/relative.js +3 -0
- package/dist/order/relative.js.map +1 -1
- package/dist/owned_owner.d.ts +10 -15
- package/dist/owned_owner.d.ts.map +1 -1
- package/dist/owned_owner.js +27 -47
- package/dist/owned_owner.js.map +1 -1
- package/dist/sdk.d.ts +74 -31
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +81 -59
- package/dist/sdk.js.map +1 -1
- package/dist/send/sign_and_send_transaction.d.ts +32 -17
- package/dist/send/sign_and_send_transaction.d.ts.map +1 -1
- package/dist/send/sign_and_send_transaction.js +128 -28
- package/dist/send/sign_and_send_transaction.js.map +1 -1
- package/dist/send/wait_transaction.d.ts +7 -6
- package/dist/send/wait_transaction.d.ts.map +1 -1
- package/dist/send/wait_transaction.js +29 -61
- package/dist/send/wait_transaction.js.map +1 -1
- package/dist/udt.d.ts +20 -35
- package/dist/udt.d.ts.map +1 -1
- package/dist/udt.js +39 -103
- package/dist/udt.js.map +1 -1
- package/dist/utils/chain.d.ts +0 -35
- package/dist/utils/chain.d.ts.map +1 -1
- package/dist/utils/chain.js +1 -19
- package/dist/utils/chain.js.map +1 -1
- package/dist/utils/codec.d.ts.map +1 -1
- package/dist/utils/codec.js +3 -0
- package/dist/utils/codec.js.map +1 -1
- package/dist/utils/utils.d.ts +19 -46
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +53 -74
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/verified_client.d.ts +19 -0
- package/dist/utils/verified_client.d.ts.map +1 -0
- package/dist/utils/verified_client.js +92 -0
- package/dist/utils/verified_client.js.map +1 -0
- package/package.json +2 -2
- package/src/constants.ts +6 -25
- package/src/conversion/estimate.ts +1 -3
- package/src/conversion/maturity.ts +13 -14
- package/src/conversion/plans.ts +6 -6
- package/src/conversion/projection.ts +15 -7
- package/src/conversion/types.ts +32 -17
- package/src/conversion/withdrawal_ring.ts +4 -8
- package/src/dao.ts +38 -14
- package/src/index.ts +8 -8
- package/src/logic.ts +40 -52
- package/src/order/cells.ts +37 -174
- package/src/order/conversion.ts +8 -19
- package/src/order/fill.ts +3 -3
- package/src/order/info.ts +3 -0
- package/src/order/matcher.ts +3 -3
- package/src/order/order.ts +38 -52
- package/src/order/order_data.ts +3 -0
- package/src/order/ratio.ts +3 -20
- package/src/order/relative.ts +3 -0
- package/src/owned_owner.ts +47 -77
- package/src/sdk.ts +95 -108
- package/src/send/sign_and_send_transaction.ts +164 -28
- package/src/send/wait_transaction.ts +44 -88
- package/src/udt.ts +56 -124
- package/src/utils/chain.ts +0 -41
- package/src/utils/codec.ts +4 -0
- package/src/utils/utils.ts +76 -105
- package/src/utils/verified_client.ts +136 -0
- package/dist/utils/transaction_header.d.ts +0 -17
- package/dist/utils/transaction_header.d.ts.map +0 -1
- package/dist/utils/transaction_header.js +0 -44
- package/dist/utils/transaction_header.js.map +0 -1
- package/src/utils/transaction_header.ts +0 -66
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conversion/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conversion/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ccc } from "@ckb-ccc/core";
|
|
2
2
|
import type { IckbDepositCell } from "../logic.js";
|
|
3
3
|
/**
|
|
4
4
|
* Ring segment of pool deposits grouped by maturity around the DAO cycle.
|
|
5
5
|
*/
|
|
6
6
|
export interface RingSegment {
|
|
7
|
-
/** Segment index in the ring. */
|
|
8
|
-
index: number;
|
|
9
7
|
/** Deposits assigned to this segment. */
|
|
10
8
|
deposits: IckbDepositCell[];
|
|
11
9
|
/** Total iCKB value of deposits in this segment. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawal_ring.d.ts","sourceRoot":"","sources":["../../src/conversion/withdrawal_ring.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"withdrawal_ring.d.ts","sourceRoot":"","sources":["../../src/conversion/withdrawal_ring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAE5B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,GAAG,WAAW,EAAE,CAsBpF;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAS/E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,SAAS,eAAe,EAAE,EACxC,KAAK,EAAE,SAAS,eAAe,EAAE,GAChC,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAevC;AAcD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,EAAE,MAAM,GAChB,eAAe,EAAE,CAcnB;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,EAAE,CAEnF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ccc } from "@ckb-ccc/core";
|
|
2
|
+
import { DAO_OUTPUT_LIMIT } from "../dao.js";
|
|
2
3
|
import { ICKB_DEPOSIT_CAP } from "../udt.js";
|
|
3
4
|
/**
|
|
4
5
|
* Splits pool deposits into power-of-two maturity ring segments, one segment per two
|
|
@@ -12,8 +13,7 @@ export function ringSegments(poolDeposits) {
|
|
|
12
13
|
while (BigInt(segmentCount) * 2n * ICKB_DEPOSIT_CAP < totalUdt) {
|
|
13
14
|
segmentCount *= 2;
|
|
14
15
|
}
|
|
15
|
-
const segments = Array.from({ length: segmentCount }, (
|
|
16
|
-
index,
|
|
16
|
+
const segments = Array.from({ length: segmentCount }, () => ({
|
|
17
17
|
deposits: [],
|
|
18
18
|
udtValue: 0n,
|
|
19
19
|
}));
|
|
@@ -33,7 +33,7 @@ export function ringSegmentIndex(epoch, segmentCount) {
|
|
|
33
33
|
throw new Error("Epoch denominator must be positive");
|
|
34
34
|
}
|
|
35
35
|
const scaled = epoch.integer * denominator + epoch.numerator;
|
|
36
|
-
const ring =
|
|
36
|
+
const ring = ccc.Epoch.OneNervosDaoCycle.integer * denominator;
|
|
37
37
|
const wrapped = ((scaled % ring) + ring) % ring;
|
|
38
38
|
return Number((wrapped * BigInt(segmentCount)) / ring);
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawal_ring.js","sourceRoot":"","sources":["../../src/conversion/withdrawal_ring.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"withdrawal_ring.js","sourceRoot":"","sources":["../../src/conversion/withdrawal_ring.ts"],"names":[],"mappings":"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"}
|
package/dist/dao.d.ts
CHANGED
|
@@ -11,8 +11,6 @@ export declare const DAO_OUTPUT_LIMIT = 64;
|
|
|
11
11
|
* nervosnetwork/rfcs pull 456).
|
|
12
12
|
*/
|
|
13
13
|
export declare const DAO_HEADER_INDEX_LIMIT = 256;
|
|
14
|
-
/** One DAO cycle, the lock-up a deposit renews by when it is not withdrawn. */
|
|
15
|
-
export declare const DAO_CYCLE_EPOCHS = 180n;
|
|
16
14
|
/**
|
|
17
15
|
* Error thrown when a transaction exceeds the deployed DAO script's output limit.
|
|
18
16
|
*/
|
|
@@ -38,8 +36,8 @@ export declare class DaoHeaderIndexError extends Error {
|
|
|
38
36
|
* cannot be known, and the completion walk steps a plan down on this error either way.
|
|
39
37
|
*/
|
|
40
38
|
export declare function assertDaoOutputLimit(txLike: ccc.TransactionLike, daoScriptLike: ccc.ScriptLike): void;
|
|
41
|
-
/** The canonical DAO deposit data payload. */
|
|
42
|
-
export declare
|
|
39
|
+
/** The canonical DAO deposit data payload: a zero Uint64, eight zero bytes. */
|
|
40
|
+
export declare const DAO_DEPOSIT_DATA: ccc.Hex;
|
|
43
41
|
/** Whether the cell is a DAO deposit of the given DAO script. */
|
|
44
42
|
export declare function isDaoDeposit(cell: ccc.CellAny, daoScript: ccc.Script): boolean;
|
|
45
43
|
/**
|
|
@@ -71,6 +69,14 @@ export declare const BOT_LOCK_UP: LockUpPolicy;
|
|
|
71
69
|
* sent while ninety minutes remain. A user may leave the request in a wallet popup.
|
|
72
70
|
*/
|
|
73
71
|
export declare const WALLET_LOCK_UP: LockUpPolicy;
|
|
72
|
+
/**
|
|
73
|
+
* How far a tip may trail the local clock under a policy: the selection margin less the
|
|
74
|
+
* broadcast reserve, the slack a stale tip would eat before a request commits after its
|
|
75
|
+
* claim. Five minutes for the bot, thirty for a wallet.
|
|
76
|
+
*/
|
|
77
|
+
export declare function tipMaxAgeMs(policy: LockUpPolicy): number;
|
|
78
|
+
/** Throws when `header` trails the local clock by more than `maxAgeMs`. */
|
|
79
|
+
export declare function assertFresh(header: ccc.ClientBlockHeader, maxAgeMs: number): void;
|
|
74
80
|
/** A deposit's maturity, rolled a cycle when its claim is too close, and whether it is ready. */
|
|
75
81
|
export declare function depositMaturity(claim: ccc.Epoch, tip: ccc.ClientBlockHeader, { minLockUp, maxLockUp }: LockUpPolicy): {
|
|
76
82
|
maturity: ccc.Epoch;
|
|
@@ -80,7 +86,15 @@ export declare function depositMaturity(claim: ccc.Epoch, tip: ccc.ClientBlockHe
|
|
|
80
86
|
* The epoch a transaction requesting these deposits must be broadcast before: the earliest
|
|
81
87
|
* claim less the reserve; undefined when it requests none.
|
|
82
88
|
*/
|
|
83
|
-
export declare function broadcastDeadline(claims: readonly ccc.Epoch[],
|
|
89
|
+
export declare function broadcastDeadline(claims: readonly ccc.Epoch[], policy: LockUpPolicy): BroadcastDeadline | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* The epoch a withdrawal request must be broadcast before, and how far the tip read to
|
|
92
|
+
* check it may trail the clock, the policy's slack: a stale tip would pass the check late.
|
|
93
|
+
*/
|
|
94
|
+
export interface BroadcastDeadline {
|
|
95
|
+
epoch: ccc.Epoch;
|
|
96
|
+
tipMaxAgeMs: number;
|
|
97
|
+
}
|
|
84
98
|
/** Adds the header dep once. */
|
|
85
99
|
export declare function pushHeaderDep(tx: ccc.Transaction, hash: ccc.Hex): void;
|
|
86
100
|
//# sourceMappingURL=dao.d.ts.map
|
package/dist/dao.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dao.d.ts","sourceRoot":"","sources":["../src/dao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dao.d.ts","sourceRoot":"","sources":["../src/dao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C;;OAEG;IACH,YAAY,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAMtD;CACF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C;;OAEG;IACH,YAAY,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAMtD;CACF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,CAAC,eAAe,EAC3B,aAAa,EAAE,GAAG,CAAC,UAAU,GAC5B,IAAI,CAeN;AAED,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,GAAG,CAAC,GAA0B,CAAC;AAE9D,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,GAAG,OAAO,CAI9E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,GAAG,CAAC,OAAO,EACjB,SAAS,EAAE,GAAG,CAAC,MAAM,GACpB,OAAO,CAIT;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC;IACrB,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,YAIzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAI5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAKxD;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIjF;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,GAAG,EAAE,GAAG,CAAC,iBAAiB,EAC1B,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,YAAY,GACrC;IAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAM3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,GAAG,CAAC,KAAK,EAAE,EAC5B,MAAM,EAAE,YAAY,GACnB,iBAAiB,GAAG,SAAS,CAQ/B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAItE"}
|
package/dist/dao.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/core";
|
|
2
|
-
import { CheckedUint64LE } from "./utils/codec.js";
|
|
3
2
|
/**
|
|
4
3
|
* Maximum outputs accepted by deployed dao.c, not a general CKB consensus cap.
|
|
5
4
|
* A node upgrade cannot lift a limit in that deployed script.
|
|
@@ -12,8 +11,6 @@ export const DAO_OUTPUT_LIMIT = 64;
|
|
|
12
11
|
* nervosnetwork/rfcs pull 456).
|
|
13
12
|
*/
|
|
14
13
|
export const DAO_HEADER_INDEX_LIMIT = 256;
|
|
15
|
-
/** One DAO cycle, the lock-up a deposit renews by when it is not withdrawn. */
|
|
16
|
-
export const DAO_CYCLE_EPOCHS = 180n;
|
|
17
14
|
/**
|
|
18
15
|
* Error thrown when a transaction exceeds the deployed DAO script's output limit.
|
|
19
16
|
*/
|
|
@@ -55,20 +52,18 @@ export function assertDaoOutputLimit(txLike, daoScriptLike) {
|
|
|
55
52
|
throw new DaoOutputLimitError(tx.outputs.length);
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
|
-
/** The canonical DAO deposit data payload. */
|
|
59
|
-
export
|
|
60
|
-
return ccc.hexFrom(CheckedUint64LE.encode(0n));
|
|
61
|
-
}
|
|
55
|
+
/** The canonical DAO deposit data payload: a zero Uint64, eight zero bytes. */
|
|
56
|
+
export const DAO_DEPOSIT_DATA = "0x0000000000000000";
|
|
62
57
|
/** Whether the cell is a DAO deposit of the given DAO script. */
|
|
63
58
|
export function isDaoDeposit(cell, daoScript) {
|
|
64
|
-
return (cell.outputData ===
|
|
59
|
+
return (cell.outputData === DAO_DEPOSIT_DATA && cell.cellOutput.type?.eq(daoScript) === true);
|
|
65
60
|
}
|
|
66
61
|
/**
|
|
67
62
|
* Whether the cell uses the DAO script and is not deposit-shaped. This structural check
|
|
68
63
|
* does not decode the withdrawal request's deposit block number payload.
|
|
69
64
|
*/
|
|
70
65
|
export function isDaoWithdrawalRequest(cell, daoScript) {
|
|
71
|
-
return (cell.outputData !==
|
|
66
|
+
return (cell.outputData !== DAO_DEPOSIT_DATA && cell.cellOutput.type?.eq(daoScript) === true);
|
|
72
67
|
}
|
|
73
68
|
/**
|
|
74
69
|
* The bot's rules on the nominal four-hour epoch: claims twenty minutes to an hour out,
|
|
@@ -89,10 +84,25 @@ export const WALLET_LOCK_UP = {
|
|
|
89
84
|
maxLockUp: ccc.Epoch.from([18n, 0n, 1n]),
|
|
90
85
|
broadcastReserve: ccc.Epoch.from([0n, 3n, 8n]),
|
|
91
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* How far a tip may trail the local clock under a policy: the selection margin less the
|
|
89
|
+
* broadcast reserve, the slack a stale tip would eat before a request commits after its
|
|
90
|
+
* claim. Five minutes for the bot, thirty for a wallet.
|
|
91
|
+
*/
|
|
92
|
+
export function tipMaxAgeMs(policy) {
|
|
93
|
+
// The span from the reserve to the margin, on CCC's nominal four-hour epoch.
|
|
94
|
+
return Number(policy.minLockUp.toUnix({ epoch: policy.broadcastReserve, timestamp: 0n }));
|
|
95
|
+
}
|
|
96
|
+
/** Throws when `header` trails the local clock by more than `maxAgeMs`. */
|
|
97
|
+
export function assertFresh(header, maxAgeMs) {
|
|
98
|
+
if (BigInt(Date.now()) - header.timestamp > BigInt(maxAgeMs)) {
|
|
99
|
+
throw new Error(`Block ${header.hash} is more than ${String(maxAgeMs)} ms old`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
92
102
|
/** A deposit's maturity, rolled a cycle when its claim is too close, and whether it is ready. */
|
|
93
103
|
export function depositMaturity(claim, tip, { minLockUp, maxLockUp }) {
|
|
94
104
|
const maturity = claim.compare(minLockUp.add(tip.epoch)) <= 0
|
|
95
|
-
? claim.add(
|
|
105
|
+
? claim.add(ccc.Epoch.OneNervosDaoCycle)
|
|
96
106
|
: claim;
|
|
97
107
|
return { maturity, isReady: maxLockUp.add(tip.epoch).compare(maturity) > 0 };
|
|
98
108
|
}
|
|
@@ -100,9 +110,11 @@ export function depositMaturity(claim, tip, { minLockUp, maxLockUp }) {
|
|
|
100
110
|
* The epoch a transaction requesting these deposits must be broadcast before: the earliest
|
|
101
111
|
* claim less the reserve; undefined when it requests none.
|
|
102
112
|
*/
|
|
103
|
-
export function broadcastDeadline(claims,
|
|
113
|
+
export function broadcastDeadline(claims, policy) {
|
|
104
114
|
const earliest = claims.reduce((best, claim) => (best === undefined || claim.compare(best) < 0 ? claim : best), undefined);
|
|
105
|
-
return earliest
|
|
115
|
+
return earliest === undefined
|
|
116
|
+
? undefined
|
|
117
|
+
: { epoch: earliest.sub(policy.broadcastReserve), tipMaxAgeMs: tipMaxAgeMs(policy) };
|
|
106
118
|
}
|
|
107
119
|
/** Adds the header dep once. */
|
|
108
120
|
export function pushHeaderDep(tx, hash) {
|
package/dist/dao.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dao.js","sourceRoot":"","sources":["../src/dao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dao.js","sourceRoot":"","sources":["../src/dao.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,13 +12,11 @@ import type { SupportedChain } from "./utils/chain.js";
|
|
|
12
12
|
/** The SDK an integrator drives: the state read and the conversion builder. */
|
|
13
13
|
export interface IckbSdk {
|
|
14
14
|
/** Builds and completes a conversion, or returns a typed planning failure. */
|
|
15
|
-
buildConversionTransaction: (
|
|
16
|
-
/** Reads system, user-order, and account state
|
|
17
|
-
getL1AccountState: (client: ccc.Client, locks: ccc.Script[], lockUp: LockUpPolicy) => Promise<{
|
|
15
|
+
buildConversionTransaction: (options: ConversionTransactionOptions) => Promise<ConversionTransactionResult>;
|
|
16
|
+
/** Reads system, user-order, and account state at the sampled tip's parent, under one timing policy. */
|
|
17
|
+
getL1AccountState: (client: ccc.Client, locks: ccc.Script[], lockUp: LockUpPolicy, maxFeeRate?: ccc.NumLike) => Promise<{
|
|
18
18
|
system: SystemState;
|
|
19
|
-
|
|
20
|
-
orders: OrderGroup[];
|
|
21
|
-
};
|
|
19
|
+
userOrders: OrderGroup[];
|
|
22
20
|
account: AccountState;
|
|
23
21
|
}>;
|
|
24
22
|
}
|
|
@@ -28,25 +26,25 @@ export declare const IckbSdk: {
|
|
|
28
26
|
};
|
|
29
27
|
export { DEFAULT_ORDER_FEE, DEFAULT_ORDER_FEE_BASE } from "./conversion/estimate.js";
|
|
30
28
|
export { projectConversionTransactionContext } from "./conversion/projection.js";
|
|
31
|
-
export type { AccountAvailabilityProjection, AccountState, ConversionDirection,
|
|
29
|
+
export type { AccountAvailabilityProjection, AccountState, ConversionDirection, ConversionKind, ConversionNotice, ConversionTransactionContext, ConversionTransactionContextProjection, ConversionTransactionFailureReason, ConversionTransactionOptions, ConversionTransactionResult, SystemState, } from "./conversion/types.js";
|
|
32
30
|
export { WALLET_LOCK_UP } from "./dao.js";
|
|
33
|
-
export type { LockUpPolicy } from "./dao.js";
|
|
31
|
+
export type { BroadcastDeadline, LockUpPolicy } from "./dao.js";
|
|
34
32
|
export type { IckbDepositCell, ReceiptCell } from "./logic.js";
|
|
35
33
|
export type { MasterCell, OrderCell, OrderGroup } from "./order/cells.js";
|
|
36
34
|
export { OrderConversionRepresentabilityError, quoteConversion, } from "./order/conversion.js";
|
|
37
|
-
export { isRefused, isStale } from "./order/fill.js";
|
|
38
35
|
export type { Info, InfoLike } from "./order/info.js";
|
|
39
36
|
export type { Master, MasterLike } from "./order/master.js";
|
|
40
37
|
export type { OrderData, OrderDataLike } from "./order/order_data.js";
|
|
41
38
|
export { Ratio } from "./order/ratio.js";
|
|
42
39
|
export type { Relative, RelativeLike } from "./order/relative.js";
|
|
43
40
|
export type { DaoWithdrawalRequestCell, OwnerCell, WithdrawalGroup, } from "./owned_owner.js";
|
|
44
|
-
export {
|
|
41
|
+
export { IckbError } from "./sdk.js";
|
|
45
42
|
export type { IckbErrorCode } from "./sdk.js";
|
|
46
43
|
export { signAndSendTransaction, signerAccountLocks, TransactionBroadcastError, TransactionExpiredError, } from "./send/sign_and_send_transaction.js";
|
|
47
44
|
export { TransactionWaitError, waitTransaction } from "./send/wait_transaction.js";
|
|
48
45
|
export type { WaitTransactionOptions } from "./send/wait_transaction.js";
|
|
49
46
|
export { ickbExchangeRatio } from "./udt.js";
|
|
50
47
|
export type { SupportedChain } from "./utils/chain.js";
|
|
51
|
-
export
|
|
48
|
+
export { clientCache } from "./utils/utils.js";
|
|
49
|
+
export type { ExchangeRatio, ValueComponents } from "./utils/utils.js";
|
|
52
50
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EACV,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,8EAA8E;IAC9E,0BAA0B,EAAE,CAC1B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,10 +12,10 @@ export { DEFAULT_ORDER_FEE, DEFAULT_ORDER_FEE_BASE } from "./conversion/estimate
|
|
|
12
12
|
export { projectConversionTransactionContext } from "./conversion/projection.js";
|
|
13
13
|
export { WALLET_LOCK_UP } from "./dao.js";
|
|
14
14
|
export { OrderConversionRepresentabilityError, quoteConversion, } from "./order/conversion.js";
|
|
15
|
-
export { isRefused, isStale } from "./order/fill.js";
|
|
16
15
|
export { Ratio } from "./order/ratio.js";
|
|
17
|
-
export {
|
|
16
|
+
export { IckbError } from "./sdk.js";
|
|
18
17
|
export { signAndSendTransaction, signerAccountLocks, TransactionBroadcastError, TransactionExpiredError, } from "./send/sign_and_send_transaction.js";
|
|
19
18
|
export { TransactionWaitError, waitTransaction } from "./send/wait_transaction.js";
|
|
20
19
|
export { ickbExchangeRatio } from "./udt.js";
|
|
20
|
+
export { clientCache } from "./utils/utils.js";
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAsBnD,kDAAkD;AAClD,wIAAwI;AACxI,MAAM,CAAC,MAAM,OAAO,GAAsD,YAAY,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AAcjF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,EACL,oCAAoC,EACpC,eAAe,GAChB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAsBnD,kDAAkD;AAClD,wIAAwI;AACxI,MAAM,CAAC,MAAM,OAAO,GAAsD,YAAY,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AAcjF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,EACL,oCAAoC,EACpC,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAOzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/logic.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/core";
|
|
2
2
|
import { type LockUpPolicy } from "./dao.js";
|
|
3
|
-
import { type
|
|
3
|
+
import { type ScannedCell, type ScriptDeps, type ValueComponents } from "./utils/utils.js";
|
|
4
4
|
/**
|
|
5
5
|
* A live iCKB deposit: a DAO deposit cell locked by the iCKB Logic script, valued at its
|
|
6
6
|
* deposit header.
|
|
@@ -8,10 +8,8 @@ import { type ScriptDeps, type TransactionHeader, type ValueComponents } from ".
|
|
|
8
8
|
export interface IckbDepositCell extends ValueComponents {
|
|
9
9
|
/** The DAO deposit cell. */
|
|
10
10
|
cell: ccc.Cell;
|
|
11
|
-
/** The
|
|
12
|
-
|
|
13
|
-
/** The DAO interest accrued between the two headers. */
|
|
14
|
-
interests: ccc.Num;
|
|
11
|
+
/** The header of the block that committed the deposit, which values it. */
|
|
12
|
+
header: ccc.ClientBlockHeader;
|
|
15
13
|
/**
|
|
16
14
|
* The DAO claim epoch as sampled at the tip, not rolled: each reader judges it against
|
|
17
15
|
* its own {@link LockUpPolicy} with `depositMaturity`.
|
|
@@ -24,8 +22,8 @@ export interface IckbDepositCell extends ValueComponents {
|
|
|
24
22
|
export interface ReceiptCell extends ValueComponents {
|
|
25
23
|
/** The cell associated with the receipt. */
|
|
26
24
|
cell: ccc.Cell;
|
|
27
|
-
/** The header of the
|
|
28
|
-
header:
|
|
25
|
+
/** The header of the block that committed the deposits, which values them. */
|
|
26
|
+
header: ccc.ClientBlockHeader;
|
|
29
27
|
}
|
|
30
28
|
/**
|
|
31
29
|
* Manages logic related to deposits and receipts in the blockchain.
|
|
@@ -47,8 +45,8 @@ export declare class LogicManager implements ScriptDeps {
|
|
|
47
45
|
* Adds `depositQuantity` DAO deposits of `depositCapacity` locked by the logic script,
|
|
48
46
|
* then the receipt that mints their iCKB in phase 2, locked by `lock`.
|
|
49
47
|
*
|
|
50
|
-
* @remarks
|
|
51
|
-
*
|
|
48
|
+
* @remarks Completion (`IckbSdk.completeTransaction`) adds the dep group that also
|
|
49
|
+
* resolves the xUDT script.
|
|
52
50
|
*/
|
|
53
51
|
deposit(txLike: ccc.TransactionLike, depositQuantity: number, depositCapacity: ccc.FixedPoint, lock: ccc.Script): ccc.Transaction;
|
|
54
52
|
/**
|
|
@@ -61,19 +59,17 @@ export declare class LogicManager implements ScriptDeps {
|
|
|
61
59
|
/**
|
|
62
60
|
* The receipts among `cells`, valued at their deposit headers, each header read once.
|
|
63
61
|
*/
|
|
64
|
-
receiptsFrom(client: ccc.Client, cells: readonly
|
|
62
|
+
receiptsFrom(client: ccc.Client, cells: readonly ScannedCell[]): Promise<ReceiptCell[]>;
|
|
65
63
|
/**
|
|
66
64
|
* Every live iCKB deposit, valued at its deposit header, with its claim epoch at the tip;
|
|
67
|
-
* each deposit
|
|
65
|
+
* each deposit block's header is read once.
|
|
68
66
|
*/
|
|
69
67
|
findDeposits(client: ccc.Client, tip: ccc.ClientBlockHeader): Promise<IckbDepositCell[]>;
|
|
70
68
|
}
|
|
71
|
-
/** Values a DAO deposit cell at its deposit header and samples its claim epoch at the tip. */
|
|
72
|
-
export declare function ickbDepositCell(cell: ccc.Cell, depositHeader: TransactionHeader, tip: ccc.ClientBlockHeader): IckbDepositCell;
|
|
73
69
|
/** The deposits a withdrawal request made now may claim at their sampled dates under the policy. */
|
|
74
70
|
export declare function readyDeposits(deposits: readonly IckbDepositCell[], tip: ccc.ClientBlockHeader, policy: LockUpPolicy): IckbDepositCell[];
|
|
75
71
|
/** Decodes a receipt cell and values it at its deposit header. */
|
|
76
|
-
export declare function receiptCell(cell: ccc.Cell, header:
|
|
72
|
+
export declare function receiptCell(cell: ccc.Cell, header: ccc.ClientBlockHeader): ReceiptCell;
|
|
77
73
|
/**
|
|
78
74
|
* Returns the CKB needed for the two phase-2 outputs created by one receipt.
|
|
79
75
|
*
|
package/dist/logic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,UAAU,CAAC;AASlB,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAO1B;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,4BAA4B;IAC5B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,4CAA4C;IAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;IACf,8EAA8E;IAC9E,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;IAC7C,uEAAuE;IACvE,SAAgB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IAEnC,mEAAmE;IACnE,SAAgB,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAExC,oEAAoE;IACpE,SAAgB,GAAG,EAAE,UAAU,CAAC;IAEhC,iFAAiF;IACjF,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAIvE;IAED,8FAA8F;IACvF,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,OAAO,CAKxC;IAED,oEAAoE;IAC7D,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,OAAO,CAExC;IAED;;;;;;OAMG;IACI,OAAO,CACZ,MAAM,EAAE,GAAG,CAAC,eAAe,EAC3B,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,GAAG,CAAC,UAAU,EAC/B,IAAI,EAAE,GAAG,CAAC,MAAM,GACf,GAAG,CAAC,WAAW,CAwCjB;IAED;;;;;OAKG;IACI,eAAe,CACpB,MAAM,EAAE,GAAG,CAAC,eAAe,EAC3B,QAAQ,EAAE,WAAW,EAAE,GACtB,GAAG,CAAC,WAAW,CAmBjB;IAED;;OAEG;IACU,YAAY,CACvB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,KAAK,EAAE,SAAS,WAAW,EAAE,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAUxB;IAED;;;OAGG;IACU,YAAY,CACvB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,iBAAiB,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAsB5B;CACF;AAkBD,oGAAoG;AACpG,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,GAAG,EAAE,GAAG,CAAC,iBAAiB,EAC1B,MAAM,EAAE,YAAY,GACnB,eAAe,EAAE,CAInB;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,iBAAiB,GAAG,WAAW,CAgBtF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,CAKtE"}
|
package/dist/logic.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/core";
|
|
2
|
-
import { assertDaoOutputLimit,
|
|
2
|
+
import { assertDaoOutputLimit, DAO_DEPOSIT_DATA, DaoOutputLimitError, depositMaturity, isDaoDeposit, pushHeaderDep, } from "./dao.js";
|
|
3
3
|
import { decodeReceiptData, encodeReceiptData, IckbUdt, ickbValue, receiptDataBytes, } from "./udt.js";
|
|
4
|
-
import {
|
|
5
|
-
import { findCells, } from "./utils/utils.js";
|
|
4
|
+
import { findCells, headersByNumber, } from "./utils/utils.js";
|
|
6
5
|
const maxDepositQuantity = 63;
|
|
7
6
|
// Receipts must carry enough capacity for phase 2 when the wallet has no other
|
|
8
7
|
// CKB: one iCKB xUDT cell, one plain capacity cell, and the fee reserve.
|
|
@@ -36,17 +35,15 @@ export class LogicManager {
|
|
|
36
35
|
* Adds `depositQuantity` DAO deposits of `depositCapacity` locked by the logic script,
|
|
37
36
|
* then the receipt that mints their iCKB in phase 2, locked by `lock`.
|
|
38
37
|
*
|
|
39
|
-
* @remarks
|
|
40
|
-
*
|
|
38
|
+
* @remarks Completion (`IckbSdk.completeTransaction`) adds the dep group that also
|
|
39
|
+
* resolves the xUDT script.
|
|
41
40
|
*/
|
|
42
41
|
deposit(txLike, depositQuantity, depositCapacity, lock) {
|
|
43
|
-
|
|
44
|
-
if (depositQuantity <= 0) {
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
if (!Number.isSafeInteger(depositQuantity)) {
|
|
48
|
-
throw new TypeError("iCKB deposit quantity must be a safe integer");
|
|
42
|
+
// A zero quantity would mint a receipt for no deposits, which iCKB Logic refuses on chain.
|
|
43
|
+
if (!Number.isSafeInteger(depositQuantity) || depositQuantity <= 0) {
|
|
44
|
+
throw new TypeError("iCKB deposit quantity must be a positive safe integer");
|
|
49
45
|
}
|
|
46
|
+
const tx = ccc.Transaction.from(txLike);
|
|
50
47
|
if (depositQuantity > maxDepositQuantity) {
|
|
51
48
|
// The completion walk steps a plan down on this error.
|
|
52
49
|
throw new DaoOutputLimitError(tx.outputs.length + depositQuantity + 1);
|
|
@@ -54,7 +51,7 @@ export class LogicManager {
|
|
|
54
51
|
const depositCell = ccc.Cell.from({
|
|
55
52
|
previousOutput: { txHash: `0x${"00".repeat(32)}`, index: 0 },
|
|
56
53
|
cellOutput: { capacity: depositCapacity, lock: this.script, type: this.dao.script },
|
|
57
|
-
outputData:
|
|
54
|
+
outputData: DAO_DEPOSIT_DATA,
|
|
58
55
|
});
|
|
59
56
|
const depositAmount = depositCell.capacityFree;
|
|
60
57
|
if (depositAmount < ccc.fixedPointFrom(1000)) {
|
|
@@ -89,13 +86,10 @@ export class LogicManager {
|
|
|
89
86
|
if (!this.isReceipt(receipt.cell)) {
|
|
90
87
|
throw new Error(`Receipt ${outPoint} is not an iCKB receipt for this logic script`);
|
|
91
88
|
}
|
|
92
|
-
if (receipt.header.txHash !== receipt.cell.outPoint.txHash) {
|
|
93
|
-
throw new Error(`Receipt ${outPoint} header txHash ${String(receipt.header.txHash)} does not match cell txHash ${receipt.cell.outPoint.txHash}`);
|
|
94
|
-
}
|
|
95
89
|
}
|
|
96
90
|
tx.addCellDeps(this.cellDeps);
|
|
97
91
|
for (const receipt of receipts) {
|
|
98
|
-
pushHeaderDep(tx, receipt.header.
|
|
92
|
+
pushHeaderDep(tx, receipt.header.hash);
|
|
99
93
|
tx.addInput(receipt.cell);
|
|
100
94
|
}
|
|
101
95
|
return tx;
|
|
@@ -104,17 +98,15 @@ export class LogicManager {
|
|
|
104
98
|
* The receipts among `cells`, valued at their deposit headers, each header read once.
|
|
105
99
|
*/
|
|
106
100
|
async receiptsFrom(client, cells) {
|
|
107
|
-
const receipts = cells.filter((cell) => this.isReceipt(cell));
|
|
108
|
-
const headers = await
|
|
109
|
-
return receipts.map((cell) =>
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return receiptCell(cell, { header: headers.get(txHash), txHash });
|
|
113
|
-
});
|
|
101
|
+
const receipts = cells.filter(({ cell }) => this.isReceipt(cell));
|
|
102
|
+
const headers = await headersByNumber(client, receipts.map(({ blockNumber }) => blockNumber));
|
|
103
|
+
return receipts.map(({ cell, blockNumber }) =>
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- every receipt's block was read above.
|
|
105
|
+
receiptCell(cell, headers.get(blockNumber)));
|
|
114
106
|
}
|
|
115
107
|
/**
|
|
116
108
|
* Every live iCKB deposit, valued at its deposit header, with its claim epoch at the tip;
|
|
117
|
-
* each deposit
|
|
109
|
+
* each deposit block's header is read once.
|
|
118
110
|
*/
|
|
119
111
|
async findDeposits(client, tip) {
|
|
120
112
|
const cells = (await findCells(client, {
|
|
@@ -122,30 +114,27 @@ export class LogicManager {
|
|
|
122
114
|
scriptType: "lock",
|
|
123
115
|
filter: {
|
|
124
116
|
script: this.dao.script,
|
|
125
|
-
outputData:
|
|
117
|
+
outputData: DAO_DEPOSIT_DATA,
|
|
126
118
|
outputDataSearchMode: "exact",
|
|
127
119
|
},
|
|
128
120
|
scriptSearchMode: "exact",
|
|
129
121
|
withData: true,
|
|
130
|
-
})).filter((cell) => this.isDeposit(cell));
|
|
131
|
-
const headers = await
|
|
132
|
-
return cells.map((cell) =>
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return ickbDepositCell(cell, { header: headers.get(txHash), txHash }, tip);
|
|
136
|
-
});
|
|
122
|
+
})).filter(({ cell }) => this.isDeposit(cell));
|
|
123
|
+
const headers = await headersByNumber(client, cells.map(({ blockNumber }) => blockNumber));
|
|
124
|
+
return cells.map(({ cell, blockNumber }) =>
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- every deposit's block was read above.
|
|
126
|
+
ickbDepositCell(cell, headers.get(blockNumber), tip));
|
|
137
127
|
}
|
|
138
128
|
}
|
|
139
129
|
/** Values a DAO deposit cell at its deposit header and samples its claim epoch at the tip. */
|
|
140
|
-
|
|
141
|
-
const interests = ccc.calcDaoProfit(cell.capacityFree,
|
|
130
|
+
function ickbDepositCell(cell, header, tip) {
|
|
131
|
+
const interests = ccc.calcDaoProfit(cell.capacityFree, header, tip);
|
|
142
132
|
return {
|
|
143
133
|
cell,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
claimEpoch: ccc.calcDaoClaimEpoch(depositHeader.header, tip),
|
|
134
|
+
header,
|
|
135
|
+
claimEpoch: ccc.calcDaoClaimEpoch(header, tip),
|
|
147
136
|
ckbValue: cell.cellOutput.capacity + interests,
|
|
148
|
-
udtValue: ickbValue(cell.capacityFree,
|
|
137
|
+
udtValue: ickbValue(cell.capacityFree, header),
|
|
149
138
|
};
|
|
150
139
|
}
|
|
151
140
|
/** The deposits a withdrawal request made now may claim at their sampled dates under the policy. */
|
|
@@ -165,7 +154,7 @@ export function receiptCell(cell, header) {
|
|
|
165
154
|
cell,
|
|
166
155
|
header,
|
|
167
156
|
ckbValue: cell.cellOutput.capacity,
|
|
168
|
-
udtValue: ickbValue(receipt.depositAmount, header
|
|
157
|
+
udtValue: ickbValue(receipt.depositAmount, header) * receipt.depositQuantity,
|
|
169
158
|
};
|
|
170
159
|
}
|
|
171
160
|
/**
|
package/dist/logic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|