Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stake: add ExpiredByBlock #1221

Merged
merged 3 commits into from Jun 12, 2018
Merged

stake: add ExpiredByBlock #1221

merged 3 commits into from Jun 12, 2018

Conversation

chappjc
Copy link
Member

@chappjc chappjc commented May 24, 2018

MissedByBlock includes both missed (a winner with no vote) and expired. It also includes revocations of either miss or expire.
ExpiredByBlock gives only tickets that expired, and only the actual expiry, not the revocation of an expired ticket.

@davecgh davecgh added this to the 1.3.0 milestone May 27, 2018
Copy link

@red010b37 red010b37 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good

@davecgh
Copy link
Member

davecgh commented May 30, 2018

The code looks reasonable, but this will need to be properly tested before merging, since the existing tests, unfortunately, aren't actually verifying correct values, only that two different nodes return the same one.

@chappjc
Copy link
Member Author

chappjc commented May 30, 2018

Yes, this needs testing, and verifying it's working right in a dependent PR hasn't exactly gone smoothly. I'll be back with a proper test once I've validated the semantics if the new function.

This adds the (*Node).ExpiredByBlock to the stake
package. MissedByBlock includes both missed (a
winner with no vote) and expired. ExpiredByBlock
gives only tickets that expired.

Note that these functions check the undo data of
a stake.Node so they results reflect the latest
block to be connected and written to the backing
database.
When a ticket initially expires, it is tagged as Missed and Expired,
then put into the missedTickets bucket.
Later when and if it is revoked, it is extracted from the missed tickets
bucket, retaining both the Missed and Expired flags, marked Revoked, and
put into the revokedTickets bucket.
When checking the undo data with ExpiredByBlock, it is thus necessary
to check (Expired && ! Revoked), otherwise the same ticket may be
reported as expired twice by different blocks.
The exact same issue with semantic affects MissedByBlock, just for both
expires and real misses.
A similar problem does NOT affect SpendByBlock as this applies only to
votes, which are just removed from the liveTickets bucket, but not
moved from bucket to bucket.
@chappjc
Copy link
Member Author

chappjc commented Jun 7, 2018

This was driving me bonkers trying to understand why both MissedByBlock (previously existing) and ExpiredByBlock would return the same ticket for different blocks. Eventually I figured out that when the revocation for such tickets came around, they would be pulled from the missedTickets bucket, keeping the Expired and Missed flags set as they were, then put into the revokedTickets bucket with those same flags plus the Revoked flag set. As such, both MissedByBlock and ExpiredByBlock would list the same ticket twice on different blocks.

To clarify, it's not that the output of MissedByBlock and ExpiredByBlock intersect (I've added docs to make this clear), it's that tickets show up twice in the output of just one of these functions at different heights.

I believe the semantics of ExpiredByBlock should be as one would expect, the tickets that expired at that block. So the added commit addresses this.

On the other hand, MissedByBlock is being used elsewhere, so it is unchanged. I'm going to look into how it is used to see if there is an existing bug.

This includes tests for ExpiredByBlock, MissedByBlock, and SpentByBlock.
These are done in a simnet chain with 1001 blocks to observe expiry.
@chappjc
Copy link
Member Author

chappjc commented Jun 7, 2018

Tests and more docs added. Ready for review.

@chappjc
Copy link
Member Author

chappjc commented Jun 7, 2018

This is now fairly well tested in dcrdata PR https://github.com/decred/dcrdata/pull/499/files#diff-ec9def1aeb6035f372ccd7b1ab31fd83R353

@davecgh davecgh merged commit efa6c43 into decred:master Jun 12, 2018
chappjc added a commit to decred/dcrdata that referenced this pull request Jun 13, 2018
This changes how StakeDatabase gets the live ticket pool and the diffs (in/out) for each block in ConnectBlock.

The liveTicketCache in StakeDatabase is now a faithful representation of the live ticket pool at the current best block. So when the live ticket list is needed, it is no longer necessary to use the stake.Node (BestNode.LiveTickets()).

Add poolValue int64 to StakeDatabase, updating it on connect/disconnect via += / -+ for the pool in/out tickets.

A major optimization in ConnectBlock is using the new ExpiredByBlock function in dcrd/stake instead of the much more costly ExistsExpiredTicket and ExistsRevokedTicket. This requires dcrd PR decred/dcrd#1221.

