fix issues with new chainquery schema
fix bittrex API
This commit is contained in:
parent
07d9521cfe
commit
9b554eec1b
8 changed files with 881 additions and 388 deletions
|
@ -2,18 +2,23 @@
|
|||
|
||||
A simple PHP block explorer for browsing transactions and claims on the [LBRY](https://lbry.com) blockchain. The explorer was developed using CakePHP which is a model-view-controller (MVC) PHP framework.
|
||||
|
||||
## Installation
|
||||
## Requirements
|
||||
There are some prerequisites that need to be installed before the explorer can be accessed.
|
||||
* Web server - Apache, caddy or nginx
|
||||
* [lbrycrd](https://github.com/lbryio/lbrycrd) with txindex turned on
|
||||
* MariaDB 10.2 or higher
|
||||
* Redis Server (optional, only required for the CakePHP redis cache engine, or to run `forevermempool`)
|
||||
* PHP 7.2 or higher
|
||||
* PHP 7.4 or higher
|
||||
* php-fpm
|
||||
* [igbinary extension](https://github.com/igbinary/igbinary)
|
||||
* [phpredis extension](https://github.com/phpredis/phpredis)
|
||||
* composer (PHP package manager)
|
||||
|
||||
on ubuntu you may use this to install php requirements
|
||||
```bash
|
||||
sudo apt install php7.4-gmp php7.4-intl php7.4-mbstring php7.4-mysql php7.4-bcmath php7.4-gd
|
||||
```
|
||||
|
||||
### Installation steps
|
||||
* Clone the Github repository. `git clone https://github.com/lbryio/block-explorer`
|
||||
* Create a MariaDB database using the DDL found in `block-explorer/sql/lbryexplorer.ddl.sql`
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
"scripts": {
|
||||
"post-install-cmd": "App\\Console\\Installer::postInstall",
|
||||
"post-create-project-cmd": "App\\Console\\Installer::postInstall",
|
||||
"post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump",
|
||||
"check": [
|
||||
"@test",
|
||||
"@cs-check"
|
||||
|
@ -50,5 +49,11 @@
|
|||
"cs-fix": "phpcbf --colors --standard=vendor/cakephp/cakephp-codesniffer/CakePHP ./src ./tests",
|
||||
"test": "phpunit --colors=always"
|
||||
},
|
||||
"prefer-stable": true
|
||||
"prefer-stable": true,
|
||||
"config": {
|
||||
"allow-plugins": {
|
||||
"cakephp/plugin-installer": true,
|
||||
"kylekatarnls/update-helper": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
1197
composer.lock
generated
1197
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -25,7 +25,7 @@ class MainController extends AppController {
|
|||
|
||||
const txOutSetInfo = 'lbrcrd.tosi';
|
||||
|
||||
const bittrexMarketUrl = 'https://bittrex.com/api/v1.1/public/getticker?market=BTC-LBC';
|
||||
const bittrexMarketUrl = 'https://api.bittrex.com/v3/markets/LBC-BTC/ticker';
|
||||
|
||||
const blockchainTickerUrl = 'https://blockchain.info/ticker';
|
||||
|
||||
|
@ -72,13 +72,13 @@ class MainController extends AppController {
|
|||
$btrxjson = json_decode(self::curl_get(self::bittrexMarketUrl));
|
||||
$blckjson = json_decode(self::curl_get(self::blockchainTickerUrl));
|
||||
|
||||
if ($btrxjson->success) {
|
||||
$onelbc = $btrxjson->result->Bid;
|
||||
if ($btrxjson) {
|
||||
$onelbc = $btrxjson->bidRate;
|
||||
$lbcPrice = 0;
|
||||
if (isset($blckjson->USD)) {
|
||||
$lbcPrice = $onelbc * $blckjson->USD->buy;
|
||||
if ($lbcPrice > 0) {
|
||||
$priceInfo->price = number_format($lbcPrice, 2, '.', '');
|
||||
$priceInfo->price = number_format($lbcPrice, 3, '.', '');
|
||||
$priceInfo->time = $now->format('c');
|
||||
if ($this->redis) {
|
||||
$this->redis->set(self::lbcPriceKey, json_encode($priceInfo));
|
||||
|
@ -99,11 +99,7 @@ class MainController extends AppController {
|
|||
$lbcUsdPrice = $this->_getLatestPrice();
|
||||
$this->set('lbcUsdPrice', $lbcUsdPrice);
|
||||
|
||||
$blocks = $this->Blocks->find()->select(['chainwork', 'confirmations', 'difficulty', 'hash', 'height', 'transaction_hashes', 'block_time', 'block_size'])->order(['height' => 'desc'])->limit(6)->toArray();
|
||||
for ($i = 0; $i < count($blocks); $i++) {
|
||||
$tx_hashes = preg_split('#,#', $blocks[$i]->transaction_hashes);
|
||||
$blocks[$i]->transaction_count = count($tx_hashes);
|
||||
}
|
||||
$blocks = $this->Blocks->find()->select(['chainwork', 'confirmations', 'difficulty', 'hash', 'height', 'block_time', 'block_size','tx_count'])->order(['height' => 'desc'])->limit(6)->toArray();
|
||||
// hash rate
|
||||
$hashRate = $this->_formatHashRate($this->_gethashrate());
|
||||
|
||||
|
@ -262,11 +258,7 @@ class MainController extends AppController {
|
|||
$this->loadModel('Outputs');
|
||||
|
||||
// load 10 blocks and transactions
|
||||
$blocks = $this->Blocks->find()->select(['height', 'block_time', 'transaction_hashes'])->order(['height' => 'desc'])->limit(10)->toArray();
|
||||
for ($i = 0; $i < count($blocks); $i++) {
|
||||
$tx_hashes = preg_split('#,#', $blocks[$i]->transaction_hashes);
|
||||
$blocks[$i]->transaction_count = count($tx_hashes);
|
||||
}
|
||||
$blocks = $this->Blocks->find()->select(['height', 'block_time', 'tx_count'])->order(['height' => 'desc'])->limit(10)->toArray();
|
||||
|
||||
$transactions = $this->Transactions->find()->select(['Transactions.id', 'Transactions.hash', 'Transactions.value', 'Transactions.input_count', 'Transactions.output_count', 'Transactions.transaction_time', 'Transactions.created_at'])->order(['Transactions.created_at' => 'desc'])->limit(10)->toArray();
|
||||
|
||||
|
@ -350,7 +342,7 @@ class MainController extends AppController {
|
|||
$offset = ($page - 1) * $pageLimit;
|
||||
$currentBlock = $this->Blocks->find()->select(['height'])->order(['height' => 'DESC'])->first();
|
||||
$blocks = $this->Blocks->find()->select(
|
||||
['height', 'difficulty', 'transaction_hashes', 'block_size', 'nonce', 'block_time']
|
||||
['height', 'difficulty', 'block_size', 'nonce', 'block_time','tx_count']
|
||||
)->offset($offset)->limit($pageLimit)->order(['height' => 'DESC'])->toArray();
|
||||
$this->set('currentBlock', $currentBlock);
|
||||
$this->set('blocks', $blocks);
|
||||
|
@ -650,12 +642,7 @@ class MainController extends AppController {
|
|||
// Load 10 blocks
|
||||
$this->autoRender = false;
|
||||
$this->loadModel('Blocks');
|
||||
$blocks = $this->Blocks->find()->select(['Height' => 'height', 'BlockTime' => 'block_time', 'transaction_hashes'])->order(['Height' => 'desc'])->limit(10)->toArray();
|
||||
for ($i = 0; $i < count($blocks); $i++) {
|
||||
$tx_hashes = preg_split('#,#', $blocks[$i]->transaction_hashes);
|
||||
$blocks[$i]->TransactionCount = count($tx_hashes);
|
||||
unset($blocks[$i]->transaction_hashes);
|
||||
}
|
||||
$blocks = $this->Blocks->find()->select(['Height' => 'height', 'BlockTime' => 'block_time', 'TransactionCount'=>'tx_count'])->order(['Height' => 'desc'])->limit(10)->toArray();
|
||||
|
||||
$this->_jsonResponse(['success' => true, 'blocks' => $blocks]);
|
||||
}
|
||||
|
@ -737,12 +724,9 @@ class MainController extends AppController {
|
|||
public function apirecentblocks() {
|
||||
$this->autoRender = false;
|
||||
$this->loadModel('Blocks');
|
||||
$blocks = $this->Blocks->find()->select(['Difficulty' => 'difficulty', 'Hash' => 'hash', 'Height' => 'height', 'transaction_hashes', 'BlockTime' => 'block_time', 'BlockSize' => 'block_size'])->order(['Height' => 'desc'])->limit(6)->toArray();
|
||||
$blocks = $this->Blocks->find()->select(['Difficulty' => 'difficulty', 'Hash' => 'hash', 'Height' => 'height', 'BlockTime' => 'block_time', 'BlockSize' => 'block_size', 'TransactionCount' => 'tx_count'])->order(['Height' => 'desc'])->limit(6)->toArray();
|
||||
for ($i = 0; $i < count($blocks); $i++) {
|
||||
$tx_hashes = preg_split('#,#', $blocks[$i]->transaction_hashes);
|
||||
$blocks[$i]->TransactionCount = count($tx_hashes);
|
||||
$blocks[$i]->Difficulty = number_format($blocks[$i]->Difficulty, 2, '.', '');
|
||||
unset($blocks[$i]->transaction_hashes);
|
||||
}
|
||||
return $this->_jsonResponse(['success' => true, 'blocks' => $blocks]);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ class AuxShell extends Shell {
|
|||
|
||||
public static $rpcurl;
|
||||
|
||||
const bittrex = 'https://bittrex.com/api/v1.1/public/getticker?market=BTC-LBC';
|
||||
const bittrex = 'https://api.bittrex.com/v3/markets/LBC-BTC/ticker';
|
||||
|
||||
const blockchainticker = 'https://blockchain.info/ticker';
|
||||
|
||||
|
@ -150,13 +150,13 @@ class AuxShell extends Shell {
|
|||
$btrxjson = json_decode(self::curl_get(self::bittrex));
|
||||
$blckjson = json_decode(self::curl_get(self::blockchainticker));
|
||||
|
||||
if ($btrxjson->success) {
|
||||
$btc = $btrxjson->result->Bid;
|
||||
if ($btrxjson) {
|
||||
$btc = $btrxjson->bidRate;
|
||||
$usd = 0;
|
||||
if (isset($blckjson->USD)) {
|
||||
$usd = $btc * $blckjson->USD->buy;
|
||||
$priceInfo = new \stdClass();
|
||||
$priceInfo->price = number_format($usd, 2, '.', '');
|
||||
$priceInfo->price = number_format($usd, 3, '.', '');
|
||||
$priceInfo->time = $now->format('c');
|
||||
if ($redis) {
|
||||
$redis->set(self::lbcpricekey, json_encode($priceInfo));
|
||||
|
|
|
@ -184,7 +184,7 @@
|
|||
<td class="right"><a href="/blocks/<?php echo $block->height ?>"><?php echo $block->height ?></a></td>
|
||||
<td class="pad-left"><?php echo number_format($block->difficulty, 8, '.', '') ?></td>
|
||||
<td class="right"><?php echo number_format((($currentBlock->height - $block->height) + 1), 0, '', ',') ?></td>
|
||||
<td class="right"><?php echo count(preg_split('#,#', $block->transaction_hashes)) ?></td>
|
||||
<td class="right"><?php echo $block->tx_count ?></td>
|
||||
<td class="right"><?php echo round($block->block_size / 1024, 2) . 'KB' ?></td>
|
||||
<td class="right pad-left"><?php echo $block->nonce ?></td>
|
||||
<td class="pad-left"><?php echo \DateTime::createFromFormat('U', $block->block_time)->format('d M Y H:i:s') ?> UTC</td>
|
||||
|
|
|
@ -171,7 +171,7 @@
|
|||
<td><a href="/blocks/<?php echo $block->height ?>"><?php echo $block->height ?></a></td>
|
||||
<td><?php echo \Carbon\Carbon::createFromTimestamp($block->block_time)->diffForHumans(); ?></td>
|
||||
<td class="right"><?php echo round($block->block_size / 1024, 2) . 'KB' ?></td>
|
||||
<td class="right"><?php echo $block->transaction_count ?></td>
|
||||
<td class="right"><?php echo $block->tx_count ?></td>
|
||||
<td class="right"><?php echo number_format($block->difficulty, 2, '.', '') ?></td>
|
||||
<td class="last-cell"><?php echo DateTime::createFromFormat('U', $block->block_time)->format('d M Y H:i:s') . ' UTC' ?></td>
|
||||
</tr>
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
<tr data-height="<?php echo $block->height ?>" data-time="<?php echo $block->block_time ?>">
|
||||
<td><a href="/blocks/<?php echo $block->height ?>" target="_blank"><?php echo $block->height ?></a></td>
|
||||
<td><?php echo \Carbon\Carbon::createFromTimestamp($block->block_time)->diffForHumans(); ?></td>
|
||||
<td class="right"><?php echo $block->transaction_count ?></td>
|
||||
<td class="right"><?php echo $block->tx_count ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
|
|
Loading…
Reference in a new issue