Skip to content
Tezos Analytics Explorer
JavaScript Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE
deploy
doc
public
src
.dockerignore
.gitignore
LICENSE
Makefile
README.md
package.json
yarn.lock

README.md

Tezos Blockchain Explorer

Project Links

  • Discord for talking to devs
  • Airtable for persona and requirements mapping

Project Schedule

  • W25 preparation phase
    • tasks: user poll, persona definition, explorer research, feature definition, team selection
    • deliverables: personas, feature list & priorities, API requirements, tech stack, design brief
  • W26 design phase 1
    • tasks: ux and architecture design
    • deliverables: UX design sketches, list of screens and displayed information, user journey, URL semantics
  • W27-W30 design phase 2
    • tasks: detailed UX/UI design
    • deliverables: visual language (colors, fonts, cards, graphs), screen designs, HTML/CSS templates
  • W27 implementation setup
    • dev and test environment setup
    • site controllers
    • data API access layer
    • analytics integration
    • multi-language support foundation
  • W28-W33 screen implementations
    • single block screen
    • single operation screen
    • single account screen
    • single delegator account screen
    • search feature
    • live status screen
    • staking and consensus screen
    • governance screen
    • analytics screens
    • deliverables
      • W27 build system and first alpha release
      • W28 first beta release (block, operation, cycle, account screens and search)

User Personas/Groups

Target audience are all stakeholders in the Tezos ecosystem, i.e. investors, bakers, staking services, protocol developers, dapp developers, exchanges, media and the general public.

  • investor: activity, growth, risk, upside, staking services, on/off-ramps + liquidity, custodians, governance, balance, address activity, payouts (past, pending, future), staking services, votes, on/off-ramps + liquidity, custodians, software upgrades
  • adopter: balance, price, address activity, growth, staking services, payouts, governance
  • dapp user: balance, address activity, current fees, historic costs (fee, gas), software upgrades
  • dapp developer: balance, contract activity, gas & storage stats, code, storage, software upgrades
  • baker: balance, delegation activity, #delegations, #rolls, past/current/future rights, steal/miss history, current deposits/rewards/fees, future deposits/rewards predictions (when rights are set), own voting history, software upgrades
  • protocol developer: network & consensus health, governance, network nodes, all stats
  • exchange: cluster balance, cluster members, cluster ops, in/out flow stats (for own cluster), network health, alarms, software upgrades

Requirements

  • display live and historic data as well as analytics for different Tezos blockchain networks (mainnet, alphanet, zeronet)
  • allow users to view current network status, network health, consensus and governance related issues
  • allow users to view and search for information on individual accounts, operations, blocks, and nodes
  • provide network-wide analytics and insights into supply, delegation, consensus and on-chain activity, account growth, balance distributions and centralization
  • provide individual analytics and insights into account and delegation balance evolutions
  • be compatible with recent desktop and mobile web browsers (i.e. Firefox, Chrome, Safari and optionally Microsoft Edge)
  • use of a modern Javascript framework (e.g. React) and modern HTML/CSS web design features
  • optional integrations with 3rd party analytics services for collecting usage and software defect metrics (e.g. Google Analytics, Mixpanel, Bugsnag or similar services) all source-code must be licensed under MIT license and made publicly available
  • engage community to identify and prioritize user requirements

Must have features

  • read-only view on blockchain data and statistics (no user accounts, no personalization)
  • global network-wide views and detailed views on accounts, blocks, operations
  • information freshness (block, cycle, time), last block n sec/min ago, crawler status
  • low affordance graphs
  • interactive graphs > click on graph follows deep link to allow for exploration
  • visualize complex relations
    • sender-receiver for transactions and delegations
    • past .. present .. future for staking cycles and governance
    • cycle clock with fill-level and selected snapshot
    • chain of blocks with branches, block-times, misses
    • consensus priorities, rights/steals/misses
    • N-of-100 for centralization
  • search
    • block level -> single block page
    • block hash -> single block page
    • op hash -> single operation page
    • addr hash -> single account page
    • service name -> single account page
  • single-page javascript app, no backend rendering, API only data streams

Optional features

  • multiple Tezos networks besides mainnet

Out of scope features

  • notifications (Telegram, email, discord)
  • staking payout tracking
  • staking service reliability
  • node networking metrics

