* Convert BlockGHOSTDAGData from an interface to a public struct with getters
* Move hashes.Less to externalapi so it can access the hashes directly without copying
* Reduce calls to ghostdagstore.Get in blueWindow
* Simplify the logic in RequiredDifficulty and reuse big.Int
* Remove bigintpool as its no longer used
* Use ChooseSelectedParent in RequiredDifficulty instead of looping over the parents
* Remove comment
* bug invalidateAndInsertPruningPoint: if ValidateAndInsertBlock returned a non-RuleError error - the error was ignored
* Convert checkNoPrefilledFields into checkNoPrefilledInputs
* Add log line
* clone pruning point when passing to validateBlockTransactionsAgainstPastUTXO
* Add a field to TransactionAcceptanceData: TransactionInputUTXOEntries.
* Fix failing tests.
* Add transactionInputUtxoEntries to the database.
* Populate transactionInputUTXOEntries in applyMergeSetBlocks and use them in the UTXO index.
* Remove UTXOEntry.Clone().
* Add an additional equality test.
* if more candidates then max, choose half with highest blueWork and half with lowest
* Add a Test GhostDAG sorter
* Add a test for pick virtual parents
* Fix review nits
* 1) Calculate pruning point incrementally
2) Add IsValidPruningPoint to pruning manager and consensus
3) Use reachability children for selected child iterator
* Add request IBD root hash flow
* Fix UpdatePruningPointByVirtual and IsValidPruningPoint
* Regenerate messages.pb.go
* Make the pruning point the earliest chain block with finality interval higher than the previous pruning point
* Fix merge errors
* [NOD-1575] Implement Clone and Equal for all model types
* [NOD-1575] Add assertion for transaction ID equality
* [NOD-1575] Use DomainTransaction.Equal to compare to expected coinbase transaction
* [NOD-1575] Add TestDomainBlockHeader_Clone
* [NOD-1575] Don't clone nil values
* [NOD-1575] Add type assertions
* [NOD-1575] Don't clone nil values
* [NOD-1575] Add missing Equals
* [NOD-1575] Add length checks
* [NOD-1575] Update comment
* [NOD-1575] Check length for TransactionAcceptanceData
* [NOD-1575] Explicitly clone nils where needed
* [NOD-1575] Clone tx id
* [NOD-1575] Flip condition
* Nod 1576 make coverage tests for equal clone inside model externalapi (#1177)
* [NOD-1576] Make coverage tests for equal and clone inside model and externalapi
* Some formatting and naming fixes
* Made transactionToCompare type exported
* Added some tests and made some changes to the tests code
* No changes made
* Some formatting and naming changes made
* Made better test coverage for externalapi clone and equal functions
* Changed expected result for two cases
* Added equal and clone functions tests for ghostdag and utxodiff
* Added tests
* [NOD-1576] Implement reachabilitydata equal/clone unit tests
* [NOD-1576] Full coverage of reachabilitydata equal/clone unit tests
* Made changes and handling panic to transaction_equal_clone_test.go and formating of utxodiff_equal_clone_test.go
* Added recoverForEqual2 for handling panic to transaction_equal_clone_test.go
* [NOD-1576] Full coverage of transaction equal unit test
* [NOD-1576] Add expects panic
* [NOD-1576] Allow composites in go vet
* [NOD-1576] Code review fixes (#1223)
* [NOD-1576] Code review fixes
* [NOD-1576] Code review fixes part 2
* [NOD-1576] Fix wrong name
Co-authored-by: karim1king <karimkaspersky@yahoo.com>
Co-authored-by: Ori Newman <orinewman1@gmail.com>
Co-authored-by: Karim <karim1king@users.noreply.github.com>
* Fix merge errors
* Use Equal where possible
* Use Equal where possible
* Use Equal where possible
Co-authored-by: andrey-hash <74914043+andrey-hash@users.noreply.github.com>
Co-authored-by: karim1king <karimkaspersky@yahoo.com>
Co-authored-by: Karim <karim1king@users.noreply.github.com>
* Get rid of insertMode
* Rename AddBlockToVirtual->AddBlock
* When F is not in the future of P, enforce finality with P and not with F.
* Don't allow blocks with invalid parents or with missing block body
* Check finality violation before checking block status
* Implement CalculateIndependentPruningPoint
* Move checkBlockStatus to validateBlock
* Add ValidateBlock to block processor interface
* Adjust SetPruningPoint to the new IBD flow
* Add pruning store to CSM's constructor
* Flip wrong condition on AddHeaderTip
* Fix func (hts *headerSelectedTipStore) Has
* Fix block stage order
* Call to ValidateBodyInContext from validatePostProofOfWork
* Enable overrideDAGParams
* Update log
* Rename SetPruningPoint to ValidateAndInsertPruningPoint and move most of its logic inside block processor
* Rename hasValidatedHeader->hasValidatedOnlyHeader
* Fix typo
* Name return values for fetchMissingUTXOSet
* Add comment
* Return ErrMissingParents when block body is missing
* Add logs and comments
* Fix merge error
* Fix pruning point calculation to be by virtual selected parent
* Replace CalculateIndependentPruningPoint to CalculatePruningPointByHeaderSelectedTip
* Fix isAwaitingUTXOSet to check pruning point by headers
* Change isAwaitingUTXOSet indication
* Remove IsBlockInHeaderPruningPointFuture from BlockInfo
* Fix LowestChainBlockAboveOrEqualToBlueScore
* Add validateNewPruningPointTransactions
* Add validateNewPruningAgainstPastUTXO
* Rename set_pruning_utxo_set.go to update_pruning_utxo_set.go
* Check missing block body hashes by missing block instead of status
* Validate pruning point against past UTXO with the pruning point as block hash
* Remove virtualHeaderHash
* Fix comment
* Fix imports
* [NOD-1551] Add NewTestConsensusWithDataDir to factory
* [NOD-1551] Cache transaction ID
* [NOD-1551] Should return err if err != nil
* [NOD-1551] BuildBlockWithParents returns the blocks pastUTXOData
* [NOD-1551] Set BlockCoinbaseMaturity to 0 in TestDoubleSpends
* [NOD-1551] Fix comments
* --amend
Co-authored-by: Ori Newman <orinewman1@gmail.com>
* [NOD-1557] Add trace logs in add_block_to_virtual.go.
* [NOD-1557] Add trace logs in resolve_block_status.go.
* [NOD-1557] Add trace logs in calculate_past_utxo.go.
* [NOD-1557] Add trace logs in finality.go.
* [NOD-1557] Add trace logs in multisets.go.
* [NOD-1557] Fix compilation errors.
* [NOD-1557] Add trace logs to verify_and_build_utxo.go.
* [NOD-1557] Add trace logs to update_virtual.go.
* [NOD-1557] Add trace logs to set_pruning_utxo_set.go.
* [NOD-1557] Add trace logs to populate_tx_with_utxo_entries.go.
* [NOD-1557] Add trace logs to pick_virtual_parents.go.
* [NOD-1557] Make go vet happy.
* [NOD-1557] Clarify that some logic in AddBlockToVirtual is there for the sake of logging alone.
* [NOD-1557] Call blockStatusStore directly in AddBlockToVirtual when refetching the block status.
* [NOD-1556] Add logs regarding block status and virtual blue score
* [NOD-1556] UTXODiffAlgebra: add the offending outpoint to the text of errors
* [NOD-1556] Make checkIntersectionWithRule return ok as well