@secondlayer/verify 0.5.1 → 0.5.3
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/dist/index.d.ts +124 -59
- package/dist/index.js +76 -61
- package/dist/index.js.map +16 -16
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
type Bytes = Uint8Array;
|
|
2
|
+
/** Encodes bytes as a lowercase hex string. */
|
|
2
3
|
declare const hex: (b: Bytes) => string;
|
|
3
4
|
/** Hex to bytes; tolerates a 0x prefix. */
|
|
4
5
|
declare const unhex: (s: string) => Bytes;
|
|
@@ -26,8 +27,10 @@ interface NakamotoHeader {
|
|
|
26
27
|
*/
|
|
27
28
|
declare function parseNakamotoHeader(raw: Bytes): NakamotoHeader;
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
30
|
+
* Hashes a Nakamoto header the way its signers sign it.
|
|
31
|
+
*
|
|
32
|
+
* It is sha512/256 over every header field except the signer signatures, which
|
|
33
|
+
* is also the header's `block_hash`.
|
|
31
34
|
*/
|
|
32
35
|
declare const signerSignatureHash: (h: NakamotoHeader) => Bytes;
|
|
33
36
|
/**
|
|
@@ -55,28 +58,32 @@ interface Epoch2Header {
|
|
|
55
58
|
}
|
|
56
59
|
type StacksHeader = NakamotoHeader | Epoch2Header;
|
|
57
60
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
+
* Parses the epoch 2.x block header at the start of `raw`.
|
|
62
|
+
*
|
|
63
|
+
* `raw` is a header from `/v2/headers`, or block bytes from `/v2/blocks/<id>`.
|
|
64
|
+
* `consensusHash` is the 20-byte hash of the sortition that elected the block.
|
|
61
65
|
*/
|
|
62
66
|
declare function parseEpoch2Header(raw: Bytes, consensusHash: Bytes): Epoch2Header;
|
|
67
|
+
/** Narrows a Stacks header to an epoch 2.x header. */
|
|
63
68
|
declare const isEpoch2Header: (h: StacksHeader) => h is Epoch2Header;
|
|
64
69
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
70
|
+
* Computes a header's block id, also called the index block hash.
|
|
71
|
+
*
|
|
72
|
+
* The id is sha512/256(block_hash || consensus_hash). A Nakamoto block hash is
|
|
73
|
+
* its signer signature hash; a 2.x one hashes the whole header.
|
|
68
74
|
*/
|
|
69
75
|
declare const blockId2: (h: StacksHeader) => Bytes;
|
|
70
|
-
/**
|
|
76
|
+
/** Hashes a key to its MARF path: sha512/256 of the UTF-8 key. */
|
|
71
77
|
declare const marfPath: (key: string) => Bytes;
|
|
72
|
-
/**
|
|
78
|
+
/** Hashes a value to its MARF value: sha512/256, padded to 40 bytes. */
|
|
73
79
|
declare function marfValue(value: string): Bytes;
|
|
74
80
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
81
|
+
* Lists the ancestor tries a MARF proof crosses.
|
|
82
|
+
*
|
|
83
|
+
* Each id is the backptr a descendant trie follows toward the leaf, and
|
|
84
|
+
* `verifyMarfProof` needs every one's header. They are read from untrusted
|
|
85
|
+
* proof bytes, so they are only fetch hints: the proof still fails unless each
|
|
86
|
+
* header hashes to the id the trie committed. Malformed proofs yield no ids.
|
|
80
87
|
*/
|
|
81
88
|
declare function marfProofAncestors(proof: Bytes): string[];
|
|
82
89
|
interface MarfProofInput {
|
|
@@ -97,9 +104,11 @@ interface MarfProofInput {
|
|
|
97
104
|
headers: StacksHeader[];
|
|
98
105
|
}
|
|
99
106
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
107
|
+
* Verifies a MARF inclusion proof.
|
|
108
|
+
*
|
|
109
|
+
* It is true only when `value` is stored at `path` in the MARF whose tip root
|
|
110
|
+
* is `root`. Inclusion only: MARF proofs cannot prove absence. Malformed proof
|
|
111
|
+
* bytes verify false.
|
|
103
112
|
*/
|
|
104
113
|
declare function verifyMarfProof(input: MarfProofInput): boolean;
|
|
105
114
|
interface WitnessLeaf {
|
|
@@ -159,8 +168,10 @@ declare const SIGNERS_CONTRACT = "SP000000000000000000002Q6VF78.signers";
|
|
|
159
168
|
/** Signer principal -> weight. */
|
|
160
169
|
type SignerSet = Map<string, bigint>;
|
|
161
170
|
/**
|
|
162
|
-
*
|
|
163
|
-
*
|
|
171
|
+
* Decodes a `cycle-signer-set` value from the `.signers` contract.
|
|
172
|
+
*
|
|
173
|
+
* The value is hex or bytes, as stored in the MARF:
|
|
174
|
+
* `(some (list (tuple (signer principal) (weight uint) ...)))`.
|
|
164
175
|
*/
|
|
165
176
|
declare function decodeSignerSet(value: string | Bytes): SignerSet;
|
|
166
177
|
interface SignerCheck {
|
|
@@ -180,9 +191,11 @@ interface SignerCheck {
|
|
|
180
191
|
invalid: number;
|
|
181
192
|
}
|
|
182
193
|
/**
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
194
|
+
* Sums the weight of the signers who signed a block header.
|
|
195
|
+
*
|
|
196
|
+
* It recovers each header signature's key over `signer_signature_hash`, maps it
|
|
197
|
+
* to its mainnet p2pkh principal, and sums weights from `set`. The set must be
|
|
198
|
+
* the one for the reward cycle of the tenure-electing burn block.
|
|
186
199
|
*/
|
|
187
200
|
declare function verifySignerSignatures(header: NakamotoHeader, set: SignerSet): SignerCheck;
|
|
188
201
|
/**
|
|
@@ -193,6 +206,7 @@ declare function verifySignerSignatures(header: NakamotoHeader, set: SignerSet):
|
|
|
193
206
|
declare function verifyConsensusPreimage(consensusHash: Bytes, preimage: Bytes): string | null;
|
|
194
207
|
/** Mainnet PoX parameters (first_burnchain_block_height, reward_cycle_length). */
|
|
195
208
|
declare const MAINNET_FIRST_BURN_HEIGHT = 666050;
|
|
209
|
+
/** Burn blocks in a mainnet reward cycle. */
|
|
196
210
|
declare const MAINNET_REWARD_CYCLE_LENGTH = 2100;
|
|
197
211
|
/** Mainnet prepare phase: the last 100 burn blocks of a cycle pick the next cycle's signers. */
|
|
198
212
|
declare const MAINNET_PREPARE_LENGTH = 100;
|
|
@@ -201,13 +215,14 @@ declare const cycleStart: (cycle: number, firstBurnHeight?: number, cycleLength?
|
|
|
201
215
|
/** Reward cycle containing `burnHeight`. */
|
|
202
216
|
declare function rewardCycle(burnHeight: number, firstBurnHeight?: number, cycleLength?: number): number;
|
|
203
217
|
import { ClarityValue } from "@secondlayer/stacks/clarity";
|
|
204
|
-
/** `vm::<contract>::0::<map>::<serialized key hex
|
|
218
|
+
/** The MARF key of a map entry: `vm::<contract>::0::<map>::<serialized key hex>`. */
|
|
205
219
|
declare function mapEntryKey(contractId: string, mapName: string, key: ClarityValue): string;
|
|
206
|
-
/** `vm::<contract>::1::<var
|
|
220
|
+
/** The MARF key of a data variable: `vm::<contract>::1::<var>`. */
|
|
207
221
|
declare function dataVarKey(contractId: string, varName: string): string;
|
|
208
222
|
/**
|
|
209
|
-
* `vm::<contract>::2::<token>::<principal json
|
|
210
|
-
*
|
|
223
|
+
* The MARF key of a fungible token balance: `vm::<contract>::2::<token>::<principal json>`.
|
|
224
|
+
*
|
|
225
|
+
* The holder is serde-JSON PrincipalData, e.g. `{"Standard":[22,[...20 bytes]]}`.
|
|
211
226
|
*/
|
|
212
227
|
declare function ftBalanceKey(contractId: string, tokenName: string, holder: string): string;
|
|
213
228
|
interface BlockHeader {
|
|
@@ -224,6 +239,11 @@ interface BlockHeader {
|
|
|
224
239
|
nonce: number;
|
|
225
240
|
}
|
|
226
241
|
type HeaderRule = "checkpoint" | "format" | "prev-link" | "bits" | "retarget" | "median-time-past" | "version" | "proof-of-work";
|
|
242
|
+
/**
|
|
243
|
+
* Thrown when a Bitcoin header fails a validation rule.
|
|
244
|
+
*
|
|
245
|
+
* `rule` names the rule and `height` the header that failed it.
|
|
246
|
+
*/
|
|
227
247
|
declare class HeaderValidationError extends Error {
|
|
228
248
|
readonly height: number;
|
|
229
249
|
readonly rule: HeaderRule;
|
|
@@ -248,6 +268,7 @@ interface ChainEntry {
|
|
|
248
268
|
header: BlockHeader;
|
|
249
269
|
raw: Uint8Array;
|
|
250
270
|
}
|
|
271
|
+
/** A validated chain of Bitcoin headers, grown forward from a checkpoint. */
|
|
251
272
|
declare class HeaderChain {
|
|
252
273
|
private readonly base;
|
|
253
274
|
private readonly periodStartTime;
|
|
@@ -255,6 +276,7 @@ declare class HeaderChain {
|
|
|
255
276
|
private readonly heights;
|
|
256
277
|
private work;
|
|
257
278
|
private constructor();
|
|
279
|
+
/** Starts a header chain at a checkpoint. */
|
|
258
280
|
static fromCheckpoint(checkpoint: Checkpoint): HeaderChain;
|
|
259
281
|
get tip(): ChainEntry;
|
|
260
282
|
/** Work summed from the checkpoint (inclusive) to the tip; not chainwork since genesis. */
|
|
@@ -262,6 +284,7 @@ declare class HeaderChain {
|
|
|
262
284
|
get checkpointHeight(): number;
|
|
263
285
|
/** Height of a header in this chain by display-order hash, or undefined. */
|
|
264
286
|
heightOf(hashHex: string): number | undefined;
|
|
287
|
+
/** The header entry at a height, if the chain has one. */
|
|
265
288
|
headerAt(height: number): ChainEntry | undefined;
|
|
266
289
|
/**
|
|
267
290
|
* Validates and appends headers in order. All-or-nothing: if any header
|
|
@@ -277,6 +300,13 @@ declare class HeaderChain {
|
|
|
277
300
|
private medianTimePast;
|
|
278
301
|
private push;
|
|
279
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Mainnet: Stacks block 9,055,251 (`10cb4e95…c5be`) holding the cycle 144
|
|
305
|
+
* signer set (31 signers, weight 4000), and Bitcoin block 967,680 (a
|
|
306
|
+
* retarget-period start at or below cycle 144's first burn block 968,450). Later blocks verify forward
|
|
307
|
+
* (burn height 967,680 or later); earlier ones by hash chain from 9,055,251.
|
|
308
|
+
*/
|
|
309
|
+
declare const MAINNET_CHECKPOINT: VerifyCheckpoint;
|
|
280
310
|
interface VerifyCheckpoint {
|
|
281
311
|
stacks: {
|
|
282
312
|
/** Raw Nakamoto header (hex) of a trusted block whose state holds `signerSet`. */
|
|
@@ -289,13 +319,6 @@ interface VerifyCheckpoint {
|
|
|
289
319
|
/** Retarget-boundary Bitcoin header at or below the first burn block of `stacks.cycle`. */
|
|
290
320
|
bitcoin: Checkpoint;
|
|
291
321
|
}
|
|
292
|
-
/**
|
|
293
|
-
* Mainnet: Stacks block 8,956,304 (`3914ea5f…74bb`) holding the cycle 143
|
|
294
|
-
* signer set (29 signers, weight 4000), and Bitcoin block 967,680 (a
|
|
295
|
-
* retarget-period start inside cycle 143). Later blocks verify forward
|
|
296
|
-
* (burn height 967,680 or later); earlier ones by hash chain from 8,956,304.
|
|
297
|
-
*/
|
|
298
|
-
declare const MAINNET_CHECKPOINT: VerifyCheckpoint;
|
|
299
322
|
/** Sortition preimage behind a consensus hash. */
|
|
300
323
|
interface BurnPreimage {
|
|
301
324
|
preimage: Bytes;
|
|
@@ -366,6 +389,12 @@ interface ProofSource {
|
|
|
366
389
|
/** Indexed vm_events write rows of the block, checked against its proven diff. */
|
|
367
390
|
getVmEvents?(height: number): Promise<VmEventRow[]>;
|
|
368
391
|
}
|
|
392
|
+
/**
|
|
393
|
+
* Thrown when a proof source request fails.
|
|
394
|
+
*
|
|
395
|
+
* It carries the request `url`, the HTTP `status` (null when there was none)
|
|
396
|
+
* and the detail.
|
|
397
|
+
*/
|
|
369
398
|
declare class SourceError extends Error {
|
|
370
399
|
readonly url: string;
|
|
371
400
|
readonly status: number | null;
|
|
@@ -386,21 +415,39 @@ interface SecondlayerSourceOptions {
|
|
|
386
415
|
fetch?: Fetch;
|
|
387
416
|
}
|
|
388
417
|
/**
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
418
|
+
* Reads every proof input from the Secondlayer API.
|
|
419
|
+
*
|
|
420
|
+
* Blocks, epoch 2.x headers, MARF proofs, witnesses, burn preimages, Bitcoin
|
|
421
|
+
* headers and each block's state writes come from `/v1/proofs/*`, which is free
|
|
422
|
+
* and rate limited. Indexed `vm_events` rows come from the Index API as metered
|
|
423
|
+
* rows, and are read only when `verifyBlock` gets `rows: true`. Methods are own
|
|
424
|
+
* properties, so a partial source spreads over it:
|
|
394
425
|
* `{ ...new SecondlayerProofSource(o), ...new NodeRpcProofSource(n) }`.
|
|
395
426
|
*/
|
|
396
427
|
declare class SecondlayerProofSource implements ProofSource {
|
|
428
|
+
/** Raw block bytes, header first, by block id or height. */
|
|
397
429
|
getBlock: (ref: string | number) => Promise<Bytes>;
|
|
430
|
+
/** An epoch 2.x header and its consensus hash, by index block hash. */
|
|
398
431
|
getEpoch2Header: (blockId: string) => Promise<Epoch2HeaderResponse>;
|
|
432
|
+
/**
|
|
433
|
+
* A MARF inclusion proof for a path at a tip.
|
|
434
|
+
*
|
|
435
|
+
* It is null when the key is absent.
|
|
436
|
+
*/
|
|
399
437
|
getMarfProof: (pathHex: string, tipId: string) => Promise<MarfProofResponse | null>;
|
|
438
|
+
/** The state witness for a block. */
|
|
400
439
|
getWitness: (blockId: string) => Promise<Bytes>;
|
|
440
|
+
/** The burn preimage behind a consensus hash. */
|
|
401
441
|
getBurnPreimage: (consensusHash: string) => Promise<BurnPreimage>;
|
|
442
|
+
/** Raw 80-byte Bitcoin headers, `count` of them from height `from`. */
|
|
402
443
|
getBitcoinHeaders: (from: number, count: number) => Promise<string[]>;
|
|
444
|
+
/**
|
|
445
|
+
* Every MARF write of a block, in ordinal order.
|
|
446
|
+
*
|
|
447
|
+
* It is null when there are none.
|
|
448
|
+
*/
|
|
403
449
|
getStateWrites: (height: number) => Promise<StateWrite[] | null>;
|
|
450
|
+
/** The indexed `vm_events` write rows of a block, from the Index API. */
|
|
404
451
|
getVmEvents: (height: number) => Promise<VmEventRow[]>;
|
|
405
452
|
constructor(opts?: SecondlayerSourceOptions);
|
|
406
453
|
}
|
|
@@ -410,13 +457,21 @@ interface NodeRpcSourceOptions {
|
|
|
410
457
|
fetch?: Fetch;
|
|
411
458
|
}
|
|
412
459
|
/**
|
|
413
|
-
*
|
|
414
|
-
*
|
|
415
|
-
*
|
|
460
|
+
* Reads blocks, epoch 2.x headers and MARF proofs from a Stacks node.
|
|
461
|
+
*
|
|
462
|
+
* It uses the node's RPC. Witnesses, burn preimages and Bitcoin headers need
|
|
463
|
+
* another source: spread this over one.
|
|
416
464
|
*/
|
|
417
465
|
declare class NodeRpcProofSource implements Pick<ProofSource, "getBlock" | "getEpoch2Header" | "getMarfProof"> {
|
|
466
|
+
/** Raw block bytes, header first, by block id or height. */
|
|
418
467
|
getBlock: (ref: string | number) => Promise<Bytes>;
|
|
468
|
+
/** An epoch 2.x header and its consensus hash, by index block hash. */
|
|
419
469
|
getEpoch2Header: (blockId: string) => Promise<Epoch2HeaderResponse>;
|
|
470
|
+
/**
|
|
471
|
+
* A MARF inclusion proof for a path at a tip.
|
|
472
|
+
*
|
|
473
|
+
* It is null when the key is absent.
|
|
474
|
+
*/
|
|
420
475
|
getMarfProof: (pathHex: string, tipId: string) => Promise<MarfProofResponse | null>;
|
|
421
476
|
constructor(opts: NodeRpcSourceOptions);
|
|
422
477
|
}
|
|
@@ -489,11 +544,12 @@ interface BlockStateResult {
|
|
|
489
544
|
failures: StateFailure[];
|
|
490
545
|
}
|
|
491
546
|
/**
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
495
|
-
*
|
|
496
|
-
*
|
|
547
|
+
* Verifies a block's state against an authenticated header.
|
|
548
|
+
*
|
|
549
|
+
* The witness must recompute `stateRoot`, then every leaf is classified. With
|
|
550
|
+
* state writes, any leaf that is not a named write, a carried parent value or
|
|
551
|
+
* MARF bookkeeping is a hidden write. Without them the diff is still proven,
|
|
552
|
+
* since every leaf is in the block: carried leaves are told apart only through
|
|
497
553
|
* `parentLeaves`, and the remaining writes come back unnamed.
|
|
498
554
|
*/
|
|
499
555
|
declare function verifyBlockState(input: BlockStateInput): Promise<BlockStateResult>;
|
|
@@ -504,20 +560,25 @@ interface BlockTransaction {
|
|
|
504
560
|
raw: Bytes;
|
|
505
561
|
}
|
|
506
562
|
/**
|
|
507
|
-
* tx_merkle_root over
|
|
508
|
-
*
|
|
509
|
-
*
|
|
563
|
+
* Computes the `tx_merkle_root` over transaction ids.
|
|
564
|
+
*
|
|
565
|
+
* A leaf is H(0x00 ‖ txid) and a node is H(0x01 ‖ l ‖ r). An odd level
|
|
566
|
+
* duplicates its last node, and a lone leaf is still paired with itself, so a
|
|
567
|
+
* one-transaction block hashes H(0x01 ‖ leaf ‖ leaf).
|
|
510
568
|
*/
|
|
511
569
|
declare function txMerkleRoot2(txids: Bytes[]): Bytes;
|
|
570
|
+
/** Thrown for a malformed block body or a transaction root mismatch. */
|
|
512
571
|
declare class TransactionsError extends Error {
|
|
513
572
|
readonly code: "malformed" | "tx-root-mismatch";
|
|
514
573
|
constructor(code: "malformed" | "tx-root-mismatch", message: string);
|
|
515
574
|
}
|
|
516
575
|
/**
|
|
517
|
-
*
|
|
518
|
-
*
|
|
519
|
-
*
|
|
520
|
-
*
|
|
576
|
+
* Hashes a block's transactions and checks them against the header.
|
|
577
|
+
*
|
|
578
|
+
* Each transaction is hashed to its txid and checked against the header's
|
|
579
|
+
* `tx_merkle_root`. The body after `header.byteLength` is a u32 count, then the
|
|
580
|
+
* transactions back to back. It returns null when the bytes are the header
|
|
581
|
+
* alone, as a source that serves headers only does. It throws
|
|
521
582
|
* {@link TransactionsError} on a malformed body, trailing bytes or a root
|
|
522
583
|
* mismatch.
|
|
523
584
|
*/
|
|
@@ -606,8 +667,10 @@ interface VerifyOptions {
|
|
|
606
667
|
onStep?: (step: VerifyStep) => void;
|
|
607
668
|
}
|
|
608
669
|
/**
|
|
609
|
-
* Verifies blocks from one checkpoint against one source
|
|
610
|
-
*
|
|
670
|
+
* Verifies blocks from one checkpoint against one source.
|
|
671
|
+
*
|
|
672
|
+
* It caches the Bitcoin header chain, proven signer sets and fetched headers
|
|
673
|
+
* across calls.
|
|
611
674
|
*/
|
|
612
675
|
declare class BlockVerifier {
|
|
613
676
|
private readonly source;
|
|
@@ -749,9 +812,11 @@ declare const LINKS: readonly {
|
|
|
749
812
|
label: string
|
|
750
813
|
}[];
|
|
751
814
|
/**
|
|
752
|
-
*
|
|
753
|
-
*
|
|
754
|
-
*
|
|
815
|
+
* Describes a verification as one line per link and a verdict.
|
|
816
|
+
*
|
|
817
|
+
* It is the human view, shared by the CLI and the browser checker. Ancestry
|
|
818
|
+
* appears only below the checkpoint. `rows` says whether the caller asked for
|
|
819
|
+
* the rows link.
|
|
755
820
|
*/
|
|
756
821
|
declare function describeLinks(r: BlockVerification, cp: VerifyCheckpoint, opts?: {
|
|
757
822
|
rows?: boolean
|
package/dist/index.js
CHANGED
|
@@ -897,72 +897,87 @@ function toRaw(item, height) {
|
|
|
897
897
|
}
|
|
898
898
|
return raw;
|
|
899
899
|
}
|
|
900
|
-
// src/checkpoint.ts
|
|
900
|
+
// src/checkpoint-mainnet.ts
|
|
901
901
|
var MAINNET_CHECKPOINT = {
|
|
902
902
|
stacks: {
|
|
903
903
|
header: [
|
|
904
|
-
"
|
|
905
|
-
"
|
|
906
|
-
"
|
|
907
|
-
"
|
|
908
|
-
"
|
|
909
|
-
"
|
|
910
|
-
"
|
|
911
|
-
"
|
|
912
|
-
"
|
|
913
|
-
"
|
|
914
|
-
"
|
|
915
|
-
"
|
|
916
|
-
"
|
|
917
|
-
"
|
|
918
|
-
"
|
|
919
|
-
"
|
|
920
|
-
"
|
|
921
|
-
"
|
|
922
|
-
"
|
|
923
|
-
"
|
|
924
|
-
"
|
|
925
|
-
"
|
|
926
|
-
"
|
|
904
|
+
"0100000000008a2c1300000066469e6fe824e36e45dbfb6f63201cc4847d12cae9c128c66d8e9a793304ef768e4728c6",
|
|
905
|
+
"7634484bd3dc868a787699dd8952c6b37cdeaefed8451304f9bf56fc8e9b5e8d80c716d8bece86dbe7e855348e71dc23",
|
|
906
|
+
"a3e7327ecf9ff95aa970430671f50a2ff6fd8c4ef444c4650ce456c8a10b5c8e084670e692000000006ab58f03003c14",
|
|
907
|
+
"9857675a089d271510492aa1e1decfd5c4a32e6f27f4aaaf299822bd0f83599991bc1ee5027e08f2181bcb1285d6f04b",
|
|
908
|
+
"a66cd3e4122f1565d266bcae019c0000001701e427ee3446da226d964aba82349d59691a8a9d087cd7519fd53b3ca555",
|
|
909
|
+
"e45f0746cd3e0c7cd196e2f8acf668c88aadb0e2bb3c185565d34f6475e13ac003929100b0bc28034cee5679858614f4",
|
|
910
|
+
"9e554f55cec31a7cd4cb3f56d6be284df984b3ea2b5e15744325c6d6de0648e3c14f8c4a0f15eb8c1d87693013b13390",
|
|
911
|
+
"36f8973900e0853aac5dd6dff18c20d8cf2196a22ed65bced9d5e75b932a0b05778763725a4490f514b85d5274099b3b",
|
|
912
|
+
"8a4cb02dd105bd85ea87276bad8a419d1e7ca4fe3601264cc97fc706ad2ae443baf9ea807e2c3ab2c0c561b847689ad9",
|
|
913
|
+
"57a2f7ea41c7749d9847dec5b6458693955a8367ee44bf16233db5bab24704470bfa820ebff200a51fd156df644335ba",
|
|
914
|
+
"e6d4e63c229ff0556aa75f98360fa0fa72439426e09d2964ffe74ebb628a04ad2493d1bf2c5548416afc0afafcbe57d1",
|
|
915
|
+
"d0c2e5d0f54b3a01222775d8bf237bde985b1a5199e3d2bc248fab425d338fb9102bbd860687b0e516c9a7891628ad3b",
|
|
916
|
+
"31e11dd447594fc9a3381dd62efe0fdf183a4d6e6d630ae6018c2a16339c484a26b239fbc04572bccc22435e90607a4e",
|
|
917
|
+
"01980614ebe4c6b5337ed06fb359e8f2db7add5e6da7f45e806a30a9d2abb8fc4841611c2bf13c9eb901463e39a7b64c",
|
|
918
|
+
"26d78deffd691be358fcfa03f28179da0f300aa4b045a59072c523e824372b172aec0a9ea71c568ab769b5672fa01ab1",
|
|
919
|
+
"3c36799ba4e85749722b012ab3b504a3ece80bf2186db6fe2407847fb6eef44206de958788b552c1226c034ccf34681f",
|
|
920
|
+
"d02f9f2f890b09a94b4002326ac836620a4daffc6a4149bc58a52600977d6a2b9aaf7adf6f5108dd2c9e05f169991907",
|
|
921
|
+
"0514fae6c4e0aeab2656b9a47581de7232198cef38d07d7fe1cd0238d88cac758280b2c633d0bab556ffe311010f0162",
|
|
922
|
+
"14ac30572c349981bc006617b43315b0d52efb06ea00c012f1269311340c8bd32615d24201279b3cd77d97adbb80b3e5",
|
|
923
|
+
"1a0ec357fc1b0865c826f292f4013df0c85f71124088fed20acc3160df54b6d9e0a454a5c7689239125acd4d613e6a2c",
|
|
924
|
+
"ed667e92d34d0548983d3c5d53468e00ec15bafc27b8946edae6aed04157008980f7c33cad51d44ff60d61a941cc62b3",
|
|
925
|
+
"e73a47e0cda51e564b01433866545640736823d42ae8b74ca35764812ebcf943a47b150f4e7f794c0216611051dd7000",
|
|
926
|
+
"c77ba1ce6a3a5d205b701c9d55fe5ac8730ec827deecfa8ad7800c331a839c4c705bc7708728128849ed5945b6020a38",
|
|
927
|
+
"7d1dbc08f8d4fb8449a722ee2e9f02b50023724701dc7a7c69b3025abfea79e67d7d7a5156c77072c9d58f4bf1cae2f5",
|
|
928
|
+
"f62f29527eb27f725f03d05986be28102ea27ee22052ef046ff1c6a4e09dc9a2c501f5231b9ff20a199c872f137b6ee5",
|
|
929
|
+
"cfd9ceb1df5973cd3ffab5a66fb6c89e58de550360f9933f6c5087d833e5b59b928405a676013e7377552bc6353fc852",
|
|
930
|
+
"94fd0083c761efba23bd276e82648135a4efcf73298bb13ef6e1cfbff37d3d99c757d46be3bffb5ec0fd46ffa849a1e5",
|
|
931
|
+
"813fcdb5d38ee95c5db3283bde0179c7a3b46e016b2418238b35dfeb9b84142f391702f71be43970e725576030102a7d",
|
|
932
|
+
"45acd6d834547636d6bc2a0bc559b9408edb460d5f4384ecefcdfad64e89923c30d83ed400a9009444429ec9a22789f2",
|
|
933
|
+
"31629ec51067c76a3d3802d0a4a625be9679c36ef12e2a888458bcdac4fe9ada9cfdea650a77a2b46fb760c144485f34",
|
|
934
|
+
"ac3ae7d5d70041eb4b36d08f7997747fb991d00c086644cc6ec1bf3f9bb53336e78358961d844d107bdb6e59977f9a9c",
|
|
935
|
+
"0d8f996efb36eed0d7fb8ce26fadc63cb9b79cc7795201a9ebee00b3818295c807c90ea8e6f9d0b4beee23003365ada5",
|
|
936
|
+
"4ca964390bc1c62bfe1a7e78084c384bef7ca2ed45241e818fefe1911d711fad5e13eff8ddf31000f08d21fc2a3b8c67",
|
|
937
|
+
"193fec9a326b8a49c0a9696fc66523014b9db5ed312a824a5bd87e29fbe3328d5f3ed05c3f38c7f4a6e4e53410830849",
|
|
938
|
+
"6a7458a149ff975101a957fd6ff8ce3d70bf0a9f5652aa6a87e27f3a8130d3f70558417cc3744d9b9b5879872467e520",
|
|
939
|
+
"f641c7253dc159cd1a0e2547d1c9a6ff3c45ce2d233e626fea0001000000010100000000"
|
|
927
940
|
].join(""),
|
|
928
|
-
cycle:
|
|
941
|
+
cycle: 144,
|
|
929
942
|
signerSet: [
|
|
930
|
-
"
|
|
931
|
-
"
|
|
943
|
+
"0a0b0000001f0c00000002067369676e65720516f5061b1c62f399ecc0db8cbb21f8d481af079a380677656967687401",
|
|
944
|
+
"0000000000000000000000000000027c0c00000002067369676e65720516a3bbf2a4133fbd5bd1880982957b7a760347",
|
|
932
945
|
"b2dc0677656967687401000000000000000000000000000000090c00000002067369676e657205164f72f6b5a9f5d863",
|
|
933
|
-
"
|
|
934
|
-
"
|
|
935
|
-
"
|
|
936
|
-
"
|
|
937
|
-
"
|
|
938
|
-
"
|
|
939
|
-
"
|
|
940
|
-
"
|
|
941
|
-
"
|
|
942
|
-
"
|
|
943
|
-
"
|
|
944
|
-
"
|
|
945
|
-
"
|
|
946
|
-
"
|
|
947
|
-
"
|
|
948
|
-
"
|
|
949
|
-
"
|
|
950
|
-
"
|
|
951
|
-
"
|
|
952
|
-
"
|
|
953
|
-
"
|
|
954
|
-
"
|
|
955
|
-
"
|
|
956
|
-
"
|
|
957
|
-
"
|
|
958
|
-
"
|
|
959
|
-
"
|
|
960
|
-
"
|
|
961
|
-
"
|
|
962
|
-
"
|
|
963
|
-
"
|
|
964
|
-
"
|
|
965
|
-
"
|
|
946
|
+
"34b2f0fe701db51a7a246f3d0677656967687401000000000000000000000000000000a90c00000002067369676e6572",
|
|
947
|
+
"0516f70ad5f98bb53d1ff1946e62096df4bf71cdb1b20677656967687401000000000000000000000000000000090c00",
|
|
948
|
+
"000002067369676e6572051653ec8b4f51c8286dad6f4ff81ca2a3409d2f382d06776569676874010000000000000000",
|
|
949
|
+
"00000000000000050c00000002067369676e65720516dba631825ff0f15c7c5946b560070f8f5f5747cb067765696768",
|
|
950
|
+
"7401000000000000000000000000000000240c00000002067369676e6572051600d058b39f4495b412ff7eada763eaa6",
|
|
951
|
+
"386eb90a06776569676874010000000000000000000000000000027c0c00000002067369676e65720516321ac33715d6",
|
|
952
|
+
"84d5e8d0cf427cd985576f64c6df06776569676874010000000000000000000000000000000b0c00000002067369676e",
|
|
953
|
+
"6572051671cfb41047d1833d24abc8f08a785182b769fd14067765696768740100000000000000000000000000000004",
|
|
954
|
+
"0c00000002067369676e6572051677a52718ba90fca67984166b2a084edb9b3bd8f10677656967687401000000000000",
|
|
955
|
+
"000000000000000000090c00000002067369676e65720516a54a20479b3b65a461a427b9161b78e64db58ba706776569",
|
|
956
|
+
"67687401000000000000000000000000000001f50c00000002067369676e65720516bc1a58c2a058a9e4150db25562e8",
|
|
957
|
+
"331ef8a4267c0677656967687401000000000000000000000000000000060c00000002067369676e657205161091d2da",
|
|
958
|
+
"4c9ee17a340171c0d23c4304b54ef43f0677656967687401000000000000000000000000000000670c00000002067369",
|
|
959
|
+
"676e6572051654d01a0973ed139736a1a43032a6a18d9295ec7206776569676874010000000000000000000000000000",
|
|
960
|
+
"00b50c00000002067369676e657205160c49f5b6c62f1163ddbb21f92aba86f17f7be488067765696768740100000000",
|
|
961
|
+
"0000000000000000000000670c00000002067369676e65720516ad16c79ac56b58f0797f78c534385367460626800677",
|
|
962
|
+
"656967687401000000000000000000000000000000670c00000002067369676e657205169689e56df00385b6bd81fb6b",
|
|
963
|
+
"7769d5b04088acb80677656967687401000000000000000000000000000000aa0c00000002067369676e65720516a4f7",
|
|
964
|
+
"f81412f4413771a48825cfbe2062a774d4e90677656967687401000000000000000000000000000002fe0c0000000206",
|
|
965
|
+
"7369676e65720516ed73a7398f1c3eb566f3bd7f4bd43f52adf33d8f0677656967687401000000000000000000000000",
|
|
966
|
+
"000000670c00000002067369676e65720516937b3b43e0d94c9ef8f171892bce949709e1d41f06776569676874010000",
|
|
967
|
+
"00000000000000000000000000240c00000002067369676e6572051631542aacfd6e04858181c3067b5eb07399ba89df",
|
|
968
|
+
"0677656967687401000000000000000000000000000000590c00000002067369676e6572051649f034cd1662a222dbc3",
|
|
969
|
+
"8a6acd64008ba7e557660677656967687401000000000000000000000000000000050c00000002067369676e65720516",
|
|
970
|
+
"a20f660dea498c169897a39cb89ce0d98856e5720677656967687401000000000000000000000000000000090c000000",
|
|
971
|
+
"02067369676e6572051652d58897b3678f3a758fa4b9270744fec0605b21067765696768740100000000000000000000",
|
|
972
|
+
"0000000000670c00000002067369676e6572051631733264626dc5fef36eb683a5069d89f63b64cc0677656967687401",
|
|
973
|
+
"000000000000000000000000000000090c00000002067369676e65720516d80db618c2def577604cd8e40a3940b5b639",
|
|
974
|
+
"b1ac06776569676874010000000000000000000000000000000a0c00000002067369676e657205162042a380d946a828",
|
|
975
|
+
"66465af8521a273efe6d2a600677656967687401000000000000000000000000000000470c00000002067369676e6572",
|
|
976
|
+
"051635e1b36efc22bc607db92f9100cb08e3473d60250677656967687401000000000000000000000000000000030c00",
|
|
977
|
+
"000002067369676e657205164843b97054e43dd1a8571fc1e72949c5bedfb7e906776569676874010000000000000000",
|
|
978
|
+
"000000000000004b0c00000002067369676e657205164883355670025c19ecae644ffa20e75ce1d730ad067765696768",
|
|
979
|
+
"7401000000000000000000000000000000090c00000002067369676e65720516089ffd0e0ecd61d9e3c8ee42ef94148a",
|
|
980
|
+
"cf88aa88067765696768740100000000000000000000000000000015"
|
|
966
981
|
].join("")
|
|
967
982
|
},
|
|
968
983
|
bitcoin: {
|
|
@@ -2205,5 +2220,5 @@ export {
|
|
|
2205
2220
|
verifySignerSignatures
|
|
2206
2221
|
};
|
|
2207
2222
|
|
|
2208
|
-
//# debugId=
|
|
2223
|
+
//# debugId=C611E693588430B164756E2164756E21
|
|
2209
2224
|
//# sourceMappingURL=index.js.map
|