* Increase size of reachability cache
* Change DomainHash to struct with unexported hashArray
* Fixing compilation errors stemming from new DomainHash structure
* Remove obsolete Read/WriteElement methods in appmessage
* Fix all tests
* Fix all tests
* Add comments
* A few renamings
* go mod tidy
* Change DifficultyAdjustmentWindowSize and TimestampDeviationTolerance from uint64 to int
* refactor block_heap for readability and usage
* Add a new SizedUpHeap
* Refactor BlueWindow with the new DAA
* Update TestBlueBlockWindow with the new DAA window
* Fix review requested changes
* [NOD-1500] Added Domain type and Constructor
* [NOD-1500] Replaced dag+txpool with domain in flowContext
* [NOD-1500] Replaced dag+txpool with domain in flowContext
* [NOD-1500] Converters: domain objects from/to appmessage
* [NOD-1500] Convert hashes to DomainHashes in appmessages
* [NOD-1500] Remove references to daghash in dagconfig
* [NOD-1500] Fixed all appmessage usages of hashes
* [NOD-1500] Update all RPC to use domain
* [NOD-1500] Big chunk of protocol flows re-wired to domain
* [NOD-1500] Finished re-wiring all protocol flows to new Domain
* [NOD-1500] Fix some mempool and kaspaminer compilation errors
* [NOD-1500] Deleted util/{block,tx,daghash} and dbaccess
* [NOD-1500] util.CoinbaseTransactionIndex -> transactionhelper.CoinbaseTransactionIndex
* [NOD-1500] Fix txsigner
* [NOD-1500] Removed all references to util/subnetworkid
* [NOD-1500] Update RpcGetBlock related messages
* [NOD-1500] Many more compilation fixes
* [NOD-1500] Return full list of missing blocks for orphan resolution
* [NOD-1500] Fixed handshake
* [NOD-1500] Fixed flowcontext compilation
* [NOD-1500] Update users of StartIBDIfRequired to handle error
* [NOD-1500] Removed some more fields from RPC
* [NOD-1500] Fix the getBlockTemplate flow
* [NOD-1500] Fix HandleGetCurrentNetwork
* [NOD-1500] Remove redundant code
* [NOD-1500] Remove obsolete notifications
* [NOD-1500] Split MiningManager and Consensus to separate fields in Domain
* [NOD-1500] Update two wrong references to location of txscript
* [NOD-1500] Added comments
* [NOD-1500] Fix some tests
* [NOD-1500] Removed serialization logic from appmessage
* [NOD-1500] Rename database/serialization/messages.proto to dbobjects.proto
* [NOD-1500] Delete integration tests
* [NOD-1500] Remove txsort
* [NOD-1500] Fix tiny bug
* [NOD-1500] Remove rogue dependancy on bchd
* [NOD-1500] Some stylistic fixes
* Update pruningmanager interface
* Add a ProtoUTXOSet to hashserialization
* Update miningmanager with all the necessary stores and managers
* Implement mining manager
* Prune P.AC not in V.Past
* PruningManager fix all review comments
* [NOD-1420] Start working on ConsensusStateManager. Might be redundant due to recent changes
* [NOD-1420] Convert model to externalapi in utxo_algerbra helpers
* [NOD-1420] Add UTXO-diff algebra
* [NOD-1420] Prepare skeleton of calculateAcceptanceDataAndMultiset
* [NOD-1420] Added skeleton for AddBlockToVirtual
* [NOD-1420] Implement PopulateTransactionWithUTXOEntries
* [NOD-1420] Implement restorePastUTXO
* [NOD-1420] Implement finality check
* [NOD-1420] Move handling of tips to consensusStateManager
* [NOD-1420] Implement calculateAcceptanceDataAndMultiset
* [NOD-1420] Start implementing resolveBlockStatus
* [NOD-1420] Implement resolveBlockStatus
* [NOD-1420] Update related fields in end of resolveSingleBlockStatus
* [NOD-1420] Start working on selectVirtualParents
* [NOD-1420] Implemented BlockHeap
* [NOD-1420] Implement selectVirtualParents
* [NOD-1420] Implement updateVirtual
* [NOD-1420] Added comments where they were missing
* [NOD-1420] Place all consensusStateManager functions in correct files
* [NOD-1420] Return the missing outpoints from populateTransactionWithUTXOEntriesFromVirtualOrDiff
* [NOD-1420] Outpoint.ID -> TransactionID
* [NOD-1420] Fix Stringer tests
* [NOD-1420] Copy hash.FromString into utils
* [NOD-1420] SetParents should return an error
* [NOD-1420] Remove all reachabilityManager references from consensusStateManager
* [NOD-1420] Remove VirtualData. Get the info from the stores where needed
* [NOD-1420] Invert parameters to IsAncestorOf
* [NOD-1420] Use model.AcceptanceData
* [NOD-1420] Don't return accumulatedMassBefore in error cases
* [NOD-1420] Don't expect store functions to return nil when the requested data was found - instead add HasXXX functions
* [NOD-1420] addTransactionToMultiset sets isCoinbase properly
* [NOD-1420] expected hash string length is externalapi.DomainHashSize * 2
* [NOD-1420] Rename reachabilityTree -> reachabilityManager + updateReindexRoot if isNextVirtualSelectedParent
* [NOD-1420] ValidateCoinbaseTransaction in csm.verifyAndBuildUTXO
* [NOD-1420] Re-write HAsUTXODiffChild
* [NOD-1420] delete past_utxo.go.bak
* [NOD-1420] Implement validateCoinbaseTransaction in CSM
* [NOD-1420] Imlemented missing functionality in ValidateTransactionAndPopulateWithConsensusData
* [NOD-1420] Moved merge depth logic to MergeDepthManager
* [NOD-1420] Add logs
* [NOD-1249] Add pruning related constants (#869)
* [NOD-1249] Add pruning related constants
* [NOD-1249] Change status suspect to UTXONotVerified
* [NOD-1249] Add TestPruningDepth
* [NOD-1249] Add comment to pruningDepth
* [NOD-1249] Add pruning helper functions (#875)
* [NOD-1249] Added node.blockAtDepth
* [NOD-1249] Added node.finalityPoint()
* [NOD-1249] Add hasFinalityPointInOthersSelectedChain
* [NOD-1249] Add nonFinalityViolatingBlues
* [NOD-1249] Added isInPastOfAny
* [NOD-1249] Updated all calls to blockNode functions that require dag
* [NOD-1249] Add blockNode.reds field and persist it
* [NOD-1249] Add checkObjectiveFinality
* [NOD-1249] Add isViolatingSubjectiveFinality
* [NOD-1249] Added to TestGHOSTDAG check that reds are as expected
* [NOD-1249] Add checkMergeLimit and checkDAGRelations
* [NOD-1249] Invert condition in blockInDepth
* [NOD-1249] Make isInPastOfAny resemble isInPast
* [NOD-1249] Added comments to isInPast and isInPastOfAny
* [NOD-1252] Remove any references to legacy finality (#876)
* [NOD-1032] validateParents: check number of parents and that no parents were manually rejected (#877)
* [NOD-1254] Block verification changes (#882)
* [NOD-1254] Call checkDAGRelations and move it to correct place
* [NOD-1254] Use blockStatuses properly
* [NOD-1254] Add support for setting node's verification flag and set it to UTXONotVerified once block passes basic verification
* [NOD-1254] Check for subjctiveFinality, and for node not being in the selectedParentChain
* [NOD-1254] Make blockStatus an ordinary value - not bit flags
* [NOD-1254] Isolate all utxo-requiring validation into a single separate if branches
* [NOD-1254] Re-arrange connectBloc so that things that happen in UTXO-validated blocks only are all grouped together
* [NOD-1254] Resolve and check selectedParent's status before validatingUTXO
* [NOD-1254] Separate virtualUTXODiff from utxoVerificationOutput
* [NOD-1254] Stylistic fixes
* [NOD-1254] Use dag.index.(Set)BlockNodeStatus instead of accessing node.status
* [NOD-1288] Sub-routinize checkConnectToPastUTXO
* [NOD-1288] Re-write checkConnectToPastUTXO in a way that allows to filter-out invalid transactions
* [NOD-1288] Make checkTxSequenceLock use already calculated utxo outputs
* [NOD-1288] Make checkTxMass use already calculated utxo outputs
* [NOD-1288] Use dag.sigCache for ValidateTransactionScripts
* [NOD-1288] Use checkConnectTransactionToPastUTXO in applyBlueBlocks
* [NOD-1288] Clean-up old code-path from no longer used functions
* [NOD-1288] Skip any irrelevant parts of txo verification if block is genesis
* [NOD-1288] Set where it should have been
* [NOD-1288] Fix reachability checks to never use the new node + make isInSelectedParentChainOf return true if node == other
* [NOD-1288] invert the condition for isNewSelectedTip
* [NOD-1288] Separate checkIsAccepted to own function, and properly handle coinbase
* [NOD-1288] Don't update utxo-diff for UTXONotVerified parents/tips + Make PrepareBlockForTest resolve the selectedParent's UTXOSet if needed
* [NOD-1288] Include mass off coinbase transactions
* [NOD-1288] Move comment to correct position
* [NOD-1288] If blockAtDepth should return genesis - do it immidiately
* [NOD-1288] Comment-out instead of removeing scriptval_test.go
* [NOD-1288] Rename: entry -> utxoEntry
* [NOD-1288] Remove special function for calcCoinbaseTxMass
* [NOD-1288] Remove redundant check from checkEntryAmounts
* [NOD-1288] Rename: MaxMassPerBlock -> MaxMassAcceptedByBlock
* [NOD-1255] Implement boundedMergeBreakingParents
* [NOD-1255] Implement selectAllowedTips
* [NOD-1255] Integrate virtual parent selection into block verification process
* [NOD-1255] Add node to tips all the time, remove it from candidates and add it's parents if it's disqualified
* [NOD-1255] remove tips from virtaulBlock
* [NOD-1255] Rename: didVirtualParentsChanged -> didVirtualParentsChange
* [NOD-1255] Remove redundant sanity check
* [NOD-1255] Handle a forgotten error
* [NOD-1255] Prettify selectVirtualParents
* [NOD-1255] UpdateTipsUTXO should run over all UTXO-Verified tips, even if they are not parents of virtual
* [NOD-1311] Make isInPast inclusive
* [NOD-1032] Handle finality conflicts (#904)
* [NOD-1312] AddTip should not include finalityViolating and manuallyRejected blocks
* [NOD-1312] Implement resolveFinalityConflict
* [NOD-1312] Implement dag notifications for finalityChanges + updateing DAG state
* [NOD-1312] Added finality conflict rpc boilerplate
* [NOD-1312] Implement handling of getFinalityConflicts + resolveFinalityConflict RPCs
* [NOD-1312] Implement finality conflict related notifications
* [NOD-1312] Move all time to millisecond time
* [NOD-1312] Add comments + unexport some methods
* [NOD-1312] Add clarification in comments
* [NOD-1312] Move updateFinalityConflictResolution to finality_conflicts.go
* [NOD-1312] Rename: currentSelectedTip -> selectedTip
* [NOD-1312] Add long comment to ResolveFinalityConflict
* [NOD-1312] Convert areAllInSelectedParentChainOf into isInSelectedParentChainOfAll
* [NOD-1312] Rename chainUpdates (type) -> selectedParentChainUpdates, to distinguish from the variable chainUpdates
* [NOD-1032] Make all blockdag tests compile
* [NOD-1278] Fix finality-related tests (#910)
* [NOD-1032] Don't return node.dag.genesis from blockAtDepth because it might still not exist
* [NOD-1032] Actually add a tip in dag.addTip
* [NOD-1278] Add transaction to utxo set if it's coinbase
* [NOD-1278] Use VirtualParentHashes instead of TipHashes where appropriate
* [NOD-1278] If no valid virtual parent candidates - return error, don't wait for panic
* [NOD-1278] Transition TestCalcSequenceLock from newTestDAG to DAGSetup
* [NOD-1278] Fix .bluest() tie-breaker
* [NOD-1278] Remove feeData structure, as it no longer works, store feeData in acceptanceData
* [NOD-1278] Remove dag parameter from blockNode methods
* [NOD-1278] Fix TestBlueBlockWindow
* [NOD-1278] Don't subject selectedParent to MaxMergeSet
* [NOD-1278] se PrepareAndProcessBlockForTest instead of .addTip in TestSelectedPath
* [NOD-1278] Fixed TestDAGStateSerialization
* [NOD-1278] Fix TestAcceptanceIndexRecover
* [NOD-1278] Fix TestCheckConnectBlockTemplate
* [NOD-1278] Fix TestChainUpdates
* [NOD-1278] Fix and rename TestVirtualBlock -> TestTips
* [NOD-1278] Rename checkIsAccepted -> maybeAcceptTx
* [NOD-1278] Re-activate TestDoubleSpends
* Revert "[NOD-1278] Fixed TestDAGStateSerialization"
This reverts commit 845095d6de7207b07cf819d05f3f38ad94da9cf6.
* [NOD-1278] Remove dag parameter from expectedCoinbaseTransaction
* [NOD-1348] Implemented simplified Finality Conflict Resolution scheme (#911)
* [NOD-1348] Rename functions according to Research spec
* [NOD-1348] Added blockSet.areAllIn
* [NOD-1348] Implemented simplified finality conflict resolution scheme
* [NOD-1348] Refactorings and fixes in selectVirtualParents
* [NOD-1278] Fix bugs discovered by unit-tests + Fix unit-tests (#916)
* Updated to version v0.3.1
* [NOD-858] Don't switch sync peer if the syncing process hasn't yet started with the current sync peer (#700)
* [NOD-858] Don't switch sync peer if the syncing process hasn't yet started with the current sync peer
* [NOD-858] SetShouldSendBlockLocator(false) on OnBlockLocator
* [NOD-858] Rename shouldSendBlockLocator->wasBlockLocatorRequested
* [NOD-858] Move panic to shouldReplaceSyncPeer
* [NOD-869] Add a print after os.Exit(1) to see if it is ever called (#701)
* [NOD-1238] Fix acceptance index never being initialized. (#859)
* [NOD-1278] Genesis never violates finality
* [NOD-1348] Refactorings and fixes in selectVirtualParents
* [NOD-1278] Don't call dag.selectVirtualParents for genesis
* [NOD-1278] Properly organize errors in maybeAcceptBlock
* [NOD-1278] updateTipsUTXO should only run on tips whose status is
* [NOD-1278] updateTipsUTXO should only run on tips whose status is `valid`
* [NOD-1278] Fix TestDoubleSpends
* [NOD-1278] Fix TestDAGIndexFailedStatus
* [NOD-1278] IsFinalizedTransaction should use uint64 everywhere
* [NOD-1278] If tx is coinbase and not selectedParent - don't update pastUTXO
* [NOD-1278] Store tips and validTips separately
* [NOD-1278] Store ValidTips and VirtualParents in dagState
* [NOD-1278] Fix TestProcessOrphans
* [NOD-1278] Fix TestProcessOrphans
* [NOD-1278] Fix TestOrderInDiffFromAcceptanceData
* [NOD-1278] Fix TestHelp
* [NOD-1278] Remove mining.PrepareBlockForTest; use blockdag.PrepareBlockForTest instead
* [NOD-1278] Explicitly disallow chained transactions
* [NOD-1278]
* [NOD-1278] Fix some comments
Co-authored-by: Ori Newman <orinewman1@gmail.com>
Co-authored-by: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com>
Co-authored-by: Yuval Shaul <yuval.shaul@gmail.com>
* [NOD-1355] Add unit-test for finality + When resolving finalityConflict - make sure the block that will come out selectedTip is statusValid (#919)
* [NOD-1355] Added test for finality
* [NOD-1355] When resolving finalityConflict - make sure the block that will come out selectedTip is statusValid
* [NOD-1032] Renames: anything about inputsWithReferencedUTXOEntries -> remove 'Referenced'
* [NOD-1032] Don't ignore non-rule errors
* [NOD-1032] Fix comment
* [NOD-1032] Enhanced comments on TestChainUpdates
* [NOD-1032] Remove scriptval_test.go
* [NOD-1032] Extracted isNewSelectedTip to a method
* [NOD-1032] Use dag.Now() instead of mstime.Now()
* [NOD-1032] Print block status when accepting block
* [NOD-1032] Add comment explaining boundedMergeBreakingParents
* [NOD-1032] Enhanced test and imporved comments in TestFinality
* [NOD-1032] Rename: Objective finality -> bounded merge depth
* [NOD-1032] No need to check that validTips are valid
* [NOD-1032] Remove dag from arguments of updateDiffAndDiffChild
* [NOD-1032] Correct variable names in LookupNodes
[NOD-1032] Correct variable names in LookupNodes
* [NOD-1032] Fix some comments
* [NOD-1032] Some style changes
* [NOD-1032] Refactor isAnyInPastOf
* [NOD-1032] Enhance comment in updateVirtualParents
* [NOD-1032] Flip condition in updateVirtualParents
* [NOD-1032] Stylistic and grammatic fixes in dag.go and dag_test.go
* [NOD-1032] Explain why updateSelectedParentSet receives geneses on init
* [NOD-1032] Remove ErrParentManuallyRejected
* [NOD-1032] Added wrapper for resolveNodeStatus that creates a special transaction for it
* [NOD-1032] Rename: statusUTXONotVerified -> statusUTXOPendingVerification
* [NOD-1032] Use virtual parents in CurrentBits()
* [NOD-1032] rename: isViolatingSubjectiveFinality -> isViolatingFinality
* [NOD-1032] Move updateVirtualAndTips to applyDAGChanges
* [NOD-1032] Invert condition for isFinalityPointInPast
* [NOD-1032] Fix antiPastBetween isInPast became inclusive
* [NOD-1032] Remove redundant call for addTip
* [NOD-1032] Use calcCoinbaseTxMass where appropriate
* [NOD-1032] Remove time fields from conflict notifications
* [NOD-1032] Assign the correct thing to i
* [NOD-1032] unify checkOutputsAmounts and checkTxOutputAmounts
* [NOD-1032] Cleanup in CheckTransactionInputsAndCalulateFee
* [NOD-1032] Fixed some style and comments
* [NOD-1032] If selectedParent is disqualifiedFromChain - validateAndApplyUTXOSet should return this as a ruleError
* [NOD-1032] Set the status in resolveNodeStatus
* [NOD-1032] Correct comment on boundedMergeBreakingParents
* [NOD-1032] Fix a typo.
* [NOD-1032] Update a variable name.
* [NOD-1032] Fix a comment.
* [NOD-1032] Fix merge errors.
* [NOD-1032] Add VirtualParentHashes to getBlockDagInfo.
* [NOD-1032] Update handleGetBlockTemplate.
* [NOD-1032] Comment out all the old RPC stuff.
* [NOD-1032] Remove irrelevant type.
* [NOD-1032] Implement ResolveFinalityConflict.
* [NOD-1032] Remove irrelevant comments.
* [NOD-1032] Implement NotifyFinalityConflicts.
* [NOD-1032] Add FinalityConflictNotification and FinalityConflictResolvedNotification.
* [NOD-1032] Finish implementing finality conflict notifications.
* [NOD-1032] Remove old RPC stuff.
* [NOD-1032] Fix grammar in a comment.
Co-authored-by: Ori Newman <orinewman1@gmail.com>
Co-authored-by: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com>
Co-authored-by: Yuval Shaul <yuval.shaul@gmail.com>
Co-authored-by: stasatdaglabs <stas@daglabs.com>
* [NOD-557] Remove regTest network.
* [NOD-557] Remove remaining references to regTest.
* [NOD-557] Move newHashFromStr from params.go to params_test.go.
* [NOD-557] Rename test to network in register_test.go.
* [NOD-557] Replaced removed tests in TestDecodeAddressErrorConditions.
* [NOD-1223] Delete unused files/packages.
* [NOD-1223] Move signal and limits to the os package.
* [NOD-1223] Put database and dbaccess into the db package.
* [NOD-1223] Fold the logs package into the logger package.
* [NOD-1223] Rename domainmessage to appmessage.
* [NOD-1223] Rename to/from DomainMessage to AppMessage.
* [NOD-1223] Move appmessage to the app packge.
* [NOD-1223] Move protocol to the app packge.
* [NOD-1223] Move the network package to the infrastructure packge.
* [NOD-1223] Rename cmd to executables.
* [NOD-1223] Fix go.doc in the logger package.
* [NOD-1223] Move all network stuff into a new network package.
* [NOD-1223] Delete the unused package testutil.
* [NOD-1223] Move infrastructure stuff into a new instrastructure package.
* [NOD-1223] Move domain stuff into a new domain package.