-
Notifications
You must be signed in to change notification settings - Fork 3
/
app.mjs
79 lines (58 loc) · 2.57 KB
/
app.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { config } from 'dotenv'
config()
import { runBlockGrabber } from './src/blockgrabber.mjs'
import { eventWebsockets } from './src/services/eventsWebsocket.mjs'
import { createServer } from './src/server.mjs'
import { getDatabase, databaseInit } from './src/database/database.mjs'
import { createLogger } from './src/logger.mjs'
import { fixRewardsRecord } from './src/rewardsFix.mjs'
import { fixStateChanges } from './src/stateChangesFix.mjs'
const logger = createLogger('App');
const MASTERNODE_URLS = {
'testnet': "https://testnet-v2-master-lon.lamden.io",
'mainnet': "https://masternode-01.lamden.io"
}
const GENESIS_BLOCKS = {
"mainnet": "https://raw.githubusercontent.com/Lamden/genesis_block/main/mainnet",
"testnet": "https://raw.githubusercontent.com/Lamden/genesis_block/main/testnet",
"staging": "https://raw.githubusercontent.com/Lamden/genesis_block/main/staging"
}
console.log({env: process.env})
/******* MONGO DB CONNECTION INFO **/
const NETWORK = process.env.NETWORK || 'testnet'
const MASTERNODE_URL = process.env.MASTERNODE_URL || MASTERNODE_URLS[NETWORK]
/******* SERVER CONNECTION INFO **/
const BLOCKSERVICE_PORT = process.env.BLOCKSERVICE_PORT || 3535
const BLOCKSERVICE_HOST = process.env.BLOCKSERVICE_HOST || 'localhost'
const GENESIS_BLOCK_URL = process.env.GENESIS_BLOCK_URL || GENESIS_BLOCKS[NETWORK]
const GENESIS_BLOCK_LOCATION = process.env.GENESIS_BLOCK_LOCATION || "/root"
let grabberConfig = {
DEBUG_ON: process.env.DEBUG_ON || false,
MASTERNODE_URL,
GENESIS_BLOCK_URL,
GENESIS_BLOCK_LOCATION
}
export const start = async () => {
// Init database
await databaseInit()
const db = getDatabase()
const server = await createServer(BLOCKSERVICE_HOST, BLOCKSERVICE_PORT, db)
// ensure backward compatibility
// await db.models.Blocks.deleteMany({ hash: "block-does-not-exist" })
// parse rewards for old block data in database
// await fixRewardsRecord(server.services, db)
// await fixStateChanges(server.services, db)
logger.info("Syncing Indexes...");
//console.log( db.models)
for (let model_name of Object.keys(db.models)){
await db.models[model_name].syncIndexes()
.catch(err => logger.error(err))
.then(() => logger.success(`DONE Syncing Indexes for ${db.models[model_name].collection.collectionName}...`))
}
grabberConfig.server = server
grabberConfig.blockchainEvents = eventWebsockets(grabberConfig.MASTERNODE_URL)
let blockGrabber = runBlockGrabber(grabberConfig)
blockGrabber.start()
return grabberConfig
}
start()