Giter Club home page Giter Club logo

hnscan's Introduction

HNScan

An open source block explorer for Handshake - written in React with a plugin for HSD. The primary focus of this explorer is to aid developers while integrating Handshake into their applications. It is originally designed to be run locally and explore regtest or testnet networks.

Getting Started

There are 2 ways in which you can interact with HNScan.

1. Local Install

After cloning this repository:

Running a local version of HNScan requires a handshake client in order to operate correctly. If you do not have a handshake client currently running on your machine, refer to the handshake docs to get one started - Handshake Docs

HNScan also requires a plugin for HSD to run. For full instructions see: https://github.com/HandshakeAlliance/hnscan-backend

# Install the dependencies
> yarn

# Run the localhost server
> yarn start

2. Hosted Website

Visit HNScan

Development

Setup

The easiest way to develop on HNScan, both the frontend and the backend, is by using yarn/npm link. Inside of your hnscan-backend directory, run yarn/npm link and wait for the process to finish. Once the linking process is complete, from your hsd folder, run yarn/npm link hnscan. This will now allow you run the hnscan plugin from a local install, and changes will be picked up on hsd restarts.

Lastly, run ./bin/hsd --index-tx=true --index-address=true --plugins=hnscan from inside your hsd folder to complete the backend setup.

Workflow

We use a Github Flow workflow on HNScan. All feature branches should be forked from master, and compared to master inside of a PR. HNScan is redeployed on every commit into master, so once a PR is merged it will be immediately deployed.

License

This project is licensed under MIT License.

hnscan's People

Contributors

dependabot[bot] avatar incentiveloop avatar jgeiser9 avatar kilpatty avatar pinheadmz avatar shanejann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

hnscan's Issues

Better messaging and handling on Node failures

We should have better errors for 1. Node connection errors, 2. Node startup issues.

So if in the middle of the block explorer being up the node goes down, we want to handle this gracefully.

If there is no node available on startup we want better errors for that as well.

Domain Release Date Tool

This would be a tool that someone could type in a specific domain - and then it would show the release of that domain (if not already) on the network that HNScan is currently connected to.

Front Page Web Sockets

Title pretty much explains it all - but would be awesome to have web sockets/live reloading on the home page for blocks and transactions.

Tool: Richlist

Would be great to have a list of the top 1-500 wallets/addresses, as well as add some tags for the more well known addresses - (airdrop, exchanges, etc).

Issue and PR templates

I think we should have Issue and Pull Request templates to better encourage contribution from members outside the immediate HandshakeAlliance organization. This would also ensure more consistent contributions, and better change tracking during the review process.

For instance, we have a "releases.md" file with no documentation on when to add to that file, what constitutes a version change, how frequently it should be updated (all information we could provide in a pull-request template).

(Side note, I almost want to move to a "changelog.md" format instead, because "releases" sounds like major version increments only - which of course has its own benefit, but I suppose that is a conversation for a different time).

Some resources I dug up real quick that might help with this issue:

Link Bids and Reveals in Auction History

Would be nice for us to link the Bids and the Reveals in auction history.

I believe that this can be done if we use the nonce in the reveal to iterate over the bids to match the pairs.

Map Keys

Let's do a review of the GeoIP keys and the map keys and where we have them in our application.

These should be optional for people who are downloading HNScan and running it themselves. We need to ensure that we are handling this gracefully.

Label Difficulty + Check Value

With the new testnet the numbers we have in difficulty don't seem correct.

We should label this number so that it's clear what the difficulty actually represents, as well as check the number to confirm correctness.

More verbose auction history

There is a lot we can do with auction history -

First we want to ensure that we are capturing all types of events and adding them to the history. See: FormatAuctionHistory in util.js

Second, I think we should take any "data" - From Registers or Updates, and present that on a different page. These data packets will most likely be DNS record updates, so it will be nice to show exactly what those updates are.

I'm sure there is a lot more than can be done, so let's use this as a general issue to track updates and improvements to auction history.

Make Mobile "Dropdowns" actually dropdown

Right now it appears that the out of the box Bulma styling has mobile drop-downs always in the "dropped" styling. Would be a great feature, as we add more tools, to make those drop-downs functional on mobile.

Revamp About Page

We should revamp the about page to be more relevant for SEO and for our new ideas.

Support multiple networks

We want to build out our client calls in such a way that we support multiple different networks -> HNScan can be connected to a Regtest, Testnet, and Mainnet network all at the same time.

Percentage of Names Claimed

