diff --git a/.gitignore b/.gitignore index 7112b99..d29ee2b 100644 --- a/.gitignore +++ b/.gitignore @@ -39,4 +39,4 @@ testem.log .DS_Store Thumbs.db -db/mempool.json +db/cache.json diff --git a/src/api.ts b/src/api.ts index b5f5060..6e4bea0 100644 --- a/src/api.ts +++ b/src/api.ts @@ -58,7 +58,7 @@ class Api { if (findblock) { return findblock.id; } else { - return ''; + return mockGenerator.blocks[0].id; } } diff --git a/src/index.ts b/src/index.ts index e17be97..cfed753 100644 --- a/src/index.ts +++ b/src/index.ts @@ -68,6 +68,7 @@ class Server { .get('/stop-auto', (req: Request, res: Response) => { mockGenerator.setAuto(false); res.json('auto stopped'); }) .get('/rbf', (req: Request, res: Response) => { res.send(mockGenerator.addRbfTransaction()); }) + .get('/delete-random', (req: Request, res: Response) => { res.send(mockGenerator.deleteRandomTx()); }) .get('/address/:address', (req: Request, res: Response) => res.json(api.getAddress(req.params.address))) .get('/address/:address/txs', (req: Request, res: Response) => res.json(api.getAddressTransactions(req.params.address))) .get('/address-prefix/:prefix', (req: Request, res: Response) => res.json(api.getAddressses(req.params.prefix))) diff --git a/src/mock-generator.ts b/src/mock-generator.ts index 873fc77..e20d06c 100644 --- a/src/mock-generator.ts +++ b/src/mock-generator.ts @@ -28,6 +28,10 @@ class MockGenerator { this.addBisqTransaction(); } + deleteRandomTx() { + this.mempoolTransactions.pop(); + } + addBisqTransaction() { this.addTransactionToMempool( {'txid':'9ea4949cd3accdb4317e507937198ab5bc0bc07040079a9c8a2956fdbb054ed4','version':1,'locktime':0,'vin':[{'txid':'0c0ad832044d4fb6fa3210bbc478430fbf712386c1e644dd6aa3fec1611e3148','vout':0,'prevout':{'scriptpubkey':'76a91483882a62fdb3d6640cc665f80a3d511a5bcf0b3188ac','scriptpubkey_asm':'OP_DUP OP_HASH160 OP_PUSHBYTES_20 83882a62fdb3d6640cc665f80a3d511a5bcf0b31 OP_EQUALVERIFY OP_CHECKSIG','scriptpubkey_type':'p2pkh','scriptpubkey_address':'1CzUe5cy84JgJG7jQqjich6P9qXhUtZCX1','value':620},'scriptsig':'47304402203f327ef19b4853f6331d4fd73f2ffff687c17030955f9950b0d6360a1c0c142102206e913f87d2db80a8ff960ca1eecd595a03d042207e3e8fd149d15b651584ae8101210291096355cf995d7c961c50f2b319498b9513c2a51586dd7a2425c0084bbebef2','scriptsig_asm':'OP_PUSHBYTES_71 304402203f327ef19b4853f6331d4fd73f2ffff687c17030955f9950b0d6360a1c0c142102206e913f87d2db80a8ff960ca1eecd595a03d042207e3e8fd149d15b651584ae8101 OP_PUSHBYTES_33 0291096355cf995d7c961c50f2b319498b9513c2a51586dd7a2425c0084bbebef2','is_coinbase':false,'sequence':4294967295},{'txid':'0401cafaee7684b7b5ff119377a96096b07c25e872ed5d1d841c44da3618b861','vout':0,'prevout':{'scriptpubkey':'76a91453df36e60de2636fd331fd901c6581b99afc9cf188ac','scriptpubkey_asm':'OP_DUP OP_HASH160 OP_PUSHBYTES_20 53df36e60de2636fd331fd901c6581b99afc9cf1 OP_EQUALVERIFY OP_CHECKSIG','scriptpubkey_type':'p2pkh','scriptpubkey_address':'18eUV8kcv3BA7fghsSZfjTesRGi5e4dG8Q','value':9763},'scriptsig':'483045022100c7c87237eb817d8239ca81d5d7f61cb50af7601f91e17367c317c977ee3d44860220751292858e2061825df647c62a022fe9c29fc1ccb8c5c8edf3abb05de0d27fe50121023ae2ad208bdcccf6dcded15dde5c25361f9b24fe49e21a1bc0e0c43d83ae9aff','scriptsig_asm':'OP_PUSHBYTES_72 3045022100c7c87237eb817d8239ca81d5d7f61cb50af7601f91e17367c317c977ee3d44860220751292858e2061825df647c62a022fe9c29fc1ccb8c5c8edf3abb05de0d27fe501 OP_PUSHBYTES_33 023ae2ad208bdcccf6dcded15dde5c25361f9b24fe49e21a1bc0e0c43d83ae9aff','is_coinbase':false,'sequence':4294967295},{'txid':'d1aa28bdc2aa23721d3cd752096e5d63b4a7e97b1108cad2a22ef6fa5e119594','vout':0,'prevout':{'scriptpubkey':'76a914e278a3943077f29a9d1e708d482cc247726b466088ac','scriptpubkey_asm':'OP_DUP OP_HASH160 OP_PUSHBYTES_20 e278a3943077f29a9d1e708d482cc247726b4660 OP_EQUALVERIFY OP_CHECKSIG','scriptpubkey_type':'p2pkh','scriptpubkey_address':'1MeUEVpjtUbvQhkCAEa4wUSAVmiKXZdtpZ','value':10500000},'scriptsig':'463043021f569532a51e772c887f43fb4708f7d1172614e053e01005d9d0d6d1849ec4b102201fa0b5a2a25092fe07cf728bafbff0fd0de0dd64ca332f80043bc84f556ed50b0121032f7fb9837b4af2669381f2837637d9553d61815fa8c94f509707c6ad8407a0de','scriptsig_asm':'OP_PUSHBYTES_70 3043021f569532a51e772c887f43fb4708f7d1172614e053e01005d9d0d6d1849ec4b102201fa0b5a2a25092fe07cf728bafbff0fd0de0dd64ca332f80043bc84f556ed50b01 OP_PUSHBYTES_33 032f7fb9837b4af2669381f2837637d9553d61815fa8c94f509707c6ad8407a0de','is_coinbase':false,'sequence':4294967295}],'vout':[{'scriptpubkey':'76a914d26402eddc4e3e4e056806db84d0c1d0aa64e4b788ac','scriptpubkey_asm':'OP_DUP OP_HASH160 OP_PUSHBYTES_20 d26402eddc4e3e4e056806db84d0c1d0aa64e4b7 OP_EQUALVERIFY OP_CHECKSIG','scriptpubkey_type':'p2pkh','scriptpubkey_address':'1LBSiCfqExVi4guv269zXAB4PpCjDJxa1j','value':10325},{'scriptpubkey':'76a9146edab495aa676a00212c1ee641a7820cd77cc1a088ac','scriptpubkey_asm':'OP_DUP OP_HASH160 OP_PUSHBYTES_20 6edab495aa676a00212c1ee641a7820cd77cc1a0 OP_EQUALVERIFY OP_CHECKSIG','scriptpubkey_type':'p2pkh','scriptpubkey_address':'1B79L28kgaiuytndJziEN6sDr5C7ag4XQx','value':1500000},{'scriptpubkey':'76a914c9b89b5f2cb9f71cc75500dff840e497834d129688ac','scriptpubkey_asm':'OP_DUP OP_HASH160 OP_PUSHBYTES_20 c9b89b5f2cb9f71cc75500dff840e497834d1296 OP_EQUALVERIFY OP_CHECKSIG','scriptpubkey_type':'p2pkh','scriptpubkey_address':'1KPbyGkqjmrS3gn5DW7LvG1ie5t2NYRhLk','value':8995958}],'size':553,'weight':2212,'fee':4100,'status':{'confirmed':false}} @@ -153,9 +157,10 @@ class MockGenerator { randomTx = JSON.parse(JSON.stringify(randomTx)); randomTx.size = 10000; randomTx.weight = 40000; + randomTx['vsize'] = 10000; // @ts-ignore - randomTx['_feePerVsize'] = randomTx.feePerVsize * 4; - randomTx.fee = randomTx.fee * 80; + randomTx.fee = this.getRandomNumberBetween(1000, 100000) * 80; + randomTx['_feePerVsize'] = randomTx.fee / 10000; randomTx.txid = this.getRandomTxHash(); console.log('Creating transaction', randomTx.txid); delete randomTx['firstSeen']; @@ -237,8 +242,7 @@ class MockGenerator { } private loadRandomTransactions(): void { - const transactionObjects = JSON.parse(fs.readFileSync('db/mempool.json', 'utf8')).mempool; - this.randomTransactions = Object.values(transactionObjects); + this.randomTransactions = JSON.parse(fs.readFileSync('db/cache.json', 'utf8')).mempoolArray; } private generateCoinbaseTransaction(block: Block): Transaction {