Improve the process of "Pre-populating live ticket cache..." by prefetching the tickets from the stake BestNode (dcrdata's best node) rather than asking dcrd for it's idea of the live ticket pool. This ensures liveTicketCache will always contain an accurate ticket pool.

Avoid LiveTickets() during sync.

Add FilterHashSlice utility function.

Update test data for new stakedb_ticket_pool.db

disconnectBlock applies diffs in reverse

-Keep liveTicketCache and poolValue correct when disconnecting a block.
-Recovery from mismatching stake DB and ticket pool heights now can roll
back stake DB in addition to trimming the ticket pool.
-Extract code into (db *StakeDatabase).applyDiff, and crate undoDiff
that applies a PoolDiff in reverse via applyDiff.
-No longer use BestNode.LiveTickets() in PoolInfoBest. Use makePoolInfo
and db.poolValue.
-(tp *TicketPool).Trim and trim now also return the trimmed PoolDiff.

update Gopkg.lock for dcrd with ExpiredByBlock
Jujhar pushed a commit to McEdward/dcrdata that referenced this pull request Sep 26, 2018
This changes how StakeDatabase gets the live ticket pool and the diffs (in/out) for each block in ConnectBlock.

The liveTicketCache in StakeDatabase is now a faithful representation of the live ticket pool at the current best block. So when the live ticket list is needed, it is no longer necessary to use the stake.Node (BestNode.LiveTickets()).

Add poolValue int64 to StakeDatabase, updating it on connect/disconnect via += / -+ for the pool in/out tickets.

A major optimization in ConnectBlock is using the new ExpiredByBlock function in dcrd/stake instead of the much more costly ExistsExpiredTicket and ExistsRevokedTicket. This requires dcrd PR decred/dcrd#1221.

Improve the process of "Pre-populating live ticket cache..." by prefetching the tickets from the stake BestNode (dcrdata's best node) rather than asking dcrd for it's idea of the live ticket pool. This ensures liveTicketCache will always contain an accurate ticket pool.

Avoid LiveTickets() during sync.

Add FilterHashSlice utility function.

Update test data for new stakedb_ticket_pool.db

disconnectBlock applies diffs in reverse

-Keep liveTicketCache and poolValue correct when disconnecting a block.
-Recovery from mismatching stake DB and ticket pool heights now can roll
back stake DB in addition to trimming the ticket pool.
-Extract code into (db *StakeDatabase).applyDiff, and crate undoDiff
that applies a PoolDiff in reverse via applyDiff.
-No longer use BestNode.LiveTickets() in PoolInfoBest. Use makePoolInfo
and db.poolValue.
-(tp *TicketPool).Trim and trim now also return the trimmed PoolDiff.

update Gopkg.lock for dcrd with ExpiredByBlock
Jujhar pushed a commit to McEdward/dcrdata that referenced this pull request Oct 1, 2018
This changes how StakeDatabase gets the live ticket pool and the diffs (in/out) for each block in ConnectBlock.

The liveTicketCache in StakeDatabase is now a faithful representation of the live ticket pool at the current best block. So when the live ticket list is needed, it is no longer necessary to use the stake.Node (BestNode.LiveTickets()).

Add poolValue int64 to StakeDatabase, updating it on connect/disconnect via += / -+ for the pool in/out tickets.

A major optimization in ConnectBlock is using the new ExpiredByBlock function in dcrd/stake instead of the much more costly ExistsExpiredTicket and ExistsRevokedTicket. This requires dcrd PR decred/dcrd#1221.

Improve the process of "Pre-populating live ticket cache..." by prefetching the tickets from the stake BestNode (dcrdata's best node) rather than asking dcrd for it's idea of the live ticket pool. This ensures liveTicketCache will always contain an accurate ticket pool.

Avoid LiveTickets() during sync.

Add FilterHashSlice utility function.

Update test data for new stakedb_ticket_pool.db

disconnectBlock applies diffs in reverse

-Keep liveTicketCache and poolValue correct when disconnecting a block.
-Recovery from mismatching stake DB and ticket pool heights now can roll
back stake DB in addition to trimming the ticket pool.
-Extract code into (db *StakeDatabase).applyDiff, and crate undoDiff
that applies a PoolDiff in reverse via applyDiff.
-No longer use BestNode.LiveTickets() in PoolInfoBest. Use makePoolInfo
and db.poolValue.
-(tp *TicketPool).Trim and trim now also return the trimmed PoolDiff.

update Gopkg.lock for dcrd with ExpiredByBlock
Jujhar added a commit to McEdward/dcrdata that referenced this pull request Oct 1, 2018
commit 07691c4982261d97ab87c5c2b6acc5241b060717
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Sun Sep 30 16:13:08 2018 -0700

    -u ui updates (pt 6) created trimmed decimal display func

commit f67e8e024162979b109892604d9295bd67491b00
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Thu Sep 27 18:25:34 2018 -0700

    -u ui updates (pt 5)

commit 8d6aa8e84746d06483e1b1ff614e03e2ae66fb31
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Thu Sep 27 16:26:49 2018 -0700

    -u ui updates (pt 4)

commit f7edf3e4f5ac23f30e26e72369b85dab2285cee8
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Tue Sep 25 16:59:46 2018 -0700

    -u ui updates (pt3)

commit ea528540819b09cb49349aece63e2c9b106288bd
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Mon Sep 24 21:37:23 2018 -0700

    -u ui updates (pt 2)

commit c3b0b32eadf451b184e3a31c07315a3cbe39366e
Merge: a4297a1 b01860b
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Mon Sep 24 15:52:13 2018 -0700

    Merge branch 'stats_page' of https://github.com/McEdward/dcrdata into stats_page

commit a4297a1a6a650744db2d72cd2f3aaede88e9b4cc
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Mon Sep 24 14:03:57 2018 -0700

    -u ui updates

commit b01860bca38b88c469ab23718b3bcade61322ad4
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Mon Sep 24 22:15:19 2018 +0200

    some of the items on the todo

commit 8a8113d0b1c0846a9a9b5350e42200f1130c53af
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Wed Sep 19 01:04:14 2018 +0200

    making all requested changes so far

commit aa36846d8d06c3eb3d2d0bf5893c59d37fe33e62
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Tue Sep 18 12:56:16 2018 +0200

    ultimate supply changes

commit 43fe82a8523e9ecb1e7977e6a95c4e1cbb50257b
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Fri Sep 14 01:54:33 2018 +0200

    requested changes to the page

commit 7771700eca5ea5f89a8d047a4eb6e0220a010149
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Sun Sep 2 19:07:27 2018 +0200

    rebase and adjustments

commit 7912bb89dce5bc6623ebcb8aead6aa41d9541720
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Tue Aug 28 02:44:17 2018 +0200

    changes to url and page name

commit 852ee90cbe5b0c9342398a0c103d71cd4ac95e4d
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Tue Aug 28 02:08:51 2018 +0200

    UI changes for the stats page

commit 46168c0c3c6573ef62705b2f141325633a5cb324
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Wed Aug 1 10:12:57 2018 +0200

    adding new stats page

commit 8d924bf8e669ad5bd55568f8f68a241f5b08c469
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Sep 4 19:31:48 2018 -0700

    views: style invalidated transactions on block page. (#663)

    This styles invalidated transactions on the block and transactions pages.

    Create an invalidated-tx CSS style to gray out and change background color
    of regular transaction table data, including the coinbase, on a block's page.
    On the blocks list page, indicate invalidated blocks.  When not in lite mode,
    get the Valid and MainChain status from PG.
    Also change maxExplorerRows to 400 (from 2000).

commit 40e118b6c52b4228b85447bc412f9b4123da1cbc
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Wed Sep 5 01:33:16 2018 +0300

    Current Ticket Pool Visualization (#542)

    This add current ticket pool visualization graphs to /ticketpool page.

    This also adds handling for the new getticketpooldata websocket messages.
    TicketGrouping type and an enumeration is used to improve readability.
    Rename 1d/1wk/1m to day/wk/mo. The "1" looks too much like an "l".
    Use chaincfg.TicketMaturity for computing ticket maturity block.

    The dcrpg table version is bumped to 3.5.2 with the addition of an index on
    pool_status in the tickets table.

commit d105024ef53cc5945644d7a226a429ebbcc79070
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Tue Sep 4 18:38:29 2018 +0300

    Fix issues on address page (#633)

    This ensures the group by interval selected is the most meaningful for the user.

    The RegularTx bars are now split into SentRtx and ReceivedRtx for the transactions types chart.
    This also adds the pagesize drop down options back in.
    Disable the charts view mode when on lite mode.

commit 3ae6c99e54aab2dda1c60a63b9bc5525b38109fb
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sat Sep 1 23:34:43 2018 -0500

    explorer: address multiple deadlocks and data races

    Home page was requesting a full read-write lock when it only needed a
    read lock.  Similarly, RootWebsocket was requesting full unneeded full
    locks in both the send and receive loops, which caused a deadlock.
    Add (*explorerUI).Height()  for thread-safe access to
    NewBlockData.Height.
    Remove several pointless closures.

commit 10fccfc6a6e8f86b255107ca75486a6af699db1d
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 31 17:23:46 2018 -0700

    special handling for genesis block coinbase transaction (#657)

    This changes the block page to recognize the genesis block and handle the (invalid) coinbase transaction differently.

    Show a UTF8 attention symbol in red next to the tx hash.
    Add a title (hover text) explaining why it is special.
    Change the link to point to code (chaincfg/genesis.go).

    This also adds a function GenesisTxHash in package txhelpers to retrieve the expected hash of the genesis coinbase transaction for the given network.

commit b15916635b71959b599d988e086cbc2fdac491ce
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu Aug 30 10:23:29 2018 -0700

    dcrpg/views: add side chain queries and side chain blocks page (#654)

    This adds side chain queries and a side chain blocks page.

    Add BlockStatus struct to describe the status of a block in the block
    chain in terms of main/side, validity, height, and hashes of self and
    next and previous blocks.
    Add RetrieveSideChainBlocks to retrieve a slice of []BlockStatus for all
    side chain blocks.

    While here, stop shadowing the named return err everywhere in
    queries.go.  Also remove redundant rows.Close().

    Mounted on /side is a list of side chain blocks with links to them,
    their parents, and their children, if any.
    Update /block page to indicate if the block is a side chain block, and
    if it is approved by stakeholders.
    Add MainChain to explorer.BlockBasic.
    When looking up a block from hash while in full mode, use the ChainDB
    query instead of an RPC so that reorganized/orphaned blocks may be
    located.

commit 71c1d033445bd7c450928b29ba6ffe7a35382e43
Author: SeaLightHouse <39948685+SeaLightHouse@users.noreply.github.com>
Date:   Thu Aug 30 22:29:17 2018 +0530

    For future blocks show a time estimate (#653)

    block page: provide an ETA for blocks not yet mined

    When visiting /block/{n} where {n} is a block height beyond the current best block,
    provide an ETA for the arrival of the block assuming the target block time.

commit 70ed11e77de5c5e9712e3a7c06bf81d64345faad
Author: Corey Osman <corey@logicminds.biz>
Date:   Wed Aug 29 20:00:22 2018 -0700

    Updates README for golang 1.11 (#647)

    This updates the README.md for Go 1.11 changes, including modules.

    This also adds additional instructions for building with docker.

commit 37b7150a99daca975ed192136f6474b3b6f27a8f
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Wed Aug 29 19:58:14 2018 -0700

    add some bottom padding to main container to prevent footer overlap (#648)

    This adds padding at the bottom of the main container to prevent the
    footer from covering up anything in the body.

commit ee54aec3232270a090b88fc6bb2ddfe9a43d7000
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 28 13:43:40 2018 -0500

    begin 3.1 release cycle

    Address doctoc weirdness.

commit aac0885ccf1990d53a7d7eabc1cb83125375cf41
Author: mikefullman <mikef@zenshows.com>
Date:   Mon Aug 27 21:20:37 2018 -0700

    insight api sync status and cleanup

commit ba0f9ee7067e56b061bb34612cf1f1dc3b5bc0d7
Author: codemaestro64 <42093751+codemaestro64@users.noreply.github.com>
Date:   Tue Aug 28 19:02:33 2018 +0100

    Display the next expected ticket price and bounds (#617)

    This shows the expected ticket price for the next price window, along with the
    min/max bounds, which narrow as the current windows progresses.

commit 61a38fbaa2fc95dbc3e7a2ec2b7be1102eeeec79
Author: Corey Osman <corey@logicminds.biz>
Date:   Tue Aug 28 10:21:30 2018 -0700

    Adds basic docker support (#632)

    This adds dockerfile support.

    It allows the user to build a dockerfile from within the repo. The README.md is updated
    with docker instructions, anda table of contents via doctoc.  The code of conduct is also
    renamed for github.

commit 4b074b326bae6aa04adb86cf20256fb072b18e47
Author: codemaestro64 <42093751+codemaestro64@users.noreply.github.com>
Date:   Mon Aug 27 15:42:56 2018 +0100

    Make agendadb filename configurable and house it in datadir folder (#631)

    This adds a configuration option that make the agendadb filename configurable
    at runtime.  It also ensures that the file location is housed in the datadir.

commit b4ae964d93e230acc6e47032073dab4b5c7cf8fd
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Thu Aug 23 14:21:08 2018 -0500

    explorer/mempool: validation

    Create type TicketIndex map[string]int.
    Create type BlockValidatorIndex map[string]TicketIndex.
    Replace map[int64]map[string]int with BlockValidatorIndex. Now block is
    referenced by hash so that side chains do not get combined with the
    main chain.
    Remove notions of validity from VotingInfo, and only count tickets voted
    and max votes per block.  Note that tickets voted is different from
    number of votes seen since ticket double spends are common.

    views/mempool: column names best block values

    Best block column values should be true/false, not valid/invalid.
    Always link to /block/hash instead of /block/height.
    sortVotesTable is using td:nth-child to pick the column, so height is
    the second column and ticket index is the 4th.

    explorer: do not rebroadcast votes

    Do not rebroadcast votes already recorded during initial mempool
    inventory after the last block was mined.
    Also track all unique stake and regular transactions to prevent dups.

    explorer: work around js race

    Votes for a block that explorer has yet to (is about to) see can come
    through the new tx channel and are broadcast to the clients. The full
    mempool update will come immediately after and that, broadcasting the
    new mempool data.  However, on the client, in js, the full refresh of
    the table from the new block can be processed before the early votes.
    Then when the early votes are processed, they appear as duplicates in
    the votes table since the backend processed them in the opposite order.

    As a workaround, modify the explorers mempool monitor to refuse to
    broadcast such votes, identified as validators for a block > last known.
    Last known refers to the last block that triggered a full mempool
    update. This is OK since on the backend, the full mempool update will
    contain this vote and it will be included in the client signal html
    table rebuild.

    explorer: avoid RPC in storeMempoolInfo and lock earlier

    make Hash part of explorer.BlockBasic, and use
    exp.NewBlockData.Hash instead of RPC.
    When fetching mempool, ensure block hash/height is the same before and
    after the RPC so the best block at the time of the call is known with
    certainty.
    Lock exp.MempoolData without delay in storeMempoolInfo.

commit 8a2e2ad351ae3467d3e64a029b5b048b5446781b
Author: mikefullman <mikef@zenshows.com>
Date:   Tue Jul 24 09:31:41 2018 -0700

    7/5 confirmed ok.  fixed columns to valid for last block.  new tx on upcoming block not painted pink.

    make upcoming votes light grey background

commit 93b578877a16e0b92ac968a07913c46a84d0a97f
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Thu Mar 15 07:25:53 2018 +0100

    explorer: votes filter now flags votes instead of excluding them.

commit f2903f1a822267521f2237e07717567250c3d9ce
Author: Corey Osman <corey@logicminds.biz>
Date:   Thu Aug 23 09:39:28 2018 -0700

    add the ability to use environment variables for configuration (#629)

    main: Add the ability to use environment variables to set configuration.

    The ability to set app configuration via environment variables makes this
    more compatible with 12 factor app design, in addition to docker and
    docker-compose.

    A simple config test file is also added.

    A new import, the env package, is added that allows declaration of
    environment variables via struct tag. The go module files, and dep files
    are updated to include the dependency.

commit a0378ed50769d503f265c889fc1aae94853a1879
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Wed Aug 22 15:40:08 2018 -0500

    dcrpg: fix upgrade to 3.5.1 from <3.5.0

    A missing fallthrough statement ad the end of the 3.4.1 -> 3.5.0 upgrade
    broke upgrading to 3.5.1 from any version but 3.5.0.

commit e54cfa10a7f700b069bc8e6fabbc4dbaa7c39cf4
Author: dmigwi <migwi.ndungu@andela.com>
Date:   Wed Aug 22 04:47:54 2018 +0300

    Fix bugs appearing on agenda page

    Update agenda voting milestone with data migration running from scratch

commit cc0e85c12f570fa553f08fb6160d5a1d6fac3431
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 21 16:29:53 2018 -0500

    rework version scheme with appBuild

commit 2f683513e4a613401131a7fc4c607f56a6696d77
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 21 11:14:46 2018 -0500

    go mod: Use go modules

    Specify dcrd and dcrwallet module versions.
    Remove dcrwallet/netparams import.
    Update all other deps.

commit 8b16836835b872f3d05124ae11729fc6f5218fb2
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Aug 21 08:01:23 2018 -0700

    README: update for 3.0 (#625)

    This updates the README.md for features added to 3.0, and other cleanup.

    - Remove github release badge (only tags matter).
    - Update repository overview with new folders and better descriptions.
    - Update required dcrd to 1.3 (testnet3).
    - Clean up and clarify Upgrading Instructions.
    - Add more about PostgreSQL tuning.
    - Add System hardware requirements section.
    - Update JSON API tables with new endpoints (block subsidy, tx vinfo, tx hex, tx decoded, address totals).
    - fix typos, add tips about permissions and dcrd settings
    - note experimental Insight API support

commit 6ca963dbb1ef2edfe491a4d8d836cc99bb043dfd
Author: codemaestro64 <42093751+codemaestro64@users.noreply.github.com>
Date:   Tue Aug 21 15:24:11 2018 +0100

    Add color themes for different networks (#605)

    This adds distinct day color themes for different networks (simnet, testnet, mainnet).

    All networks have the same background color except for the header and footer, which are different. A new template function `theme` is added that returns current theme used to set the <body> class.

commit 91a3249a3e6c42b718cd7ca6f2c75b75003941f2
Author: Mike <mikef@zenshows.com>
Date:   Tue Aug 21 06:12:34 2018 -0700

    [WIP] Insight API fixes for upgraded tables (#572)

    This fixes several Insight API endpoints that were broken when the addresses table upgraded to 3.3.0.

commit 11147ba63a5d28ef496a5abff9a861af9291d198
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Mon Aug 20 23:07:00 2018 +0300

    address page: Add charts (#597)

    This bumps the dcrpg tables version to 3.5.0 from 3.4.1 with the
    addition of the tx_type column to the addresses table, and the vins
    table.  The upgrade is automatic and takes about 1 hr depending on
    hardware.

    This adds charts on the address page to display the following data
    over time for the given address, and binned by several selectable
    time frames:
    - transaction type
    - sent and received amounts
    - unspent amount (a.k.a. balance)

    The graphs use the standard Decred color scheme.

    API endpoints are added for types and amount distribution charts.
    The required data is retrieved by AJAX requests.

commit 0920a45d8b516a42b0b043bf21c2935336171ebd
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Mon Aug 20 02:02:24 2018 -0700

    chart theming, url backed state & universal zoom (#598)

    Add theming, url backed state, universal zoom & moving average to /charts

commit 180c7636e3a0fdc3dce760d4df41791f85f890c5
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Aug 16 22:26:49 2018 -0500

    dcrpg: the 3.2.0 -> 3.3.0 upgrade was failing

    The HashDB function required the is_mainchain column, but it did not
    yet exist at the time of upgrade.  This was added to the query after
    the upgrade was initially tested.

commit 4622a99876ddaae2310cc23feb017889b6c7b0ae
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Thu Aug 16 21:53:28 2018 +0200

    Update README.md on dep ensure -vendor-only (#621)

    This instructs to use the -vendor-only flag with dep ensure to not modify the Gopkg files.  Instructions for updating dependencies and info on dep are also provided.

commit 01d9e0be706d38c947268da2548be9016594b285
Author: CodeMaestro <code.maestro64@gmail.com>
Date:   Thu Aug 16 19:13:39 2018 +0100

    Show proper message when no agendas

commit e9533aa8a7f601e5d8f417a9224eab345a6d21a3
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Aug 15 23:26:59 2018 -0500

    stakedb: Close badger iterator after View

commit d9cf525773982e23c5faebc90a30f7a7f433b9a1
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Aug 15 12:57:41 2018 -0700

    increase node notification buffer sizes (#616)

    With more transactions coming at once, and the possibility of very large reorgs on testnet, larger channel buffers are useful.  This makes it happen.

commit a281cf7ea945898570561785f0c221b1d3b77eb2
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Wed Aug 15 14:05:36 2018 -0500

    fix another lite mode crash

commit 93749cb3dcf0b0ebe2f56fb9a011df882e2e6afb
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Wed Aug 15 18:11:02 2018 +0200

    avoid pointless query for dummy sstxchange address

    This detects when the dummy (zero pubkey hash) address is requested on the address page, skips the queries, and shows a message.

commit f3c5c046222a8800e206ac3ff89e2c7a71ee34a9
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Aug 14 12:21:05 2018 -0500

    dcrpg/main: enable upserts after  indexing (#613)

    * dcrpg/main: enable upserts after indexing

commit e41e9d19e2ca97f7f81c6471ab7163064ae8d6a6
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Mon Aug 13 13:00:55 2018 -0500

    lite mode fixes with new ChainDBRPC struct

commit caf2a8315eb2a743176a9f0cfc7f69cce6677195
Author: SeaLightHouse <39948685+SeaLightHouse@users.noreply.github.com>
Date:   Mon Aug 13 20:20:16 2018 +0530

    added TargetTimePerBlock in views/parameters.tmpl (#606)

    This adds TargetTimePerBlock in on the chain Parameters page.

commit 81d965d5721a9ad7cc2d6578ca5f41693dcaeacb
Author: SeaLightHouse <swarupghosh123@gmail.com>
Date:   Mon Aug 13 16:12:45 2018 +0530

    changed mainnet.decred.org to explorer.dcrdata.org in main menu

commit c8c12c76d3a416568b50b57d92fefc5907b6065d
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 10 14:03:19 2018 -0500

    keep spaces out of the url (#602)

    * keep spaces out of the url

    Change "merged debit" to "merged_debit" so we don't get
    ?txntype=merged%20debit in the url.

    * recognize old links

commit 029e74c2f4bcd4ff5def8cad2550e9d47e5b41dc
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Fri Aug 10 18:15:10 2018 +0300

    Display the tiny qr code thumbnail by default (#583)

    This restores the javascript on the address page that shows the qr code icon.

commit 2614a4e3c0e65120f3746672e8cbfe6d15469d5d
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 10 08:51:37 2018 -0500

    dcrpg: reorg handling (#580)

    This adds a ChainMonitor to dcrpg and implements switchToSideChain.

    Add (*ChainDB).TipToSideChain, used by switchToSideChain to move blocks from mainchain to sidechain, updating all related tables.
    Add (*ChainDB).SetVinsMainchainByBlock, used by TipToSideChain, and add other mainchain queries for txns, votes, tickets, and addresses tables.
    notification: create block connected and reorg channels for dcrpg
    Embed ChainDB in ChainDBRPC instead of having named field.
    Add ChainDB.bestBlockHash to avoid unnecessary RPC.
    Upgrade tickets table with is_mainchain column, forgotten in last PR. This bumps the db scheme from 3.3.0 --> 3.4.0.
    Added new index uix_votes_block_hash to votes table for block_hash to reduce the index size for this column (there is a two column unique index that is 4x larger in size), and speed up scans. This bumps table version from 3.4.0 --> 3.* dcrpg: add ChainMonitor.

commit 056527ec623926f69c8f5e53ec941141548c82ec
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Aug 8 11:39:25 2018 -0500

    missing defer in sqlite, lots of linting (#596)

    * missing defer in sqlite, lots of linting

    * disable gofmt since 1.11 has no ideas about things

commit d43de2fd1684ba0a4fbcb6561f36edd6b00e56c4
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Wed Aug 8 10:36:29 2018 -0500

    testnet3

    Update deps for dcrd, dcrwallet.
    Also update golang.org/x/...
    Remove all reference to params.TestNet2 as it was removed from chaincfg.
    Deprecate netName() in config.go.
    Change explorer.netName to work for any numbered testnet by stripping
    suffix after "testnet".
    Add tests for explorer.netName.

commit a000082da3c4623e6ee60f9e01652e1297a3c3e1
Author: J Fixby <github@jfixby.com>
Date:   Tue Aug 7 00:51:29 2018 +0200

    dcrsqlite: test GetBestBlockHash, GetBestBlockHeight, GetStakeInfoHeight

commit e92b449957de7f0cb8f9617e0b2f4e6ef08c7b45
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 7 09:44:25 2018 -0500

    main: show golang version

commit 8639f6eb21a90b229bd9336efb4fe241ee18637d
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Tue Aug 7 01:37:32 2018 +0300

    agendadb: Fix unhandled errors while fetching all agendas (#594)

    * Fix the unhandled error while fetching all agendas

    * Improve on the error messages

commit 6aa3651ee29ac09438785060a88785e01ebe796a
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Mon Aug 6 23:26:47 2018 +0200

    dcrsqlite: test RetrieveAllPoolValAndSize and RetrieveBlockFeeInfo (#563)

commit 4a8449e7b25049289f8608eb554ff566f98cb878
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Fri Aug 3 16:43:23 2018 -0500

    txhelpers/explorer: move and test CalcMeanVotingBlocks

commit 7bc16a2fbf13e6f1fb9dbec039c19d7bf94733ca
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 3 14:36:11 2018 -0500

    api: add block rewards endpoints (#592)

    * api: add /block/.../subsidy endpoint

    txhelpers: add RewardsAtBlock
    api/types: add BlockSubsidies JSON-tagged type
    api: add VotesInBlock(string) to DataSourceAux interface
    api: add *chaincfg.Params to appContext
    api: and add (*appContext).blockSubsidies
    dcrpg: add (*ChainDB).VotesInBlock, and RetrieveBlockVoteCount & query

    * api: allow ./subsidy for future blocks

    Just omit the block hash, and assume all voters

    * don't ignore indent

commit a18e97cfa92cf89eac81fbc08c5adb453fab9c86
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 3 12:43:28 2018 -0500

    config: disable dev balance prefetch with invalid fund (#589)

    * config: disable dev balance prefetch with invalid fund

    dbtypes: DevSubsidyAddress now returns a non-nil error in special
    cases (e.g. testnet2).

    When parsing config, check chain params via DevSubsidyAddress to
    automatically disable the dev fund prefetch when it would not be
    possible to fetch a non-zero balance.

    * move to after log init, fix printf

commit 2a555814bd2dd91e4ace50d2d91e542fecefb474
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Jul 31 14:24:33 2018 -0500

    dcrpg: provide error context in handleBlocksTableMainchainUpgrade

commit 148ed2f52bdac18f50656ad7d53ddddf02437e4e
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Mon Jul 30 21:36:31 2018 -0500

    explorer: limit logging about websocket updates to zero clients

commit c9f6cdebc94a9abb6c4dc18131f27cfb3e0b4aed
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Mon Jul 30 13:35:18 2018 -0500

    dcrpg: support side chain tracking, upgrades (#552)

    This bumps the dcrpg DB table version to 3.3.0 and requires an automatic upgrade.  The upgrade can take hours however.

    The table upgrade process has been refactored.  A new TableUpgradeType type is added, and addNewColumnsIfNotFound takes default value.  TableUpgradesRequired always returns a result for each table, ok being one of the results.  Version check succeeds when all tables "ok"

    Prior to InsertAddressRows, ensure ValidMainChain is set properly for each row.

    Improve documentation for storeTxns.

    dbtypes: set Tx.IsValidBlock and .IsMainchainBlock

    When processing block transactions in processTransactions, set IsValidBlock and IsMainchainBlock for each Tx.

    Improve addresses statements readibility.

commit 01d4c9516ef6686acf4bb7513996bab67a58f2fb
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Sat Jul 28 21:19:43 2018 +0300

    Fix bugs in addresses page view (#570)

    * Improve on logic checking if all transactions were fetched

    * Make the default page size to be 20

commit 3d3cbb4dfb6a5cc2dc63d81b76dcb8ae5f7b3da3
Author: J Fixby <github@jfixby.com>
Date:   Fri Jul 27 20:53:12 2018 +0200

    testutil: fix error message formatting

    and ignore test data folder

commit ad1a91c3da8f7598cb98ff0e4b2902ceba833f4c
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Fri Jul 27 01:56:39 2018 -0500

    main: always show dcrsqlite sync error without waiting on dcrpg

commit 03548fa85d5c85dd367fe61ce297703c191b4b0b
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu Jul 26 20:19:02 2018 -0500

    config: add --sync-and-quit flag to only sync (#573)

    This adds the flag --sync-and-quit to the dcrdata executable that will caus dcrdata to sync to the best block and then exit. It will not start the explorer or API.

commit 0c48bcce707618dbd3aecd5e2a1a78595cdd0815
Author: Mike <mikef@zenshows.com>
Date:   Wed Jul 25 12:27:28 2018 -0700

    Unconfirmed tx in address list and input amounts on unconfirmed tx (#489)

    This addresses the unconfirmed transactions not visible in address view and input amounts not visible in transaction view.

    There were two major areas of work:
    * Blending unconfirmed transactions with confirmed transactions in the current address view. Mostly extending what @chappjc already started.
    * Compensating for AmountIn values not set in dcrd calls to mempool transactions.

commit 8519328d563b714c9749b8a7e100ca54e16691fb
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Wed Jul 25 21:54:01 2018 +0300

    Consolidated debit view (#524)

    This introduces a new "merged debit" view on the addresses history page that lists only unique transactions.  The Debit DCR amount is the sum of all outpoints corresponding to the given address that are spent in a transaction.

    It also fixes a bug with the next button on the same page.

commit c4864424c5156c8c40983867a8d1a623cbed60e0
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Mon Jul 23 18:49:47 2018 +0200

     testutil: refactor test setup (#559)

    This refactors the test setup and introduces a number of helper functions as "testutil".
    This also includes minor refactoring of the dcrsqlite/sqlite.go.

commit 2010d5a9ba0ce218ea9cc0f7632619e761b58b03
Author: Sebastian Nadorp <snadorp@users.noreply.github.com>
Date:   Mon Jul 23 18:22:48 2018 +0200

    Add message for no votes on a block. (#560)

    This removes the table and displays a nice message if there are no agenda choices in a vote transaction.

commit 721e4da15947b4f27dd134372ad154c29ee03ca9
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Mon Jul 23 07:11:22 2018 +0300

    Replace the error page with a status page (#551)

    This enables the status page to be used for a wide variety of case scenarios one being Errors, Functionality limitations and also can be used to show a deprecated page or feature.

commit 850df44bf26e551eb5de9bcf068e7afec9da8d90
Author: Mike <mikef@zenshows.com>
Date:   Fri Jul 20 11:29:28 2018 -0700

    fix luck (#558)

    This PR address a small issue with the variable TicketExpiry initialization resulting in improper luck calculations.

commit 021cf0754e6d328cbf48caa40a21b1b0b0b07531
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Thu Jul 19 17:33:47 2018 +0200

    dcrsqlite: correctly splits given string into array of strings (#555)

    dcrsqlite: correctly splits given string into array of strings

commit ebc6cb91646a556c43ba71376e9f7a1b7ac2042c
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Jul 17 16:23:16 2018 -0500

    travis/docker: do not update Gopkg.lock, only /vendor

commit 152e5f85175b5f8b3eea7f62ef74e3f0361e3179
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Mon Jul 16 20:09:48 2018 -0500

    explorer/main: add no-dev-prefetch option (#547)

    * explorer/main: add no-dev-prefetch option (#546)

    The no-dev-prefetch flag does the following:
    Disable automatic dev fund balance query on new blocks. When true, the
    query will still be run on demand, but not automatically after new
    blocks are connected.

    * dcrpg: respect noDevPrefetch

    * rebuilddb2: no dev fund prefetch

commit 79aee4bf68064cde74bceeb643125b1c7eb6abe7
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Sat Jul 14 23:43:40 2018 -0500

    dep: update lock for dep's new format

commit 079c1d46226a3230394ae77038007f7e268cca9e
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Jul 13 07:24:25 2018 -0700

    explorer: do not fetch charts data in lite mode

commit 25d880ef60cf43a4dd59d30be2e98df120794383
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Jul 13 00:22:24 2018 -0500

    version: instructions to put git commit in version string

commit 041c7c7ab07c2597a4df472376c66b5d0f121f58
Author: swghsh <39948685+SeaLightHouse@users.noreply.github.com>
Date:   Thu Jul 12 10:00:02 2018 +0530

    views: hide missed table when empty" (#537)

    views: hide missed table when empty

commit c1ddd5eb31406d9f6d232caf3c4ebb1cf4aad21e
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Thu Jul 12 06:50:05 2018 +0300

    Add charts (#463)

    * Add Historical charts that will appear on the explorer's charts page

    * Automate the vins table upgrade (Coin Supply Upgrade)

commit c79ca99e09eba1a0405b370449a045e2c65d295f
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Wed Jul 11 03:09:44 2018 +0300

    Agendas DB table and html pages (#523)

    This creates an agendas DB, and adds an agendas page to the explorer.

    The agendas page uses dygraph to show cumulative vote counts as the vote period progresses.

commit 548affc1c339b467dba88d67deec4b1fb6674cf8
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Jul 10 14:07:32 2018 -0700

    dcrpg: fix genesis error in block_chain lookup

commit 0cfca964e0c2791debb90d32d4e6026deb6d87e7
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Jul 3 22:10:02 2018 -0400

    stakedb: recovery and robustness with upserts (#527)

    Add stakedb.LoadAndRecover, which NewStakeDatabase returns the height
    where it stopped loading. If there is an error, the height may be
    passed to LoadAndRecover.
    InsertVin[s] now has upsert option (dupcheck=true) to avoid failures
    requiring recovery procedures.
    Also have dupcheck option with SetSpendingForFundingOP /
    insertSpendingTxByPrptStmt and SetSpendingByVinID.
    Add MakeAddressRowInsertStatement to greate the upsert statement if
    checkdups=true;
    InsertVotes and MakeVoteInsertStatement similarly take dupCheck option.
    Fix incorrect parameter numbers in upsertVoteRow and insertVoteRowReturnId.
    AdvanceToTip now returns the last valid diff index (cursor - 1).

commit 552ea24ad992f1fba9993d634f736e9e8f7c855d
Author: J Fixby <github@jfixby.com>
Date:   Mon Jul 2 21:14:47 2018 +0200

    dcrsqlite: fix RetrievePoolInfo empty result

    Fixes #532

commit d7ef93bd2aa77020c40ed9387912cc517f7e150d
Author: J Fixby <github@jfixby.com>
Date:   Tue Jul 3 11:39:53 2018 +0200

    dcrsqlite: remove dead code and swap wrongly positioned args

commit c6359b596ce92713ccdcad50f3e7e46ab18e8fe3
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Jul 1 18:05:32 2018 -0700

    dcrpg: fix empty prev_hash in block_chain

    In StoreBlock, if pgb.lastBlock does not contain the previous block row
    ID, look it up in the block_chain table. Add RetrieveBlockChainDbID to
    get the row id in the block_chain table for the block with a given hash.

commit 886025a4f665b5a6eef73bb2f9872714fddb06a7
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Jul 1 17:48:02 2018 -0700

    stakedb: fix loading bug in ticket pool db

    Fix bug in LoadAllPoolDiffs where multiple diff sets for the same height
    were loaded due to badger storing multiple value versions.

commit 75f18a3d7f10ebcca7d43ec59945d72d52f74aa8
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Sat Jun 30 18:43:32 2018 +0200

    dcrsqlite: create DB-file parent directory when necessary (#516)

    * dcrsqlite: add test to reproduce the issue #515

    https://github.com/decred/dcrdata/issues/515

    * dcrsqlite: create DB-file parent directory when necessary

    Fixes https://github.com/decred/dcrdata/issues/515

    * dcrsqlite: move test helpers to a testutil package

    * testutil functions take *testing.T (#1)

commit 5e31c5058c1820d25f0fb5bc91edc72151628272
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Jun 30 08:33:22 2018 -0700

    explorer: compute ticket matruity times in lite mode (#525)

    * explorer: compute ticket matruity times in lite mode

    Intoduces (*TxInfo).IsTicket/IsVote

    * views: hide POOL STATUS in lite mode

    In lite mode, SpendStatus is unknown.

commit 006685be846ac9cfe7b9b76eebabdb7bffdaad18
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Sat Jun 30 01:11:28 2018 +0300

    dcrpg: new adresses table format (#427)

    * Implement the new proposed Addresses table format
    * Improve the explorer address page view with the spent tx and funding tx relationship
    * Change in_out_row_id (uint64) column to matching_tx_hash (text) column in the addresses table
    * Index column matching_tx_hash
    * Update the README.md file with the upgrading instructions
    * Update table maintenance require message
    * Fix bug on how non-alphanumeric characters are split from the address fetched
    * bump to 3.0

commit c7f065d389860eebb40f016e05b0062f5a196295
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Jun 27 14:26:26 2018 -0700

    html: update header descriptions

commit 30e31c954dccbfcdbd54c33ab81138ed1034acc6
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Jun 28 10:04:28 2018 -0700

    html/tx: unconfirmed tickets/votes have no maturity status

    (db *wiredDB) GetExplorerTx: set Mature="false" when confirmations==0
    tx.tmpl: Unconfirmed tickets and votes read "N/A"  for MATURITY, must be
    confirmed to show progress meter.

commit 4faae92abc2c1536c067e033a08b0f4384611095
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Jun 21 09:55:10 2018 -0700

    bump dcrdata to v2.1.0

commit 79ef24db53fed066f4fc62cd38ef3a20b06e57cc
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Jun 28 10:17:25 2018 -0700

    rebuilddb2: consider batch sync and avoid constant dev fund update

commit 679e8bcd81a78dd0da83314934af65ff9c31a94f
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu Jun 28 10:21:24 2018 -0700

    stakedb: switch from storm to badger for ticket db (#465)

    * stakedb: switch from storm to badger for ticket db
    * stakedb: update ticketpool tests, regen test data
    * stakedb: test with full pool diffs
    * provide upgrade/recovery instructions
    * stakedb: migrate from storm to badger

    If badger DB not found or is empty, attempt to load existing diffs from
    a storm DB, if found.

    * Add storeDiffs to write many PoolDiffs in a batch txn
    * Inform the user they can delete the storm db.
    * dcrsqlite: in sync log every 1000 blocks
    * dcrpg: in sync log every 500 blocks
    * travis: add xz-utils apt package

commit b23e52339b3453f1ee4fa93f05940e095b0de44c
Author: J Fixby <github@jfixby.com>
Date:   Mon Jun 25 12:22:10 2018 +0200

    multi: show maturity ETA in hours

    Change ticket ETAs to use hours. Examples:
    "Immature, spendable in 28 blocks (2.2 hours remaining)"
    "Immature, eligible to vote in 145 blocks (12.0 hours remaining)"

commit 1d9405aca5c05baea34b11f3c10d521bbddab7b9
Author: Timilehin Olatunbosun <38729914+timi-ola@users.noreply.github.com>
Date:   Wed Jun 27 23:06:48 2018 +0200

    Err message page clean up (#484)

    This removes the error code and message from the error page.

commit 69bf97b12b3808797f21c53e53fa9c33364bbb7e
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Thu Jun 21 08:46:34 2018 -0700

    refactor home page and mempool javascript with stimulus (WIP) (#498)

    This introduces the Stimulus JavaScript framework:  https://github.com/stimulusjs/stimulus

    * refactor age computation with stimulus
    * rework mempool with stimulus wip
    * hookup mempool & getmempooltxsResp events to homepageMempool controller
    * dry mempool table row generation
    * make sure there's always a table to render txns or empty message in mempool

commit 41d8c3e753f24bbf1ff4ea9a483377096091e3ff
Author: Mike <mikef@zenshows.com>
Date:   Thu Jun 21 08:42:49 2018 -0700

    Insight API [13] [14] [19] [20] [20.1] [20.2] [20.3] [20.4] [21] [21.1] (#506)

    This implements the following Insight API endpoints (listed in https://github.com/decred/dcrdata/issues/400): [13] [14] [19] [20] [21]

commit 119c1541be50cd4de5392779d54e782db4ce9f09
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Jun 20 16:54:51 2018 -0700

    api: add /txs route for batch request (#510)

    * api: add /txs route for batch request

    This adds the /txs and /txs/trimmed routes for batch requesting
    transaction details.  The transaction hashes are transmitted in the http
    request body as JSON.  The structure is api/types.Txns. The request
    Content-Type must be "application/json".
    The return type for /txs is []*types.Tx.
    The return type for /txs/trimmed is []*types.TrimmedTx.

    version: bump to 2.0.1

    * update README with new /txs endpoint

commit e080b7c52bfdf3377d118033200aafe7553e7c58
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Jun 12 13:23:54 2018 -0700

    dcrpg: prevent stacking multiple calls to updateDevFund

commit 76be996a72e7b6df77e12472e5930ae0372e0691
Author: Mike <mikef@zenshows.com>
Date:   Thu Jun 14 11:11:29 2018 -0700

    Insight API - Misc cleanup [1], [2], [5], [5.1], [8], [8.1], [8.2], [9.1], [9.2], [9.3], [9.4] (#483)

    Cleanup and work on Insight API endpoints: [1] [2] [5] [5.1] [8] [8.1] [8.2] [9.1] [9.2] [9.3] [9.4]

commit ad899b874956b837350bff4442b834044fb20aac
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Jun 12 18:56:17 2018 -0700

    stakedb: accelerate StakeDatabase.ConnectBlock (#499)

    This changes how StakeDatabase gets the live ticket pool and the diffs (in/out) for each block in ConnectBlock.

    The liveTicketCache in StakeDatabase is now a faithful representation of the live ticket pool at the current best block. So when the live ticket list is needed, it is no longer necessary to use the stake.Node (BestNode.LiveTickets()).

    Add poolValue int64 to StakeDatabase, updating it on connect/disconnect via += / -+ for the pool in/out tickets.

    A major optimization in ConnectBlock is using the new ExpiredByBlock function in dcrd/stake instead of the much more costly ExistsExpiredTicket and ExistsRevokedTicket. This requires dcrd PR decred/dcrd#1221.

    Improve the process of "Pre-populating live ticket cache..." by prefetching the tickets from the stake BestNode (dcrdata's best node) rather than asking dcrd for it's idea of the live ticket pool. This ensures liveTicketCache will always contain an accurate ticket pool.

    Avoid LiveTickets() during sync.

    Add FilterHashSlice utility function.

    Update test data for new stakedb_ticket_pool.db

    disconnectBlock applies diffs in reverse

    -Keep liveTicketCache and poolValue correct when disconnecting a block.
    -Recovery from mismatching stake DB and ticket pool heights now can roll
    back stake DB in addition to trimming the ticket pool.
    -Extract code into (db *StakeDatabase).applyDiff, and crate undoDiff
    that applies a PoolDiff in reverse via applyDiff.
    -No longer use BestNode.LiveTickets() in PoolInfoBest. Use makePoolInfo
    and db.poolValue.
    -(tp *TicketPool).Trim and trim now also return the trimmed PoolDiff.

    update Gopkg.lock for dcrd with ExpiredByBlock

commit a73f7ac3a08306c2b521776136d55f2cb3e595ae
Author: mikefullman <mikef@zenshows.com>
Date:   Mon Jun 11 07:35:58 2018 -0700

    Only run ASR on mainnet

commit 9af03b2e15a0f3fdd732605052510e5f97d8153f
Author: mikefullman <mikef@zenshows.com>
Date:   Fri Jun 8 10:58:26 2018 -0700

    fresh coinbase tx fix

commit e1e195ab4b952926e91355b630f17941d6ea507c
Author: Mike <mikef@zenshows.com>
Date:   Fri Jun 8 11:21:36 2018 -0700

    Insight API UTXO+ [10] [11] [12] [3] [4] (#479)

    Insight endpoints listed in https://github.com/decred/dcrdata/issues/400: [10] [11] [12] [3] [4]

commit 2f256cac21ea68919c6f2b933bfb1e57eb59a58b
Author: Mike <mikef@zenshows.com>
Date:   Thu Jun 7 17:31:58 2018 -0700

    Insight API [6], [6.1], [15], [15.1], [16], [16.1], [16.2], [16.3], [16.4] (#493)

    Insight endpoints listed in https://github.com/decred/dcrdata/issues/400: [6], [6.1], [15], [15.1], [16], [16.1], [16.2], [16.3], [16.4]

    * CtxAddress, ValidatePost middleware, check content type, Remove unecessary log entries, Compress output

commit 08e104747da9c94bf2089c6468a07ee73c794c29
Author: lte13 <lars.nordmark@gmail.com>
Date:   Thu Jun 7 14:23:32 2018 +0800

    Update configuration file description (#496)

    Instruct to edit dcrdata.conf in the `appdata` folder, rather than the folder
    with the dcrdata binary.

commit f011d567f01778dbc46b807f3407fe130c2d017b
Author: orthomind <35336207+orthomind@users.noreply.github.com>
Date:   Thu Jun 7 16:17:23 2018 +1000

    Docker tests (#497)

    * Use standard docker image for tests

    * added files committed to git already as part of the copy, since some needed for tests are in gitignore

    * added Go version 1.9 to travis file

    * fixed filter to include all git tracked files and then exclude any from gitignore

    * update dep lockfile test

commit 3b674eebca5af8f19813b705658c48e39446a317
Author: Mike <mikef@zenshows.com>
Date:   Wed Jun 6 21:25:18 2018 -0700

    ASR Calculation on home page (#468)

    * ASR on main page
    * calculate mean block vote time

commit ed831389cea676940131e0da26801e4530e5419f
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Wed Jun 6 04:29:35 2018 +0200

    replace loggers: /btcsuite/btclog > decred/slog (#486)

commit 27478696392825fd0cd58c8c266ab11c56436782
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Mon Jun 4 19:13:55 2018 -0700

    update lock for tollbooth (#491)

commit 090bf42dd7172187e7f75736a71f96ae7652b999
Author: Mike <mikef@zenshows.com>
Date:   Mon Jun 4 10:30:17 2018 -0700

    Insight API broadcast_tx [17] (#481)

    This adds broadcast_tx to the Insight API: [#17](https://github.com/decred/dcrdata/issues/400)

    * Updated error response strategy.  Moved rawtx body extraction to middleware.
    * Add rate limiter.  Check for max size limits on rawtx.

commit 1435dd92a9f4c15d167cb0bd23f3b683a8eb5caf
Author: Mike <mikef@zenshows.com>
Date:   Mon Jun 4 10:19:52 2018 -0700

    explorer: show miner fees in coinbase transaction (#456)

    * coinbase fees displayed

    * review changes

    * fix for inadvertant fees created by pool txs

commit d23a91f6d5d667952080905b6bbcd10ab6185db8
Author: Josh Rickmar <jrick@devio.us>
Date:   Mon May 28 16:33:02 2018 -0400

    Replace "deCRED" occurences with "Decred". (#487)

    The name of the currency is Decred and the logo stylization does not
    change that.

commit 9c46fb937f759911c27a461c7ea517d71b328748
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sun May 27 10:57:46 2018 -0700

    rename dev fund to project fund (#482)

    * rename dev fund to project fund

    * the rewards too

commit 645a285e8b94781d07bc314613dfbb52f486ff35
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Sun May 27 10:55:07 2018 -0700

    refine keyboard nav and make it optional via menu toggle (#476)

    * refine keyboard nav and make it optional via menu toggle

    * improve transition to keyboard controls during feature activation & menu open/close

    * move /blocks pagination link logic serverside & maintain key nav index

    * add '/' hot key for toggling search

    * switch to \ instead of / for menu toggle hot key, add [ & ] as alternate left & right

    * limit /blocks pagination height, so that height - rows cant go past 0

commit 2d78ca14a743a9c3e6552699d79626551f7cea84
Author: Omidiora Samuel <samparsky@gmail.com>
Date:   Tue May 22 19:46:47 2018 +0100

    Show net on home page and Reorder menu items (#478)

    This reorders the menu items, and adds the network name before "Chain State"

    - added Title that currently says Chain State to say MainNet Chain State
    - added menu switch between testnet and mainnet
    - reordered menu items

commit f4d1ac32f3b227aab26ef0b3629cfe0df2e630cd
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue May 15 22:34:36 2018 -0700

    update deps

commit 88a41243fcb18080e40b7e7c74b644f5d0007766
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Tue May 22 20:28:47 2018 +0200

    Add support for insight socket.io api (inv and dcrAddress rooms) (#405)

    This implements the websocket api described in https://github.com/bitpay/insight-api#web-socket-api. The objects used in this PR however are based on the results of the current insight server on mainnet.decred.org.

    Currently implemented:
    - tx event in inv room.
    - block event in inv room.
    - <dcrAddress> event in <dcrAddress> room.

commit 8c0308ed083bc8ac1dbdbfd03ab33aeccf028c57
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sat May 19 01:01:25 2018 -0700

    main: add optional gops agent and instrumentation

commit e22ff164f2e24e11c2b2fecd712821d008db7a43
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Thu May 10 18:49:41 2018 -0700

    notification: make each reorg handler indicate when it is finished

    Do not leave OnReorganization before each handler sets the reorg flag.

    Make reorg channels unbuffered.

commit e8239e94c16c27da4c84ab8f1e9a989d4c5b2b2e
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Sat May 12 01:52:18 2018 -0700

    add keyboard navigation

commit 2671e4c640b9b82bdebc2504a3c73d4357752833
Author: Mike <mikef@zenshows.com>
Date:   Fri May 11 11:38:45 2018 -0700

    dev funds zero (#461)

    This fixes dev funds on the main web page going to zero on websocket update.

    * Update rather than Re-instantiate ExtraInfo

commit 1bb5fb11b2efa701639666e41b7678e315c3b656
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Fri May 4 12:27:23 2018 -0700

    add missing night mode styling for flex table header bg & row borders

commit 7b90f2e2e1b1c2f08982d318588cf26c4c9fe4d1
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Thu May 3 11:18:44 2018 -0700

    README/dcrpg: update tuning info for PostgreSQL

commit 16af133b99880e643420b8fb8ad3bb05057c2abe
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu May 3 18:33:24 2018 -0700

    api: add coin supply (#458)

    This adds the /supply API endpoint and apitypes.CoinSupply.

    txhelpers/subsidy.go is added with the function UltimateSubsidy.

commit d3288e7ea631f3ad9fdadaec9005530f8083c435
Author: Mike <mikef@zenshows.com>
Date:   Tue May 1 19:30:41 2018 -0700

    Ticket Luck/Expiry/Probability Fixes  (#436)

    * various updates and fixes to ticket probability

    * formatting updates and removing hard coded reference to 5 in ROI calculation

    * possible vs final luck tweaks

    * Chance -> chance

    * Remove Luck from missed tickets, coinbase transactions maturity, vote days until mature

commit 64c410844d8763c06963d7b43953a3daa2614b64
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Tue May 1 19:14:22 2018 -0700

    refine hamburger menu style & animation (#454)

    This tweaks the hamburger menu style.
    * location of menu is aligned with page content
    * animation is changed
    * patty lengths tweaked
    * add global click handler to close hamburger menu when clicking off of it

commit e1c4f606aeab37e6171ee2677f701b89970c4c69
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Thu Apr 26 00:10:37 2018 -0700

    use flexbox & tx hash truncation for more compact mempool table on home page

commit 211773057c1caf5355c22a80da70e98e33e91dfc
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Tue May 1 00:46:47 2018 +0200

    Creating a chainparameters page (#397)

    This PR adds a "chain parameters" page that displays the data from dcrd's chaincfg/params.go.

commit 49b78722882ee865a9fa6e17ce2146097baaaa07
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Sun Apr 29 18:25:11 2018 -0700

    darken progress bar background for dark theme (#443)

commit 67402098fa9945a1a9f01f7ba2881330ce4cf482
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Apr 20 22:14:35 2018 -0700

    Add db_block_time to API JSON status response (#439)

    * Add db_block_time to API JSON status response

    * This also creates a version package for dcrdata, uses the proper app version in the status response, and bumps APIVersion to 1.

commit 97d31d619e2252bb951b11e0a96e094a45f81965
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Apr 20 21:24:12 2018 -0700

    api: Make full DB available, add address totals endpoint (#432)

    * add /address/{addr}/totals API endpoint
    The totals endpoint returns a 422 in lite mode.
    Add AddressTotals to api.DataSourceAux interface, and implement it in
    ChainDB via dcrpg.RetrieveAddressSpentUnspent.
    Add json tags to explorer.AddressBalance struct fields.
    Make a stub and TODO for the /address/.../raw/... endpoints.

    * Add apitypes.AddressTotals

    * add (pgb *ChainDB).addressBalance to check and update address cache
    Use addressBalance in AddressTotals to take advantage of general cache.

    * Use ChainDB.AddressTransactionDetails when not in lite mode

    * Avoid UpdateDevBalance during batch sync

    * cleanup, comments

    * fix "ready" field of StatusNtfnHandler

    * Add (d *DevFundBalance).Balance

    * Add DevFundBalance field to ChainDB

    * update license, remove refs to APIDataSource

    * Make explorer.sigNewTx event a Tracef

commit 8b8f60121a7d94d64cbbc4ae5e7576d7e1a01546
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Apr 20 21:07:20 2018 -0700

    do not drop URL query params (#430)

    * fixes #408, dropped URL query params

    Use r.URL.RequestURI

    * ensure page parameters are set in AddressInfo even in lite mode

    * fix sent/received/unspent amounts in lite mode

    * get balance by db query if not using AddrTxnAll type

    * fix NumTransactions

commit 31f96a9d869e30960717b24c14135f94f65dc852
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Apr 20 11:43:11 2018 -0700

    views: delay websocket connection to mitigate churn

commit c3032fc0407c85161e6fbe28d9ca44ac47e422c4
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Apr 18 10:17:03 2018 -0700

    Unconfirmed transaction helpers, reworked CountUnconfirmedTransactions (#422)

    * Unconfirmed transaction helpers, reworked CountUnconfirmedTransactions

    Add func UnconfirmedTxnsForAddress.
    Updated AddressInfo type.

commit d74d00712e2b684fd4b315c13d75ac61af834e30
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Apr 18 08:47:48 2018 -0700

    explorer: do not block Store() when websocket hub is stuck

commit b205b76028c9310b6d70ca5a4d022e4b0d407997
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Apr 17 09:12:08 2018 -0700

    prevent deadlock of websocked event loop

    The channel send on sendBufferChan after addTxToBuffer were sending back to the event loop.

commit cfb2763a6c8e657dfe5556a7622e933418791b9c
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Apr 14 17:50:09 2018 -0700

    fix prepend to LatestTransactions (#428)

    fix indexing of LatestTransactions in mempoolMonitor

    handle non-nil, zero-length txns slice in storeMempoolInfo
    document mempoolMonitor
    create explorer.NumLatestMempoolTxns constant

commit c933ac431324001d382b541f7a13906296cf3c4c
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Wed Apr 4 01:05:15 2018 -0700

    restyle progress bars

commit a356c1f247a8424eb23d5f47759f47d0dbc7d1ad
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Apr 4 14:36:25 2018 -0700

    address page: credit/debit txn filter (#385)

    Support for credit/debit txn filter.

    * Create AddrTxnType, a Stringer.
    * separate TxnsFunding and TxnsSpending slices
    * Depending on URL query param value for txntype, use all or one of
    credits or debits txns slices.
    * refactor page size selector logic, fix txntype selection
    * explorer: set "Turbolinks-Location" header to include all URL queries
    using URL.RequestURI().
    * explorer: set addrData.TxnType.
    * address page: Add txntype={{.TxnType}} to forms that set the href.
    * address page: Still show, but disable, page size selector when too few
    txns.
    * explorer: add TxnCount method to AddressInfo to return either
    KnownTransactions or KnownFundingTxns depending on Fullmode.
    * Reorganize AddressInfo struct, document, and add KnownSpendingTxns
    * Add to AddressTx the field InOutID for the input or output index of the
    relevant transaction input/output.
    * Add (a *AddressTx).IOID() to format a string for the tx input/output.
    * fix address credit query
    * Update TxnCount to return KnownTransactions, KnownFundingTxns, or
    KnownSpendingTxns depending on TxnType.
    * Minimize use of .FullMode in address.tmpl
    * set ConfirmHeight in lite mode for address page
    * txhelpers: test for zero hash before getrawtransaction
    * add txhelpers.TxTree
    * no transaction type filter for address page when in lite mode

commit 6383c50f61e7742c096dc9bb13842132451e72b9
Author: Mike <mikef@zenshows.com>
Date:   Wed Apr 4 12:59:02 2018 -0700

    Hint for the index settings of dcrd.conf to work with dcrdata (#421)

    * Hint for the index settings of dcrd.conf to work with dcrdata

commit 757962a4966a0e366914ba0be486cac982d6cec8
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Apr 3 16:00:32 2018 -0700

    add corresponding type names to API docs (#417)

    * README: add types to API endpoint tables

    api/types: apitypes.BlockTransactionCounts
    api: use apitypes.BlockTransactionCountsin getBlockTransactionsCount

commit a3c621fd98056284c8d38d261c269e61c6fb05d1
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Mar 30 23:08:53 2018 -0700

    explorer: close websocket

    include number of websocket clients in registering message

    do not log error when ws is just closed

    create explorer.ErrWsClosed string
    check in deferred closeWS, and in both send and receive loops

commit 8dbd44283cc561ae07d6d0cc0f0e1129535442b9
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Mar 29 14:12:37 2018 -0700

    notification: setup log, and document functions

commit d20645f4a18ea018c415f6c13affa1ebfa5115b2
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Thu Mar 29 12:01:35 2018 -0700

    update colors, table styles and header/footer in move towards new design (#403)

    * update colors, table styles and header/footer in move towards new design
    * hamburger menu
    * wire up menu links, dark theme menu, animate out

commit 4634901f8da3698dcb4c8104225b2a8293c1a374
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Mar 28 09:44:18 2018 -0700

    explorer: avoid concurrent map access

    Each connection's (exp *explorerUI).RootWebsocket now stores a pointer
    to it's own client data.  Previously each connection had to look up
    this object in the WebSockethub client map, which was not thread-safe.

    Add type clientHubSpoke, which wraps the *client and the corresponding  *hubSpoke.
    Change WebsocketHub.Register from chan *hubSpoke to chan *clientHubSpoke
    Update (wsh *WebsocketHub).RegisterClient to return the *client, and
    send a *clientHubSpoke to the event loop, where registerClient will
    actually insert the client into the WebSockethub's client map.

commit 89f34b763842b27be212ee065a817aa0cbfcdf10
Author: girino <girino@users.noreply.github.com>
Date:   Mon Mar 26 21:18:54 2018 -0300

    Adds pagination to /address API (#412)

    Added pagination to /address/ API in the form /address/count/N/skip/M.
    NOTE: Still only using RPC.

commit fceece3987aaf2ab33593d33f9157575e9df6927
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Mon Mar 26 11:23:11 2018 -0700

    explorer/websocket: fix insane ping loop that was in websocket handler

    Remove the ping loop from each websocket connection handler, and create
    (wsh *WebsocketHub).pingClients() that is started from run().
    It returns a channel that stops the loop when closed.

commit 8984212e27e66685394b8248e56ae0355892e06b
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Sun Mar 25 18:33:28 2018 +0200

    Page size selector feature (#411)

    Only show valid options.  When Limit is equal to number of txns, handle the selection box.

commit bdcded664a1081c3d83953bfef0659e438b97bf8
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Sun Mar 25 18:29:27 2018 +0200

    pool status bug fix (#410)

    * pool status bug fix -- Do NOT show POOL STATUS for unconfirmed tickets (mempool tickets)

commit 1d927b959f856a6aa3dc8cf6dd60ff71532cbf9a
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Mar 22 20:39:57 2018 -0700

    add goreportcard.com badge

commit 1d3a285c0fd075150ad07b211381a78a831de6a0
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Mar 22 20:33:37 2018 -0700

    README.md updates for 2.0

commit 2959d1151d971546479d9dec1937e23f56ccb325
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Mar 24 22:31:11 2018 -0700

    main: configure http.Server with ReadTimeout and WriteTimeout (#407)

    * main: configure http.Server with ReadTimeout and WriteTimeout

    * update copyright and comment wording

commit 1e8dbff83b2c99fed3d432ab058c308eef4e34c0
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Mar 24 18:13:23 2018 -0700

    insight: rawblock endpoint (#402)

    * insight: implement rawblock

    doc reformatting

    * middleware: rewrite docs, simplifications

    remove GetBlockHashOnlyCtx since it was identical to GetBlockHashCtx

    rewrite more docs

    CRs

    * insight: organize router

commit c17aa352ee182f5649d430c9562f58519e2954a2
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sat Mar 17 11:54:47 2018 -0700

    html templates: Do not automatically request to enable desktop ntfns

    To enable desktop notifications, the user must click the connection
    indicator at the bottom right.

commit 6469f9223a924523e7a232961b8e7df33fd7750c
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Mar 11 08:37:46 2018 -0700

    main: check network is the expected one

commit d495aee8c4b500ec98d0ac60e9135716166b19f2
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Mar 6 14:18:40 2018 -0800

    name go-humanize import

    Some linters are confused by the go-humanize import when it is missing
    an explicit name of the package, humanize.

commit a68fad99ecea0c723672a6efe21ae2b57b17a8dc
Author: Omidiora Samuel <samparsky@gmail.com>
Date:   Tue Mar 20 05:00:42 2018 +0100

    Insight api endpoints (#350)

    implmented insight api routes

    implemented transaction hex routes, blocksummary, blockhash in insight api package

    implemented txns routes for multiple addresses, by block, address, post method for multiple addresses

    added log file to insight api package

    implemented get blocks routes.

    Implemented get address info routes

    added insightaddress info json struct

    updated the implementation of retreiving blocks based on time range

    implemented psql queries for rawtx, blockhash

    implemented rpc calls for postgres implementation

    implemented get address info on, retrieve block summary using time range, address utxo on postgresql

    created api package

    implemented notification package

    updated implementation of middleware package

commit 3dc9d94def3a4dc9779726c6627dceadbdeeca50
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Mar 18 16:12:11 2018 -0700

    fix ShowVersion (V/version) flag

    add copyright notices

commit 113a83489b1aa2ad40ff16137fc3dcd4f47279a9
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Mar 16 16:22:10 2018 -0700

    ChainDB/rebuilddb2: add to ChainDB the ability to set a StakeDatabase

    Modify rebuilddb2 to load the stake db (and ticket pool db) *after*
    creating the ChainDB so that it is not necessary to load the ticket pool
    db when only using ChainDB to drop tables.

    Add "rebuild_data/" to .gitignore.

commit d3e87cfbcf546b9640e99b117f922cdb3e412c89
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Mar 11 09:17:02 2018 -0700

    Update README.md files for syntax changes

    There is no longer a -u flag for rebuilddb2.

    dcrdata.conf lives in appdata now.

    Remind developers to update dep prior to committing changes to Gopkg.lock

    Cleanup and wrapping

commit 2297e0b208d82a3dd73325b051f18e0d888356fd
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Fri Mar 16 02:23:25 2018 +0100

    explorer: refactor the explorer templates so they are easier to manage (#395)

    This simplifies the way the template files are handled by explorerUI by moving all the current template logic and types to templates.go where the templates are handled by the templates and pageTemplate types. Now adding a new template should be as simple as adding an name of the file sans "tmpl" extension into the tmpl slice in explorer.New.

commit d2886d57701b1ce2022b4454eabc91206cb8cbac
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Mar 14 22:40:19 2018 -0700

    main: prevent hang after reindex (#391)

commit 322ac503864babda26a1f9a24d2d17ac83ecd1b0
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Mar 14 21:30:23 2018 -0700

    do not request previous vout extra data when just counting transactions (#394)

commit f2d65af0a4b838ab94fc7ad59cfc681ef2bbb94d
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Wed Mar 14 00:25:50 2018 +0100

    ticket page: luck and additional data (#361)

    Add a LUCK data item for each ticket, on a scale from 0 to 5, 5 being best, 0 worst, 4 average.
    Update decred deps in Gopkg.lock.

commit 81e4a8f70c146a374e0810c3a4c2dedbb710133d
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Mon Mar 12 22:37:09 2018 +0100

   …
Jujhar added a commit to McEdward/dcrdata that referenced this pull request Oct 1, 2018
commit 07691c4982261d97ab87c5c2b6acc5241b060717
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Sun Sep 30 16:13:08 2018 -0700

    -u ui updates (pt 6) created trimmed decimal display func

commit f67e8e024162979b109892604d9295bd67491b00
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Thu Sep 27 18:25:34 2018 -0700

    -u ui updates (pt 5)

commit 8d6aa8e84746d06483e1b1ff614e03e2ae66fb31
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Thu Sep 27 16:26:49 2018 -0700

    -u ui updates (pt 4)

commit f7edf3e4f5ac23f30e26e72369b85dab2285cee8
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Tue Sep 25 16:59:46 2018 -0700

    -u ui updates (pt3)

commit ea528540819b09cb49349aece63e2c9b106288bd
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Mon Sep 24 21:37:23 2018 -0700

    -u ui updates (pt 2)

commit c3b0b32eadf451b184e3a31c07315a3cbe39366e
Merge: a4297a1 b01860b
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Mon Sep 24 15:52:13 2018 -0700

    Merge branch 'stats_page' of https://github.com/McEdward/dcrdata into stats_page

commit a4297a1a6a650744db2d72cd2f3aaede88e9b4cc
Author: Jujhar Singh <jujhar.pannu@gmail.com>
Date:   Mon Sep 24 14:03:57 2018 -0700

    -u ui updates

commit b01860bca38b88c469ab23718b3bcade61322ad4
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Mon Sep 24 22:15:19 2018 +0200

    some of the items on the todo

commit 8a8113d0b1c0846a9a9b5350e42200f1130c53af
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Wed Sep 19 01:04:14 2018 +0200

    making all requested changes so far

commit aa36846d8d06c3eb3d2d0bf5893c59d37fe33e62
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Tue Sep 18 12:56:16 2018 +0200

    ultimate supply changes

commit 43fe82a8523e9ecb1e7977e6a95c4e1cbb50257b
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Fri Sep 14 01:54:33 2018 +0200

    requested changes to the page

commit 7771700eca5ea5f89a8d047a4eb6e0220a010149
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Sun Sep 2 19:07:27 2018 +0200

    rebase and adjustments

commit 7912bb89dce5bc6623ebcb8aead6aa41d9541720
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Tue Aug 28 02:44:17 2018 +0200

    changes to url and page name

commit 852ee90cbe5b0c9342398a0c103d71cd4ac95e4d
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Tue Aug 28 02:08:51 2018 +0200

    UI changes for the stats page

commit 46168c0c3c6573ef62705b2f141325633a5cb324
Author: Macaulay Daives <mac114.md@gmail.com>
Date:   Wed Aug 1 10:12:57 2018 +0200

    adding new stats page

commit 8d924bf8e669ad5bd55568f8f68a241f5b08c469
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Sep 4 19:31:48 2018 -0700

    views: style invalidated transactions on block page. (#663)

    This styles invalidated transactions on the block and transactions pages.

    Create an invalidated-tx CSS style to gray out and change background color
    of regular transaction table data, including the coinbase, on a block's page.
    On the blocks list page, indicate invalidated blocks.  When not in lite mode,
    get the Valid and MainChain status from PG.
    Also change maxExplorerRows to 400 (from 2000).

commit 40e118b6c52b4228b85447bc412f9b4123da1cbc
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Wed Sep 5 01:33:16 2018 +0300

    Current Ticket Pool Visualization (#542)

    This add current ticket pool visualization graphs to /ticketpool page.

    This also adds handling for the new getticketpooldata websocket messages.
    TicketGrouping type and an enumeration is used to improve readability.
    Rename 1d/1wk/1m to day/wk/mo. The "1" looks too much like an "l".
    Use chaincfg.TicketMaturity for computing ticket maturity block.

    The dcrpg table version is bumped to 3.5.2 with the addition of an index on
    pool_status in the tickets table.

commit d105024ef53cc5945644d7a226a429ebbcc79070
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Tue Sep 4 18:38:29 2018 +0300

    Fix issues on address page (#633)

    This ensures the group by interval selected is the most meaningful for the user.

    The RegularTx bars are now split into SentRtx and ReceivedRtx for the transactions types chart.
    This also adds the pagesize drop down options back in.
    Disable the charts view mode when on lite mode.

commit 3ae6c99e54aab2dda1c60a63b9bc5525b38109fb
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sat Sep 1 23:34:43 2018 -0500

    explorer: address multiple deadlocks and data races

    Home page was requesting a full read-write lock when it only needed a
    read lock.  Similarly, RootWebsocket was requesting full unneeded full
    locks in both the send and receive loops, which caused a deadlock.
    Add (*explorerUI).Height()  for thread-safe access to
    NewBlockData.Height.
    Remove several pointless closures.

commit 10fccfc6a6e8f86b255107ca75486a6af699db1d
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 31 17:23:46 2018 -0700

    special handling for genesis block coinbase transaction (#657)

    This changes the block page to recognize the genesis block and handle the (invalid) coinbase transaction differently.

    Show a UTF8 attention symbol in red next to the tx hash.
    Add a title (hover text) explaining why it is special.
    Change the link to point to code (chaincfg/genesis.go).

    This also adds a function GenesisTxHash in package txhelpers to retrieve the expected hash of the genesis coinbase transaction for the given network.

commit b15916635b71959b599d988e086cbc2fdac491ce
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu Aug 30 10:23:29 2018 -0700

    dcrpg/views: add side chain queries and side chain blocks page (#654)

    This adds side chain queries and a side chain blocks page.

    Add BlockStatus struct to describe the status of a block in the block
    chain in terms of main/side, validity, height, and hashes of self and
    next and previous blocks.
    Add RetrieveSideChainBlocks to retrieve a slice of []BlockStatus for all
    side chain blocks.

    While here, stop shadowing the named return err everywhere in
    queries.go.  Also remove redundant rows.Close().

    Mounted on /side is a list of side chain blocks with links to them,
    their parents, and their children, if any.
    Update /block page to indicate if the block is a side chain block, and
    if it is approved by stakeholders.
    Add MainChain to explorer.BlockBasic.
    When looking up a block from hash while in full mode, use the ChainDB
    query instead of an RPC so that reorganized/orphaned blocks may be
    located.

commit 71c1d033445bd7c450928b29ba6ffe7a35382e43
Author: SeaLightHouse <39948685+SeaLightHouse@users.noreply.github.com>
Date:   Thu Aug 30 22:29:17 2018 +0530

    For future blocks show a time estimate (#653)

    block page: provide an ETA for blocks not yet mined

    When visiting /block/{n} where {n} is a block height beyond the current best block,
    provide an ETA for the arrival of the block assuming the target block time.

commit 70ed11e77de5c5e9712e3a7c06bf81d64345faad
Author: Corey Osman <corey@logicminds.biz>
Date:   Wed Aug 29 20:00:22 2018 -0700

    Updates README for golang 1.11 (#647)

    This updates the README.md for Go 1.11 changes, including modules.

    This also adds additional instructions for building with docker.

commit 37b7150a99daca975ed192136f6474b3b6f27a8f
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Wed Aug 29 19:58:14 2018 -0700

    add some bottom padding to main container to prevent footer overlap (#648)

    This adds padding at the bottom of the main container to prevent the
    footer from covering up anything in the body.

commit ee54aec3232270a090b88fc6bb2ddfe9a43d7000
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 28 13:43:40 2018 -0500

    begin 3.1 release cycle

    Address doctoc weirdness.

commit aac0885ccf1990d53a7d7eabc1cb83125375cf41
Author: mikefullman <mikef@zenshows.com>
Date:   Mon Aug 27 21:20:37 2018 -0700

    insight api sync status and cleanup

commit ba0f9ee7067e56b061bb34612cf1f1dc3b5bc0d7
Author: codemaestro64 <42093751+codemaestro64@users.noreply.github.com>
Date:   Tue Aug 28 19:02:33 2018 +0100

    Display the next expected ticket price and bounds (#617)

    This shows the expected ticket price for the next price window, along with the
    min/max bounds, which narrow as the current windows progresses.

commit 61a38fbaa2fc95dbc3e7a2ec2b7be1102eeeec79
Author: Corey Osman <corey@logicminds.biz>
Date:   Tue Aug 28 10:21:30 2018 -0700

    Adds basic docker support (#632)

    This adds dockerfile support.

    It allows the user to build a dockerfile from within the repo. The README.md is updated
    with docker instructions, anda table of contents via doctoc.  The code of conduct is also
    renamed for github.

commit 4b074b326bae6aa04adb86cf20256fb072b18e47
Author: codemaestro64 <42093751+codemaestro64@users.noreply.github.com>
Date:   Mon Aug 27 15:42:56 2018 +0100

    Make agendadb filename configurable and house it in datadir folder (#631)

    This adds a configuration option that make the agendadb filename configurable
    at runtime.  It also ensures that the file location is housed in the datadir.

commit b4ae964d93e230acc6e47032073dab4b5c7cf8fd
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Thu Aug 23 14:21:08 2018 -0500

    explorer/mempool: validation

    Create type TicketIndex map[string]int.
    Create type BlockValidatorIndex map[string]TicketIndex.
    Replace map[int64]map[string]int with BlockValidatorIndex. Now block is
    referenced by hash so that side chains do not get combined with the
    main chain.
    Remove notions of validity from VotingInfo, and only count tickets voted
    and max votes per block.  Note that tickets voted is different from
    number of votes seen since ticket double spends are common.

    views/mempool: column names best block values

    Best block column values should be true/false, not valid/invalid.
    Always link to /block/hash instead of /block/height.
    sortVotesTable is using td:nth-child to pick the column, so height is
    the second column and ticket index is the 4th.

    explorer: do not rebroadcast votes

    Do not rebroadcast votes already recorded during initial mempool
    inventory after the last block was mined.
    Also track all unique stake and regular transactions to prevent dups.

    explorer: work around js race

    Votes for a block that explorer has yet to (is about to) see can come
    through the new tx channel and are broadcast to the clients. The full
    mempool update will come immediately after and that, broadcasting the
    new mempool data.  However, on the client, in js, the full refresh of
    the table from the new block can be processed before the early votes.
    Then when the early votes are processed, they appear as duplicates in
    the votes table since the backend processed them in the opposite order.

    As a workaround, modify the explorers mempool monitor to refuse to
    broadcast such votes, identified as validators for a block > last known.
    Last known refers to the last block that triggered a full mempool
    update. This is OK since on the backend, the full mempool update will
    contain this vote and it will be included in the client signal html
    table rebuild.

    explorer: avoid RPC in storeMempoolInfo and lock earlier

    make Hash part of explorer.BlockBasic, and use
    exp.NewBlockData.Hash instead of RPC.
    When fetching mempool, ensure block hash/height is the same before and
    after the RPC so the best block at the time of the call is known with
    certainty.
    Lock exp.MempoolData without delay in storeMempoolInfo.

commit 8a2e2ad351ae3467d3e64a029b5b048b5446781b
Author: mikefullman <mikef@zenshows.com>
Date:   Tue Jul 24 09:31:41 2018 -0700

    7/5 confirmed ok.  fixed columns to valid for last block.  new tx on upcoming block not painted pink.

    make upcoming votes light grey background

commit 93b578877a16e0b92ac968a07913c46a84d0a97f
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Thu Mar 15 07:25:53 2018 +0100

    explorer: votes filter now flags votes instead of excluding them.

commit f2903f1a822267521f2237e07717567250c3d9ce
Author: Corey Osman <corey@logicminds.biz>
Date:   Thu Aug 23 09:39:28 2018 -0700

    add the ability to use environment variables for configuration (#629)

    main: Add the ability to use environment variables to set configuration.

    The ability to set app configuration via environment variables makes this
    more compatible with 12 factor app design, in addition to docker and
    docker-compose.

    A simple config test file is also added.

    A new import, the env package, is added that allows declaration of
    environment variables via struct tag. The go module files, and dep files
    are updated to include the dependency.

commit a0378ed50769d503f265c889fc1aae94853a1879
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Wed Aug 22 15:40:08 2018 -0500

    dcrpg: fix upgrade to 3.5.1 from <3.5.0

    A missing fallthrough statement ad the end of the 3.4.1 -> 3.5.0 upgrade
    broke upgrading to 3.5.1 from any version but 3.5.0.

commit e54cfa10a7f700b069bc8e6fabbc4dbaa7c39cf4
Author: dmigwi <migwi.ndungu@andela.com>
Date:   Wed Aug 22 04:47:54 2018 +0300

    Fix bugs appearing on agenda page

    Update agenda voting milestone with data migration running from scratch

commit cc0e85c12f570fa553f08fb6160d5a1d6fac3431
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 21 16:29:53 2018 -0500

    rework version scheme with appBuild

commit 2f683513e4a613401131a7fc4c607f56a6696d77
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 21 11:14:46 2018 -0500

    go mod: Use go modules

    Specify dcrd and dcrwallet module versions.
    Remove dcrwallet/netparams import.
    Update all other deps.

commit 8b16836835b872f3d05124ae11729fc6f5218fb2
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Aug 21 08:01:23 2018 -0700

    README: update for 3.0 (#625)

    This updates the README.md for features added to 3.0, and other cleanup.

    - Remove github release badge (only tags matter).
    - Update repository overview with new folders and better descriptions.
    - Update required dcrd to 1.3 (testnet3).
    - Clean up and clarify Upgrading Instructions.
    - Add more about PostgreSQL tuning.
    - Add System hardware requirements section.
    - Update JSON API tables with new endpoints (block subsidy, tx vinfo, tx hex, tx decoded, address totals).
    - fix typos, add tips about permissions and dcrd settings
    - note experimental Insight API support

commit 6ca963dbb1ef2edfe491a4d8d836cc99bb043dfd
Author: codemaestro64 <42093751+codemaestro64@users.noreply.github.com>
Date:   Tue Aug 21 15:24:11 2018 +0100

    Add color themes for different networks (#605)

    This adds distinct day color themes for different networks (simnet, testnet, mainnet).

    All networks have the same background color except for the header and footer, which are different. A new template function `theme` is added that returns current theme used to set the <body> class.

commit 91a3249a3e6c42b718cd7ca6f2c75b75003941f2
Author: Mike <mikef@zenshows.com>
Date:   Tue Aug 21 06:12:34 2018 -0700

    [WIP] Insight API fixes for upgraded tables (#572)

    This fixes several Insight API endpoints that were broken when the addresses table upgraded to 3.3.0.

commit 11147ba63a5d28ef496a5abff9a861af9291d198
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Mon Aug 20 23:07:00 2018 +0300

    address page: Add charts (#597)

    This bumps the dcrpg tables version to 3.5.0 from 3.4.1 with the
    addition of the tx_type column to the addresses table, and the vins
    table.  The upgrade is automatic and takes about 1 hr depending on
    hardware.

    This adds charts on the address page to display the following data
    over time for the given address, and binned by several selectable
    time frames:
    - transaction type
    - sent and received amounts
    - unspent amount (a.k.a. balance)

    The graphs use the standard Decred color scheme.

    API endpoints are added for types and amount distribution charts.
    The required data is retrieved by AJAX requests.

commit 0920a45d8b516a42b0b043bf21c2935336171ebd
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Mon Aug 20 02:02:24 2018 -0700

    chart theming, url backed state & universal zoom (#598)

    Add theming, url backed state, universal zoom & moving average to /charts

commit 180c7636e3a0fdc3dce760d4df41791f85f890c5
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Aug 16 22:26:49 2018 -0500

    dcrpg: the 3.2.0 -> 3.3.0 upgrade was failing

    The HashDB function required the is_mainchain column, but it did not
    yet exist at the time of upgrade.  This was added to the query after
    the upgrade was initially tested.

commit 4622a99876ddaae2310cc23feb017889b6c7b0ae
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Thu Aug 16 21:53:28 2018 +0200

    Update README.md on dep ensure -vendor-only (#621)

    This instructs to use the -vendor-only flag with dep ensure to not modify the Gopkg files.  Instructions for updating dependencies and info on dep are also provided.

commit 01d9e0be706d38c947268da2548be9016594b285
Author: CodeMaestro <code.maestro64@gmail.com>
Date:   Thu Aug 16 19:13:39 2018 +0100

    Show proper message when no agendas

commit e9533aa8a7f601e5d8f417a9224eab345a6d21a3
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Aug 15 23:26:59 2018 -0500

    stakedb: Close badger iterator after View

commit d9cf525773982e23c5faebc90a30f7a7f433b9a1
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Aug 15 12:57:41 2018 -0700

    increase node notification buffer sizes (#616)

    With more transactions coming at once, and the possibility of very large reorgs on testnet, larger channel buffers are useful.  This makes it happen.

commit a281cf7ea945898570561785f0c221b1d3b77eb2
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Wed Aug 15 14:05:36 2018 -0500

    fix another lite mode crash

commit 93749cb3dcf0b0ebe2f56fb9a011df882e2e6afb
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Wed Aug 15 18:11:02 2018 +0200

    avoid pointless query for dummy sstxchange address

    This detects when the dummy (zero pubkey hash) address is requested on the address page, skips the queries, and shows a message.

commit f3c5c046222a8800e206ac3ff89e2c7a71ee34a9
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Aug 14 12:21:05 2018 -0500

    dcrpg/main: enable upserts after  indexing (#613)

    * dcrpg/main: enable upserts after indexing

commit e41e9d19e2ca97f7f81c6471ab7163064ae8d6a6
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Mon Aug 13 13:00:55 2018 -0500

    lite mode fixes with new ChainDBRPC struct

commit caf2a8315eb2a743176a9f0cfc7f69cce6677195
Author: SeaLightHouse <39948685+SeaLightHouse@users.noreply.github.com>
Date:   Mon Aug 13 20:20:16 2018 +0530

    added TargetTimePerBlock in views/parameters.tmpl (#606)

    This adds TargetTimePerBlock in on the chain Parameters page.

commit 81d965d5721a9ad7cc2d6578ca5f41693dcaeacb
Author: SeaLightHouse <swarupghosh123@gmail.com>
Date:   Mon Aug 13 16:12:45 2018 +0530

    changed mainnet.decred.org to explorer.dcrdata.org in main menu

commit c8c12c76d3a416568b50b57d92fefc5907b6065d
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 10 14:03:19 2018 -0500

    keep spaces out of the url (#602)

    * keep spaces out of the url

    Change "merged debit" to "merged_debit" so we don't get
    ?txntype=merged%20debit in the url.

    * recognize old links

commit 029e74c2f4bcd4ff5def8cad2550e9d47e5b41dc
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Fri Aug 10 18:15:10 2018 +0300

    Display the tiny qr code thumbnail by default (#583)

    This restores the javascript on the address page that shows the qr code icon.

commit 2614a4e3c0e65120f3746672e8cbfe6d15469d5d
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 10 08:51:37 2018 -0500

    dcrpg: reorg handling (#580)

    This adds a ChainMonitor to dcrpg and implements switchToSideChain.

    Add (*ChainDB).TipToSideChain, used by switchToSideChain to move blocks from mainchain to sidechain, updating all related tables.
    Add (*ChainDB).SetVinsMainchainByBlock, used by TipToSideChain, and add other mainchain queries for txns, votes, tickets, and addresses tables.
    notification: create block connected and reorg channels for dcrpg
    Embed ChainDB in ChainDBRPC instead of having named field.
    Add ChainDB.bestBlockHash to avoid unnecessary RPC.
    Upgrade tickets table with is_mainchain column, forgotten in last PR. This bumps the db scheme from 3.3.0 --> 3.4.0.
    Added new index uix_votes_block_hash to votes table for block_hash to reduce the index size for this column (there is a two column unique index that is 4x larger in size), and speed up scans. This bumps table version from 3.4.0 --> 3.* dcrpg: add ChainMonitor.

commit 056527ec623926f69c8f5e53ec941141548c82ec
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Aug 8 11:39:25 2018 -0500

    missing defer in sqlite, lots of linting (#596)

    * missing defer in sqlite, lots of linting

    * disable gofmt since 1.11 has no ideas about things

commit d43de2fd1684ba0a4fbcb6561f36edd6b00e56c4
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Wed Aug 8 10:36:29 2018 -0500

    testnet3

    Update deps for dcrd, dcrwallet.
    Also update golang.org/x/...
    Remove all reference to params.TestNet2 as it was removed from chaincfg.
    Deprecate netName() in config.go.
    Change explorer.netName to work for any numbered testnet by stripping
    suffix after "testnet".
    Add tests for explorer.netName.

commit a000082da3c4623e6ee60f9e01652e1297a3c3e1
Author: J Fixby <github@jfixby.com>
Date:   Tue Aug 7 00:51:29 2018 +0200

    dcrsqlite: test GetBestBlockHash, GetBestBlockHeight, GetStakeInfoHeight

commit e92b449957de7f0cb8f9617e0b2f4e6ef08c7b45
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Aug 7 09:44:25 2018 -0500

    main: show golang version

commit 8639f6eb21a90b229bd9336efb4fe241ee18637d
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Tue Aug 7 01:37:32 2018 +0300

    agendadb: Fix unhandled errors while fetching all agendas (#594)

    * Fix the unhandled error while fetching all agendas

    * Improve on the error messages

commit 6aa3651ee29ac09438785060a88785e01ebe796a
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Mon Aug 6 23:26:47 2018 +0200

    dcrsqlite: test RetrieveAllPoolValAndSize and RetrieveBlockFeeInfo (#563)

commit 4a8449e7b25049289f8608eb554ff566f98cb878
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Fri Aug 3 16:43:23 2018 -0500

    txhelpers/explorer: move and test CalcMeanVotingBlocks

commit 7bc16a2fbf13e6f1fb9dbec039c19d7bf94733ca
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 3 14:36:11 2018 -0500

    api: add block rewards endpoints (#592)

    * api: add /block/.../subsidy endpoint

    txhelpers: add RewardsAtBlock
    api/types: add BlockSubsidies JSON-tagged type
    api: add VotesInBlock(string) to DataSourceAux interface
    api: add *chaincfg.Params to appContext
    api: and add (*appContext).blockSubsidies
    dcrpg: add (*ChainDB).VotesInBlock, and RetrieveBlockVoteCount & query

    * api: allow ./subsidy for future blocks

    Just omit the block hash, and assume all voters

    * don't ignore indent

commit a18e97cfa92cf89eac81fbc08c5adb453fab9c86
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Aug 3 12:43:28 2018 -0500

    config: disable dev balance prefetch with invalid fund (#589)

    * config: disable dev balance prefetch with invalid fund

    dbtypes: DevSubsidyAddress now returns a non-nil error in special
    cases (e.g. testnet2).

    When parsing config, check chain params via DevSubsidyAddress to
    automatically disable the dev fund prefetch when it would not be
    possible to fetch a non-zero balance.

    * move to after log init, fix printf

commit 2a555814bd2dd91e4ace50d2d91e542fecefb474
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Jul 31 14:24:33 2018 -0500

    dcrpg: provide error context in handleBlocksTableMainchainUpgrade

commit 148ed2f52bdac18f50656ad7d53ddddf02437e4e
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Mon Jul 30 21:36:31 2018 -0500

    explorer: limit logging about websocket updates to zero clients

commit c9f6cdebc94a9abb6c4dc18131f27cfb3e0b4aed
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Mon Jul 30 13:35:18 2018 -0500

    dcrpg: support side chain tracking, upgrades (#552)

    This bumps the dcrpg DB table version to 3.3.0 and requires an automatic upgrade.  The upgrade can take hours however.

    The table upgrade process has been refactored.  A new TableUpgradeType type is added, and addNewColumnsIfNotFound takes default value.  TableUpgradesRequired always returns a result for each table, ok being one of the results.  Version check succeeds when all tables "ok"

    Prior to InsertAddressRows, ensure ValidMainChain is set properly for each row.

    Improve documentation for storeTxns.

    dbtypes: set Tx.IsValidBlock and .IsMainchainBlock

    When processing block transactions in processTransactions, set IsValidBlock and IsMainchainBlock for each Tx.

    Improve addresses statements readibility.

commit 01d4c9516ef6686acf4bb7513996bab67a58f2fb
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Sat Jul 28 21:19:43 2018 +0300

    Fix bugs in addresses page view (#570)

    * Improve on logic checking if all transactions were fetched

    * Make the default page size to be 20

commit 3d3cbb4dfb6a5cc2dc63d81b76dcb8ae5f7b3da3
Author: J Fixby <github@jfixby.com>
Date:   Fri Jul 27 20:53:12 2018 +0200

    testutil: fix error message formatting

    and ignore test data folder

commit ad1a91c3da8f7598cb98ff0e4b2902ceba833f4c
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Fri Jul 27 01:56:39 2018 -0500

    main: always show dcrsqlite sync error without waiting on dcrpg

commit 03548fa85d5c85dd367fe61ce297703c191b4b0b
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu Jul 26 20:19:02 2018 -0500

    config: add --sync-and-quit flag to only sync (#573)

    This adds the flag --sync-and-quit to the dcrdata executable that will caus dcrdata to sync to the best block and then exit. It will not start the explorer or API.

commit 0c48bcce707618dbd3aecd5e2a1a78595cdd0815
Author: Mike <mikef@zenshows.com>
Date:   Wed Jul 25 12:27:28 2018 -0700

    Unconfirmed tx in address list and input amounts on unconfirmed tx (#489)

    This addresses the unconfirmed transactions not visible in address view and input amounts not visible in transaction view.

    There were two major areas of work:
    * Blending unconfirmed transactions with confirmed transactions in the current address view. Mostly extending what @chappjc already started.
    * Compensating for AmountIn values not set in dcrd calls to mempool transactions.

commit 8519328d563b714c9749b8a7e100ca54e16691fb
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Wed Jul 25 21:54:01 2018 +0300

    Consolidated debit view (#524)

    This introduces a new "merged debit" view on the addresses history page that lists only unique transactions.  The Debit DCR amount is the sum of all outpoints corresponding to the given address that are spent in a transaction.

    It also fixes a bug with the next button on the same page.

commit c4864424c5156c8c40983867a8d1a623cbed60e0
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Mon Jul 23 18:49:47 2018 +0200

     testutil: refactor test setup (#559)

    This refactors the test setup and introduces a number of helper functions as "testutil".
    This also includes minor refactoring of the dcrsqlite/sqlite.go.

commit 2010d5a9ba0ce218ea9cc0f7632619e761b58b03
Author: Sebastian Nadorp <snadorp@users.noreply.github.com>
Date:   Mon Jul 23 18:22:48 2018 +0200

    Add message for no votes on a block. (#560)

    This removes the table and displays a nice message if there are no agenda choices in a vote transaction.

commit 721e4da15947b4f27dd134372ad154c29ee03ca9
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Mon Jul 23 07:11:22 2018 +0300

    Replace the error page with a status page (#551)

    This enables the status page to be used for a wide variety of case scenarios one being Errors, Functionality limitations and also can be used to show a deprecated page or feature.

commit 850df44bf26e551eb5de9bcf068e7afec9da8d90
Author: Mike <mikef@zenshows.com>
Date:   Fri Jul 20 11:29:28 2018 -0700

    fix luck (#558)

    This PR address a small issue with the variable TicketExpiry initialization resulting in improper luck calculations.

commit 021cf0754e6d328cbf48caa40a21b1b0b0b07531
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Thu Jul 19 17:33:47 2018 +0200

    dcrsqlite: correctly splits given string into array of strings (#555)

    dcrsqlite: correctly splits given string into array of strings

commit ebc6cb91646a556c43ba71376e9f7a1b7ac2042c
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Tue Jul 17 16:23:16 2018 -0500

    travis/docker: do not update Gopkg.lock, only /vendor

commit 152e5f85175b5f8b3eea7f62ef74e3f0361e3179
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Mon Jul 16 20:09:48 2018 -0500

    explorer/main: add no-dev-prefetch option (#547)

    * explorer/main: add no-dev-prefetch option (#546)

    The no-dev-prefetch flag does the following:
    Disable automatic dev fund balance query on new blocks. When true, the
    query will still be run on demand, but not automatically after new
    blocks are connected.

    * dcrpg: respect noDevPrefetch

    * rebuilddb2: no dev fund prefetch

commit 79aee4bf68064cde74bceeb643125b1c7eb6abe7
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Sat Jul 14 23:43:40 2018 -0500

    dep: update lock for dep's new format

commit 079c1d46226a3230394ae77038007f7e268cca9e
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Jul 13 07:24:25 2018 -0700

    explorer: do not fetch charts data in lite mode

commit 25d880ef60cf43a4dd59d30be2e98df120794383
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Jul 13 00:22:24 2018 -0500

    version: instructions to put git commit in version string

commit 041c7c7ab07c2597a4df472376c66b5d0f121f58
Author: swghsh <39948685+SeaLightHouse@users.noreply.github.com>
Date:   Thu Jul 12 10:00:02 2018 +0530

    views: hide missed table when empty" (#537)

    views: hide missed table when empty

commit c1ddd5eb31406d9f6d232caf3c4ebb1cf4aad21e
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Thu Jul 12 06:50:05 2018 +0300

    Add charts (#463)

    * Add Historical charts that will appear on the explorer's charts page

    * Automate the vins table upgrade (Coin Supply Upgrade)

commit c79ca99e09eba1a0405b370449a045e2c65d295f
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Wed Jul 11 03:09:44 2018 +0300

    Agendas DB table and html pages (#523)

    This creates an agendas DB, and adds an agendas page to the explorer.

    The agendas page uses dygraph to show cumulative vote counts as the vote period progresses.

commit 548affc1c339b467dba88d67deec4b1fb6674cf8
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Jul 10 14:07:32 2018 -0700

    dcrpg: fix genesis error in block_chain lookup

commit 0cfca964e0c2791debb90d32d4e6026deb6d87e7
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Jul 3 22:10:02 2018 -0400

    stakedb: recovery and robustness with upserts (#527)

    Add stakedb.LoadAndRecover, which NewStakeDatabase returns the height
    where it stopped loading. If there is an error, the height may be
    passed to LoadAndRecover.
    InsertVin[s] now has upsert option (dupcheck=true) to avoid failures
    requiring recovery procedures.
    Also have dupcheck option with SetSpendingForFundingOP /
    insertSpendingTxByPrptStmt and SetSpendingByVinID.
    Add MakeAddressRowInsertStatement to greate the upsert statement if
    checkdups=true;
    InsertVotes and MakeVoteInsertStatement similarly take dupCheck option.
    Fix incorrect parameter numbers in upsertVoteRow and insertVoteRowReturnId.
    AdvanceToTip now returns the last valid diff index (cursor - 1).

commit 552ea24ad992f1fba9993d634f736e9e8f7c855d
Author: J Fixby <github@jfixby.com>
Date:   Mon Jul 2 21:14:47 2018 +0200

    dcrsqlite: fix RetrievePoolInfo empty result

    Fixes #532

commit d7ef93bd2aa77020c40ed9387912cc517f7e150d
Author: J Fixby <github@jfixby.com>
Date:   Tue Jul 3 11:39:53 2018 +0200

    dcrsqlite: remove dead code and swap wrongly positioned args

commit c6359b596ce92713ccdcad50f3e7e46ab18e8fe3
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Jul 1 18:05:32 2018 -0700

    dcrpg: fix empty prev_hash in block_chain

    In StoreBlock, if pgb.lastBlock does not contain the previous block row
    ID, look it up in the block_chain table. Add RetrieveBlockChainDbID to
    get the row id in the block_chain table for the block with a given hash.

commit 886025a4f665b5a6eef73bb2f9872714fddb06a7
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Jul 1 17:48:02 2018 -0700

    stakedb: fix loading bug in ticket pool db

    Fix bug in LoadAllPoolDiffs where multiple diff sets for the same height
    were loaded due to badger storing multiple value versions.

commit 75f18a3d7f10ebcca7d43ec59945d72d52f74aa8
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Sat Jun 30 18:43:32 2018 +0200

    dcrsqlite: create DB-file parent directory when necessary (#516)

    * dcrsqlite: add test to reproduce the issue #515

    https://github.com/decred/dcrdata/issues/515

    * dcrsqlite: create DB-file parent directory when necessary

    Fixes https://github.com/decred/dcrdata/issues/515

    * dcrsqlite: move test helpers to a testutil package

    * testutil functions take *testing.T (#1)

commit 5e31c5058c1820d25f0fb5bc91edc72151628272
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Jun 30 08:33:22 2018 -0700

    explorer: compute ticket matruity times in lite mode (#525)

    * explorer: compute ticket matruity times in lite mode

    Intoduces (*TxInfo).IsTicket/IsVote

    * views: hide POOL STATUS in lite mode

    In lite mode, SpendStatus is unknown.

commit 006685be846ac9cfe7b9b76eebabdb7bffdaad18
Author: Migwi Ndung'u <22055953+dmigwi@users.noreply.github.com>
Date:   Sat Jun 30 01:11:28 2018 +0300

    dcrpg: new adresses table format (#427)

    * Implement the new proposed Addresses table format
    * Improve the explorer address page view with the spent tx and funding tx relationship
    * Change in_out_row_id (uint64) column to matching_tx_hash (text) column in the addresses table
    * Index column matching_tx_hash
    * Update the README.md file with the upgrading instructions
    * Update table maintenance require message
    * Fix bug on how non-alphanumeric characters are split from the address fetched
    * bump to 3.0

commit c7f065d389860eebb40f016e05b0062f5a196295
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Jun 27 14:26:26 2018 -0700

    html: update header descriptions

commit 30e31c954dccbfcdbd54c33ab81138ed1034acc6
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Jun 28 10:04:28 2018 -0700

    html/tx: unconfirmed tickets/votes have no maturity status

    (db *wiredDB) GetExplorerTx: set Mature="false" when confirmations==0
    tx.tmpl: Unconfirmed tickets and votes read "N/A"  for MATURITY, must be
    confirmed to show progress meter.

commit 4faae92abc2c1536c067e033a08b0f4384611095
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Jun 21 09:55:10 2018 -0700

    bump dcrdata to v2.1.0

commit 79ef24db53fed066f4fc62cd38ef3a20b06e57cc
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Jun 28 10:17:25 2018 -0700

    rebuilddb2: consider batch sync and avoid constant dev fund update

commit 679e8bcd81a78dd0da83314934af65ff9c31a94f
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu Jun 28 10:21:24 2018 -0700

    stakedb: switch from storm to badger for ticket db (#465)

    * stakedb: switch from storm to badger for ticket db
    * stakedb: update ticketpool tests, regen test data
    * stakedb: test with full pool diffs
    * provide upgrade/recovery instructions
    * stakedb: migrate from storm to badger

    If badger DB not found or is empty, attempt to load existing diffs from
    a storm DB, if found.

    * Add storeDiffs to write many PoolDiffs in a batch txn
    * Inform the user they can delete the storm db.
    * dcrsqlite: in sync log every 1000 blocks
    * dcrpg: in sync log every 500 blocks
    * travis: add xz-utils apt package

commit b23e52339b3453f1ee4fa93f05940e095b0de44c
Author: J Fixby <github@jfixby.com>
Date:   Mon Jun 25 12:22:10 2018 +0200

    multi: show maturity ETA in hours

    Change ticket ETAs to use hours. Examples:
    "Immature, spendable in 28 blocks (2.2 hours remaining)"
    "Immature, eligible to vote in 145 blocks (12.0 hours remaining)"

commit 1d9405aca5c05baea34b11f3c10d521bbddab7b9
Author: Timilehin Olatunbosun <38729914+timi-ola@users.noreply.github.com>
Date:   Wed Jun 27 23:06:48 2018 +0200

    Err message page clean up (#484)

    This removes the error code and message from the error page.

commit 69bf97b12b3808797f21c53e53fa9c33364bbb7e
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Thu Jun 21 08:46:34 2018 -0700

    refactor home page and mempool javascript with stimulus (WIP) (#498)

    This introduces the Stimulus JavaScript framework:  https://github.com/stimulusjs/stimulus

    * refactor age computation with stimulus
    * rework mempool with stimulus wip
    * hookup mempool & getmempooltxsResp events to homepageMempool controller
    * dry mempool table row generation
    * make sure there's always a table to render txns or empty message in mempool

commit 41d8c3e753f24bbf1ff4ea9a483377096091e3ff
Author: Mike <mikef@zenshows.com>
Date:   Thu Jun 21 08:42:49 2018 -0700

    Insight API [13] [14] [19] [20] [20.1] [20.2] [20.3] [20.4] [21] [21.1] (#506)

    This implements the following Insight API endpoints (listed in https://github.com/decred/dcrdata/issues/400): [13] [14] [19] [20] [21]

commit 119c1541be50cd4de5392779d54e782db4ce9f09
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Jun 20 16:54:51 2018 -0700

    api: add /txs route for batch request (#510)

    * api: add /txs route for batch request

    This adds the /txs and /txs/trimmed routes for batch requesting
    transaction details.  The transaction hashes are transmitted in the http
    request body as JSON.  The structure is api/types.Txns. The request
    Content-Type must be "application/json".
    The return type for /txs is []*types.Tx.
    The return type for /txs/trimmed is []*types.TrimmedTx.

    version: bump to 2.0.1

    * update README with new /txs endpoint

commit e080b7c52bfdf3377d118033200aafe7553e7c58
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Jun 12 13:23:54 2018 -0700

    dcrpg: prevent stacking multiple calls to updateDevFund

commit 76be996a72e7b6df77e12472e5930ae0372e0691
Author: Mike <mikef@zenshows.com>
Date:   Thu Jun 14 11:11:29 2018 -0700

    Insight API - Misc cleanup [1], [2], [5], [5.1], [8], [8.1], [8.2], [9.1], [9.2], [9.3], [9.4] (#483)

    Cleanup and work on Insight API endpoints: [1] [2] [5] [5.1] [8] [8.1] [8.2] [9.1] [9.2] [9.3] [9.4]

commit ad899b874956b837350bff4442b834044fb20aac
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Jun 12 18:56:17 2018 -0700

    stakedb: accelerate StakeDatabase.ConnectBlock (#499)

    This changes how StakeDatabase gets the live ticket pool and the diffs (in/out) for each block in ConnectBlock.

    The liveTicketCache in StakeDatabase is now a faithful representation of the live ticket pool at the current best block. So when the live ticket list is needed, it is no longer necessary to use the stake.Node (BestNode.LiveTickets()).

    Add poolValue int64 to StakeDatabase, updating it on connect/disconnect via += / -+ for the pool in/out tickets.

    A major optimization in ConnectBlock is using the new ExpiredByBlock function in dcrd/stake instead of the much more costly ExistsExpiredTicket and ExistsRevokedTicket. This requires dcrd PR decred/dcrd#1221.

    Improve the process of "Pre-populating live ticket cache..." by prefetching the tickets from the stake BestNode (dcrdata's best node) rather than asking dcrd for it's idea of the live ticket pool. This ensures liveTicketCache will always contain an accurate ticket pool.

    Avoid LiveTickets() during sync.

    Add FilterHashSlice utility function.

    Update test data for new stakedb_ticket_pool.db

    disconnectBlock applies diffs in reverse

    -Keep liveTicketCache and poolValue correct when disconnecting a block.
    -Recovery from mismatching stake DB and ticket pool heights now can roll
    back stake DB in addition to trimming the ticket pool.
    -Extract code into (db *StakeDatabase).applyDiff, and crate undoDiff
    that applies a PoolDiff in reverse via applyDiff.
    -No longer use BestNode.LiveTickets() in PoolInfoBest. Use makePoolInfo
    and db.poolValue.
    -(tp *TicketPool).Trim and trim now also return the trimmed PoolDiff.

    update Gopkg.lock for dcrd with ExpiredByBlock

commit a73f7ac3a08306c2b521776136d55f2cb3e595ae
Author: mikefullman <mikef@zenshows.com>
Date:   Mon Jun 11 07:35:58 2018 -0700

    Only run ASR on mainnet

commit 9af03b2e15a0f3fdd732605052510e5f97d8153f
Author: mikefullman <mikef@zenshows.com>
Date:   Fri Jun 8 10:58:26 2018 -0700

    fresh coinbase tx fix

commit e1e195ab4b952926e91355b630f17941d6ea507c
Author: Mike <mikef@zenshows.com>
Date:   Fri Jun 8 11:21:36 2018 -0700

    Insight API UTXO+ [10] [11] [12] [3] [4] (#479)

    Insight endpoints listed in https://github.com/decred/dcrdata/issues/400: [10] [11] [12] [3] [4]

commit 2f256cac21ea68919c6f2b933bfb1e57eb59a58b
Author: Mike <mikef@zenshows.com>
Date:   Thu Jun 7 17:31:58 2018 -0700

    Insight API [6], [6.1], [15], [15.1], [16], [16.1], [16.2], [16.3], [16.4] (#493)

    Insight endpoints listed in https://github.com/decred/dcrdata/issues/400: [6], [6.1], [15], [15.1], [16], [16.1], [16.2], [16.3], [16.4]

    * CtxAddress, ValidatePost middleware, check content type, Remove unecessary log entries, Compress output

commit 08e104747da9c94bf2089c6468a07ee73c794c29
Author: lte13 <lars.nordmark@gmail.com>
Date:   Thu Jun 7 14:23:32 2018 +0800

    Update configuration file description (#496)

    Instruct to edit dcrdata.conf in the `appdata` folder, rather than the folder
    with the dcrdata binary.

commit f011d567f01778dbc46b807f3407fe130c2d017b
Author: orthomind <35336207+orthomind@users.noreply.github.com>
Date:   Thu Jun 7 16:17:23 2018 +1000

    Docker tests (#497)

    * Use standard docker image for tests

    * added files committed to git already as part of the copy, since some needed for tests are in gitignore

    * added Go version 1.9 to travis file

    * fixed filter to include all git tracked files and then exclude any from gitignore

    * update dep lockfile test

commit 3b674eebca5af8f19813b705658c48e39446a317
Author: Mike <mikef@zenshows.com>
Date:   Wed Jun 6 21:25:18 2018 -0700

    ASR Calculation on home page (#468)

    * ASR on main page
    * calculate mean block vote time

commit ed831389cea676940131e0da26801e4530e5419f
Author: J Fixby <JFixby@users.noreply.github.com>
Date:   Wed Jun 6 04:29:35 2018 +0200

    replace loggers: /btcsuite/btclog > decred/slog (#486)

commit 27478696392825fd0cd58c8c266ab11c56436782
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Mon Jun 4 19:13:55 2018 -0700

    update lock for tollbooth (#491)

commit 090bf42dd7172187e7f75736a71f96ae7652b999
Author: Mike <mikef@zenshows.com>
Date:   Mon Jun 4 10:30:17 2018 -0700

    Insight API broadcast_tx [17] (#481)

    This adds broadcast_tx to the Insight API: [#17](https://github.com/decred/dcrdata/issues/400)

    * Updated error response strategy.  Moved rawtx body extraction to middleware.
    * Add rate limiter.  Check for max size limits on rawtx.

commit 1435dd92a9f4c15d167cb0bd23f3b683a8eb5caf
Author: Mike <mikef@zenshows.com>
Date:   Mon Jun 4 10:19:52 2018 -0700

    explorer: show miner fees in coinbase transaction (#456)

    * coinbase fees displayed

    * review changes

    * fix for inadvertant fees created by pool txs

commit d23a91f6d5d667952080905b6bbcd10ab6185db8
Author: Josh Rickmar <jrick@devio.us>
Date:   Mon May 28 16:33:02 2018 -0400

    Replace "deCRED" occurences with "Decred". (#487)

    The name of the currency is Decred and the logo stylization does not
    change that.

commit 9c46fb937f759911c27a461c7ea517d71b328748
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sun May 27 10:57:46 2018 -0700

    rename dev fund to project fund (#482)

    * rename dev fund to project fund

    * the rewards too

commit 645a285e8b94781d07bc314613dfbb52f486ff35
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Sun May 27 10:55:07 2018 -0700

    refine keyboard nav and make it optional via menu toggle (#476)

    * refine keyboard nav and make it optional via menu toggle

    * improve transition to keyboard controls during feature activation & menu open/close

    * move /blocks pagination link logic serverside & maintain key nav index

    * add '/' hot key for toggling search

    * switch to \ instead of / for menu toggle hot key, add [ & ] as alternate left & right

    * limit /blocks pagination height, so that height - rows cant go past 0

commit 2d78ca14a743a9c3e6552699d79626551f7cea84
Author: Omidiora Samuel <samparsky@gmail.com>
Date:   Tue May 22 19:46:47 2018 +0100

    Show net on home page and Reorder menu items (#478)

    This reorders the menu items, and adds the network name before "Chain State"

    - added Title that currently says Chain State to say MainNet Chain State
    - added menu switch between testnet and mainnet
    - reordered menu items

commit f4d1ac32f3b227aab26ef0b3629cfe0df2e630cd
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue May 15 22:34:36 2018 -0700

    update deps

commit 88a41243fcb18080e40b7e7c74b644f5d0007766
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Tue May 22 20:28:47 2018 +0200

    Add support for insight socket.io api (inv and dcrAddress rooms) (#405)

    This implements the websocket api described in https://github.com/bitpay/insight-api#web-socket-api. The objects used in this PR however are based on the results of the current insight server on mainnet.decred.org.

    Currently implemented:
    - tx event in inv room.
    - block event in inv room.
    - <dcrAddress> event in <dcrAddress> room.

commit 8c0308ed083bc8ac1dbdbfd03ab33aeccf028c57
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sat May 19 01:01:25 2018 -0700

    main: add optional gops agent and instrumentation

commit e22ff164f2e24e11c2b2fecd712821d008db7a43
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Thu May 10 18:49:41 2018 -0700

    notification: make each reorg handler indicate when it is finished

    Do not leave OnReorganization before each handler sets the reorg flag.

    Make reorg channels unbuffered.

commit e8239e94c16c27da4c84ab8f1e9a989d4c5b2b2e
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Sat May 12 01:52:18 2018 -0700

    add keyboard navigation

commit 2671e4c640b9b82bdebc2504a3c73d4357752833
Author: Mike <mikef@zenshows.com>
Date:   Fri May 11 11:38:45 2018 -0700

    dev funds zero (#461)

    This fixes dev funds on the main web page going to zero on websocket update.

    * Update rather than Re-instantiate ExtraInfo

commit 1bb5fb11b2efa701639666e41b7678e315c3b656
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Fri May 4 12:27:23 2018 -0700

    add missing night mode styling for flex table header bg & row borders

commit 7b90f2e2e1b1c2f08982d318588cf26c4c9fe4d1
Author: Jonathan Chappelow <chappjc@protonmail.com>
Date:   Thu May 3 11:18:44 2018 -0700

    README/dcrpg: update tuning info for PostgreSQL

commit 16af133b99880e643420b8fb8ad3bb05057c2abe
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Thu May 3 18:33:24 2018 -0700

    api: add coin supply (#458)

    This adds the /supply API endpoint and apitypes.CoinSupply.

    txhelpers/subsidy.go is added with the function UltimateSubsidy.

commit d3288e7ea631f3ad9fdadaec9005530f8083c435
Author: Mike <mikef@zenshows.com>
Date:   Tue May 1 19:30:41 2018 -0700

    Ticket Luck/Expiry/Probability Fixes  (#436)

    * various updates and fixes to ticket probability

    * formatting updates and removing hard coded reference to 5 in ROI calculation

    * possible vs final luck tweaks

    * Chance -> chance

    * Remove Luck from missed tickets, coinbase transactions maturity, vote days until mature

commit 64c410844d8763c06963d7b43953a3daa2614b64
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Tue May 1 19:14:22 2018 -0700

    refine hamburger menu style & animation (#454)

    This tweaks the hamburger menu style.
    * location of menu is aligned with page content
    * animation is changed
    * patty lengths tweaked
    * add global click handler to close hamburger menu when clicking off of it

commit e1c4f606aeab37e6171ee2677f701b89970c4c69
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Thu Apr 26 00:10:37 2018 -0700

    use flexbox & tx hash truncation for more compact mempool table on home page

commit 211773057c1caf5355c22a80da70e98e33e91dfc
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Tue May 1 00:46:47 2018 +0200

    Creating a chainparameters page (#397)

    This PR adds a "chain parameters" page that displays the data from dcrd's chaincfg/params.go.

commit 49b78722882ee865a9fa6e17ce2146097baaaa07
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Sun Apr 29 18:25:11 2018 -0700

    darken progress bar background for dark theme (#443)

commit 67402098fa9945a1a9f01f7ba2881330ce4cf482
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Apr 20 22:14:35 2018 -0700

    Add db_block_time to API JSON status response (#439)

    * Add db_block_time to API JSON status response

    * This also creates a version package for dcrdata, uses the proper app version in the status response, and bumps APIVersion to 1.

commit 97d31d619e2252bb951b11e0a96e094a45f81965
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Apr 20 21:24:12 2018 -0700

    api: Make full DB available, add address totals endpoint (#432)

    * add /address/{addr}/totals API endpoint
    The totals endpoint returns a 422 in lite mode.
    Add AddressTotals to api.DataSourceAux interface, and implement it in
    ChainDB via dcrpg.RetrieveAddressSpentUnspent.
    Add json tags to explorer.AddressBalance struct fields.
    Make a stub and TODO for the /address/.../raw/... endpoints.

    * Add apitypes.AddressTotals

    * add (pgb *ChainDB).addressBalance to check and update address cache
    Use addressBalance in AddressTotals to take advantage of general cache.

    * Use ChainDB.AddressTransactionDetails when not in lite mode

    * Avoid UpdateDevBalance during batch sync

    * cleanup, comments

    * fix "ready" field of StatusNtfnHandler

    * Add (d *DevFundBalance).Balance

    * Add DevFundBalance field to ChainDB

    * update license, remove refs to APIDataSource

    * Make explorer.sigNewTx event a Tracef

commit 8b8f60121a7d94d64cbbc4ae5e7576d7e1a01546
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Fri Apr 20 21:07:20 2018 -0700

    do not drop URL query params (#430)

    * fixes #408, dropped URL query params

    Use r.URL.RequestURI

    * ensure page parameters are set in AddressInfo even in lite mode

    * fix sent/received/unspent amounts in lite mode

    * get balance by db query if not using AddrTxnAll type

    * fix NumTransactions

commit 31f96a9d869e30960717b24c14135f94f65dc852
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Apr 20 11:43:11 2018 -0700

    views: delay websocket connection to mitigate churn

commit c3032fc0407c85161e6fbe28d9ca44ac47e422c4
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Apr 18 10:17:03 2018 -0700

    Unconfirmed transaction helpers, reworked CountUnconfirmedTransactions (#422)

    * Unconfirmed transaction helpers, reworked CountUnconfirmedTransactions

    Add func UnconfirmedTxnsForAddress.
    Updated AddressInfo type.

commit d74d00712e2b684fd4b315c13d75ac61af834e30
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Apr 18 08:47:48 2018 -0700

    explorer: do not block Store() when websocket hub is stuck

commit b205b76028c9310b6d70ca5a4d022e4b0d407997
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Apr 17 09:12:08 2018 -0700

    prevent deadlock of websocked event loop

    The channel send on sendBufferChan after addTxToBuffer were sending back to the event loop.

commit cfb2763a6c8e657dfe5556a7622e933418791b9c
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Apr 14 17:50:09 2018 -0700

    fix prepend to LatestTransactions (#428)

    fix indexing of LatestTransactions in mempoolMonitor

    handle non-nil, zero-length txns slice in storeMempoolInfo
    document mempoolMonitor
    create explorer.NumLatestMempoolTxns constant

commit c933ac431324001d382b541f7a13906296cf3c4c
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Wed Apr 4 01:05:15 2018 -0700

    restyle progress bars

commit a356c1f247a8424eb23d5f47759f47d0dbc7d1ad
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Apr 4 14:36:25 2018 -0700

    address page: credit/debit txn filter (#385)

    Support for credit/debit txn filter.

    * Create AddrTxnType, a Stringer.
    * separate TxnsFunding and TxnsSpending slices
    * Depending on URL query param value for txntype, use all or one of
    credits or debits txns slices.
    * refactor page size selector logic, fix txntype selection
    * explorer: set "Turbolinks-Location" header to include all URL queries
    using URL.RequestURI().
    * explorer: set addrData.TxnType.
    * address page: Add txntype={{.TxnType}} to forms that set the href.
    * address page: Still show, but disable, page size selector when too few
    txns.
    * explorer: add TxnCount method to AddressInfo to return either
    KnownTransactions or KnownFundingTxns depending on Fullmode.
    * Reorganize AddressInfo struct, document, and add KnownSpendingTxns
    * Add to AddressTx the field InOutID for the input or output index of the
    relevant transaction input/output.
    * Add (a *AddressTx).IOID() to format a string for the tx input/output.
    * fix address credit query
    * Update TxnCount to return KnownTransactions, KnownFundingTxns, or
    KnownSpendingTxns depending on TxnType.
    * Minimize use of .FullMode in address.tmpl
    * set ConfirmHeight in lite mode for address page
    * txhelpers: test for zero hash before getrawtransaction
    * add txhelpers.TxTree
    * no transaction type filter for address page when in lite mode

commit 6383c50f61e7742c096dc9bb13842132451e72b9
Author: Mike <mikef@zenshows.com>
Date:   Wed Apr 4 12:59:02 2018 -0700

    Hint for the index settings of dcrd.conf to work with dcrdata (#421)

    * Hint for the index settings of dcrd.conf to work with dcrdata

commit 757962a4966a0e366914ba0be486cac982d6cec8
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Tue Apr 3 16:00:32 2018 -0700

    add corresponding type names to API docs (#417)

    * README: add types to API endpoint tables

    api/types: apitypes.BlockTransactionCounts
    api: use apitypes.BlockTransactionCountsin getBlockTransactionsCount

commit a3c621fd98056284c8d38d261c269e61c6fb05d1
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Mar 30 23:08:53 2018 -0700

    explorer: close websocket

    include number of websocket clients in registering message

    do not log error when ws is just closed

    create explorer.ErrWsClosed string
    check in deferred closeWS, and in both send and receive loops

commit 8dbd44283cc561ae07d6d0cc0f0e1129535442b9
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Mar 29 14:12:37 2018 -0700

    notification: setup log, and document functions

commit d20645f4a18ea018c415f6c13affa1ebfa5115b2
Author: gozart1 <gozart1@users.noreply.github.com>
Date:   Thu Mar 29 12:01:35 2018 -0700

    update colors, table styles and header/footer in move towards new design (#403)

    * update colors, table styles and header/footer in move towards new design
    * hamburger menu
    * wire up menu links, dark theme menu, animate out

commit 4634901f8da3698dcb4c8104225b2a8293c1a374
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Wed Mar 28 09:44:18 2018 -0700

    explorer: avoid concurrent map access

    Each connection's (exp *explorerUI).RootWebsocket now stores a pointer
    to it's own client data.  Previously each connection had to look up
    this object in the WebSockethub client map, which was not thread-safe.

    Add type clientHubSpoke, which wraps the *client and the corresponding  *hubSpoke.
    Change WebsocketHub.Register from chan *hubSpoke to chan *clientHubSpoke
    Update (wsh *WebsocketHub).RegisterClient to return the *client, and
    send a *clientHubSpoke to the event loop, where registerClient will
    actually insert the client into the WebSockethub's client map.

commit 89f34b763842b27be212ee065a817aa0cbfcdf10
Author: girino <girino@users.noreply.github.com>
Date:   Mon Mar 26 21:18:54 2018 -0300

    Adds pagination to /address API (#412)

    Added pagination to /address/ API in the form /address/count/N/skip/M.
    NOTE: Still only using RPC.

commit fceece3987aaf2ab33593d33f9157575e9df6927
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Mon Mar 26 11:23:11 2018 -0700

    explorer/websocket: fix insane ping loop that was in websocket handler

    Remove the ping loop from each websocket connection handler, and create
    (wsh *WebsocketHub).pingClients() that is started from run().
    It returns a channel that stops the loop when closed.

commit 8984212e27e66685394b8248e56ae0355892e06b
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Sun Mar 25 18:33:28 2018 +0200

    Page size selector feature (#411)

    Only show valid options.  When Limit is equal to number of txns, handle the selection box.

commit bdcded664a1081c3d83953bfef0659e438b97bf8
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Sun Mar 25 18:29:27 2018 +0200

    pool status bug fix (#410)

    * pool status bug fix -- Do NOT show POOL STATUS for unconfirmed tickets (mempool tickets)

commit 1d927b959f856a6aa3dc8cf6dd60ff71532cbf9a
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Mar 22 20:39:57 2018 -0700

    add goreportcard.com badge

commit 1d3a285c0fd075150ad07b211381a78a831de6a0
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Thu Mar 22 20:33:37 2018 -0700

    README.md updates for 2.0

commit 2959d1151d971546479d9dec1937e23f56ccb325
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Mar 24 22:31:11 2018 -0700

    main: configure http.Server with ReadTimeout and WriteTimeout (#407)

    * main: configure http.Server with ReadTimeout and WriteTimeout

    * update copyright and comment wording

commit 1e8dbff83b2c99fed3d432ab058c308eef4e34c0
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Sat Mar 24 18:13:23 2018 -0700

    insight: rawblock endpoint (#402)

    * insight: implement rawblock

    doc reformatting

    * middleware: rewrite docs, simplifications

    remove GetBlockHashOnlyCtx since it was identical to GetBlockHashCtx

    rewrite more docs

    CRs

    * insight: organize router

commit c17aa352ee182f5649d430c9562f58519e2954a2
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sat Mar 17 11:54:47 2018 -0700

    html templates: Do not automatically request to enable desktop ntfns

    To enable desktop notifications, the user must click the connection
    indicator at the bottom right.

commit 6469f9223a924523e7a232961b8e7df33fd7750c
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Mar 11 08:37:46 2018 -0700

    main: check network is the expected one

commit d495aee8c4b500ec98d0ac60e9135716166b19f2
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Tue Mar 6 14:18:40 2018 -0800

    name go-humanize import

    Some linters are confused by the go-humanize import when it is missing
    an explicit name of the package, humanize.

commit a68fad99ecea0c723672a6efe21ae2b57b17a8dc
Author: Omidiora Samuel <samparsky@gmail.com>
Date:   Tue Mar 20 05:00:42 2018 +0100

    Insight api endpoints (#350)

    implmented insight api routes

    implemented transaction hex routes, blocksummary, blockhash in insight api package

    implemented txns routes for multiple addresses, by block, address, post method for multiple addresses

    added log file to insight api package

    implemented get blocks routes.

    Implemented get address info routes

    added insightaddress info json struct

    updated the implementation of retreiving blocks based on time range

    implemented psql queries for rawtx, blockhash

    implemented rpc calls for postgres implementation

    implemented get address info on, retrieve block summary using time range, address utxo on postgresql

    created api package

    implemented notification package

    updated implementation of middleware package

commit 3dc9d94def3a4dc9779726c6627dceadbdeeca50
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Mar 18 16:12:11 2018 -0700

    fix ShowVersion (V/version) flag

    add copyright notices

commit 113a83489b1aa2ad40ff16137fc3dcd4f47279a9
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Fri Mar 16 16:22:10 2018 -0700

    ChainDB/rebuilddb2: add to ChainDB the ability to set a StakeDatabase

    Modify rebuilddb2 to load the stake db (and ticket pool db) *after*
    creating the ChainDB so that it is not necessary to load the ticket pool
    db when only using ChainDB to drop tables.

    Add "rebuild_data/" to .gitignore.

commit d3e87cfbcf546b9640e99b117f922cdb3e412c89
Author: Jonathan Chappelow <jonathan.chappelow@gmail.com>
Date:   Sun Mar 11 09:17:02 2018 -0700

    Update README.md files for syntax changes

    There is no longer a -u flag for rebuilddb2.

    dcrdata.conf lives in appdata now.

    Remind developers to update dep prior to committing changes to Gopkg.lock

    Cleanup and wrapping

commit 2297e0b208d82a3dd73325b051f18e0d888356fd
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Fri Mar 16 02:23:25 2018 +0100

    explorer: refactor the explorer templates so they are easier to manage (#395)

    This simplifies the way the template files are handled by explorerUI by moving all the current template logic and types to templates.go where the templates are handled by the templates and pageTemplate types. Now adding a new template should be as simple as adding an name of the file sans "tmpl" extension into the tmpl slice in explorer.New.

commit d2886d57701b1ce2022b4454eabc91206cb8cbac
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Mar 14 22:40:19 2018 -0700

    main: prevent hang after reindex (#391)

commit 322ac503864babda26a1f9a24d2d17ac83ecd1b0
Author: Jonathan Chappelow <chappjc@users.noreply.github.com>
Date:   Wed Mar 14 21:30:23 2018 -0700

    do not request previous vout extra data when just counting transactions (#394)

commit f2d65af0a4b838ab94fc7ad59cfc681ef2bbb94d
Author: Macaulay Davies <mac114.md@gmail.com>
Date:   Wed Mar 14 00:25:50 2018 +0100

    ticket page: luck and additional data (#361)

    Add a LUCK data item for each ticket, on a scale from 0 to 5, 5 being best, 0 worst, 4 average.
    Update decred deps in Gopkg.lock.

commit 81e4a8f70c146a374e0810c3a4c2dedbb710133d
Author: Alawode Oluwandabira <dabiraalawode@yahoo.com>
Date:   Mon Mar 12 22:37:09 2018 +0100

   …
mkingori pushed a commit to mkingori/dcrdata that referenced this pull request Apr 9, 2020
This changes how StakeDatabase gets the live ticket pool and the diffs (in/out) for each block in ConnectBlock.

The liveTicketCache in StakeDatabase is now a faithful representation of the live ticket pool at the current best block. So when the live ticket list is needed, it is no longer necessary to use the stake.Node (BestNode.LiveTickets()).

Add poolValue int64 to StakeDatabase, updating it on connect/disconnect via += / -+ for the pool in/out tickets.

A major optimization in ConnectBlock is using the new ExpiredByBlock function in dcrd/stake instead of the much more costly ExistsExpiredTicket and ExistsRevokedTicket. This requires dcrd PR decred/dcrd#1221.

Improve the process of "Pre-populating live ticket cache..." by prefetching the tickets from the stake BestNode (dcrdata's best node) rather than asking dcrd for it's idea of the live ticket pool. This ensures liveTicketCache will always contain an accurate ticket pool.

Avoid LiveTickets() during sync.

Add FilterHashSlice utility function.

Update test data for new stakedb_ticket_pool.db

disconnectBlock applies diffs in reverse

-Keep liveTicketCache and poolValue correct when disconnecting a block.
-Recovery from mismatching stake DB and ticket pool heights now can roll
back stake DB in addition to trimming the ticket pool.
-Extract code into (db *StakeDatabase).applyDiff, and crate undoDiff
that applies a PoolDiff in reverse via applyDiff.
-No longer use BestNode.LiveTickets() in PoolInfoBest. Use makePoolInfo
and db.poolValue.
-(tp *TicketPool).Trim and trim now also return the trimmed PoolDiff.

update Gopkg.lock for dcrd with ExpiredByBlock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants