Matt Hess
6eeadbe8ed
● Add transaction validation module and complete sweepDust
...
- Create src/validation.js with complete Salvium validation rules:
- TX type/version validation (validateTxTypeAndVersion)
- Asset type validation (SAL, SAL1, BURN rules)
- Output validation (types, sorting, overflow checks)
- RCT type validation by hard fork version
- Input validation (ring size 16, key image sorting)
- Fee validation with dynamic fee calculation
- Miner/protocol TX validation
- Yield payout calculation (calculateYieldPayout)
- Comprehensive validateTransactionFull() combining all checks
- Implement sweepDust in wallet.js with selective UTXO spending
- Add 58 tests in test/validation.test.js
- Export validation module from index.js
2026-01-26 12:24:44 +00:00
Matt Hess
43e1ebbef8
● Add oracle/pricing system implementation
...
- Create src/oracle.js with complete pricing record support
- Data structures: PricingRecord, AssetData, SupplyData (matching C++ pricing_record.h)
- DSA/ECDSA signature verification with mainnet/testnet public keys
- Conversion rate calculation with rounding (getConversionRate, getConvertedAmount)
- Slippage calculation (1/32 = 3.125%) with refund logic
- Pricing record validation (HF gates, timestamps, signatures)
- JSON serialization/parsing for oracle responses
- HTTP client for fetching pricing records from oracle server
- Add 66 unit tests in test/oracle.test.js
- Export oracle module from index.js
2026-01-26 11:45:08 +00:00
Matt Hess
4ba87a02d8
Add AUDIT transaction support for compliance audits
...
- Add buildAuditTransaction() in transaction.js
- Add createAuditTransaction() in wallet.js
- Change-is-zero requirement: all coins locked
- Coins return via protocol_tx after maturity
- 14 unit tests
- Only valid during AUDIT hard fork periods (HF v6, v8)
2026-01-25 20:50:41 +00:00
Matt Hess
6e6743269e
Add CONVERT transaction support for SAL<->VSD conversion
...
- Add buildConvertTransaction() in transaction.js
- Add createConvertTransaction() in wallet.js
- Oracle-priced conversion with 3.125% slippage
- SAL <-> VSD only (other pairs rejected)
- 15 unit tests + integration test
- Note: Gated at HF v255, not yet enabled on mainnet
2026-01-25 13:11:31 +00:00
Matt Hess
bc9412b5da
● Add BURN transaction support and security hardening
...
- Add buildBurnTransaction() and createBurnTransaction()
- destination_asset_type = "BURN" for burned coins
- 9 unit tests + integration test for BURN transactions
- Remove hardcoded test mnemonics (use env vars)
- Add pre-commit hook to detect potential secrets
- Add testnet testing plan (test/TESTNET_PLAN.md)
- Update .gitignore for secret files
2026-01-25 00:13:39 +00:00
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