passkey-kit 0.13.1 → 0.15.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 +29 -20
- package/dist/constants.d.ts +20 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +20 -5
- package/dist/constants.js.map +1 -1
- package/dist/contract-errors.d.ts.map +1 -1
- package/dist/contract-errors.js +3 -0
- package/dist/contract-errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/mercury.d.ts +6 -0
- package/dist/indexer/mercury.d.ts.map +1 -1
- package/dist/indexer/mercury.js +10 -2
- package/dist/indexer/mercury.js.map +1 -1
- package/dist/kit/auth-payload.d.ts +17 -0
- package/dist/kit/auth-payload.d.ts.map +1 -1
- package/dist/kit/auth-payload.js +24 -0
- package/dist/kit/auth-payload.js.map +1 -1
- package/dist/kit/deploy-ops.d.ts +9 -7
- package/dist/kit/deploy-ops.d.ts.map +1 -1
- package/dist/kit/deploy-ops.js +11 -8
- package/dist/kit/deploy-ops.js.map +1 -1
- package/dist/kit/tx-ops.d.ts +7 -4
- package/dist/kit/tx-ops.d.ts.map +1 -1
- package/dist/kit/tx-ops.js +27 -6
- package/dist/kit/tx-ops.js.map +1 -1
- package/dist/kit.d.ts +16 -8
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +85 -22
- package/dist/kit.js.map +1 -1
- package/dist/managers/signer-manager.d.ts +13 -2
- package/dist/managers/signer-manager.d.ts.map +1 -1
- package/dist/managers/signer-manager.js +22 -3
- package/dist/managers/signer-manager.js.map +1 -1
- package/dist/managers/submission-manager.d.ts +12 -17
- package/dist/managers/submission-manager.d.ts.map +1 -1
- package/dist/managers/submission-manager.js +77 -19
- package/dist/managers/submission-manager.js.map +1 -1
- package/dist/relayer.d.ts +2 -2
- package/dist/relayer.d.ts.map +1 -1
- package/dist/relayer.js +6 -3
- package/dist/relayer.js.map +1 -1
- package/dist/rpc-data.d.ts +10 -0
- package/dist/rpc-data.d.ts.map +1 -1
- package/dist/rpc-data.js +12 -0
- package/dist/rpc-data.js.map +1 -1
- package/dist/server.d.ts +4 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -5
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utils.d.ts +36 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +162 -46
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts +6 -4
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +8 -6
- package/dist/validation.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -7
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Submission manager: builds and
|
|
3
|
-
*
|
|
4
|
-
* the footprint-restore flow.
|
|
2
|
+
* Submission manager: builds and authorizes deploys, derives deterministic
|
|
3
|
+
* wallet addresses, and drives the footprint-restore flow.
|
|
5
4
|
*
|
|
6
5
|
* Network submission itself is the server's job (`PasskeyServer` / relayer); this
|
|
7
|
-
* manager owns the deployer
|
|
8
|
-
* deploy transaction submittable.
|
|
6
|
+
* manager owns the deployer identity and its deploy authorization signature.
|
|
9
7
|
*
|
|
10
8
|
* @packageDocumentation
|
|
11
9
|
*/
|
|
@@ -20,30 +18,27 @@ export interface SubmissionManagerDeps {
|
|
|
20
18
|
networkPassphrase: string;
|
|
21
19
|
walletWasmHash: string;
|
|
22
20
|
deployerKeypair: Keypair;
|
|
21
|
+
restoreKeypair?: Keypair;
|
|
23
22
|
timeoutInSeconds: number;
|
|
24
23
|
}
|
|
25
24
|
export declare class SubmissionManager {
|
|
26
25
|
private readonly deps;
|
|
27
26
|
constructor(deps: SubmissionManagerDeps);
|
|
28
|
-
/** The deployer's `G…` public key (
|
|
27
|
+
/** The deployer's `G…` public key (address-derivation identity). */
|
|
29
28
|
get deployerPublicKey(): string;
|
|
30
29
|
/** Deterministically derive the wallet address for a passkey credential. */
|
|
31
30
|
deriveWalletAddress(keyId: Buffer): string;
|
|
32
31
|
/** Build the wallet deploy transaction (initial Secp256r1 signer). */
|
|
33
32
|
buildDeployTransaction(keyId: Buffer, publicKey: Uint8Array): Promise<AssembledTransaction<PasskeyClient>>;
|
|
34
33
|
/**
|
|
35
|
-
*
|
|
36
|
-
* return the signed transaction XDR.
|
|
34
|
+
* Authorize a deploy and return its carrier transaction XDR.
|
|
37
35
|
*
|
|
38
|
-
* The
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* commits to the fee). `TransactionBuilder.cloneFrom` drops
|
|
45
|
-
* `SorobanTransactionData` (→ txMalformed), so set the fee field surgically on
|
|
46
|
-
* the envelope and rebuild.
|
|
36
|
+
* The shared deployer signs one address auth entry; the carrier has no usable
|
|
37
|
+
* source or envelope signature and `PasskeyServer` submits its `{func,auth}`.
|
|
38
|
+
* A custom deployer keeps the legacy self-source envelope path. Its inner fee
|
|
39
|
+
* must equal the resource fee before signing because the fee bump supplies the
|
|
40
|
+
* inclusion fee. `TransactionBuilder.cloneFrom` drops Soroban data, so that
|
|
41
|
+
* fee field is changed directly on the envelope.
|
|
47
42
|
*/
|
|
48
43
|
signDeploy(tx: AssembledTransaction<PasskeyClient>): Promise<string>;
|
|
49
44
|
/** Restore an archived footprint reported by simulation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission-manager.d.ts","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"submission-manager.d.ts","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAK/D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,qBAAqB;IAExD,oEAAoE;IACpE,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,4EAA4E;IAC5E,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAU1C,sEAAsE;IACtE,sBAAsB,CACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAe/C;;;;;;;;;OASG;IACG,UAAU,CAAC,EAAE,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoG1E,4DAA4D;IAC5D,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAWpE"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Submission manager: builds and
|
|
3
|
-
*
|
|
4
|
-
* the footprint-restore flow.
|
|
2
|
+
* Submission manager: builds and authorizes deploys, derives deterministic
|
|
3
|
+
* wallet addresses, and drives the footprint-restore flow.
|
|
5
4
|
*
|
|
6
5
|
* Network submission itself is the server's job (`PasskeyServer` / relayer); this
|
|
7
|
-
* manager owns the deployer
|
|
8
|
-
* deploy transaction submittable.
|
|
6
|
+
* manager owns the deployer identity and its deploy authorization signature.
|
|
9
7
|
*
|
|
10
8
|
* @packageDocumentation
|
|
11
9
|
*/
|
|
12
|
-
import { TransactionBuilder } from "@stellar/stellar-sdk";
|
|
10
|
+
import { Address, TransactionBuilder, xdr } from "@stellar/stellar-sdk";
|
|
13
11
|
import { buildDeployTransaction as buildDeployTransactionOp, deriveWalletAddress as deriveWalletAddressOp, } from "../kit/deploy-ops.js";
|
|
14
12
|
import { restoreFootprint as restoreFootprintOp, } from "../kit/tx-ops.js";
|
|
13
|
+
import { buildSignaturePayload } from "../kit/auth-payload.js";
|
|
14
|
+
import { isDefaultDeployer } from "../utils.js";
|
|
15
|
+
const DEPLOY_AUTH_LIFETIME_LEDGERS = 720;
|
|
15
16
|
export class SubmissionManager {
|
|
16
17
|
deps;
|
|
17
18
|
constructor(deps) {
|
|
18
19
|
this.deps = deps;
|
|
19
20
|
}
|
|
20
|
-
/** The deployer's `G…` public key (
|
|
21
|
+
/** The deployer's `G…` public key (address-derivation identity). */
|
|
21
22
|
get deployerPublicKey() {
|
|
22
23
|
return this.deps.deployerKeypair.publicKey();
|
|
23
24
|
}
|
|
@@ -35,27 +36,84 @@ export class SubmissionManager {
|
|
|
35
36
|
networkPassphrase: this.deps.networkPassphrase,
|
|
36
37
|
walletWasmHash: this.deps.walletWasmHash,
|
|
37
38
|
deployerPublicKey: this.deployerPublicKey,
|
|
39
|
+
usingSharedDeployer: isDefaultDeployer(this.deployerPublicKey),
|
|
38
40
|
timeoutInSeconds: this.deps.timeoutInSeconds,
|
|
39
41
|
}, keyId, publicKey);
|
|
40
42
|
}
|
|
41
43
|
/**
|
|
42
|
-
*
|
|
43
|
-
* return the signed transaction XDR.
|
|
44
|
+
* Authorize a deploy and return its carrier transaction XDR.
|
|
44
45
|
*
|
|
45
|
-
* The
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* commits to the fee). `TransactionBuilder.cloneFrom` drops
|
|
52
|
-
* `SorobanTransactionData` (→ txMalformed), so set the fee field surgically on
|
|
53
|
-
* the envelope and rebuild.
|
|
46
|
+
* The shared deployer signs one address auth entry; the carrier has no usable
|
|
47
|
+
* source or envelope signature and `PasskeyServer` submits its `{func,auth}`.
|
|
48
|
+
* A custom deployer keeps the legacy self-source envelope path. Its inner fee
|
|
49
|
+
* must equal the resource fee before signing because the fee bump supplies the
|
|
50
|
+
* inclusion fee. `TransactionBuilder.cloneFrom` drops Soroban data, so that
|
|
51
|
+
* fee field is changed directly on the envelope.
|
|
54
52
|
*/
|
|
55
53
|
async signDeploy(tx) {
|
|
56
54
|
if (!tx.built) {
|
|
57
55
|
throw new Error("deploy transaction has not been built/simulated");
|
|
58
56
|
}
|
|
57
|
+
if (isDefaultDeployer(this.deployerPublicKey)) {
|
|
58
|
+
const operation = tx.built.operations[0];
|
|
59
|
+
const auth = operation?.type === "invokeHostFunction" ? operation.auth ?? [] : [];
|
|
60
|
+
const latestLedger = tx.simulation?.latestLedger;
|
|
61
|
+
const authorizedFunction = auth[0]?.rootInvocation().function();
|
|
62
|
+
const authorizedCreate = authorizedFunction?.switch().name ===
|
|
63
|
+
"sorobanAuthorizedFunctionTypeCreateContractV2HostFn"
|
|
64
|
+
? authorizedFunction.createContractV2HostFn()
|
|
65
|
+
: undefined;
|
|
66
|
+
const operationCreate = operation?.type === "invokeHostFunction" &&
|
|
67
|
+
operation.func.switch().name === "hostFunctionTypeCreateContractV2"
|
|
68
|
+
? operation.func.createContractV2()
|
|
69
|
+
: undefined;
|
|
70
|
+
const fromAddress = authorizedCreate?.contractIdPreimage().fromAddress();
|
|
71
|
+
if (tx.built.operations.length !== 1 ||
|
|
72
|
+
tx.built.source === this.deployerPublicKey ||
|
|
73
|
+
tx.built.signatures.length !== 0 ||
|
|
74
|
+
auth.length !== 1 ||
|
|
75
|
+
latestLedger === undefined ||
|
|
76
|
+
!authorizedCreate ||
|
|
77
|
+
!operationCreate ||
|
|
78
|
+
!Buffer.from(authorizedCreate.toXDR()).equals(operationCreate.toXDR()) ||
|
|
79
|
+
!fromAddress ||
|
|
80
|
+
Address.fromScAddress(fromAddress.address()).toString() !==
|
|
81
|
+
this.deployerPublicKey ||
|
|
82
|
+
// The deployer signs the whole tree, so anything hanging off the root
|
|
83
|
+
// would be authorized too. A deployment needs no sub-invocations.
|
|
84
|
+
auth[0].rootInvocation().subInvocations().length !== 0) {
|
|
85
|
+
throw new Error("shared deploy simulation did not return one matching address authorization");
|
|
86
|
+
}
|
|
87
|
+
const nonceBytes = crypto.getRandomValues(new Uint8Array(8));
|
|
88
|
+
const expirationLedger = latestLedger + DEPLOY_AUTH_LIFETIME_LEDGERS;
|
|
89
|
+
const credentials = new xdr.SorobanAddressCredentials({
|
|
90
|
+
address: Address.fromString(this.deployerPublicKey).toScAddress(),
|
|
91
|
+
nonce: xdr.Int64.fromString(Buffer.from(nonceBytes).readBigInt64BE().toString()),
|
|
92
|
+
signatureExpirationLedger: expirationLedger,
|
|
93
|
+
signature: xdr.ScVal.scvVoid(),
|
|
94
|
+
});
|
|
95
|
+
const signedEntry = new xdr.SorobanAuthorizationEntry({
|
|
96
|
+
credentials: xdr.SorobanCredentials.sorobanCredentialsAddress(credentials),
|
|
97
|
+
rootInvocation: auth[0].rootInvocation(),
|
|
98
|
+
});
|
|
99
|
+
credentials.signature(xdr.ScVal.scvVec([
|
|
100
|
+
xdr.ScVal.scvMap([
|
|
101
|
+
new xdr.ScMapEntry({
|
|
102
|
+
key: xdr.ScVal.scvSymbol("public_key"),
|
|
103
|
+
val: xdr.ScVal.scvBytes(this.deps.deployerKeypair.rawPublicKey()),
|
|
104
|
+
}),
|
|
105
|
+
new xdr.ScMapEntry({
|
|
106
|
+
key: xdr.ScVal.scvSymbol("signature"),
|
|
107
|
+
val: xdr.ScVal.scvBytes(this.deps.deployerKeypair.sign(buildSignaturePayload(this.deps.networkPassphrase, signedEntry, expirationLedger))),
|
|
108
|
+
}),
|
|
109
|
+
]),
|
|
110
|
+
]));
|
|
111
|
+
const envelope = tx.built.toEnvelope();
|
|
112
|
+
envelope.v1().tx().operations()[0].body().invokeHostFunctionOp().auth([
|
|
113
|
+
signedEntry,
|
|
114
|
+
]);
|
|
115
|
+
return envelope.toXDR("base64");
|
|
116
|
+
}
|
|
59
117
|
const envelope = tx.built.toEnvelope();
|
|
60
118
|
const inner = envelope.v1().tx();
|
|
61
119
|
const resourceFee = inner.ext().sorobanData().resourceFee().toString();
|
|
@@ -69,7 +127,7 @@ export class SubmissionManager {
|
|
|
69
127
|
return restoreFootprintOp({
|
|
70
128
|
rpc: this.deps.rpc,
|
|
71
129
|
networkPassphrase: this.deps.networkPassphrase,
|
|
72
|
-
|
|
130
|
+
sourceKeypair: this.deps.restoreKeypair,
|
|
73
131
|
timeoutInSeconds: this.deps.timeoutInSeconds,
|
|
74
132
|
}, restorePreamble);
|
|
75
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission-manager.js","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"submission-manager.js","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/relayer.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - {@link RelayerClient.send} — `{ func, auth }` for invokeHostFunction flows
|
|
11
11
|
* (the preferred Soroban path; the relayer builds the envelope + pays fees).
|
|
12
12
|
* - {@link RelayerClient.sendTransaction} — `{ xdr }` for a signed envelope
|
|
13
|
-
* (e.g. a
|
|
13
|
+
* (e.g. a custom-deployer transaction that needs a fee bump).
|
|
14
14
|
*
|
|
15
15
|
* Every method returns a discriminated {@link TransactionResult} and NEVER
|
|
16
16
|
* throws for expected relayer/on-chain failures — a `PluginClientError` is
|
|
@@ -49,7 +49,7 @@ export declare class RelayerClient {
|
|
|
49
49
|
send(func: string, auth: string[], options?: RelayerSubmitOptions): Promise<TransactionResult>;
|
|
50
50
|
/**
|
|
51
51
|
* Submit a signed transaction envelope via `{ xdr }` for a fee bump (preserves
|
|
52
|
-
* the inner signature; use for
|
|
52
|
+
* the inner signature; use for custom-source / source-account-auth flows).
|
|
53
53
|
*/
|
|
54
54
|
sendTransaction(xdr: string, options?: RelayerSubmitOptions): Promise<TransactionResult>;
|
|
55
55
|
/** Poll a previously-submitted (`skipWait`) transaction by its relayer id. */
|
package/dist/relayer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAQxE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAQxE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAevC;;;;OAIG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAW7B;;;OAGG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAU7B,8EAA8E;IACxE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAIzD,GAAG;IAUjB,OAAO,CAAC,QAAQ;IAqChB,OAAO,CAAC,QAAQ;CAiCjB"}
|
package/dist/relayer.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - {@link RelayerClient.send} — `{ func, auth }` for invokeHostFunction flows
|
|
11
11
|
* (the preferred Soroban path; the relayer builds the envelope + pays fees).
|
|
12
12
|
* - {@link RelayerClient.sendTransaction} — `{ xdr }` for a signed envelope
|
|
13
|
-
* (e.g. a
|
|
13
|
+
* (e.g. a custom-deployer transaction that needs a fee bump).
|
|
14
14
|
*
|
|
15
15
|
* Every method returns a discriminated {@link TransactionResult} and NEVER
|
|
16
16
|
* throws for expected relayer/on-chain failures — a `PluginClientError` is
|
|
@@ -28,8 +28,11 @@ import { DEFAULT_RELAYER_TIMEOUT_MS } from "./constants.js";
|
|
|
28
28
|
* on-chain inclusion counts as success — anything else is failure or still
|
|
29
29
|
* pending. An allowlist (not a failure denylist) is deliberate: an unrecognized
|
|
30
30
|
* or non-terminal status must never be mistaken for a confirmed transaction.
|
|
31
|
+
* Word-bounded so negated forms ("unsuccessful", "unconfirmed") and
|
|
32
|
+
* non-terminal forms ("confirming") never match. Keep identical to
|
|
33
|
+
* relayer-proxy/src/constants.ts.
|
|
31
34
|
*/
|
|
32
|
-
const SUCCESS_STATUS =
|
|
35
|
+
const SUCCESS_STATUS = /\b(?:confirm(?:ed)?|success(?:ful)?)\b/i;
|
|
33
36
|
/** Terminal-failure statuses. */
|
|
34
37
|
const FAILURE_STATUS = /fail|error|revert|reject/i;
|
|
35
38
|
export class RelayerClient {
|
|
@@ -60,7 +63,7 @@ export class RelayerClient {
|
|
|
60
63
|
}
|
|
61
64
|
/**
|
|
62
65
|
* Submit a signed transaction envelope via `{ xdr }` for a fee bump (preserves
|
|
63
|
-
* the inner signature; use for
|
|
66
|
+
* the inner signature; use for custom-source / source-account-auth flows).
|
|
64
67
|
*/
|
|
65
68
|
async sendTransaction(xdr, options) {
|
|
66
69
|
return this.run(() => this.channels.submitTransaction({
|
package/dist/relayer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relayer.js","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,cAAc,EACd,iBAAiB,GAElB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAsB5D
|
|
1
|
+
{"version":3,"file":"relayer.js","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc-data.d.ts
CHANGED
|
@@ -25,6 +25,16 @@ export declare function contractDataLedgerKey(contractId: string, key: xdr.ScVal
|
|
|
25
25
|
* a flaky RPC for an absent entry.
|
|
26
26
|
*/
|
|
27
27
|
export declare function readContractData(rpc: Server, contractId: string, key: xdr.ScVal, durability: Durability): Promise<xdr.ScVal | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Whether a contract's instance entry exists on-chain.
|
|
30
|
+
*
|
|
31
|
+
* Returns `false` only on a genuine not-found; a transport error (429/5xx/
|
|
32
|
+
* timeout) throws. `connectWallet` uses this to confirm the deterministically
|
|
33
|
+
* derived wallet address: only an authoritative not-found may abandon the
|
|
34
|
+
* canonical derivation for the storage/indexer fallbacks — a flaky RPC must
|
|
35
|
+
* never reroute resolution away from the canonical derivation.
|
|
36
|
+
*/
|
|
37
|
+
export declare function contractInstanceExists(rpc: Server, contractId: string): Promise<boolean>;
|
|
28
38
|
/**
|
|
29
39
|
* Whether a contract-data entry exists in the given durability.
|
|
30
40
|
*
|
package/dist/rpc-data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-data.d.ts","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,GAAG,CAAC,SAAS,CAWf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAM3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
|
1
|
+
{"version":3,"file":"rpc-data.d.ts","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,GAAG,CAAC,SAAS,CAWf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAM3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
package/dist/rpc-data.js
CHANGED
|
@@ -37,6 +37,18 @@ export async function readContractData(rpc, contractId, key, durability) {
|
|
|
37
37
|
const entry = entries[0];
|
|
38
38
|
return entry ? entry.val.contractData().val() : null;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Whether a contract's instance entry exists on-chain.
|
|
42
|
+
*
|
|
43
|
+
* Returns `false` only on a genuine not-found; a transport error (429/5xx/
|
|
44
|
+
* timeout) throws. `connectWallet` uses this to confirm the deterministically
|
|
45
|
+
* derived wallet address: only an authoritative not-found may abandon the
|
|
46
|
+
* canonical derivation for the storage/indexer fallbacks — a flaky RPC must
|
|
47
|
+
* never reroute resolution away from the canonical derivation.
|
|
48
|
+
*/
|
|
49
|
+
export async function contractInstanceExists(rpc, contractId) {
|
|
50
|
+
return contractDataExists(rpc, contractId, xdr.ScVal.scvLedgerKeyContractInstance(), Durability.Persistent);
|
|
51
|
+
}
|
|
40
52
|
/**
|
|
41
53
|
* Whether a contract-data entry exists in the given durability.
|
|
42
54
|
*
|
package/dist/rpc-data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-data.js","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAC/B,IAAI,GAAG,CAAC,qBAAqB,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QACtD,GAAG;QACH,UAAU,EACR,UAAU,KAAK,UAAU,CAAC,SAAS;YACjC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,EAAE;YACxC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,EAAE;KAC9C,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAC5C,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CACnD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC;AAC7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"rpc-data.js","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAC/B,IAAI,GAAG,CAAC,qBAAqB,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QACtD,GAAG;QACH,UAAU,EACR,UAAU,KAAK,UAAU,CAAC,SAAS;YACjC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,EAAE;YACxC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,EAAE;KAC9C,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAC5C,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CACnD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAW,EACX,UAAkB;IAElB,OAAO,kBAAkB,CACvB,GAAG,EACH,UAAU,EACV,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,EACxC,UAAU,CAAC,UAAU,CACtB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC;AAC7E,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -50,10 +50,10 @@ export declare class PasskeyServer {
|
|
|
50
50
|
/**
|
|
51
51
|
* Submit a transaction via the relayer for fee sponsorship.
|
|
52
52
|
*
|
|
53
|
-
* invokeHostFunction transactions without source-account auth use
|
|
54
|
-
* `{ func, auth }` Soroban path
|
|
55
|
-
* is fee-bumped via
|
|
56
|
-
* {@link TransactionResult}.
|
|
53
|
+
* Single-op invokeHostFunction transactions without source-account auth use
|
|
54
|
+
* the preferred `{ func, auth }` Soroban path (including shared-deployer
|
|
55
|
+
* deploys); everything else is fee-bumped via `{ xdr }`. Never throws —
|
|
56
|
+
* returns a typed {@link TransactionResult}.
|
|
57
57
|
*/
|
|
58
58
|
send(input: AssembledTransaction<unknown> | Transaction | string, options?: RelayerSubmitOptions): Promise<TransactionResult>;
|
|
59
59
|
/** Poll a `skipWait` submission by its relayer transaction id. */
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AASlG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AAEtB,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAmCD,qBAAa,aAAa;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAgCvC;;;;;;;OAOG;IACG,IAAI,CACR,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,MAAM,EAC3D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AASlG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AAEtB,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAmCD,qBAAa,aAAa;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAgCvC;;;;;;;OAOG;IACG,IAAI,CACR,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,MAAM,EAC3D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IA4C7B,kEAAkE;IAClE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBjE,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIvD;;;;OAIG;IACG,aAAa,CACjB,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAChE,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAmB/B"}
|
package/dist/server.js
CHANGED
|
@@ -79,10 +79,10 @@ export class PasskeyServer {
|
|
|
79
79
|
/**
|
|
80
80
|
* Submit a transaction via the relayer for fee sponsorship.
|
|
81
81
|
*
|
|
82
|
-
* invokeHostFunction transactions without source-account auth use
|
|
83
|
-
* `{ func, auth }` Soroban path
|
|
84
|
-
* is fee-bumped via
|
|
85
|
-
* {@link TransactionResult}.
|
|
82
|
+
* Single-op invokeHostFunction transactions without source-account auth use
|
|
83
|
+
* the preferred `{ func, auth }` Soroban path (including shared-deployer
|
|
84
|
+
* deploys); everything else is fee-bumped via `{ xdr }`. Never throws —
|
|
85
|
+
* returns a typed {@link TransactionResult}.
|
|
86
86
|
*/
|
|
87
87
|
async send(input, options) {
|
|
88
88
|
if (!this.relayer) {
|
|
@@ -97,8 +97,15 @@ export class PasskeyServer {
|
|
|
97
97
|
? err
|
|
98
98
|
: new RelayerError(err instanceof Error ? err.message : String(err), PasskeyKitErrorCode.RELAYER_REQUEST_FAILED));
|
|
99
99
|
}
|
|
100
|
+
// The {func,auth} path submits exactly ONE host function — the relayer
|
|
101
|
+
// rebuilds the envelope around it. Only take it when the transaction is a
|
|
102
|
+
// single invokeHostFunction op; a multi-op envelope must go through the
|
|
103
|
+
// full-envelope fee-bump path or its extra operations would be silently
|
|
104
|
+
// dropped (and could report success after executing only the first).
|
|
100
105
|
const op = built.operations[0];
|
|
101
|
-
if (
|
|
106
|
+
if (built.operations.length === 1 &&
|
|
107
|
+
op?.type === "invokeHostFunction" &&
|
|
108
|
+
!hasSourceAccountAuth(built)) {
|
|
102
109
|
const invokeOp = op;
|
|
103
110
|
const func = invokeOp.func.toXDR("base64");
|
|
104
111
|
const auth = (invokeOp.auth ?? []).map((entry) => entry.toXDR("base64"));
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAuD,MAAM,cAAc,CAAC;AAClG,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,sEAAsE;AACtE,mEAAmE;AACnE,OAAO,EACL,aAAa,GAGd,MAAM,cAAc,CAAC;AAwBtB,sEAAsE;AACtE,SAAS,kBAAkB,CACzB,KAA2D,EAC3D,iBAAyB;IAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAgB,CAAC;IAC7E,CAAC;IACD,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CACpB,uDAAuD,EACvD,mBAAmB,CAAC,sBAAsB,CAC3C,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qEAAqE;AACrE,SAAS,oBAAoB,CAAC,WAAwB;IACpD,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,IAAI,KAAK,oBAAoB;YAAE,SAAS;QAC/C,KAAK,MAAM,KAAK,IAAK,EAAmC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACpE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,iCAAiC,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,aAAa;IACf,iBAAiB,CAAS;IAC1B,GAAG,CAAU;IAEL,OAAO,CAAiB;IACxB,OAAO,CAAkB;IAE1C,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,MAAM,IAAI,kBAAkB,CAC1B,+BAA+B,EAC/B,mBAAmB,CAAC,cAAc,CACnC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAElD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CACvC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAC1C,IAAI,CAAC,iBAAiB,CACvB,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,kBAAkB,CAC1B,6GAA6G,EAC7G,mBAAmB,CAAC,cAAc,CACnC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IAED,+EAA+E;IAE/E;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CACR,KAA2D,EAC3D,OAA8B;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,iBAAiB,CACtB,IAAI,YAAY,CACd,iDAAiD,EACjD,mBAAmB,CAAC,sBAAsB,CAC3C,CACF,CAAC;QACJ,CAAC;QAED,IAAI,KAAkB,CAAC;QACvB,IAAI,CAAC;YACH,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,iBAAiB,CACtB,GAAG,YAAY,YAAY;gBACzB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,YAAY,CACd,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAChD,mBAAmB,CAAC,sBAAsB,CAC3C,CACN,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -91,7 +91,7 @@ export interface CreateWalletResult {
|
|
|
91
91
|
keyIdBase64: string;
|
|
92
92
|
/** Deployed smart-wallet contract address. */
|
|
93
93
|
contractId: string;
|
|
94
|
-
/**
|
|
94
|
+
/** Authorized deployment carrier, ready to submit (base64 XDR). */
|
|
95
95
|
signedTx: string;
|
|
96
96
|
}
|
|
97
97
|
/** Result of connecting to an existing smart wallet. */
|
package/dist/utils.d.ts
CHANGED
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
6
|
import type { RegistrationResponseJSON } from "@simplewebauthn/browser";
|
|
7
|
+
/**
|
|
8
|
+
* Public key of the shared, deterministic default deployer, derived once from
|
|
9
|
+
* {@link DEFAULT_DEPLOYER_SEED}.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_DEPLOYER_PUBLIC_KEY: string;
|
|
12
|
+
/**
|
|
13
|
+
* True when `publicKey` is the shared, publicly-derivable default deployer.
|
|
14
|
+
*
|
|
15
|
+
* That account is a **sign-only / address-derivation** identity: the SDK must
|
|
16
|
+
* never use it as a transaction source (its sequence can be bricked by anyone
|
|
17
|
+
* via `bumpSequence`) or fee payer (its balance is sweepable by anyone). It may
|
|
18
|
+
* only sign Soroban auth entries and salt the deploy.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isDefaultDeployer(publicKey: string): boolean;
|
|
7
21
|
/**
|
|
8
22
|
* Derive a smart-wallet contract address from a passkey credential id.
|
|
9
23
|
*
|
|
@@ -20,6 +34,13 @@ import type { RegistrationResponseJSON } from "@simplewebauthn/browser";
|
|
|
20
34
|
* @returns The derived contract address (`C…`)
|
|
21
35
|
*/
|
|
22
36
|
export declare function deriveContractAddress(keyId: Buffer, deployerPublicKey: string, networkPassphrase: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Whether an uncompressed `0x04 || x || y` key is a point on the P-256 curve
|
|
39
|
+
* (`y² ≡ x³ − 3x + b (mod p)`, coordinates in-field). A structurally valid but
|
|
40
|
+
* off-curve key would register fine and deploy a wallet no signature can ever
|
|
41
|
+
* satisfy, so extraction rejects it up front.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isOnP256Curve(publicKey: Uint8Array): boolean;
|
|
23
44
|
/**
|
|
24
45
|
* Extract the 65-byte uncompressed secp256r1 public key from a WebAuthn
|
|
25
46
|
* registration (attestation) response.
|
|
@@ -29,17 +50,30 @@ export declare function deriveContractAddress(keyId: Buffer, deployerPublicKey:
|
|
|
29
50
|
* 2. `response.publicKey` decoded from SPKI via WebCrypto (`crypto.subtle`),
|
|
30
51
|
* which is the correct, non-magic-offset way to normalize the DER-encoded
|
|
31
52
|
* SubjectPublicKeyInfo most authenticators return.
|
|
32
|
-
* 3. Parsing the COSE key out of `authenticatorData
|
|
53
|
+
* 3. Parsing the COSE key out of `authenticatorData`, then
|
|
54
|
+
* `attestationObject` — with the COSE structure verified in place, never
|
|
55
|
+
* trusted fixed offsets.
|
|
33
56
|
*
|
|
34
|
-
*
|
|
57
|
+
* Whatever the source, the result must be a valid point ON the P-256 curve;
|
|
58
|
+
* a mangled key is rejected here rather than deployed as an unusable wallet
|
|
59
|
+
* signer.
|
|
60
|
+
*
|
|
61
|
+
* @throws {WebAuthnError} If no valid public key can be extracted.
|
|
35
62
|
*/
|
|
36
63
|
export declare function extractPublicKeyFromAttestation(response: RegistrationResponseJSON["response"]): Promise<Uint8Array>;
|
|
37
64
|
/**
|
|
38
65
|
* Convert a DER-encoded ECDSA signature to Stellar's compact `r || s` form with
|
|
39
66
|
* a low-S value (S <= n/2), as required by the secp256r1 host function.
|
|
40
67
|
*
|
|
68
|
+
* The DER structure is validated before any offset is dereferenced:
|
|
69
|
+
* sequence/integer tags, short-form lengths that exactly span the buffer, and
|
|
70
|
+
* `r`/`s` values in `[1, n-1]`. A WebAuthn P-256 signature always fits
|
|
71
|
+
* short-form DER (total length < 128 bytes), so long-form lengths are rejected.
|
|
72
|
+
*
|
|
41
73
|
* @param derSignature - The DER-encoded signature
|
|
42
74
|
* @returns 64-byte compact signature (`r || s`)
|
|
75
|
+
* @throws {ValidationError} If the signature is not structurally valid DER or
|
|
76
|
+
* `r`/`s` are out of range for P-256.
|
|
43
77
|
*/
|
|
44
78
|
export declare function compactSignature(derSignature: Buffer): Uint8Array;
|
|
45
79
|
/**
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAYxE;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAE3B,CAAC;AAEd;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAcR;AAcD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAe5D;AAgDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,GAC7C,OAAO,CAAC,UAAU,CAAC,CAoDrB;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAmDjE;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C"}
|