@tradelayerprotocol/tradelayer 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +13 -0
- package/.claude/skills/tl-algo/SKILL.md +255 -0
- package/.gitattributes +2 -0
- package/.github/workflows/publish.yaml +26 -0
- package/4mm.js +163 -0
- package/LICENSE +21 -0
- package/NPMSwapRefactor.zip +0 -0
- package/README.md +217 -0
- package/address.sh +26 -0
- package/algoAPI.js +581 -0
- package/analyzepsbt.js +92 -0
- package/apiEx.js +99 -0
- package/bb_hyperscalper.js +290 -0
- package/bbo_demo.js +111 -0
- package/buyer.js +622 -0
- package/client.js +50 -0
- package/createTxTest.js +26 -0
- package/createWallet.js +75 -0
- package/daytrader.js +531 -0
- package/decodeTest.js +69 -0
- package/fundingManager.js +144 -0
- package/index.js +4 -0
- package/listener.js +27 -0
- package/litecoreTxBuilder.js +1128 -0
- package/mmEx.js +356 -0
- package/networks.js +51 -0
- package/orderbook.js +200 -0
- package/package.json +34 -0
- package/perTradeQueue.js +36 -0
- package/projectsTLNPMTLNPM/package-lock.json +162 -0
- package/projectsTLNPMTLNPM/package.json +5 -0
- package/quick.js +32 -0
- package/quickFut.js +37 -0
- package/quickSell.js +37 -0
- package/relayerClient.js +117 -0
- package/run4mm.js +80 -0
- package/run_bbo_tracker.js +241 -0
- package/seller.js +443 -0
- package/session.js +45 -0
- package/setup-lin-ltc.sh +139 -0
- package/setup-lin.sh +203 -0
- package/setup-win-ltc.bat +108 -0
- package/setup-win.bat +167 -0
- package/spam_screamer_futures.js +222 -0
- package/tradelayer.js/.gitattributes +2 -0
- package/tradelayer.js/README.md +2 -0
- package/tradelayer.js/oldTests/activationTest.js +6 -0
- package/tradelayer.js/oldTests/base58.test.js +23 -0
- package/tradelayer.js/oldTests/base64Decode.test.js +16 -0
- package/tradelayer.js/oldTests/blocksRefactor.js +140 -0
- package/tradelayer.js/oldTests/checkVestBalance.js +25 -0
- package/tradelayer.js/oldTests/consensusHashProto.js +151 -0
- package/tradelayer.js/oldTests/contractOrderbook.js +243 -0
- package/tradelayer.js/oldTests/createPayload.js +0 -0
- package/tradelayer.js/oldTests/createTestnetAddr.js +43 -0
- package/tradelayer.js/oldTests/decode.js +205 -0
- package/tradelayer.js/oldTests/decodeTest.js +50 -0
- package/tradelayer.js/oldTests/displayTallyMap.js +19 -0
- package/tradelayer.js/oldTests/encodeDecode.js +340 -0
- package/tradelayer.js/oldTests/expressTest.js +29 -0
- package/tradelayer.js/oldTests/extractBlocksVanilla.js +214 -0
- package/tradelayer.js/oldTests/extractBlocksVanillaa.js +179 -0
- package/tradelayer.js/oldTests/extractPubkeyTest.js +60 -0
- package/tradelayer.js/oldTests/fillInputCacheProto.js +111 -0
- package/tradelayer.js/oldTests/getRawTxTest.js +22 -0
- package/tradelayer.js/oldTests/indexTest.js +26 -0
- package/tradelayer.js/oldTests/initTokensTest.js +32 -0
- package/tradelayer.js/oldTests/interfaceChild.js +129 -0
- package/tradelayer.js/oldTests/listenerChild.js +112 -0
- package/tradelayer.js/oldTests/opdecode.js +26 -0
- package/tradelayer.js/oldTests/options.js +79 -0
- package/tradelayer.js/oldTests/optxtest.js +116 -0
- package/tradelayer.js/oldTests/optxtest1.js +64 -0
- package/tradelayer.js/oldTests/oracle.test.js +32 -0
- package/tradelayer.js/oldTests/orderbook.test.js +36 -0
- package/tradelayer.js/oldTests/parsing.js +93 -0
- package/tradelayer.js/oldTests/payload.js +13 -0
- package/tradelayer.js/oldTests/persistenceUnitTest.js +23 -0
- package/tradelayer.js/oldTests/property.test.js +53 -0
- package/tradelayer.js/oldTests/propertyLevel.js +75 -0
- package/tradelayer.js/oldTests/propertyTest.js +32 -0
- package/tradelayer.js/oldTests/queryAddressTest.js +17 -0
- package/tradelayer.js/oldTests/salter.js +14 -0
- package/tradelayer.js/oldTests/tally.js +81 -0
- package/tradelayer.js/oldTests/tally.test.js +48 -0
- package/tradelayer.js/oldTests/tally2.js +124 -0
- package/tradelayer.js/oldTests/tally3.js +142 -0
- package/tradelayer.js/oldTests/tallyDiag.js +38 -0
- package/tradelayer.js/oldTests/testGetRaw.js +40 -0
- package/tradelayer.js/oldTests/testHexConvert.js +47 -0
- package/tradelayer.js/oldTests/testNewEncoding.js +96 -0
- package/tradelayer.js/oldTests/testNewEncoding2.js +113 -0
- package/tradelayer.js/oldTests/testNewEncoding3 +112 -0
- package/tradelayer.js/oldTests/testNewEncoding3.js +168 -0
- package/tradelayer.js/oldTests/testOPReturn.js +102 -0
- package/tradelayer.js/oldTests/testPayload.js +23 -0
- package/tradelayer.js/oldTests/testRaw.js +50 -0
- package/tradelayer.js/oldTests/testSendTooMuch.js +20 -0
- package/tradelayer.js/oldTests/testTxBuild +28 -0
- package/tradelayer.js/oldTests/testTxBuild.js +42 -0
- package/tradelayer.js/oldTests/tokenOrderbook.js +243 -0
- package/tradelayer.js/oldTests/txUtilsA.js +515 -0
- package/tradelayer.js/oldTests/validityUnitTest.js +53 -0
- package/tradelayer.js/oldTests/vaults.js +72 -0
- package/tradelayer.js/oldTests/volumeIndex.js +117 -0
- package/tradelayer.js/oldTests/volumeIndex2.js +88 -0
- package/tradelayer.js/output_base64.txt +1 -0
- package/tradelayer.js/package-lock.json +9967 -0
- package/tradelayer.js/package.json +61 -0
- package/tradelayer.js/server/index.js +88 -0
- package/tradelayer.js/server/litecoind.exe +0 -0
- package/tradelayer.js/src/activation.js +303 -0
- package/tradelayer.js/src/adjuster.js +77 -0
- package/tradelayer.js/src/amm.js +400 -0
- package/tradelayer.js/src/base256.js +55 -0
- package/tradelayer.js/src/base94.js +79 -0
- package/tradelayer.js/src/channels.js +1163 -0
- package/tradelayer.js/src/clearing.js +3109 -0
- package/tradelayer.js/src/clearlist.js +364 -0
- package/tradelayer.js/src/client.js +295 -0
- package/tradelayer.js/src/consensus.js +613 -0
- package/tradelayer.js/src/contractRegistry.js +964 -0
- package/tradelayer.js/src/db.js +89 -0
- package/tradelayer.js/src/init.js +24 -0
- package/tradelayer.js/src/insurance.js +347 -0
- package/tradelayer.js/src/interface.js +218 -0
- package/tradelayer.js/src/interfaceExpress.js +178 -0
- package/tradelayer.js/src/iou.js +509 -0
- package/tradelayer.js/src/listener.js +226 -0
- package/tradelayer.js/src/logic.js +1702 -0
- package/tradelayer.js/src/main.js +927 -0
- package/tradelayer.js/src/marginMap.js +2165 -0
- package/tradelayer.js/src/options.js +126 -0
- package/tradelayer.js/src/oracle.js +394 -0
- package/tradelayer.js/src/orderbook.js +4123 -0
- package/tradelayer.js/src/persistence.js +554 -0
- package/tradelayer.js/src/property.js +411 -0
- package/tradelayer.js/src/reOrg.js +41 -0
- package/tradelayer.js/src/scaling.js +145 -0
- package/tradelayer.js/src/tally.js +1275 -0
- package/tradelayer.js/src/tradeHistoryManager.js +552 -0
- package/tradelayer.js/src/txDecoder.js +584 -0
- package/tradelayer.js/src/txEncoder.js +610 -0
- package/tradelayer.js/src/txIndex.js +502 -0
- package/tradelayer.js/src/txUtils.js +1392 -0
- package/tradelayer.js/src/types.js +429 -0
- package/tradelayer.js/src/validity.js +3077 -0
- package/tradelayer.js/src/vaults.js +430 -0
- package/tradelayer.js/src/vesting.js +491 -0
- package/tradelayer.js/src/volumeIndex.js +618 -0
- package/tradelayer.js/src/walletInterface.js +220 -0
- package/tradelayer.js/src/walletListener.js +665 -0
- package/tradelayer.js/tests/256decode.js +82 -0
- package/tradelayer.js/tests/UTXOracle.js +205 -0
- package/tradelayer.js/tests/base94test.js +23 -0
- package/tradelayer.js/tests/cancelTxTest.js +62 -0
- package/tradelayer.js/tests/contractInterfaceTest.js +48 -0
- package/tradelayer.js/tests/decimalTest.js +65 -0
- package/tradelayer.js/tests/decoderTest.js +100 -0
- package/tradelayer.js/tests/deltaCount.js +47 -0
- package/tradelayer.js/tests/deltaCount2.js +60 -0
- package/tradelayer.js/tests/interfaceTest.js +37 -0
- package/tradelayer.js/tests/mainTest.js +53 -0
- package/tradelayer.js/tests/makeActivationTest.js +24 -0
- package/tradelayer.js/tests/maxHeightTest.js +49 -0
- package/tradelayer.js/tests/reverseHash.js +72 -0
- package/tradelayer.js/tests/sensitiveConsoleOutput.txt +267 -0
- package/tradelayer.js/tests/tallyTest.js +40 -0
- package/tradelayer.js/tests/testBuybacks.js +46 -0
- package/tradelayer.js/tests/testCodeHash.js +49 -0
- package/tradelayer.js/tests/testConsensusHash.js +91 -0
- package/tradelayer.js/tests/testDecode.js +30 -0
- package/tradelayer.js/tests/testEncodingLengths.js +129 -0
- package/tradelayer.js/tests/testGetTx +32 -0
- package/tradelayer.js/tests/testGetTx.js +32 -0
- package/tradelayer.js/tests/testHexHash.js +32 -0
- package/tradelayer.js/tests/testIndexHash.js +35 -0
- package/tradelayer.js/tests/testInitContracts.js +38 -0
- package/tradelayer.js/tests/testMaxConsensus.js +12 -0
- package/tradelayer.js/tests/testMaxSynth.js +44 -0
- package/tradelayer.js/tests/testMint.js +21 -0
- package/tradelayer.js/tests/testNetwork.js +33 -0
- package/tradelayer.js/tests/testOrderbookLoad.js +62 -0
- package/tradelayer.js/tests/testRebates.js +32 -0
- package/tradelayer.js/tests/testRedeem.js +22 -0
- package/tradelayer.js/tests/testTokenTrade.js +39 -0
- package/tradelayer.js/tests/testTxBuild.js +42 -0
- package/tradelayer.js/tests/testUTXOTrade.js +27 -0
- package/tradelayer.js/tests/tokenTradeHistory.js +27 -0
- package/tradelayer.js/tests/tradeFutures.js +40 -0
- package/tradelayer.js/tests/tradeHistoryExample.js +35 -0
- package/tradelayer.js/tests/tradeHistoryLoad.js +15 -0
- package/tradelayer.js/tests/txScanTest.js +134 -0
- package/tradelayer.js/tests/validateTest.js +136 -0
- package/tradelayer.js/tests/vestingTest.js +37 -0
- package/tradelayer.js/utils/activateMainnet.js +59 -0
- package/tradelayer.js/utils/activateMainnetDoge.js +63 -0
- package/tradelayer.js/utils/autocompactdb.js +23 -0
- package/tradelayer.js/utils/base64toHex.js +32 -0
- package/tradelayer.js/utils/broadcastDoge.js +38 -0
- package/tradelayer.js/utils/calcRedeem.js +19 -0
- package/tradelayer.js/utils/checkNetwork.js +27 -0
- package/tradelayer.js/utils/createAddress.js +48 -0
- package/tradelayer.js/utils/createAttestation.js +133 -0
- package/tradelayer.js/utils/createContract.js +118 -0
- package/tradelayer.js/utils/createOracle.js +94 -0
- package/tradelayer.js/utils/createwallet.js +20 -0
- package/tradelayer.js/utils/crossFuturesTrades.js +57 -0
- package/tradelayer.js/utils/crossTokenTrades.js +62 -0
- package/tradelayer.js/utils/dumpPriv.js +29 -0
- package/tradelayer.js/utils/generateChannel.js +34 -0
- package/tradelayer.js/utils/getInfo.js +21 -0
- package/tradelayer.js/utils/hardWipe.js +20 -0
- package/tradelayer.js/utils/hexTo64.js +16 -0
- package/tradelayer.js/utils/importAddress.js +28 -0
- package/tradelayer.js/utils/importpriv.js +20 -0
- package/tradelayer.js/utils/issueOracleContract.js +67 -0
- package/tradelayer.js/utils/issueTokens.js +41 -0
- package/tradelayer.js/utils/listunspent.js +66 -0
- package/tradelayer.js/utils/litecoinClient.js +30 -0
- package/tradelayer.js/utils/loadwallet.js +20 -0
- package/tradelayer.js/utils/publishOracle.js +113 -0
- package/tradelayer.js/utils/sendActivation.js +21 -0
- package/tradelayer.js/utils/sendChannelContractTrade.js +34 -0
- package/tradelayer.js/utils/sendChannelTokenTrade.js +34 -0
- package/tradelayer.js/utils/sendCommit.js +24 -0
- package/tradelayer.js/utils/sendDoge.js +62 -0
- package/tradelayer.js/utils/sendDogeMain.js +67 -0
- package/tradelayer.js/utils/sendDogeTx.js +46 -0
- package/tradelayer.js/utils/sendLTC.js +63 -0
- package/tradelayer.js/utils/sendMainnet.js +62 -0
- package/tradelayer.js/utils/sendTransfer.js +19 -0
- package/tradelayer.js/utils/sendVestTest.js +88 -0
- package/tradelayer.js/utils/sendWithdrawal.js +26 -0
- package/tradelayer.js/utils/simpleStart.js +8 -0
- package/tradelayer.js/utils/startStop.js +27 -0
- package/tradelayer.js/utils/structuredTrades.js +136 -0
- package/tradelayer.js/utils/verifySignature.js +90 -0
- package/tradelayer.js/utils/verifyWitnessAndScriptPubkey.js +41 -0
- package/tradelayer.js/utils/walletCache.js +172 -0
- package/tradelayer.js/utils/walletContractInterface.js +48 -0
- package/tradelayer.js/utils/walletFetchTxs.js +66 -0
- package/tradelayer.js/utils/walletUtils.js +97 -0
- package/tradelayer.js/utils/wipeDB.js +55 -0
- package/tradelayer.js/utils/wipeDBNotTx.js +50 -0
- package/txEncoder.js +529 -0
- package/utility.js +28 -0
- package/verifymessage.js +38 -0
- package/ws-transport.js +311 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const level = require('level'); // LevelDB for storage
|
|
2
|
+
const fetch = require('node-fetch'); // For HTTP requests (e.g., price lookups)
|
|
3
|
+
|
|
4
|
+
// Database setup
|
|
5
|
+
const db = level('./tradeVolumeDB');
|
|
6
|
+
|
|
7
|
+
// Function to calculate and track volume
|
|
8
|
+
async function calculateAndTrackVolume(transactions, prices) {
|
|
9
|
+
let cumulativeVolume = 0;
|
|
10
|
+
const volumeByBlock = {};
|
|
11
|
+
|
|
12
|
+
for (const tx of transactions) {
|
|
13
|
+
// Calculate the LTC-equivalent volume for the transaction
|
|
14
|
+
// Increment the cumulative volume
|
|
15
|
+
// Store per-block segment of volume information
|
|
16
|
+
|
|
17
|
+
// Example (adjust according to actual transaction structure):
|
|
18
|
+
const volume = tx.amount * prices[tx.token];
|
|
19
|
+
cumulativeVolume += volume;
|
|
20
|
+
|
|
21
|
+
if (!volumeByBlock[tx.block]) {
|
|
22
|
+
volumeByBlock[tx.block] = 0;
|
|
23
|
+
}
|
|
24
|
+
volumeByBlock[tx.block] += volume;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Update the database
|
|
28
|
+
await db.put('cumulativeVolume', cumulativeVolume);
|
|
29
|
+
await db.put('volumeByBlock', JSON.stringify(volumeByBlock));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Main function to orchestrate the volume indexing
|
|
33
|
+
async function indexVolume() {
|
|
34
|
+
try {
|
|
35
|
+
const transactions = await sampleTradeTransactions();
|
|
36
|
+
const tokens = transactions.map(tx => tx.token);
|
|
37
|
+
const prices = await getTokenPricesInLTC(tokens);
|
|
38
|
+
await calculateAndTrackVolume(transactions, prices);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error('Error in indexing volume:', error);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function sampleTradeTransactions(blockNumber) {
|
|
44
|
+
// Example implementation. Adjust based on your actual data source and structure
|
|
45
|
+
// This could be an API call or a direct blockchain query
|
|
46
|
+
const transactions = []; // Replace with actual logic to fetch transactions
|
|
47
|
+
return transactions;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function getTokenPriceInLTC(tokenId) {
|
|
51
|
+
// Example implementation. Adjust based on your actual data source
|
|
52
|
+
// This could be an API call to a price feed service
|
|
53
|
+
const response = await fetch(`https://api.pricefeed.com/token/${tokenId}`);
|
|
54
|
+
const data = await response.json();
|
|
55
|
+
return data.priceInLTC; // Assuming the API returns a field named 'priceInLTC'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
function calculateVolumeInLTC(tradeTransaction, tokenPrices) {
|
|
60
|
+
// Assuming tradeTransaction contains an 'amount' field and a 'tokenId'
|
|
61
|
+
const tokenPriceInLTC = tokenPrices[tradeTransaction.tokenId];
|
|
62
|
+
const volumeInLTC = tradeTransaction.amount * tokenPriceInLTC;
|
|
63
|
+
return volumeInLTC;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
async function updateCumulativeVolume(volumeInLTC) {
|
|
68
|
+
let currentCumulativeVolume = 0;
|
|
69
|
+
try {
|
|
70
|
+
currentCumulativeVolume = Number(await db.get('cumulativeVolume'));
|
|
71
|
+
} catch (error) {
|
|
72
|
+
if (error.type !== 'NotFoundError') {
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const newCumulativeVolume = currentCumulativeVolume + volumeInLTC;
|
|
78
|
+
await db.put('cumulativeVolume', newCumulativeVolume.toString());
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function saveVolumeData(blockNumber, volumeData) {
|
|
82
|
+
// Save the per-block segment of volume information to LevelDB
|
|
83
|
+
await db.put(`block-${blockNumber}`, JSON.stringify(volumeData));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async function processBlock(blockNumber) {
|
|
87
|
+
try {
|
|
88
|
+
const trades = await sampleTradeTransactions(blockNumber);
|
|
89
|
+
let blockVolumeData = [];
|
|
90
|
+
let cumulativeVolumeInLTC = 0;
|
|
91
|
+
|
|
92
|
+
for (const trade of trades) {
|
|
93
|
+
const priceInLTC = await getTokenPriceInLTC(trade.tokenId);
|
|
94
|
+
const volumeInLTC = trade.amount * priceInLTC; // Assuming 'amount' is in trade tokens
|
|
95
|
+
|
|
96
|
+
blockVolumeData.push({ trade, volumeInLTC });
|
|
97
|
+
cumulativeVolumeInLTC += volumeInLTC;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Update the cumulative volume in the database
|
|
101
|
+
await updateCumulativeVolume(cumulativeVolumeInLTC);
|
|
102
|
+
|
|
103
|
+
// Save the block's volume data
|
|
104
|
+
await saveVolumeData(blockNumber, blockVolumeData);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error(`Error processing block ${blockNumber}:`, error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async function runVolumeIndexing() {
|
|
111
|
+
const latestBlockNumber = /* logic to get the latest block number */;
|
|
112
|
+
for (let blockNumber = 1; blockNumber <= latestBlockNumber; blockNumber++) {
|
|
113
|
+
await processBlock(blockNumber);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
runVolumeIndexing().catch(console.error);
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
const level = require('level'); // LevelDB for storage
|
|
2
|
+
const fetch = require('node-fetch'); // For HTTP requests (e.g., price lookups)
|
|
3
|
+
|
|
4
|
+
class VolumeIndexer {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.db = level('./tradeVolumeDB');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
async fetchTokenPrices(tokens) {
|
|
10
|
+
const prices = {};
|
|
11
|
+
try {
|
|
12
|
+
const response = await fetch(`https://api.pricefeed.com/prices?tokens=${tokens.join(',')}`);
|
|
13
|
+
const data = await response.json();
|
|
14
|
+
tokens.forEach(token => {
|
|
15
|
+
prices[token] = data[token].priceInLTC;
|
|
16
|
+
});
|
|
17
|
+
} catch (error) {
|
|
18
|
+
console.error('Error fetching token prices:', error);
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
return prices;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async sampleTradeTransactions(blockNumber) {
|
|
25
|
+
const transactions = []; // Replace with actual logic to fetch transactions
|
|
26
|
+
return transactions;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
calculateVolumeInLTC(tradeTransaction, tokenPrices) {
|
|
30
|
+
const tokenPriceInLTC = tokenPrices[tradeTransaction.tokenId];
|
|
31
|
+
return tradeTransaction.amount * tokenPriceInLTC;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async calculateAndTrackVolume(transactions, prices) {
|
|
35
|
+
let cumulativeVolume = 0;
|
|
36
|
+
const volumeByBlock = {};
|
|
37
|
+
|
|
38
|
+
for (const tx of transactions) {
|
|
39
|
+
const volume = this.calculateVolumeInLTC(tx, prices);
|
|
40
|
+
cumulativeVolume += volume;
|
|
41
|
+
|
|
42
|
+
if (!volumeByBlock[tx.block]) {
|
|
43
|
+
volumeByBlock[tx.block] = 0;
|
|
44
|
+
}
|
|
45
|
+
volumeByBlock[tx.block] += volume;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
await this.updateCumulativeVolume(cumulativeVolume);
|
|
49
|
+
await this.db.put('volumeByBlock', JSON.stringify(volumeByBlock));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async updateCumulativeVolume(volumeInLTC) {
|
|
53
|
+
let currentCumulativeVolume = 0;
|
|
54
|
+
try {
|
|
55
|
+
currentCumulativeVolume = Number(await this.db.get('cumulativeVolume'));
|
|
56
|
+
} catch (error) {
|
|
57
|
+
if (error.type !== 'NotFoundError') {
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const newCumulativeVolume = currentCumulativeVolume + volumeInLTC;
|
|
63
|
+
await this.db.put('cumulativeVolume', newCumulativeVolume.toString());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async saveVolumeData(blockNumber, volumeData) {
|
|
67
|
+
await this.db.put(`block-${blockNumber}`, JSON.stringify(volumeData));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async processBlock(blockNumber) {
|
|
71
|
+
try {
|
|
72
|
+
const trades = await this.sampleTradeTransactions(blockNumber);
|
|
73
|
+
const tokens = [...new Set(trades.map(tx => tx.token))];
|
|
74
|
+
const prices = await this.fetchTokenPrices(tokens);
|
|
75
|
+
await this.calculateAndTrackVolume(trades, prices);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error(`Error processing block ${blockNumber}:`, error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async runVolumeIndexing(startBlock, latestBlockNumber) {
|
|
82
|
+
for (let blockNumber = startBlock; blockNumber <= latestBlockNumber; blockNumber++) {
|
|
83
|
+
await this.processBlock(blockNumber);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
module.exports = VolumeIndexer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AQAAAAFIpXi1x6rlSx8z9IDZkgVDcYhLqO/j+0+ff33S/8ipMgAAAABqRzBEAiBvAxjzQ4YMIeoe3osxhrW12oRI0xPaD6BK1BRDiHMO4AIgYtBGa/HoRNtCtEjYp4BQ46hkE/qfjWIJ9aaJfJybF3wBIQK3L1MGeLqsAw6Jb19rH/rzNN6ksQyK/zkjozUFP0POk/////8CAGXNHQAAAAAZdqkUvpjSel/B+3PXy0h9p9VtSf6s/TWIrAAAAAAAAAAAQGo+dGwwMDsxOzI7Mzs0LDM1ZzVyajE0OXJ3bXE2eDU1ZdwNzB1eGdxcjk5bHlsbzZhNmQzMWt6YWNnajdiMTkAAAAA=
|