* [NOD-270] Added notifyChainChanges and related commands.
* [NOD-270] Added NTChainChanged to blockdag.
* [NOD-270] Implemented collection and sending of ChainChanged notifications.
* [NOD-270] Fixed an improperly named test.
* [NOD-270] Added a test: TestChainChangedNotification.
* [NOD-270] Fixed a couple copy+paste errors.
* [NOD-270] Added a couple of comments for TestChainChangedNotification.
* [NOD-270] Fixed formatting error.
* [NOD-270] Fixed a comment.
* [NOD-270] Uncoupled chain updates inside blockdag from the concept of a notification.
* [NOD-270] Removed intermediary ChainUpdates object from ChainChangedNotificationData.
* [NOD-269] Added a skeleton for getChainFromBlock.
* [NOD-269] Made startHash and includeBlocks optional.
* [NOD-269] Implemented chainBlock collection.
* [NOD-269] Extracted GetBlockVerboseResult building to its own method.
* [NOD-269] Implemented the IncludeBlocks part of GetChainFromBlock.
* [NOD-269] Added a comment for NewGetChainFromBlockCmd.
* [NOD-269] Made IsInSelectedPathChain return an error.
* [NOD-269] Fixed a very wrong comment.
* [NOD-269] Made SelectedPathChain allocate only the required amount of space.
* [NOD-269] Renamed pathChain to parentChain.
* [NOD-269] Split handleGetChainFromBlock to separate functions.
* [NOD-269] Fixed some grammar.
* [NOD-191] Added selectedPathChainSlice to virtualBlock.
* [NOD-191] Implemented acceptingBlock().
* [NOD-191] Implemented confirmations().
* [NOD-191] Added selectedPathChainSlice tests to TestSelectedPath.
* [NOD-191] Fixed a bug in acceptingBlock(). Written tests for confirmations().
* [NOD-191] Written tests for acceptingBlock().
* [NOD-191] Added test to make sure that acceptingBlock(tip) returns the virtual block.
* [NOD-191] Added a panic if we somehow feed a childless block that isn't the virtual to acceptingBlock.
* [NOD-191] Fixed comments.
* [NOD-191] Fixed a bug in acceptingBlock. Added red block tests for acceptingBlock.
* [NOD-191] Added red block tests for confirmations.
* [NOD-191] Fixed misleading comment and error message.
* [NOD-58] Replace lastBlock with selected tip in version message (#210)
* [NOD-58] Replace lastBlock with selected tip in version message
* [NOD-58] Fix typo in comment
* [NOD-58] Add mutex to SelectedTipHash
* [NOD-58] Remove redundant comment
* [NOD-58] Remove wantStartingHeight from peerStats
* [NOD-58] Remove lock from SelectedTipHash
* Nod 53 change getheaders message to handle new block locator (#213)
* [NOD-53] Change getheaders message to handle the new block locator mechanism
* [NOD-53] Use heap in locateHeaders
* [NOD-53] Create a constructor for each heap direction
* [NOD-57] Check if a node is synced only by timestamps (#214)
* [NOD-60] implement isSyncCandidate (#218)
* [NOD-60] Implement isSyncCandidate
* [NOD-60] Fix typo
* [NOD-65] Fix netsync related tests and remove fields optionality from… (#220)
* [NOD-65] Fix netsync related tests and remove fields optionality from msgversion
* [NOD-65] gofmt rpcserver.go
* [NOD-65] add missing test for verRelayTxFalse
* [NOD-62] Change getblocks message to handle the new block locator mechanism (#219)
* [NOD-62] Change getblocks message to handle the new block locator mechanism
* [NOD-62] Add locateBlockNodes function
* [NOD-68] Adjust orphan parents requesting for a DAG (#222)
* [NOD-68] Adjust orphan parents requesting for a DAG
* [NOD-68] add sendInvsFromRequestedQueue and trigger it when requested blocks slice is empty, or immediatly if we're not in sync mode
* [NOD-68] Prevent duplicates from entering to state.requestQueue and add wrapping locks to addBlocksToRequestQueue
* [NOD-68] Fix Lock -> Unlock in sendInvsFromRequestedQueue
* [NOD-74] Starts syncing again when the current sync peer is done (#225)
* [NOD-74] Starts syncing again when the current sync peer is done
* [NOD-74] Unlock mtx before netsync is restarted
* [NOD-74] Fix name isSyncPeerFree -> isWaitingForBlocks
* [NOD-75] fixing netsync bugs (#227)
* [NOD-74] Starts syncing again when the current sync peer is done
* [NOD-74] Unlock mtx before netsync is restarted
* [NOD-75] Fixing netsync bugs
* [NOD-80] Request block data from block propagation just after you are… (#231)
* [NOD-80] Request block data from block propagation just after you are current
* [NOD-80] Fix adding to both queues in addInvToRequestQueue
* [NOD-81] Start to mine on top of genesis iff all peers selected tip is genesis (#232)
* [NOD-81] Start to mine on top of genesis only if all of your peers' selected tip is genesis
* [NOD-81] Explain forAllPeers/forAllOutboundPeers shouldContinue behaviour in comments
* [NOD-81] Add forAllInboundPeers and add return values for forAllPeers/forAllOutboundPeers/forAllInboundPeers functions
* [NOD-16] Add pushSet to the BlockHeap type
* [NOD-16] Fixed syntax error
* [DEV-303] Implement block finality
* [DEV-303] Add finality tests
* [DEV-303] Make finality tests use maybeAcceptBlock
* [DEV-303] Only check finality rules if we are fastAdd mode
* [DEV-303] replace hasBiggerFinalityScoreThan checks with .finalityScore()
* [DEV-301] implement blockNode.chainHeight as the height of the selected parent chain
* [DEV-301] add description to TestChainHeight
* [DEV-301] Delete comment on TestChainHeight and expalain about the dag
* [DEV-234] add TxAcceptedInBlock and TxBlocks
* [DEV-234] test TxAcceptedInBlock and TxBlocks
* [DEV-234] test TxAcceptedInBlock and TxFirstBlockRegion
* [DEV-234] rename selectedPathSet to selectedPathChain
* [DEV-234] set indexers db as part of index manager initialization
* [DEV-234] remove redudant dag instance in txindex
* [DEV-234] fix TestTxIndexConnectBlock and add DAGParams as part of config in DAGSetup
* [DEV-234] TestTxIndexConnectBlock make K=1 to make calculations easier
* [DEV-234] rename TxAcceptingBlock to BlockThatAcceptedTx
* [DEV-234] update block fields names in txindex_test.go
* [DEV-234] rename selectedPathChain -> selectedPathChainSet
* [DEV-201] In handleGetBlockDAGInfo calculate difficulty by the tip with the lowest bits
* [DEV-202] Move VirtualBlock.GetUTXOEntry to BlockDAG
* [DEV-203] Move VirtualBlock.SelectedTip() to BlockDAG
* [DEV-203] Move VirtualBlock.SelectedTip() to BlockDAG
* [DEV-204] Unexport VirtualBlock() and add CalcMedianTime method for DAG
* [DEV-204] add explanation about difficulty in CurrentBits() comment
* [DEV-204] unexport VirtualBlock type
* [DEV-75] Removed fetchEntryByHash, which was no longer used.
* [DEV-75] Removed a few functions in manager.go that weren't used by anything.
* [DEV-75] checkConnectBlock will soon not accept a utxoViewpoint, so removed the call to view.Tip() so that it could be deleted.
* [DEV-75] Got rid of tips in UtxoViewpoint.
* [DEV-75] Added the full UTXO set to the virtual block.
* [DEV-75] Implemented UTXO-wrangling when adding a new block.
* [DEV-75] Added isCoinbase to utxoEntry creation.
* [DEV-75] Added blockHeight to utxoEntry creation.
* Implemented fetching the fullUTXOSet from the database.
* [DEV-75] Simplified DAGState because almost all of the state in it was unnecessary. Also got rid of dbDAGState.
* [DEV-75] Made the process around adding a new block, UTXO-wise, much safer.
* [DEV-75] Implemented melding the virtual UTXO diff to the database.
* [DEV-75] Fixed utxoSet loading from the wrong bucket.
* [DEV-75] Began pruning utxoviewpoint.go. Replaced FetchUtxoEntry with a fullUTXOSet-based GetUTXOEntry.
* [DEV-75] Removed fetchUtxos.
* [DEV-75] Moved GetUTXOEntry into the virtual block.
* [DEV-75] Updated IndexManager to not use utxoViewpoints.
* [DEV-75] Fixed some bad login in restoreUTXO involving nodeDiffs.
* [DEV-75] Got rid of the UTXO spend journal, which wasn't used anywhere.
* [DEV-75] Moved some STXO-related validation logic out of connectToDAG and into checkConnectBlock.
* [DEV-75] Renamed UtxoXxx to UTXOXxx. Removed a bunch of methods that were no longer used by anything.
* [DEV-75] Another Utxo -> UTXO rename.
* [DEV-75] Removed IsModified from UTXOView, which was not used anywhere.
* [DEV-75] Renamed nodeDiff to provisionalNode. Added a bunch of comments.
* [DEV-75] Removed the test for genesis in pastUTXO, since it can never happen.
* [DEV-75] Wrote tests for errors in pastUTXO.
* [DEV-75] Wrote tests for errors in restoreUTXO.
* [DEV-75] Improved testErrorThroughPatching.
* [DEV-75] Wrote tests for errors in verifyAndBuildUTXO.
* [DEV-75] Used TipHashes instead of tips().hashes(), fixed comments in a few places, and brought back an error return that I erroneously removed.
* [DEV-75] Removed UTXO set logs.
* [DEV-75] Recreated add/remove/contains functions for utxoCollection.
* [DEV-75] Changed newUTXOEntry to use an object initializer.
* [DEV-75] Changed the UTXO bucket version to 1.
* Added a comment that clarifies that the index is not initialized before initDAGState is called.
* [DEV-75] Renamed GetVirtualBlock to VirtualBlock.
* [DEV-75] Removed superfluous variables.
* [DEV-75] Combined connectBlockToParents with updateParentsDiffs.
* [DEV-75] Removed another superfluous variable.
* [DEV-75] In pastUTXO, first fetch transactions from the database and only then add them.
* [DEV-75] Reworded the comment for commit().
* [DEV-75] Made all the connectUTXO subfunctions not BlockDAG methods.
* [DEV-75] Updated the comment for connectUTXO.
* [DEV-75] Updated the comment explaining why we're creating provisionalNodes.
* [DEV-75] Removed a couple of unnecessary calls to toProvisionalNode.
* [DEV-75] Renamed connectUTXO to applyUTXOChanges.
* [DEV-75] Replaced allProvisionalNodes with provisionalNodeSet, an object that holds provisionalNodes for this particular call to applyUTXOChanges.
* [DEV-75] Changed createProvisionalNode to accept a boolean "withParents" instead of relying on the caller to supply the node's parents or an empty set.
* [DEV-75] Made most applyUTXOChanges subfunctions be methods on provisionalNode.
* [DEV-75] Fixed a couple of bad comments.
* [DEV-75] Added descriptive error messages to callers of applyUTXOChanges.
* [DEV-75] Fixed weird English.
* [DEV-75] Replaced DAGState with a slice of DAG tip hashes.
* [DEV-75] In createProvisionalNode, changed withParents to withRelatives to avoid certain kinds of attacks.
* [DEV-75] Renamed createdProvisionalNode to newProvisionalNode.
* [DEV-75] Added precalculating the amount of transactions inside a new block's blue set.
* [DEV-75] Pruned unnecessary variable.
* [DEV-74] Implemented and written tests for utxoIterator.
* [DEV-74] Improved utxoIterator tests.
* [DEV-74] Implemented utxoCollection tests.
* [DEV-74] Implemented utxoDiff and its tests.
* [DEV-74] Implemented utxoSet.
* [DEV -74] Added tests for fullUTXOSet.
* [DEV-74] Added some tests for diffUTXOSet.
* [DEV-74] Wrote tests for diffUTXOSet iterator.
* [DEV-74] Added a negative test for diffUTXOSet.withDiff.
* [DEV-74] Wrote tests for addTx.
* [DEV-74] Wrote a toRemove test for addTx.
* [DEV-74] Changed blockNode.utxoDiff to be of type utxoDiff.
* [DEV-74] Removed superfluous whitespace.
* [DEV-74] Renamed confusing "previousHash" to "hash".
* [DEV-74] Fixed bad test and corrected failing test.
* [DEV-74] Moved confusing "negatives" test to be part of the general utxoCollection test.
* [DEV-74] Removed utxoDiff.inverted.
* [DEV-74] Renamed blockNode.utxoDiff to blockNode.diff.
* [DEV-74] Renamed diff to diffFrom for clarity's sake.
* [DEV-74] Converted the type of utxoCollection from map[daghash.Hash]map[uint32]*wire.TxOut to map[wire.OutPoint]*UtxoEntry.
* [DEV-74] Corrected test names in utxoCollection_test.
* [DEV-74] Removed superfluous utxoCollection iterator and moved utxoIterator into utxoset.go.
* [DEV-74] Renamed variables in utxoset.go.
* [DEV-74] Renamed verifyTx to areInputsInUTXO and removed a superfulous test.
* [DEV-74] Fixed bad test logic in TestDiffUTXOSet_addTx.
* [DEV-74] Added a few comments. Added reference-equals checks to clone functions.
* [DEV-74] Moved utxoCollection and utxoDiff into utxoset.go.
* [DEV-74] Wrote explanations for utxoCollection and utxoDiff tests.
* [DEV-74] Wrote explanations for all utxoSet tests besides addTx.
* [DEV-74] Wrote explanations for TestDiffUTXOSet_addTx.
* [DEV-74] Moved the documentation for utxoDiff into utxoset.go.
* [DEV-74] Wrote an explanation on utxoSet.
* [DEV-75] Found a typo.
* [DEV-75] Renamed dag -> virtual, dagView -> virtualBlock.
* [DEV-75] Renamed newDAGView to newVirtualBlock.
* [DEV-75] Moved queries for the genesis block from virtualBlock to BlockDAG.
* [DEV-75] Got rid of chainView height and findFork.
* [DEV-75] Renamed receivers from c to v.
* [DEV-75] Updated initBlockNode to allow for virtual (headerless) nodes, updated dbDAGState to contain multiple tip hashes, implemented virtualBlock.setTips.
* [DEV-75] Got rid of virtualBlock.equals, which was not used anywhere.
* [DEV-75] Got rid of virtualBlock.tip().
* [DEV-75] Got rid of SetTip everywhere except for tests.
* [DEV-75] Got rid of Next().
* [DEV-75] Got rid of Contains().
* [DEV-75] Got rid of HeightRange(), as no one was using it.
* [DEV-75] Made verifyDAG in rpcserver.go not use block height for iteration.
* [DEV-75] Got rid of the part of Manager.Init() that handled "catching up" for side chains, which allowed me to get rid of BlockDAG.BlockByHeight().
* [DEV-75] Dropped support for the RPC command getblockhash since it was getting blocks by their height.
* [DEV-75] Dropped getnetworkhashps since it was reliant on height, fixed another couple of RPC commands to return nextHashes instead of a nextHash, and got rid of nodeByHeight in virtualBlock.
* [DEV-75] Got rid of setTip().
* [DEV-75] Moved blockLocator() out of virtualBlock and into BlockDAG. Also removed TestLocateInventory().
* [DEV-75] Implemented addTip().
* [DEV-75] Cleaned up virtualblock.go a bit.
* [DEV-75] Erased irrelevant tests in virtualblock_test.go. Moved dag-related tests into dag_test.go.
* [DEV-75] Removed unnecessary nil check.
* [DEV-75] Wrote tests for virtualBlock.
* [DEV-75] Fixed bad test, added explanations to tests.
* [DEV-89] Fixed a comment.
* [DEV-89] Fixed another comment.
* [DEV-89] Removed the section in Manager::Init that handled rolling back indexes to the main chain if their tip is an orphaned fork. This could only happen during reorg, which no longer exists. Also removed BlockDAG::MainChainHasBlock, which was no longer used by anyone.
* [DEV-89] Removed the nil check inside initBlockNode() and amended the one place that called it with nil.
* [DEV-89] Renamed the receiver param for BlockDAG from b to dag.
* [DEV-89] Moved fastLog2Floor from dag.go to btcutil/btcmath.go.
* [DEV-89] Renamed tstTip to testTip.
* [DEV-89] Renamed phanom_test.go to phantom_test.go.
* [DEV-89] Fixed comments, renamed mainChainHeight to dagHeight.
* [DEV-89] Rewrote virtualBlock.addTip().
* [DEV-89] Fixed a comment. (chain -> DAG)
* [DEV-89] Fixed another chain -> DAG comment.