@solana/mpp 0.1.0-beta.1 → 0.1.1
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 +75 -90
- package/dist/Methods.d.ts +9 -4
- package/dist/Methods.d.ts.map +1 -1
- package/dist/Methods.js +9 -4
- package/dist/Methods.js.map +1 -1
- package/dist/client/Charge.d.ts +6 -4
- package/dist/client/Charge.d.ts.map +1 -1
- package/dist/client/Charge.js +71 -59
- package/dist/client/Charge.js.map +1 -1
- package/dist/client/Methods.d.ts.map +1 -1
- package/dist/client/Methods.js.map +1 -1
- package/dist/client/Session.d.ts.map +1 -1
- package/dist/client/Session.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/server/Charge.d.ts +24 -11
- package/dist/server/Charge.d.ts.map +1 -1
- package/dist/server/Charge.js +71 -44
- package/dist/server/Charge.js.map +1 -1
- package/dist/server/Methods.d.ts.map +1 -1
- package/dist/server/Methods.js.map +1 -1
- package/dist/server/Session.d.ts.map +1 -1
- package/dist/server/Session.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/session/ChannelStore.d.ts.map +1 -1
- package/dist/session/ChannelStore.js.map +1 -1
- package/dist/session/Types.d.ts.map +1 -1
- package/dist/session/Types.js.map +1 -1
- package/dist/session/Voucher.d.ts.map +1 -1
- package/dist/session/Voucher.js.map +1 -1
- package/dist/session/authorizers/BudgetAuthorizer.d.ts.map +1 -1
- package/dist/session/authorizers/BudgetAuthorizer.js.map +1 -1
- package/dist/session/authorizers/SwigSessionAuthorizer.d.ts.map +1 -1
- package/dist/session/authorizers/SwigSessionAuthorizer.js.map +1 -1
- package/dist/session/authorizers/UnboundedAuthorizer.d.ts.map +1 -1
- package/dist/session/authorizers/UnboundedAuthorizer.js.map +1 -1
- package/dist/session/authorizers/index.d.ts.map +1 -1
- package/dist/session/authorizers/index.js.map +1 -1
- package/dist/session/authorizers/makeSessionAuthorizer.d.ts.map +1 -1
- package/dist/session/authorizers/makeSessionAuthorizer.js.map +1 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js.map +1 -1
- package/dist/utils/transactions.d.ts +3 -3
- package/dist/utils/transactions.d.ts.map +1 -1
- package/dist/utils/transactions.js +23 -6
- package/dist/utils/transactions.js.map +1 -1
- package/package.json +8 -30
- package/{sdk/src → src}/Methods.ts +13 -4
- package/{sdk/src → src}/client/Charge.ts +93 -76
- package/{sdk/src → src}/index.ts +0 -4
- package/{sdk/src → src}/server/Charge.ts +114 -59
- package/src/utils/transactions.ts +46 -0
- package/LICENSE +0 -21
- package/sdk/src/utils/transactions.ts +0 -26
- /package/{sdk/src → src}/client/Methods.ts +0 -0
- /package/{sdk/src → src}/client/Session.ts +0 -0
- /package/{sdk/src → src}/client/index.ts +0 -0
- /package/{sdk/src → src}/constants.ts +0 -0
- /package/{sdk/src → src}/server/Methods.ts +0 -0
- /package/{sdk/src → src}/server/Session.ts +0 -0
- /package/{sdk/src → src}/server/index.ts +0 -0
- /package/{sdk/src → src}/session/ChannelStore.ts +0 -0
- /package/{sdk/src → src}/session/Types.ts +0 -0
- /package/{sdk/src → src}/session/Voucher.ts +0 -0
- /package/{sdk/src → src}/session/authorizers/BudgetAuthorizer.ts +0 -0
- /package/{sdk/src → src}/session/authorizers/SwigSessionAuthorizer.ts +0 -0
- /package/{sdk/src → src}/session/authorizers/UnboundedAuthorizer.ts +0 -0
- /package/{sdk/src → src}/session/authorizers/index.ts +0 -0
- /package/{sdk/src → src}/session/authorizers/makeSessionAuthorizer.ts +0 -0
- /package/{sdk/src → src}/session/index.ts +0 -0
package/README.md
CHANGED
|
@@ -17,57 +17,47 @@ Solana payment method for the [Machine Payments Protocol](https://mpp.dev).
|
|
|
17
17
|
pnpm add @solana/mpp
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
Peer dependencies:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
pnpm add @solana/kit mppx
|
|
24
|
-
# Optional — for Swig session authorization:
|
|
25
|
-
pnpm add @swig-wallet/kit
|
|
26
|
-
```
|
|
27
|
-
|
|
28
20
|
## Features
|
|
29
21
|
|
|
30
22
|
**Charge** (one-time payments)
|
|
31
23
|
- Native SOL and SPL token transfers (USDC, PYUSD, Token-2022, etc.)
|
|
32
24
|
- Two settlement modes: pull (`type="transaction"`, default) and push (`type="signature"`)
|
|
33
25
|
- Fee sponsorship: server pays transaction fees on behalf of clients
|
|
26
|
+
- Split payments: send one charge to multiple recipients in a single transaction
|
|
34
27
|
- Replay protection via consumed transaction signatures
|
|
35
28
|
|
|
36
|
-
**Session** (metered / streaming payments)
|
|
37
|
-
- Voucher-based payment channels with monotonic cumulative amounts
|
|
38
|
-
- Multiple authorization modes: `unbounded`, `regular_budget`, `swig_session`
|
|
39
|
-
- Auto-open, auto-topup, and close lifecycle
|
|
40
|
-
- [Swig](https://build.onswig.com) smart wallet integration for on-chain spend limits
|
|
41
|
-
|
|
42
29
|
**General**
|
|
43
30
|
- Works with [ConnectorKit](https://www.connectorkit.dev), `@solana/kit` keypair signers, and [Solana Keychain](https://github.com/solana-foundation/solana-keychain) remote signers
|
|
44
31
|
- Server pre-fetches `recentBlockhash` to save client an RPC round-trip
|
|
45
32
|
- Transaction simulation before broadcast to prevent wasted fees
|
|
33
|
+
- Optional `tokenProgram` hint; clients resolve the mint owner and fail closed if discovery fails
|
|
46
34
|
|
|
47
35
|
## Architecture
|
|
48
36
|
|
|
49
37
|
```
|
|
50
|
-
sdk/
|
|
51
|
-
├──
|
|
52
|
-
|
|
53
|
-
├──
|
|
54
|
-
│
|
|
55
|
-
│
|
|
56
|
-
├──
|
|
57
|
-
│
|
|
58
|
-
│
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
38
|
+
mpp-sdk/
|
|
39
|
+
├── typescript/ # TypeScript SDK
|
|
40
|
+
│ └── packages/mpp/src/
|
|
41
|
+
│ ├── Methods.ts # Shared charge + session schemas
|
|
42
|
+
│ ├── constants.ts # Token programs, USDC mints, RPC URLs
|
|
43
|
+
│ ├── server/
|
|
44
|
+
│ │ ├── Charge.ts # Server: challenge, verify, broadcast
|
|
45
|
+
│ │ └── Session.ts # Server: session channel management
|
|
46
|
+
│ ├── client/
|
|
47
|
+
│ │ ├── Charge.ts # Client: build tx, sign, send
|
|
48
|
+
│ │ └── Session.ts # Client: session lifecycle
|
|
49
|
+
│ └── session/
|
|
50
|
+
│ ├── Types.ts # Session types and interfaces
|
|
51
|
+
│ ├── Voucher.ts # Voucher signing and verification
|
|
52
|
+
│ ├── ChannelStore.ts # Persistent channel state
|
|
53
|
+
│ └── authorizers/ # Pluggable authorization strategies
|
|
54
|
+
├── rust/ # Rust SDK (coming soon)
|
|
55
|
+
│ └── src/lib.rs
|
|
56
|
+
└── demo/ # Interactive playground
|
|
67
57
|
```
|
|
68
58
|
|
|
69
59
|
**Exports:**
|
|
70
|
-
- `@solana/mpp` — shared schemas, session types, and authorizers
|
|
60
|
+
- `@solana/mpp` — shared schemas, session types, and authorizers only
|
|
71
61
|
- `@solana/mpp/server` — server-side charge + session, `Mppx`, `Store`
|
|
72
62
|
- `@solana/mpp/client` — client-side charge + session, `Mppx`
|
|
73
63
|
|
|
@@ -85,7 +75,7 @@ const mppx = Mppx.create({
|
|
|
85
75
|
methods: [
|
|
86
76
|
solana.charge({
|
|
87
77
|
recipient: 'RecipientPubkey...',
|
|
88
|
-
|
|
78
|
+
currency: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
89
79
|
decimals: 6,
|
|
90
80
|
}),
|
|
91
81
|
],
|
|
@@ -112,45 +102,6 @@ const mppx = Mppx.create({
|
|
|
112
102
|
const response = await mppx.fetch('https://api.example.com/paid-endpoint')
|
|
113
103
|
```
|
|
114
104
|
|
|
115
|
-
### Session (metered payments)
|
|
116
|
-
|
|
117
|
-
**Server:**
|
|
118
|
-
|
|
119
|
-
```ts
|
|
120
|
-
import { Mppx, solana } from '@solana/mpp/server'
|
|
121
|
-
|
|
122
|
-
const mppx = Mppx.create({
|
|
123
|
-
secretKey: process.env.MPP_SECRET_KEY,
|
|
124
|
-
methods: [
|
|
125
|
-
solana.session({
|
|
126
|
-
recipient: 'RecipientPubkey...',
|
|
127
|
-
asset: { kind: 'sol', decimals: 9 },
|
|
128
|
-
channelProgram: 'ChannelProgramId...',
|
|
129
|
-
pricing: { unit: 'request', amountPerUnit: '10', meter: 'api_calls' },
|
|
130
|
-
sessionDefaults: { suggestedDeposit: '1000', ttlSeconds: 60 },
|
|
131
|
-
}),
|
|
132
|
-
],
|
|
133
|
-
})
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
**Client:**
|
|
137
|
-
|
|
138
|
-
```ts
|
|
139
|
-
import { Mppx, solana } from '@solana/mpp/client'
|
|
140
|
-
import { UnboundedAuthorizer } from '@solana/mpp'
|
|
141
|
-
|
|
142
|
-
const mppx = Mppx.create({
|
|
143
|
-
methods: [
|
|
144
|
-
solana.session({
|
|
145
|
-
signer,
|
|
146
|
-
authorizer: new UnboundedAuthorizer({ signer, buildOpenTx, buildTopupTx }),
|
|
147
|
-
}),
|
|
148
|
-
],
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
const response = await mppx.fetch('https://api.example.com/metered-endpoint')
|
|
152
|
-
```
|
|
153
|
-
|
|
154
105
|
### Fee Sponsorship (charge)
|
|
155
106
|
|
|
156
107
|
The server can pay transaction fees on behalf of clients:
|
|
@@ -170,20 +121,49 @@ solana.charge({
|
|
|
170
121
|
### Charge Flow
|
|
171
122
|
|
|
172
123
|
1. Client requests a resource
|
|
173
|
-
2. Server returns **402 Payment Required** with a challenge (`recipient`, `amount`, `currency`, `recentBlockhash`)
|
|
124
|
+
2. Server returns **402 Payment Required** with a challenge (`recipient`, `amount`, `currency`, optional `tokenProgram`, optional `recentBlockhash`)
|
|
174
125
|
3. Client builds and signs a Solana transfer transaction
|
|
175
126
|
4. Server simulates, broadcasts, confirms on-chain, and verifies the transfer
|
|
176
127
|
5. Server returns the resource with a `Payment-Receipt` header
|
|
177
128
|
|
|
178
129
|
With fee sponsorship, the client partially signs (transfer authority only) and the server co-signs as fee payer before broadcasting.
|
|
179
130
|
|
|
180
|
-
###
|
|
131
|
+
### Splits (charge)
|
|
132
|
+
|
|
133
|
+
Use `splits` when one charge should pay multiple recipients in the same asset.
|
|
134
|
+
The top-level `amount` is the total paid. The primary `recipient` receives
|
|
135
|
+
`amount - sum(splits)`, and each split recipient receives its own `amount`.
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import { Mppx, solana } from '@solana/mpp/server'
|
|
139
|
+
|
|
140
|
+
const mppx = Mppx.create({
|
|
141
|
+
secretKey: process.env.MPP_SECRET_KEY,
|
|
142
|
+
methods: [
|
|
143
|
+
solana.charge({
|
|
144
|
+
recipient: 'SellerPubkey...',
|
|
145
|
+
currency: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
146
|
+
decimals: 6,
|
|
147
|
+
splits: [
|
|
148
|
+
{ recipient: 'PlatformPubkey...', amount: '50000', memo: 'platform fee' },
|
|
149
|
+
{ recipient: 'ReferrerPubkey...', amount: '20000', memo: 'referral fee' },
|
|
150
|
+
],
|
|
151
|
+
}),
|
|
152
|
+
],
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
const result = await mppx.charge({
|
|
156
|
+
amount: '1000000', // total: 1.00 USDC
|
|
157
|
+
currency: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
158
|
+
})(request)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
In this example:
|
|
162
|
+
- seller receives `930000`
|
|
163
|
+
- platform receives `50000`
|
|
164
|
+
- referrer receives `20000`
|
|
181
165
|
|
|
182
|
-
|
|
183
|
-
2. Subsequent requests: client sends updated vouchers with monotonic cumulative amounts
|
|
184
|
-
3. Server deducts from the channel balance per its pricing config
|
|
185
|
-
4. When balance runs low: client tops up the channel
|
|
186
|
-
5. On close: final voucher settles the channel
|
|
166
|
+
The same `splits` shape works for native SOL charges.
|
|
187
167
|
|
|
188
168
|
## Demo
|
|
189
169
|
|
|
@@ -204,23 +184,28 @@ See [demo/README.md](demo/README.md) for full details.
|
|
|
204
184
|
## Development
|
|
205
185
|
|
|
206
186
|
```bash
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
just
|
|
211
|
-
just
|
|
212
|
-
just test
|
|
213
|
-
just test-
|
|
214
|
-
|
|
187
|
+
# TypeScript
|
|
188
|
+
cd typescript && pnpm install
|
|
189
|
+
|
|
190
|
+
just ts-fmt # Format and lint
|
|
191
|
+
just ts-build # Build
|
|
192
|
+
just ts-test # Unit tests (charge + session, no network)
|
|
193
|
+
just ts-test-integration # Integration tests (requires Surfpool)
|
|
194
|
+
# Rust
|
|
195
|
+
cd rust && cargo build
|
|
196
|
+
|
|
197
|
+
# Everything
|
|
198
|
+
just build # Build both
|
|
199
|
+
just test # Test both
|
|
200
|
+
just pre-commit # Full pre-commit checks
|
|
215
201
|
```
|
|
216
202
|
|
|
217
203
|
## Spec
|
|
218
204
|
|
|
219
205
|
This SDK implements the [Solana Charge Intent](https://github.com/tempoxyz/mpp-specs/pull/188) for the [HTTP Payment Authentication Scheme](https://paymentauth.org).
|
|
220
206
|
|
|
221
|
-
Session method docs and implementation notes
|
|
222
|
-
|
|
223
|
-
- [docs/methods/sessions.md](docs/methods/sessions.md)
|
|
207
|
+
Session method docs and implementation notes are intentionally kept out of this
|
|
208
|
+
README for now. See [docs/methods/sessions.md](docs/methods/sessions.md).
|
|
224
209
|
|
|
225
210
|
## License
|
|
226
211
|
|
package/dist/Methods.d.ts
CHANGED
|
@@ -45,10 +45,15 @@ export declare const charge: {
|
|
|
45
45
|
network: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
46
46
|
/** Server-provided base58-encoded recent blockhash. Saves the client an RPC round-trip. */
|
|
47
47
|
recentBlockhash: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
/** Additional payment splits (max 32). Same asset as primary payment. */
|
|
49
|
+
splits: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
|
|
50
|
+
/** Amount in base units (same asset as primary). */
|
|
51
|
+
amount: z.ZodMiniString<string>;
|
|
52
|
+
/** Optional memo for this split (max 566 bytes). */
|
|
53
|
+
memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
54
|
+
/** Base58-encoded recipient of this split. */
|
|
55
|
+
recipient: z.ZodMiniString<string>;
|
|
56
|
+
}, z.core.$strip>>>;
|
|
52
57
|
/** Token program address (TOKEN_PROGRAM or TOKEN_2022_PROGRAM). Defaults to TOKEN_PROGRAM. */
|
|
53
58
|
tokenProgram: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
54
59
|
}, z.core.$strip>;
|
package/dist/Methods.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../
|
|
1
|
+
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../src/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,CAAC,EAAE,MAAM,MAAM,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM;;;;;;gBAMH,oEAAoE;;gBAEpE,8EAA8E;;gBAE9E,iGAAiG;;;;;YAKrG,6EAA6E;;YAE7E,4FAA4F;;YAE5F,6EAA6E;;YAE7E,gFAAgF;;;gBAG5E,yDAAyD;;gBAEzD,uFAAuF;;gBAEvF,yFAAyF;;gBAEzF,yDAAyD;;gBAEzD,2FAA2F;;gBAE3F,yEAAyE;;oBAI7D,oDAAoD;;oBAEpD,oDAAoD;;oBAEpD,8CAA8C;;;gBAK1D,8FAA8F;;;YAGlG,2CAA2C;;;;CAIrD,CAAC;AAqCH;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO;;;;;;gBAOA,gCAAgC;;gBAEhC,oEAAoE;;gBAEpE,oEAAoE;;oBAG5D,0DAA0D;;oBAE1D,6DAA6D;;;gBAIrE,oEAAoE;;gBAEpE,wDAAwD;;gBAExD,gEAAgE;;gBAEhE,8DAA8D;;gBAE9D,yDAAyD;;gBAEzD,sDAAsD;;oBAjDtE,6DAA6D;;oBAE7D,oEAAoE;;oBAEpE,iCAAiC;;;wBA7BjC,2DAA2D;;wBAE3D,gDAAgD;;wBAEhD,2DAA2D;;wBAE3D,8CAA8C;;wBAE9C,gEAAgE;;wBAEhE,4CAA4C;;wBAE5C,0CAA0C;;wBAE1C,wCAAwC;;wBAExC,uDAAuD;;wBAEvD,mDAAmD;;wBAEnD,6DAA6D;;;;;gBA0D7C,gCAAgC;;gBAEhC,2DAA2D;;gBAE3D,uDAAuD;;oBAzDvE,6DAA6D;;oBAE7D,oEAAoE;;oBAEpE,iCAAiC;;;wBA7BjC,2DAA2D;;wBAE3D,gDAAgD;;wBAEhD,2DAA2D;;wBAE3D,8CAA8C;;wBAE9C,gEAAgE;;wBAEhE,4CAA4C;;wBAE5C,0CAA0C;;wBAE1C,wCAAwC;;wBAExC,uDAAuD;;wBAEvD,mDAAmD;;wBAEnD,6DAA6D;;;;;gBAkE7C,gCAAgC;;gBAEhC,0DAA0D;;gBAE1D,0DAA0D;;gBAE1D,8DAA8D;;;gBAI9D,gCAAgC;;gBAEhC,0DAA0D;;gBAE1D,yEAAyE;;gBAEzE,qDAAqD;;oBA7ErE,6DAA6D;;oBAE7D,oEAAoE;;oBAEpE,iCAAiC;;;wBA7BjC,2DAA2D;;wBAE3D,gDAAgD;;wBAEhD,2DAA2D;;wBAE3D,8CAA8C;;wBAE9C,gEAAgE;;wBAEhE,4CAA4C;;wBAE5C,0CAA0C;;wBAE1C,wCAAwC;;wBAExC,uDAAuD;;wBAEvD,mDAAmD;;wBAEnD,6DAA6D;;;;;;;;gBAyFjD,+CAA+C;;gBAE/C,2CAA2C;;gBAE3C,2CAA2C;;gBAE3C,+CAA+C;;;YAGnD,mEAAmE;;YAEnE,uEAAuE;;YAEvE,iEAAiE;;gBAGzD,0CAA0C;;gBAE1C,6CAA6C;;gBAE7C,mDAAmD;;gBAEnD,gDAAgD;;;YAIxD,+DAA+D;;YAE/D,0DAA0D;;gBAGlD,kDAAkD;;gBAElD,gDAAgD;;;;;;gBAQhD,qDAAqD;;gBAErD,6DAA6D;;;YAIrE,kDAAkD;;gBAG1C,uDAAuD;;gBAEvD,6DAA6D;;;;;CAM/E,CAAC"}
|
package/dist/Methods.js
CHANGED
|
@@ -45,10 +45,15 @@ export const charge = Method.from({
|
|
|
45
45
|
network: z.optional(z.string()),
|
|
46
46
|
/** Server-provided base58-encoded recent blockhash. Saves the client an RPC round-trip. */
|
|
47
47
|
recentBlockhash: z.optional(z.string()),
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
/** Additional payment splits (max 32). Same asset as primary payment. */
|
|
49
|
+
splits: z.optional(z.array(z.object({
|
|
50
|
+
/** Amount in base units (same asset as primary). */
|
|
51
|
+
amount: z.string(),
|
|
52
|
+
/** Optional memo for this split (max 566 bytes). */
|
|
53
|
+
memo: z.optional(z.string()),
|
|
54
|
+
/** Base58-encoded recipient of this split. */
|
|
55
|
+
recipient: z.string(),
|
|
56
|
+
}))),
|
|
52
57
|
/** Token program address (TOKEN_PROGRAM or TOKEN_2022_PROGRAM). Defaults to TOKEN_PROGRAM. */
|
|
53
58
|
tokenProgram: z.optional(z.string()),
|
|
54
59
|
}),
|
package/dist/Methods.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.js","sourceRoot":"","sources":["../
|
|
1
|
+
{"version":3,"file":"Methods.js","sourceRoot":"","sources":["../src/Methods.ts"],"names":[],"mappings":"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"}
|
package/dist/client/Charge.d.ts
CHANGED
|
@@ -51,8 +51,11 @@ export declare function charge(parameters: charge.Parameters): Method.Client<{
|
|
|
51
51
|
feePayerKey: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
52
52
|
network: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
53
53
|
recentBlockhash: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
splits: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniArray<import("zod/mini").ZodMiniObject<{
|
|
55
|
+
amount: import("zod/mini").ZodMiniString<string>;
|
|
56
|
+
memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
57
|
+
recipient: import("zod/mini").ZodMiniString<string>;
|
|
58
|
+
}, import("zod/v4/core").$strip>>>;
|
|
56
59
|
tokenProgram: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
57
60
|
}, import("zod/v4/core").$strip>;
|
|
58
61
|
recipient: import("zod/mini").ZodMiniString<string>;
|
|
@@ -70,7 +73,7 @@ export declare namespace charge {
|
|
|
70
73
|
* Cannot be used with server fee sponsorship (feePayer mode).
|
|
71
74
|
*/
|
|
72
75
|
broadcast?: boolean;
|
|
73
|
-
/** Compute unit limit. Defaults to
|
|
76
|
+
/** Compute unit limit. Defaults to 200,000. */
|
|
74
77
|
computeUnitLimit?: number;
|
|
75
78
|
/** Compute unit price in micro-lamports for priority fees. Defaults to 1. */
|
|
76
79
|
computeUnitPrice?: bigint;
|
|
@@ -92,7 +95,6 @@ export declare namespace charge {
|
|
|
92
95
|
currency: string;
|
|
93
96
|
feePayerKey?: string;
|
|
94
97
|
recipient: string;
|
|
95
|
-
splToken?: string;
|
|
96
98
|
type: 'challenge';
|
|
97
99
|
} | {
|
|
98
100
|
signature: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../src/client/Charge.ts"],"names":[],"mappings":"AAAA,OAAO,EAkBH,KAAK,iBAAiB,EACzB,MAAM,aAAa,CAAC;AAQrB,OAAO,EAAc,MAAM,EAAE,MAAM,MAAM,CAAC;AAK1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAsMnD;AAoED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC5B,KAAK,UAAU,GAAG;QACd;;;;;;;WAOG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,+CAA+C;QAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,6EAA6E;QAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kDAAkD;QAClD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;QAC5C,+EAA+E;QAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;;;;WAMG;QACH,MAAM,EAAE,iBAAiB,CAAC;KAC7B,CAAC;IAEF,KAAK,aAAa,GACZ;QACI,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,WAAW,CAAC;KACrB,GACD;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,GACzC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACnC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GACvC;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAClB;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC7B"}
|
package/dist/client/Charge.js
CHANGED
|
@@ -3,10 +3,8 @@ import { getSetComputeUnitLimitInstruction, getSetComputeUnitPriceInstruction }
|
|
|
3
3
|
import { getTransferSolInstruction } from '@solana-program/system';
|
|
4
4
|
import { findAssociatedTokenPda, getCreateAssociatedTokenIdempotentInstruction, getTransferCheckedInstruction, } from '@solana-program/token';
|
|
5
5
|
import { Credential, Method } from 'mppx';
|
|
6
|
-
import { ASSOCIATED_TOKEN_PROGRAM, DEFAULT_RPC_URLS, TOKEN_PROGRAM } from '../constants.js';
|
|
6
|
+
import { ASSOCIATED_TOKEN_PROGRAM, DEFAULT_RPC_URLS, TOKEN_2022_PROGRAM, TOKEN_PROGRAM } from '../constants.js';
|
|
7
7
|
import * as Methods from '../Methods.js';
|
|
8
|
-
const MEMO_PROGRAM = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
9
|
-
const textEncoder = new TextEncoder();
|
|
10
8
|
/**
|
|
11
9
|
* Creates a Solana `charge` method for usage on the client.
|
|
12
10
|
*
|
|
@@ -41,74 +39,88 @@ export function charge(parameters) {
|
|
|
41
39
|
const method = Method.toClient(Methods.charge, {
|
|
42
40
|
async createCredential({ challenge }) {
|
|
43
41
|
const { amount, currency, recipient, methodDetails } = challenge.request;
|
|
44
|
-
const { network,
|
|
42
|
+
const { network, decimals, tokenProgram: tokenProgramAddr, feePayer: serverPaysFees, feePayerKey, recentBlockhash: serverBlockhash, splits, } = methodDetails;
|
|
43
|
+
// currency is "sol" for native, or the mint address for SPL tokens.
|
|
44
|
+
const mint = currency !== 'sol' ? currency : undefined;
|
|
45
45
|
const rpcUrl = parameters.rpcUrl ?? DEFAULT_RPC_URLS[network || 'mainnet-beta'] ?? DEFAULT_RPC_URLS['mainnet-beta'];
|
|
46
46
|
const rpc = createSolanaRpc(rpcUrl);
|
|
47
47
|
onProgress?.({
|
|
48
48
|
amount,
|
|
49
|
-
currency
|
|
49
|
+
currency,
|
|
50
50
|
feePayerKey: feePayerKey || undefined,
|
|
51
51
|
recipient,
|
|
52
|
-
splToken: splToken || undefined,
|
|
53
52
|
type: 'challenge',
|
|
54
53
|
});
|
|
55
54
|
const useServerFeePayer = serverPaysFees && feePayerKey && !broadcast;
|
|
55
|
+
// Compute primary amount (total minus splits).
|
|
56
|
+
const splitsTotal = (splits ?? []).reduce((sum, s) => sum + BigInt(s.amount), 0n);
|
|
57
|
+
const primaryAmount = BigInt(amount) - splitsTotal;
|
|
56
58
|
// Build transfer instructions.
|
|
57
59
|
const instructions = [];
|
|
58
|
-
if (
|
|
59
|
-
// ── SPL token
|
|
60
|
-
const
|
|
61
|
-
const tokenProg =
|
|
60
|
+
if (mint) {
|
|
61
|
+
// ── SPL token transfers ──
|
|
62
|
+
const mintAddress = address(mint);
|
|
63
|
+
const tokenProg = tokenProgramAddr
|
|
64
|
+
? address(tokenProgramAddr)
|
|
65
|
+
: await resolveTokenProgram(rpc, mintAddress);
|
|
66
|
+
const tokenDecimals = decimals ?? 6;
|
|
62
67
|
const [sourceAta] = await findAssociatedTokenPda({
|
|
63
|
-
mint,
|
|
68
|
+
mint: mintAddress,
|
|
64
69
|
owner: signer.address,
|
|
65
70
|
tokenProgram: tokenProg,
|
|
66
71
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
// Create destination ATA if it doesn't exist (idempotent).
|
|
73
|
-
// WARNING: When the server is fee payer, it pays ~0.002 SOL rent for ATA
|
|
74
|
-
// creation. The recipient can close the ATA to reclaim rent, then the next
|
|
75
|
-
// payment re-creates it — repeatedly draining the fee payer. Servers SHOULD
|
|
76
|
-
// verify the ATA exists before signing, or require recipients to pre-create
|
|
77
|
-
// their ATAs, or factor rent cost into pricing.
|
|
78
|
-
if (useServerFeePayer) {
|
|
79
|
-
// In fee payer mode, the server's key pays ATA rent.
|
|
80
|
-
// We build the instruction manually since the payer isn't a local signer.
|
|
81
|
-
instructions.push(createAssociatedTokenAccountIdempotent(address(feePayerKey), address(recipient), mint, destAta, tokenProg));
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// Standard mode: client pays ATA rent via Codama-generated instruction.
|
|
85
|
-
instructions.push(getCreateAssociatedTokenIdempotentInstruction({
|
|
86
|
-
ata: destAta,
|
|
87
|
-
mint,
|
|
88
|
-
owner: address(recipient),
|
|
89
|
-
payer: signer,
|
|
72
|
+
// Helper: add ATA creation + transferChecked for a recipient.
|
|
73
|
+
const addSplTransfer = async (dest, transferAmount) => {
|
|
74
|
+
const [destAta] = await findAssociatedTokenPda({
|
|
75
|
+
mint: mintAddress,
|
|
76
|
+
owner: address(dest),
|
|
90
77
|
tokenProgram: tokenProg,
|
|
91
|
-
})
|
|
78
|
+
});
|
|
79
|
+
// Create destination ATA if it doesn't exist (idempotent).
|
|
80
|
+
if (useServerFeePayer) {
|
|
81
|
+
instructions.push(createAssociatedTokenAccountIdempotent(address(feePayerKey), address(dest), mintAddress, destAta, tokenProg));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
instructions.push(getCreateAssociatedTokenIdempotentInstruction({
|
|
85
|
+
ata: destAta,
|
|
86
|
+
mint: mintAddress,
|
|
87
|
+
owner: address(dest),
|
|
88
|
+
payer: signer,
|
|
89
|
+
tokenProgram: tokenProg,
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
instructions.push(getTransferCheckedInstruction({
|
|
93
|
+
amount: transferAmount,
|
|
94
|
+
authority: signer,
|
|
95
|
+
decimals: tokenDecimals,
|
|
96
|
+
destination: destAta,
|
|
97
|
+
mint: mintAddress,
|
|
98
|
+
source: sourceAta,
|
|
99
|
+
}, { programAddress: tokenProg }));
|
|
100
|
+
};
|
|
101
|
+
// Primary transfer to recipient.
|
|
102
|
+
await addSplTransfer(recipient, primaryAmount);
|
|
103
|
+
// Split transfers.
|
|
104
|
+
for (const split of splits ?? []) {
|
|
105
|
+
await addSplTransfer(split.recipient, BigInt(split.amount));
|
|
92
106
|
}
|
|
93
|
-
instructions.push(getTransferCheckedInstruction({
|
|
94
|
-
amount: BigInt(amount),
|
|
95
|
-
authority: signer,
|
|
96
|
-
decimals: decimals ?? 6,
|
|
97
|
-
destination: destAta,
|
|
98
|
-
mint,
|
|
99
|
-
source: sourceAta,
|
|
100
|
-
}, { programAddress: tokenProg }));
|
|
101
107
|
}
|
|
102
108
|
else {
|
|
103
|
-
// ── Native SOL
|
|
109
|
+
// ── Native SOL transfers ──
|
|
110
|
+
// Primary transfer to recipient.
|
|
104
111
|
instructions.push(getTransferSolInstruction({
|
|
105
|
-
amount:
|
|
112
|
+
amount: primaryAmount,
|
|
106
113
|
destination: address(recipient),
|
|
107
114
|
source: signer,
|
|
108
115
|
}));
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
116
|
+
// Split transfers.
|
|
117
|
+
for (const split of splits ?? []) {
|
|
118
|
+
instructions.push(getTransferSolInstruction({
|
|
119
|
+
amount: BigInt(split.amount),
|
|
120
|
+
destination: address(split.recipient),
|
|
121
|
+
source: signer,
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
112
124
|
}
|
|
113
125
|
onProgress?.({ type: 'signing' });
|
|
114
126
|
// Use server-provided blockhash if available, otherwise fetch one.
|
|
@@ -124,7 +136,7 @@ export function charge(parameters) {
|
|
|
124
136
|
// Prepend compute budget instructions per best practice.
|
|
125
137
|
msg => prependTransactionMessageInstructions([
|
|
126
138
|
getSetComputeUnitPriceInstruction({ microLamports: parameters.computeUnitPrice ?? 1n }),
|
|
127
|
-
getSetComputeUnitLimitInstruction({ units: parameters.computeUnitLimit ??
|
|
139
|
+
getSetComputeUnitLimitInstruction({ units: parameters.computeUnitLimit ?? 200_000 }),
|
|
128
140
|
], msg));
|
|
129
141
|
// When server pays fees, partially sign (only the transfer authority).
|
|
130
142
|
// The server will add its fee payer signature before broadcasting.
|
|
@@ -181,16 +193,16 @@ function createAssociatedTokenAccountIdempotent(payer, owner, mint, ata, tokenPr
|
|
|
181
193
|
programAddress: address(ASSOCIATED_TOKEN_PROGRAM), // CreateIdempotent discriminator
|
|
182
194
|
};
|
|
183
195
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
};
|
|
196
|
+
async function resolveTokenProgram(rpc, mint) {
|
|
197
|
+
const account = await rpc.getAccountInfo(mint, { encoding: 'base64' }).send();
|
|
198
|
+
const owner = account.value?.owner;
|
|
199
|
+
if (!owner) {
|
|
200
|
+
throw new Error('Failed to determine token program for mint: mint account not found');
|
|
201
|
+
}
|
|
202
|
+
if (owner === TOKEN_PROGRAM || owner === TOKEN_2022_PROGRAM) {
|
|
203
|
+
return address(owner);
|
|
204
|
+
}
|
|
205
|
+
throw new Error(`Failed to determine token program for mint: unexpected owner ${owner}`);
|
|
194
206
|
}
|
|
195
207
|
/**
|
|
196
208
|
* Polls for transaction confirmation via getSignatureStatuses.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../src/client/Charge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../src/client/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,MAAM,EAAE;IACjB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IAC5D,MAAM,EAAE,OAAO,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,QAAQ,CAAC;CAI3B,CAAC;AAEH,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC5B,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CACxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../src/client/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,MAAM,GAIf,MAAM,CAAC,MAAM,CAAC,CAAC,UAA6B,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;IACtE,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,QAAQ;CACpB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../src/client/Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAA8B,MAAM,EAAE,CAAC,EAAE,MAAM,MAAM,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,qBAAqB,CAAC;AAEvF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAmCF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAS/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA2WrD;AA6LD,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC7B,KAAK,UAAU,GAAG;QACd,UAAU,EAAE,iBAAiB,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;QAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAC9B,CAAC;IAEF,KAAK,aAAa,GACZ;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,GAC9E;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAChE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GACjE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GACrC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GACtC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GACrC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAChD"}
|