* [DEV-134] Implement Continuous Integration
Squashed commit:
[5e41d830] Dev 223 fix txindex (#100)
* [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-223] make applyUTXOChanges return pastUTXOResults
* [DEV-223] add bluestxdata for current block as well
* [DEV-223] re-design tx index
* [DEV-223] edit txindex comments
* [DEV-223] rename BluesTxData -> AcceptedTxData, and return from applyUTXOChanges only transactions that got accepted
* [DEV-223] add unit test for txindex
* [DEV-223] fix comments and unite blueTransaction and AcceptedTxData to one type
* [DEV-223] use bucket cursor for dbFetchFirstTxRegion
* [DEV-223] use the same cursor instance for dbFetchFirstTxRegion
* [DEV-223] write in dbFetchFirstTxRegion's comment that it returns the first block region
* [DEV-223] rename type BlueBlockTransaction to TxWithBlockHash
* [DEV-223] add named returned value for applyUTXOChanges
[4c95e293] [DEV-134] Made golint ignore the vendor directory.
[21736dbc] [DEV-134] Renamed ExampleBlockChain_ProcessBlock to ExampleBlockDAG_ProcessBlock to satisfy go vet.
[beea6486] [DEV-134] Removed pushing the built docker to a remove repository. That's unnecessary at this stage.
[bee911ed] [DEV-134] Made all precompilation checks run on everything instead of only the root dir.
[585f92ae] [DEV-134] Added "github.com/pkg/errors" to dep.
[5f02f570] [DEV-134] -vendor-only is written with only one hyphen.
[3eee7f95] [DEV-134] go vet instead of go tool vet.
[0c2d4343] [DEV-134] Split all the pre-compile checks to separate lines to be able to tell which of them is failing.
[780519c8] [DEV-134] Ran gofmt on everything.
[8247146b] Dev 223 fix txindex (#100)
* [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-223] make applyUTXOChanges return pastUTXOResults
* [DEV-223] add bluestxdata for current block as well
* [DEV-223] re-design tx index
* [DEV-223] edit txindex comments
* [DEV-223] rename BluesTxData -> AcceptedTxData, and return from applyUTXOChanges only transactions that got accepted
* [DEV-223] add unit test for txindex
* [DEV-223] fix comments and unite blueTransaction and AcceptedTxData to one type
* [DEV-223] use bucket cursor for dbFetchFirstTxRegion
* [DEV-223] use the same cursor instance for dbFetchFirstTxRegion
* [DEV-223] write in dbFetchFirstTxRegion's comment that it returns the first block region
* [DEV-223] rename type BlueBlockTransaction to TxWithBlockHash
* [DEV-223] add named returned value for applyUTXOChanges
[bff68aa3] [DEV-134] Gave executable permission to deploy.sh
[638a99d9] [DEV-134] Added jenkinsfile and deploy script.
* [DEV-134] Added a robust testing script.
* [DEV-134] Fixed a bash-ism.
* [DEV-134] Disabled testing with coverage for now.
* [DEV-134] Disabled golint and removed removing debug symbols.
* [DEV-134] Disabled aligncheck.
* [DEV-134] Disabled structcheck and varcheck.
* [DEV-134] Added "don't inline functions" to compiler flags for testing.
* [DEV-134] Made build fail if gofmt prints out anything.
* [DEV-134] Fixed misleading comment.
* [DEV-134] Added comments to test.sh.
* [DEV-134] Renamed tm to measure_runtime and removed do_ prefixes from functions.
* [DEV-134] Fixed gofmt line in build script.
* [DEV-134] Fixed gofmt some more.
* [DEV-134] Fixed gofmt not actually failing due to logical or.
* [DEV-222] Changed type of TxOut.Value and util.Amount to uin64
* [DEV-222] Replaced math.MaxUint64 with 0
* [DEV-222] Fixed comment to reflect uint64 instead of int64
* [DEV-222] Fixed overflow comment
* [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-206] allow block timestamp to be equal to past median time
* [DEV-206] make more specific error messages
* [DEV-206] make independent nodes in TestPastMedianTime
* [DEV-149] Add test case for CVE-2018-17144 (Bitcoin DoS/Double Spend bug)
* [DEV-149] change t.Errorf + return to t.Fatalf
* [DEV-149] fix malformed blocks
* [DEV-149] change test blocks to use simnet genesis
* [DEV-189] invert arguments order or daghash.Less
* [DEV-189] invert arguments order of daghash.Less in blockset.highest
* [DEV-189] change to equivalent condition in Hash.Less to make it prettier
* [DEV-66] fix endless loop in validateParents
* [DEV-166] add TestValidateParents
* [DEV-166] use generateNode in TestValidateParents to avoid repetition
* [DEV-166] use blockDAG.genesis instead of blockDAG.virtual.SelectedTip()
* [DEV-105] use utxodiff in mempool instead of utxoview
* [DEV-105] get rid of utxoview
* [DEV-105] fix tests to use utxoset
* [DEV-105] remove utxoview type
* [DEV-105] move DagSetup to test_utils.go
* [DEV-105] add comments and add blockdag/test_utils_test.go
* [DEV-105] add restoreInputs arg to removeTransaction
* [DEV-105] give more descriptive names to vars
* [DEV-115] close txChan outside of HandleNewBlock
* [DEV-105] rename DagSetup -> DAGSetup
* [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-107] Disallow situation where a parent is also an ancestor of another parent
* [DEV-107] Add comment for validateParents
* [DEV-107] move validateParents to checkBlockContext
* [DEV-107] break validateParents error to 2 lines
* [DEV-107] remove TestProcessBlock
* [DEV-107] fix comment that explains block 3c test
* [DEV-107] remove blk_3C from TestCheckConnectBlockTemplate
* [DEV-98] Move script flags from relay rules to consensus
* [DEV-98] remove flags from script_tests.json
* [DEV-98] fix multisig and remove test that assume no minimal data rule
* [DEV-98] rename bip16 bool to isP2sh
* [DEV-98] add sighash type to overly long signature in script_tests.json
* [DEV-98] add test for NUMEQUAL for non equal numbers script_tests.json
* [DEV-98] remove debugging if
* [DEV-98] remove ErrCleanStack from EVAL_FALSE
* [DEV-98] change isP2sh to isP2SH to comply with Go style
* [DEV-98] add ScriptNoFlags to explictly indicate for empty ScriptFlags
* [DEV-98] rename ErrPubKeyType -> ErrPubKeyFormat
* [DEV-98] rename PUBKEYTYPE -> PUBKEYFORMAT
* [DEV-97] Moved github.com/daglabs/btcutil into github.com/daglabs/btcd/btcutil.
* [DEV-97] Updated Gopkg.toml to no longer refer to btcutil.
* [DEV-97] Renamed btcutil to util.
* [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.
* [DEV-62] add phantom constructs to blocknode
* [DEV-62] add phantom constructs to blocknode
* [DEV-72] write blues()
* [DEV-72] write blues()
* [DEV-72] write blues()
* [DEV-62] add comments to new phantom constructs in blocknode
* Fixed dbIndexConnectBlock. (#33)
* Fixed dbIndexConnectBlock.
* Removed redundant check in storeFilter.
* Created a new method to BlockHeader: IsGenesis.
* [DEV-71] Implement BlockHeap (#35)
* [DEV-71] Implemented BlockHeap.
* [DEV-71] Removed irrelevant comment.
* [DEV-71] Renamed variables in Pop() and split Less() to multiple lines.
* [DEV-72] write blues()
* [DEV-72] write blues()
* [DEV-72] write blues()
* [DEV-72] write blues tests
* [DEV-72] write blues tests
* [DEV-72] remove relevant past
* [DEV-72] write blues tests
* [DEV-72] write blues tests
* [DEV-72] write blues tests
* [DEV-72] write functions to order blockSet by hash and write blue tests
* [DEV-72] add secret mining and censorship attack tests
* [DEV-72] remove prints
* [DEV-72] remove K from dagconfig.Params
* [DEV-72] remove K from dagconfig.Params
* [DEV-72] change blueScore to uint64
* [DEV-72] block V was missing, so renamed w -> v, x -> w etc
* [DEV-72] use node.String instead of %v
* [DEV-72] block V was missing, so renamed w -> v, x -> w etc
* [DEV-72] add K to dagconfig.Params, and add expected reds to all phantom tests
* [DEV-72] set K=10 and add comments to phantom and phantom tests
* [DEV-72] fix formatting and add comments to TestPhantom
* [DEV-72] fix grammar
* [DEV-65] Renamed BestState to State and GetSnapshot to GetCurrentState.
* [DEV-65] Implemented State and SelectedTip, updated dagState (the serializable version of State), and updated State creations.
* [DEV-65] Fixed references to GetCurrentState and fixed tests.
* [DEV-65] Renamed State to DAGState, corrected comments, created a new thread-safe method setDAGState, fixed broken references I missed.
* [DEV-65] Converted dagState (the object) to dbDAGState, and made it serialize/deserialize into/out of JSON.
* [DEV-65] Renamed Txns to Txs and fixed a couple of comments.
* [DEV-65] Renamed some more "Txns" and removed some dead code.
* [DEV-45] Updated the BlockDB files to contain blocks that could be deserialized.
* [DEV-45] Fixed TestHaveBlock (finally)
* [DEV-45] Fixed TestLocateInventory and everything that's reliant on chainview_test::chainedNodes.
* [DEV-45] Fixed TestChainViewNil.
* [DEV-45] Fixed TestNotifications.
* [DEV-45] Fixed ExampleBlockChain_ProcessBlock.
* [DEV-45] Fixed TestCheckBlockScripts.
* [DEV-45] Fixed TestCheckConnectBlockTemplate.
* [DEV-45] Renamed the BlockDBs to their original names.
* [DEV-45] Skipping TestFullBlocks for until we have implemented Phantom.
* [DEV-45] Deleted a couple of methods that are no longer used. (They were previously used for reorganization)