UNPKG

smartledger-sdk

Version:

A comprehensive blockchain and cryptographic operations SDK for JavaScript

91 lines (73 loc) 3.4 kB
import SmartLedger from '../src/index.js'; // Create a new instance of SmartLedger const ledger = new SmartLedger(); console.log('SmartLedger Demo\n'); // Key Management Demo console.log('1. Key Management Demo'); console.log('---------------------'); const mnemonic = SmartLedger.generateMnemonic(); console.log('Generated Mnemonic:', mnemonic); const keys = ledger.generateAllKeys(mnemonic); console.log('\nGenerated Keys for Different Purposes:'); console.log(JSON.stringify(keys, null, 2)); // Digital Signatures Demo console.log('\n2. Digital Signatures Demo'); console.log('------------------------'); const message = 'Hello, SmartLedger!'; const signature = SmartLedger.signWithMnemonic(message, mnemonic, 'document'); console.log('Message:', message); console.log('Signature:', signature); const publicKey = keys.find(k => k.type === 'document').publicKey; const isValid = SmartLedger.verifySignature(message, signature, publicKey); console.log('Signature Verification:', isValid ? '✓ Valid' : '✗ Invalid'); // Encryption Demo console.log('\n3. Encryption Demo'); console.log('----------------'); const data = { message: 'Secret message', timestamp: new Date().toISOString() }; const key = 'my-secret-key'; console.log('Original Data:', data); const encrypted = SmartLedger.encrypt(data, key); console.log('Encrypted:', encrypted); const decrypted = SmartLedger.decrypt(encrypted, key); console.log('Decrypted:', decrypted); // Secret Sharing Demo console.log('\n4. Secret Sharing Demo'); console.log('--------------------'); const secret = 'my super secret message'; console.log('Original Secret:', secret); // Split into 3 shares, need 2 to reconstruct const shares = ledger.splitSecret(secret, 3, 2); const hexShares = shares.map(share => ledger.shareToHex(share)); console.log('\nSplit into 3 shares (need 2 to reconstruct):'); hexShares.forEach((share, i) => console.log(`Share ${i + 1}:`, share)); // Reconstruct using first 2 shares const reconstructedShares = hexShares .slice(0, 2) .map(hexShare => ledger.hexToShare(hexShare)); const reconstructedSecret = ledger.combineShares(reconstructedShares); console.log('\nReconstructed Secret (using 2 shares):', reconstructedSecret); // Hashing Demo console.log('\n5. Hashing Demo'); console.log('--------------'); const hashData = 'Hello, SmartLedger!'; console.log('Original Data:', hashData); console.log('SHA256:', SmartLedger.hash256(hashData)); console.log('Double SHA256:', SmartLedger.doubleHash256(hashData)); console.log('HASH160:', SmartLedger.hash160(hashData)); // UUID Demo console.log('\n6. UUID Demo'); console.log('------------'); console.log('Random UUIDv4:', ledger.getUUID()); // UUIDv5 examples const resourceName = 'transaction/123'; const uuidv5 = SmartLedger.generateUUIDv5(resourceName); console.log('UUIDv5 for resource:', uuidv5); // Example with custom namespace const customNamespace = 'myapp.smartledger.com'; const customResource = 'user/456'; const uuidWithCustomNamespace = SmartLedger.generateUUIDv5(customResource, customNamespace); console.log('UUIDv5 with custom namespace:', uuidWithCustomNamespace); // Demonstrate UUIDv5 consistency const repeatedUuid1 = SmartLedger.generateUUIDv5(resourceName); const repeatedUuid2 = SmartLedger.generateUUIDv5(resourceName); console.log('UUIDv5 consistency check:', repeatedUuid1 === repeatedUuid2 ? '✓ Matching' : '✗ Not matching');