Всем привет! Есть такой код, который должен брать информацию из смарт контракта BSC и добавлять строки в базу данных PHPMYADMIN. Не могу понять в чем дело, но регистрация в смарт контракте происходит, а в БД не добавляет строки. service.php Код: PHP: <? defined('ROOT_DIR') or header('HTTP/1.1 404 Not Found') or header('Status: 404 Not Found') or die; $Db = module('db'); $web3api = module('web3api'); $Fetch = module('fetch'); $this->contract = ''; $this->contract_deploy_block = 0; // Очистить базу от данных контракта $this->clearBD = function() use(&$Db) { if($this->contract_deploy_block != $Db->storage('syncWithContract.block')) { $Db->storage('syncWithContract.block', $this->contract_deploy_block); $Db->storage('syncWithContract.lastBlock', null); foreach(['users', 'users_levels', 'profits'] as $v) $Db->query("TRUNCATE `$v`"); } }; // Парсить лог $this->parseLog = function($log) use(&$Db, &$web3api) { $key = md5($log['transactionHash'].$log['logIndex']); $data = array_map('hexdec', $web3api->parseData($log['data'])); $block = $web3api->api('eth_getBlockByHash', [$log['blockHash'], false]); $time = hexdec($block['timestamp']); // event Register(address indexed addr, address indexed inviter, uint256 id); if($log['topics'][0] == '0xcc0bec1447060c88cdc5a739cf29cfa26c453574dd3f5b9e4dcc317d6401cb1c') { if(!$Db->val("SELECT `id` FROM `users` WHERE `addr` = ?", ['0x'.substr($log['topics'][1], 26)])) { $Db->insert('users', [ 'id' => $data[0], 'parent_id' => $Db->val("SELECT `id` FROM `users` WHERE `addr` = ?", ['0x'.substr($log['topics'][2], 26)]), 'time_add' => $time, 'addr' => '0x'.substr($log['topics'][1], 26) ]); } } // event BuyLevel(address indexed addr, address indexed upline, uint8 level, uint40 expires); else if($log['topics'][0] == '0xa931ae1a242aa90f4b50bb7ca26c1da1f3aa69f4e75468b217d9e1b9d8a6fc13') { $Db->insert('users_levels', [ 'key' => $key, 'user_id' => $Db->val("SELECT `id` FROM `users` WHERE `addr` = ?", ['0x'.substr($log['topics'][1], 26)]), 'parent_id' => $Db->val("SELECT `id` FROM `users` WHERE `addr` = ?", ['0x'.substr($log['topics'][2], 26)]), 'level_id' => $data[0] + 1, 'time_add' => $time, 'time_expires' => $data[1], 'amount' => $Db->val("SELECT `price` FROM `levels` WHERE `id` = ?", [$data[0] + 1]) ]); } // event Profit(address indexed addr, address indexed referral, uint256 value); // event Lost(address indexed addr, address indexed referral, uint256 value); else if( $log['topics'][0] == '0x927ca72beeafa042127c9b97483d6b6f5ada2790237a7b3310232cab8888ac27' || $log['topics'][0] == '0xb38c5ffc8559f83ecf23d55719cd798bf510f15e45ad81bdc0b0026fa9d7311f' ) { $value = round($data[0] / 1e18, 2); $Db->insert('profits', [ 'key' => $key, 'user_id' => $Db->val("SELECT `id` FROM `users` WHERE `addr` = ?", ['0x'.substr($log['topics'][1], 26)]), 'level_id' => $Db->val("SELECT `id` FROM `levels` WHERE `price` >= ? ORDER BY price ASC LIMIT 1", [$value]), 'referral_id' => $Db->val("SELECT `id` FROM `users` WHERE `addr` = ?", ['0x'.substr($log['topics'][2], 26)]), 'time_add' => $time, 'lost' => $log['topics'][0] == '0xb38c5ffc8559f83ecf23d55719cd798bf510f15e45ad81bdc0b0026fa9d7311f' ? 1 : 0, 'amount' => $value ]); } }; // Получить рейтинги валют в USD $this->getRates = function() use(&$Db, &$Fetch) { if(!($rates = $Db->storage('sc.gateway.api:rates'))) { $Db->storage('sc.gateway.api:rates', ($rates = json_decode($Fetch->query('https://api.smartcontract.ru/gateway/rates_usd.json')['body'], true)['data']), time() + 600); } return $rates; }; // Синхронизироваться с смартконтрактом $this->syncWithContract = function($App, $data = null) use(&$Db, &$web3api) { if($App->params['tx']) { try { $tx = $web3api->api('eth_getTransactionReceipt', [$App->params['tx']]); foreach((array)$tx['logs'] as $log) $this->parseLog($log); $App->json(['status' => !!hexdec($tx['status'])]); } catch(Exception $e) { $App->json(['status' => false]); } } else { $this->clearBD(); $block = (int)$Db->storage('syncWithContract.lastBlock') ?: $this->contract_deploy_block; try { foreach($web3api->getLogs($this->contract, '0x'.dechex($block - 0), [], '0x'.dechex($block + 100000)) as $log) { if(($b = hexdec(substr($log['blockNumber'], 0))) > $block) { $block = $b; } $this->parseLog($log); } $Db->storage('syncWithContract.lastBlock', $block); } catch(Exception $e) { $Db->storage('syncWithContract.error', $e->getMessage(), time()); } } }; Может в других кодах проблема, не могу понять. Помогите, пожалуйста! Вставляй код кнопкой </>