toss-expo-sdk 1.0.1 ā 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 +58 -56
- 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 +6 -0
- 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 +2 -0
- 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 +12 -0
- 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
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
**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
9
|
|
|
10
|
-
##
|
|
10
|
+
## Features
|
|
11
11
|
|
|
12
12
|
### Core Capabilities
|
|
13
13
|
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
|
|
21
21
|
### Security
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
23
|
+
- Biometric-protected nonce accounts (mandatory)
|
|
24
|
+
- Hardware-backed secure key storage (Secure Enclave / Keymaster)
|
|
25
|
+
- Automatic replay protection with durable nonces
|
|
26
|
+
- Noise Protocol encryption for BLE transmission
|
|
27
|
+
- CRC32 checksums for fragment verification
|
|
28
|
+
- Non-custodial by design - users maintain control of their keys
|
|
29
29
|
|
|
30
30
|
### Developer Experience
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
- Built-in retry mechanisms with exponential backoff
|
|
36
36
|
- Automatic MTU negotiation and fragmentation
|
|
37
37
|
|
|
38
|
-
##
|
|
38
|
+
## Installation
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
41
|
# Using npm
|
|
@@ -47,7 +47,7 @@ yarn add toss-expo-sdk
|
|
|
47
47
|
|
|
48
48
|
All dependencies (Solana Web3.js, Arcium, Noise Protocol, etc.) are automatically included.
|
|
49
49
|
|
|
50
|
-
##
|
|
50
|
+
## System Model & Design Principles
|
|
51
51
|
|
|
52
52
|
**TOSS operates under these assumptions:**
|
|
53
53
|
|
|
@@ -59,16 +59,16 @@ All dependencies (Solana Web3.js, Arcium, Noise Protocol, etc.) are automaticall
|
|
|
59
59
|
|
|
60
60
|
**TOSS maintains these invariants:**
|
|
61
61
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
62
|
+
- Onchain state is canonical
|
|
63
|
+
- Offline execution never mutates global state
|
|
64
|
+
- All offline artifacts are cryptographically verifiable onchain
|
|
65
|
+
- No trusted relayers or delegated signing
|
|
66
|
+
- Failure is deterministic and safe
|
|
67
|
+
- Privacy is preserved prior to settlement
|
|
68
68
|
|
|
69
69
|
**Violation of any invariant invalidates the offline model.**
|
|
70
70
|
|
|
71
|
-
##
|
|
71
|
+
## Quick Start
|
|
72
72
|
|
|
73
73
|
### Initialize the Client
|
|
74
74
|
|
|
@@ -244,7 +244,7 @@ TOSS follows a deterministic 4-phase model (Section 4.3 of Technical Paper):
|
|
|
244
244
|
|
|
245
245
|
---
|
|
246
246
|
|
|
247
|
-
##
|
|
247
|
+
## Local State Management & Reconciliation
|
|
248
248
|
|
|
249
249
|
TOSS maintains an **encrypted, append-only local intent store** that enables offline operation while waiting for network connectivity.
|
|
250
250
|
|
|
@@ -293,17 +293,17 @@ console.log(`Conflicts detected: ${syncResult.detectedConflicts.length}`);
|
|
|
293
293
|
|
|
294
294
|
**Reconciliation Steps:**
|
|
295
295
|
|
|
296
|
-
1.
|
|
297
|
-
2.
|
|
298
|
-
3.
|
|
299
|
-
4.
|
|
300
|
-
5.
|
|
296
|
+
1. Retrieve all pending intents from local storage
|
|
297
|
+
2. Submit to Solana
|
|
298
|
+
3. Verify signatures and state constraints onchain
|
|
299
|
+
4. Deterministically reject invalid or conflicting intents
|
|
300
|
+
5. Update local state with finality
|
|
301
301
|
|
|
302
302
|
**No offline state is treated as final.** Solana's verdict is authoritative.
|
|
303
303
|
|
|
304
304
|
---
|
|
305
305
|
|
|
306
|
-
##
|
|
306
|
+
## Confidential Execution via Arcium (Optional)
|
|
307
307
|
|
|
308
308
|
TOSS integrates **Arcium** for confidential computation in pre-settlement stages, protecting sensitive transaction parameters before onchain execution.
|
|
309
309
|
|
|
@@ -409,28 +409,28 @@ console.log(`Sent ${result.sentFragments}/${result.totalFragments} fragments`);
|
|
|
409
409
|
|
|
410
410
|
**Biometric Protection**
|
|
411
411
|
|
|
412
|
-
-
|
|
413
|
-
-
|
|
414
|
-
-
|
|
412
|
+
- All nonce operations require biometric authentication
|
|
413
|
+
- Private keys stored in device's secure enclave (iOS Secure Enclave / Android Keymaster)
|
|
414
|
+
- User cannot export or backup private keys
|
|
415
415
|
|
|
416
416
|
**Replay Protection**
|
|
417
417
|
|
|
418
|
-
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
418
|
+
- Each transaction uses a unique, incrementing nonce from the blockchain
|
|
419
|
+
- Nonce values automatically validated before transaction execution
|
|
420
|
+
- Expired nonces automatically detected and rejected
|
|
421
421
|
|
|
422
422
|
**BLE Transmission**
|
|
423
423
|
|
|
424
|
-
-
|
|
425
|
-
-
|
|
426
|
-
-
|
|
427
|
-
-
|
|
424
|
+
- Automatic MTU-aware message fragmentation
|
|
425
|
+
- CRC32 checksum verification for each fragment
|
|
426
|
+
- Automatic retry with exponential backoff
|
|
427
|
+
- Noise Protocol encryption support
|
|
428
428
|
|
|
429
429
|
**Storage & Renewal**
|
|
430
430
|
|
|
431
|
-
-
|
|
432
|
-
-
|
|
433
|
-
-
|
|
431
|
+
- Nonce accounts cached efficiently in memory
|
|
432
|
+
- Automatic renewal from blockchain
|
|
433
|
+
- Graceful expiry handling with status tracking
|
|
434
434
|
|
|
435
435
|
### Detailed Guide
|
|
436
436
|
|
|
@@ -449,7 +449,7 @@ Topics covered:
|
|
|
449
449
|
|
|
450
450
|
---
|
|
451
451
|
|
|
452
|
-
##
|
|
452
|
+
## Security
|
|
453
453
|
|
|
454
454
|
### TOSS Security Guarantees
|
|
455
455
|
|
|
@@ -548,7 +548,7 @@ All errors have the following structure:
|
|
|
548
548
|
}
|
|
549
549
|
```
|
|
550
550
|
|
|
551
|
-
##
|
|
551
|
+
## Synchronisation and Settlement
|
|
552
552
|
|
|
553
553
|
TOSS implements deterministic synchronisation (Section 9 of the technical paper) when devices reconnect to the network.
|
|
554
554
|
|
|
@@ -633,31 +633,31 @@ const activePeers = discovery.getActivePeers();
|
|
|
633
633
|
console.log(`${activePeers.length} active peers nearby`);
|
|
634
634
|
```
|
|
635
635
|
|
|
636
|
-
##
|
|
636
|
+
## ļø Understanding TOSS Limitations
|
|
637
637
|
|
|
638
638
|
TOSS is designed to fail safely. The following limitations are **by design** and fundamental to any offline system:
|
|
639
639
|
|
|
640
640
|
### What TOSS Does NOT Do
|
|
641
641
|
|
|
642
|
-
|
|
642
|
+
**Does not resolve offline double-spend**
|
|
643
643
|
|
|
644
644
|
- Multiple devices can create conflicting intents offline
|
|
645
645
|
- Conflicts are resolved deterministically onchain (first valid intent wins)
|
|
646
646
|
- You must verify transaction details before committing to offline transfer
|
|
647
647
|
|
|
648
|
-
|
|
648
|
+
**Does not guarantee settlement success**
|
|
649
649
|
|
|
650
650
|
- Intents may fail onchain due to insufficient balance, nonce violations, or expired intents
|
|
651
651
|
- Settlement is deterministic but failures can occur
|
|
652
652
|
- Always check sync results for failed intents
|
|
653
653
|
|
|
654
|
-
|
|
654
|
+
**Does not replace Solana consensus**
|
|
655
655
|
|
|
656
656
|
- TOSS extends operational boundaries but does not modify Solana's execution semantics
|
|
657
657
|
- All final state transitions occur exclusively on Solana
|
|
658
658
|
- Transaction validity is determined by Solana's runtime, not TOSS
|
|
659
659
|
|
|
660
|
-
|
|
660
|
+
**Does not eliminate finality dependency on network**
|
|
661
661
|
|
|
662
662
|
- Finality still requires network connectivity to Solana
|
|
663
663
|
- Offline operation defers settlement, not finality
|
|
@@ -667,31 +667,31 @@ TOSS is designed to fail safely. The following limitations are **by design** and
|
|
|
667
667
|
|
|
668
668
|
TOSS **guarantees**:
|
|
669
669
|
|
|
670
|
-
-
|
|
671
|
-
-
|
|
672
|
-
-
|
|
673
|
-
-
|
|
674
|
-
-
|
|
670
|
+
- Signatures cannot be forged (Ed25519 cryptography)
|
|
671
|
+
- Offline state never mutates global state (local-only storage)
|
|
672
|
+
- All artifacts are verifiable onchain (deterministic settlement)
|
|
673
|
+
- Conflicts resolve deterministically (based on nonce and timestamp)
|
|
674
|
+
- Pre-settlement confidentiality via Arcium (optional)
|
|
675
675
|
|
|
676
676
|
But TOSS **does not guarantee**:
|
|
677
677
|
|
|
678
|
-
-
|
|
679
|
-
-
|
|
680
|
-
-
|
|
678
|
+
- That your intent will successfully settle (dependent on onchain state)
|
|
679
|
+
- Prevention of offline double-spend (conflicts detected onchain)
|
|
680
|
+
- Immediate finality (requires network connectivity)
|
|
681
681
|
|
|
682
682
|
**The distinction:** TOSS guarantees **protocol correctness**, not **settlement success**. These are different requirements.
|
|
683
683
|
|
|
684
684
|
---
|
|
685
685
|
|
|
686
|
-
##
|
|
686
|
+
## Network Support
|
|
687
687
|
|
|
688
688
|
| Network | Status | RPC Endpoint |
|
|
689
689
|
| ------- | ------- | ----------------------------------- |
|
|
690
|
-
| Devnet |
|
|
691
|
-
| Testnet |
|
|
692
|
-
| Mainnet |
|
|
690
|
+
| Devnet | Live | https://api.devnet.solana.com |
|
|
691
|
+
| Testnet | Live | https://api.testnet.solana.com |
|
|
692
|
+
| Mainnet | Live | https://api.mainnet-beta.solana.com |
|
|
693
693
|
|
|
694
|
-
##
|
|
694
|
+
## Complete Documentation
|
|
695
695
|
|
|
696
696
|
For comprehensive information, see:
|
|
697
697
|
|
|
@@ -699,3 +699,5 @@ For comprehensive information, see:
|
|
|
699
699
|
- [TOSS_PAPER_IMPLEMENTATION_VERIFICATION.md](./TOSS_PAPER_IMPLEMENTATION_VERIFICATION.md) - TOSS paper compliance
|
|
700
700
|
- [PAPER_VS_IMPLEMENTATION_AUDIT.md](./PAPER_VS_IMPLEMENTATION_AUDIT.md) - Detailed technical audit
|
|
701
701
|
- [USER_SECURITY_AND_KEY_MANAGEMENT.md](./USER_SECURITY_AND_KEY_MANAGEMENT.md) - Security model and biometric protection
|
|
702
|
+
# toss-expo-sdk
|
|
703
|
+
# toss-expo-sdk
|
|
@@ -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":[]}
|