├── .editorconfig
├── .gitignore
├── README.md
├── app
├── config
│ ├── config.template
│ ├── loader.php
│ ├── routes.php
│ └── services.php
├── controllers
│ ├── AccountApiController.php
│ ├── AccountController.php
│ ├── AccountsController.php
│ ├── ApiController.php
│ ├── AppController.php
│ ├── AppsController.php
│ ├── BlockController.php
│ ├── BlocksController.php
│ ├── ChartsController.php
│ ├── CommentController.php
│ ├── CommentsController.php
│ ├── ControllerBase.php
│ ├── ForumsController.php
│ ├── IndexController.php
│ ├── LabsController.php
│ ├── LiveController.php
│ ├── RwController.php
│ ├── SearchController.php
│ ├── StatsController.php
│ ├── TxController.php
│ └── WitnessController.php
├── helpers
│ ├── Convert.php
│ ├── LargeNumber.php
│ ├── Markdown.php
│ ├── OpName.php
│ ├── Reputation.php
│ └── TimeAgo.php
├── libs
│ ├── steemd.php
│ └── utilities.php
├── models
│ ├── Account.php
│ ├── AccountHistory.php
│ ├── AuthorReward.php
│ ├── BSON
│ │ ├── Array.php
│ │ └── BSON_Document.php
│ ├── BSON_Document.php
│ ├── BenefactorReward.php
│ ├── Block30d.php
│ ├── Comment.php
│ ├── CommentDiff.php
│ ├── Convert.php
│ ├── CurationReward.php
│ ├── Document.php
│ ├── FeedPublish.php
│ ├── Follow.php
│ ├── FundsHistory.php
│ ├── Pow.php
│ ├── PropsHistory.php
│ ├── Reblog.php
│ ├── Statistics.php
│ ├── Status.php
│ ├── Transfer.php
│ ├── VestingDeposit.php
│ ├── VestingWithdraw.php
│ ├── Vote.php
│ ├── Witness.php
│ ├── WitnessHistory.php
│ ├── WitnessMiss.php
│ └── WitnessVote.php
└── views
│ ├── _elements
│ ├── account_list_item.volt
│ ├── account_table_row.volt
│ ├── cards
│ │ ├── account.volt
│ │ └── app.volt
│ ├── comment_list.volt
│ ├── comment_table.volt
│ ├── definition_table.volt
│ ├── layouts
│ │ ├── footer.volt
│ │ ├── head.volt
│ │ ├── menu.volt
│ │ └── scripts.volt
│ ├── paginator.volt
│ ├── sidebar
│ │ ├── commands.volt
│ │ ├── earnings.volt
│ │ └── readmore.volt
│ ├── tx
│ │ ├── account_create.volt
│ │ ├── account_create_with_delegation.volt
│ │ ├── account_update.volt
│ │ ├── account_witness_proxy.volt
│ │ ├── account_witness_vote.volt
│ │ ├── author_reward.volt
│ │ ├── cancel_transfer_from_savings.volt
│ │ ├── change_recovery_account.volt
│ │ ├── claim_reward_balance.volt
│ │ ├── comment.volt
│ │ ├── comment_benefactor_reward.volt
│ │ ├── comment_options.volt
│ │ ├── comment_reward.volt
│ │ ├── convert.volt
│ │ ├── curate_reward.volt
│ │ ├── curation_reward.volt
│ │ ├── custom.volt
│ │ ├── custom_json.volt
│ │ ├── delegate_vesting_shares.volt
│ │ ├── delete_comment.volt
│ │ ├── escrow_approve.volt
│ │ ├── escrow_dispute.volt
│ │ ├── escrow_release.volt
│ │ ├── escrow_transfer.volt
│ │ ├── feed_publish.volt
│ │ ├── fill_convert_request.volt
│ │ ├── fill_order.volt
│ │ ├── fill_transfer_from_savings.volt
│ │ ├── fill_vesting_withdraw.volt
│ │ ├── interest.volt
│ │ ├── limit_order_cancel.volt
│ │ ├── limit_order_create.volt
│ │ ├── pow.volt
│ │ ├── pow2.volt
│ │ ├── producer_reward.volt
│ │ ├── recover_account.volt
│ │ ├── request_account_recovery.volt
│ │ ├── return_vesting_delegation.volt
│ │ ├── set_withdraw_vesting_route.volt
│ │ ├── shutdown_witness.volt
│ │ ├── transfer.volt
│ │ ├── transfer_from_savings.volt
│ │ ├── transfer_to_savings.volt
│ │ ├── transfer_to_vesting.volt
│ │ ├── unknown.volt
│ │ ├── vote.volt
│ │ ├── withdraw_vesting.volt
│ │ └── witness_update.volt
│ ├── vesting_shares.volt
│ ├── voter_rshares.volt
│ ├── voter_weight.volt
│ ├── warning.volt
│ └── witness_vesting_shares.volt
│ ├── account
│ ├── _elements
│ │ └── followers_navigation.volt
│ ├── view.volt
│ └── view
│ │ ├── authoring.volt
│ │ ├── authoringDate.volt
│ │ ├── beneficiaries.volt
│ │ ├── beneficiariesDate.volt
│ │ ├── blocks.volt
│ │ ├── curation.volt
│ │ ├── curationDate.volt
│ │ ├── data.volt
│ │ ├── followers.volt
│ │ ├── followersWhales.volt
│ │ ├── following.volt
│ │ ├── missed.volt
│ │ ├── posts.volt
│ │ ├── powerdown.volt
│ │ ├── powerup.volt
│ │ ├── props.volt
│ │ ├── proxied.volt
│ │ ├── reblogged.volt
│ │ ├── reblogs.volt
│ │ ├── replies.volt
│ │ ├── transfers.volt
│ │ ├── view.volt
│ │ ├── votes.volt
│ │ └── witness.volt
│ ├── accounts
│ └── list.volt
│ ├── app
│ ├── view.volt
│ └── view
│ │ ├── earnings.volt
│ │ └── view.volt
│ ├── apps
│ └── index.volt
│ ├── block
│ ├── comment_options.volt
│ └── view.volt
│ ├── blocks
│ └── index.volt
│ ├── charts
│ ├── account
│ │ ├── authoring.volt
│ │ ├── blocks.volt
│ │ ├── curation.volt
│ │ ├── followers.volt
│ │ ├── posts.volt
│ │ ├── powerdown.volt
│ │ ├── powerup.volt
│ │ ├── transfers.volt
│ │ ├── view.volt
│ │ ├── votes.volt
│ │ └── witness.volt
│ ├── activity.volt
│ ├── authors.volt
│ ├── chart
│ │ ├── rewards.volt
│ │ └── steem.volt
│ ├── daily.volt
│ ├── growth.volt
│ ├── index.volt
│ ├── price.volt
│ ├── rewards.volt
│ ├── steem.volt
│ ├── supply.volt
│ └── votes.volt
│ ├── comment
│ ├── curie.volt
│ ├── list.volt
│ ├── view.volt
│ └── view
│ │ ├── data.volt
│ │ ├── edits.volt
│ │ ├── reblogs.volt
│ │ ├── replies.volt
│ │ ├── reply.volt
│ │ ├── tags.volt
│ │ ├── view.volt
│ │ └── votes.volt
│ ├── comments
│ ├── curie.volt
│ ├── daily.volt
│ ├── list.volt
│ ├── view.volt
│ └── view
│ │ ├── data.volt
│ │ ├── reblogs.volt
│ │ ├── replies.volt
│ │ ├── reply.volt
│ │ ├── tags.volt
│ │ ├── view.volt
│ │ └── votes.volt
│ ├── forums
│ ├── _breadcrumb.volt
│ ├── board.volt
│ ├── index.volt
│ ├── post.volt
│ └── view.volt
│ ├── index
│ ├── homepage.volt
│ ├── index.volt
│ ├── live.volt
│ └── show404.volt
│ ├── labs
│ ├── author.volt
│ ├── benefactors.volt
│ ├── clients.volt
│ ├── conversions.volt
│ ├── curation.volt
│ ├── flags.volt
│ ├── hf19.volt
│ ├── index.volt
│ ├── pending.volt
│ ├── powerdown.volt
│ ├── powerup.volt
│ ├── rshares.volt
│ └── votefocusing.volt
│ ├── layouts
│ ├── default.volt
│ └── homepage.volt
│ ├── search
│ └── page.volt
│ ├── tx
│ └── view.volt
│ └── witness
│ ├── history.volt
│ ├── list.volt
│ └── misses.volt
├── bower.json
├── composer.json
├── composer.lock
├── deploy.sh
├── docker-compose.yml
├── docker
├── development
│ ├── Dockerfile
│ ├── conf
│ │ ├── nginx.conf
│ │ ├── supervisord.conf
│ │ └── vhost.conf
│ └── scripts
│ │ └── start.sh
├── history
│ ├── Dockerfile
│ ├── fix.py
│ ├── history.py
│ └── steemdb_history.service
├── live
│ ├── Dockerfile
│ ├── live.py
│ └── steemdb_live.service
├── production
│ └── conf
│ │ └── vhost.conf
├── sync
│ ├── Dockerfile
│ ├── steemdb_sync.service
│ └── sync.py
└── witnesses
│ ├── Dockerfile
│ ├── steemdb_witnesses.service
│ └── witnesses.py
├── mongodb.md
└── public
├── bower
├── css
└── style.css
├── examples
├── quotedposts.gif
├── sidebar-stick.gif
├── steemdb-account-history-2.png
├── steemdb-account-missed.png
├── steemdb-account-navigation.png
├── steemdb-account-sidebar.png
├── steemdb-account-viewer.png
├── steemdb-account-witness-chart.png
├── steemdb-authoring.png
├── steemdb-chart-tooltips.png
├── steemdb-curation.png
├── steemdb-follower-history.png
├── steemdb-followers-weight.png
├── steemdb-following-history.png
├── steemdb-forums-forum.png
├── steemdb-forums-home.png
├── steemdb-forums-icons.png
├── steemdb-forums-post.png
├── steemdb-forums-quotes.png
├── steemdb-forums-summary.png
├── steemdb-forums-threads.png
├── steemdb-labs.png
├── steemdb-leaderboard-author.png
├── steemdb-leaderboard-curation.png
├── steemdb-newmenuitems.png
├── steemdb-pagination.png
├── steemdb-post-viewer.png
├── steemdb-posts-by-date.png
├── steemdb-posts-by-tag.png
├── steemdb-powerdown.png
├── steemdb-powerup.png
├── steemdb-reblogged.png
├── steemdb-reblogs.png
├── steemdb-richlist.png
├── steemdb-rshares-explore.png
├── steemdb-transfers.png
├── steemdb-witness-misses.png
├── steemdb-witness-vote-history.png
└── steemdb-witnesses.png
├── explorers
├── dct.png
├── golos.jpg
├── krm.png
├── muse.png
├── ppy.png
├── soundac.png
└── steem.png
├── index.php
├── js
└── semantic-tablesort.js
└── robots.txt
/.editorconfig:
--------------------------------------------------------------------------------
1 | # This file is for unifying the coding style for different editors and IDEs
2 | # editorconfig.org
3 |
4 | root = true
5 |
6 | [*]
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 | indent_style = space
12 | indent_size = 2
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | app/config/config.php
2 | cache/
3 | bower_components/
4 | vendor/
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## steemdb
2 |
3 | https://steemdb.com
4 |
5 | open source blockchain explorer for the steem blockchain - build on phalcon + mongodb
6 |
7 | ### Prerequisites
8 |
9 | - docker
10 | - bower
11 |
12 | ### Components
13 |
14 | 1. `./app/` steemdb website: phalcon + mongodb application for serving out the website, apis, and MVC structure.
15 | 2. `./docker/sync` sync service (python + piston) for keeping the blockchain synchronized and up to date. Runs on a 3 second delay and triggers updates in the database.
16 | 3. `./docker/history` account history service (python + piston) which runs every 6 hours and analyzes every account on the blockchain. Records historical information as well as a current snapshot.
17 | 4. `./docker/witnesses` witness/mining service (python + piston) which runs every minute to pull current witness information as well as the mining queue.
18 | 5. `./docker/development` development VM with php7, nginx, and phalcon.
19 |
20 | ### Getting it running
21 |
22 | This explorer syncronizes the entire blockchain into a mongodb database. This takes a LOT of time. **I'd highly recommend you run a local instance of steemd** and modify the `docker-compose.yml` to point to it. It's going to be a lot faster of a sync than trying to read the entire blockchain from a public node.
23 |
24 | `docker-compose up` should be all you need to get the development application running.
25 |
26 | If you'd like to run any of the syncronization services for initialization, you will need to uncomment the specific service from the `docker-compose.yml` file. For example:
27 |
28 | - If you're looking to work on the account pages and start recording their history, uncomment the `history` service and start your containers.
29 |
30 | You can uncomment all 3 services to start all applications when docker creates it's containers.
31 |
32 | The initial syncronization run by the sync service will take many hours to complete and process all of the blocks. It will also require an enormous amount of disk space. As time progresses, this data will be trimmed. For now in early alpha it's better to have it all.
33 |
--------------------------------------------------------------------------------
/app/config/config.template:
--------------------------------------------------------------------------------
1 | [
8 | 'host' => 'mongodb://mongo:27017',
9 | 'dbname' => 'steemdb'
10 | ],
11 | 'application' => [
12 | 'controllersDir' => APP_PATH . '/controllers/',
13 | 'modelsDir' => APP_PATH . '/models/',
14 | 'formsDir' => APP_PATH . '/forms/',
15 | 'viewsDir' => APP_PATH . '/views/',
16 | 'libraryDir' => APP_PATH . '/library/',
17 | 'helpersDir' => APP_PATH . '/helpers/',
18 | 'pluginsDir' => APP_PATH . '/plugins/',
19 | 'cacheDir' => BASE_PATH . '/cache/',
20 | 'baseUri' => '/',
21 | 'publicUrl' => 'steemdb.com',
22 | 'cryptSalt' => 'eEAfR|_&G&f,+vU]:jFr!!A&+71w1Ms9~8_4L!<@[N@DyaIP_2My|:+.u>/6m,$D'
23 | ],
24 | 'logger' => [
25 | 'path' => BASE_PATH . '/logs/',
26 | 'format' => '%date% [%type%] %message%',
27 | 'date' => 'D j H:i:s',
28 | 'logLevel' => Logger::DEBUG,
29 | 'filename' => 'application.log',
30 | ]
31 | ]);
32 |
--------------------------------------------------------------------------------
/app/config/loader.php:
--------------------------------------------------------------------------------
1 | registerNamespaces([
8 | 'SteemDB\Models' => $config->application->modelsDir,
9 | 'SteemDB\Controllers' => $config->application->controllersDir,
10 | 'SteemDB\Helpers' => $config->application->helpersDir,
11 | 'SteemDB' => $config->application->libraryDir
12 | ]);
13 |
14 | $loader->registerDirs(array(
15 | '../app/helpers'
16 | ));
17 |
18 | $loader->register();
19 |
20 | // Use composer autoloader to load vendor classes
21 | require_once BASE_PATH . '/vendor/autoload.php';
22 |
--------------------------------------------------------------------------------
/app/controllers/AccountsController.php:
--------------------------------------------------------------------------------
1 | view->filter = $filter = $this->dispatcher->getParam("filter", "string");
13 | $this->view->page = $page = (int) $this->request->get("page") ?: 1;
14 | $query = array();
15 | $sort = array(
16 | "vesting_shares" => -1,
17 | );
18 | if($filter) {
19 | switch($filter) {
20 | case "powerdown":
21 | $sort = array(
22 | "vesting_withdraw_rate" => -1
23 | );
24 | break;
25 | case "followers_mvest":
26 | $sort = array(
27 | "followers_mvest" => -1,
28 | );
29 | break;
30 | case "sbd":
31 | $sort = array(
32 | "total_sbd_balance" => -1,
33 | );
34 | break;
35 | case "steem":
36 | $sort = array(
37 | "total_balance" => -1,
38 | );
39 | break;
40 | case "reputation":
41 | $query['reputation'] = array('$gt' => 0);
42 | $sort = array(
43 | "reputation" => -1,
44 | );
45 | break;
46 | case "posts":
47 | $sort = array(
48 | "post_count" => -1,
49 | );
50 | break;
51 | case "followers":
52 | $sort = array(
53 | "followers_count" => -1,
54 | );
55 | break;
56 | default:
57 | break;
58 | }
59 | }
60 | $limit = 10;
61 | // Determine how many pages of users we have
62 | $this->view->pages = ceil(Statistics::findFirst(array(
63 | array('key' => 'users'),
64 | "sort" => array('date' => -1)
65 | ))->toArray()['value'] / $limit);
66 | // Load the accounts
67 | $this->view->accounts = Account::find(array(
68 | $query,
69 | "skip" => $limit * ($page - 1),
70 | "sort" => $sort,
71 | "limit" => $limit
72 | ));
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/app/controllers/BlockController.php:
--------------------------------------------------------------------------------
1 | view->height = $height = $this->dispatcher->getParam("height");
10 | $this->view->current = $this->steemd->getBlock($height);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/app/controllers/BlocksController.php:
--------------------------------------------------------------------------------
1 | view->blocks = Block30d::find([
12 | [],
13 | "skip" => $limit * ($page - 1),
14 | "sort" => ['_id' => -1],
15 | "limit" => 100
16 | ]);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/app/controllers/ChartsController.php:
--------------------------------------------------------------------------------
1 | response->redirect('/');
12 | }
13 | public function liveAction()
14 | {
15 |
16 | }
17 |
18 | public function homepageAction() {
19 | $this->view->props = $props = $this->steemd->getProps();
20 | $this->view->inflation = round(max((978 - $props['head_block_number'] / 250000), 95) / 100, 4);
21 | $this->view->totals = $totals = $this->util->distribution($props);
22 | # Transactions
23 | $tx = $results = Status::findFirst([['_id' => 'transactions-24h']]);
24 | $tx1h = Status::findFirst([['_id' => 'transactions-1h']]);
25 | $this->view->tx = $tx->data;
26 | $this->view->tx_per_sec = round($tx->data / 86400, 3);
27 | $this->view->tx1h = $tx1h->data;
28 | $this->view->tx1h_per_sec = round($tx1h->data / 3600, 3);
29 | # Operations
30 | $op = $results = Status::findFirst([['_id' => 'operations-24h']]);
31 | $op1h = Status::findFirst([['_id' => 'operations-1h']]);
32 | $this->view->op = $op->data;
33 | $this->view->op_per_sec = round($op->data / 86400, 3);
34 | $this->view->op1h = $op1h->data;
35 | $this->view->op1h_per_sec = round($op1h->data / 3600, 3);
36 | $this->view->funds = FundsHistory::find([
37 | ['name' => 'post'],
38 | 'sort' => ['last_update' => -1],
39 | 'limit' => 1
40 | ])[0];
41 | }
42 |
43 | public function show404Action() {
44 |
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/controllers/LiveController.php:
--------------------------------------------------------------------------------
1 | view->disable();
11 | ini_set('precision', 20);
12 | }
13 |
14 | public function propsAction()
15 | {
16 | echo json_encode($this->steemd->getProps(), JSON_PRETTY_PRINT);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/app/controllers/RwController.php:
--------------------------------------------------------------------------------
1 | [
11 | 'curator' => 'randowhale'
12 | ]],
13 | ['$sort' => [
14 | '_ts' => -1
15 | ]],
16 | ['$group' => [
17 | '_id' => [
18 | 'doy' => ['$dayOfYear' => '$_ts'],
19 | 'year' => ['$year' => '$_ts'],
20 | 'month' => ['$month' => '$_ts'],
21 | 'day' => ['$dayOfMonth' => '$_ts'],
22 | 'dow' => ['$dayOfWeek' => '$_ts'],
23 | ],
24 | 'reward' => ['$sum' => '$reward'],
25 | 'count' => ['$sum' => 1]
26 | ]],
27 | ['$sort' => [
28 | '_id.year' => 1,
29 | '_id.doy' => 1,
30 | 'reward' => -1
31 | ]],
32 | ['$limit' => 10]
33 | ])->toArray();
34 | var_dump($rewards); exit;
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/app/controllers/SearchController.php:
--------------------------------------------------------------------------------
1 | request->get("q", "string");
14 | $accounts = Account::find(array(
15 | array(
16 | 'name' => new Regex('^'.$query, 'i')
17 | ),
18 | "sort" => [
19 | "followers" => -1
20 | ],
21 | "fields" => [
22 | 'name' => 1
23 | ],
24 | "limit" => 5
25 | ));
26 | $data = [
27 | 'results' => [
28 | 'accounts' => [
29 | 'name' => 'Accounts',
30 | 'results' => array_map(function($account) {
31 | return [
32 | 'title' => $account->name,
33 | 'url' => '/@'.$account->name
34 | ];
35 | }, $accounts)
36 | ]
37 | ]
38 | ];
39 | $this->view->disable();
40 | $this->response->setContentType('application/json', 'UTF-8');
41 | $this->response->setJsonContent($data);
42 | return $this->response;
43 | }
44 | public function pageAction()
45 | {
46 | $this->view->q = $q = $this->request->get("q");
47 | if($q) {
48 | $this->view->results = $results = Comment::agg(array(
49 | [ '$match' => [ '$text' => [ '$search' => $q ] ] ],
50 | [ '$sort' => [ 'score' => [ '$meta' => "textScore" ] ] ],
51 | [ '$limit' => 100 ],
52 | // [ '$project' => [ 'title' => 1, '_id' => 0 , '_ts' => 1] ],
53 | ));
54 | }
55 |
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app/controllers/StatsController.php:
--------------------------------------------------------------------------------
1 | view->props = $props = $this->steemd->getProps();
15 | $this->view->totals = $totals = $this->util->distribution($props);
16 | var_dump($totals); exit;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/app/controllers/TxController.php:
--------------------------------------------------------------------------------
1 | view->id = $id = $this->dispatcher->getParam("id");
10 | $this->view->current = $this->steemd->getTx($id);
11 | // var_dump($this->view->current); exit;
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/app/helpers/Convert.php:
--------------------------------------------------------------------------------
1 | getShared('memcached');
11 | }
12 |
13 | static private function getProps() {
14 | return static::getDI()->getShared('steemd')->getProps();
15 | }
16 |
17 | static public function getConversionRate($key) {
18 | $cache = static::getCache();
19 | $cached = $cache->get($key);
20 | if($cached === null) {
21 | $props = static::getProps();
22 | $values = array(
23 | 'total_vests' => (float) $props['total_vesting_shares'],
24 | 'total_vest_steem' => (float) $props['total_vesting_fund_steem'],
25 | );
26 | $cache->save($key, $values);
27 | return $values;
28 | }
29 | return $cached;
30 | }
31 |
32 | static public function vest2sp($value, $label = ' SP', $round = 3)
33 | {
34 | $values = static::getConversionRate('convert_vest2sp');
35 | $return = $values['total_vest_steem'] * ($value / $values['total_vests']);
36 | if($label === false) {
37 | return round($return, $round);
38 | }
39 | return number_format($return, $round, '.', ',') . $label;
40 | }
41 |
42 | static public function sp2vest($value, $label = ' VEST')
43 | {
44 | $values = static::getConversionRate('convert_vest2sp');
45 | $return = (($value) / $values['total_vest_steem']) * $values['total_vests'];
46 | if($label === false) {
47 | return $return;
48 | }
49 | return number_format($return, 3, '.', ',') . $label;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/helpers/LargeNumber.php:
--------------------------------------------------------------------------------
1 | 1000000000000000)
20 | return number_format(($n/1000000000000000),$dec,".",",").' P'.$unit.' ';
21 | else if($n>1000000000000)
22 | return number_format(($n/1000000000000),$dec,".",",").' T'.$unit.' ';
23 | else if($n>1000000000)
24 | return number_format(($n/1000000000),$dec,".",",").' G'.$unit.' ';
25 | else if($n>1000000)
26 | return number_format(($n/1000000),$dec,".",",").' M'.$unit.' ';
27 | else if($n>1000)
28 | return number_format(($n/1000),$dec,".",",").' k'.$unit.' ';
29 | return number_format($n, $dec);
30 | }
31 |
32 | static public function color($n)
33 | {
34 | if($n >= 1000000000) {
35 | return "orange";
36 | } elseif($n >= 1000000) {
37 | return "purple";
38 | } elseif($n >= 1000) {
39 | return "blue";
40 | } elseif($n > 0) {
41 | return "green";
42 | } else {
43 | return "";
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/helpers/OpName.php:
--------------------------------------------------------------------------------
1 | "Account Create",
10 | "account_update" => "Account Update",
11 | "account_witness_proxy" => "Witness Proxy",
12 | "account_witness_vote" => "Witness Vote",
13 | "author_reward" => "Author Reward",
14 | "cancel_transfer_from_savings" => "Cancel Savings Withdrawal",
15 | "comment" => "Post",
16 | "comment_reward" => "Post Reward",
17 | "convert" => "Convert",
18 | "curate_reward" => "Curate Reward",
19 | "curation_reward" => "Curation Reward",
20 | "delete_comment" => "Post Delete",
21 | "feed_publish" => "Feed Publish",
22 | "fill_order" => "Fill Order",
23 | "fill_vesting_withdraw" => "Power Down",
24 | "interest" => "SBD Interest",
25 | "limit_order_create" => "Limit Order Create",
26 | "limit_order_cancel" => "Limit Order Cancel",
27 | "pow" => "Mining",
28 | "pow2" => "Mining",
29 | "transfer" => "Transfer",
30 | "transfer_to_savings" => "Transfer to Savings",
31 | "transfer_from_savings" => "Transfer from Savings",
32 | "transfer_to_vesting" => "Power Up",
33 | "vote" => "Vote",
34 | "witness_update" => "Witness Update",
35 | );
36 |
37 | public static function string($op, $account = null) {
38 | $name = $op[0];
39 | if(isset(static::$index[$op[0]])) {
40 | $name = static::$index[$op[0]];
41 | }
42 | // This should be more robust logic as more situations occur
43 | if($op[0] === "vote" && $account) {
44 | if($op[1]['voter'] === $account->name) {
45 | $name = "Outgoing Vote";
46 | } else {
47 | $name = "Incoming Vote";
48 | }
49 | }
50 | if($op[0] === "comment" && is_array($op[1]) && $op[1]['author'] !== $account->name) {
51 | $name = "Reply";
52 | }
53 | return $name;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/helpers/Reputation.php:
--------------------------------------------------------------------------------
1 | = 0) ? 1 : -1) * 9 + 25 : 0 );
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/helpers/TimeAgo.php:
--------------------------------------------------------------------------------
1 | setTimestamp($datetime);
13 | $diff = $now->diff($ago);
14 | $diff->w = floor($diff->d / 7);
15 | $diff->d -= $diff->w * 7;
16 |
17 | $string = array(
18 | 'y' => 'year',
19 | 'm' => 'month',
20 | 'w' => 'week',
21 | 'd' => 'day',
22 | 'h' => 'hour',
23 | 'i' => 'minute',
24 | 's' => 'second',
25 | );
26 | foreach ($string as $k => &$v) {
27 | if ($diff->$k) {
28 | $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
29 | } else {
30 | unset($string[$k]);
31 | }
32 | }
33 | if (!$full) $string = array_slice($string, 0, 1);
34 | return $string ? implode(', ', $string) . (($diff->invert) ? ' ago' : '') : 'just now';
35 | }
36 |
37 | public static function mongo($mongodate) {
38 | return self::timestamp((string) $mongodate / 1000);
39 | }
40 |
41 | public static function string($string) {
42 | return self::timestamp(strtotime($string));
43 | }
44 |
45 | public function secondsToString($seconds, $full = false) {
46 | $now = new DateTime;
47 | $future = new DateTime();
48 | $future->setTimestamp(time() + $seconds);
49 | $diff = $now->diff($future);
50 |
51 | $diff->w = floor($diff->d / 7);
52 | $diff->d -= $diff->w * 7;
53 |
54 | $string = array(
55 | 'y' => 'year',
56 | 'm' => 'month',
57 | 'w' => 'week',
58 | 'd' => 'day',
59 | 'h' => 'hour',
60 | 'i' => 'minute',
61 | 's' => 'second',
62 | );
63 | foreach ($string as $k => &$v) {
64 | if ($diff->$k) {
65 | $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
66 | } else {
67 | unset($string[$k]);
68 | }
69 | }
70 |
71 | if (!$full) $string = array_slice($string, 0, 1);
72 | return $string ? implode(', ', $string) : '';
73 | }
74 |
75 | public static function age($age) {
76 | $i = time() - $age;
77 | $m = time()-$i; $o='just now';
78 | $t = array('year'=>31556926,'month'=>2629744,'week'=>604800,'day'=>86400,'hour'=>3600,'minute'=>60,'second'=>1);
79 | foreach($t as $u=>$s){
80 | if($s<=$m){$v=floor($m/$s); $o="$v $u".($v==1?'':'s'); break;}
81 | }
82 | return $o;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/app/libs/steemd.php:
--------------------------------------------------------------------------------
1 | host = $host;
17 | $httpClient = new HttpClient($host);
18 | $httpClient->withoutSslVerification();
19 | $this->client = new Client($host, false, $httpClient);
20 | }
21 |
22 | public function getState($path = "")
23 | {
24 | try {
25 | return $this->client->call(0, 'get_state', [$path]);
26 | } catch (Exception $e) {
27 | return array();
28 | }
29 | }
30 |
31 | public function getBlock($height)
32 | {
33 | try {
34 | return $this->client->call(0, 'get_block', [$height]);
35 | } catch (Exception $e) {
36 | return array();
37 | }
38 | }
39 |
40 | public function getTx($txid)
41 | {
42 | try {
43 | return $this->client->call(0, 'get_transaction', [$txid]);
44 | } catch (Exception $e) {
45 | return array();
46 | }
47 | }
48 |
49 | public function getAccount($account)
50 | {
51 | try {
52 | $return = $this->client->call(0, 'get_accounts', [[$account]]);
53 | try {
54 | foreach($return as $index => $account) {
55 | $return[$index]['profile'] = json_decode($account['json_metadata'], true)['profile'];
56 | }
57 | } catch (Exception $e) {
58 |
59 | }
60 | return $return;
61 | } catch (Exception $e) {
62 | return array();
63 | }
64 | }
65 | public function getAccountHistory($username, $limit = 100, $skip = -1)
66 | {
67 | try {
68 | return $this->client->call(0, 'get_account_history', [$username, $skip, $limit]);
69 | } catch (Exception $e) {
70 | return array();
71 | }
72 | }
73 |
74 | public function getProps()
75 | {
76 | try {
77 | return Status::findFirst([['_id' => 'props']])->toArray()['props'];
78 | $return = $this->client->call(0, 'get_dynamic_global_properties', []);
79 | $return['steem_per_mvests'] = Status::findFirst([['_id' => 'steem_per_mvests']])->value;
80 | return $return;
81 | } catch (Exception $e) {
82 | return array();
83 | }
84 | }
85 |
86 | public function getApi($name)
87 | {
88 | return $this->client->call(1, 'get_api_by_name', [$name]);
89 | }
90 |
91 | public function getFollowing($username, $limit = 100, $skip = -1)
92 | {
93 | $api = $this->getApi('follow_api');
94 | return $this->client->call($api, 'get_following', [$username, $skip, $limit]);
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/app/libs/utilities.php:
--------------------------------------------------------------------------------
1 | di = $di;
12 | }
13 |
14 | public function distribution($props) {
15 | $cacheKey = 'distribution-30d';
16 | $cached = $this->di->get('memcached')->get($cacheKey);
17 | if($cached !== null) {
18 | return $cached;
19 | }
20 | $totals = [
21 | 'curation' => 0,
22 | 'authors' => 0,
23 | 'interest' => $this->di->get('convert')->sp2vest($props['virtual_supply'] * 0.095 * 0.15 / 12, false),
24 | 'witnesses' => $this->di->get('convert')->sp2vest($props['virtual_supply'] * 0.095 * 0.1 / 12, false),
25 | ];
26 | // Set Date Range
27 | $start = new UTCDateTime(strtotime("-30 days") * 1000);
28 | $end = new UTCDateTime(strtotime("midnight") * 1000);
29 | // Author Rewards
30 | // Author Rewards
31 | $authors = AuthorReward::aggregate([
32 | ['$match' => [
33 | '_ts' => [
34 | '$gte' => $start,
35 | '$lte' => $end,
36 | ]
37 | ]],
38 | ['$project' => [
39 | 'prefix' => ['$substr' => ['$permlink', 0, 3]],
40 | 'steem_payout' => '$steem_payout',
41 | 'vesting_payout' => '$vesting_payout',
42 | 'sbd_payout' => '$sbd_payout',
43 | ]],
44 | ['$group' => [
45 | '_id' => 'author',
46 | 'steem' => ['$sum' => '$steem_payout'],
47 | 'vests' => ['$sum' => '$vesting_payout'],
48 | 'sbd' => ['$sum' => 'sbd_payout'],
49 | 'op' => [
50 | '$sum' => ['$cond' => [
51 | ['$eq' => ['$prefix', 're-']],
52 | 0,
53 | '$vesting_payout',
54 | ]],
55 | ],
56 | 're' => [
57 | '$sum' => ['$cond' => [
58 | ['$eq' => ['$prefix', 're-']],
59 | '$vesting_payout',
60 | 0,
61 | ]],
62 | ]
63 | ]],
64 | // ['$sort' => [
65 | // 'vests' => -1
66 | // ]],
67 | ])->toArray();
68 | $totals['authors'] = $authors[0]['vests'] * 2;
69 | $totals['author_rewards'] = array(
70 | 'replies' => $authors[0]['re'] * 2,
71 | 'posts' => $authors[0]['op'] * 2,
72 | );
73 | // Curator Rewards
74 | $curators = CurationReward::aggregate([
75 | ['$match' => [
76 | '_ts' => [
77 | '$gte' => $start,
78 | '$lte' => $end,
79 | ]
80 | ]],
81 | ['$group' => [
82 | '_id' => '$curator',
83 | 'vests' => ['$sum' => '$reward'],
84 | ]],
85 | ['$sort' => [
86 | 'vests' => -1
87 | ]],
88 | ])->toArray();
89 | foreach($curators as $curator) {
90 | $totals['curation'] += $curator['vests'];
91 | }
92 | $this->di->get('memcached')->save($cacheKey, $totals, 60);
93 | return $totals;
94 | }
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/app/models/Account.php:
--------------------------------------------------------------------------------
1 | json_metadata)) {
9 | $this->json_metadata = json_decode($this->json_metadata, true);
10 | }
11 | if(property_exists($this, 'json_metadata') && isset($this->json_metadata['profile']) && isset($this->json_metadata['profile']['profile_image'])) {
12 | return $this->json_metadata['profile']['profile_image'];
13 | }
14 | return null;
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/app/models/AccountHistory.php:
--------------------------------------------------------------------------------
1 | [
11 | '_ts' => -1
12 | ]],
13 | ['$group' => [
14 | '_id' => [
15 | 'benefactor' => '$benefactor',
16 | 'doy' => ['$dayOfYear' => '$_ts'],
17 | 'year' => ['$year' => '$_ts'],
18 | 'month' => ['$month' => '$_ts'],
19 | 'day' => ['$dayOfMonth' => '$_ts'],
20 | 'dow' => ['$dayOfWeek' => '$_ts'],
21 | ],
22 | 'reward' => ['$sum' => '$reward'],
23 | 'count' => ['$sum' => 1]
24 | ]],
25 | ['$group' => [
26 | '_id' => [
27 | 'doy' => '$_id.doy',
28 | 'year' => '$_id.year',
29 | 'month' => '$_id.month',
30 | 'day' => '$_id.day',
31 | 'dow' => '$_id.dow',
32 | ],
33 | 'benefactors' => [
34 | '$push' => [
35 | 'benefactor' => '$_id.benefactor',
36 | 'count' => '$count',
37 | 'reward' => '$reward'
38 | ]
39 | ],
40 | 'reward' => [
41 | '$sum' => '$reward'
42 | ],
43 | 'total' => [
44 | '$sum' => '$count'
45 | ]
46 | ]],
47 | ['$sort' => [
48 | '_id.year' => -1,
49 | '_id.doy' => -1,
50 | 'reward' => -1
51 | ]],
52 | ['$limit' => 30]
53 | ], [
54 | 'allowDiskUse' => true,
55 | 'cursor' => [
56 | 'batchSize' => 0
57 | ]
58 | ])->toArray();
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/app/models/Block30d.php:
--------------------------------------------------------------------------------
1 | active_votes) {
15 | // foreach($results->active_votes as $idx => $data) {
16 | // $results->active_votes[$idx]->time = (int) (string) $data->time;
17 | // }
18 | // }
19 | // if(is_array($results)) {
20 | // foreach($results as $idx => $result) {
21 | // foreach($result as $key => $data) {
22 | // if(get_class($data) == 'MongoDB\BSON\UTCDateTime') {
23 | // $results[$idx]->$key = (int) (string) $data;
24 | // }
25 | // }
26 | // }
27 | // }
28 | return $results;
29 | }
30 |
31 | public function toArray() {
32 | if($this instanceOf Document) return parent::toArray();
33 | foreach($this as $key => $data) {
34 | if(get_class($data) == 'MongoDB\BSON\UTCDateTime') {
35 | $this->$key = (int) (string) $data;
36 | }
37 | }
38 | return parent::toArray();
39 | }
40 |
41 | public function export() {
42 | $toRemove = ['_dependencyInjector','_modelsManager','_source','_operationMade','_connection', '_errorMessages', '_skipped'];
43 | $data = array_diff_key(get_object_vars($this), array_flip($toRemove));
44 | return $data;
45 | }
46 |
47 | public static function agg($pipeline, $options = []) {
48 | $className = get_called_class();
49 | $collection = new $className();
50 | $connection = $collection->getConnection();
51 | return $connection->selectCollection($collection->getSource())->aggregate($pipeline, $options);
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/app/models/FeedPublish.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ current }}
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/views/_elements/account_table_row.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 | {{ current.followers_count }}
12 |
13 |
14 | {{ current.post_count }}
15 |
16 |
17 | {{ partial("_elements/vesting_shares", ['current': current]) }}
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/views/_elements/cards/account.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% if live[0] is defined and live[0] is defined and live[0]['profile'] is defined and live[0]['profile']['profile_image'] is defined %}
4 |
5 | {% endif %}
6 |
14 |
15 | joined timeAgo::mongo($account->created); ?>
16 |
17 | {% if live[0] is defined and live[0] is defined and live[0]['profile'] is defined and live[0]['profile']['about'] is defined %}
18 |
19 | {{ live[0]['profile']['about'] | e }}
20 |
21 | {% endif %}
22 | {% if live[0] is defined and live[0] is defined and live[0]['profile'] is defined and live[0]['profile']['website'] is defined %}
23 |
29 | {% endif %}
30 |
31 |
32 |
44 |
45 |
--------------------------------------------------------------------------------
/app/views/_elements/cards/app.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {#
#}
4 |
9 | {% if meta and meta['created'] %}
10 |
11 | created timeAgo::mongo($meta[$app]['created']); ?>
12 |
13 | {% endif %}
14 | {% if meta and meta['description'] %}
15 |
16 | {{ meta['description'] }}
17 |
18 | {% endif %}
19 | {% if meta and meta['link'] %}
20 |
26 | {% endif %}
27 |
28 | {##}
40 |
41 |
--------------------------------------------------------------------------------
/app/views/_elements/comment_table.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | When
5 | What
6 | Who
7 | Votes
8 | Earnings
9 |
10 |
11 |
12 | {% for comment in comments %}
13 |
14 |
15 | {{ comment.created.toDateTime().format('Y-m-d H:i') }}
16 |
17 |
18 |
19 | {{ comment.title }}
20 |
21 |
22 |
23 |
24 | {{ comment.author }}
25 |
26 |
27 |
28 | {{ comment.net_votes }}
29 |
30 |
31 | {{ comment.total_payout_value }}
32 |
33 |
34 | {% endfor %}
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/views/_elements/definition_table.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for key, value in data %}
4 |
5 |
6 | {{ key }}
7 |
8 |
9 | toDateTime()->format('Y-m-d H:i');
15 | } else {
16 | echo "" . json_encode($value, JSON_PRETTY_PRINT) . " ";
17 | }
18 | break;
19 | case "double":
20 | echo number_format($value, 3, '.', ',');
21 | break;
22 | default:
23 | echo htmlspecialchars($value);
24 | break;
25 | }
26 | ?>
27 |
28 |
29 | {% endfor %}
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/views/_elements/layouts/footer.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | * All Steem Power & VEST calculations are done using the current conversion rate, not a historical rate. This may cause some calculations to be incorrect.
6 |
7 |
8 |
9 |
10 |
24 |
--------------------------------------------------------------------------------
/app/views/_elements/layouts/scripts.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {% block scripts %}{% endblock %}
9 |
57 |
67 |
--------------------------------------------------------------------------------
/app/views/_elements/paginator.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% if hide_count is not defined %}
4 |
5 | Page {{ page }} of {{ pages }}
6 |
7 | {% endif %}
8 |
9 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/app/views/_elements/sidebar/commands.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | vote your-acct "{{ comment.author }}" "{{ comment.permlink }}" 100 true
7 |
8 |
9 |
10 |
11 |
12 |
13 | post_comment your-acct "re-{{ comment.author }}-{{ comment.permlink }}-" "{{ comment.author }}" "{{ comment.permlink }}" "" "your reply.." "{}" true
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/views/_elements/sidebar/earnings.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Earnings
5 | ${{ comment.total_payout_value }}
6 |
7 |
8 | Pending
9 | EST largeNumber::format($comment->total_pending_payout_value); ?>
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/views/_elements/sidebar/readmore.volt:
--------------------------------------------------------------------------------
1 |
2 |
10 | {% for post in posts %}
11 | {% if post.url === comment.url %}
12 | {% continue %}
13 | {% endif %}
14 |
21 | {% endfor %}
22 |
23 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/account_create.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ item[1]['op'][1]['creator'] }}
4 |
5 |
6 | {{ item[1]['op'][1]['new_account_name'] }}
7 |
8 |
9 | New account ({{ item[1]['op'][1]['new_account_name'] }}) created, initial fee of {{ item[1]['op'][1]['fee'] }}
10 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/account_create_with_delegation.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/account_update.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/account_witness_proxy.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ item[1]['op'][1]['account'] }}
4 |
5 |
6 | {{ item[1]['op'][1]['proxy'] }}
7 |
8 |
9 | Witness voting power proxied from
10 | {{ item[1]['op'][1]['account'] }}
11 | to
12 | {{ item[1]['op'][1]['proxy'] }}
13 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/account_witness_vote.volt:
--------------------------------------------------------------------------------
1 |
2 | {% if item[1]['op'][1]['approve'] %}
3 |
4 | Approval of
5 |
6 | {% else %}
7 |
8 | Unapproved
9 |
10 | {% endif %}
11 |
12 | {{ item[1]['op'][1]['witness'] }}
13 |
14 |
15 | from
16 |
17 | {{ item[1]['op'][1]['account'] }}
18 |
19 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/author_reward.volt:
--------------------------------------------------------------------------------
1 |
2 | +largeNumber::format($item[1]['op'][1]['steem_payout']); ?> STEEM
3 |
4 |
5 | +convert::vest2sp($item[1]['op'][1]['vesting_payout']); ?>
6 |
7 |
8 | +largeNumber::format($item[1]['op'][1]['sbd_payout']); ?>
9 | SBD
10 |
11 | for
12 |
13 | = substr($item[1]['op'][1]['permlink'], 0, 75) ?>
14 |
15 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/cancel_transfer_from_savings.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/change_recovery_account.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/claim_reward_balance.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/comment.volt:
--------------------------------------------------------------------------------
1 |
2 | {{ item[1]['op'][1]['author'] }}
3 |
4 | {% if item[1]['op'][1]['title'] == '' %}
5 | replied to
6 | {% else %}
7 | posted
8 | {% endif %}
9 |
10 | = substr($item[1]['op'][1]['parent_permlink'], 0, 75) ?>
11 |
12 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/comment_benefactor_reward.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/comment_options.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/comment_reward.volt:
--------------------------------------------------------------------------------
1 |
2 | +convert::vest2sp($item[1]['op'][1]['vesting_payout']); ?>
3 |
4 |
5 | +largeNumber::format($item[1]['op'][1]['sbd_payout']); ?>
6 | SBD
7 |
8 | for
9 |
10 | = substr($item[1]['op'][1]['permlink'], 0, 75) ?>
11 |
12 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/convert.volt:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/curate_reward.volt:
--------------------------------------------------------------------------------
1 |
2 | +convert::vest2sp($item[1]['op'][1]['reward']); ?>
3 |
4 | for
5 |
6 | = substr($item[1]['op'][1]['comment_permlink'], 0, 75) ?>
7 |
8 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/curation_reward.volt:
--------------------------------------------------------------------------------
1 |
2 | +convert::vest2sp($item[1]['op'][1]['reward']); ?>
3 |
4 | for
5 |
6 | = substr($item[1]['op'][1]['comment_permlink'], 0, 75) ?>
7 |
8 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/custom.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/custom_json.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/delegate_vesting_shares.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/delete_comment.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/escrow_approve.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/escrow_dispute.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/escrow_release.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/escrow_transfer.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/feed_publish.volt:
--------------------------------------------------------------------------------
1 |
2 | {{ item[1]['op'][1]['publisher'] }}
3 |
4 | published a price of
5 |
6 | {{ item[1]['op'][1]['exchange_rate']['base'] }}
7 |
8 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/fill_convert_request.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/fill_order.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/fill_transfer_from_savings.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/fill_vesting_withdraw.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | Power Down
4 |
5 |
6 | {{ item[1]['op'][1]['withdrawn'] }}
7 |
8 |
9 | ~convert::vest2sp($item[1]['op'][1]['withdrawn']); ?>*
10 |
11 |
12 |
13 | from
14 |
15 | {{ item[1]['op'][1]['from_account'] }}
16 |
17 | to
18 |
19 | {{ item[1]['op'][1]['to_account'] }}
20 |
21 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/interest.volt:
--------------------------------------------------------------------------------
1 |
2 | +{{ item[1]['op'][1]['interest'] }}
3 |
4 | Interest Payment
5 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/limit_order_cancel.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/limit_order_create.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/pow.volt:
--------------------------------------------------------------------------------
1 |
2 | +1 SP
3 |
4 | {{ item[1]['op'][1]['work'][1]['input']['worker_account'] }} found a block
5 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/pow2.volt:
--------------------------------------------------------------------------------
1 |
2 | {% if item[1]['block'] >= 7353250 %}
3 | + SP
4 | {% else %}
5 | +1 SP
6 | {% endif %}
7 |
8 | {{ item[1]['op'][1]['work'][1]['input']['worker_account'] }} found a block
9 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/producer_reward.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/recover_account.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/request_account_recovery.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/return_vesting_delegation.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/set_withdraw_vesting_route.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/shutdown_witness.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/transfer.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ item[1]['op'][1]['from'] }}
4 |
5 |
6 | {{ item[1]['op'][1]['to'] }}
7 |
8 |
9 |
10 | {{ item[1]['op'][1]['amount'] }}
11 |
12 | {% if item[1]['op'][1]['memo'] %}
13 |
14 | {{ item[1]['op'][1]['memo'] }}
15 |
16 | {% endif %}
17 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/transfer_from_savings.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/transfer_to_savings.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/transfer_to_vesting.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | Power Up
4 |
5 |
6 | {{ item[1]['op'][1]['amount'] }}
7 |
8 |
9 | from
10 |
11 | {{ item[1]['op'][1]['from'] }}
12 |
13 | to
14 |
15 | {{ item[1]['op'][1]['to'] }}
16 |
17 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/unknown.volt:
--------------------------------------------------------------------------------
1 |
2 | = json_encode($item[1]) ?>
3 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/vote.volt:
--------------------------------------------------------------------------------
1 |
30 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/withdraw_vesting.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/tx/witness_update.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/_elements/vesting_shares.volt:
--------------------------------------------------------------------------------
1 | VESTS" data-variation="inverted" data-position="left center">
2 | largeNumber::format($current->vesting_shares); ?>
3 |
4 |
--------------------------------------------------------------------------------
/app/views/_elements/voter_rshares.volt:
--------------------------------------------------------------------------------
1 | {{ voter.rshares }}
2 | Reward Shares" data-variation="inverted" data-position="left center">
3 | largeNumber::format($voter->rshares, 'RS'); ?>
4 |
5 |
--------------------------------------------------------------------------------
/app/views/_elements/voter_weight.volt:
--------------------------------------------------------------------------------
1 | weight, 0, "", "") ?>
2 | VESTS" data-variation="inverted" data-position="left center">
3 | largeNumber::format($voter->weight); ?>
4 |
5 |
--------------------------------------------------------------------------------
/app/views/_elements/warning.volt:
--------------------------------------------------------------------------------
1 | {#
2 |
3 |
4 |
5 |
8 |
9 | The upgrade to v0.18.0 has been started and some data will be out of date until it's completed. This message will be removed once completed.
10 |
11 |
12 |
13 |
#}
14 |
--------------------------------------------------------------------------------
/app/views/_elements/witness_vesting_shares.volt:
--------------------------------------------------------------------------------
1 | VESTS" data-variation="inverted" data-position="left center">
2 | largeNumber::format($weight); ?>
3 |
4 |
--------------------------------------------------------------------------------
/app/views/account/_elements/followers_navigation.volt:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/app/views/account/view/beneficiariesDate.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 | Back to All Dates
10 |
11 |
12 |
13 |
14 | {% for reward in beneficiaries %}
15 |
16 |
17 | VESTS" data-variation="inverted" data-position="left center">
18 | largeNumber::format($reward->reward); ?>
19 |
20 |
21 |
22 | ~convert::vest2sp($reward->reward, ""); ?> SP*
23 |
24 |
25 |
52 |
53 |
54 | {% else %}
55 |
56 |
57 |
60 |
61 |
62 | {% endfor %}
63 |
64 |
65 |
--------------------------------------------------------------------------------
/app/views/account/view/blocks.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | Block
11 | Date
12 | Account Name
13 |
14 |
15 |
16 | {% for b in mining %}
17 |
18 |
19 |
20 | _id ?>
21 |
22 |
23 |
24 | _ts / 1000) ?>
25 |
26 | {{ b.witness }}
27 |
28 |
29 | {% endfor %}
30 |
31 |
--------------------------------------------------------------------------------
/app/views/account/view/curationDate.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 | Back to All Dates
10 |
11 |
12 |
13 |
14 | {% for reward in curation %}
15 |
16 |
17 | VESTS" data-variation="inverted" data-position="left center">
18 | largeNumber::format($reward->reward); ?>
19 |
20 |
21 |
22 | ~convert::vest2sp($reward->reward, ""); ?> SP*
23 |
24 |
25 |
26 | {{ reward.comment_permlink }}
27 |
28 |
29 | by {{ reward.comment_author }} ,
30 |
31 | timeAgo::mongo($reward->_ts); ?>
32 |
33 |
34 |
35 | {% else %}
36 |
37 |
38 |
41 |
42 |
43 | {% endfor %}
44 |
45 |
46 |
--------------------------------------------------------------------------------
/app/views/account/view/data.volt:
--------------------------------------------------------------------------------
1 |
7 | {% include '_elements/definition_table' with ['data': account] %}
8 |
--------------------------------------------------------------------------------
/app/views/account/view/followers.volt:
--------------------------------------------------------------------------------
1 |
7 | {% include 'account/_elements/followers_navigation' with ['active': 'recent'] %}
8 |
9 |
10 |
11 | When
12 | Account
13 | What
14 |
15 |
16 |
17 | {% for current in followers %}
18 |
19 |
20 | timeAgo::mongo($current->_ts); ?>
21 |
22 |
23 |
24 | {{ current.follower }}
25 |
26 |
27 |
28 | {% if current.what[0] !== "ignore" %}
29 |
30 | Follow
31 |
32 | {% else %}
33 |
34 | Unfollow
35 |
36 | {% endif %}
37 |
38 |
39 | {% else %}
40 |
41 |
42 |
48 |
49 |
50 | {% endfor %}
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/views/account/view/followersWhales.volt:
--------------------------------------------------------------------------------
1 |
7 | {% include 'account/_elements/followers_navigation' with ['active': 'whales'] %}
8 |
9 |
10 |
11 | Account
12 | Followers
13 | Posts
14 | Vests
15 |
16 |
17 |
18 | {% for current in followers %}
19 | {% include '_elements/account_table_row' with ['current': current] %}
20 | {% else %}
21 |
22 |
23 |
29 |
30 |
31 | {% endfor %}
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/views/account/view/following.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | When
11 | Account
12 | What
13 |
14 |
15 |
16 | {% for current in followers %}
17 |
18 |
19 | timeAgo::mongo($current->_ts); ?>
20 |
21 |
22 |
23 | {{ current.following }}
24 |
25 |
26 |
27 | {% if current.what[0] %}
28 |
29 | Follow
30 |
31 | {% else %}
32 |
33 | Unfollow
34 |
35 | {% endif %}
36 |
37 |
38 | {% else %}
39 |
40 |
41 |
47 |
48 |
49 | {% endfor %}
50 |
51 |
52 |
--------------------------------------------------------------------------------
/app/views/account/view/missed.volt:
--------------------------------------------------------------------------------
1 |
7 | Date/time is approximate within 1 minutes
8 |
9 |
10 |
11 | Date
12 | Account Name
13 |
14 |
15 |
16 | {% for b in mining %}
17 |
18 |
19 | date->toDateTime()->format('Y-m-d\TH:i:s.u'); ?>
20 |
21 | {{ b.witness }}
22 |
23 |
24 | {% else %}
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 | {% endfor %}
35 |
36 |
--------------------------------------------------------------------------------
/app/views/account/view/posts.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SBD
5 |
6 |
7 | Total Payouts
8 |
9 |
10 |
11 |
12 | SBD
13 |
14 |
15 | Pending Payouts
16 |
17 |
18 |
19 |
22 |
23 | {% include "_elements/comment_list.volt" %}
24 |
25 |
--------------------------------------------------------------------------------
/app/views/account/view/powerdown.volt:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
14 |
15 | When
16 | From
17 | To
18 | SP
19 | STEEM
20 |
21 |
22 |
23 | {% for power in powerdown %}
24 |
25 |
26 | timeAgo::mongo($power->_ts); ?>
27 |
28 |
29 |
30 | {{ power.from_account }}
31 |
32 |
33 |
34 |
35 | {{ power.to_account }}
36 |
37 |
38 |
39 |
42 |
43 |
44 |
47 |
48 |
49 |
50 | {% else %}
51 |
52 |
53 |
54 |
57 |
58 |
59 |
60 | {% endfor %}
61 |
62 |
--------------------------------------------------------------------------------
/app/views/account/view/powerup.volt:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
14 |
15 | When
16 | From
17 | To
18 | STEEM
19 |
20 |
21 |
22 | {% for power in powerup %}
23 |
24 |
25 | timeAgo::mongo($power->_ts); ?>
26 |
27 |
28 |
29 | {{ power.from }}
30 |
31 |
32 |
33 |
34 | {{ power.to }}
35 |
36 |
37 |
38 | {{ power.amount }} STEEM
39 |
40 |
41 |
42 | {% else %}
43 |
44 |
45 |
46 |
49 |
50 |
51 |
52 | {% endfor %}
53 |
54 |
--------------------------------------------------------------------------------
/app/views/account/view/props.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | Date
11 | Quote
12 | Base
13 | Bias
14 | Creation Fee
15 | SBD Interest
16 | Block Size
17 |
18 |
19 |
20 | {% for props in history %}
21 |
22 |
23 | {{ props.created.toDateTime().format('Y-m-d') }}
24 |
25 |
26 | {{ props.sbd_exchange_rate.quote }}
27 |
28 |
29 | {{ props.sbd_exchange_rate.base }}
30 |
31 |
32 | {% if props.sbd_exchange_rate.quote != "1.000 STEEM" %}
33 | sbd_exchange_rate->quote)[0]) * 100, 1) ?>%
34 | {% endif %}
35 |
36 |
37 | {{ props.props.account_creation_fee }}
38 |
39 |
40 | {{ props.props.sbd_interest_rate }}
41 |
42 |
43 | {{ props.props.maximum_block_size }}
44 |
45 |
46 | {% endfor %}
47 |
48 |
49 |
--------------------------------------------------------------------------------
/app/views/account/view/proxied.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | Account
11 | Followers
12 | Posts
13 | Vests
14 | Balances
15 |
16 |
17 |
18 | {% for proxy in proxied %}
19 |
20 |
21 |
27 |
28 |
29 |
35 |
36 |
37 | {{ proxy.post_count }}
38 |
39 |
40 | {{ partial("_elements/vesting_shares", ['current': proxy]) }}
41 |
42 |
43 |
49 |
50 |
51 | {% endfor %}
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/views/account/view/reblogged.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | Date
11 | Author
12 | Content
13 |
14 |
15 |
16 | {% for reblog in reblogs %}
17 |
18 |
19 | timeAgo::mongo($reblog->_ts); ?>
20 |
21 |
22 |
23 | {{ reblog.account }}
24 |
25 |
26 |
27 |
28 | {{ reblog.permlink }}
29 |
30 |
31 |
32 |
33 | {% else %}
34 |
35 |
36 |
37 |
40 |
41 |
42 |
43 | {% endfor %}
44 |
45 | {% if reblogs | length == 100 and reblogs | length > 0 %}
46 |
47 | Next Page
48 |
49 | {% endif %}
50 |
--------------------------------------------------------------------------------
/app/views/account/view/reblogs.volt:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | Date
11 | Author
12 | Content
13 |
14 |
15 |
16 | {% for reblog in reblogs %}
17 |
18 |
19 | timeAgo::mongo($reblog->_ts); ?>
20 |
21 |
22 |
23 | {{ reblog.author }}
24 |
25 |
26 |
27 |
28 | {{ reblog.permlink }}
29 |
30 |
31 |
32 |
33 | {% else %}
34 |
35 |
36 |
37 |
40 |
41 |
42 |
43 | {% endfor %}
44 |
45 | {% if reblogs | length == 100 and reblogs | length > 0 %}
46 |
47 | Next Page
48 |
49 | {% endif %}
50 |
--------------------------------------------------------------------------------
/app/views/account/view/replies.volt:
--------------------------------------------------------------------------------
1 |
7 |
48 |
--------------------------------------------------------------------------------
/app/views/account/view/transfers.volt:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
14 |
15 | When
16 | From
17 | To
18 | Amount
19 | Type
20 | Memo
21 |
22 |
23 |
24 | {% for transfer in transfers %}
25 |
26 |
27 | _ts / 1000) ?>
28 |
29 |
30 |
31 | {{ transfer.from }}
32 |
33 |
34 |
35 |
36 | {{ transfer.to }}
37 |
38 |
39 |
40 |
43 |
44 |
45 | {{ transfer.type }}
46 |
47 |
48 | {% if transfer.memo %}
49 |
50 |
51 |
52 | {% endif %}
53 |
54 |
55 |
56 | {% else %}
57 |
58 |
59 |
60 |
63 |
64 |
65 |
66 | {% endfor %}
67 |
68 | {% include "_elements/paginator.volt" %}
69 |
--------------------------------------------------------------------------------
/app/views/account/view/view.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ account.followers | length }}
5 |
6 |
7 | Followers
8 |
9 |
10 |
11 |
12 | {{ account.post_count }}
13 |
14 |
15 | Posts
16 |
17 |
18 |
19 |
20 | {{ account.following | length }}
21 |
22 |
23 | Following
24 |
25 |
26 |
27 |
33 |
34 |
35 |
36 |
37 | {% for item in activity %}
38 |
39 |
40 |
47 |
48 |
49 | {% include "_elements/tx/" ~ item[1]['op'][0] %}
50 |
51 |
52 | {% else %}
53 |
54 |
55 | Unable to connect to steemd for to load recent history.
56 |
57 |
58 | {% endfor %}
59 |
60 |
61 |
--------------------------------------------------------------------------------
/app/views/account/view/votes.volt:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 | {% for vote in votes %}
8 |
9 |
10 | {% if vote.weight > 0 %}
11 |
12 | {% elseif vote.weight < 0 %}
13 |
14 | {% else %}
15 |
16 | {% endif %}
17 | = round($vote->weight / 100) ?>%
18 |
19 |
20 | timeAgo::mongo($vote->_ts); ?>
21 |
22 |
23 |
40 |
41 |
42 |
43 |
44 | {% else %}
45 |
46 |
47 |
53 |
54 |
55 | {% endfor %}
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/views/app/view.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
12 |
13 | {% include "app/view/" ~ router.getActionName() %}
14 |
15 |
16 |
17 |
18 | {% include '_elements/cards/app.volt' %}
19 |
20 |
21 |
22 |
23 |
24 | {% endblock %}
25 |
26 | {% block scripts %}
27 | {% if chart is defined %}
28 | {% include 'charts/account/' ~ router.getActionName() %}
29 | {% endif %}
30 |
46 | {% endblock %}
47 |
--------------------------------------------------------------------------------
/app/views/app/view/earnings.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
19 |
27 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | Date
42 | Rewards
43 | Posts
44 |
45 |
46 |
47 | {% for item in rewards %}
48 |
49 |
50 |
53 |
54 |
55 |
61 |
62 |
63 | {{ item.count }}
64 |
65 |
66 | {% else %}
67 |
68 |
69 | No rewards found.
70 |
71 |
72 | {% endfor %}
73 |
74 |
75 |
--------------------------------------------------------------------------------
/app/views/app/view/view.volt:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
18 | Date
19 | Posts
20 | SBD
21 | VESTS
22 | STEEM
23 |
24 |
25 |
26 | {% for item in leaderboard %}
27 |
28 |
29 | {{ loop.index }}
30 |
31 |
32 |
37 |
38 |
39 |
40 | {{ item.count }}
41 |
42 |
43 |
44 |
47 |
48 |
49 |
55 |
56 |
57 | {{ item.steem }} STEEM
58 |
59 |
60 | {% else %}
61 |
62 |
63 | No rewards found.
64 |
65 |
66 | {% endfor %}
67 |
68 |
69 |
--------------------------------------------------------------------------------
/app/views/block/comment_options.volt:
--------------------------------------------------------------------------------
1 | {% include "_elements/definition_table" with ['data': item[1]['op'][1]] %}
2 |
--------------------------------------------------------------------------------
/app/views/blocks/index.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
15 |
16 |
17 |
18 | Height
19 | Time
20 | Witness
21 | Transactions
22 | Operations
23 |
24 |
25 |
26 | {% for current in blocks %}
27 |
28 |
29 |
30 | {{ current._id }}
31 |
32 |
33 |
34 | {{ current._ts.toDateTime().format("Y-m-d H:i:s") }} UTC
35 |
36 |
37 |
38 | {{ current.witness }}
39 |
40 |
41 |
42 | {{ current.transactions | length }}
43 |
44 |
45 | transactions, 'operations') as $ops) {
48 | $count += count($ops);
49 | } ?>
50 | {{ count }}
51 |
52 |
53 | {% endfor %}
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock %}
63 |
--------------------------------------------------------------------------------
/app/views/charts/account/authoring.volt:
--------------------------------------------------------------------------------
1 |
77 |
--------------------------------------------------------------------------------
/app/views/charts/account/blocks.volt:
--------------------------------------------------------------------------------
1 |
69 |
--------------------------------------------------------------------------------
/app/views/charts/account/curation.volt:
--------------------------------------------------------------------------------
1 |
64 |
--------------------------------------------------------------------------------
/app/views/charts/account/followers.volt:
--------------------------------------------------------------------------------
1 |
59 |
--------------------------------------------------------------------------------
/app/views/charts/account/posts.volt:
--------------------------------------------------------------------------------
1 |
71 |
--------------------------------------------------------------------------------
/app/views/charts/account/powerdown.volt:
--------------------------------------------------------------------------------
1 |
59 |
--------------------------------------------------------------------------------
/app/views/charts/account/powerup.volt:
--------------------------------------------------------------------------------
1 |
59 |
--------------------------------------------------------------------------------
/app/views/charts/account/transfers.volt:
--------------------------------------------------------------------------------
1 |
64 |
--------------------------------------------------------------------------------
/app/views/charts/account/view.volt:
--------------------------------------------------------------------------------
1 |
82 |
--------------------------------------------------------------------------------
/app/views/charts/account/witness.volt:
--------------------------------------------------------------------------------
1 |
60 |
--------------------------------------------------------------------------------
/app/views/charts/authors.volt:
--------------------------------------------------------------------------------
1 |
75 |
--------------------------------------------------------------------------------
/app/views/charts/chart/rewards.volt:
--------------------------------------------------------------------------------
1 |
77 |
--------------------------------------------------------------------------------
/app/views/charts/chart/steem.volt:
--------------------------------------------------------------------------------
1 |
81 |
--------------------------------------------------------------------------------
/app/views/charts/index.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | {#
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | Account
46 | Vesting
47 |
48 |
49 |
50 | {% for account in accounts %}
51 |
52 |
53 | {{ link_to("/@" ~ account.name, account.name) }}
54 |
55 | {{ account.vesting_shares }}
56 |
57 | {% endfor %}
58 |
59 |
60 |
61 |
62 |
63 |
64 | #}
65 |
66 | {% endblock %}
67 |
68 | {% block scripts %}
69 | {% include 'charts/supply.volt' %}
70 | {% include 'charts/activity.volt' %}
71 | {% include 'charts/growth.volt' %}
72 | {% include 'charts/authors.volt' %}
73 | {% include 'charts/votes.volt' %}
74 | {% endblock %}
75 |
--------------------------------------------------------------------------------
/app/views/charts/price.volt:
--------------------------------------------------------------------------------
1 |
60 |
--------------------------------------------------------------------------------
/app/views/charts/rewards.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
14 |
25 |
26 | {% endblock %}
27 |
28 | {% block scripts %}
29 | {% include 'charts/chart/rewards.volt' %}
30 | {% endblock %}
31 |
--------------------------------------------------------------------------------
/app/views/charts/steem.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
14 |
25 | {#
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | Account
34 | Vesting
35 |
36 |
37 |
38 | {% for account in accounts %}
39 |
40 |
41 | {{ link_to("/@" ~ account.name, account.name) }}
42 |
43 | {{ account.vesting_shares }}
44 |
45 | {% endfor %}
46 |
47 |
48 |
49 |
50 |
51 |
52 | #}
53 |
54 | {% endblock %}
55 |
56 | {% block scripts %}
57 | {% include 'charts/chart/steem.volt' %}
58 | {% endblock %}
59 |
--------------------------------------------------------------------------------
/app/views/charts/supply.volt:
--------------------------------------------------------------------------------
1 |
81 |
--------------------------------------------------------------------------------
/app/views/charts/votes.volt:
--------------------------------------------------------------------------------
1 |
60 |
--------------------------------------------------------------------------------
/app/views/comment/list.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 | {% include "_elements/comment_list.volt" %}
9 | {% endblock %}
10 |
--------------------------------------------------------------------------------
/app/views/comment/view/data.volt:
--------------------------------------------------------------------------------
1 | View JSON
2 | {% include '_elements/definition_table' with ['data': comment.toArray()] %}
3 |
--------------------------------------------------------------------------------
/app/views/comment/view/edits.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for diff in edits %}
4 |
7 |
8 |
9 |
10 | Title
11 | {{ diff.title }}
12 |
13 |
14 | Body
15 | {{ diff.body }}
16 |
17 |
18 | JSON
19 |
20 |
21 | json_metadata, true), JSON_PRETTY_PRINT); ?>
22 |
23 |
24 |
25 |
26 |
27 | {% endfor %}
28 |
29 |
--------------------------------------------------------------------------------
/app/views/comment/view/reblogs.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for reblog in reblogs %}
4 |
11 | {% endfor %}
12 |
13 |
--------------------------------------------------------------------------------
/app/views/comment/view/replies.volt:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/views/comment/view/reply.volt:
--------------------------------------------------------------------------------
1 |
34 |
--------------------------------------------------------------------------------
/app/views/comment/view/tags.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for tag in comment.metadata('tags') %}
4 |
5 | {{ tag }}
6 |
7 | {% endfor %}
8 |
9 |
--------------------------------------------------------------------------------
/app/views/comment/view/view.volt:
--------------------------------------------------------------------------------
1 |
2 | {{ markdown(comment.body) }}
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/views/comment/view/votes.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %
5 | Voter
6 | Time
7 | Weight
8 | Reward Shares
9 |
10 |
11 |
12 | {% for voter in votes %}
13 |
14 |
15 | {{ voter.percent / 100 }}%
16 |
17 |
18 |
19 | {{ voter.voter }}
20 |
21 |
22 |
23 | {{ date("Y-m-d H:i:s", voter.time / 1000) }}
24 |
25 |
26 | {% include "_elements/voter_weight.volt" %}
27 |
28 |
29 | {% include "_elements/voter_rshares.volt" %}
30 |
31 |
32 | {% endfor %}
33 |
34 |
35 |
--------------------------------------------------------------------------------
/app/views/comments/list.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 | {% include "_elements/comment_list.volt" %}
9 | {% endblock %}
10 |
--------------------------------------------------------------------------------
/app/views/comments/view/data.volt:
--------------------------------------------------------------------------------
1 | View JSON
2 | {% include '_elements/definition_table' with ['data': comment] %}
3 |
--------------------------------------------------------------------------------
/app/views/comments/view/reblogs.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for reblog in reblogs %}
4 |
11 | {% endfor %}
12 |
13 |
--------------------------------------------------------------------------------
/app/views/comments/view/replies.volt:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/views/comments/view/reply.volt:
--------------------------------------------------------------------------------
1 |
34 |
--------------------------------------------------------------------------------
/app/views/comments/view/tags.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% for tag in comment.metadata('tags') %}
4 |
5 | {{ tag }}
6 |
7 | {% endfor %}
8 |
9 |
--------------------------------------------------------------------------------
/app/views/comments/view/view.volt:
--------------------------------------------------------------------------------
1 |
2 | {{ markdown(comment.body) }}
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/views/comments/view/votes.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %
5 | Voter
6 | Time
7 | Weight
8 | Reward Shares
9 |
10 |
11 |
12 | {% for voter in votes %}
13 |
14 |
15 | {{ voter.percent / 100 }}%
16 |
17 |
18 |
19 | {{ voter.voter }}
20 |
21 |
22 |
23 | time->toDateTime()->format('Y/m/d H:i:s') ?>
24 |
25 |
26 | {% include "_elements/voter_weight.volt" %}
27 |
28 |
29 | {% include "_elements/voter_rshares.volt" %}
30 |
31 |
32 |
33 | {% endfor %}
34 |
35 |
--------------------------------------------------------------------------------
/app/views/forums/_breadcrumb.volt:
--------------------------------------------------------------------------------
1 |
36 |
--------------------------------------------------------------------------------
/app/views/index/index.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | {#
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | Account
40 | Vesting
41 |
42 |
43 |
44 | {% for account in accounts %}
45 |
46 |
47 | {{ link_to("/@" ~ account.name, account.name) }}
48 |
49 | {{ account.vesting_shares }}
50 |
51 | {% endfor %}
52 |
53 |
54 |
55 |
56 |
57 |
58 | #}
59 |
60 | {% endblock %}
61 |
62 | {% block scripts %}
63 |
64 | {% endblock %}
65 |
--------------------------------------------------------------------------------
/app/views/index/live.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
60 |
61 |
62 |
68 | Subscribe
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/app/views/index/show404.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
14 |
15 |
16 |
17 |
18 |
21 | The page you're requesting could not be loaded.
22 |
23 |
24 |
25 |
26 | {% endblock %}
27 |
28 | {% block scripts %}
29 | {% endblock %}
30 |
--------------------------------------------------------------------------------
/app/views/labs/benefactors.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 | Date
22 | VESTS
23 | Posts
24 |
25 |
26 |
27 | {% for day in dates %}
28 |
29 |
30 | {{ day._id.year }}-{{ day._id.month }}-{{ day._id.day }}
31 |
32 |
33 | {{ day.reward }}
34 |
35 |
36 | {{ day.total }}
37 |
38 |
39 |
40 |
41 |
42 | Benefactor
43 | Posts
44 | VESTS
45 |
46 |
47 |
48 | {% for benefactor in day.benefactors %}
49 |
50 |
51 | {{ (benefactor.benefactor) ? benefactor.benefactor : 'unknown' }}
52 |
53 |
54 | count / $day->total * 100, 2); ?>% ({{ benefactor.count }})
55 |
56 |
57 | reward / $day->reward * 100, 2); ?>% ({{ benefactor.reward }})
58 |
59 |
60 | {% endfor %}
61 |
62 |
63 |
64 |
65 | {% endfor %}
66 |
67 |
68 |
69 |
70 |
71 |
72 | {% endblock %}
73 |
--------------------------------------------------------------------------------
/app/views/labs/conversions.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 | Date
22 | Account
23 | Amount
24 | RequestID
25 |
26 |
27 |
28 | {% for current in conversions %}
29 |
30 |
31 |
34 |
35 |
36 |
37 | {{ current.owner }}
38 |
39 |
40 |
41 | amount, 3, ".", ",") ?> SBD
42 |
43 |
44 | {{ current.requestid }}
45 |
46 |
47 | {% endfor %}
48 |
49 |
50 |
51 |
52 |
53 |
54 | {% endblock %}
55 |
--------------------------------------------------------------------------------
/app/views/labs/flags.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 | Account
22 | Total Flags
23 | Posts Flagged
24 | Prominent Flaggers
25 |
26 |
27 |
28 | {% for account in accounts %}
29 |
30 |
31 |
32 | {{ account['_id'] }}
33 |
34 |
35 |
36 | {{ account['count'] }}
37 |
38 |
39 | {{ account['posts'] | length }}
40 |
41 |
42 | {% for voter, count in account['voters'] %}
43 | {{ voter }} ({{ count }}){% if not loop.last %},{% endif %}
44 | {% endfor %}
45 |
46 |
47 | {% endfor %}
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | {% endblock %}
56 |
57 | {% block scripts %}
58 |
59 | {% endblock %}
60 |
--------------------------------------------------------------------------------
/app/views/labs/hf19.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 | Date
22 | Votes
23 | Average Weight
24 | Self-votes
25 | Average Weight (Self-Votes)
26 |
27 |
28 |
29 | {% for result in results %}
30 |
31 |
32 | {{ result._id.year }}-{{ result._id.month }}-{{ result._id.day }}
33 |
34 |
35 | {{ result['count'] }}
36 |
37 |
38 | %
39 |
40 |
41 | {{ result['self'] }}
42 |
43 |
44 | %
45 |
46 |
47 | {% endfor %}
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | {% endblock %}
56 |
57 | {% block scripts %}
58 |
59 | {% endblock %}
60 |
--------------------------------------------------------------------------------
/app/views/labs/powerup.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
18 |
23 |
24 |
25 |
26 | Power Up
27 | Vests
28 | Account
29 |
30 |
31 |
32 | {% for powerup in powerups %}
33 |
34 |
35 |
41 |
42 |
43 | {{ partial("_elements/vesting_shares", ['current': powerup.account[0]]) }}
44 |
45 |
46 |
52 |
53 |
54 | {% endfor %}
55 |
56 |
57 |
58 |
59 |
60 |
61 | {% endblock %}
62 |
--------------------------------------------------------------------------------
/app/views/labs/votefocusing.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
22 | Account Weight
23 | Voter
24 | Author
25 | Votes
26 | Average Weight
27 |
28 |
29 |
30 | {% for focused in focus %}
31 |
32 |
33 | VESTS" data-variation="inverted" data-position="left center">
34 | largeNumber::format($focused['account'][0]['vesting_shares']); ?>
35 |
36 |
37 |
38 |
39 | {{ focused._id.voter }}
40 |
41 |
42 |
43 |
44 | {{ focused._id.author }}
45 |
46 |
47 |
48 | {{ focused.count }}
49 |
50 |
51 | = round($focused->weight / 100) ?>%
52 |
53 |
54 | {% endfor %}
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock %}
63 |
64 | {% block scripts %}
65 |
66 | {% endblock %}
67 |
--------------------------------------------------------------------------------
/app/views/layouts/default.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% include '_elements/layouts/head.volt' %}
4 |
5 |
6 | {% include '_elements/layouts/menu.volt' %}
7 |
8 |
9 |
10 |
11 | {% include "_elements/warning.volt" %}
12 |
13 | {% block header %}{% endblock %}
14 |
15 | {% if this.flashSession.has() %}
16 |
17 |
18 | flashSession->output() ?>
19 |
20 |
21 | {% endif %}
22 |
23 | {% block content %}{% endblock %}
24 |
25 | {% include '_elements/layouts/footer.volt' %}
26 |
27 |
28 |
29 | {% include '_elements/layouts/scripts.volt' %}
30 | {% block scripts %}{% endblock %}
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/views/layouts/homepage.volt:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% include '_elements/layouts/head.volt' %}
4 |
5 |
6 | {% include '_elements/layouts/menu.volt' %}
7 |
8 |
9 |
10 |
11 | {% include "_elements/warning.volt" %}
12 |
13 | {% block content %}{% endblock %}
14 |
15 | {% include '_elements/layouts/footer.volt' %}
16 |
17 |
18 |
19 | {% include '_elements/layouts/scripts.volt' %}
20 | {% block scripts %}{% endblock %}
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/views/search/page.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block header %}
4 |
5 | {% endblock %}
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
21 |
22 |
23 |
24 |
25 | {% for result in results %}
26 |
27 |
40 |
41 |
42 | {% endfor %}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {% endblock %}
51 |
52 | {% block scripts %}
53 | {% endblock %}
54 |
--------------------------------------------------------------------------------
/app/views/tx/view.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
14 | {% if current %}
15 |
16 |
17 |
18 | {% include '_elements/definition_table' with ['data': current] %}
19 |
20 |
21 |
22 | {% else %}
23 |
31 | {% endif %}
32 |
33 |
34 | {% endblock %}
35 |
36 | {% block scripts %}
37 | {% if chart is defined %}
38 | {% include 'charts/account/' ~ router.getActionName() %}
39 | {% endif %}
40 |
46 | {% endblock %}
47 |
--------------------------------------------------------------------------------
/app/views/witness/misses.volt:
--------------------------------------------------------------------------------
1 | {% extends 'layouts/default.volt' %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
19 | Date/Time (Approximately)
20 | Witness
21 | Missed
22 | Total Misses
23 |
24 |
25 |
26 | {% for miss in history %}
27 |
28 |
29 | {{ miss.date.toDateTime().format("Y-m-d H:i:s") }} UTC
30 |
31 |
32 |
33 | {{ miss.witness }}
34 |
35 |
36 |
37 | +{{ miss.increase }}
38 |
39 |
40 | {{ miss.total }}
41 |
42 |
43 | {% endfor %}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
54 |
55 | {% for witness in misses %}
56 |
64 | {% endfor %}
65 |
66 |
67 |
68 |
69 |
70 | {% endblock %}
71 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "steemdb",
3 | "homepage": "https://github.com/aaroncox/steemdb",
4 | "authors": [
5 | "Aaron Cox "
6 | ],
7 | "description": "",
8 | "main": "",
9 | "license": "MIT",
10 | "private": true,
11 | "ignore": [
12 | "**/.*",
13 | "node_modules",
14 | "bower_components",
15 | "test",
16 | "tests"
17 | ],
18 | "dependencies": {
19 | "plottable": "^2.6.0",
20 | "d3": "^4.2.1",
21 | "glidejs": "^2.0.9"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require": {
3 | "mongodb/mongodb": "^1.0.0",
4 | "phalcon/incubator": "~3.0",
5 | "fguillot/json-rpc": "^1.2",
6 | "ezyang/htmlpurifier": "~4.8.0",
7 | "league/commonmark": "^0.11"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | rsync ./ steemdb:/var/www/com_steemdb/ --rsh ssh --rsync-path="sudo rsync" --recursive --perms --delete --verbose --exclude=.git* --exclude=docker/**/*.service --exclude=cache --exclude=vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/ --exclude=vendor --exclude=app/config --exclude=app/storage/views/*.php --checksum -a
3 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '2'
2 | services:
3 | history:
4 | build: ./docker/history
5 | restart: on-failure
6 | volumes:
7 | - ./docker/history:/src
8 | # links:
9 | # - mongo
10 | live:
11 | build: ./docker/live
12 | restart: on-failure
13 | # links:
14 | # - mongo
15 | ports:
16 | - "8888:8888"
17 | sync:
18 | build: ./docker/sync
19 | restart: on-failure
20 | # external_links:
21 | # - mongo:steemdb_mongo_1
22 | volumes:
23 | - ./docker/sync:/src
24 | witnesses:
25 | build: ./docker/witnesses
26 | # links:
27 | # - mongo
28 | # lucky:
29 | # build: ./docker/lucky
30 | # environment:
31 | # steemnode: "steemd.steemit.com"
32 | development:
33 | build: ./docker/development
34 | # links:
35 | # - mongo
36 | external_links:
37 | - mongo:steemdb_mongo_1
38 | volumes:
39 | - .:/var/www/html
40 | ports:
41 | - "8880:80"
42 | # mongodata:
43 | # image: mongo:3.3.10
44 | # volumes:
45 | # - /data/db
46 | # command: --break-mongo
47 | # mongo:
48 | # image: mongo:3.3.10
49 | # volumes_from:
50 | # - mongodata
51 | # # ports:
52 | # # - "27017:27017"
53 | # command: --smallfiles --rest
54 |
55 | networks:
56 | dockernet:
57 | external: true
58 |
--------------------------------------------------------------------------------
/docker/development/conf/nginx.conf:
--------------------------------------------------------------------------------
1 | #user nobody;
2 | worker_processes 5;
3 |
4 | #error_log logs/error.log;
5 | #error_log logs/error.log notice;
6 | #error_log logs/error.log info;
7 |
8 | #pid run/nginx.pid;
9 |
10 |
11 | events {
12 | worker_connections 1024;
13 | }
14 |
15 |
16 | http {
17 | include mime.types;
18 | default_type application/octet-stream;
19 |
20 | #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
21 | # '$status $body_bytes_sent "$http_referer" '
22 | # '"$http_user_agent" "$http_x_forwarded_for"';
23 |
24 | #access_log logs/access.log main;
25 |
26 | sendfile on;
27 | #tcp_nopush on;
28 |
29 | #keepalive_timeout 0;
30 | keepalive_timeout 2;
31 | client_max_body_size 100m;
32 |
33 | server_tokens off;
34 | #gzip on;
35 |
36 | include /etc/nginx/sites-enabled/*;
37 | }
38 | daemon off;
39 |
--------------------------------------------------------------------------------
/docker/development/conf/supervisord.conf:
--------------------------------------------------------------------------------
1 | [supervisord]
2 | logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
3 | logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
4 | logfile_backups=10 ; (num of main logfile rotation backups;default 10)
5 | loglevel=info ; (log level;default info; others: debug,warn,trace)
6 | pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
7 | nodaemon=false ; (start in foreground if true;default false)
8 | minfds=1024 ; (min. avail startup file descriptors;default 1024)
9 | minprocs=200 ; (min. avail process descriptors;default 200)
10 | user=root ;
11 |
12 | [program:php-fpm7.0]
13 | command=/usr/sbin/php-fpm7.0 -c /etc/php/7.0/fpm/php-fpm.conf
14 | autostart=true
15 | autorestart=true
16 | priority=5
17 | stdout_logfile=/dev/stdout
18 | stdout_logfile_maxbytes=0
19 | stderr_logfile=/dev/stderr
20 | stderr_logfile_maxbytes=0
21 |
22 | [program:nginx]
23 | command=/usr/sbin/nginx
24 | autostart=true
25 | autorestart=true
26 | priority=10
27 | stdout_logfile=/dev/stdout
28 | stdout_logfile_maxbytes=0
29 | stderr_logfile=/dev/stderr
30 | stderr_logfile_maxbytes=0
31 | stdout_events_enabled=true
32 | stderr_events_enabled=true
33 |
34 | [program:memcached]
35 | command=/usr/bin/memcached -p 11211 -u www-data -m 256 -c 1024 -t 4
36 | autostart=true
37 | autorestart=true
38 | user=root
39 | priority=100
40 | redirect_stderr=true
41 | stdout_logfile=/var/log/memcached.log
42 |
--------------------------------------------------------------------------------
/docker/development/conf/vhost.conf:
--------------------------------------------------------------------------------
1 | server {
2 |
3 | listen 80;
4 | server_name _;
5 | root /var/www/html/public;
6 | index index.php;
7 |
8 | error_log /dev/stdout info;
9 | access_log /dev/stdout;
10 |
11 | location / {
12 | if (-f $request_filename) {
13 | break;
14 | }
15 | if (!-e $request_filename) {
16 | rewrite ^(.+)$ /index.php?_url=$1 last;
17 | break;
18 | }
19 | }
20 |
21 | location ~ \.php$ {
22 | default_type text/html;
23 | try_files $uri =404;
24 | fastcgi_split_path_info ^(.+\.php)(/.+)$;
25 | fastcgi_pass unix:/run/php/php7.0-fpm.sock;
26 | fastcgi_index index.php;
27 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
28 | include fastcgi_params;
29 | fastcgi_param APPLICATION_ENV development;
30 | fastcgi_pass_header Authorization;
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/docker/development/scripts/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sed -i -e "s/memory_limit = 128M/memory_limit = 512M/" /etc/php/7.0/fpm/php.ini
4 | sed -i -e "s/memory_limit = 128M/memory_limit = 512M/" /etc/php/7.0/fpm/conf.d/php.ini
5 | echo '* Working around permission errors locally by making sure that "nginx" uses the same uid and gid as the host volume'
6 | TARGET_UID=$(stat -c "%u" /var/lib/nginx)
7 | echo '-- Setting nginx user to use uid '$TARGET_UID
8 | usermod -o -u $TARGET_UID nginx || true
9 | TARGET_GID=$(stat -c "%g" /var/lib/nginx)
10 | echo '-- Setting nginx group to use gid '$TARGET_GID
11 | groupmod -o -g $TARGET_GID nginx || true
12 |
13 | echo '-- Updating composer libraries'
14 | composer -d=/var/www/html install
15 | composer -d=/var/www/html update
16 |
17 | echo '* Starting nginx'
18 | /usr/bin/supervisord -n -c /etc/supervisord.conf
19 |
--------------------------------------------------------------------------------
/docker/history/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.6.2-slim
2 |
3 | RUN apt-get update && \
4 | apt-get install -y git make gcc libssl-dev libgmp-dev python-dev libxml2-dev libxslt1-dev zlib1g-dev
5 |
6 | RUN pip3 install steem pymongo apscheduler
7 |
8 | # COPY . /src
9 |
10 | CMD ["python", "/src/history.py"]
11 |
--------------------------------------------------------------------------------
/docker/history/fix.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime
2 | from pymongo import MongoClient
3 | from bson.objectid import ObjectId
4 | from pprint import pprint
5 | import collections
6 | import time
7 | import sys
8 | import os
9 |
10 | mongo = MongoClient("mongodb://mongo")
11 | db = mongo.steemdb
12 |
13 | if __name__ == '__main__':
14 | records = db.account_history.find({"account": {"$exists": False}})
15 | for record in records:
16 | try:
17 | oldid = str(record['_id'])
18 | s1 = oldid[0:-9]
19 | s2 = datetime.strptime(oldid[-8:], "%Y%m%d")
20 | newDocument = record.copy()
21 | newDocument['date'] = s2
22 | newDocument['account'] = s1
23 | del newDocument['_id']
24 | pprint("Adding new record for account " + newDocument['account'])
25 | pprint("Removing ID " + record['_id'])
26 | db.account_history.insert(newDocument)
27 | db.account_history.remove({'_id': record['_id']})
28 | sys.stdout.flush()
29 | except OSError as err:
30 | print("OS error: {0}".format(err))
31 | except ValueError:
32 | print("Could not convert data to an integer.")
33 | except:
34 | print("Unexpected error:", sys.exc_info()[0])
35 | raise
36 |
--------------------------------------------------------------------------------
/docker/history/steemdb_history.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=SteemDB.com History Service
3 |
4 | [Service]
5 | Environment=steemnode=node.steem.ws
6 | WorkingDirectory=/var/www/com_steemdb/docker/history
7 | ExecStart=/usr/bin/python3 history.py
8 | Restart=always
9 |
10 | [Install]
11 | WantedBy=multi-user.target
12 |
--------------------------------------------------------------------------------
/docker/live/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.6.2-slim
2 |
3 | RUN apt-get update && \
4 | apt-get install -y git make gcc libssl-dev libgmp-dev python-dev libxml2-dev libxslt1-dev zlib1g-dev
5 |
6 | RUN pip3 install steem pymongo autobahn
7 |
8 | RUN pip3 install twisted
9 |
10 | COPY . /src
11 |
12 | CMD ["python", "/src/live.py"]
13 |
--------------------------------------------------------------------------------
/docker/live/steemdb_live.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=SteemDB.com Live Service
3 |
4 | [Service]
5 | Environment=steemnode=node.steem.ws
6 | WorkingDirectory=/var/www/com_steemdb/docker/live
7 | ExecStart=/usr/bin/python3 live.py
8 | Restart=always
9 |
10 | [Install]
11 | WantedBy=multi-user.target
12 |
--------------------------------------------------------------------------------
/docker/production/conf/vhost.conf:
--------------------------------------------------------------------------------
1 | fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=steemdb:10m inactive=60m;
2 | fastcgi_cache_key "$scheme$request_method$host$request_uri";
3 | add_header X-Cache $upstream_cache_status;
4 |
5 | server {
6 |
7 | listen 80;
8 | server_name _;
9 | root /var/www/com_steemdb/public;
10 | index index.php;
11 |
12 | error_log /var/log/nginx/steemdb.error.log;
13 | access_log /var/log/nginx/steemdb.access.log;
14 |
15 | location / {
16 | if (-f $request_filename) {
17 | break;
18 | }
19 | if (!-e $request_filename) {
20 | rewrite ^(.+)$ /index.php?_url=$1 last;
21 | break;
22 | }
23 | }
24 |
25 | location ~ \.php$ {
26 |
27 | default_type text/html;
28 | try_files $uri =404;
29 | fastcgi_split_path_info ^(.+\.php)(/.+)$;
30 | fastcgi_pass unix:/run/php/php7.0-fpm.sock;
31 | fastcgi_index index.php;
32 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
33 | include fastcgi_params;
34 | fastcgi_param APPLICATION_ENV production;
35 | fastcgi_pass_header Authorization;
36 |
37 | fastcgi_cache steemdb;
38 | fastcgi_cache_valid 200 5m;
39 |
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/docker/sync/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.6.2-slim
2 |
3 | RUN apt-get update && apt-get install -y make gcc libssl-dev
4 |
5 | RUN pip3 install steem pymongo
6 |
7 | CMD ["python", "/src/sync.py"]
8 |
--------------------------------------------------------------------------------
/docker/sync/steemdb_sync.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=SteemDB.com Sync Service
3 |
4 | [Service]
5 | Environment=steemnode=node.steem.ws
6 | WorkingDirectory=/var/www/com_steemdb/docker/sync
7 | ExecStart=/usr/bin/python3 sync.py
8 | Restart=always
9 |
10 | [Install]
11 | WantedBy=multi-user.target
12 |
--------------------------------------------------------------------------------
/docker/witnesses/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.6.2-slim
2 |
3 | RUN apt-get update && \
4 | apt-get install -y git make gcc libssl-dev libgmp-dev python-dev libxml2-dev libxslt1-dev zlib1g-dev
5 |
6 | RUN pip3 install steem apscheduler pymongo
7 |
8 | COPY . /src
9 |
10 | CMD ["python", "/src/witnesses.py"]
11 |
--------------------------------------------------------------------------------
/docker/witnesses/steemdb_witnesses.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=SteemDB.com Witnesses Service
3 |
4 | [Service]
5 | Environment=steemnode=node.steem.ws
6 | WorkingDirectory=/var/www/com_steemdb/docker/witnesses
7 | ExecStart=/usr/bin/python3 witnesses.py
8 | Restart=always
9 |
10 | [Install]
11 | WantedBy=multi-user.target
12 |
--------------------------------------------------------------------------------
/mongodb.md:
--------------------------------------------------------------------------------
1 |
2 | db.createCollection("block_30d", {capped: true, max: 864000, size: 2147483648})
3 |
4 |
5 | db.comment.createIndex({parent_permlink: 1})
6 | db.comment.createIndex({scanned: 1, created: 1});
7 | db.comment.createIndex({depth: 1, created: 1});
8 | db.comment.createIndex({author: 1, depth: 1, created: 1});
9 | db.comment.createIndex({pending_payout_value: 1, mode: 1, cashout_time: 1, depth: 1})
10 |
11 | db.comment.createIndex({
12 | pending_payout_value: 1,
13 | cashout_time: 1
14 | }, {sparse: true});
15 |
16 | db.block.createIndex({witness: 1, _ts: 1})
17 | db.block_30d.createIndex({witness: 1, _ts: 1})
18 |
19 | db.vote.createIndex({voter: 1, author: 1, _ts: 1});
20 | db.vote.createIndex({voter: 1, _ts: 1});
21 |
22 | db.account.createIndex({name: 1});
23 | db.account.createIndex({created: 1});
24 | db.account.createIndex({vesting_shares: 1});
25 | db.account.createIndex({reputation: 1});
26 | db.account.createIndex({post_count: 1});
27 | db.account.createIndex({followers: 1});
28 | db.account.createIndex({witness_votes: 1});
29 | db.account.createIndex({name: 1, vesting_shares: 1});
30 |
31 | db.account_history.createIndex({date: 1, name: 1});
32 |
33 |
34 | db.follow.createIndex({follower: 1, following: 1, _block: 1});
35 |
36 | db.comment.createIndex({depth: 1, category: 1, last_reply: 1}, {sparse: true});
37 |
38 | db.curation_reward.createIndex({curator: 1})
39 | db.curation_reward.createIndex({_ts: 1}, {background: true})
40 | db.comment_diff.createIndex({author: 1, permlink: 1})
41 | db.vote.createIndex({_ts: 1, weight: 1}, {background: true});
42 |
--------------------------------------------------------------------------------
/public/bower:
--------------------------------------------------------------------------------
1 | ../bower_components
--------------------------------------------------------------------------------
/public/css/style.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/css/style.css
--------------------------------------------------------------------------------
/public/examples/quotedposts.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/quotedposts.gif
--------------------------------------------------------------------------------
/public/examples/sidebar-stick.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/sidebar-stick.gif
--------------------------------------------------------------------------------
/public/examples/steemdb-account-history-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-account-history-2.png
--------------------------------------------------------------------------------
/public/examples/steemdb-account-missed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-account-missed.png
--------------------------------------------------------------------------------
/public/examples/steemdb-account-navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-account-navigation.png
--------------------------------------------------------------------------------
/public/examples/steemdb-account-sidebar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-account-sidebar.png
--------------------------------------------------------------------------------
/public/examples/steemdb-account-viewer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-account-viewer.png
--------------------------------------------------------------------------------
/public/examples/steemdb-account-witness-chart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-account-witness-chart.png
--------------------------------------------------------------------------------
/public/examples/steemdb-authoring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-authoring.png
--------------------------------------------------------------------------------
/public/examples/steemdb-chart-tooltips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-chart-tooltips.png
--------------------------------------------------------------------------------
/public/examples/steemdb-curation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-curation.png
--------------------------------------------------------------------------------
/public/examples/steemdb-follower-history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-follower-history.png
--------------------------------------------------------------------------------
/public/examples/steemdb-followers-weight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-followers-weight.png
--------------------------------------------------------------------------------
/public/examples/steemdb-following-history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-following-history.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-forum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-forum.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-home.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-icons.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-post.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-quotes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-quotes.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-summary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-summary.png
--------------------------------------------------------------------------------
/public/examples/steemdb-forums-threads.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-forums-threads.png
--------------------------------------------------------------------------------
/public/examples/steemdb-labs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-labs.png
--------------------------------------------------------------------------------
/public/examples/steemdb-leaderboard-author.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-leaderboard-author.png
--------------------------------------------------------------------------------
/public/examples/steemdb-leaderboard-curation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-leaderboard-curation.png
--------------------------------------------------------------------------------
/public/examples/steemdb-newmenuitems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-newmenuitems.png
--------------------------------------------------------------------------------
/public/examples/steemdb-pagination.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-pagination.png
--------------------------------------------------------------------------------
/public/examples/steemdb-post-viewer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-post-viewer.png
--------------------------------------------------------------------------------
/public/examples/steemdb-posts-by-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-posts-by-date.png
--------------------------------------------------------------------------------
/public/examples/steemdb-posts-by-tag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-posts-by-tag.png
--------------------------------------------------------------------------------
/public/examples/steemdb-powerdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-powerdown.png
--------------------------------------------------------------------------------
/public/examples/steemdb-powerup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-powerup.png
--------------------------------------------------------------------------------
/public/examples/steemdb-reblogged.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-reblogged.png
--------------------------------------------------------------------------------
/public/examples/steemdb-reblogs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-reblogs.png
--------------------------------------------------------------------------------
/public/examples/steemdb-richlist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-richlist.png
--------------------------------------------------------------------------------
/public/examples/steemdb-rshares-explore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-rshares-explore.png
--------------------------------------------------------------------------------
/public/examples/steemdb-transfers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-transfers.png
--------------------------------------------------------------------------------
/public/examples/steemdb-witness-misses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-witness-misses.png
--------------------------------------------------------------------------------
/public/examples/steemdb-witness-vote-history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-witness-vote-history.png
--------------------------------------------------------------------------------
/public/examples/steemdb-witnesses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/examples/steemdb-witnesses.png
--------------------------------------------------------------------------------
/public/explorers/dct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/dct.png
--------------------------------------------------------------------------------
/public/explorers/golos.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/golos.jpg
--------------------------------------------------------------------------------
/public/explorers/krm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/krm.png
--------------------------------------------------------------------------------
/public/explorers/muse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/muse.png
--------------------------------------------------------------------------------
/public/explorers/ppy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/ppy.png
--------------------------------------------------------------------------------
/public/explorers/soundac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/soundac.png
--------------------------------------------------------------------------------
/public/explorers/steem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaroncox/steemdb/d91d2ecee9b3ec5dcddcec84324d24e3f907cf39/public/explorers/steem.png
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
3 |
--------------------------------------------------------------------------------
32 | {{ markdown(comment.body) }} 33 |
34 |