Matt Hess
ea09516981
● Add proper error handling - eliminate silent failures
...
- Add ParseError class with context (offset, field, expected/actual)
- transaction.js: parseRctSigPrunable throws instead of returning null
- address.js: createAddress, toIntegratedAddress, toStandardAddress throw on invalid input
- base58.js: decode functions throw descriptive errors
- scanning.js: validate inputs and throw on failures
- carrot-scanning.js: validate required fields
- signature.js: remove debug console.log and testEd25519
- Update tests to expect throws for error cases
2026-01-24 20:56:24 +00:00
Matt Hess
56ab4ec3fe
Convert debug-full-carrot-scan.js and verify-real-carrot.js to use
...
environment variables instead of hardcoded SPEND_SECRET values.
Required env vars: SPEND_SECRET, TX_HASH
Optional: DAEMON_URL (defaults to seed01.salvium.io:19081)
2026-01-22 03:24:00 +00:00
Matt Hess
aa716113f5
Add STAKE transaction creation and fix CLSAG verification
...
STAKE transactions:
- Add buildStakeTransaction() for creating stake transactions
- Add createStakeTransaction() wallet API for staking SAL/SAL1
- Extend serializeTxPrefix() with Salvium-specific fields (txType,
amount_burnt, asset types, return address, protocol_tx_data)
- Support STAKE_LOCK_PERIOD from network config (21600 mainnet, 20 testnet)
CLSAG fixes:
- Fix challenge hash to include full ring data matching C++ implementation
- Update both signing and verification to use consistent hash format
2026-01-22 03:10:40 +00:00
Matt Hess
e751b6569a
● Add comprehensive test coverage for wallet modules
...
- Add tests for wallet-store.js (40 tests: MemoryStorage, WalletOutput, WalletTransaction)
- Add tests for wallet-sync.js (25 tests: sync engine, events, progress tracking)
- Add tests for query.js (45 tests: OutputQuery, TxQuery, TransferQuery, presets)
- Add tests for connection-manager.js (29 tests: ConnectionInfo, failover, events)
- Add tests for offline.js (29 tests: unsigned/signed tx, key images, output export)
- Add tests for multisig.js (39 tests: KEX, signers, accounts, tx sets)
- Add tests for persistent-wallet.js (27 tests: lifecycle, balance, outputs, sync)
- Update test/all.js to include new test suites
- Rename SYNC_UNLOCK_BLOCKS to avoid export conflict with wallet.js
2026-01-18 23:43:58 +00:00
Matt Hess
1066ca2110
Add full wallet implementation with storage, sync, and transaction support
...
New Features:
- Wallet class with multi-account and subaddress support
- PersistentWallet with blockchain sync and storage (Memory/IndexedDB)
- Connection manager for daemon/wallet RPC failover
- Query system for filtering outputs and transactions
- Offline transaction signing (cold wallet support)
- Multisig wallet support (N-of-M threshold signing)
Daemon RPC:
- Salvium-specific: getSupplyInfo(), getYieldInfo()
- Mining control: startMining(), stopMining(), miningStatus()
- Bandwidth/peer management, admin controls
Transaction:
- Full transaction building with UTXO selection
- Transaction parsing and summarization
- Fee estimation with priority levels
- Decoy selection with gamma distribution
Tests:
- Wallet class tests (accounts, subaddresses, recovery)
- Transaction builder and parser tests
- UTXO selection tests
2026-01-18 21:39:05 +00:00
Matt Hess
7730b6993f
● Add AssemblyScript WASM VM for RandomX full mode
...
- Create assembly/vm.ts with full RandomX VM implementation
- 256 instructions, 2048 iterations per hash
- Native u64/f64 operations in WebAssembly
- Full mode dataset lookups (2GB pre-computed)
- Update miner to use WASM VM for full mode
- mining-worker-asm.js uses pre-compiled WASM
- ~32 H/s per thread (4x faster than light mode)
- 8 threads achieves ~260 H/s
- Clean up redundant code
- Remove mining-worker-full.js (old JIT approach)
- Consolidate 'asm' mode into 'full' mode
2026-01-18 01:16:10 +00:00
Matt Hess
714721874e
Add RandomX proof-of-work implementation with WASM acceleration
...
- Full RandomX implementation (light mode + full mode)
- WASM-accelerated Argon2d cache init (37x faster than pure JS)
- WASM-accelerated SuperscalarHash with SIMD support
- Parallel dataset generation using worker threads (8 workers)
- Light mode: ~4s init, Full mode: ~8min init
- Mining utilities (difficulty calculation, block construction)
- Progress callbacks for long-running operations
Performance targets 2023+ platforms (WASM SIMD: Chrome 91+,
Firefox 89+, Safari 16.4+, Node 16.4+)
2026-01-15 19:19:27 +00:00
Matt Hess
2c128eb1c0
Add Bulletproofs+ range proof verification (pure JavaScript)
...
- Implement BP+ verification using @noble/curves for Ed25519 ops
- MSM 256 points in ~420ms - mobile-friendly, no WASM needed
- Add verifyBulletproofPlus, verifyBulletproofPlusBatch, verifyRangeProof
- Add generator initialization with caching (Gi, Hi points)
- 24 new tests including performance benchmarks
- Update exports in index.js and package.json
- Bump version to 0.3.0
2026-01-15 02:09:51 +00:00
Matt Hess
3658a0c33f
New Features:
...
- generateSeed() - Cryptographically secure random seed generation
- deriveKeys() - CryptoNote key derivation (spend/view secret & public keys)
- deriveCarrotKeys() - CARROT key derivation (all 6 CARROT keys)
- Blake2b tests with RFC 7693 test vectors
- CryptoNote key derivation tests
- CARROT key derivation tests
- Updated exports in index.js
2026-01-14 23:59:27 +00:00
Matt Hess
5685d44ac0
bulk updates, sub addresses, integrated address, language support, and mnemonic
2026-01-05 22:31:03 +00:00
Matt Hess
52e12c94d0
README update
2026-01-05 03:14:37 +00:00
Matt Hess
df3855c31d
initial commit of salvium-js
2026-01-05 03:13:07 +00:00