@sig-net/midnight 0.21.0-rc.8 → 0.21.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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  The [Sig Network](https://sig.network) [Distributed MPC](https://github.com/sig-net/mpc) integration for the [Midnight blockchain](https://midnight.network) lets contracts on Midnight execute arbitrary transactions on foreign blockchains, and respond to the results of those transactions.
4
4
 
5
- `@sig-net/midnight` is the client-agnostic protocol library for that integration. It carries everything a Midnight contract or off-chain client needs to speak the signet protocol (the MPC's [sign bidirectional flow](https://github.com/sig-net/midnight-integration/blob/main/README.md#sign-bidirectional-flow)). It does not bind to any particular contract.
5
+ `@sig-net/midnight` is the client-agnostic protocol library for that integration. It carries everything a Midnight contract or off-chain client needs to speak the signet protocol (the MPC's [sign bidirectional flow](https://github.com/sig-net/midnight-integration/blob/main/README.md#sign-bidirectional-protocol-flow)). It does not bind to any particular contract.
6
6
 
7
7
  > ## 🚧 Under Construction 🚧
8
8
  >
@@ -33,8 +33,9 @@ npm install @sig-net/midnight
33
33
 
34
34
  The protocol and integration documentation lives in the [sig-net/midnight-integration README](https://github.com/sig-net/midnight-integration/blob/main/README.md):
35
35
 
36
- - [Sign Bidirectional Flow](https://github.com/sig-net/midnight-integration/blob/main/README.md#sign-bidirectional-flow): the 5-step protocol this package speaks, with diagram, failure handling and output recovery.
36
+ - [Sign Bidirectional Flow](https://github.com/sig-net/midnight-integration/blob/main/README.md#sign-bidirectional-protocol-flow): the 5-step protocol this package speaks, with diagram, failure handling and output recovery.
37
37
  - [Derived keys](https://github.com/sig-net/midnight-integration/blob/main/README.md#derived-keys): the request signing key and the response key, and how the MPC derives them.
38
+ - [Handling Failure](https://github.com/sig-net/midnight-integration/blob/main/README.md#handling-failure): the fixed 5-byte failure payload the MPC attests for a failed foreign transaction, how a contract tells it apart from a success, and which respond schemas cannot.
38
39
  - [Integrator Guide](https://github.com/sig-net/midnight-integration/blob/main/README.md#integrator-guide): the once-off setup and the per-request runtime steps, built on this package's exports.
39
40
  - [EVM Type 2 transactions and ABI calldata words](https://github.com/sig-net/midnight-integration/blob/main/README.md#evm-type-2-transactions-and-abi-calldata-words): building calldata words in-circuit and deserialising respond payloads.
40
41
 
@@ -66,10 +67,11 @@ What clients import from `@sig-net/midnight`:
66
67
  | Derive the key the MPC signs your requests with | `deriveEvmAddress`: the expected signer address checked in step 2 (see [Derived keys](https://github.com/sig-net/midnight-integration/blob/main/README.md#derived-keys)). |
67
68
  | Derive the response key your deploy pins | `deriveMidnightResponseKey`: the key `initialise` stores (setup step 4), derived from your contract's address. |
68
69
  | Look up published counterparty values | `MidnightNetwork`, `getMpcRootPublicKey` and `getSignetContractAddress`: the fixed per-network values (see the notes in [Runtime](https://github.com/sig-net/midnight-integration/blob/main/README.md#runtime)). |
70
+ | Accept an MPC public key in any published spelling | `parseSecp256k1PublicKey` (to a Compact `Secp256k1Point`) and `normaliseSecp256k1PublicKey` (to the canonical `0x04…` uncompressed SEC1 hex): both take SEC1 hex, compressed or uncompressed with an optional `0x`, and NEAR's `secp256k1:<base58>`. |
69
71
  | Compute a request id off chain | `calculateRequestId`: the TS twin of the on-chain circuit, plus `requestIdHex` and `parseRequestIdHex` for the hex form. |
70
72
  | Compose expected calldata words off chain (UIs, expected-record builders, tests) | The builders `numericAbiWord`, `evmAddressAbiWord` and `boolAbiWord`, and the readers `abiWordToUint128` and `abiWordToBool`: TS twins of the circuits under identical names. |
71
73
  | Convert a foreign execution output into respond bytes | `deserializeEvmOutput` (raw EVM return data to named values) and `serializeRespondOutput` (named values to the packed respond payload the MPC attests): together they rebuild the `serializedOutput` of steps 4 and 5. |
72
- | Recognise a failed remote execution | `MPC_FAILURE_OUTPUT` and `isMpcFailureOutput`: the MPC's fixed 5-byte failure payload for reverted or replaced transactions. |
74
+ | Recognise a failed remote execution | `MPC_FAILURE_OUTPUT` and `isMpcFailureOutput`: the MPC's fixed 5-byte failure payload for reverted or replaced transactions (see [Handling Failure](https://github.com/sig-net/midnight-integration/blob/main/README.md#handling-failure)). |
73
75
  | Verify attestations without the reader | `verifyRespondBidirectionalSignature`: the check the reader runs internally, exposed for custom pipelines. |
74
76
  | Mint attestations in your contract's unit tests | The `@sig-net/midnight/testing` entry point, see [Testing entry point](#testing-entry-point). |
75
77
  | Discover requests MPC-side (responders, background workers) | The discovery primitives: decode the signet contract's emitted notification events with `decodeSignBidirectionalEventNotificationPayload` and `decodeSignBidirectionalNotification`, then resolve each pointer against the named caller's own request map with `lookupSignetRequestAt` (the authenticated read). The polling loop belongs to the responder. |
@@ -63,10 +63,11 @@ export declare enum MidnightNetwork {
63
63
  */
64
64
  export type DeployedNetwork = Exclude<MidnightNetwork, MidnightNetwork.Undeployed>;
65
65
  /**
66
- * The MPC root public key of a deployed Midnight network, as hex: the
67
- * `mpcRootPublicKey` every client key derivation starts from (see
68
- * `deriveEvmAddress`). A local standalone stack has no fixed key: its setup
69
- * generates a fresh `MPC_ROOT_KEY` per stack.
66
+ * The MPC root public key of a deployed Midnight network, as `0x04…`
67
+ * uncompressed SEC1 hex (the canonical spelling of
68
+ * `normaliseSecp256k1PublicKey`): the `mpcRootPublicKey` every client key
69
+ * derivation starts from (see `deriveEvmAddress`). A local standalone stack
70
+ * has no fixed key: its setup generates a fresh `MPC_ROOT_KEY` per stack.
70
71
  *
71
72
  * @param networkId - The deployed network to look up.
72
73
  * @returns The network's MPC root public key.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AASA,+DAA+D;AAC/D,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,wFAAwF;AACxF,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,yBAAiD,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAKxE;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAUpE;AAED;;;GAGG;AACH,oBAAY,eAAe;IACzB,mFAAmF;IACnF,UAAU,eAAe;IACzB,2CAA2C;IAC3C,QAAQ,aAAa;IACrB,iFAAiF;IACjF,OAAO,YAAY;IACnB,+EAA+E;IAC/E,OAAO,YAAY;IACnB,6CAA6C;IAC7C,OAAO,YAAY;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;AAYnF;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAMtE;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAM3E"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AASA,+DAA+D;AAC/D,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,wFAAwF;AACxF,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,yBAAiD,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAKxE;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAUpE;AAED;;;GAGG;AACH,oBAAY,eAAe;IACzB,mFAAmF;IACnF,UAAU,eAAe;IACzB,2CAA2C;IAC3C,QAAQ,aAAa;IACrB,iFAAiF;IACjF,OAAO,YAAY;IACnB,+EAA+E;IAC/E,OAAO,YAAY;IACnB,6CAA6C;IAC7C,OAAO,YAAY;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;AAgBnF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAMtE;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAM3E"}
package/dist/constants.js CHANGED
@@ -75,20 +75,25 @@ export var MidnightNetwork;
75
75
  /** Production network (live, real value). */
76
76
  MidnightNetwork["Mainnet"] = "mainnet";
77
77
  })(MidnightNetwork || (MidnightNetwork = {}));
78
- // TODO: fill in each network's MPC root public key once it is generated and
79
- // published for that network. An empty string means "not yet published" and
78
+ // Each network's MPC root public key in the canonical `0x04…` uncompressed
79
+ // SEC1 hex (`normaliseSecp256k1PublicKey`), filled in as the MPC operators
80
+ // publish it for that network. An empty string means "not yet published" and
80
81
  // makes getMpcRootPublicKey throw for that network.
81
82
  const mpcRootPublicKeys = {
82
- [MidnightNetwork.Stagenet]: "",
83
+ [MidnightNetwork.Stagenet]:
84
+ // Canonical form of the signet.js TESTNET_DEV root key:
85
+ // secp256k1:54hU5wcCmVUPFWLDALXMh1fFToZsVXrx9BbTbHzSfQq1Kd1rJZi52iPa4QQxo6s5TgjWqgpY8HamYuUDzG6fAaUq
86
+ "0x04cb41bab8bc97121f4902514ca57a284f167b9239ecb8176831d1ef0fede87c61ca3e59da1c194aa90108098a9e5cdc55d3b3297cdefbc085ffafd0f2c34ae61a",
83
87
  [MidnightNetwork.Preview]: "",
84
88
  [MidnightNetwork.Preprod]: "",
85
89
  [MidnightNetwork.Mainnet]: "",
86
90
  };
87
91
  /**
88
- * The MPC root public key of a deployed Midnight network, as hex: the
89
- * `mpcRootPublicKey` every client key derivation starts from (see
90
- * `deriveEvmAddress`). A local standalone stack has no fixed key: its setup
91
- * generates a fresh `MPC_ROOT_KEY` per stack.
92
+ * The MPC root public key of a deployed Midnight network, as `0x04…`
93
+ * uncompressed SEC1 hex (the canonical spelling of
94
+ * `normaliseSecp256k1PublicKey`): the `mpcRootPublicKey` every client key
95
+ * derivation starts from (see `deriveEvmAddress`). A local standalone stack
96
+ * has no fixed key: its setup generates a fresh `MPC_ROOT_KEY` per stack.
92
97
  *
93
98
  * @param networkId - The deployed network to look up.
94
99
  * @returns The network's MPC root public key.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type Secp256k1Point } from "@midnight-ntwrk/compact-runtime";
2
+ import { secp256k1 } from "@noble/curves/secp256k1.js";
2
3
  import { Signature } from "ethers";
3
4
  import type { MpcSignature, RespondBidirectionalEvent, SignatureRespondedEvent } from "./signet-contract-events.ts";
4
5
  import type { RequestId } from "./signet-requests.ts";
@@ -74,25 +75,53 @@ export declare function signatureRespondedEventToSignature(response: SignatureRe
74
75
  * @throws {Error} If `r` is not the x coordinate of a secp256k1 point.
75
76
  */
76
77
  export declare function signatureToSignatureRespondedEvent(signature: Pick<Signature, "r" | "s" | "yParity">): SignatureRespondedEvent;
78
+ /** A point in noble's own representation, for curve arithmetic. */
79
+ type NobleSecp256k1Point = ReturnType<typeof secp256k1.Point.fromHex>;
77
80
  /**
78
- * Parse a secp256k1 public key from SEC1 hex (compressed or uncompressed,
79
- * optional `0x` prefix) into the Compact runtime's `Secp256k1Point` shape:
80
- * how deploys receive the MPC response key to pin.
81
+ * Parse a secp256k1 public key in any accepted spelling (see
82
+ * {@link parseSecp256k1PublicKey}) into noble's point, the shape the
83
+ * derivation arithmetic runs on. Package-internal: the public surface hands
84
+ * out the Compact runtime's `Secp256k1Point` instead.
81
85
  *
82
- * @param value - The SEC1 hex public key.
83
- * @returns The parsed point.
86
+ * @param value - The public key, NEAR or SEC1 hex spelling.
87
+ * @returns The point on secp256k1.
84
88
  * @throws {Error} If the value is not a valid secp256k1 public key.
85
89
  */
90
+ export declare function parseSecp256k1PublicKeyToNoblePoint(value: string): NobleSecp256k1Point;
91
+ /**
92
+ * Parse a secp256k1 public key into the Compact runtime's `Secp256k1Point`
93
+ * shape: how deploys receive the MPC response key to pin. Accepts every
94
+ * spelling a key is published in: SEC1 hex, compressed (`02`/`03`) or
95
+ * uncompressed (`04`) with an optional `0x`, and NEAR's `secp256k1:<base58>`
96
+ * (what signet.js and the MPC operators publish). The point is checked to
97
+ * lie on the curve.
98
+ *
99
+ * @param value - The public key in any accepted spelling.
100
+ * @returns The parsed point.
101
+ * @throws {Error} If the value is not a valid secp256k1 public key in any accepted spelling.
102
+ */
86
103
  export declare function parseSecp256k1PublicKey(value: string): Secp256k1Point;
87
104
  /**
88
- * Format a secp256k1 public key point as uncompressed SEC1 hex (with `0x`
89
- * prefix): the round-trip inverse of {@link parseSecp256k1PublicKey}, for
90
- * handing a response key to deploys via env/config.
105
+ * Format a secp256k1 public key point as uncompressed SEC1 hex with a `0x`
106
+ * prefix, the canonical spelling this package publishes and prints keys in:
107
+ * the round-trip inverse of {@link parseSecp256k1PublicKey}, for handing a
108
+ * key to deploys via env/config.
91
109
  *
92
110
  * @param point - The point to format.
93
111
  * @returns The `0x04…` uncompressed SEC1 hex string.
94
112
  */
95
113
  export declare function formatSecp256k1PublicKey(point: Secp256k1Point): string;
114
+ /**
115
+ * Canonicalise a public key given in any accepted spelling (see
116
+ * {@link parseSecp256k1PublicKey}) to the `0x04…` uncompressed SEC1 hex of
117
+ * {@link formatSecp256k1PublicKey}: what to write into configuration and
118
+ * print, so one spelling reaches every derivation.
119
+ *
120
+ * @param value - The public key in any accepted spelling.
121
+ * @returns The same key as `0x04…` uncompressed SEC1 hex, lowercase.
122
+ * @throws {Error} If the value is not a valid secp256k1 public key in any accepted spelling.
123
+ */
124
+ export declare function normaliseSecp256k1PublicKey(value: string): string;
96
125
  /**
97
126
  * Derive the `Secp256k1Point` of a secret key: a convenience for tests and
98
127
  * signers that hold key material as raw bytes.
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsa-attestation.d.ts","sourceRoot":"","sources":["../src/ecdsa-attestation.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAW,MAAM,QAAQ,CAAC;AAI5C,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,uCAAuC;AACvC,eAAO,MAAM,eAAe,QAA2B,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,2DAA2D;IAC3D,CAAC,EAAE,MAAM,CAAC;IACV,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,cAAc,CAc/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,cAAc,GAAG,YAAY,CAqBpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,cAAc,CAapF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,CAO/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,GAChD,uBAAuB,CAQzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAgBrE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAGtE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,cAAc,CAO1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,UAAU,GAC3B,UAAU,CAOZ;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,yBAAyB,GAC/B,yBAAyB,CAQ3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,UAAU,EAC5B,KAAK,EAAE,yBAAyB,EAChC,cAAc,EAAE,cAAc,GAC7B,OAAO,CAyBT"}
1
+ {"version":3,"file":"ecdsa-attestation.d.ts","sourceRoot":"","sources":["../src/ecdsa-attestation.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAgB,SAAS,EAAW,MAAM,QAAQ,CAAC;AAI1D,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,uCAAuC;AACvC,eAAO,MAAM,eAAe,QAA2B,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,2DAA2D;IAC3D,CAAC,EAAE,MAAM,CAAC;IACV,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,cAAc,CAc/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,cAAc,GAAG,YAAY,CAqBpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,cAAc,CAapF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,CAO/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,GAChD,uBAAuB,CAQzB;AAmDD,mEAAmE;AACnE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEtE;;;;;;;;;GASG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAWtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAOrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAGtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,cAAc,CAO1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,UAAU,GAC3B,UAAU,CAOZ;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,yBAAyB,GAC/B,yBAAyB,CAQ3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,UAAU,EAC5B,KAAK,EAAE,yBAAyB,EAChC,cAAc,EAAE,cAAc,GAC7B,OAAO,CAyBT"}
@@ -14,7 +14,7 @@
14
14
  // kept here until upstreamed.
15
15
  import { transientHash, upgradeFromTransient, } from "@midnight-ntwrk/compact-runtime";
16
16
  import { secp256k1 } from "@noble/curves/secp256k1.js";
17
- import { Signature, toBeHex } from "ethers";
17
+ import { decodeBase58, Signature, toBeHex } from "ethers";
18
18
  import { bigintToBytes32BE, bytesToBigintBE, stripHexPrefix } from "./byte-codecs.js";
19
19
  import { attestationPreimageDescriptor } from "./compact-descriptors.js";
20
20
  /** secp256k1 curve (group) order n. */
@@ -139,27 +139,86 @@ export function signatureToSignatureRespondedEvent(signature) {
139
139
  }),
140
140
  };
141
141
  }
142
+ // The NEAR protocol's public-key string form: `secp256k1:` followed by base58
143
+ // of the raw 64-byte X||Y point, with no SEC1 prefix byte and no checksum.
144
+ // It is the spelling signet.js publishes the MPC root keys in so every key entry
145
+ // point here accepts it.
146
+ const NEAR_SECP256K1_PREFIX = "secp256k1:";
147
+ const SECP256K1_POINT_BYTES = 64;
142
148
  /**
143
- * Parse a secp256k1 public key from SEC1 hex (compressed or uncompressed,
144
- * optional `0x` prefix) into the Compact runtime's `Secp256k1Point` shape:
145
- * how deploys receive the MPC response key to pin.
149
+ * The SEC1 hex (no `0x`) of a public key given in any accepted spelling:
150
+ * NEAR's `secp256k1:<base58>` becomes `04` followed by its 64-byte point,
151
+ * and hex loses its optional `0x`. Shape only: the curve check is the
152
+ * parser's.
146
153
  *
147
- * @param value - The SEC1 hex public key.
148
- * @returns The parsed point.
149
- * @throws {Error} If the value is not a valid secp256k1 public key.
154
+ * @param value - The key in NEAR or SEC1 hex spelling.
155
+ * @returns The SEC1 hex without a `0x` prefix.
156
+ * @throws {Error} If the value is blank, its base58 does not decode, or the
157
+ * decoded point is wider than 64 bytes.
150
158
  */
151
- export function parseSecp256k1PublicKey(value) {
152
- const hex = stripHexPrefix(value);
159
+ function publicKeyToSec1Hex(value) {
160
+ const trimmed = value.trim();
161
+ if (trimmed === "") {
162
+ throw new Error("secp256k1 public key is blank");
163
+ }
164
+ if (!trimmed.startsWith(NEAR_SECP256K1_PREFIX)) {
165
+ return stripHexPrefix(trimmed);
166
+ }
167
+ const base58Point = trimmed.slice(NEAR_SECP256K1_PREFIX.length);
153
168
  let point;
154
169
  try {
155
- point = secp256k1.Point.fromHex(hex);
170
+ point = decodeBase58(base58Point);
156
171
  }
157
172
  catch (error) {
158
- throw new Error(`not a secp256k1 public key in SEC1 hex: "${value}" (${String(error)})`, {
173
+ throw new Error(`"${trimmed}" is not base58 after its secp256k1: prefix (${String(error)})`, {
159
174
  cause: error,
160
175
  });
161
176
  }
162
- const uncompressed = point.toBytes(false); // 0x04 || x || y
177
+ // Base58 folds leading zero bytes into leading `1` characters, so the point
178
+ // is rendered back at its fixed width, never at the integer's own width.
179
+ let pointHex;
180
+ try {
181
+ pointHex = toBeHex(point, SECP256K1_POINT_BYTES);
182
+ }
183
+ catch (error) {
184
+ throw new Error(`"${trimmed}" decodes wider than the ${String(SECP256K1_POINT_BYTES)}-byte point a NEAR secp256k1 key carries`, { cause: error });
185
+ }
186
+ return `04${pointHex.slice(2)}`;
187
+ }
188
+ /**
189
+ * Parse a secp256k1 public key in any accepted spelling (see
190
+ * {@link parseSecp256k1PublicKey}) into noble's point, the shape the
191
+ * derivation arithmetic runs on. Package-internal: the public surface hands
192
+ * out the Compact runtime's `Secp256k1Point` instead.
193
+ *
194
+ * @param value - The public key, NEAR or SEC1 hex spelling.
195
+ * @returns The point on secp256k1.
196
+ * @throws {Error} If the value is not a valid secp256k1 public key.
197
+ */
198
+ export function parseSecp256k1PublicKeyToNoblePoint(value) {
199
+ const hex = publicKeyToSec1Hex(value);
200
+ try {
201
+ return secp256k1.Point.fromHex(hex);
202
+ }
203
+ catch (error) {
204
+ throw new Error(`not a secp256k1 public key in SEC1 hex (02/03/04-prefixed, 0x optional) or NEAR ` +
205
+ `secp256k1:<base58> form: "${value}" (${String(error)})`, { cause: error });
206
+ }
207
+ }
208
+ /**
209
+ * Parse a secp256k1 public key into the Compact runtime's `Secp256k1Point`
210
+ * shape: how deploys receive the MPC response key to pin. Accepts every
211
+ * spelling a key is published in: SEC1 hex, compressed (`02`/`03`) or
212
+ * uncompressed (`04`) with an optional `0x`, and NEAR's `secp256k1:<base58>`
213
+ * (what signet.js and the MPC operators publish). The point is checked to
214
+ * lie on the curve.
215
+ *
216
+ * @param value - The public key in any accepted spelling.
217
+ * @returns The parsed point.
218
+ * @throws {Error} If the value is not a valid secp256k1 public key in any accepted spelling.
219
+ */
220
+ export function parseSecp256k1PublicKey(value) {
221
+ const uncompressed = parseSecp256k1PublicKeyToNoblePoint(value).toBytes(false); // 0x04 || x || y
163
222
  return {
164
223
  x: bytesToBigintBE(uncompressed.slice(1, 33)),
165
224
  y: bytesToBigintBE(uncompressed.slice(33, 65)),
@@ -167,9 +226,10 @@ export function parseSecp256k1PublicKey(value) {
167
226
  };
168
227
  }
169
228
  /**
170
- * Format a secp256k1 public key point as uncompressed SEC1 hex (with `0x`
171
- * prefix): the round-trip inverse of {@link parseSecp256k1PublicKey}, for
172
- * handing a response key to deploys via env/config.
229
+ * Format a secp256k1 public key point as uncompressed SEC1 hex with a `0x`
230
+ * prefix, the canonical spelling this package publishes and prints keys in:
231
+ * the round-trip inverse of {@link parseSecp256k1PublicKey}, for handing a
232
+ * key to deploys via env/config.
173
233
  *
174
234
  * @param point - The point to format.
175
235
  * @returns The `0x04…` uncompressed SEC1 hex string.
@@ -178,6 +238,19 @@ export function formatSecp256k1PublicKey(point) {
178
238
  const toBE32 = (v) => v.toString(16).padStart(64, "0");
179
239
  return `0x04${toBE32(point.x)}${toBE32(point.y)}`;
180
240
  }
241
+ /**
242
+ * Canonicalise a public key given in any accepted spelling (see
243
+ * {@link parseSecp256k1PublicKey}) to the `0x04…` uncompressed SEC1 hex of
244
+ * {@link formatSecp256k1PublicKey}: what to write into configuration and
245
+ * print, so one spelling reaches every derivation.
246
+ *
247
+ * @param value - The public key in any accepted spelling.
248
+ * @returns The same key as `0x04…` uncompressed SEC1 hex, lowercase.
249
+ * @throws {Error} If the value is not a valid secp256k1 public key in any accepted spelling.
250
+ */
251
+ export function normaliseSecp256k1PublicKey(value) {
252
+ return formatSecp256k1PublicKey(parseSecp256k1PublicKey(value));
253
+ }
181
254
  /**
182
255
  * Derive the `Secp256k1Point` of a secret key: a convenience for tests and
183
256
  * signers that hold key material as raw bytes.
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsa-attestation.js","sourceRoot":"","sources":["../src/ecdsa-attestation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ecdsa-attestation.js","sourceRoot":"","sources":["../src/ecdsa-attestation.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,sEAAsE;AACtE,+CAA+C;AAC/C,kEAAkE;AAClE,2EAA2E;AAC3E,oEAAoE;AACpE,8BAA8B;AAC9B,oEAAoE;AACpE,4DAA4D;AAC5D,oCAAoC;AACpC,EAAE;AACF,wEAAwE;AACxE,8BAA8B;AAE9B,OAAO,EAEL,aAAa,EACb,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAYzE,uCAAuC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAgBxD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB,EAAE,SAAqB;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/D,wEAAwE;IACxE,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,KAAK,MAAM,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvF,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,6EAA6E;IAC7E,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,SAAyB;IACpE,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,yEAAyE;IACzE,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YAC7F,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB;IAC5D,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;QACrE,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;QACjC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,SAAuB;IAClE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO;QACL,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe;QAC5C,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kCAAkC,CAAC,QAAiC;IAClF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,4BAA4B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9E,OAAO,SAAS,CAAC,IAAI,CAAC;QACpB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,CAAC,EAAE,UAAU,GAAG,EAAE;KACnB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kCAAkC,CAChD,SAAiD;IAEjD,OAAO;QACL,SAAS,EAAE,4BAA4B,CAAC;YACtC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACtB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACtB,UAAU,EAAE,SAAS,CAAC,OAAO;SAC9B,CAAC;KACH,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,iFAAiF;AACjF,yBAAyB;AACzB,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC/C,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,gDAAgD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3F,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IACD,4EAA4E;IAC5E,yEAAyE;IACzE,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,IAAI,OAAO,4BAA4B,MAAM,CAAC,qBAAqB,CAAC,0CAA0C,EAC9G,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAKD;;;;;;;;;GASG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAAa;IAC/D,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,kFAAkF;YAChF,6BAA6B,KAAK,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAC1D,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,YAAY,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB;IACjG,OAAO;QACL,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAqB;IAC5D,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,OAAO,wBAAwB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAqB;IACxD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO;QACL,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gCAAgC,CAC9C,SAAoB,EACpB,gBAA4B;IAE5B,OAAO,oBAAoB,CACzB,aAAa,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;QACpE,SAAS;QACT,gBAAgB;KACjB,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,KAAiB;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAgC;IAEhC,OAAO;QACL,SAAS,EAAE;YACT,GAAG,KAAK,CAAC,SAAS;YAClB,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC5E,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;SACrC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mCAAmC,CACjD,SAAoB,EACpB,gBAA4B,EAC5B,KAAgC,EAChC,cAA8B;IAE9B,IAAI,SAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,SAAS,GAAG,4BAA4B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,gCAAgC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC7E,qEAAqE;IACrE,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5C,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE;YAC3D,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,15 +1,18 @@
1
1
  import { type Secp256k1Point } from "./ecdsa-attestation.ts";
2
2
  /**
3
3
  * Domain prefix of the sig-net v2.0.0 epsilon derivation scheme. The full
4
- * derivation string is `<prefix>:<chainId>:<requester>:<path>` (colon-separated),
5
- * matching `caip2_derivation_path` in the MPC's `crypto/src/kdf.rs`.
4
+ * derivation string is `<prefix>:midnight:mainnet:<requester>:<path>`
5
+ * (colon-separated), matching `caip2_derivation_path` in the MPC's
6
+ * `signet-crypto/src/kdf.rs`.
6
7
  */
7
8
  export declare const EPSILON_DERIVATION_PREFIX = "sig.network v2.0.0 epsilon derivation";
8
9
  /**
9
- * CAIP-2 chain id under which the MPC derives keys for requests originating
10
- * from Midnight contracts.
10
+ * CAIP-2 chain id component of every Midnight derivation string. The MPC
11
+ * renders `Chain::Midnight` as this one literal for every Midnight network
12
+ * (sig-net/mpc signet-primitives/src/chain.rs), so it never varies with the
13
+ * network a contract is deployed on.
11
14
  */
12
- export declare const MIDNIGHT_TESTNET_CHAIN_ID = "midnight:testnet";
15
+ export declare const MIDNIGHT_CAIP2_ID = "midnight:mainnet";
13
16
  /**
14
17
  * The FIXED derivation path of the MPC's respond-bidirectional RESPONSE key
15
18
  * for Midnight client contracts. It enters the derivation string verbatim,
@@ -25,12 +28,13 @@ export declare const MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH = "midnight response ke
25
28
  /**
26
29
  * Derive the EVM address the MPC network signs from for a given Midnight
27
30
  * contract and derivation path, using the sig-net v2.0.0 epsilon scheme:
28
- * `epsilon = keccak256("<prefix>:<chainId>:<requester>:<path>")` and
31
+ * `epsilon = keccak256("<prefix>:midnight:mainnet:<requester>:<path>")` and
29
32
  * `derivedPubKey = mpcRootPubKey + epsilon * G` on secp256k1. The MPC
30
33
  * treats `path` as an opaque string.
31
34
  *
32
- * @param mpcSecp256k1PubkeyHex - The MPC root secp256k1 public key as 0x-hex
33
- * (compressed or uncompressed, normalised internally).
35
+ * @param mpcSecp256k1PublicKey - The MPC root secp256k1 public key, in any
36
+ * spelling `parseSecp256k1PublicKey` accepts (SEC1 hex or NEAR
37
+ * `secp256k1:<base58>`).
34
38
  * @param contractAddress - The Midnight contract address the request
35
39
  * originates from (`0x` prefix optional, case-insensitive: it enters the
36
40
  * derivation string through {@link normaliseRequesterAddress}).
@@ -39,36 +43,36 @@ export declare const MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH = "midnight response ke
39
43
  * `path: Bytes<32>`: the lowercase hex of the FULL 32 bytes, no `0x`
40
44
  * prefix and no trimming ({@link bytesToHex} of the raw bytes), so
41
45
  * `0xab..00` and `0xab..` derive different accounts.
42
- * @param chainId - CAIP-2 chain id component of the derivation string.
43
46
  * @returns The derived EVM address as a 0x-prefixed EIP-55 checksummed string.
44
47
  */
45
- export declare function deriveEvmAddress(mpcSecp256k1PubkeyHex: string, contractAddress: string, path: string, chainId?: string): string;
48
+ export declare function deriveEvmAddress(mpcSecp256k1PublicKey: string, contractAddress: string, path: string): string;
46
49
  /**
47
50
  * The epsilon scalar of the sig-net v2.0.0 derivation scheme:
48
- * `keccak256("<prefix>:<chainId>:<requester>:<path>")` reduced mod the
49
- * secp256k1 curve order. Child keys are `root + epsilon` (secret side) and
51
+ * `keccak256("<prefix>:midnight:mainnet:<requester>:<path>")` reduced mod
52
+ * the secp256k1 curve order, the chain id fixed to
53
+ * {@link MIDNIGHT_CAIP2_ID}. Child keys are `root + epsilon` (secret side) and
50
54
  * `rootPubKey + epsilon * G` (public side).
51
55
  *
52
56
  * @param requester - The requester component of the derivation string,
53
57
  * verbatim (no normalisation: callers must agree on the exact rendering).
54
58
  * @param path - The derivation path string.
55
- * @param chainId - CAIP-2 chain id component of the derivation string.
56
59
  * @returns The epsilon scalar, in `[0, n)`.
57
60
  */
58
- export declare function deriveEpsilon(requester: string, path: string, chainId?: string): bigint;
61
+ export declare function deriveEpsilon(requester: string, path: string): bigint;
59
62
  /**
60
63
  * Derive the MPC's respond-bidirectional RESPONSE key for one client
61
64
  * contract, public side: what the client pins via its `initialise` circuit
62
65
  * and what response verification checks against. See
63
66
  * {@link MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH} for the scheme.
64
67
  *
65
- * @param mpcSecp256k1PubkeyHex - The MPC root secp256k1 public key as 0x-hex
66
- * (compressed or uncompressed).
68
+ * @param mpcSecp256k1PublicKey - The MPC root secp256k1 public key, in any
69
+ * spelling `parseSecp256k1PublicKey` accepts (SEC1 hex or NEAR
70
+ * `secp256k1:<base58>`).
67
71
  * @param clientContractAddress - The client contract's Midnight address
68
72
  * (`0x` prefix optional, case-insensitive).
69
73
  * @returns The response public key as a Compact-runtime `Secp256k1Point`.
70
74
  */
71
- export declare function deriveMidnightResponseKey(mpcSecp256k1PubkeyHex: string, clientContractAddress: string): Secp256k1Point;
75
+ export declare function deriveMidnightResponseKey(mpcSecp256k1PublicKey: string, clientContractAddress: string): Secp256k1Point;
72
76
  /**
73
77
  * Derive the MPC's respond-bidirectional RESPONSE key for one client
74
78
  * contract, secret side: `(rootSecret + epsilon) mod n`. MPC-side only
@@ -1 +1 @@
1
- {"version":3,"file":"epsilon-derivation.d.ts","sourceRoot":"","sources":["../src/epsilon-derivation.ts"],"names":[],"mappings":"AAWA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mCAAmC,0BAA0B,CAAC;AAe3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAkC,GAC1C,MAAM,CAQR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAkC,GAC1C,MAAM,CAKR;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,qBAAqB,EAAE,MAAM,EAC7B,qBAAqB,EAAE,MAAM,GAC5B,cAAc,CAQhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,UAAU,EAC5B,qBAAqB,EAAE,MAAM,GAC5B,UAAU,CAeZ"}
1
+ {"version":3,"file":"epsilon-derivation.d.ts","sourceRoot":"","sources":["../src/epsilon-derivation.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mCAAmC,0BAA0B,CAAC;AAe3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,qBAAqB,EAAE,MAAM,EAC7B,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrE;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,qBAAqB,EAAE,MAAM,EAC7B,qBAAqB,EAAE,MAAM,GAC5B,cAAc,CAOhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,UAAU,EAC5B,qBAAqB,EAAE,MAAM,GAC5B,UAAU,CAcZ"}
@@ -5,20 +5,23 @@
5
5
  // v2.0.0 (COLON-separated) is the only scheme the MPC answers: the Compact
6
6
  // contracts assert `keyVersion >= 1`, which selects v2.
7
7
  import { secp256k1 } from "@noble/curves/secp256k1.js";
8
- import { computeAddress, keccak256, SigningKey, toUtf8Bytes } from "ethers";
8
+ import { computeAddress, keccak256, toUtf8Bytes } from "ethers";
9
9
  import { bigintToBytes32BE, bytesToBigintBE, stripHexPrefix } from "./byte-codecs.js";
10
- import { SECP256K1_ORDER } from "./ecdsa-attestation.js";
10
+ import { parseSecp256k1PublicKeyToNoblePoint, SECP256K1_ORDER, } from "./ecdsa-attestation.js";
11
11
  /**
12
12
  * Domain prefix of the sig-net v2.0.0 epsilon derivation scheme. The full
13
- * derivation string is `<prefix>:<chainId>:<requester>:<path>` (colon-separated),
14
- * matching `caip2_derivation_path` in the MPC's `crypto/src/kdf.rs`.
13
+ * derivation string is `<prefix>:midnight:mainnet:<requester>:<path>`
14
+ * (colon-separated), matching `caip2_derivation_path` in the MPC's
15
+ * `signet-crypto/src/kdf.rs`.
15
16
  */
16
17
  export const EPSILON_DERIVATION_PREFIX = "sig.network v2.0.0 epsilon derivation";
17
18
  /**
18
- * CAIP-2 chain id under which the MPC derives keys for requests originating
19
- * from Midnight contracts.
19
+ * CAIP-2 chain id component of every Midnight derivation string. The MPC
20
+ * renders `Chain::Midnight` as this one literal for every Midnight network
21
+ * (sig-net/mpc signet-primitives/src/chain.rs), so it never varies with the
22
+ * network a contract is deployed on.
20
23
  */
21
- export const MIDNIGHT_TESTNET_CHAIN_ID = "midnight:testnet";
24
+ export const MIDNIGHT_CAIP2_ID = "midnight:mainnet";
22
25
  /**
23
26
  * The FIXED derivation path of the MPC's respond-bidirectional RESPONSE key
24
27
  * for Midnight client contracts. It enters the derivation string verbatim,
@@ -46,12 +49,13 @@ function normaliseRequesterAddress(contractAddress) {
46
49
  /**
47
50
  * Derive the EVM address the MPC network signs from for a given Midnight
48
51
  * contract and derivation path, using the sig-net v2.0.0 epsilon scheme:
49
- * `epsilon = keccak256("<prefix>:<chainId>:<requester>:<path>")` and
52
+ * `epsilon = keccak256("<prefix>:midnight:mainnet:<requester>:<path>")` and
50
53
  * `derivedPubKey = mpcRootPubKey + epsilon * G` on secp256k1. The MPC
51
54
  * treats `path` as an opaque string.
52
55
  *
53
- * @param mpcSecp256k1PubkeyHex - The MPC root secp256k1 public key as 0x-hex
54
- * (compressed or uncompressed, normalised internally).
56
+ * @param mpcSecp256k1PublicKey - The MPC root secp256k1 public key, in any
57
+ * spelling `parseSecp256k1PublicKey` accepts (SEC1 hex or NEAR
58
+ * `secp256k1:<base58>`).
55
59
  * @param contractAddress - The Midnight contract address the request
56
60
  * originates from (`0x` prefix optional, case-insensitive: it enters the
57
61
  * derivation string through {@link normaliseRequesterAddress}).
@@ -60,27 +64,26 @@ function normaliseRequesterAddress(contractAddress) {
60
64
  * `path: Bytes<32>`: the lowercase hex of the FULL 32 bytes, no `0x`
61
65
  * prefix and no trimming ({@link bytesToHex} of the raw bytes), so
62
66
  * `0xab..00` and `0xab..` derive different accounts.
63
- * @param chainId - CAIP-2 chain id component of the derivation string.
64
67
  * @returns The derived EVM address as a 0x-prefixed EIP-55 checksummed string.
65
68
  */
66
- export function deriveEvmAddress(mpcSecp256k1PubkeyHex, contractAddress, path, chainId = MIDNIGHT_TESTNET_CHAIN_ID) {
67
- const derivedPoint = deriveChildPoint(mpcSecp256k1PubkeyHex, normaliseRequesterAddress(contractAddress), path, chainId);
69
+ export function deriveEvmAddress(mpcSecp256k1PublicKey, contractAddress, path) {
70
+ const derivedPoint = deriveChildPoint(mpcSecp256k1PublicKey, normaliseRequesterAddress(contractAddress), path);
68
71
  return computeAddress(`0x${derivedPoint.toHex(false)}`);
69
72
  }
70
73
  /**
71
74
  * The epsilon scalar of the sig-net v2.0.0 derivation scheme:
72
- * `keccak256("<prefix>:<chainId>:<requester>:<path>")` reduced mod the
73
- * secp256k1 curve order. Child keys are `root + epsilon` (secret side) and
75
+ * `keccak256("<prefix>:midnight:mainnet:<requester>:<path>")` reduced mod
76
+ * the secp256k1 curve order, the chain id fixed to
77
+ * {@link MIDNIGHT_CAIP2_ID}. Child keys are `root + epsilon` (secret side) and
74
78
  * `rootPubKey + epsilon * G` (public side).
75
79
  *
76
80
  * @param requester - The requester component of the derivation string,
77
81
  * verbatim (no normalisation: callers must agree on the exact rendering).
78
82
  * @param path - The derivation path string.
79
- * @param chainId - CAIP-2 chain id component of the derivation string.
80
83
  * @returns The epsilon scalar, in `[0, n)`.
81
84
  */
82
- export function deriveEpsilon(requester, path, chainId = MIDNIGHT_TESTNET_CHAIN_ID) {
83
- const fullPath = `${EPSILON_DERIVATION_PREFIX}:${chainId}:${requester}:${path}`;
85
+ export function deriveEpsilon(requester, path) {
86
+ const fullPath = `${EPSILON_DERIVATION_PREFIX}:${MIDNIGHT_CAIP2_ID}:${requester}:${path}`;
84
87
  // Reduce mod n before using: noble throws on scalars >= n, whereas the
85
88
  // server's scalar arithmetic reduces implicitly.
86
89
  return BigInt(keccak256(toUtf8Bytes(fullPath))) % SECP256K1_ORDER;
@@ -88,16 +91,15 @@ export function deriveEpsilon(requester, path, chainId = MIDNIGHT_TESTNET_CHAIN_
88
91
  /**
89
92
  * Derive the child public key as a noble curve point (internal shape).
90
93
  *
91
- * @param mpcSecp256k1PubkeyHex - The MPC root public key in SEC1 hex.
94
+ * @param mpcSecp256k1PublicKey - The MPC root public key, any spelling
95
+ * `parseSecp256k1PublicKey` accepts.
92
96
  * @param requester - The normalised requester address.
93
97
  * @param path - The derivation path component.
94
- * @param chainId - The chain id component.
95
98
  * @returns The derived child point on secp256k1.
96
99
  */
97
- function deriveChildPoint(mpcSecp256k1PubkeyHex, requester, path, chainId) {
98
- const epsilon = deriveEpsilon(requester, path, chainId);
99
- const rootPubKeyHex = SigningKey.computePublicKey(mpcSecp256k1PubkeyHex, false);
100
- const rootPoint = secp256k1.Point.fromHex(rootPubKeyHex.slice(2));
100
+ function deriveChildPoint(mpcSecp256k1PublicKey, requester, path) {
101
+ const epsilon = deriveEpsilon(requester, path);
102
+ const rootPoint = parseSecp256k1PublicKeyToNoblePoint(mpcSecp256k1PublicKey);
101
103
  return epsilon === 0n ? rootPoint : rootPoint.add(secp256k1.Point.BASE.multiply(epsilon));
102
104
  }
103
105
  /**
@@ -106,14 +108,15 @@ function deriveChildPoint(mpcSecp256k1PubkeyHex, requester, path, chainId) {
106
108
  * and what response verification checks against. See
107
109
  * {@link MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH} for the scheme.
108
110
  *
109
- * @param mpcSecp256k1PubkeyHex - The MPC root secp256k1 public key as 0x-hex
110
- * (compressed or uncompressed).
111
+ * @param mpcSecp256k1PublicKey - The MPC root secp256k1 public key, in any
112
+ * spelling `parseSecp256k1PublicKey` accepts (SEC1 hex or NEAR
113
+ * `secp256k1:<base58>`).
111
114
  * @param clientContractAddress - The client contract's Midnight address
112
115
  * (`0x` prefix optional, case-insensitive).
113
116
  * @returns The response public key as a Compact-runtime `Secp256k1Point`.
114
117
  */
115
- export function deriveMidnightResponseKey(mpcSecp256k1PubkeyHex, clientContractAddress) {
116
- const point = deriveChildPoint(mpcSecp256k1PubkeyHex, normaliseRequesterAddress(clientContractAddress), MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH, MIDNIGHT_TESTNET_CHAIN_ID);
118
+ export function deriveMidnightResponseKey(mpcSecp256k1PublicKey, clientContractAddress) {
119
+ const point = deriveChildPoint(mpcSecp256k1PublicKey, normaliseRequesterAddress(clientContractAddress), MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH);
117
120
  return { x: point.x, y: point.y, identity: false };
118
121
  }
119
122
  /**
@@ -133,7 +136,7 @@ export function deriveMidnightResponseSecretKey(mpcRootSecretKey, clientContract
133
136
  throw new Error(`MPC root secret key must be 32 bytes, got ${String(mpcRootSecretKey.length)}`);
134
137
  }
135
138
  const root = bytesToBigintBE(mpcRootSecretKey);
136
- const epsilon = deriveEpsilon(normaliseRequesterAddress(clientContractAddress), MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH, MIDNIGHT_TESTNET_CHAIN_ID);
139
+ const epsilon = deriveEpsilon(normaliseRequesterAddress(clientContractAddress), MIDNIGHT_RESPOND_BIDIRECTIONAL_PATH);
137
140
  const child = (root + epsilon) % SECP256K1_ORDER;
138
141
  if (child === 0n) {
139
142
  throw new Error("derived response secret key is zero (invalid scalar)");
@@ -1 +1 @@
1
- {"version":3,"file":"epsilon-derivation.js","sourceRoot":"","sources":["../src/epsilon-derivation.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,2EAA2E;AAC3E,wDAAwD;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAuB,MAAM,wBAAwB,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uCAAuC,CAAC;AAEjF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,uBAAuB,CAAC;AAE3E;;;;;;;;GAQG;AACH,SAAS,yBAAyB,CAAC,eAAuB;IACxD,OAAO,cAAc,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,qBAA6B,EAC7B,eAAuB,EACvB,IAAY,EACZ,OAAO,GAAW,yBAAyB;IAE3C,MAAM,YAAY,GAAG,gBAAgB,CACnC,qBAAqB,EACrB,yBAAyB,CAAC,eAAe,CAAC,EAC1C,IAAI,EACJ,OAAO,CACR,CAAC;IACF,OAAO,cAAc,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,IAAY,EACZ,OAAO,GAAW,yBAAyB;IAE3C,MAAM,QAAQ,GAAG,GAAG,yBAAyB,IAAI,OAAO,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;IAChF,uEAAuE;IACvE,iDAAiD;IACjD,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;AACpE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,qBAA6B,EAC7B,SAAiB,EACjB,IAAY,EACZ,OAAe;IAEf,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,qBAA6B,EAC7B,qBAA6B;IAE7B,MAAM,KAAK,GAAG,gBAAgB,CAC5B,qBAAqB,EACrB,yBAAyB,CAAC,qBAAqB,CAAC,EAChD,mCAAmC,EACnC,yBAAyB,CAC1B,CAAC;IACF,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAC7C,gBAA4B,EAC5B,qBAA6B;IAE7B,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,aAAa,CAC3B,yBAAyB,CAAC,qBAAqB,CAAC,EAChD,mCAAmC,EACnC,yBAAyB,CAC1B,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,eAAe,CAAC;IACjD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"epsilon-derivation.js","sourceRoot":"","sources":["../src/epsilon-derivation.ts"],"names":[],"mappings":"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"}