toss-expo-sdk 1.0.1 → 1.0.4
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 +68 -65
- package/lib/module/client/NonceAccountManager.js +2 -2
- package/lib/module/client/NonceAccountManager.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/index.js +13 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/qr.js +2 -2
- package/lib/module/reconciliation.js +4 -4
- package/lib/module/reconciliation.js.map +1 -1
- package/lib/module/services/authService.js +3 -3
- package/lib/module/services/authService.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/examples/enhancedFeaturesFlow.d.ts +45 -0
- package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -1
- package/lib/typescript/src/index.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/client/NonceAccountManager.ts +2 -2
- package/src/examples/enhancedFeaturesFlow.ts +272 -0
- package/src/examples/offlinePaymentFlow.ts +27 -27
- package/src/index.tsx +26 -1
- package/src/qr.tsx +2 -2
- package/src/reconciliation.ts +4 -4
- package/src/services/authService.ts +3 -3
- package/src/utils/compression.ts +247 -0
- package/src/wifi.ts +401 -0
package/README.md
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
# TOSS Expo SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<img width="1080" height="360" alt="image" src="https://github.com/user-attachments/assets/7e05de78-ef08-4dd6-a736-1ecf6b377c7f" />
|
|
4
|
+
|
|
5
|
+
**TOSS (The Offline Solana Stack)** — The official React Native SDK implementing the complete TOSS Technical Paper specification — a protocol-correct approach to building offline-first Solana applications without compromising security or finality guarantees.
|
|
4
6
|
|
|
5
7
|
[](https://www.npmjs.com/package/toss-expo-sdk)
|
|
6
8
|
[](LICENSE)
|
|
7
9
|
|
|
10
|
+
> **"Solana should work anytime, anywhere. Even offline."** — TOSS Whitepaper
|
|
11
|
+
|
|
8
12
|
**Solana, extended.** TOSS introduces deterministic separation between transaction intent creation and onchain settlement, enabling applications to function seamlessly in disconnected environments while preserving Solana's security model.
|
|
9
13
|
|
|
10
|
-
##
|
|
14
|
+
## 📚 Documentation
|
|
15
|
+
|
|
16
|
+
- **[TOSS Paper Compliance](./TOSS_PAPER_COMPLIANCE.md)** - Complete mapping of implementation to TOSS Technical Paper sections
|
|
17
|
+
- **[TOSS Whitepaper](https://github.com/zyppprotocol/toss-expo-sdk#toss-whitepaper)** - Mission, vision, and use cases
|
|
18
|
+
- **[TOSS Technical Paper](https://github.com/zyppprotocol/toss-expo-sdk#toss-technical-paper)** - Protocol specification and architecture
|
|
19
|
+
|
|
20
|
+
This SDK is a **protocol-correct implementation** of the TOSS specification, ensuring all security guarantees, design principles, and architectural requirements are met.
|
|
21
|
+
|
|
22
|
+
## Features
|
|
11
23
|
|
|
12
24
|
### Core Capabilities
|
|
13
25
|
|
|
@@ -20,12 +32,12 @@
|
|
|
20
32
|
|
|
21
33
|
### Security
|
|
22
34
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
35
|
+
- Biometric-protected nonce accounts (mandatory)
|
|
36
|
+
- Hardware-backed secure key storage (Secure Enclave / Keymaster)
|
|
37
|
+
- Automatic replay protection with durable nonces
|
|
38
|
+
- Noise Protocol encryption for BLE transmission
|
|
39
|
+
- CRC32 checksums for fragment verification
|
|
40
|
+
- Non-custodial by design - users maintain control of their keys
|
|
29
41
|
|
|
30
42
|
### Developer Experience
|
|
31
43
|
|
|
@@ -35,7 +47,7 @@
|
|
|
35
47
|
- Built-in retry mechanisms with exponential backoff
|
|
36
48
|
- Automatic MTU negotiation and fragmentation
|
|
37
49
|
|
|
38
|
-
##
|
|
50
|
+
## Installation
|
|
39
51
|
|
|
40
52
|
```bash
|
|
41
53
|
# Using npm
|
|
@@ -47,7 +59,7 @@ yarn add toss-expo-sdk
|
|
|
47
59
|
|
|
48
60
|
All dependencies (Solana Web3.js, Arcium, Noise Protocol, etc.) are automatically included.
|
|
49
61
|
|
|
50
|
-
##
|
|
62
|
+
## System Model & Design Principles
|
|
51
63
|
|
|
52
64
|
**TOSS operates under these assumptions:**
|
|
53
65
|
|
|
@@ -59,16 +71,16 @@ All dependencies (Solana Web3.js, Arcium, Noise Protocol, etc.) are automaticall
|
|
|
59
71
|
|
|
60
72
|
**TOSS maintains these invariants:**
|
|
61
73
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
74
|
+
- Onchain state is canonical
|
|
75
|
+
- Offline execution never mutates global state
|
|
76
|
+
- All offline artifacts are cryptographically verifiable onchain
|
|
77
|
+
- No trusted relayers or delegated signing
|
|
78
|
+
- Failure is deterministic and safe
|
|
79
|
+
- Privacy is preserved prior to settlement
|
|
68
80
|
|
|
69
81
|
**Violation of any invariant invalidates the offline model.**
|
|
70
82
|
|
|
71
|
-
##
|
|
83
|
+
## Quick Start
|
|
72
84
|
|
|
73
85
|
### Initialize the Client
|
|
74
86
|
|
|
@@ -244,7 +256,7 @@ TOSS follows a deterministic 4-phase model (Section 4.3 of Technical Paper):
|
|
|
244
256
|
|
|
245
257
|
---
|
|
246
258
|
|
|
247
|
-
##
|
|
259
|
+
## Local State Management & Reconciliation
|
|
248
260
|
|
|
249
261
|
TOSS maintains an **encrypted, append-only local intent store** that enables offline operation while waiting for network connectivity.
|
|
250
262
|
|
|
@@ -293,17 +305,17 @@ console.log(`Conflicts detected: ${syncResult.detectedConflicts.length}`);
|
|
|
293
305
|
|
|
294
306
|
**Reconciliation Steps:**
|
|
295
307
|
|
|
296
|
-
1.
|
|
297
|
-
2.
|
|
298
|
-
3.
|
|
299
|
-
4.
|
|
300
|
-
5.
|
|
308
|
+
1. Retrieve all pending intents from local storage
|
|
309
|
+
2. Submit to Solana
|
|
310
|
+
3. Verify signatures and state constraints onchain
|
|
311
|
+
4. Deterministically reject invalid or conflicting intents
|
|
312
|
+
5. Update local state with finality
|
|
301
313
|
|
|
302
314
|
**No offline state is treated as final.** Solana's verdict is authoritative.
|
|
303
315
|
|
|
304
316
|
---
|
|
305
317
|
|
|
306
|
-
##
|
|
318
|
+
## Confidential Execution via Arcium (Optional)
|
|
307
319
|
|
|
308
320
|
TOSS integrates **Arcium** for confidential computation in pre-settlement stages, protecting sensitive transaction parameters before onchain execution.
|
|
309
321
|
|
|
@@ -409,28 +421,28 @@ console.log(`Sent ${result.sentFragments}/${result.totalFragments} fragments`);
|
|
|
409
421
|
|
|
410
422
|
**Biometric Protection**
|
|
411
423
|
|
|
412
|
-
-
|
|
413
|
-
-
|
|
414
|
-
-
|
|
424
|
+
- All nonce operations require biometric authentication
|
|
425
|
+
- Private keys stored in device's secure enclave (iOS Secure Enclave / Android Keymaster)
|
|
426
|
+
- User cannot export or backup private keys
|
|
415
427
|
|
|
416
428
|
**Replay Protection**
|
|
417
429
|
|
|
418
|
-
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
430
|
+
- Each transaction uses a unique, incrementing nonce from the blockchain
|
|
431
|
+
- Nonce values automatically validated before transaction execution
|
|
432
|
+
- Expired nonces automatically detected and rejected
|
|
421
433
|
|
|
422
434
|
**BLE Transmission**
|
|
423
435
|
|
|
424
|
-
-
|
|
425
|
-
-
|
|
426
|
-
-
|
|
427
|
-
-
|
|
436
|
+
- Automatic MTU-aware message fragmentation
|
|
437
|
+
- CRC32 checksum verification for each fragment
|
|
438
|
+
- Automatic retry with exponential backoff
|
|
439
|
+
- Noise Protocol encryption support
|
|
428
440
|
|
|
429
441
|
**Storage & Renewal**
|
|
430
442
|
|
|
431
|
-
-
|
|
432
|
-
-
|
|
433
|
-
-
|
|
443
|
+
- Nonce accounts cached efficiently in memory
|
|
444
|
+
- Automatic renewal from blockchain
|
|
445
|
+
- Graceful expiry handling with status tracking
|
|
434
446
|
|
|
435
447
|
### Detailed Guide
|
|
436
448
|
|
|
@@ -449,7 +461,7 @@ Topics covered:
|
|
|
449
461
|
|
|
450
462
|
---
|
|
451
463
|
|
|
452
|
-
##
|
|
464
|
+
## Security
|
|
453
465
|
|
|
454
466
|
### TOSS Security Guarantees
|
|
455
467
|
|
|
@@ -548,7 +560,7 @@ All errors have the following structure:
|
|
|
548
560
|
}
|
|
549
561
|
```
|
|
550
562
|
|
|
551
|
-
##
|
|
563
|
+
## Synchronisation and Settlement
|
|
552
564
|
|
|
553
565
|
TOSS implements deterministic synchronisation (Section 9 of the technical paper) when devices reconnect to the network.
|
|
554
566
|
|
|
@@ -633,31 +645,31 @@ const activePeers = discovery.getActivePeers();
|
|
|
633
645
|
console.log(`${activePeers.length} active peers nearby`);
|
|
634
646
|
```
|
|
635
647
|
|
|
636
|
-
##
|
|
648
|
+
## ️ Understanding TOSS Limitations
|
|
637
649
|
|
|
638
650
|
TOSS is designed to fail safely. The following limitations are **by design** and fundamental to any offline system:
|
|
639
651
|
|
|
640
652
|
### What TOSS Does NOT Do
|
|
641
653
|
|
|
642
|
-
|
|
654
|
+
**Does not resolve offline double-spend**
|
|
643
655
|
|
|
644
656
|
- Multiple devices can create conflicting intents offline
|
|
645
657
|
- Conflicts are resolved deterministically onchain (first valid intent wins)
|
|
646
658
|
- You must verify transaction details before committing to offline transfer
|
|
647
659
|
|
|
648
|
-
|
|
660
|
+
**Does not guarantee settlement success**
|
|
649
661
|
|
|
650
662
|
- Intents may fail onchain due to insufficient balance, nonce violations, or expired intents
|
|
651
663
|
- Settlement is deterministic but failures can occur
|
|
652
664
|
- Always check sync results for failed intents
|
|
653
665
|
|
|
654
|
-
|
|
666
|
+
**Does not replace Solana consensus**
|
|
655
667
|
|
|
656
668
|
- TOSS extends operational boundaries but does not modify Solana's execution semantics
|
|
657
669
|
- All final state transitions occur exclusively on Solana
|
|
658
670
|
- Transaction validity is determined by Solana's runtime, not TOSS
|
|
659
671
|
|
|
660
|
-
|
|
672
|
+
**Does not eliminate finality dependency on network**
|
|
661
673
|
|
|
662
674
|
- Finality still requires network connectivity to Solana
|
|
663
675
|
- Offline operation defers settlement, not finality
|
|
@@ -667,35 +679,26 @@ TOSS is designed to fail safely. The following limitations are **by design** and
|
|
|
667
679
|
|
|
668
680
|
TOSS **guarantees**:
|
|
669
681
|
|
|
670
|
-
-
|
|
671
|
-
-
|
|
672
|
-
-
|
|
673
|
-
-
|
|
674
|
-
-
|
|
682
|
+
- Signatures cannot be forged (Ed25519 cryptography)
|
|
683
|
+
- Offline state never mutates global state (local-only storage)
|
|
684
|
+
- All artifacts are verifiable onchain (deterministic settlement)
|
|
685
|
+
- Conflicts resolve deterministically (based on nonce and timestamp)
|
|
686
|
+
- Pre-settlement confidentiality via Arcium (optional)
|
|
675
687
|
|
|
676
688
|
But TOSS **does not guarantee**:
|
|
677
689
|
|
|
678
|
-
-
|
|
679
|
-
-
|
|
680
|
-
-
|
|
690
|
+
- That your intent will successfully settle (dependent on onchain state)
|
|
691
|
+
- Prevention of offline double-spend (conflicts detected onchain)
|
|
692
|
+
- Immediate finality (requires network connectivity)
|
|
681
693
|
|
|
682
694
|
**The distinction:** TOSS guarantees **protocol correctness**, not **settlement success**. These are different requirements.
|
|
683
695
|
|
|
684
696
|
---
|
|
685
697
|
|
|
686
|
-
##
|
|
698
|
+
## Network Support
|
|
687
699
|
|
|
688
700
|
| Network | Status | RPC Endpoint |
|
|
689
701
|
| ------- | ------- | ----------------------------------- |
|
|
690
|
-
| Devnet |
|
|
691
|
-
| Testnet |
|
|
692
|
-
| Mainnet |
|
|
693
|
-
|
|
694
|
-
## 📚 Complete Documentation
|
|
695
|
-
|
|
696
|
-
For comprehensive information, see:
|
|
697
|
-
|
|
698
|
-
- [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md) - Complete documentation guide
|
|
699
|
-
- [TOSS_PAPER_IMPLEMENTATION_VERIFICATION.md](./TOSS_PAPER_IMPLEMENTATION_VERIFICATION.md) - TOSS paper compliance
|
|
700
|
-
- [PAPER_VS_IMPLEMENTATION_AUDIT.md](./PAPER_VS_IMPLEMENTATION_AUDIT.md) - Detailed technical audit
|
|
701
|
-
- [USER_SECURITY_AND_KEY_MANAGEMENT.md](./USER_SECURITY_AND_KEY_MANAGEMENT.md) - Security model and biometric protection
|
|
702
|
+
| Devnet | Live | https://api.devnet.solana.com |
|
|
703
|
+
| Testnet | Live | https://api.testnet.solana.com |
|
|
704
|
+
| Mainnet | Live | https://api.mainnet-beta.solana.com |
|
|
@@ -23,7 +23,7 @@ export class NonceAccountManager {
|
|
|
23
23
|
persistToSecureStorage = true
|
|
24
24
|
} = options;
|
|
25
25
|
if (requireBiometric !== true) {
|
|
26
|
-
throw new Error('
|
|
26
|
+
throw new Error(' SECURITY ERROR: Biometric protection is mandatory for nonce accounts');
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// Generate nonce account keypair
|
|
@@ -283,7 +283,7 @@ export class NonceAccountManager {
|
|
|
283
283
|
transaction.feePayer = payer;
|
|
284
284
|
transaction.recentBlockhash = blockhash;
|
|
285
285
|
transaction.lastValidBlockHeight = lastValidBlockHeight;
|
|
286
|
-
console.log('
|
|
286
|
+
console.log(' Durable nonce account initialized: ', nonceAccountKeypair.publicKey.toBase58());
|
|
287
287
|
return nonceAccountKeypair.publicKey.toBase58();
|
|
288
288
|
} catch (error) {
|
|
289
289
|
throw new Error(`Failed to initialize nonce account: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PublicKey","Keypair","SystemProgram","NONCE_ACCOUNT_LENGTH","NonceAccount","SecureStore","NonceAccountManager","cache","Map","constructor","connection","createNonceAccount","user","nonceAuthorityKeypair","owner","options","requireBiometric","persistToSecureStorage","Error","nonceAccountKeypair","generate","nonceAccountAddress","publicKey","minRentLamports","getMinimumBalanceForRentExemption","blockhash","getLatestBlockhash","nonceAccountInfo","address","toBase58","authorizedSigner","currentNonce","lastUsedNonce","isBiometricProtected","createdAt","Math","floor","Date","now","lastModified","isStoredSecurely","storeNonceAccountSecurely","userId","cacheNonceAccount","storageKey","secureData","info","keypair","secretKey","Array","from","storedAt","encryptionMethod","biometricRequired","setItemAsync","JSON","stringify","getNonceAccountSecure","authenticator","stored","getItemAsync","parse","error","console","cacheEntry","accountInfo","nonces","expiresAt","set","getCachedNonceAccount","cached","get","delete","prepareOfflineTransaction","_instructions","tossFeatures","nonceAccountEnabled","nonceAccount","offlineTransaction","id","random","toString","substr","nonce","transaction","status","metadata","security","nonceAccountRequiresBiometric","renewNonceAccount","_nonceAccountAddress","getAccountInfo","warn","fromAccountData","data","updatedInfo","revokeNonceAccount","cleanupExpiredCache","entry","entries","isNonceAccountValid","maxAge","age","initializeDurableNonceAccountOnchain","authority","payer","fundInstruction","transfer","fromPubkey","toPubkey","lamports","nonceInitInstruction","nonceInitialize","noncePubkey","authorizedPubkey","lastValidBlockHeight","Transaction","add","feePayer","recentBlockhash","log","message","String","consumeNonceAccount","nonceAuthority","nonceAdvance","validateNonceAccountOnchain","_expectedAuthority","valid","SYSTEM_PROGRAM_ID","equals","length","getCurrentNonceFromChain","nonceData","slice","readBigUInt64LE"],"sourceRoot":"../../../src","sources":["client/NonceAccountManager.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PublicKey","Keypair","SystemProgram","NONCE_ACCOUNT_LENGTH","NonceAccount","SecureStore","NonceAccountManager","cache","Map","constructor","connection","createNonceAccount","user","nonceAuthorityKeypair","owner","options","requireBiometric","persistToSecureStorage","Error","nonceAccountKeypair","generate","nonceAccountAddress","publicKey","minRentLamports","getMinimumBalanceForRentExemption","blockhash","getLatestBlockhash","nonceAccountInfo","address","toBase58","authorizedSigner","currentNonce","lastUsedNonce","isBiometricProtected","createdAt","Math","floor","Date","now","lastModified","isStoredSecurely","storeNonceAccountSecurely","userId","cacheNonceAccount","storageKey","secureData","info","keypair","secretKey","Array","from","storedAt","encryptionMethod","biometricRequired","setItemAsync","JSON","stringify","getNonceAccountSecure","authenticator","stored","getItemAsync","parse","error","console","cacheEntry","accountInfo","nonces","expiresAt","set","getCachedNonceAccount","cached","get","delete","prepareOfflineTransaction","_instructions","tossFeatures","nonceAccountEnabled","nonceAccount","offlineTransaction","id","random","toString","substr","nonce","transaction","status","metadata","security","nonceAccountRequiresBiometric","renewNonceAccount","_nonceAccountAddress","getAccountInfo","warn","fromAccountData","data","updatedInfo","revokeNonceAccount","cleanupExpiredCache","entry","entries","isNonceAccountValid","maxAge","age","initializeDurableNonceAccountOnchain","authority","payer","fundInstruction","transfer","fromPubkey","toPubkey","lamports","nonceInitInstruction","nonceInitialize","noncePubkey","authorizedPubkey","lastValidBlockHeight","Transaction","add","feePayer","recentBlockhash","log","message","String","consumeNonceAccount","nonceAuthority","nonceAdvance","validateNonceAccountOnchain","_expectedAuthority","valid","SYSTEM_PROGRAM_ID","equals","length","getCurrentNonceFromChain","nonceData","slice","readBigUInt64LE"],"sourceRoot":"../../../src","sources":["client/NonceAccountManager.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":[]}
|