Ori Newman
49b6cc6038
Add mutable and immutable header interfaces ( #1305 )
...
* Add mutable and immutable header interfaces
* Fix ShouldMine()
* Remove false comment
* Fix Equal signature
* Fix Equal implementation
2020-12-29 13:55:17 +02:00
Elichai Turkel
c10a087696
Remove virtualDiffParents that aren't in V.Past or in P.Future ( #1310 )
2020-12-29 12:07:45 +02:00
Ori Newman
02d5fb29cf
Fix notifyVirtualSelectedParentBlueScoreChanged to show the selected tip blue score instead of the virtual's ( #1309 )
...
* Fix notifyVirtualSelectedParentBlueScoreChanged to show the selected tip blue score instead of the virtual's
* Fix ShouldMine() to fetch selected tip header
2020-12-29 12:07:05 +02:00
stasatdaglabs
48278bd1c0
Slightly improve the performance of antiPastHashesBetween. ( #1312 )
2020-12-29 10:36:18 +02:00
Ori Newman
d91afbfe3b
Change most Tracef to Debugf ( #1302 )
...
* Change most Tracef to Debugf
* Remove diff from log
2020-12-29 10:32:28 +02:00
Ori Newman
5f22632836
Use sync rate for getBlockTemplate's isSynced ( #1311 )
...
* Use sync rate for getBlockTemplate's isSynced
* Fix a typo
Co-authored-by: Mike Zak <feanorr@gmail.com>
2020-12-29 09:28:02 +02:00
stasatdaglabs
4aafe8a630
Fix a crashed caused by orphans whose validation failed. ( #1297 )
2020-12-29 09:02:28 +02:00
Elichai Turkel
7e379028f3
Log the time it takes to delete blocks and save the utxo set for pruning point ( #1307 )
2020-12-28 16:22:00 +02:00
Elichai Turkel
af1b8c8490
Move version initializiation to init function to prevent race conditions ( #1299 )
2020-12-28 16:04:00 +02:00
Ori Newman
c7c8b25c09
Set stream max message size and increase the max message size to 1GB ( #1300 )
2020-12-28 12:53:11 +02:00
stasatdaglabs
b0251fe1a6
Add missing lock to IsValidPruningPoint. ( #1296 )
2020-12-28 10:08:36 +02:00
Ori Newman
cfe013eca7
Add IsHeaderOnly field to BlockVerboseData ( #1295 )
2020-12-27 18:23:51 +02:00
stasatdaglabs
50e74bf412
Add BlueScore to BlockVerboseData. ( #1294 )
2020-12-27 17:57:43 +02:00
stasatdaglabs
12f1c3dfab
Fix a crash in GetMissingBlockBodyHashes ( #1289 )
...
* Remove the limit on the amount of hashes returned from antiPastHashesBetween.
* Guard against requests with a non-existing block hash.
* Move missing-block-hash guards to consensus.go.
* Ban a peer that doesn't send us all the requested headers during IBD.
* Extract blockHeap.ToSlice.
* Re-request headers in requestHeaders if we didn't receive the highHash.
2020-12-27 17:03:21 +02:00
Ori Newman
a231ec7214
Make only one transaction in validateAndInsertBlock ( #1292 )
2020-12-27 16:37:09 +02:00
Ori Newman
8aecf961bc
Red inclusion ( #1275 )
...
* Accept red blocks transactions
* Add comments to TestTransactionAcceptance
* Fix tests
* Remove fetchUTXOSetIfMissing
* Remove redundant dependency
* Fix comments
2020-12-24 18:12:46 +02:00
stasatdaglabs
0dea766373
Fix the stopOldTemplateSolving channel in the miner getting closed twice ( #1286 )
...
* Fix the stopOldTemplateSolving channel in the miner getting closed twice.
* Remove a unused variable.
2020-12-24 17:58:28 +02:00
Ori Newman
830ddf4735
Fill testConsensus's dagParams ( #1283 )
2020-12-24 17:47:03 +02:00
stasatdaglabs
9d0f513e49
Implement a simple mechanism to stop a miner from mining while kaspad is not synced ( #1284 )
...
* Reintroduce isSynced into the GetBlockTemplate response.
* Add a warning for when kaspad is not synced.
* Rephrase a log.
2020-12-24 17:15:44 +02:00
stasatdaglabs
bd97075e07
Remove the limit to the returned headers from buildMsgBlockHeaders ( #1281 )
...
* Remove the limit to the returned header hashes from buildMsgBlockHeaders.
* Build msgBlockHeaders in batches rather than all at once.
2020-12-24 16:53:26 +02:00
Svarog
05941a76e7
Make DomainHash and TransactionID read-only structs ( #1282 )
...
* 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
2020-12-24 16:15:23 +02:00
stasatdaglabs
7cbda3b018
Fix RPC requests with unknown payloads crashing kaspad ( #1203 )
...
* [NOD-1596] Return an error on an unknown field.
* [NOD-1596] Don't use unknownFields to check whether a message is invalid.
2020-12-24 15:17:34 +02:00
Ori Newman
a0b93e1230
Fix deletePastBlocks ( #1280 )
2020-12-24 13:53:16 +02:00
stasatdaglabs
b749b2db0b
Fix transaction relay not working ( #1279 )
...
* Implement HandleGetMempoolEntry.
* Fix equality bug in handleRelayedTransactionsFlow.
2020-12-24 10:40:56 +02:00
Svarog
717914319a
Increase size of reachability and block-relations cache ( #1272 )
...
* Increase size of reachability cache
* Increase cache size for BlockRelationStore
2020-12-24 10:27:05 +02:00
stasatdaglabs
6ef8eaf133
Fix AddBlock not returning validation failure errors ( #1268 )
...
* Fix AddBlock not returning validation failure errors.
* Elevate a log from Info to Warning.
* Elevate a log from Info to Warning.
2020-12-23 15:08:02 +02:00
Elichai Turkel
273c271771
Remove hash reversal ( #1270 )
...
* Remove hash reversing
* Move toBig to pow.go
* Update some tests
2020-12-23 12:42:37 +02:00
Ori Newman
729e3db145
Pruning calculation changes ( #1250 )
...
* 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
2020-12-23 11:37:39 +02:00
Elichai Turkel
43c00f5e7f
Remove the sorting requirement from BlueWindow ( #1266 )
...
* Remove the requirement for sorting in BlueWindow
* Sort the BlueWindow in window_test
2020-12-23 10:00:14 +02:00
stasatdaglabs
90d4dbcba1
Implement a simple CLI wallet ( #1261 )
...
* Copy over the CLI wallet from Kasparov.
* Fix trivial compilation errors.
* Reimplement the balance command.
* Extract isUTXOSpendable to a separate function.
* Reimplement the send command.
* Fix bad transaction ID parsing.
* Add a missing newline in a log.
* Don't use msgTx in send().
* Fix isUTXOSpendable not checking whether a UTXO is of a coinbase transaction.
* Add --devnet, --testnet, etc. to command line flags.
* In `create`, only print the public key of the active network.
* Use coinbase maturity in isUTXOSpendable.
* Add a readme.
* Fix formatting in readme.
2020-12-23 09:41:48 +02:00
Ori Newman
cb9d7e313d
Implement Clone and Equal for all model types ( #1155 )
...
* [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>
2020-12-22 17:38:54 +02:00
stasatdaglabs
c2cec2f170
Fix the Sequence field in transaction inputs always getting deserialized to MaxUint64. ( #1258 )
2020-12-22 16:29:38 +02:00
Svarog
e7edfaceb7
Remove redundant rule errors ( #1256 )
...
* Remove ErrTimeTooNew and rename ErrBlockIsTooMuchInTheFuture to ErrTimeTooMuchInTheFuture
* Remove ErrBlockMassTooHigh
* Remove ErrHighHash
* Remove ErrInvalidSubnetwork + some cleanup around subnetwork validation
* Remove ErrTxMassTooHigh
* Remove ErrBadTxInput
* Remove ErrOverwriteTx
* Remove ErrTooManySigOps
* Remove ErrParentBlockUnknown
* Remove ErrParentBlockIsNotCurrentTips
* Remove ErrWithDiff
* Remove ErrFinality
* Remove ErrDelayedBlockIsNotAllowed + ErrOrphanBlockIsNotAllowed
* Remove ErrSelectedParentDisqualifiedFromChain
* Remove ErrBuildInTransactionHasGas
* Remove ErrBadFees
2020-12-22 14:05:21 +02:00
FestinaLente666
5632bee49d
comments on default constants ( #1253 )
...
* comments on default constants
* more comments on default constants
* more comments on default constants
* more comments on default constants
* gofmt
* small typos
2020-12-22 11:44:32 +02:00
stasatdaglabs
21a459c0f4
Implement virtual selected parent chain RPC methods ( #1249 )
...
* [NOD-1579] Rename AcceptedTxIDs to AcceptedTransactionIDs.
* [NOD-1579] Add InsertBlockResult to ValidateAndInsertBlock results.
* [NOD-1593] Rename InsertBlockResult to BlockInsertionResult.
* [NOD-1593] Add SelectedParentChainChanges to AddBlockToVirtual's result.
* [NOD-1593] Implement findSelectedParentChainChanges.
* [NOD-1593] Implement TestFindSelectedParentChainChanges.
* [NOD-1593] Fix a string.
* [NOD-1593] Finish implementing TestFindSelectedParentChainChanges.
* [NOD-1593] Fix merge errors.
* [NOD-1597] Begin implementing UTXOIndex.
* [NOD-1597] Connect UTXOIndex to RPC.
* [NOD-1597] Connect Consensus to UTXOIndex.
* [NOD-1597] Add AcceptanceData to BlockInfo.
* [NOD-1597] Implement UTXOIndex.Update().
* [NOD-1597] Implement add(), remove(), and discard() in utxoIndexStore.
* [NOD-1597] Add error cases to add() and remove().
* [NOD-1597] Add special cases to add() and remove().
* [NOD-1597] Implement commit.
* [NOD-1597] Add a mutex around UTXOIndex.Update().
* [NOD-1597] Return changes to the UTXO from Update().
* [NOD-1597] Add NotifyUTXOsChangedRequestMessage and related structs.
* [NOD-1597] Implement HandleNotifyUTXOsChanged.
* [NOD-1597] Begin implementing TestUTXOIndex.
* [NOD-1597] Implement RegisterForUTXOsChangedNotifications.
* [NOD-1597] Fix bad transaction.ID usage.
* [NOD-1597] Implement convertUTXOChangesToUTXOsChangedNotification.
* [NOD-1597] Make UTXOsChangedNotificationMessage.Removed UTXOsByAddressesEntry instead of just RPCOutpoint so that the client can discern which address was the UTXO removed for.
* [NOD-1597] Collect outpoints in TestUTXOIndex.
* [NOD-1597] Rename RPC stuff.
* [NOD-1597] Add messages for GetUTXOsByAddresses.
* [NOD-1597] Implement HandleGetUTXOsByAddresses.
* [NOD-1597] Implement GetUTXOsByAddresses.
* [NOD-1597] Implement UTXOs().
* [NOD-1597] Implement getUTXOOutpointEntryPairs().
* [NOD-1597] Expand TestUTXOIndex.
* [NOD-1597] Convert SubmitTransaction to use RPCTransaction instead of MsgTx.
* [NOD-1597] Finish implementing TestUTXOIndex.
* [NOD-1597] Add messages for GetVirtualSelectedParentBlueScore.
* [NOD-1597] Implement HandleGetVirtualSelectedParentBlueScore and GetVirtualSelectedParentBlueScore.
* [NOD-1597] Implement TestVirtualSelectedParentBlueScore.
* [NOD-1597] Implement NotifyVirtualSelectedParentBlueScoreChanged.
* [NOD-1597] Expand TestVirtualSelectedParentBlueScore.
* [NOD-1597] Implement notifyVirtualSelectedParentBlueScoreChanged.
* [NOD-1597] Make go lint happy.
* [NOD-1593] Fix merge errors.
* [NOD-1593] Rename findSelectedParentChainChanges to calculateSelectedParentChainChanges.
* [NOD-1593] Expand TestCalculateSelectedParentChainChanges.
* [NOD-1597] Add logs to utxoindex.go.
* [NOD-1597] Add logs to utxoindex/store.go.
* [NOD-1597] Add logs to RPCManager.NotifyXXX functions.
* Implement notifySelectedParentChainChanged.
* Implement TestSelectedParentChain.
* Rename NotifyChainChanged to NotifyVirtualSelectedParentChainChanged.
* Rename GetChainFromBlock to GetVirtualSelectedParentChainFromBlock.
* Remove AcceptanceIndex from the config.
* Implement HandleGetVirtualSelectedParentChainFromBlock.
* Expand TestVirtualSelectedParentChain.
* Fix merge errors.
* Add a comment.
* Move a comment.
2020-12-21 14:43:32 +02:00
Elichai Turkel
45edacfbfa
Replace Double-SHA256 with blake2b and implement domain seperation ( #1245 )
...
* Replace default hasher (Double-SHA256) with domain seperated blake2b
* Replace all hashes with domain seperated blake2b
* Update the genesis blocks
* Replace OP_HASH256 with OP_BLAKE2B
* Fix the merkle tree by appending zeros instead of duplicating the hash when there is 1 branch left
* Update tests
* Add a payloadHash function
* Update gitignore to ignore binaries
* Fix a bug in the blake2b opcode
2020-12-21 12:51:45 +02:00
Svarog
9f8f0fd747
Added safeguard against running TestDifficulty with a fresh genesis block ( #1251 )
2020-12-21 11:30:43 +02:00
stasatdaglabs
053bb351b5
[NOD-1597] Implement a UTXO index ( #1221 )
...
* [NOD-1579] Rename AcceptedTxIDs to AcceptedTransactionIDs.
* [NOD-1579] Add InsertBlockResult to ValidateAndInsertBlock results.
* [NOD-1593] Rename InsertBlockResult to BlockInsertionResult.
* [NOD-1593] Add SelectedParentChainChanges to AddBlockToVirtual's result.
* [NOD-1593] Implement findSelectedParentChainChanges.
* [NOD-1593] Implement TestFindSelectedParentChainChanges.
* [NOD-1593] Fix a string.
* [NOD-1593] Finish implementing TestFindSelectedParentChainChanges.
* [NOD-1593] Fix merge errors.
* [NOD-1597] Begin implementing UTXOIndex.
* [NOD-1597] Connect UTXOIndex to RPC.
* [NOD-1597] Connect Consensus to UTXOIndex.
* [NOD-1597] Add AcceptanceData to BlockInfo.
* [NOD-1597] Implement UTXOIndex.Update().
* [NOD-1597] Implement add(), remove(), and discard() in utxoIndexStore.
* [NOD-1597] Add error cases to add() and remove().
* [NOD-1597] Add special cases to add() and remove().
* [NOD-1597] Implement commit.
* [NOD-1597] Add a mutex around UTXOIndex.Update().
* [NOD-1597] Return changes to the UTXO from Update().
* [NOD-1597] Add NotifyUTXOsChangedRequestMessage and related structs.
* [NOD-1597] Implement HandleNotifyUTXOsChanged.
* [NOD-1597] Begin implementing TestUTXOIndex.
* [NOD-1597] Implement RegisterForUTXOsChangedNotifications.
* [NOD-1597] Fix bad transaction.ID usage.
* [NOD-1597] Implement convertUTXOChangesToUTXOsChangedNotification.
* [NOD-1597] Make UTXOsChangedNotificationMessage.Removed UTXOsByAddressesEntry instead of just RPCOutpoint so that the client can discern which address was the UTXO removed for.
* [NOD-1597] Collect outpoints in TestUTXOIndex.
* [NOD-1597] Rename RPC stuff.
* [NOD-1597] Add messages for GetUTXOsByAddresses.
* [NOD-1597] Implement HandleGetUTXOsByAddresses.
* [NOD-1597] Implement GetUTXOsByAddresses.
* [NOD-1597] Implement UTXOs().
* [NOD-1597] Implement getUTXOOutpointEntryPairs().
* [NOD-1597] Expand TestUTXOIndex.
* [NOD-1597] Convert SubmitTransaction to use RPCTransaction instead of MsgTx.
* [NOD-1597] Finish implementing TestUTXOIndex.
* [NOD-1597] Add messages for GetVirtualSelectedParentBlueScore.
* [NOD-1597] Implement HandleGetVirtualSelectedParentBlueScore and GetVirtualSelectedParentBlueScore.
* [NOD-1597] Implement TestVirtualSelectedParentBlueScore.
* [NOD-1597] Implement NotifyVirtualSelectedParentBlueScoreChanged.
* [NOD-1597] Expand TestVirtualSelectedParentBlueScore.
* [NOD-1597] Implement notifyVirtualSelectedParentBlueScoreChanged.
* [NOD-1597] Make go lint happy.
* [NOD-1593] Fix merge errors.
* [NOD-1593] Rename findSelectedParentChainChanges to calculateSelectedParentChainChanges.
* [NOD-1593] Expand TestCalculateSelectedParentChainChanges.
* [NOD-1597] Add logs to utxoindex.go.
* [NOD-1597] Add logs to utxoindex/store.go.
* [NOD-1597] Add logs to RPCManager.NotifyXXX functions.
* [NOD-1597] Ignore transactions that aren't accepted.
* [NOD-1597] Use GetBlockAcceptanceData instead of GetBlockInfo.
* [NOD-1597] Convert scriptPublicKey to string directly, instead of using hex.
* [NOD-1597] Add a comment.
* [NOD-1597] Guard against calling utxoindex methods when utxoindex is turned off.
* [NOD-1597] Add lock to UTXOs.
* [NOD-1597] Guard against calls to getUTXOOutpointEntryPairs when staging isn't empty.
karpov
2020-12-20 17:24:56 +02:00
stasatdaglabs
843edc4ba5
Limit the orphan collection ( #1238 )
...
* Limit the orphan collection.
* Fix grammar in a comment.
* Fix a bad log.
2020-12-20 11:20:51 +02:00
Ori Newman
bd5f4e8c6a
Pruning fixes ( #1243 )
...
* Pruning related fixes
* Rename setBlockStatus->setBlockStatusAfterBlockValidation
* Rename StatusValid->StatusUTXOValid
* Add comment
* Fix typo
* Rename hasValidatedOnlyHeader->hasValidatedHeader
* Rename checkBlockBodiesExist->checkParentBlockBodiesExist
* Add comments and logs
* Adding logs
* Add logs and assert
* Add comment
* Fix typo
* Fix log
2020-12-20 09:38:34 +02:00
Elichai Turkel
6b1e691a57
Add GitHub actions in preperation for deprecating Jenkins ( #1164 )
...
* Add a test script
* add gh action for build and test
* added all the test
* Change github workflow to use the new test script
* Change the docker file to use the new test script
* Add doc comment for ProtocolError.Unwrap()
* Use another github action to increase windows page size
* Run the action after any edit to the PR metadata/base
* Change go version from 1.15 to 1.14
* Rename test.sh to build_and_test.sh
Co-authored-by: Isabella Liu <isabellaliu77@gmail.com>
2020-12-17 15:48:55 +02:00
Ori Newman
bf67c6351e
Add TestPruning ( #1222 )
...
* Add TestPruning
* Add missing argument to teardown
* Add missing return value to AddBlock
2020-12-16 14:49:55 +02:00
Mike Zak
99a14c5999
Update to version 0.8.4
2020-12-16 14:00:09 +02:00
Ori Newman
b510fc08a7
Change PoW error ( #1234 )
...
* Use proper error for invalid PoW
* Add comment
v0.8.3-rc1
2020-12-16 13:33:10 +02:00
Ori Newman
dc3ae4d3ac
Use pointer receivers when needed ( #1237 )
2020-12-16 12:50:17 +02:00
Svarog
1ebda36b17
Remove IsAwaitingUTXOSet from validateAndInsertBlock log, to prevent long operation ( #1235 )
2020-12-16 11:33:48 +02:00
Ori Newman
12379bedb6
Fix UTXO serialization errors ( #1233 )
2020-12-16 11:27:43 +02:00
stasatdaglabs
f90d7d796a
[NOD-1593] Return SelectedParentChainChanged from ValidateAndInsertBlock ( #1202 )
...
* [NOD-1579] Rename AcceptedTxIDs to AcceptedTransactionIDs.
* [NOD-1579] Add InsertBlockResult to ValidateAndInsertBlock results.
* [NOD-1593] Rename InsertBlockResult to BlockInsertionResult.
* [NOD-1593] Add SelectedParentChainChanges to AddBlockToVirtual's result.
* [NOD-1593] Implement findSelectedParentChainChanges.
* [NOD-1593] Implement TestFindSelectedParentChainChanges.
* [NOD-1593] Fix a string.
* [NOD-1593] Finish implementing TestFindSelectedParentChainChanges.
* [NOD-1593] Fix merge errors.
* [NOD-1593] Fix merge errors.
* [NOD-1593] Rename findSelectedParentChainChanges to calculateSelectedParentChainChanges.
* [NOD-1593] Expand TestCalculateSelectedParentChainChanges.
2020-12-15 11:37:52 +02:00
Ori Newman
fddda46d4f
Fix infinite loop on antiPastHashesBetween ( #1226 )
...
* Fix infinite loop on antiPastHashesBetween
* Get rid of highBlockBlueScore and lowBlockBlueScore
2020-12-15 10:37:35 +02:00
Svarog
77adb6c99f
Make consensus.databaseContext a DBManager and allow keeping data dir in TestConsensus
...
* Make consensus.databaseContext a DBManager
* Allow keeping data dir in TestConsensus
2020-12-15 10:11:14 +02:00