Screens

  • landing /
    • live block(s), cycle, voting, market (price, mcap) info
    • live supply: inflation, staking yield, 1y network share, circulating, staking, frozen, and unclaimed supply
    • 30d global market status: market volume, market price
    • 30d global network growth: new funded accounts (new vs cleared accounts)
    • 30d global network activity: rewards, fees, volume, gas, token age transacted time-series
  • single block /block/:block_id
    • visual chain history timeline on top, navigate left/right
    • selected block details
    • baker/endorser details
  • single cycle /cycle/:cycle_num
    • visual cycle history timeline on top, navigate left/right
    • #bakers, #endorsers, #roll owners, staking supply
    • top-N bakers
  • single operation /op/:op_hash
    • visual operation list within block on top, navigate left/right
    • block and op details
    • involved accounts (as cards with all type-specific data, e.g. delegator)
  • single account /account/:address
    • accounts share basic metadata/balance/etc and have type/state specific data
    • header tags to visualize type/status
      • [Baker] for baker accounts (with future rights)
      • [Delegate] for an active delegate who is not yet baker
      • [Delegator] an account that is delegating
      • [Smart Contract] contract with code
      • [Revealed] when pubkey is publicly announced
      • [Inactive] for inactive delegate (should be a warning for delegateors)
      • [Overdelegated] for overdelegated baker (should be a warning for delegateors)
      • [Fundraiser] for activated fundraiser account
      • [Vesting] for vesting contracts
      • [Spendable] account can spend funds
      • [Delegatable] account can delegate
    • show call to action when type/state suggests (e.g. this is how you delegate on accounts that can delegate but don't do so yet)
    • types
      • basic (implicit = tz1/2/3)
      • delegate (implicit = tz1/2/3)
      • baker (implicit = tz1/2/3)
      • delegator (w/wo code = KT1)
      • smart contract (w/wo code = KT1)
  • governance /governance
    • past and current voting periods on top, navigate left/right
    • voting progress, current proposals, votes, quorum, majority
  • staking /staking
    • maybe EOD stats only, 30d view
    • this is related to data in cycle, but displays evolution across larger time frame
    • delegation activity and consensus related supply
    • active delegators, delegates, daily consensus participants (#bakers, #endorsers), rolls, owners
  • health /health
    • 24h or 30d views or both
    • double baking and double endorsements
    • uncle rate, i.e. alternative heads (backend todo)
    • missed endorsements
    • missed blocks: actual block priorities distribution, block times
    • missed nonce revelations (backend todo)
    • height, protocol version and node version for our backend & different public nodes (backend todo)
    • block propagation times (optional, missing data)
    • tx propagation times (optional, missing data)
  • whales (centralization) /whales
    • large bag holders, 100% donut graph = top 1 - 1k balances + rest
    • large bakers, 100% donut graph, top 1, 10, 100, rest delegates
    • wealth centralization by address value and count
    • daily tx on top active addresses
    • daily volume on top active addresses
  • markets /markets
    • volume, trades, price across markets (exchanges and pairs)
    • trades per weekday / hour histogram
    • list of volume, price, 24h change by market (selected markets only, like tradeblock)
    • list of largest trades last 24h
    • daily candles + volume in buy/sell side (across all markets) last 30 or 60 days
    • donut charts: XTZ volume by exchange, XTZ volume by quote
    • change: absolute & percent 1d, 7d, 30d, from ATH, YTD
  • analytics /analytics
    • growth/demand
      • daily growth overall (new vs cleared accounts)
      • growth by address type, growth by balances size (= derivative of centralization data)
      • 3M hodl vs Tx supply vs. 3M token age transacted
      • dormancy by age (in addresses and funds)
    • supply breakdowns, multiple charts from total in %
      • activated supply vs total
      • circulating supply vs total
      • bond balance (frozen deposits+spendable balance of all roll owners) vs total
      • frozen supply vs total
      • unvested supply vs total
      • unclaimed supply vs total
      • staking supply vs total
      • delegated supply vs total
      • inflation: frozen/unfrozen rewards vs burn
      • total supply breakdown
        • activated
        • issued
        • vested
        • (minus) burned
        • unvested
        • unclaimed
      • circulating supply breakdown chart: (100% = total supply)
        • circulating
        • frozen
        • unvested
        • unclaimed
      • holder breakdown chart: (100% = total supply)
        • sum managed KT1
        • sum implicit tz1
        • sum contract KT1
        • unvested
        • unclaimed
    • account activations
      • activated accounts by month
      • activated coins by month
      • count and percentage activated vs not activated accounts & coins
      • histogram of balances across all non-activated accounts
    • on-chain activity
      • volume percentage by type
      • operation counts by type
      • fee and gas prices
      • mean, median, max value by operation
  • node list/single node (out of scope)
    • ip address and location
    • update availability: git hash compare against gitlab master
    • connectivity (can we reach the node?)
    • number of connections

URL Semantics

URL Screen Comments
/ Landing
/block/:block_id Block :block_id is hash or height; 404 when not found
/block forward to head block
/cycle/:cycle_num Cycle :cycle_num is a number; 404 when not found
/cycle forward to current cycle
/op/:op_hash Operation :op_hash is hash only; 404 when not found
/op 404
/account/:address Account :address is any KT1*, tz1*, tz2*, tz3*; 404 when not found
/election/:election_id Governance :election_id is an election round; 404 when not found
/election forward to current election round
/staking Staking todo
/health Health todo
/whales Whales todo
/markets Markets todo
/analytics Analytics todo

Application

npm start

npm run build fails to minify

npm run eject

Note: this is a one-way operation. Once you eject, you can’t go back!

npm test

Deploy

DOCKER_REGISTRY_ADDR=<addr> make deploy

will run the following steps

  1. build React web app using yarn build
  2. build Docker image based on SPA-ng file server
  3. publish image to private Docker registry
  4. use docker-compose to start/replace Docker container on remote host

for the deploy process to work the following ENV variables need to be specified:

DOCKER_HOST
DOCKER_REGISTRY_USER
DOCKER_REGISTRY_PASSPHRASE
BLOCKWATCH_API_KEY
DEPLOY_KEYS_PASSWORD

CI/CD pipelines usually store these in a supposedly secure way, but you'll never know, so be vigilant.

You can’t perform that action at this time.