37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import 'dotenv/config'
|
|
|
|
import {lookupToken} from "./token.js";
|
|
import {startWatcher} from "./watcher.js";
|
|
import {chains} from "./blockchain.js";
|
|
import {watchErc20Transfer, watchVaultCreated} from "./vault.js";
|
|
import {httpServer, io} from "./io.js";
|
|
|
|
|
|
// setup watcher
|
|
|
|
const filterCallbacks = [
|
|
// format is [[className, eventName, ...eventArgs], callback(provider, database, logInfo)]
|
|
[['VaultDeployer','VaultCreated', null, null], watchVaultCreated],
|
|
[['ERC20', 'Transfer'], watchErc20Transfer],
|
|
]
|
|
|
|
for( const chain of Object.values(chains) )
|
|
await startWatcher( chain.id, 1000, filterCallbacks )
|
|
|
|
|
|
// setup socket.io
|
|
|
|
io.on("connection", (socket) => {
|
|
// initially, only anonymous messages are allowed
|
|
socket.on('lookupToken', (chainId, address, callback) => {
|
|
lookupToken(chainId, address).then((result)=>callback(result)).catch(()=>callback(null))
|
|
})
|
|
socket.on('address', (chainId, address) => loginAddress(socket, chainId, address) )
|
|
// todo send known tokens or other initial config
|
|
socket.emit('welcome', {})
|
|
});
|
|
|
|
const port = parseInt(process.env.DEXORDER_PORT) || 3000;
|
|
httpServer.listen(port)
|
|
console.log('Started server on port '+port)
|