aboutsummaryrefslogtreecommitdiffstats
path: root/public/js/report.coffee
Commit message (Expand)AuthorAgeFilesLines
* Fix rounding issues and switch to mBTCAdam Soltys2013-12-091-0/+1
* Use five decimal points for Bitcoin amounts on the Transactions Reports pageRiku Raisanen2013-12-011-2/+2
* Minor fixesAdam Soltys2012-12-111-3/+5
* Filter bogus transactionsAdam Soltys2012-12-101-2/+2
* Check for transactions existenceAdam Soltys2012-12-101-3/+21
* Code re-orgAdam Soltys2012-12-061-1/+1
* Filter dates on loadAdam Soltys2012-11-291-12/+13
* Default report dates to the past weekAdam Soltys2012-11-251-0/+2
* Implement transactions date filterAdam Soltys2012-11-221-22/+40
* Number formatAdam Soltys2012-11-211-2/+2
* Number formatAdam Soltys2012-11-201-2/+2
* Number formatAdam Soltys2012-11-201-2/+2
* Making progress on transactions reportAdam Soltys2012-11-121-13/+16
* Use coffeescriptAdam Soltys2012-11-071-0/+29
s="w"> $ } from 'bun'; import { p2wpkh } from '@scure/btc-signer/payment'; import * as btc from '@scure/btc-signer'; import { secp256k1 } from '@noble/curves/secp256k1'; import { sha256 } from '@noble/hashes/sha2'; import { bytesToHex } from '@noble/hashes/utils'; const REGTEST = { ...btc.TEST_NETWORK, bech32: 'bcrt' }; const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); const bcli = (...a) => $`docker exec bc bitcoin-cli -regtest -rpcuser=admin1 -rpcpassword=123 ${a}`.text(); const pub = secp256k1.getPublicKey(secp256k1.utils.randomPrivateKey(), true); const pay = p2wpkh(pub, REGTEST); const sh = sha256(pay.script).reverse(); // electrum scripthash (reversed) const shHex = bytesToHex(sh); console.log('address', pay.address, '\nscripthash', shHex); const ws = new WebSocket('ws://localhost:50003'); let gotInitial = false, gotPush = false; ws.onmessage = (ev) => { for (const line of String(ev.data).split('\n')) { if (!line.trim()) continue; let m; try { m = JSON.parse(line); } catch { continue; } if (m.id === 2) { gotInitial = true; console.log('subscribe ok (initial status:', m.result, ')'); } if (m.method === 'blockchain.scripthash.subscribe') { gotPush = true; console.log('PUSH notification received:', JSON.stringify(m.params)); } } }; await new Promise((res, rej) => { ws.onopen = res; ws.onerror = rej; }); ws.send(JSON.stringify({ id: 1, method: 'server.version', params: ['test', '1.4'] }) + '\n'); ws.send(JSON.stringify({ id: 2, method: 'blockchain.scripthash.subscribe', params: [shHex] }) + '\n'); await sleep(1500); if (!gotInitial) { console.log('FAIL — no subscribe response'); process.exit(1); } console.log('funding the address…'); await bcli('-rpcwallet=coinos', 'sendtoaddress', pay.address, '0.005'); await bcli('generatetoaddress', '1', (await bcli('-rpcwallet=coinos', 'getnewaddress')).trim()); for (let i = 0; i < 20 && !gotPush; i++) await sleep(500); console.log(gotPush ? '\nPASS — realtime push delivered over the WS bridge' : '\nFAIL — no push within timeout'); process.exit(gotPush ? 0 : 1);