toss-expo-sdk 0.1.2 → 1.0.2
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 +380 -25
- package/lib/module/ble.js +59 -4
- package/lib/module/ble.js.map +1 -1
- package/lib/module/client/BLETransactionHandler.js +277 -0
- package/lib/module/client/BLETransactionHandler.js.map +1 -0
- package/lib/module/client/NonceAccountManager.js +364 -0
- package/lib/module/client/NonceAccountManager.js.map +1 -0
- package/lib/module/client/TossClient.js +1 -1
- package/lib/module/client/TossClient.js.map +1 -1
- package/lib/module/examples/enhancedFeaturesFlow.js +233 -0
- package/lib/module/examples/enhancedFeaturesFlow.js.map +1 -0
- package/lib/module/examples/offlinePaymentFlow.js +27 -27
- package/lib/module/examples/offlinePaymentFlow.js.map +1 -1
- package/lib/module/hooks/useOfflineBLETransactions.js +314 -0
- package/lib/module/hooks/useOfflineBLETransactions.js.map +1 -0
- package/lib/module/index.js +18 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/intent.js +129 -0
- package/lib/module/intent.js.map +1 -1
- package/lib/module/noise.js +175 -0
- package/lib/module/noise.js.map +1 -1
- package/lib/module/qr.js +2 -2
- package/lib/module/reconciliation.js +155 -0
- package/lib/module/reconciliation.js.map +1 -1
- package/lib/module/services/authService.js +166 -3
- package/lib/module/services/authService.js.map +1 -1
- package/lib/module/storage/secureStorage.js +102 -0
- package/lib/module/storage/secureStorage.js.map +1 -1
- package/lib/module/sync.js +25 -1
- package/lib/module/sync.js.map +1 -1
- package/lib/module/types/nonceAccount.js +2 -0
- package/lib/module/types/nonceAccount.js.map +1 -0
- package/lib/module/types/tossUser.js +16 -1
- package/lib/module/types/tossUser.js.map +1 -1
- package/lib/module/utils/compression.js +210 -0
- package/lib/module/utils/compression.js.map +1 -0
- package/lib/module/wifi.js +311 -0
- package/lib/module/wifi.js.map +1 -0
- package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts +8 -0
- package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts.map +1 -0
- package/lib/typescript/src/ble.d.ts +31 -2
- package/lib/typescript/src/ble.d.ts.map +1 -1
- package/lib/typescript/src/client/BLETransactionHandler.d.ts +98 -0
- package/lib/typescript/src/client/BLETransactionHandler.d.ts.map +1 -0
- package/lib/typescript/src/client/NonceAccountManager.d.ts +82 -0
- package/lib/typescript/src/client/NonceAccountManager.d.ts.map +1 -0
- package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts +45 -0
- package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts +91 -0
- package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +11 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/intent.d.ts +15 -0
- package/lib/typescript/src/intent.d.ts.map +1 -1
- package/lib/typescript/src/noise.d.ts +62 -0
- package/lib/typescript/src/noise.d.ts.map +1 -1
- package/lib/typescript/src/reconciliation.d.ts +6 -0
- package/lib/typescript/src/reconciliation.d.ts.map +1 -1
- package/lib/typescript/src/services/authService.d.ts +26 -1
- package/lib/typescript/src/services/authService.d.ts.map +1 -1
- package/lib/typescript/src/storage/secureStorage.d.ts +16 -0
- package/lib/typescript/src/storage/secureStorage.d.ts.map +1 -1
- package/lib/typescript/src/sync.d.ts +6 -1
- package/lib/typescript/src/sync.d.ts.map +1 -1
- package/lib/typescript/src/types/nonceAccount.d.ts +59 -0
- package/lib/typescript/src/types/nonceAccount.d.ts.map +1 -0
- package/lib/typescript/src/types/tossUser.d.ts +16 -0
- package/lib/typescript/src/types/tossUser.d.ts.map +1 -1
- package/lib/typescript/src/utils/compression.d.ts +52 -0
- package/lib/typescript/src/utils/compression.d.ts.map +1 -0
- package/lib/typescript/src/wifi.d.ts +116 -0
- package/lib/typescript/src/wifi.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/solana-program-simple.test.ts +256 -0
- package/src/ble.ts +105 -4
- package/src/client/BLETransactionHandler.ts +364 -0
- package/src/client/NonceAccountManager.ts +444 -0
- package/src/client/TossClient.ts +1 -1
- package/src/examples/enhancedFeaturesFlow.ts +272 -0
- package/src/examples/offlinePaymentFlow.ts +27 -27
- package/src/hooks/useOfflineBLETransactions.ts +438 -0
- package/src/index.tsx +52 -6
- package/src/intent.ts +166 -0
- package/src/noise.ts +238 -0
- package/src/qr.tsx +2 -2
- package/src/reconciliation.ts +184 -0
- package/src/services/authService.ts +190 -3
- package/src/storage/secureStorage.ts +138 -0
- package/src/sync.ts +40 -0
- package/src/types/nonceAccount.ts +75 -0
- package/src/types/tossUser.ts +35 -2
- package/src/utils/compression.ts +247 -0
- package/src/wifi.ts +401 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Connection","PublicKey","createIntent","secureStoreIntent","getSecureIntent","getAllSecureIntents","processIntentsForSync","TossError","NetworkError","StorageError","ERROR_CODES","createNonceAccount","getNonce","syncToChain","checkSyncStatus","detectConflicts","getReconciliationState","DEFAULT_RETRY_OPTIONS","maxRetries","retryDelay","TossClient","createClient","config","constructor","projectId","mode","privateTransactions","provider","sync","syncBackupDb","rpcUrl","getDefaultRpcUrl","feePayer","connection","network","urls","devnet","withRetry","fn","context","lastError","attempt","error","delay","Math","pow","Promise","resolve","setTimeout","message","cause","initializeNonceAccount","amount","Error","nonceAccount","nonceAuth","undefined","publicKey","toBase58","getCurrentNonce","sender","recipient","options","NETWORK_ERROR","SIGNATURE_VERIFICATION_FAILED","senderKeypair","recipientPubkey","feePayerPubkey","useDurableNonce","getLatestBlockhash","intent","TRANSACTION_FAILED","getIntents","updateIntentStatus","intentId","status","updatedAt","Date","now","updatedIntent","err","intents","dbUrl","processedIntents","all","map","fullSync","detectIntentConflicts","getReconciliationStatus","createUserIntent","memo","getCurrentUserAddress","isWalletUnlocked","lockWallet","signOut"],"sourceRoot":"../../../src","sources":["client/TossClient.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["Connection","PublicKey","createIntent","secureStoreIntent","getSecureIntent","getAllSecureIntents","processIntentsForSync","TossError","NetworkError","StorageError","ERROR_CODES","createNonceAccount","getNonce","syncToChain","checkSyncStatus","detectConflicts","getReconciliationState","DEFAULT_RETRY_OPTIONS","maxRetries","retryDelay","TossClient","createClient","config","constructor","projectId","mode","privateTransactions","provider","sync","syncBackupDb","rpcUrl","getDefaultRpcUrl","feePayer","connection","network","urls","devnet","withRetry","fn","context","lastError","attempt","error","delay","Math","pow","Promise","resolve","setTimeout","message","cause","initializeNonceAccount","amount","Error","nonceAccount","nonceAuth","undefined","publicKey","toBase58","getCurrentNonce","sender","recipient","options","NETWORK_ERROR","SIGNATURE_VERIFICATION_FAILED","senderKeypair","recipientPubkey","feePayerPubkey","useDurableNonce","getLatestBlockhash","intent","TRANSACTION_FAILED","getIntents","updateIntentStatus","intentId","status","updatedAt","Date","now","updatedIntent","err","intents","dbUrl","processedIntents","all","map","fullSync","detectIntentConflicts","getReconciliationStatus","createUserIntent","memo","getCurrentUserAddress","isWalletUnlocked","lockWallet","signOut"],"sourceRoot":"../../../src","sources":["client/TossClient.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Complete Example: Enhanced TOSS Flow with Compression, Incentives & WiFi
|
|
5
|
+
*
|
|
6
|
+
* Demonstrates:
|
|
7
|
+
* 1. Compression of intent metadata
|
|
8
|
+
* 2. Smart transport selection (WiFi > BLE)
|
|
9
|
+
* 3. Relay incentive tracking
|
|
10
|
+
* 4. Mesh clustering for optimal routing
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { Keypair } from '@solana/web3.js';
|
|
14
|
+
import { createIntent, SmartTransportSelector, compressIntentMetadata, decompressIntentMetadata } from 'toss-expo-sdk';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Example 1: Metadata Compression Flow
|
|
18
|
+
*
|
|
19
|
+
* Compress large memo text before transmission
|
|
20
|
+
*/
|
|
21
|
+
export async function exampleCompressedIntentFlow(sender, recipient, amount, connection) {
|
|
22
|
+
console.log('\nExample 1: Compressed Intent Flow\n');
|
|
23
|
+
|
|
24
|
+
// Step 1: Create intent
|
|
25
|
+
const intent = await createIntent(sender, recipient, amount, connection);
|
|
26
|
+
|
|
27
|
+
// Step 2: Create metadata with long memo
|
|
28
|
+
const metadata = {
|
|
29
|
+
memo: 'Payment for services rendered during Q4 2025. This is a longer memo that benefits from compression',
|
|
30
|
+
recipientName: 'Alice Smith',
|
|
31
|
+
transactionType: 'service-payment'
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// Step 3: Compress metadata
|
|
35
|
+
const {
|
|
36
|
+
compressed,
|
|
37
|
+
savings
|
|
38
|
+
} = await compressIntentMetadata(metadata);
|
|
39
|
+
console.log(`Compressed metadata: ${savings}% smaller`);
|
|
40
|
+
console.log(` Original size: ${JSON.stringify(metadata).length} bytes`);
|
|
41
|
+
console.log(` Compressed size: ${JSON.stringify(compressed).length} bytes`);
|
|
42
|
+
|
|
43
|
+
// Step 4: Store/transmit compressed version
|
|
44
|
+
const transmissionPayload = {
|
|
45
|
+
intent,
|
|
46
|
+
metadata: compressed
|
|
47
|
+
};
|
|
48
|
+
console.log(`\n Transmission payload:`, {
|
|
49
|
+
intentSize: JSON.stringify(intent).length,
|
|
50
|
+
metadataSize: JSON.stringify(compressed).length,
|
|
51
|
+
total: JSON.stringify(transmissionPayload).length
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Step 5: On receive, decompress
|
|
55
|
+
const received = await decompressIntentMetadata(compressed);
|
|
56
|
+
console.log(`\nDecompressed metadata:`, received);
|
|
57
|
+
console.log(' Verification: Matches original:', JSON.stringify(received) === JSON.stringify(metadata));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Example 2: Smart Transport Selection
|
|
62
|
+
*
|
|
63
|
+
* Automatically choose WiFi Direct if available, fallback to BLE
|
|
64
|
+
*/
|
|
65
|
+
export async function exampleSmartTransportFlow() {
|
|
66
|
+
console.log('\n Example 2: Smart Transport Selection\n');
|
|
67
|
+
const selector = new SmartTransportSelector();
|
|
68
|
+
const selectedTransport = await selector.selectTransport();
|
|
69
|
+
console.log(`Selected transport: ${selectedTransport}`);
|
|
70
|
+
if (selectedTransport === 'wifi') {
|
|
71
|
+
console.log(' Benefits:');
|
|
72
|
+
console.log(' • MTU: 1200 bytes (vs BLE 480 bytes)');
|
|
73
|
+
console.log(' • Speed: ~2.5x faster');
|
|
74
|
+
console.log(' • Ideal for bulk transfers');
|
|
75
|
+
} else {
|
|
76
|
+
console.log(' Benefits:');
|
|
77
|
+
console.log(' • Widely compatible');
|
|
78
|
+
console.log(' • Lower power than WiFi');
|
|
79
|
+
console.log(' • Sufficient for most intents');
|
|
80
|
+
}
|
|
81
|
+
const shouldUseWiFi = await selector.shouldUseWiFi(false);
|
|
82
|
+
console.log(`\nWiFi Direct recommended: ${shouldUseWiFi}`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Example 3: Relay Incentive Tracking
|
|
87
|
+
*
|
|
88
|
+
* Calculate and track rewards for devices relaying transactions
|
|
89
|
+
*/
|
|
90
|
+
export async function exampleRelayIncentiveFlow() {
|
|
91
|
+
console.log('\nExample 3: Relay Incentive Tracking\n');
|
|
92
|
+
|
|
93
|
+
// Simulate relay path: Device A → Device B → Device C → Gateway
|
|
94
|
+
const relayPath = ['deviceB_address_here', 'deviceC_address_here', 'gateway_address_here'];
|
|
95
|
+
|
|
96
|
+
// Step 1: Calculate rewards for each relay (in production)
|
|
97
|
+
// const rewards = calculateRelayRewards(relayPath);
|
|
98
|
+
const rewardPerRelay = 1000; // 1000 lamports per relay per hop
|
|
99
|
+
|
|
100
|
+
console.log('Relay reward structure:');
|
|
101
|
+
for (let i = 0; i < relayPath.length; i++) {
|
|
102
|
+
console.log(` ${relayPath[i]}: ${rewardPerRelay * (relayPath.length - i)} lamports`);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Step 2: Track which relays contributed
|
|
106
|
+
const totalReward = relayPath.length * rewardPerRelay;
|
|
107
|
+
console.log(`\nTotal rewards distributed: ${totalReward} lamports`);
|
|
108
|
+
|
|
109
|
+
// Step 3: In production, after successful settlement:
|
|
110
|
+
// await trackRelayContribution('intent-id', relayPath, connection, feePayer);
|
|
111
|
+
console.log('\nRelay contributions tracked for future settlement');
|
|
112
|
+
console.log(' (In production, rewards would be transferred onchain)');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Example 4: Mesh Clustering & Smart Routing
|
|
117
|
+
*
|
|
118
|
+
* Use signal strength to form clusters and find optimal paths
|
|
119
|
+
*/
|
|
120
|
+
export async function exampleMeshClusteringFlow() {
|
|
121
|
+
console.log('\nExample 4: Mesh Clustering & Smart Routing\n');
|
|
122
|
+
|
|
123
|
+
// Step 1: Detect clusters (in production, would use actual device discovery)
|
|
124
|
+
console.log('Detected 3 clusters:');
|
|
125
|
+
console.log(' Cluster A: 5 devices');
|
|
126
|
+
console.log(' Cluster B: 3 devices');
|
|
127
|
+
console.log(' Cluster C: 2 devices');
|
|
128
|
+
|
|
129
|
+
// Step 2: Find optimal route to target
|
|
130
|
+
const targetDeviceId = 'target-device-123';
|
|
131
|
+
console.log(`\nOptimal route to ${targetDeviceId}:`);
|
|
132
|
+
console.log(' Multi-hop path (2 hops):');
|
|
133
|
+
console.log(' 0: relay-1');
|
|
134
|
+
console.log(' 1: target-device-123');
|
|
135
|
+
|
|
136
|
+
// Step 3: Track relay performance (in production)
|
|
137
|
+
console.log('\nRelay performance tracking:');
|
|
138
|
+
console.log(' Relay 1 score: 95/100 (fast & reliable)');
|
|
139
|
+
console.log(' Relay 2 score: 72/100 (slower)');
|
|
140
|
+
console.log(' Relay 3 score: 45/100 (failed recently)');
|
|
141
|
+
|
|
142
|
+
// Step 4: Select best relay
|
|
143
|
+
console.log('\nBest relay selected: relay-1');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Example 5: Complete Production Flow
|
|
148
|
+
*
|
|
149
|
+
* Integrates compression + WiFi transport + incentives + optimal routing
|
|
150
|
+
*/
|
|
151
|
+
export async function exampleCompleteEnhancedFlow(sender, recipient, amount, connection, _feePayer) {
|
|
152
|
+
console.log('\n Example 5: Complete Enhanced TOSS Flow\n');
|
|
153
|
+
|
|
154
|
+
// Phase 1: Creation (offline)
|
|
155
|
+
console.log('Phase 1: Intent Creation (Offline)\n');
|
|
156
|
+
const intent = await createIntent(sender, recipient, amount, connection);
|
|
157
|
+
console.log(' Intent created and signed');
|
|
158
|
+
const metadata = {
|
|
159
|
+
memo: 'Complete flow demonstration',
|
|
160
|
+
timestamp: new Date().toISOString()
|
|
161
|
+
};
|
|
162
|
+
const {
|
|
163
|
+
compressed,
|
|
164
|
+
savings
|
|
165
|
+
} = await compressIntentMetadata(metadata);
|
|
166
|
+
console.log(` Metadata compressed (${savings}% savings)`);
|
|
167
|
+
|
|
168
|
+
// Phase 2: Transport (intelligent selection)
|
|
169
|
+
console.log('\nPhase 2: Intelligent Transport Selection\n');
|
|
170
|
+
const selector = new SmartTransportSelector();
|
|
171
|
+
const transport = await selector.selectTransport();
|
|
172
|
+
console.log(` Selected transport: ${transport.toUpperCase()}`);
|
|
173
|
+
|
|
174
|
+
// Phase 3: Routing (cluster-based optimization)
|
|
175
|
+
console.log('\nPhase 3: Optimal Path Finding\n');
|
|
176
|
+
const clusterCount = 3;
|
|
177
|
+
console.log(` Found ${clusterCount} network clusters`);
|
|
178
|
+
const relayPath = ['relay-1', 'relay-2'];
|
|
179
|
+
console.log(` Route: ${relayPath.length} hops to destination`);
|
|
180
|
+
|
|
181
|
+
// Phase 4: Incentive tracking
|
|
182
|
+
console.log('\nPhase 4: Relay Incentive Setup\n');
|
|
183
|
+
const rewardPerRelay = 1000;
|
|
184
|
+
const totalReward = relayPath.length * rewardPerRelay;
|
|
185
|
+
console.log(` Reward pool: ${totalReward} lamports for ${relayPath.length} relays`);
|
|
186
|
+
|
|
187
|
+
// Phase 5: Transmission
|
|
188
|
+
console.log('\nPhase 5: Intent Transmission\n');
|
|
189
|
+
const payloadSize = JSON.stringify({
|
|
190
|
+
intent,
|
|
191
|
+
metadata: compressed
|
|
192
|
+
}).length;
|
|
193
|
+
console.log(` Payload size: ${payloadSize} bytes`);
|
|
194
|
+
console.log(` MTU: ${transport === 'wifi' ? '1200' : '480'} bytes`);
|
|
195
|
+
const fragments = Math.ceil(payloadSize / (transport === 'wifi' ? 1200 : 480));
|
|
196
|
+
console.log(` Fragments: ${fragments} (optimized)`);
|
|
197
|
+
|
|
198
|
+
// Phase 6: Settlement (when online)
|
|
199
|
+
console.log('\nPhase 6: Settlement (When Online)\n');
|
|
200
|
+
console.log(' Intent ready for settlement');
|
|
201
|
+
console.log(' • Signature verified: YES');
|
|
202
|
+
console.log(' • Metadata decompressed: YES');
|
|
203
|
+
console.log(' • Relayers identified: YES');
|
|
204
|
+
console.log(` • Rewards tracked: ${totalReward} lamports`);
|
|
205
|
+
console.log('\n Complete flow ready for production deployment');
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Run all examples
|
|
210
|
+
*/
|
|
211
|
+
export async function runAllExamples(connection) {
|
|
212
|
+
console.log('═══════════════════════════════════════════════════════════');
|
|
213
|
+
console.log(' TOSS Enhanced Features - Complete Examples');
|
|
214
|
+
console.log('═══════════════════════════════════════════════════════════');
|
|
215
|
+
|
|
216
|
+
// Create test keypairs
|
|
217
|
+
const sender = Keypair.generate();
|
|
218
|
+
const recipient = Keypair.generate().publicKey;
|
|
219
|
+
const feePayer = Keypair.generate().publicKey;
|
|
220
|
+
try {
|
|
221
|
+
await exampleCompressedIntentFlow(sender, recipient, 1000000, connection);
|
|
222
|
+
await exampleSmartTransportFlow();
|
|
223
|
+
await exampleRelayIncentiveFlow();
|
|
224
|
+
await exampleMeshClusteringFlow();
|
|
225
|
+
await exampleCompleteEnhancedFlow(sender, recipient, 1000000, connection, feePayer);
|
|
226
|
+
console.log('\n═══════════════════════════════════════════════════════════');
|
|
227
|
+
console.log(' All examples completed successfully!');
|
|
228
|
+
console.log('═══════════════════════════════════════════════════════════\n');
|
|
229
|
+
} catch (error) {
|
|
230
|
+
console.error(' Example failed:', error);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=enhancedFeaturesFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Keypair","createIntent","SmartTransportSelector","compressIntentMetadata","decompressIntentMetadata","exampleCompressedIntentFlow","sender","recipient","amount","connection","console","log","intent","metadata","memo","recipientName","transactionType","compressed","savings","JSON","stringify","length","transmissionPayload","intentSize","metadataSize","total","received","exampleSmartTransportFlow","selector","selectedTransport","selectTransport","shouldUseWiFi","exampleRelayIncentiveFlow","relayPath","rewardPerRelay","i","totalReward","exampleMeshClusteringFlow","targetDeviceId","exampleCompleteEnhancedFlow","_feePayer","timestamp","Date","toISOString","transport","toUpperCase","clusterCount","payloadSize","fragments","Math","ceil","runAllExamples","generate","publicKey","feePayer","error"],"sourceRoot":"../../../src","sources":["examples/enhancedFeaturesFlow.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,7 +25,7 @@ import { TossError } from "../errors.js";
|
|
|
25
25
|
* Intent creation validates user features and transaction limits
|
|
26
26
|
*/
|
|
27
27
|
export async function exampleInitiateUserPayment(senderUser, senderKeypair, recipientUser, amountLamports, connection) {
|
|
28
|
-
console.log('
|
|
28
|
+
console.log(' Creating offline payment intent between TOSS users...');
|
|
29
29
|
console.log(` From: @${senderUser.username}`);
|
|
30
30
|
console.log(` To: @${recipientUser.username}`);
|
|
31
31
|
|
|
@@ -33,13 +33,13 @@ export async function exampleInitiateUserPayment(senderUser, senderKeypair, reci
|
|
|
33
33
|
const intent = await createUserIntent(senderUser, senderKeypair, recipientUser, amountLamports, connection, {
|
|
34
34
|
expiresIn: 24 * 60 * 60 // Valid for 24 hours
|
|
35
35
|
});
|
|
36
|
-
console.log(
|
|
36
|
+
console.log(` Intent created: ${intent.id}`);
|
|
37
37
|
console.log(` Amount: ${intent.amount} lamports`);
|
|
38
38
|
console.log(` Expires at: ${new Date(intent.expiry * 1000).toISOString()}`);
|
|
39
39
|
|
|
40
40
|
// Store locally
|
|
41
41
|
await secureStoreIntent(intent);
|
|
42
|
-
console.log('
|
|
42
|
+
console.log(' Intent stored securely locally\n');
|
|
43
43
|
return intent;
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -50,13 +50,13 @@ export async function exampleInitiateUserPayment(senderUser, senderKeypair, reci
|
|
|
50
50
|
* while offline. The intent is created, signed, and stored locally.
|
|
51
51
|
*/
|
|
52
52
|
export async function exampleInitiateOfflinePayment(senderKeypair, recipientAddress, amountLamports, connection) {
|
|
53
|
-
console.log('
|
|
53
|
+
console.log(' Creating offline payment intent...');
|
|
54
54
|
|
|
55
55
|
// Create the intent (this is done offline, no network needed)
|
|
56
56
|
const intent = await createIntent(senderKeypair, new PublicKey(recipientAddress), amountLamports, connection, {
|
|
57
57
|
expiresIn: 24 * 60 * 60 // Valid for 24 hours
|
|
58
58
|
});
|
|
59
|
-
console.log(
|
|
59
|
+
console.log(` Intent created: ${intent.id}`);
|
|
60
60
|
console.log(` From: ${intent.from}`);
|
|
61
61
|
console.log(` To: ${intent.to}`);
|
|
62
62
|
console.log(` Amount: ${intent.amount} lamports`);
|
|
@@ -64,7 +64,7 @@ export async function exampleInitiateOfflinePayment(senderKeypair, recipientAddr
|
|
|
64
64
|
|
|
65
65
|
// Store locally
|
|
66
66
|
await secureStoreIntent(intent);
|
|
67
|
-
console.log('
|
|
67
|
+
console.log(' Intent stored securely locally\n');
|
|
68
68
|
return intent;
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -75,18 +75,18 @@ export async function exampleInitiateOfflinePayment(senderKeypair, recipientAddr
|
|
|
75
75
|
* This demonstrates the intent exchange protocol.
|
|
76
76
|
*/
|
|
77
77
|
export async function exampleExchangeIntentWithPeer(intent, localDeviceId, peerDeviceId, peerDevice) {
|
|
78
|
-
console.log('
|
|
78
|
+
console.log(' Initiating intent exchange with peer...');
|
|
79
79
|
console.log(` Local Device: ${localDeviceId}`);
|
|
80
80
|
console.log(` Peer Device: ${peerDeviceId}`);
|
|
81
81
|
|
|
82
82
|
// Register the peer
|
|
83
83
|
deviceDiscovery.registerPeer(peerDevice);
|
|
84
|
-
console.log(
|
|
84
|
+
console.log(` Peer registered: ${peerDevice.id}`);
|
|
85
85
|
|
|
86
86
|
// Create an exchange request
|
|
87
87
|
const exchangeRequest = intentExchange.createRequest(intent, localDeviceId, undefined, 5 * 60 // 5 minute expiry
|
|
88
88
|
);
|
|
89
|
-
console.log(
|
|
89
|
+
console.log(` Exchange request created: ${exchangeRequest.requestId}`);
|
|
90
90
|
console.log(` Intent ID: ${intent.id}`);
|
|
91
91
|
console.log(` Amount: ${intent.amount} lamports`);
|
|
92
92
|
|
|
@@ -95,7 +95,7 @@ export async function exampleExchangeIntentWithPeer(intent, localDeviceId, peerD
|
|
|
95
95
|
|
|
96
96
|
// Simulate peer accepting the request
|
|
97
97
|
const response = intentExchange.createResponse(exchangeRequest.requestId, peerDeviceId, 'accepted', undefined, [intent.id]);
|
|
98
|
-
console.log(`\n
|
|
98
|
+
console.log(`\n Peer accepted exchange`);
|
|
99
99
|
console.log(` Status: ${response.status}`);
|
|
100
100
|
console.log(` Acknowledged intents: ${response.acknowledgedIntentIds?.join(', ')}\n`);
|
|
101
101
|
|
|
@@ -109,7 +109,7 @@ export async function exampleExchangeIntentWithPeer(intent, localDeviceId, peerD
|
|
|
109
109
|
* multiple offline devices create intents for the same action.
|
|
110
110
|
*/
|
|
111
111
|
export async function exampleMultiDeviceConflict(connection) {
|
|
112
|
-
console.log('
|
|
112
|
+
console.log(' Simulating multi-device conflict scenario...\n');
|
|
113
113
|
|
|
114
114
|
// Create keypair for "Device A"
|
|
115
115
|
const senderKeypair = Keypair.generate();
|
|
@@ -129,7 +129,7 @@ export async function exampleMultiDeviceConflict(connection) {
|
|
|
129
129
|
recipient, amount, connection, {
|
|
130
130
|
expiresIn: 3600
|
|
131
131
|
});
|
|
132
|
-
console.log('
|
|
132
|
+
console.log(' Conflict Detected!');
|
|
133
133
|
console.log(` Device A created intent: ${intentA.id} at ${intentA.createdAt}`);
|
|
134
134
|
console.log(` Device B created intent: ${intentB.id} at ${intentB.createdAt}`);
|
|
135
135
|
console.log(` Both intents: Same sender, same recipient, same amount\n`);
|
|
@@ -137,7 +137,7 @@ export async function exampleMultiDeviceConflict(connection) {
|
|
|
137
137
|
// Use the conflict resolver
|
|
138
138
|
const conflictingIntents = [intentA, intentB];
|
|
139
139
|
const resolution = MultiDeviceConflictResolver.resolveConflicts(conflictingIntents);
|
|
140
|
-
console.log('
|
|
140
|
+
console.log('️ Deterministic Resolution Applied:');
|
|
141
141
|
console.log(` Winner: ${resolution.winner.id}`);
|
|
142
142
|
console.log(` Winner nonce: ${resolution.winner.nonce}`);
|
|
143
143
|
console.log(` Winner timestamp: ${new Date(resolution.winner.createdAt * 1000).toISOString()}`);
|
|
@@ -152,7 +152,7 @@ export async function exampleMultiDeviceConflict(connection) {
|
|
|
152
152
|
*/
|
|
153
153
|
export async function exampleCompleteOfflineFlow(senderKeypair, recipientAddress, amountLamports, connection) {
|
|
154
154
|
console.log('='.repeat(60));
|
|
155
|
-
console.log('
|
|
155
|
+
console.log(' TOSS Complete Offline Payment Flow');
|
|
156
156
|
console.log('='.repeat(60) + '\n');
|
|
157
157
|
try {
|
|
158
158
|
// Step 1: Create intent offline
|
|
@@ -176,18 +176,18 @@ export async function exampleCompleteOfflineFlow(senderKeypair, recipientAddress
|
|
|
176
176
|
// Step 3: Device reconnects and initiates synchronisation
|
|
177
177
|
console.log('STEP 3: Synchronisation with Solana');
|
|
178
178
|
console.log('-'.repeat(60));
|
|
179
|
-
console.log('
|
|
180
|
-
console.log('
|
|
179
|
+
console.log(' Device reconnected to network...');
|
|
180
|
+
console.log(' Initiating sync with Solana blockchain...\n');
|
|
181
181
|
|
|
182
182
|
// Check sync status
|
|
183
183
|
const syncResult = await syncToChain(connection);
|
|
184
|
-
console.log('
|
|
184
|
+
console.log(' Sync Results:');
|
|
185
185
|
console.log(` Successful settlements: ${syncResult.successfulSettlements.length}`);
|
|
186
186
|
console.log(` Failed settlements: ${syncResult.failedSettlements.length}`);
|
|
187
187
|
console.log(` Detected conflicts: ${syncResult.detectedConflicts.length}`);
|
|
188
188
|
console.log(` Overall complete: ${syncResult.isComplete}\n`);
|
|
189
189
|
if (syncResult.successfulSettlements.length > 0) {
|
|
190
|
-
console.log('
|
|
190
|
+
console.log(' Successful Settlements:');
|
|
191
191
|
for (const settlement of syncResult.successfulSettlements) {
|
|
192
192
|
console.log(` Intent ${settlement.intentId}`);
|
|
193
193
|
console.log(` Signature: ${settlement.signature}`);
|
|
@@ -196,7 +196,7 @@ export async function exampleCompleteOfflineFlow(senderKeypair, recipientAddress
|
|
|
196
196
|
console.log();
|
|
197
197
|
}
|
|
198
198
|
if (syncResult.failedSettlements.length > 0) {
|
|
199
|
-
console.log('
|
|
199
|
+
console.log(' Failed Settlements:');
|
|
200
200
|
for (const settlement of syncResult.failedSettlements) {
|
|
201
201
|
console.log(` Intent ${settlement.intentId}`);
|
|
202
202
|
console.log(` Reason: ${settlement.error}`);
|
|
@@ -204,7 +204,7 @@ export async function exampleCompleteOfflineFlow(senderKeypair, recipientAddress
|
|
|
204
204
|
console.log();
|
|
205
205
|
}
|
|
206
206
|
if (syncResult.detectedConflicts.length > 0) {
|
|
207
|
-
console.log('
|
|
207
|
+
console.log('️ Detected Conflicts:');
|
|
208
208
|
for (const conflict of syncResult.detectedConflicts) {
|
|
209
209
|
console.log(` Intent ${conflict.intentId}: ${conflict.conflict}`);
|
|
210
210
|
}
|
|
@@ -217,14 +217,14 @@ export async function exampleCompleteOfflineFlow(senderKeypair, recipientAddress
|
|
|
217
217
|
const allIntents = await getAllSecureIntents();
|
|
218
218
|
const settledIntents = allIntents.filter(i => i.status === 'settled');
|
|
219
219
|
const failedIntents = allIntents.filter(i => i.status === 'failed');
|
|
220
|
-
console.log(
|
|
220
|
+
console.log(` Intent Storage:
|
|
221
221
|
Total intents: ${allIntents.length}
|
|
222
222
|
Settled: ${settledIntents.length}
|
|
223
223
|
Failed: ${failedIntents.length}\n`);
|
|
224
|
-
console.log('
|
|
224
|
+
console.log(' Flow complete!\n');
|
|
225
225
|
console.log('='.repeat(60));
|
|
226
226
|
} catch (error) {
|
|
227
|
-
console.error('
|
|
227
|
+
console.error(' Error during offline flow:', error);
|
|
228
228
|
if (error instanceof TossError) {
|
|
229
229
|
console.error(` Error code: ${error.code}`);
|
|
230
230
|
}
|
|
@@ -238,21 +238,21 @@ export async function exampleCompleteOfflineFlow(senderKeypair, recipientAddress
|
|
|
238
238
|
* before accepting and storing them.
|
|
239
239
|
*/
|
|
240
240
|
export async function exampleVerifyIntentBeforeAcceptance(intent, connection) {
|
|
241
|
-
console.log('
|
|
241
|
+
console.log(' Verifying intent signature...');
|
|
242
242
|
try {
|
|
243
243
|
const isValid = await verifyIntent(intent, connection);
|
|
244
244
|
if (isValid) {
|
|
245
|
-
console.log('
|
|
245
|
+
console.log(' Intent signature is valid');
|
|
246
246
|
console.log(` From: ${intent.from}`);
|
|
247
247
|
console.log(` To: ${intent.to}`);
|
|
248
248
|
console.log(` Amount: ${intent.amount} lamports`);
|
|
249
249
|
return true;
|
|
250
250
|
} else {
|
|
251
|
-
console.log('
|
|
251
|
+
console.log(' Intent signature is invalid');
|
|
252
252
|
return false;
|
|
253
253
|
}
|
|
254
254
|
} catch (error) {
|
|
255
|
-
console.error('
|
|
255
|
+
console.error(' Verification failed:', error);
|
|
256
256
|
return false;
|
|
257
257
|
}
|
|
258
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Keypair","PublicKey","createUserIntent","createIntent","verifyIntent","secureStoreIntent","getAllSecureIntents","deviceDiscovery","intentExchange","MultiDeviceConflictResolver","syncToChain","TossError","exampleInitiateUserPayment","senderUser","senderKeypair","recipientUser","amountLamports","connection","console","log","username","intent","expiresIn","id","amount","Date","expiry","toISOString","exampleInitiateOfflinePayment","recipientAddress","from","to","exampleExchangeIntentWithPeer","localDeviceId","peerDeviceId","peerDevice","registerPeer","exchangeRequest","createRequest","undefined","requestId","response","createResponse","status","acknowledgedIntentIds","join","exampleMultiDeviceConflict","generate","recipient","intentA","Promise","resolve","setTimeout","intentB","createdAt","conflictingIntents","resolution","resolveConflicts","winner","nonce","losers","map","i","exampleCompleteOfflineFlow","repeat","lastSeen","now","transport","signalStrength","trustScore","syncResult","successfulSettlements","length","failedSettlements","detectedConflicts","isComplete","settlement","intentId","signature","timestamp","error","conflict","allIntents","settledIntents","filter","failedIntents","code","exampleVerifyIntentBeforeAcceptance","isValid"],"sourceRoot":"../../../src","sources":["examples/offlinePaymentFlow.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAqBA,OAAO,EAAEC,SAAS,QAAQ,iBAAiB;AAChE,SACEC,gBAAgB,EAChBC,YAAY,EAEZC,YAAY,QACP,cAAW;AAElB,SACEC,iBAAiB,EACjBC,mBAAmB,QACd,6BAA0B;AACjC,SACEC,eAAe,EACfC,cAAc,EACdC,2BAA2B,QAEtB,iBAAc;AACrB,SAASC,WAAW,QAAQ,YAAS;AACrC,SAASC,SAAS,QAAQ,cAAW;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,0BAA0BA,CAC9CC,UAAoB,EACpBC,aAAsB,EACtBC,aAAuB,EACvBC,cAAsB,EACtBC,UAAsB,EACC;EACvBC,OAAO,CAACC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"names":["Keypair","PublicKey","createUserIntent","createIntent","verifyIntent","secureStoreIntent","getAllSecureIntents","deviceDiscovery","intentExchange","MultiDeviceConflictResolver","syncToChain","TossError","exampleInitiateUserPayment","senderUser","senderKeypair","recipientUser","amountLamports","connection","console","log","username","intent","expiresIn","id","amount","Date","expiry","toISOString","exampleInitiateOfflinePayment","recipientAddress","from","to","exampleExchangeIntentWithPeer","localDeviceId","peerDeviceId","peerDevice","registerPeer","exchangeRequest","createRequest","undefined","requestId","response","createResponse","status","acknowledgedIntentIds","join","exampleMultiDeviceConflict","generate","recipient","intentA","Promise","resolve","setTimeout","intentB","createdAt","conflictingIntents","resolution","resolveConflicts","winner","nonce","losers","map","i","exampleCompleteOfflineFlow","repeat","lastSeen","now","transport","signalStrength","trustScore","syncResult","successfulSettlements","length","failedSettlements","detectedConflicts","isComplete","settlement","intentId","signature","timestamp","error","conflict","allIntents","settledIntents","filter","failedIntents","code","exampleVerifyIntentBeforeAcceptance","isValid"],"sourceRoot":"../../../src","sources":["examples/offlinePaymentFlow.ts"],"mappings":"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","ignoreList":[]}
|