Not sure how exactly we would do this without a DB -> Perhaps make this a feature of Nomenclate.

It would be great to be able to show the % of the names that are claimed from the reserve list. This would be a good indicator of non-crypto adoption in my opinion.

Hash Rate

Take a second look at our hash rate -> I'm not 100% sure this is accurate.

Airdrop

Currently our airdrop page utilizes the old method of searching for airdrops. We need to update this for the testnet3 version of airdrops.

Mixin for Duration

We use duration quite often and it's a bit of a cumbersome amount of JS code that we have intermixed with our templates. Moving all of our duration code out to a mixin and then just calling that in the templates would be a much needed improvement.

Airdrop Statistics

This is a feature for the Airdrop tool in which we will show the following stats:

  • % Airdrop Claimed
  • Amount of Claimers
  • Amount of Remaining Claimers
  • Amount of HNS Claimed
  • Amount of HNS Remaining.

Add version and source on footer

Add Current Version: and Source Available At: at the bottom near the footer so that people know this application is open source, and what current version is running.

Potentially make cards foldable.

Looking at the amount of data we have on the name page it's a lot to scroll -> I wonder if we build an arrow onto the right side of a card that allows you to fold the data. For example, you may not want to view the advance card when searching a name so you can click that and fold it down.

Further, we should look into saving the user's preference if we do this so that they are not constantly clicking the fold button as they navigate the site.

Search bar validation

The search bar should give feedback on if the search failed (right now the Network request just returns a 404 and nothing actually happens on page)

A search will fail in a couple scenarios:

  • Most strings with special characters (This includes chars like " ", "$", etc.)
  • Any empty string
  • Searches exceeding 63 characters

Change Scientific Notation to be verbose

It looks a lot better when we present the data in x10^ format vs e^ format. We are doing this correctly on the home page, but I believe there are some pages in which we still show e^.

Best way to tackle this imo: Write a template function that converts a large number into x10^ format - then we can just place that into all of our templates.

Search not working on mobile

I think our search bar right now is just listening for the enter key to be hit -> That isn't working for some reason on my iPhone. We might want to transition to a form w/ a submit style input which I believe catches all inputs, and also pops up the custom "submit" button while on iPhone.

Tools: Airdrop

Meta Issue for tracking things on the Airdrop Tool.

  • Statistics - #26
  • Over time Stats
  • In-page claiming
  • Separate Faucet with Airdrop claims - possible if we have the merkle tree

Tool: Peer Map

I like the peer map we have as it stands, but I do believe that integrating some more information and stats.

Here is a project that does that for Bitcoin, and we can take some inspiration and/or incorporate it into HNScan. https://github.com/ayeowch/bitnodes

Name Records

Would be great to have a tab on the table to show Name Records that the user can toggle between seeing the records as they are presented on the chain, and then showing the records how they would be viewed when interpreted by DNS.

Names Pagination Bug

On the final page of the names we are not seeing any results - likely a small bug with the length of names and pagination results:

screen shot 2019-01-10 at 5 39 17 pm

Enabled GA on Site Search

For production builds, let's add in the ga pageview hit so that sitesearch is able to pick up our stats.

Sitemap

We need to auto generate a sitemap to index some of the larger pages on this site.

Mempool Summary Tool

Would be nice to have a tool to show the current mempool, and various stats surrounding it:

  • number of Txs
  • Total amt to be settled
  • Number of bids/opens/etc

Mempool Transactions can have strange behavior

When transactions are searched that are in the mempool - they are showing some weird behavior and stats.

We should either A. see if this is a bug in our stuff, or if this is simply how the daemon returns data.
B. Wrap mempool transactions so that the data is shown in a better way.

Flex CSS Classes

A master file of commonly used css styling to clean up repetitive code. Would be nice to add .flex/.column/.row/.grow on some classes instead of writing them all the time.

BUG: Auction History being truncated

Right now for names with over 13 items in their auction history we are seeing a truncation.

I'm not sure if this is due to the templating system, or if it's coming from Nomenclate.

This issue should go hand in hand with our other feature request looking to build pagination for history.

Block Height: -1

For pending transactions of a -1 block height we need to remove the href link and display 'Pending"

Pagination For Auction History

Right now our auction history is pretty maintainable, but it can very quickly get out of control.

We need to implement some sort of pagination for this.

Description Tag

Right now in search results HNScan shows a bunch of gibberish from the front page. We should write a nice understandable description tag so that it's easy to know what the purpose of the site is when you come across it on google.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.