smartledger-sdk
Version:
A comprehensive blockchain and cryptographic operations SDK for JavaScript
91 lines (73 loc) • 3.4 kB
JavaScript
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');