@asgcard/sdk 1.0.3 → 1.0.5
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/utils/x402.d.ts +15 -2
- package/dist/utils/x402.js +80 -28
- package/dist/utils/x402.js.map +1 -1
- package/package.json +1 -1
package/dist/utils/x402.d.ts
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Builds and signs Soroban SAC USDC transfer transactions
|
|
5
5
|
* for the x402 payment protocol.
|
|
6
|
+
*
|
|
7
|
+
* Uses the canonical AssembledTransaction + signAuthEntries() approach
|
|
8
|
+
* as documented in the official Stellar docs and @x402/stellar.
|
|
6
9
|
*/
|
|
7
10
|
import { Keypair, rpc as StellarRpc } from "@stellar/stellar-sdk";
|
|
8
11
|
import type { WalletAdapter, X402Accept } from "../types";
|
|
@@ -14,8 +17,18 @@ export declare const checkBalance: (params: {
|
|
|
14
17
|
requiredAtomic: bigint;
|
|
15
18
|
}) => Promise<void>;
|
|
16
19
|
/**
|
|
17
|
-
* Build a Soroban SAC USDC transfer transaction
|
|
18
|
-
*
|
|
20
|
+
* Build a Soroban SAC USDC transfer transaction using AssembledTransaction,
|
|
21
|
+
* then sign auth entries with signAuthEntries().
|
|
22
|
+
*
|
|
23
|
+
* This is the canonical x402 Stellar approach:
|
|
24
|
+
* 1. AssembledTransaction.build() — simulates in Recording mode
|
|
25
|
+
* 2. signAuthEntries() — converts SourceAccount → Address credentials
|
|
26
|
+
* 3. simulate() — re-simulates in Enforcing mode to validate
|
|
27
|
+
* 4. Return XDR (unsigned envelope — facilitator signs at settle)
|
|
28
|
+
*
|
|
29
|
+
* Reference:
|
|
30
|
+
* - https://developers.stellar.org/docs/build/guides/transactions/signing-soroban-invocations#method-2-auth-entry-signing
|
|
31
|
+
* - @x402/stellar exact/client/scheme.ts
|
|
19
32
|
*/
|
|
20
33
|
export declare const buildPaymentTransaction: (params: {
|
|
21
34
|
rpcServer: StellarRpc.Server;
|
package/dist/utils/x402.js
CHANGED
|
@@ -6,11 +6,16 @@ exports.handleX402Payment = exports.buildPaymentPayload = exports.executePayment
|
|
|
6
6
|
*
|
|
7
7
|
* Builds and signs Soroban SAC USDC transfer transactions
|
|
8
8
|
* for the x402 payment protocol.
|
|
9
|
+
*
|
|
10
|
+
* Uses the canonical AssembledTransaction + signAuthEntries() approach
|
|
11
|
+
* as documented in the official Stellar docs and @x402/stellar.
|
|
9
12
|
*/
|
|
10
13
|
const stellar_sdk_1 = require("@stellar/stellar-sdk");
|
|
11
14
|
const errors_1 = require("../errors");
|
|
12
15
|
const DEFAULT_FEE = "50000";
|
|
16
|
+
const DEFAULT_BASE_FEE_STROOPS = 10_000;
|
|
13
17
|
const SOROBAN_TIMEOUT = 300;
|
|
18
|
+
const RPC_URL = "https://mainnet.sorobanrpc.com";
|
|
14
19
|
// ── Challenge parsing ────────────────────────────────────
|
|
15
20
|
const isChallenge = (input) => {
|
|
16
21
|
if (!input || typeof input !== "object")
|
|
@@ -27,13 +32,13 @@ const parseChallenge = (input) => {
|
|
|
27
32
|
exports.parseChallenge = parseChallenge;
|
|
28
33
|
// ── Balance check ────────────────────────────────────────
|
|
29
34
|
const checkBalance = async (params) => {
|
|
30
|
-
const
|
|
35
|
+
const c = new stellar_sdk_1.Contract(params.asset);
|
|
31
36
|
const account = await params.rpcServer.getAccount(params.publicKey);
|
|
32
37
|
const tx = new stellar_sdk_1.TransactionBuilder(account, {
|
|
33
38
|
fee: DEFAULT_FEE,
|
|
34
39
|
networkPassphrase: stellar_sdk_1.Networks.PUBLIC,
|
|
35
40
|
})
|
|
36
|
-
.addOperation(
|
|
41
|
+
.addOperation(c.call("balance", new stellar_sdk_1.Address(params.publicKey).toScVal()))
|
|
37
42
|
.setTimeout(30)
|
|
38
43
|
.build();
|
|
39
44
|
const sim = await params.rpcServer.simulateTransaction(tx);
|
|
@@ -67,32 +72,79 @@ const checkBalance = async (params) => {
|
|
|
67
72
|
exports.checkBalance = checkBalance;
|
|
68
73
|
// ── Build + sign payment transaction ─────────────────────
|
|
69
74
|
/**
|
|
70
|
-
* Build a Soroban SAC USDC transfer transaction
|
|
71
|
-
*
|
|
75
|
+
* Build a Soroban SAC USDC transfer transaction using AssembledTransaction,
|
|
76
|
+
* then sign auth entries with signAuthEntries().
|
|
77
|
+
*
|
|
78
|
+
* This is the canonical x402 Stellar approach:
|
|
79
|
+
* 1. AssembledTransaction.build() — simulates in Recording mode
|
|
80
|
+
* 2. signAuthEntries() — converts SourceAccount → Address credentials
|
|
81
|
+
* 3. simulate() — re-simulates in Enforcing mode to validate
|
|
82
|
+
* 4. Return XDR (unsigned envelope — facilitator signs at settle)
|
|
83
|
+
*
|
|
84
|
+
* Reference:
|
|
85
|
+
* - https://developers.stellar.org/docs/build/guides/transactions/signing-soroban-invocations#method-2-auth-entry-signing
|
|
86
|
+
* - @x402/stellar exact/client/scheme.ts
|
|
72
87
|
*/
|
|
73
88
|
const buildPaymentTransaction = async (params) => {
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
const tx =
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
const networkPassphrase = stellar_sdk_1.Networks.PUBLIC;
|
|
90
|
+
// Step 1: Build + simulate (Recording Mode) via AssembledTransaction
|
|
91
|
+
const tx = await stellar_sdk_1.contract.AssembledTransaction.build({
|
|
92
|
+
contractId: params.accept.asset,
|
|
93
|
+
method: "transfer",
|
|
94
|
+
args: [
|
|
95
|
+
(0, stellar_sdk_1.nativeToScVal)(params.publicKey, { type: "address" }),
|
|
96
|
+
(0, stellar_sdk_1.nativeToScVal)(params.accept.payTo, { type: "address" }),
|
|
97
|
+
(0, stellar_sdk_1.nativeToScVal)(BigInt(params.accept.amount), { type: "i128" }),
|
|
98
|
+
],
|
|
99
|
+
networkPassphrase,
|
|
100
|
+
rpcUrl: RPC_URL,
|
|
101
|
+
parseResultXdr: (result) => result,
|
|
102
|
+
});
|
|
103
|
+
// Check simulation result
|
|
104
|
+
if (!tx.simulation ||
|
|
105
|
+
stellar_sdk_1.rpc.Api.isSimulationError(tx.simulation)) {
|
|
106
|
+
const errMsg = tx.simulation
|
|
107
|
+
? tx.simulation.error
|
|
108
|
+
: "No simulation result";
|
|
89
109
|
throw new errors_1.PaymentError(`Transaction simulation failed: ${errMsg}`);
|
|
90
110
|
}
|
|
91
|
-
//
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
111
|
+
// Step 2: Verify who needs to sign
|
|
112
|
+
const missingSigners = tx.needsNonInvokerSigningBy();
|
|
113
|
+
if (!missingSigners.includes(params.publicKey)) {
|
|
114
|
+
throw new errors_1.PaymentError(`Expected to sign with ${params.publicKey}, but got [${missingSigners.join(", ")}]`);
|
|
115
|
+
}
|
|
116
|
+
// Step 3: Sign auth entries — this converts SourceAccount → Address credentials
|
|
117
|
+
const signer = stellar_sdk_1.contract.basicNodeSigner(params.signer, networkPassphrase);
|
|
118
|
+
const latestLedger = tx.simulation.latestLedger;
|
|
119
|
+
const expiration = latestLedger + 60; // ~5 minutes
|
|
120
|
+
await tx.signAuthEntries({
|
|
121
|
+
address: params.publicKey,
|
|
122
|
+
signAuthEntry: signer.signAuthEntry,
|
|
123
|
+
expiration,
|
|
124
|
+
});
|
|
125
|
+
// Step 4: Re-simulate in Enforcing Mode to validate signatures
|
|
126
|
+
await tx.simulate();
|
|
127
|
+
if (!tx.simulation ||
|
|
128
|
+
stellar_sdk_1.rpc.Api.isSimulationError(tx.simulation)) {
|
|
129
|
+
const errMsg = tx.simulation
|
|
130
|
+
? tx.simulation.error
|
|
131
|
+
: "No enforcing simulation result";
|
|
132
|
+
throw new errors_1.PaymentError(`Enforcing simulation failed: ${errMsg}`);
|
|
133
|
+
}
|
|
134
|
+
// Step 5: Verify all signatures collected
|
|
135
|
+
const remainingSigners = tx.needsNonInvokerSigningBy();
|
|
136
|
+
if (remainingSigners.length > 0) {
|
|
137
|
+
throw new errors_1.PaymentError(`Missing signatures from: [${remainingSigners.join(", ")}]`);
|
|
138
|
+
}
|
|
139
|
+
// Step 6: Build final TX with correct fee from Enforcing simulation
|
|
140
|
+
const successSim = tx.simulation;
|
|
141
|
+
const finalTx = stellar_sdk_1.TransactionBuilder.cloneFrom(tx.built, {
|
|
142
|
+
fee: (DEFAULT_BASE_FEE_STROOPS + parseInt(successSim.minResourceFee, 10)).toString(),
|
|
143
|
+
sorobanData: tx.simulationData.transactionData,
|
|
144
|
+
networkPassphrase,
|
|
145
|
+
}).build();
|
|
146
|
+
// Return unsigned envelope XDR — facilitator signs at settle time
|
|
147
|
+
return finalTx.toXDR();
|
|
96
148
|
};
|
|
97
149
|
exports.buildPaymentTransaction = buildPaymentTransaction;
|
|
98
150
|
// ── Execute payment ──────────────────────────────────────
|
|
@@ -117,7 +169,7 @@ const executePayment = async (params) => {
|
|
|
117
169
|
throw error;
|
|
118
170
|
// Swallow non-balance errors — facilitator will verify
|
|
119
171
|
}
|
|
120
|
-
// Build, simulate,
|
|
172
|
+
// Build, simulate, sign auth entries
|
|
121
173
|
if (params.keypair) {
|
|
122
174
|
return (0, exports.buildPaymentTransaction)({
|
|
123
175
|
rpcServer: params.rpcServer,
|
|
@@ -126,15 +178,15 @@ const executePayment = async (params) => {
|
|
|
126
178
|
signer: params.keypair,
|
|
127
179
|
});
|
|
128
180
|
}
|
|
129
|
-
// WalletAdapter path
|
|
181
|
+
// WalletAdapter path — wallet must support signAuthEntry (SEP-43)
|
|
130
182
|
const adapter = params.walletAdapter;
|
|
131
|
-
const
|
|
183
|
+
const c = new stellar_sdk_1.Contract(params.accept.asset);
|
|
132
184
|
const sourceAccount = await params.rpcServer.getAccount(publicKey);
|
|
133
185
|
const tx = new stellar_sdk_1.TransactionBuilder(sourceAccount, {
|
|
134
186
|
fee: DEFAULT_FEE,
|
|
135
187
|
networkPassphrase: stellar_sdk_1.Networks.PUBLIC,
|
|
136
188
|
})
|
|
137
|
-
.addOperation(
|
|
189
|
+
.addOperation(c.call("transfer", new stellar_sdk_1.Address(publicKey).toScVal(), new stellar_sdk_1.Address(params.accept.payTo).toScVal(), (0, stellar_sdk_1.nativeToScVal)(BigInt(params.accept.amount), { type: "i128" })))
|
|
138
190
|
.setTimeout(SOROBAN_TIMEOUT)
|
|
139
191
|
.build();
|
|
140
192
|
const sim = await params.rpcServer.simulateTransaction(tx);
|
package/dist/utils/x402.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/utils/x402.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/utils/x402.ts"],"names":[],"mappings":"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"}
|