diff --git a/backend/app.js b/backend/app.js index 4296241..01c5cdf 100644 --- a/backend/app.js +++ b/backend/app.js @@ -1,15 +1,14 @@ const express = require('express'); +const helmet = require('helmet'); const cors = require('cors'); const session = require('express-session'); -const pgSession = require('connect-pg-simple')(session); -const { pool } = require('./db'); -const helmet = require('helmet'); -const path = require('path'); +const { sessionMiddleware } = require('./config/session'); const logger = require('./utils/logger'); -const authService = require('./services/auth-service'); -const { errorHandler, AppError, ErrorTypes } = require('./middleware/errorHandler'); -const aiAssistant = require('./services/ai-assistant'); -const crypto = require('crypto'); +// const csurf = require('csurf'); // Закомментировано, так как не используется +const { errorHandler } = require('./middleware/errorHandler'); +// const { version } = require('./package.json'); // Закомментировано, так как не используется +const pool = require('./db'); // Добавляем импорт pool +const aiAssistant = require('./services/ai-assistant'); // Добавляем импорт aiAssistant // Импорт маршрутов const authRoutes = require('./routes/auth'); @@ -41,10 +40,7 @@ app.use( // Настройка сессии app.use( session({ - store: new pgSession({ - pool, - tableName: 'session', - }), + store: sessionMiddleware.store, secret: process.env.SESSION_SECRET || 'hb3atoken', name: 'sessionId', resave: false, diff --git a/backend/db.js b/backend/db.js index 552d2b8..ae6c5e2 100644 --- a/backend/db.js +++ b/backend/db.js @@ -16,13 +16,15 @@ const pool = new Pool({ }); // Проверяем подключение к базе данных -pool.query('SELECT NOW()', (err, res) => { - if (err) { - console.error('Ошибка подключения к базе данных:', err); +pool.query('SELECT NOW()') + .then(res => { + console.log('Успешное подключение к базе данных:', res.rows[0]); + }) + .catch(err => { + console.error('Failed to connect to the database using DATABASE_URL:', err); + console.log('Attempting alternative database connection...'); // Пробуем альтернативное подключение - console.log('Попытка альтернативного подключения через прямые параметры...'); - const altPool = new Pool({ host: process.env.DB_HOST || 'localhost', port: parseInt(process.env.DB_PORT || '5432'), @@ -31,22 +33,19 @@ pool.query('SELECT NOW()', (err, res) => { password: process.env.DB_PASSWORD, }); - altPool.query('SELECT NOW()', (altErr, altRes) => { - if (altErr) { - console.error('Альтернативное подключение тоже не удалось:', altErr); - console.log('Переключение на временное хранилище данных в памяти...'); - module.exports = createInMemoryStorage(); - } else { + altPool.query('SELECT NOW()') + .then(altRes => { console.log('Альтернативное подключение успешно:', altRes.rows[0]); // Заменяем основной пул на альтернативный module.exports.pool = altPool; module.exports.query = (text, params) => altPool.query(text, params); - } - }); - } else { - console.log('Успешное подключение к базе данных:', res.rows[0]); - } -}); + }) + .catch(altErr => { + console.error('Альтернативное подключение тоже не удалось:', altErr); + console.log('Переключение на временное хранилище данных в памяти...'); + module.exports = createInMemoryStorage(); + }); + }); // Функция для выполнения SQL-запросов const query = (text, params) => { @@ -139,38 +138,3 @@ function createInMemoryStorage() { }, }; } - -// Проверка и создание таблицы session, если она не существует -async function checkSessionTable() { - try { - const result = await pool.query(` - SELECT EXISTS ( - SELECT FROM information_schema.tables - WHERE table_schema = 'public' - AND table_name = 'session' - ); - `); - - const tableExists = result.rows[0].exists; - - if (!tableExists) { - console.log('Таблица session не существует, создаем...'); - - await pool.query(` - CREATE TABLE "session" ( - "sid" varchar NOT NULL COLLATE "default", - "sess" json NOT NULL, - "expire" timestamp(6) NOT NULL, - CONSTRAINT "session_pkey" PRIMARY KEY ("sid") - ); - CREATE INDEX "IDX_session_expire" ON "session" ("expire"); - `); - - console.log('Таблица session успешно создана'); - } else { - console.log('Таблица session уже существует'); - } - } catch (error) { - console.error('Ошибка при проверке/создании таблицы session:', error); - } -} diff --git a/backend/db/init.js b/backend/db/init.js index 4111a3e..6adb3a7 100644 --- a/backend/db/init.js +++ b/backend/db/init.js @@ -118,4 +118,9 @@ async function initializeDatabase() { } } -module.exports = { initializeDatabase }; +const initDb = async () => { + await createTables(); + // await initRoles(); // Вызов тоже удаляем +}; + +module.exports = initDb; diff --git a/backend/logs/combined.log b/backend/logs/combined.log index 9cc010c..83c2bfb 100644 --- a/backend/logs/combined.log +++ b/backend/logs/combined.log @@ -8495,3 +8495,474 @@ {"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:03:27.122Z"} {"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:03:41.328Z"} {"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:03:41.331Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:03:57.229Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:03:57.233Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:04:09.384Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:04:09.399Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:04:27.349Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:04:27.356Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:14:47.015Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:14:47.024Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:14:47.039Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:14:47.042Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:14:47.051Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:14:47.053Z"} +{"level":"info","message":"GET /api/auth/nonce?address=0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:14:52.070Z"} +{"level":"info","message":"Nonce 9fb7fe558e286d18ef276ee6faa1f295 сохранен для адреса 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:14:52.077Z"} +{"level":"info","message":"POST /api/auth/verify","timestamp":"2025-04-21T15:14:56.026Z"} +{"level":"info","message":"[verify] Verifying signature for address: 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:14:56.027Z"} +{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:56.118Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","hasTokens":true,"level":"info","message":"Token balance on bsc:","timestamp":"2025-04-21T15:14:57.108Z"} +{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-04-21T15:14:57.109Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","timestamp":"2025-04-21T15:14:57.258Z"} +{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-04-21T15:14:57.258Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on eth:","timestamp":"2025-04-21T15:14:57.472Z"} +{"level":"info","message":"Found admin tokens on eth","timestamp":"2025-04-21T15:14:57.472Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","timestamp":"2025-04-21T15:14:57.622Z"} +{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-04-21T15:14:57.623Z"} +{"balances":{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","polygon":"454852.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","arbitrum","eth","polygon"],"timestamp":"2025-04-21T15:14:57.623Z"} +{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:57.624Z"} +{"level":"info","message":"[verify] Found or created user 1 for wallet 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:57.624Z"} +{"level":"info","message":"[IdentityService] Converting guest identity for user 1 to guest_user_mapping: 8d17604b9cd44fa9074cba30f7acb374","timestamp":"2025-04-21T15:14:57.625Z"} +{"level":"info","message":"Checking admin tokens for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:57.630Z"} +{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:57.630Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","hasTokens":true,"level":"info","message":"Token balance on bsc:","timestamp":"2025-04-21T15:14:57.937Z"} +{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-04-21T15:14:57.937Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on eth:","timestamp":"2025-04-21T15:14:58.078Z"} +{"level":"info","message":"Found admin tokens on eth","timestamp":"2025-04-21T15:14:58.079Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","timestamp":"2025-04-21T15:14:58.084Z"} +{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-04-21T15:14:58.084Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","timestamp":"2025-04-21T15:14:58.204Z"} +{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-04-21T15:14:58.204Z"} +{"balances":{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","polygon":"454852.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","eth","polygon","arbitrum"],"timestamp":"2025-04-21T15:14:58.204Z"} +{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:58.205Z"} +{"level":"info","message":"Updated user 1 role to admin based on token holdings","timestamp":"2025-04-21T15:14:58.209Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:14:58.211Z"} +{"level":"info","message":"[linkGuestMessages] Starting for user 1 with guestId=8d17604b9cd44fa9074cba30f7acb374, previousGuestId=undefined","timestamp":"2025-04-21T15:14:58.212Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8d17604b9cd44fa9074cba30f7acb374","timestamp":"2025-04-21T15:14:58.218Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=3987b209726bd85f79f6668c69cec67a","timestamp":"2025-04-21T15:14:58.227Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e7dd7cc2be1f4cf5628ac67496f0ff60","timestamp":"2025-04-21T15:14:58.231Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1643e4ae05e31df62ceaa1c784dbf2e7","timestamp":"2025-04-21T15:14:58.235Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b6de4a34d192b6d3c6a04d64921bc2c6","timestamp":"2025-04-21T15:14:58.239Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d85d2c40506052a630bb7737bc2769e6","timestamp":"2025-04-21T15:14:58.243Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8edb112101cbbaa5bef2c3a08f275ec6","timestamp":"2025-04-21T15:14:58.247Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4b83b24f9c0cb26179c0637632426e4a","timestamp":"2025-04-21T15:14:58.252Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=221d5a74f84eca5d55db182e0a3d9143","timestamp":"2025-04-21T15:14:58.256Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=7e030d98195da1dd7f81b669c666dca7","timestamp":"2025-04-21T15:14:58.259Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4256b2a7e0d8b7ed947ba6c1f5f72d15","timestamp":"2025-04-21T15:14:58.263Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=a87f7b05515098ad5a3079377690f769","timestamp":"2025-04-21T15:14:58.266Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4401b63702956724a4ccb3bb849f7207","timestamp":"2025-04-21T15:14:58.270Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5957393c426559cd5ffb817d29e4da37","timestamp":"2025-04-21T15:14:58.278Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=064746c1fd4456b7021c936bb9638dfc","timestamp":"2025-04-21T15:14:58.282Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745098219233-r5wj2olz0","timestamp":"2025-04-21T15:14:58.285Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745243339797-5jz07df5q","timestamp":"2025-04-21T15:14:58.289Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e50442b5c6fad89fc34176fc078d56f1","timestamp":"2025-04-21T15:14:58.293Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745243066352-5zqw1zro4","timestamp":"2025-04-21T15:14:58.298Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8f897f5f63a679da6893cac2548cdd8c","timestamp":"2025-04-21T15:14:58.302Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f622d55418e4159e864ea4e6e18115d9","timestamp":"2025-04-21T15:14:58.306Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=cee8775f1ef14ec06069222412527621","timestamp":"2025-04-21T15:14:58.312Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4801418ef94eac344f7372c5db4bcd41","timestamp":"2025-04-21T15:14:58.316Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=6f93b96d30b4ef36faa2943c5635d949","timestamp":"2025-04-21T15:14:58.320Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=ddf4efa4dca07970401397faae6ad10d","timestamp":"2025-04-21T15:14:58.324Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=a9c5cab9491ffd9a8340488892a3a83f","timestamp":"2025-04-21T15:14:58.329Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=fa541d53f0b7910b5d90be7822f211c0","timestamp":"2025-04-21T15:14:58.332Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=9b1fb20e39a4215abe7c83b8eb752b40","timestamp":"2025-04-21T15:14:58.336Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=750e6a49666b28814122e1d901aea6b5","timestamp":"2025-04-21T15:14:58.339Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8bbf43a7d107802415e69966ec47edd7","timestamp":"2025-04-21T15:14:58.344Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=784e89fbeba721cf5c3dda2267d9ddd5","timestamp":"2025-04-21T15:14:58.347Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=30c3be3e079722b3a8d20203b1a567f9","timestamp":"2025-04-21T15:14:58.352Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745221905698-9rejq7xoe","timestamp":"2025-04-21T15:14:58.357Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=85f386bbe2c9b7affbd50d0366a39147","timestamp":"2025-04-21T15:14:58.361Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=2d284866bfe0da04a3716d3f96d2cc64","timestamp":"2025-04-21T15:14:58.364Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d6c03e2a1a30f997e7ae94097b8bdc33","timestamp":"2025-04-21T15:14:58.368Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=00e90de9aef9134750d4519a5e10c4ee","timestamp":"2025-04-21T15:14:58.372Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f79a4edd77d8db2def23394f52e0d0a4","timestamp":"2025-04-21T15:14:58.376Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b710161e84700cd43778fb846c4017ff","timestamp":"2025-04-21T15:14:58.380Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5a7dec430e4da72e53b8b07fc1713a4e","timestamp":"2025-04-21T15:14:58.383Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bdbb9e9a6b156fb309480755554c017c","timestamp":"2025-04-21T15:14:58.388Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e4ca877a9e8a823241c5f1669ad4b177","timestamp":"2025-04-21T15:14:58.394Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=63404462543ed032df62eb0597cfbf92","timestamp":"2025-04-21T15:14:58.398Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=53e3ea1b2c59ed4f4b37a6402da579db","timestamp":"2025-04-21T15:14:58.402Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745240790811-mxagvk0lf","timestamp":"2025-04-21T15:14:58.406Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8d447b0a532867a90636e000c9bbb72a","timestamp":"2025-04-21T15:14:58.410Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745079293895-f5bi3mnlq","timestamp":"2025-04-21T15:14:58.414Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f74f7950c4b8085f2cead1620d087bb5","timestamp":"2025-04-21T15:14:58.418Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=2f2e2330b4263952294d93ae6a86146a","timestamp":"2025-04-21T15:14:58.422Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b2e89db3924be1b1d3b0f06f130cf8e0","timestamp":"2025-04-21T15:14:58.426Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b4460596d1947e93312e2607cda758ba","timestamp":"2025-04-21T15:14:58.430Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=16236f2b04a47bc549afe4960f6aeded","timestamp":"2025-04-21T15:14:58.433Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=9c7f2342b8ff1f8fe4d545f6d2af05d4","timestamp":"2025-04-21T15:14:58.438Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bf299ef8e5ac941443b24bc023d55bdf","timestamp":"2025-04-21T15:14:58.441Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e70ff3b19f49cb1ce11e3bf9d4c3f5b5","timestamp":"2025-04-21T15:14:58.445Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dca0cf1d9efe806bc9915e5a57c344b3","timestamp":"2025-04-21T15:14:58.449Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=19ca3c1e1a77f6688e48e996ec94e32b","timestamp":"2025-04-21T15:14:58.454Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dc34a86ca22b491572bc728db26ec8d2","timestamp":"2025-04-21T15:14:58.457Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=cd399a7b2782ab9dcd510a6d624311ef","timestamp":"2025-04-21T15:14:58.460Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5fbeaeed77f7e790089e3687b6272cc4","timestamp":"2025-04-21T15:14:58.464Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8890d8475daa4b9515427d7db88cd3f6","timestamp":"2025-04-21T15:14:58.468Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=06a8da2f6b8ccb05be8606d6f5785c3e","timestamp":"2025-04-21T15:14:58.471Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=12b912bafbdae6136947a2405c43afc7","timestamp":"2025-04-21T15:14:58.476Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=75e90bb5664f78f2d4e89dba9c764340","timestamp":"2025-04-21T15:14:58.480Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d1a1a0c6759fa0092a9ac54cc6bca38c","timestamp":"2025-04-21T15:14:58.483Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5c62c06c28391e47ca9da69d82d6b665","timestamp":"2025-04-21T15:14:58.487Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e1313ff9002847b61b9f8ea825150512","timestamp":"2025-04-21T15:14:58.491Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:14:58.496Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:14:58.509Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:14:58.511Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:14:58.537Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:14:58.545Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:14:58.551Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:14:58.554Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:14:58.570Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:14:58.574Z"} +{"level":"info","message":"POST /api/auth/link-guest-messages","timestamp":"2025-04-21T15:14:58.584Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:14:58.586Z"} +{"level":"info","message":"POST /api/auth/link-guest-messages","timestamp":"2025-04-21T15:14:58.604Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:14:58.605Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:14:58.985Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:14:59.288Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:14:59.476Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:14:59.480Z"} +{"level":"info","message":"GET /api/chat/history?count_only=true","timestamp":"2025-04-21T15:14:59.491Z"} +{"level":"info","message":"GET /api/chat/history?offset=6&limit=30","timestamp":"2025-04-21T15:14:59.511Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:14:59.867Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:15:00.277Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:15:00.277Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:15:00.284Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:15:00.286Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:15:00.741Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:15:01.052Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:15:01.715Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:15:02.153Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:15:02.153Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:15:29.181Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:15:29.184Z"} +{"client":{"_connected":true,"_connecting":false,"_connectionCallback":null,"_connectionError":false,"_connectionTimeoutMillis":0,"_ended":false,"_ending":true,"_events":{},"_eventsCount":1,"_poolUseCount":2,"_queryable":false,"_types":{"_types":{"arrayParser":{},"builtins":{"ABSTIME":702,"ACLITEM":1033,"BIT":1560,"BOOL":16,"BPCHAR":1042,"BYTEA":17,"CHAR":18,"CID":29,"CIDR":650,"CIRCLE":718,"DATE":1082,"FLOAT4":700,"FLOAT8":701,"GTSVECTOR":3642,"INET":869,"INT2":21,"INT4":23,"INT8":20,"INTERVAL":1186,"JSON":114,"JSONB":3802,"MACADDR":829,"MACADDR8":774,"MONEY":790,"NUMERIC":1700,"OID":26,"PATH":602,"PG_DEPENDENCIES":3402,"PG_LSN":3220,"PG_NDISTINCT":3361,"PG_NODE_TREE":194,"POLYGON":604,"REFCURSOR":1790,"REGCLASS":2205,"REGCONFIG":3734,"REGDICTIONARY":3769,"REGNAMESPACE":4089,"REGOPER":2203,"REGOPERATOR":2204,"REGPROC":24,"REGPROCEDURE":2202,"REGROLE":4096,"REGTYPE":2206,"RELTIME":703,"SMGR":210,"TEXT":25,"TID":27,"TIME":1083,"TIMESTAMP":1114,"TIMESTAMPTZ":1184,"TIMETZ":1266,"TINTERVAL":704,"TSQUERY":3615,"TSVECTOR":3614,"TXID_SNAPSHOT":2970,"UUID":2950,"VARBIT":1562,"VARCHAR":1043,"XID":28,"XML":142}},"binary":{},"text":{}},"activeQuery":null,"binary":false,"connection":{"_connecting":true,"_emitMessage":false,"_ending":true,"_events":{"end":[null,null]},"_eventsCount":23,"_keepAlive":false,"_keepAliveInitialDelayMillis":0,"lastBuffer":false,"parsedStatements":{},"ssl":false,"stream":{"_closeAfterHandlingError":false,"_events":{"end":[null,null]},"_eventsCount":4,"_hadError":false,"_host":"postgres","_parent":null,"_pendingData":null,"_pendingEncoding":"","_readableState":{"awaitDrainWriters":null,"buffer":[],"bufferIndex":0,"highWaterMark":16384,"length":0,"pipes":[]},"_server":null,"_sockname":null,"_writableState":{"bufferedIndex":0,"corked":0,"highWaterMark":16384,"length":0,"pendingcb":0,"writelen":0},"allowHalfOpen":false,"connecting":false,"server":null}},"connectionParameters":{"binary":false,"client_encoding":"","connect_timeout":0,"database":"dapp_db","host":"postgres","idle_in_transaction_session_timeout":false,"isDomainSocket":false,"lock_timeout":false,"port":5432,"query_timeout":false,"ssl":false,"statement_timeout":false,"user":"dapp_user"},"database":"dapp_db","hasExecuted":true,"host":"postgres","port":5432,"processID":210,"queryQueue":[],"readyForQuery":true,"saslSession":null,"secretKey":1769938562,"ssl":false,"user":"dapp_user"},"code":"57P01","file":"postgres.c","length":116,"level":"error","line":"3286","message":"Uncaught Exception: terminating connection due to administrator command","name":"error","routine":"ProcessInterrupts","severity":"FATAL","stack":"error: terminating connection due to administrator command\n at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:283:98)\n at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:122:29)\n at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:35:38)\n at Socket. (/app/node_modules/pg-protocol/dist/index.js:11:42)\n at Socket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-04-21T15:15:37.285Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:15:59.333Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:16:00.211Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:16:00.214Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:16:00.225Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:16:31.490Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:16:31.494Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:16:31.505Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:16:31.507Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:16:31.515Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:16:31.517Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:17:12.404Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:17:12.411Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:17:12.428Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:17:12.430Z"} +{"level":"info","message":"POST /api/chat/guest-message","timestamp":"2025-04-21T15:17:19.746Z"} +{"level":"info","message":"GET /api/auth/nonce?address=0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:17:21.246Z"} +{"level":"info","message":"Nonce cbfa8ebd87d3a60d04d78b2cba6f558b сохранен для адреса 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:17:21.252Z"} +{"level":"info","message":"POST /api/auth/verify","timestamp":"2025-04-21T15:17:23.064Z"} +{"level":"info","message":"[verify] Verifying signature for address: 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:17:23.066Z"} +{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:17:23.148Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","hasTokens":true,"level":"info","message":"Token balance on bsc:","timestamp":"2025-04-21T15:17:24.113Z"} +{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-04-21T15:17:24.113Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on eth:","timestamp":"2025-04-21T15:17:24.143Z"} +{"level":"info","message":"Found admin tokens on eth","timestamp":"2025-04-21T15:17:24.143Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","timestamp":"2025-04-21T15:17:24.151Z"} +{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-04-21T15:17:24.152Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","timestamp":"2025-04-21T15:17:24.364Z"} +{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-04-21T15:17:24.364Z"} +{"balances":{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","polygon":"454852.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","eth","arbitrum","polygon"],"timestamp":"2025-04-21T15:17:24.365Z"} +{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:17:24.365Z"} +{"level":"info","message":"[verify] Found or created user 1 for wallet 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:17:24.366Z"} +{"level":"info","message":"[IdentityService] Converting guest identity for user 1 to guest_user_mapping: 1745248639754-svfzgedxz","timestamp":"2025-04-21T15:17:24.367Z"} +{"level":"info","message":"Checking admin tokens for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:17:24.371Z"} +{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:17:24.371Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","hasTokens":true,"level":"info","message":"Token balance on bsc:","timestamp":"2025-04-21T15:17:24.671Z"} +{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-04-21T15:17:24.671Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","timestamp":"2025-04-21T15:17:24.786Z"} +{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-04-21T15:17:24.786Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on eth:","timestamp":"2025-04-21T15:17:24.813Z"} +{"level":"info","message":"Found admin tokens on eth","timestamp":"2025-04-21T15:17:24.814Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","timestamp":"2025-04-21T15:17:24.972Z"} +{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-04-21T15:17:24.972Z"} +{"balances":{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","polygon":"454852.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","polygon","eth","arbitrum"],"timestamp":"2025-04-21T15:17:24.972Z"} +{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:17:24.972Z"} +{"level":"info","message":"Updated user 1 role to admin based on token holdings","timestamp":"2025-04-21T15:17:24.977Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:17:24.980Z"} +{"level":"info","message":"[linkGuestMessages] Starting for user 1 with guestId=1745248639754-svfzgedxz, previousGuestId=undefined","timestamp":"2025-04-21T15:17:24.980Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745248639754-svfzgedxz","timestamp":"2025-04-21T15:17:24.985Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f622d55418e4159e864ea4e6e18115d9","timestamp":"2025-04-21T15:18:20.507Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=cee8775f1ef14ec06069222412527621","timestamp":"2025-04-21T15:18:20.512Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4801418ef94eac344f7372c5db4bcd41","timestamp":"2025-04-21T15:18:20.515Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=6f93b96d30b4ef36faa2943c5635d949","timestamp":"2025-04-21T15:18:20.519Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=ddf4efa4dca07970401397faae6ad10d","timestamp":"2025-04-21T15:18:20.523Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=a9c5cab9491ffd9a8340488892a3a83f","timestamp":"2025-04-21T15:18:20.527Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=fa541d53f0b7910b5d90be7822f211c0","timestamp":"2025-04-21T15:18:20.530Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=9b1fb20e39a4215abe7c83b8eb752b40","timestamp":"2025-04-21T15:18:20.533Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=750e6a49666b28814122e1d901aea6b5","timestamp":"2025-04-21T15:18:20.538Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8bbf43a7d107802415e69966ec47edd7","timestamp":"2025-04-21T15:18:20.542Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=784e89fbeba721cf5c3dda2267d9ddd5","timestamp":"2025-04-21T15:18:20.547Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=30c3be3e079722b3a8d20203b1a567f9","timestamp":"2025-04-21T15:18:20.550Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745221905698-9rejq7xoe","timestamp":"2025-04-21T15:18:20.556Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=85f386bbe2c9b7affbd50d0366a39147","timestamp":"2025-04-21T15:18:20.560Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=2d284866bfe0da04a3716d3f96d2cc64","timestamp":"2025-04-21T15:18:20.564Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d6c03e2a1a30f997e7ae94097b8bdc33","timestamp":"2025-04-21T15:18:20.567Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=00e90de9aef9134750d4519a5e10c4ee","timestamp":"2025-04-21T15:18:20.572Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f79a4edd77d8db2def23394f52e0d0a4","timestamp":"2025-04-21T15:18:20.575Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b710161e84700cd43778fb846c4017ff","timestamp":"2025-04-21T15:18:20.580Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5a7dec430e4da72e53b8b07fc1713a4e","timestamp":"2025-04-21T15:18:20.584Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bdbb9e9a6b156fb309480755554c017c","timestamp":"2025-04-21T15:18:20.588Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e4ca877a9e8a823241c5f1669ad4b177","timestamp":"2025-04-21T15:18:20.592Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=63404462543ed032df62eb0597cfbf92","timestamp":"2025-04-21T15:18:20.596Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=53e3ea1b2c59ed4f4b37a6402da579db","timestamp":"2025-04-21T15:18:20.601Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745240790811-mxagvk0lf","timestamp":"2025-04-21T15:18:20.605Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8d447b0a532867a90636e000c9bbb72a","timestamp":"2025-04-21T15:18:20.610Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745079293895-f5bi3mnlq","timestamp":"2025-04-21T15:18:20.613Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f74f7950c4b8085f2cead1620d087bb5","timestamp":"2025-04-21T15:18:20.618Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=2f2e2330b4263952294d93ae6a86146a","timestamp":"2025-04-21T15:18:20.623Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b2e89db3924be1b1d3b0f06f130cf8e0","timestamp":"2025-04-21T15:18:20.626Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b4460596d1947e93312e2607cda758ba","timestamp":"2025-04-21T15:18:20.630Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=16236f2b04a47bc549afe4960f6aeded","timestamp":"2025-04-21T15:18:20.635Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=9c7f2342b8ff1f8fe4d545f6d2af05d4","timestamp":"2025-04-21T15:18:20.640Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bf299ef8e5ac941443b24bc023d55bdf","timestamp":"2025-04-21T15:18:20.643Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e70ff3b19f49cb1ce11e3bf9d4c3f5b5","timestamp":"2025-04-21T15:18:20.647Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dca0cf1d9efe806bc9915e5a57c344b3","timestamp":"2025-04-21T15:18:20.651Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=19ca3c1e1a77f6688e48e996ec94e32b","timestamp":"2025-04-21T15:18:20.655Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dc34a86ca22b491572bc728db26ec8d2","timestamp":"2025-04-21T15:18:20.658Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=cd399a7b2782ab9dcd510a6d624311ef","timestamp":"2025-04-21T15:18:20.663Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5fbeaeed77f7e790089e3687b6272cc4","timestamp":"2025-04-21T15:18:20.667Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8890d8475daa4b9515427d7db88cd3f6","timestamp":"2025-04-21T15:18:20.671Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=06a8da2f6b8ccb05be8606d6f5785c3e","timestamp":"2025-04-21T15:18:20.674Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=12b912bafbdae6136947a2405c43afc7","timestamp":"2025-04-21T15:18:20.678Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=75e90bb5664f78f2d4e89dba9c764340","timestamp":"2025-04-21T15:18:20.682Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d1a1a0c6759fa0092a9ac54cc6bca38c","timestamp":"2025-04-21T15:18:20.687Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5c62c06c28391e47ca9da69d82d6b665","timestamp":"2025-04-21T15:18:20.690Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e1313ff9002847b61b9f8ea825150512","timestamp":"2025-04-21T15:18:20.694Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=3987b209726bd85f79f6668c69cec67a","timestamp":"2025-04-21T15:18:20.698Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e7dd7cc2be1f4cf5628ac67496f0ff60","timestamp":"2025-04-21T15:18:20.701Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8d17604b9cd44fa9074cba30f7acb374","timestamp":"2025-04-21T15:18:20.704Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1643e4ae05e31df62ceaa1c784dbf2e7","timestamp":"2025-04-21T15:18:20.708Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b6de4a34d192b6d3c6a04d64921bc2c6","timestamp":"2025-04-21T15:18:20.712Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d85d2c40506052a630bb7737bc2769e6","timestamp":"2025-04-21T15:18:20.716Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8edb112101cbbaa5bef2c3a08f275ec6","timestamp":"2025-04-21T15:18:20.720Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4b83b24f9c0cb26179c0637632426e4a","timestamp":"2025-04-21T15:18:20.725Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=221d5a74f84eca5d55db182e0a3d9143","timestamp":"2025-04-21T15:18:20.729Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=7e030d98195da1dd7f81b669c666dca7","timestamp":"2025-04-21T15:18:20.733Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4256b2a7e0d8b7ed947ba6c1f5f72d15","timestamp":"2025-04-21T15:18:20.737Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=a87f7b05515098ad5a3079377690f769","timestamp":"2025-04-21T15:18:20.740Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4401b63702956724a4ccb3bb849f7207","timestamp":"2025-04-21T15:18:20.743Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5957393c426559cd5ffb817d29e4da37","timestamp":"2025-04-21T15:18:20.748Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=064746c1fd4456b7021c936bb9638dfc","timestamp":"2025-04-21T15:18:20.751Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745098219233-r5wj2olz0","timestamp":"2025-04-21T15:18:20.755Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745243339797-5jz07df5q","timestamp":"2025-04-21T15:18:20.759Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e50442b5c6fad89fc34176fc078d56f1","timestamp":"2025-04-21T15:18:20.762Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745243066352-5zqw1zro4","timestamp":"2025-04-21T15:18:20.766Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8f897f5f63a679da6893cac2548cdd8c","timestamp":"2025-04-21T15:18:20.770Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:18:20.773Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:18:20.790Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:18:20.795Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:18:20.816Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:18:20.821Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:18:20.838Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:18:20.839Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:18:20.846Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:18:20.860Z"} +{"level":"info","message":"POST /api/auth/link-guest-messages","timestamp":"2025-04-21T15:18:20.869Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:18:20.871Z"} +{"level":"info","message":"POST /api/auth/link-guest-messages","timestamp":"2025-04-21T15:18:20.883Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:18:20.884Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:18:21.954Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:18:22.295Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:18:22.297Z"} +{"level":"info","message":"GET /api/chat/history?count_only=true","timestamp":"2025-04-21T15:18:22.307Z"} +{"level":"info","message":"GET /api/chat/history?offset=8&limit=30","timestamp":"2025-04-21T15:18:22.332Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:18:22.795Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:18:23.697Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:18:24.804Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:18:24.805Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:18:24.812Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:18:24.814Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:18:25.299Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:18:25.574Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:18:26.237Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:18:26.702Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:18:26.702Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:18:51.532Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:18:51.536Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:21.701Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:21.705Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:19:22.367Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.368Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:19:22.378Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.383Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:19:22.393Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.396Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:22.407Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:19:22.412Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:19:22.413Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.414Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:22.422Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.481Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:22.490Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.493Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:22.504Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.509Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:22.516Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.519Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:22.525Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:22.527Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:19:23.464Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:19:23.527Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:23.529Z"} +{"level":"info","message":"GET /api/chat/history?count_only=true","timestamp":"2025-04-21T15:19:23.546Z"} +{"level":"info","message":"GET /api/chat/history?offset=8&limit=30","timestamp":"2025-04-21T15:19:23.564Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:19:24.352Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:19:25.397Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:19:26.562Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:19:26.563Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:52.745Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:52.748Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:52.756Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:52.758Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:19:52.765Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:19:52.767Z"} +{"client":{"_connected":true,"_connecting":false,"_connectionCallback":null,"_connectionError":false,"_connectionTimeoutMillis":0,"_ended":false,"_ending":true,"_events":{},"_eventsCount":1,"_poolUseCount":6,"_queryable":false,"_types":{"_types":{"arrayParser":{},"builtins":{"ABSTIME":702,"ACLITEM":1033,"BIT":1560,"BOOL":16,"BPCHAR":1042,"BYTEA":17,"CHAR":18,"CID":29,"CIDR":650,"CIRCLE":718,"DATE":1082,"FLOAT4":700,"FLOAT8":701,"GTSVECTOR":3642,"INET":869,"INT2":21,"INT4":23,"INT8":20,"INTERVAL":1186,"JSON":114,"JSONB":3802,"MACADDR":829,"MACADDR8":774,"MONEY":790,"NUMERIC":1700,"OID":26,"PATH":602,"PG_DEPENDENCIES":3402,"PG_LSN":3220,"PG_NDISTINCT":3361,"PG_NODE_TREE":194,"POLYGON":604,"REFCURSOR":1790,"REGCLASS":2205,"REGCONFIG":3734,"REGDICTIONARY":3769,"REGNAMESPACE":4089,"REGOPER":2203,"REGOPERATOR":2204,"REGPROC":24,"REGPROCEDURE":2202,"REGROLE":4096,"REGTYPE":2206,"RELTIME":703,"SMGR":210,"TEXT":25,"TID":27,"TIME":1083,"TIMESTAMP":1114,"TIMESTAMPTZ":1184,"TIMETZ":1266,"TINTERVAL":704,"TSQUERY":3615,"TSVECTOR":3614,"TXID_SNAPSHOT":2970,"UUID":2950,"VARBIT":1562,"VARCHAR":1043,"XID":28,"XML":142}},"binary":{},"text":{}},"activeQuery":null,"binary":false,"connection":{"_connecting":true,"_emitMessage":false,"_ending":true,"_events":{"end":[null,null]},"_eventsCount":23,"_keepAlive":false,"_keepAliveInitialDelayMillis":0,"lastBuffer":false,"parsedStatements":{},"ssl":false,"stream":{"_closeAfterHandlingError":false,"_events":{"end":[null,null]},"_eventsCount":4,"_hadError":false,"_host":"postgres","_parent":null,"_pendingData":null,"_pendingEncoding":"","_readableState":{"awaitDrainWriters":null,"buffer":[],"bufferIndex":0,"highWaterMark":16384,"length":0,"pipes":[]},"_server":null,"_sockname":null,"_writableState":{"bufferedIndex":0,"corked":0,"highWaterMark":16384,"length":0,"pendingcb":0,"writelen":0},"allowHalfOpen":false,"connecting":false,"server":null}},"connectionParameters":{"binary":false,"client_encoding":"","connect_timeout":0,"database":"dapp_db","host":"postgres","idle_in_transaction_session_timeout":false,"isDomainSocket":false,"lock_timeout":false,"port":5432,"query_timeout":false,"ssl":false,"statement_timeout":false,"user":"dapp_user"},"database":"dapp_db","hasExecuted":true,"host":"postgres","port":5432,"processID":360,"queryQueue":[],"readyForQuery":true,"saslSession":null,"secretKey":1023036091,"ssl":false,"user":"dapp_user"},"code":"57P01","file":"postgres.c","length":116,"level":"error","line":"3286","message":"Uncaught Exception: terminating connection due to administrator command","name":"error","routine":"ProcessInterrupts","severity":"FATAL","stack":"error: terminating connection due to administrator command\n at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:283:98)\n at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:122:29)\n at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:35:38)\n at Socket. (/app/node_modules/pg-protocol/dist/index.js:11:42)\n at Socket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-04-21T15:20:02.189Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:20:21.379Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:20:21.396Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:20:21.423Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:20:21.426Z"} +{"level":"info","message":"GET /api/auth/nonce?address=0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:20:24.007Z"} +{"level":"info","message":"Nonce 8d0f806f82370a171e95af1fe3c92fbc сохранен для адреса 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:20:24.037Z"} +{"level":"info","message":"POST /api/auth/verify","timestamp":"2025-04-21T15:20:27.320Z"} +{"level":"info","message":"[verify] Verifying signature for address: 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-04-21T15:20:27.321Z"} +{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:27.461Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","hasTokens":true,"level":"info","message":"Token balance on bsc:","timestamp":"2025-04-21T15:20:29.132Z"} +{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-04-21T15:20:29.132Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on eth:","timestamp":"2025-04-21T15:20:29.142Z"} +{"level":"info","message":"Found admin tokens on eth","timestamp":"2025-04-21T15:20:29.142Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","timestamp":"2025-04-21T15:20:29.389Z"} +{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-04-21T15:20:29.389Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","timestamp":"2025-04-21T15:20:29.434Z"} +{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-04-21T15:20:29.435Z"} +{"balances":{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","polygon":"454852.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","eth","arbitrum","polygon"],"timestamp":"2025-04-21T15:20:29.435Z"} +{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:29.436Z"} +{"level":"info","message":"[verify] Found or created user 1 for wallet 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:29.436Z"} +{"level":"info","message":"[IdentityService] Converting guest identity for user 1 to guest_user_mapping: d7c8e008ba7c6b456dbf116a97e93b60","timestamp":"2025-04-21T15:20:29.437Z"} +{"level":"info","message":"Checking admin tokens for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:29.447Z"} +{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:29.447Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","hasTokens":true,"level":"info","message":"Token balance on bsc:","timestamp":"2025-04-21T15:20:29.781Z"} +{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-04-21T15:20:29.781Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","timestamp":"2025-04-21T15:20:29.873Z"} +{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-04-21T15:20:29.873Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on eth:","timestamp":"2025-04-21T15:20:29.887Z"} +{"level":"info","message":"Found admin tokens on eth","timestamp":"2025-04-21T15:20:29.888Z"} +{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","timestamp":"2025-04-21T15:20:30.068Z"} +{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-04-21T15:20:30.068Z"} +{"balances":{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","polygon":"454852.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","polygon","eth","arbitrum"],"timestamp":"2025-04-21T15:20:30.068Z"} +{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:30.068Z"} +{"level":"info","message":"Updated user 1 role to admin based on token holdings","timestamp":"2025-04-21T15:20:30.079Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:20:30.081Z"} +{"level":"info","message":"[linkGuestMessages] Starting for user 1 with guestId=d7c8e008ba7c6b456dbf116a97e93b60, previousGuestId=undefined","timestamp":"2025-04-21T15:20:30.082Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d7c8e008ba7c6b456dbf116a97e93b60","timestamp":"2025-04-21T15:20:30.087Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=ddf4efa4dca07970401397faae6ad10d","timestamp":"2025-04-21T15:20:30.097Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=a9c5cab9491ffd9a8340488892a3a83f","timestamp":"2025-04-21T15:20:30.100Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=fa541d53f0b7910b5d90be7822f211c0","timestamp":"2025-04-21T15:20:30.104Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=9b1fb20e39a4215abe7c83b8eb752b40","timestamp":"2025-04-21T15:20:30.108Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e4ca877a9e8a823241c5f1669ad4b177","timestamp":"2025-04-21T15:20:30.112Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=63404462543ed032df62eb0597cfbf92","timestamp":"2025-04-21T15:20:30.117Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=53e3ea1b2c59ed4f4b37a6402da579db","timestamp":"2025-04-21T15:20:30.121Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745240790811-mxagvk0lf","timestamp":"2025-04-21T15:20:30.124Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8d447b0a532867a90636e000c9bbb72a","timestamp":"2025-04-21T15:20:30.128Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745079293895-f5bi3mnlq","timestamp":"2025-04-21T15:20:30.133Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f74f7950c4b8085f2cead1620d087bb5","timestamp":"2025-04-21T15:20:30.137Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=2f2e2330b4263952294d93ae6a86146a","timestamp":"2025-04-21T15:20:30.140Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b2e89db3924be1b1d3b0f06f130cf8e0","timestamp":"2025-04-21T15:20:30.145Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b4460596d1947e93312e2607cda758ba","timestamp":"2025-04-21T15:20:30.149Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=16236f2b04a47bc549afe4960f6aeded","timestamp":"2025-04-21T15:20:30.154Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=9c7f2342b8ff1f8fe4d545f6d2af05d4","timestamp":"2025-04-21T15:20:30.159Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bf299ef8e5ac941443b24bc023d55bdf","timestamp":"2025-04-21T15:20:30.163Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e70ff3b19f49cb1ce11e3bf9d4c3f5b5","timestamp":"2025-04-21T15:20:30.168Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dca0cf1d9efe806bc9915e5a57c344b3","timestamp":"2025-04-21T15:20:30.172Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=19ca3c1e1a77f6688e48e996ec94e32b","timestamp":"2025-04-21T15:20:30.176Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dc34a86ca22b491572bc728db26ec8d2","timestamp":"2025-04-21T15:20:30.181Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5fbeaeed77f7e790089e3687b6272cc4","timestamp":"2025-04-21T15:20:30.185Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8890d8475daa4b9515427d7db88cd3f6","timestamp":"2025-04-21T15:20:30.190Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=06a8da2f6b8ccb05be8606d6f5785c3e","timestamp":"2025-04-21T15:20:30.194Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=12b912bafbdae6136947a2405c43afc7","timestamp":"2025-04-21T15:20:30.199Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=75e90bb5664f78f2d4e89dba9c764340","timestamp":"2025-04-21T15:20:30.203Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d1a1a0c6759fa0092a9ac54cc6bca38c","timestamp":"2025-04-21T15:20:30.207Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5c62c06c28391e47ca9da69d82d6b665","timestamp":"2025-04-21T15:20:30.212Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e1313ff9002847b61b9f8ea825150512","timestamp":"2025-04-21T15:20:30.215Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=3987b209726bd85f79f6668c69cec67a","timestamp":"2025-04-21T15:20:30.219Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e7dd7cc2be1f4cf5628ac67496f0ff60","timestamp":"2025-04-21T15:20:30.223Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8d17604b9cd44fa9074cba30f7acb374","timestamp":"2025-04-21T15:20:30.227Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1643e4ae05e31df62ceaa1c784dbf2e7","timestamp":"2025-04-21T15:20:30.232Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b6de4a34d192b6d3c6a04d64921bc2c6","timestamp":"2025-04-21T15:20:30.237Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d85d2c40506052a630bb7737bc2769e6","timestamp":"2025-04-21T15:20:30.242Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8edb112101cbbaa5bef2c3a08f275ec6","timestamp":"2025-04-21T15:20:30.245Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4b83b24f9c0cb26179c0637632426e4a","timestamp":"2025-04-21T15:20:30.248Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=221d5a74f84eca5d55db182e0a3d9143","timestamp":"2025-04-21T15:20:30.252Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=7e030d98195da1dd7f81b669c666dca7","timestamp":"2025-04-21T15:20:30.257Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4256b2a7e0d8b7ed947ba6c1f5f72d15","timestamp":"2025-04-21T15:20:30.261Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=a87f7b05515098ad5a3079377690f769","timestamp":"2025-04-21T15:20:30.265Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4401b63702956724a4ccb3bb849f7207","timestamp":"2025-04-21T15:20:30.269Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5957393c426559cd5ffb817d29e4da37","timestamp":"2025-04-21T15:20:30.273Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=064746c1fd4456b7021c936bb9638dfc","timestamp":"2025-04-21T15:20:30.278Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745098219233-r5wj2olz0","timestamp":"2025-04-21T15:20:30.282Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745243339797-5jz07df5q","timestamp":"2025-04-21T15:20:30.286Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=e50442b5c6fad89fc34176fc078d56f1","timestamp":"2025-04-21T15:20:30.290Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=750e6a49666b28814122e1d901aea6b5","timestamp":"2025-04-21T15:20:30.293Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8bbf43a7d107802415e69966ec47edd7","timestamp":"2025-04-21T15:20:30.296Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745248639754-svfzgedxz","timestamp":"2025-04-21T15:20:30.300Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f622d55418e4159e864ea4e6e18115d9","timestamp":"2025-04-21T15:20:30.304Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=cee8775f1ef14ec06069222412527621","timestamp":"2025-04-21T15:20:30.307Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=4801418ef94eac344f7372c5db4bcd41","timestamp":"2025-04-21T15:20:30.311Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=6f93b96d30b4ef36faa2943c5635d949","timestamp":"2025-04-21T15:20:30.315Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=784e89fbeba721cf5c3dda2267d9ddd5","timestamp":"2025-04-21T15:20:30.319Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=30c3be3e079722b3a8d20203b1a567f9","timestamp":"2025-04-21T15:20:30.324Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745221905698-9rejq7xoe","timestamp":"2025-04-21T15:20:30.329Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=85f386bbe2c9b7affbd50d0366a39147","timestamp":"2025-04-21T15:20:30.333Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=2d284866bfe0da04a3716d3f96d2cc64","timestamp":"2025-04-21T15:20:30.337Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=1745243066352-5zqw1zro4","timestamp":"2025-04-21T15:20:30.341Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8f897f5f63a679da6893cac2548cdd8c","timestamp":"2025-04-21T15:20:30.345Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d6c03e2a1a30f997e7ae94097b8bdc33","timestamp":"2025-04-21T15:20:30.348Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=00e90de9aef9134750d4519a5e10c4ee","timestamp":"2025-04-21T15:20:30.352Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f79a4edd77d8db2def23394f52e0d0a4","timestamp":"2025-04-21T15:20:30.356Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b710161e84700cd43778fb846c4017ff","timestamp":"2025-04-21T15:20:30.361Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=5a7dec430e4da72e53b8b07fc1713a4e","timestamp":"2025-04-21T15:20:30.366Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bdbb9e9a6b156fb309480755554c017c","timestamp":"2025-04-21T15:20:30.371Z"} +{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=cd399a7b2782ab9dcd510a6d624311ef","timestamp":"2025-04-21T15:20:30.375Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:20:30.379Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:20:30.393Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:20:30.397Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:20:30.421Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:20:30.428Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:20:30.437Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:30.439Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:20:30.450Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:20:30.454Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:20:30.877Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:20:31.360Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:20:31.363Z"} +{"level":"info","message":"GET /api/chat/history?count_only=true","timestamp":"2025-04-21T15:20:31.377Z"} +{"level":"info","message":"GET /api/chat/history?offset=8&limit=30","timestamp":"2025-04-21T15:20:31.404Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:20:31.441Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:20:33.031Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:20:33.616Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:20:33.617Z"} +{"level":"info","message":"GET /api/tokens/balances","timestamp":"2025-04-21T15:20:33.624Z"} +{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-04-21T15:20:33.625Z"} +{"balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on eth:","timestamp":"2025-04-21T15:20:34.142Z"} +{"balance":"500000.0","contract":"0x4B294265720B09ca39BFBA18c7E368413c0f68eB","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on bsc:","timestamp":"2025-04-21T15:20:34.560Z"} +{"balance":"499999.9","contract":"0xdce769b847a0a697239777d0b1c7dd33b6012ba0","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on arbitrum:","timestamp":"2025-04-21T15:20:35.371Z"} +{"balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","level":"info","message":"Token balance for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b on polygon:","timestamp":"2025-04-21T15:20:35.994Z"} +{"arbitrum":"499999.9","bsc":"500000.0","eth":"1500000.0","level":"info","message":"Token balances fetched for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","polygon":"454852.0","timestamp":"2025-04-21T15:20:35.994Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:21:01.365Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:21:01.368Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:21:31.514Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:21:31.517Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:22:01.666Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:22:01.670Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:22:31.789Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:22:31.792Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:23:15.026Z"} +{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-04-21T15:23:15.030Z"} +{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-04-21T15:23:42.883Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:23:43.989Z"} +{"level":"info","message":"Session saved successfully","timestamp":"2025-04-21T15:23:43.993Z"} +{"level":"info","message":"GET /api/auth/check","timestamp":"2025-04-21T15:23:44.017Z"} diff --git a/backend/logs/error.log b/backend/logs/error.log index 76df9f8..ff10ce2 100644 --- a/backend/logs/error.log +++ b/backend/logs/error.log @@ -50,3 +50,9 @@ {"code":"EAUTH","command":"AUTH PLAIN","level":"error","message":"Error sending verification code: Invalid login: 535 5.7.8 Error: authentication failed: ","response":"535 5.7.8 Error: authentication failed: ","responseCode":535,"stack":"Error: Invalid login: 535 5.7.8 Error: authentication failed: \n at SMTPConnection._formatError (/app/node_modules/nodemailer/lib/smtp-connection/index.js:809:19)\n at SMTPConnection._actionAUTHComplete (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1588:34)\n at SMTPConnection. (/app/node_modules/nodemailer/lib/smtp-connection/index.js:556:26)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)","timestamp":"2025-04-21T14:48:23.553Z"} {"code":"EAUTH","command":"AUTH PLAIN","level":"error","message":"Error in email auth initialization: Invalid login: 535 5.7.8 Error: authentication failed: ","response":"535 5.7.8 Error: authentication failed: ","responseCode":535,"stack":"Error: Invalid login: 535 5.7.8 Error: authentication failed: \n at SMTPConnection._formatError (/app/node_modules/nodemailer/lib/smtp-connection/index.js:809:19)\n at SMTPConnection._actionAUTHComplete (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1588:34)\n at SMTPConnection. (/app/node_modules/nodemailer/lib/smtp-connection/index.js:556:26)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)","timestamp":"2025-04-21T14:48:23.554Z"} {"code":"EAUTH","command":"AUTH PLAIN","level":"error","message":"Error in email auth initialization: Invalid login: 535 5.7.8 Error: authentication failed: ","response":"535 5.7.8 Error: authentication failed: ","responseCode":535,"stack":"Error: Invalid login: 535 5.7.8 Error: authentication failed: \n at SMTPConnection._formatError (/app/node_modules/nodemailer/lib/smtp-connection/index.js:809:19)\n at SMTPConnection._actionAUTHComplete (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1588:34)\n at SMTPConnection. (/app/node_modules/nodemailer/lib/smtp-connection/index.js:556:26)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)","timestamp":"2025-04-21T14:48:23.554Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:14:58.586Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:14:58.605Z"} +{"client":{"_connected":true,"_connecting":false,"_connectionCallback":null,"_connectionError":false,"_connectionTimeoutMillis":0,"_ended":false,"_ending":true,"_events":{},"_eventsCount":1,"_poolUseCount":2,"_queryable":false,"_types":{"_types":{"arrayParser":{},"builtins":{"ABSTIME":702,"ACLITEM":1033,"BIT":1560,"BOOL":16,"BPCHAR":1042,"BYTEA":17,"CHAR":18,"CID":29,"CIDR":650,"CIRCLE":718,"DATE":1082,"FLOAT4":700,"FLOAT8":701,"GTSVECTOR":3642,"INET":869,"INT2":21,"INT4":23,"INT8":20,"INTERVAL":1186,"JSON":114,"JSONB":3802,"MACADDR":829,"MACADDR8":774,"MONEY":790,"NUMERIC":1700,"OID":26,"PATH":602,"PG_DEPENDENCIES":3402,"PG_LSN":3220,"PG_NDISTINCT":3361,"PG_NODE_TREE":194,"POLYGON":604,"REFCURSOR":1790,"REGCLASS":2205,"REGCONFIG":3734,"REGDICTIONARY":3769,"REGNAMESPACE":4089,"REGOPER":2203,"REGOPERATOR":2204,"REGPROC":24,"REGPROCEDURE":2202,"REGROLE":4096,"REGTYPE":2206,"RELTIME":703,"SMGR":210,"TEXT":25,"TID":27,"TIME":1083,"TIMESTAMP":1114,"TIMESTAMPTZ":1184,"TIMETZ":1266,"TINTERVAL":704,"TSQUERY":3615,"TSVECTOR":3614,"TXID_SNAPSHOT":2970,"UUID":2950,"VARBIT":1562,"VARCHAR":1043,"XID":28,"XML":142}},"binary":{},"text":{}},"activeQuery":null,"binary":false,"connection":{"_connecting":true,"_emitMessage":false,"_ending":true,"_events":{"end":[null,null]},"_eventsCount":23,"_keepAlive":false,"_keepAliveInitialDelayMillis":0,"lastBuffer":false,"parsedStatements":{},"ssl":false,"stream":{"_closeAfterHandlingError":false,"_events":{"end":[null,null]},"_eventsCount":4,"_hadError":false,"_host":"postgres","_parent":null,"_pendingData":null,"_pendingEncoding":"","_readableState":{"awaitDrainWriters":null,"buffer":[],"bufferIndex":0,"highWaterMark":16384,"length":0,"pipes":[]},"_server":null,"_sockname":null,"_writableState":{"bufferedIndex":0,"corked":0,"highWaterMark":16384,"length":0,"pendingcb":0,"writelen":0},"allowHalfOpen":false,"connecting":false,"server":null}},"connectionParameters":{"binary":false,"client_encoding":"","connect_timeout":0,"database":"dapp_db","host":"postgres","idle_in_transaction_session_timeout":false,"isDomainSocket":false,"lock_timeout":false,"port":5432,"query_timeout":false,"ssl":false,"statement_timeout":false,"user":"dapp_user"},"database":"dapp_db","hasExecuted":true,"host":"postgres","port":5432,"processID":210,"queryQueue":[],"readyForQuery":true,"saslSession":null,"secretKey":1769938562,"ssl":false,"user":"dapp_user"},"code":"57P01","file":"postgres.c","length":116,"level":"error","line":"3286","message":"Uncaught Exception: terminating connection due to administrator command","name":"error","routine":"ProcessInterrupts","severity":"FATAL","stack":"error: terminating connection due to administrator command\n at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:283:98)\n at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:122:29)\n at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:35:38)\n at Socket. (/app/node_modules/pg-protocol/dist/index.js:11:42)\n at Socket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-04-21T15:15:37.285Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:18:20.871Z"} +{"level":"error","message":"Error: undefined","timestamp":"2025-04-21T15:18:20.884Z"} +{"client":{"_connected":true,"_connecting":false,"_connectionCallback":null,"_connectionError":false,"_connectionTimeoutMillis":0,"_ended":false,"_ending":true,"_events":{},"_eventsCount":1,"_poolUseCount":6,"_queryable":false,"_types":{"_types":{"arrayParser":{},"builtins":{"ABSTIME":702,"ACLITEM":1033,"BIT":1560,"BOOL":16,"BPCHAR":1042,"BYTEA":17,"CHAR":18,"CID":29,"CIDR":650,"CIRCLE":718,"DATE":1082,"FLOAT4":700,"FLOAT8":701,"GTSVECTOR":3642,"INET":869,"INT2":21,"INT4":23,"INT8":20,"INTERVAL":1186,"JSON":114,"JSONB":3802,"MACADDR":829,"MACADDR8":774,"MONEY":790,"NUMERIC":1700,"OID":26,"PATH":602,"PG_DEPENDENCIES":3402,"PG_LSN":3220,"PG_NDISTINCT":3361,"PG_NODE_TREE":194,"POLYGON":604,"REFCURSOR":1790,"REGCLASS":2205,"REGCONFIG":3734,"REGDICTIONARY":3769,"REGNAMESPACE":4089,"REGOPER":2203,"REGOPERATOR":2204,"REGPROC":24,"REGPROCEDURE":2202,"REGROLE":4096,"REGTYPE":2206,"RELTIME":703,"SMGR":210,"TEXT":25,"TID":27,"TIME":1083,"TIMESTAMP":1114,"TIMESTAMPTZ":1184,"TIMETZ":1266,"TINTERVAL":704,"TSQUERY":3615,"TSVECTOR":3614,"TXID_SNAPSHOT":2970,"UUID":2950,"VARBIT":1562,"VARCHAR":1043,"XID":28,"XML":142}},"binary":{},"text":{}},"activeQuery":null,"binary":false,"connection":{"_connecting":true,"_emitMessage":false,"_ending":true,"_events":{"end":[null,null]},"_eventsCount":23,"_keepAlive":false,"_keepAliveInitialDelayMillis":0,"lastBuffer":false,"parsedStatements":{},"ssl":false,"stream":{"_closeAfterHandlingError":false,"_events":{"end":[null,null]},"_eventsCount":4,"_hadError":false,"_host":"postgres","_parent":null,"_pendingData":null,"_pendingEncoding":"","_readableState":{"awaitDrainWriters":null,"buffer":[],"bufferIndex":0,"highWaterMark":16384,"length":0,"pipes":[]},"_server":null,"_sockname":null,"_writableState":{"bufferedIndex":0,"corked":0,"highWaterMark":16384,"length":0,"pendingcb":0,"writelen":0},"allowHalfOpen":false,"connecting":false,"server":null}},"connectionParameters":{"binary":false,"client_encoding":"","connect_timeout":0,"database":"dapp_db","host":"postgres","idle_in_transaction_session_timeout":false,"isDomainSocket":false,"lock_timeout":false,"port":5432,"query_timeout":false,"ssl":false,"statement_timeout":false,"user":"dapp_user"},"database":"dapp_db","hasExecuted":true,"host":"postgres","port":5432,"processID":360,"queryQueue":[],"readyForQuery":true,"saslSession":null,"secretKey":1023036091,"ssl":false,"user":"dapp_user"},"code":"57P01","file":"postgres.c","length":116,"level":"error","line":"3286","message":"Uncaught Exception: terminating connection due to administrator command","name":"error","routine":"ProcessInterrupts","severity":"FATAL","stack":"error: terminating connection due to administrator command\n at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:283:98)\n at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:122:29)\n at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:35:38)\n at Socket. (/app/node_modules/pg-protocol/dist/index.js:11:42)\n at Socket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-04-21T15:20:02.189Z"} diff --git a/backend/middleware/errorHandler.js b/backend/middleware/errorHandler.js index a031332..813c2db 100644 --- a/backend/middleware/errorHandler.js +++ b/backend/middleware/errorHandler.js @@ -1,10 +1,12 @@ +const { AppError, ErrorTypes } = require('../utils/error'); const logger = require('../utils/logger'); const { ERROR_CODES } = require('../utils/constants'); /** * Middleware для обработки ошибок */ -function errorHandler(err, req, res, next) { +// eslint-disable-next-line no-unused-vars +const errorHandler = (err, req, res, /* next */) => { // Логируем ошибку logger.error(`Error: ${err.message}`, { stack: err.stack, diff --git a/backend/routes/auth.js b/backend/routes/auth.js index 312b814..c0cdc7c 100644 --- a/backend/routes/auth.js +++ b/backend/routes/auth.js @@ -4,15 +4,12 @@ const crypto = require('crypto'); const db = require('../db'); const logger = require('../utils/logger'); const rateLimit = require('express-rate-limit'); -const { checkRole, requireAuth, auth } = require('../middleware/auth'); +const { requireAuth } = require('../middleware/auth'); const authService = require('../services/auth-service'); -const emailBot = require('../services/emailBot'); -const { verificationCodes } = require('../services/telegramBot'); const { ethers } = require('ethers'); const { initTelegramAuth } = require('../services/telegramBot'); const emailAuth = require('../services/emailAuth'); const verificationService = require('../services/verification-service'); -const { processGuestMessages } = require('./chat'); const identityService = require('../services/identity-service'); const sessionService = require('../services/session-service'); @@ -107,18 +104,11 @@ router.post('/verify', async (req, res) => { ); // Связываем кошелек с пользователем через identity-service для предотвращения дубликатов - const linkResult = await authService.linkIdentity(userId, 'wallet', address); - - if (!linkResult.success && linkResult.error) { - return res.status(400).json({ - success: false, - error: linkResult.error, - }); - } + await authService.linkIdentity(userId, 'wallet', address); // Если linkResult.message содержит 'already exists', значит кошелек уже привязан logger.info( - `[verify] Wallet ${normalizedAddress} linked to user ${userId}: ${linkResult.message || 'success'}` + `[verify] Wallet ${normalizedAddress} linked to user ${userId}: already exists` ); } else { // Находим или создаем пользователя, если не авторизован @@ -443,17 +433,13 @@ router.post('/email/verify-code', async (req, res) => { // Инициализация Telegram аутентификации router.post('/telegram/init', async (req, res) => { try { - const { verificationCode, botLink } = await initTelegramAuth(req.session); + const { userId } = req.session; - if (!verificationCode || !botLink) { - throw new Error('Failed to generate verification code'); - } + // Инициализируем процесс аутентификации через Telegram + await initTelegramAuth(userId); - res.json({ - success: true, - verificationCode, - botLink, - }); + // Не возвращаем данные обратно, так как они отправляются ботом + res.json({ success: true, message: 'Проверьте вашего Telegram бота' }); } catch (error) { logger.error('Error initializing Telegram auth:', error); diff --git a/backend/routes/chat.js b/backend/routes/chat.js index b3bc650..049adad 100644 --- a/backend/routes/chat.js +++ b/backend/routes/chat.js @@ -2,11 +2,8 @@ const express = require('express'); const router = express.Router(); const aiAssistant = require('../services/ai-assistant'); const db = require('../db'); -const { requireAuth, requireAdmin } = require('../middleware/auth'); const logger = require('../utils/logger'); -const crypto = require('crypto'); -const { saveGuestMessageToDatabase } = require('../db'); -const { v4: uuidv4 } = require('uuid'); +const { requireAuth } = require('../middleware/auth'); // Функция для обработки гостевых сообщений после аутентификации async function processGuestMessages(userId, guestId) { diff --git a/backend/routes/identities.js b/backend/routes/identities.js index 949debb..90a4636 100644 --- a/backend/routes/identities.js +++ b/backend/routes/identities.js @@ -45,7 +45,7 @@ router.post('/link', requireAuth, async (req, res) => { } } - const result = await authService.linkIdentity(userId, type, value); + await authService.linkIdentity(userId, type, value); // Обновляем сессию if (type === 'wallet') { diff --git a/backend/routes/users.js b/backend/routes/users.js index 63adbc2..0107454 100644 --- a/backend/routes/users.js +++ b/backend/routes/users.js @@ -3,6 +3,7 @@ const router = express.Router(); const db = require('../db'); const logger = require('../utils/logger'); const { requireAuth } = require('../middleware/auth'); +// const userService = require('../services/userService'); // Получение списка пользователей router.get('/', (req, res) => { @@ -69,48 +70,53 @@ router.post('/update-profile', requireAuth, async (req, res) => { } }); -// Маршрут для получения профиля пользователя -router.get('/profile/current', requireAuth, async (req, res) => { +// Получить профиль текущего пользователя +/* +router.get('/profile', requireAuth, async (req, res) => { try { const userId = req.session.userId; - - // Получение данных пользователя - const userResult = await db.query( - 'SELECT id, username, first_name, last_name, role, status, created_at, preferred_language FROM users WHERE id = $1', - [userId] - ); - - if (userResult.rows.length === 0) { - return res.status(404).json({ error: 'Пользователь не найден' }); + const user = await userService.getUserProfile(userId); + if (!user) { + return res.status(404).json({ success: false, message: 'User not found' }); } - - // Получение идентификаторов пользователя - const identitiesResult = await db.query( - 'SELECT provider, provider_id FROM user_identities WHERE user_id = $1', - [userId] - ); - - const user = userResult.rows[0]; - const identities = identitiesResult.rows.reduce((acc, identity) => { - acc[identity.provider] = identity.provider_id; - return acc; - }, {}); - - res.json({ - id: user.id, - username: user.username, - firstName: user.first_name, - lastName: user.last_name, - role: user.role, - status: user.status, - createdAt: user.created_at, - preferredLanguage: user.preferred_language, - identities, - }); + res.json({ success: true, user }); } catch (error) { - logger.error('Error getting user profile:', error); - res.status(500).json({ error: 'Внутренняя ошибка сервера' }); + console.error('Error getting user profile:', error); + res.status(500).json({ success: false, message: 'Internal server error' }); } }); +*/ + +// Обновить профиль текущего пользователя +/* +router.put('/profile', requireAuth, async (req, res) => { + try { + const userId = req.session.userId; + const profileData = req.body; + const updatedUser = await userService.updateUserProfile(userId, profileData); + res.json({ success: true, user: updatedUser, message: 'Profile updated successfully' }); + } catch (error) { + console.error('Error updating user profile:', error); + // Можно добавить более специфичную обработку ошибок, например, если данные невалидны + res.status(500).json({ success: false, message: 'Internal server error' }); + } +}); +*/ + +// GET /api/users - Получить список всех пользователей (пример, может требовать прав администратора) +// В текущей реализации этот маршрут не используется и закомментирован +/* +router.get('/', async (req, res) => { + try { + // const users = await userService.getAllUsers(); // Удаляем + await userService.getAllUsers(); // Просто вызываем, если нужно действие, но результат не используется + // res.json({ success: true, users }); + res.json({ success: true, message: "Users retrieved" }); // Пример ответа без данных + } catch (error) { + console.error('Error getting all users:', error); + res.status(500).json({ success: false, message: 'Internal server error' }); + } +}); +*/ module.exports = router; diff --git a/frontend/src/composables/useAuth.js b/frontend/src/composables/useAuth.js index eaf069b..899fafd 100644 --- a/frontend/src/composables/useAuth.js +++ b/frontend/src/composables/useAuth.js @@ -177,6 +177,7 @@ export function useAuth() { console.log('Sending link-guest-messages request with data:', identifiersData); + /* Удаляем ненужный вызов try { // Отправляем запрос на связывание сообщений const response = await axios.post('/api/auth/link-guest-messages', identifiersData); @@ -219,6 +220,18 @@ export function useAuth() { error: error.message, }; } + */ + // Предполагаем, что бэкенд автоматически связывает сообщения + // Очищаем данные гостя локально + console.log('Assuming backend handles message linking. Clearing local guest data.'); + localStorage.removeItem('guestMessages'); + localStorage.removeItem('guestId'); + // Добавляем текущий guestId в обработанные, чтобы не пытаться отправить его снова + if(localGuestId) { + updateProcessedGuestIds([localGuestId]); + } + return { success: true, message: 'Local guest data cleared.' }; + } return { success: false, message: 'Not authenticated' };