Changelog for
libbitcoinconsensus0_sv-1.0.0b2-1.9.x86_64.rpm :
* Mon Jan 06 2020 marecAATTdetebe.org- Update to version 1.0.0b2:
* Accept a subset of non-standard transactions even on main net
* int_serialization redundant code removed
* fix undefined behaviour in bsv::deserialize
* during graceful tx validation period original reject message and ban score is used
* Increase default maximum mempool memory usage to 1000 MB
* Rename acceptp2sh to acceptp2sh_ashashpuzzle
* Remove excessive block size from coinbase message
* Remove excessive block size from user agent subversion
* Fix failing tests as a result of default fee changes.
* Change fee constants.
* Update FTs
* Introducing pre-defined CTask::Status levels.
* Set maximum validation duration for async tasks in a single run
* use utxo_after_genesis instead of SCRIPT_UTXO_AFTER_GENESIS flag in EvalScript
* use resize instead of reserve in LimitedStack::padRight (time optimization)
* remove ndebug from flags for bitcoind release/relwithdebinfo to work
* add specification on LimitedStack::erase method
* LimitedStack::insert can only work on child limited vector
* make LimitedVector constructor private
* Create test for limited stack/vector
* fix setting maxStackMemoryUsage in config
* add unit test for limiting bloom filters
* limit matching of data elements to MAX_SCRIPT_ELEMENT_SIZE_BEFORE_GENESIS
* add unit test for maxSendQueuesBytes config
* if -excessiveblocksize is not set, use default for max sending bytes in all queues
* Fix getblock help not showing
* Fix autotools-configure to fail if boost base is not found or right version
* Optimization. Adding progressively larger chunks to vector when deserializing to prevent large number of reallocations.
* Fixed and uncommented tests relying on CORE-165 and CORE-278
* Refactor and fix parallel block validation tests
* Set the executable bit on the missing scripts.
* Fix txn processing if we\'re not in Genesis grace period.
* fix memory leak of ASN1_INTEGER
* block_info tests added for Median Time Past
* Create a reject message (and update the reject cache) only if txn was detected as fully processed.
* ...
* clang-tidy MedianTimePast
* clang-tidy fix std::optional
* Add hexhdr.py to sources so that it is dist\'d.
* Change logging message to be more precise.
* add note about beta release to README
* Fri Dec 06 2019 marecAATTdetebe.org- Update to version 1.0.0b1:
* Genesis release notes.
* Update manual pages for Genesis release.
* Fix badly formated printf.
* Bump version numbers for Genesis release.
* default values for limits set to max int
* Removed flags from STANDARD_SCRIPT_VERIFY_FLAGS that are present in MANDATORY_SCRIPT_VERIFY_FLAGS
* Functional test added for Genesis graceful activation period
* CheckInputs does not add ban score to nodes, for transactions that will become invalid in Genesis and transactions that were invalid before Genesis, during Genesis graceful period
* The config params for maximum txn validation duration were renamed.
* Put all incoming txns into the \'high\' priority queue.
* implement functional test for checking script cache and mempool clearing
* Update Genesis block height
* remove incorrect move expression
* clear script cache when genesis is activated
* delete mempool when crossing genesis in ConnectTip
* A new FT which tests a behaviour of PVQ (including timeouts configuration).
* Rename config params for maximum txn validation duration to start with \'max\' prefix.
* remove unused variable
* Fixed unit tests to use bsv::bint::deserialize instead of bsv::deserialize
* Added functional test for max script number length limits.
* Added consensus and policy parameter for maximum length of numbers used in scripts.
* Added functional tests
* big_int error handling review
* Changed MAX_SCRIPT_SIZE limits
* bint constructor ranges
* Unit test for txn validation queue size limits.
* Apply maximum memory usage limit for transaction queues.
* Add configuration parameter to control max memory usage in txn queues.
* Track memory usage for transactions in the standard & non-standard queues.
* bint constructor fix for windows
* Work around windows compiler bug.
* move constants to consensus.h and policy.h
* add functional test for max stack memory usage
* add unit tests for stack size
* implement and use LimitedStack instead of basic vector for stack in interpreter
* introduce DEFAULT_STACK_MEMORY_USAGE and make it configurable
* define pre-genesis behaviour with MAX_SCRIPT_ELEMENT_SIZE_BEFORE_GENESIS
* use MAX_STACK_ELEMENTS_BEFORE_GENESIS constant instead of 1000 in EvalScript
* Added some extra logging to the new height based test framework
* op_rshift big ints
* op_lshift big int support
* fix bug when fetching source in gitian build
* Set timeout value for high (standard) and low (non-standard) priority transactions. If validation timeout is exceeded for the high priority txn then move it to the low priority queue.
* Replace TxType by TxValidationPriority which is more accurate due to low & high priority validation tasks.
* Add IsStandardTx flag into CValidationState class.
* Non-Standard txn validation timeout config.
* Standard txn validation timeout config.
* Set validation timeout flag in the validation state object.
* Add validation timeout flag into CValidationState class.
* CORE-321 unsigned cast fix on linux and mac
* op_split big number support
* Added functional tests for block sigops limit
* Increased maximum number of block sigops for Genesis
* Rename mIdleQueuesLock to mQueuesLock
* Limit parallel sibling validation to block validator queue count
* Fix: use best chain tip candidate work for determining premature block check termination
* Scheduler should wait for worker threads to exit before exiting
* Correctly handle shutdown of queue checkers and their worker threads
* Removed unused threadGroup variable in checkqueue unit tests
* Wrap all threadGroup threads with TraceThread for more logging
* Fix for missing end() iterator check
* Check whether pointer to error string is provided before assigning to it
* Prevent rejected block race condition on slow computers
* cs_main lock was not guarding AreOlderOrEqualUnvalidatedBlockIndexCandidates
* Fix: checkqueue test was accessing non thread safe instance on two branches
* Functional tests
* Reject transactions with P2SH outputs after Genesis is activated. Updated CORE-206 and reverted CORE-236. Transactions with P2SH outputs are no longer treated as non-standard and are rejected by default after Genesis.
* op_pick unit tests corrected
* Added flag -maxorphantxsize, new function to check size instead of number of orphan transactions, updated unit tests
* no failures
* op_roll test
* test added
* Fix null iterator dereference in FindPreviousBlockIndex.
* op_size big number support
* OP_DEPTH big number support.
* Late configuration for time locked mempool.
* Add a bloom filter to the time locked mempool.
* op_within big number support
* Read activeChainHeight from chainActiveSharedData.
* Split AlreadyHave into two methods IsTxnKnown and IsBlockKnown.
* Remove EXCLUSIVE_LOCKS_REQUIRED from AlreadyHave
* Read activeChainHeight and chainActiveTipBlockHash from chainActiveSharedData.
* Use chainActiveSharedData.
* Introducing CChainActiveSharedData class.
* Fixes after integration.
* A missing entry during a check for descendant chain size limit.
* implemented consensus tx limit for P2P tx messages
* fixed CLI validation of negative values for switch -genesisactivationheight
* added functional tests for max consensus tx size
* added unit tests for configuration of max tx consensus size
* unlimited max consensus tx size after Genesis
* Use a set data type to control unique elements to be returned by collectDependentTxnsForRetry.
* fix finding openssl
* fix windres call for openssl 1.1.1 cross compiling with mingw
* fix some error in bash variable expansion
* Pump openssl version to 1.1.1 for gitian build
* big int support for op_1add, op_1sub, op_negate, op_abs, op_not and op_not_equal
* added functional tests for max policy transaction size
* added unit tests for max policy transaction size
* implemented configuration of max policy tx size after Genesis
* Changed CScript::GetSigOpCount to correctly count sigops in OP_CHECKMULTISIG after genesis
* EvalScript reads MAX_PUBKEYS_PER_MULTISIG from config now
* bytespersigop option is no longer used Option was added with commit 45b8e278, updated with ab942c15 and later removed with b569a713 where weight was replaced with sigops count we use today.
* Functional tests
* Unit tests
* Make CBlockIndex a required element in QueuedBlock MarkBlockAsInFlight that fills QueuedBlock list never gets a null pointer. This gives us the opportunity to always set needed block height into FillBlock.
* Use proper values for MAX_TX_SIGOPS_COUNT depending on Genesis and policy
* Fix compilation failure for MSVC caused by narrowing conversion in initialization
* Functional test for maximum operations per script
* Increased maximum number of non-push operations per script for Genesis.
* Fixed failing functional tests
* Fee calculation for utxo
* Increased prevector size types to support larger amount of data
* Added consensus parameter and Config parameter in EvalScript and dependant methods When height of the script is not available, we use consensus limit (consensus=true)
* Added logic to solver to check scripts with pubKeys greater than 1 byte (256)
* Make transaction relaying aware of the non-final mempool.
* Move TxMempoolInfo out into its own file.
* Dump & restore the non-final mempool.
* Add flag to ContextualCheckTransaction to indicate if txn is from a block.
* Replace STANDARD_LOCKTIME_VERIFY_FLAGS with a function.
* Add a new transaction reject code for a mempool being full.
* Fix some missing includes.
* Add a new finalised source for transaction validation.
* Add transaction validator resubmitTransaction method.
* Validation for genesis time-locked transactions.
* Make the txn double spend detector aware of non-final txns.
* Add an extra non-final validation flag.
* Extend mempool checking method to check for non-final txns.
* Hook time locked mempool into main mempool.
* Add check for non-final transactions to AlreadyHave()
* Add new getrawnonfinalmempool RPC command.
* Config parameters and periodic checks.
* A new class to track time-locked transactions.
* Functional tests for restoring nLockTime & nSequence.
* Key\'s secret byte incorrectly initialized.
* Orphan txns scheduled to reprocess: Add txn to the result set if it\'s not there yet.
* op_depth big integer support
* Fix race in miner_tests at shutdown.
* Add threadpriority.cpp to CMakeLists.txt
* Max transaction validation duration should be configurable from command line
* Cancel transaction validation if it exceeds max duration threshold
* Timed cancellation token that cancels task after N time has elapsed
* Configuration for standard and non-standard txns in the FT
* (re)name interpreter genesis flags
* Include prioritised validation queues config params in the test: -numstdtxvalidationthreads, -numnonstdtxvalidationthreads
* Due to asynchronous validation some transactions can be processed faster than others.
* Get total number of queued transactions by taking mtxs in a read mode.
* Include a check for non-standard queue in the UT method waitForEmptyQueue.
* Use openssl BN_bn2mpi and BN_mpi2bn to serialize big numbers
* Join tokens that are used by functions called from TxnValidation
* Check for cancellation request on every step of multisig check
* Connection of CScriptCheck cancellation token with ActivateBestChain token
* Forward check queue task cancellation token inside EvalScript function
* Forward check queue task cancellation token inside checker
* Include txn\'s type in the log message.
* Enable an independent processing for standard and non-standard transactions.
* Support for a default number of Low and High priority threads used by the Validation thread pool.
* Basic support for nonstandard transactions.
* Change batch transactions into a single transaction per task.
* Dual queue support. It allows to handle standard and non-standard tasks at the same time.
* SCRIPT_ENABLE_BIG_INTS replaced with SCRIPT_UTXO_AFTER_GENESIS
* Python test framework optimization use mutable arrays when sending data. This increases mininode send performance for almost 50%
* Increased timeout for bsv-block-size-activation-genesis.py
* Temporary workaround because ASN1_INTEGER_get_int64 is not available in older versions of OpenSSL
* bn_op_num2bin -ve length unit tests added
* Set executable flags on python functional tests
* Fixed functional tests
* Removed 2GB block size limit for genesis (set to 4GB - 1MB due to P2P protocol limitations). Removed previous block size increment code.
* fix leveldb visual studio 17 build
* Sunset operators OP_CHECKLOCKTIMEVERIY and OP_CHECKSEQUENCEVERIFY
* Process double spend transactions in parallel
* OP_BIN2NUM and OP_NUM2BIN big integer support
* SIGHASH functional test
* Limiting transaction size when signing with old sighash algorithm
* Interpreter enabling old sighash algorithm for utxos before genesis
* Genesis activation based tests setup
* Height based framework
* temporary change callback function inside the NodeConnCB using context manager
* wait_until configurable error message an check interval
* Monitoring file (e.g. bitcoind.log) when the test is running
* reverting split SolverNoData & SolverWithData -> Solver
* p2sh python tests
* Tests sunset P2SH: fix for misc tests
* Tests sunset P2SH: validation and cacheing scripts
* Tests sunset P2SH: P2SH scripts and transactions
* Tests sunset P2SH: multisig tests
* Tests sunset P2SH: SigOp Test
* Tests sunset P2SH: script tests
* Tests sunset P2SH: transaction tests
* Minor cleanups when converting tx to json
* SigOpCount depending on genesis
* ExtractDestinations correctly reacting to p2sh
* IsGenesisEnabled on CWalletTx
* Solver returning nonstandard if P2SH
* Delivering correct flags to VerifyScript
* Move node\'s punishment procedure from the Validator into p2p hadling methods.
* Remove dependency on cs_main from P2P CNodeState.
* Fix: MacOS clang compiler warnings
* Bump max scriptcheck threads from 16 to 64
* Fix: g_connman and transaction validation race condition in unit tests
* Improve ActivateBestChain state parameter description visibility
* test pbv functionality with actual long to validate transaction
* Fix: coin selection benchmark configuration was not properly set
* Extend parallel block validation test to early announcements testing
* Fix: va_list was populated but never cleared
* Fix: OptBool use static analizer warning
* CNode bloom filter cleanup
* Block out of order processing test
* add functional tests for parallel block validation
* Block validation command line configuration
* Check pool instances should be terminatable
* Long running task cancellation mechanism
* Release cs_main lock during script validation
* Synchronize p2p block request without calling ActivateBestChain
* add rpc helper methods and class for block validation status
* Prefer faster validation to first accepted block
* Use CCheckQueuePool instead of a single CCheckQueue global variable
* Network requests that validate blocks should run async
* Added RPC for tracking of blocks/transactions being processed
* Fix: CChain was at places being accessed without cs_main lock
* VerifyScript using UTXO_AFTER_GENESIS
* Adding flag SCRIPT_FLAG_LAST
* A simple locked reference helper.
* New txn handler: config improvement.
* Enable parallel txn validation when reorg occurs.
* Adding synchronous batch validation support.
* treat disabled opcodes the same as invalid opcodes
* disallow multiple ELSEs in one IF statement
* Preventing that IsGenesisEnabled is with MEMPOOL_HEIGHT
* non top level OP_RETURN should be followed by valid script
* clear mempool when disconnecting last pre-genesis block to remove mempool transactions that were validated according to Genesis rules
* delete IsGenesisEnabled overload and correct functional tests accordingly
* update bsv-datacarriersize.py to always run before genesis
* Update genesis test with reorg scenario.
* When checking if genesis enabled, discard coins with MEMPOOL_HEIGHT.
* add functional test for genesis activation
* Implementation for UTXO based activation of OP_RETURN. ExecutionSctiptCache related issues will be solved as part of CORE-204.
* ExtractDestinations() now correctly identifies data by calling SolverWithData. This is used when converting a transaction to JSON format.
* Solver now correctly handles pre and post genesis OP_RETURN. It has been broken into two separate functions: - one that requires UTXO height and is able to identify TX_NULL_DATA (used by IsStandard) - the other that does not care about TX_NULL_DATA and is used in almost all other places.
* CScript::IsUnspendable now handles genesis interpretation OP_RETURN.
* Add support for original OP_RETURN functionality when SCRIPT_UTXO_AFTER_GENESIS is present
* Updates to big number doc
* big_numbers.rst -> big_numbers.md
* Invalid transactions handling tests
* Core-316 big_num undefined behaviour fixed
* Update release notes post Ark release.
* Make the notes regarding beta release clearer.
* Version is 0.2.2 (beta)
* Adding possibility to specify ip adress in the run_node_with_connections
* Yielding tuple of connections instead if the list to be able to use tuple expansion
* libssl-dev added to all gitian descriptors
* Update the release notes to indicate beta status
* Updated Release notes for STN
* libssl-dev added
* rename big_int.hpp to big_int.h for consistency and add to makefile.am
* mining_score index and associated test removed
* Functional tests for inv. msg. time order added
* Propagate transactions in order they are validated
* Fixed big num test data by adding cast to 64 bit integer before performing +/- operations.
* Reset the max orphan lenght to 5000.
* Do not allow the current outpoint to be used again when collecting dependent txns for retry.
* Process all detected double spend txns instead of discarding them.
* CORE-277 rename frame to arg
* Added command line parameter for genesis activation height
* Updated DisconnectTip with Genesis check
* Updated CheckInputs methods with Genesis check
* Added SCRIPT_GENESIS flag
* Adding Genesis Upgrade activation
* CORE-306 nMockTime made atomic
* allow only whitelisted peers to request current tip even if queue is full
* make AddUncheckedNL private
* make DynamicMemoryUsageNL a private function - quick win, prevent future use outside of class
* update description of CTxMemPool and add warnings about deprecation of functions and typedefs
* Fix possible deadlock identified for Clang thread sanitiser.
* update release notes to include the STN reset
* CORE-277 big number attack mitigation
* Check if fee estimation can be applied before txn is being validated.
* CORE-299 Big Number Documentation added
* Fix bug in GetHeightFromCoinbase for very low heights.
* Set checkpoint in STN for reset of the chain. The chain is large, over 2TB, its time to reset and start from scratch.
* link the systems requirements document into the readme
* add enable-debug flag for configure
* Lock cs_main before calling StreamBlockFromDisk in unit tests.
* Remove capability to produce min difficulty blocks on STN. This capability results in regular block competitions and the requirement for stability of the network given unpredictable hash power is already covered by the new DAA.
* Fix CConman shutdown error.
* Add missing mutex lock to orphan txn processing.
* CScriptNum big ints and little ints never mix
* CScriptNum overload commented
* Removed explicitly default constructor that is implicitly invalid
* fix unused op warning
* fix: initialize value or it might have diffrent value then expected
* use separate fd set for exception fds
* fix intended fall through warning
* add script to check seed nodes version
* add stn network magic and network ports constant
* fix warning comparison between unsigned and signed integer
* JournalingBlockAssember unprotected read fix
* OP_CODESEPARATOR tests
* change command line switches to lower case
* CScript print functionality
* bn_op_tests added
* big int activation logic
* CScriptNum using std::variant
* Bug fix in bint::operator<<
* big_int.cpp corrected in Makefile
* CScriptNum Arithmetic operators refactored
* CScriptNum relational operators refactored
* CScriptNum equality operators refactored
* CScriptNum::MinimallyEncode moved to int_serialization.h
* CScript::IsMinimallyEncoded moved to int_serialization.h
* CScriptNum::set_vch replaced with bsv::deserialize
* CScriptNum::serialize replaced with bsv::serialize
* CScriptNum moved to separate file to reduce physical coupling and compile times
* bsv::swap(bint&, bint&) added
* bint remove to_[u]int
* methods
* minor comment correction
* big_int new files added to cmakelists.txt
* big_int replace magic_numbers in static_asserts
* add random block hash to avoid blockfile_reading_tests failing
* copyright notices added to new files
* big integers class/functions added
* Wed Oct 30 2019 marecAATTdetebe.org- Update to version 0.2.2b:
* Version is 0.2.2 (beta)
* Update the release notes to indicate beta status
* Updated Release notes for STN
* update release notes to include the STN reset
* Set checkpoint in STN for reset of the chain. The chain is large, over 2TB, its time to reset and start from scratch.
* Remove capability to produce min difficulty blocks on STN. This capability results in regular block competitions and the requirement for stability of the network given unpredictable hash power is already covered by the new DAA.
* Reset the max orphan lenght to 5000.
* Do not allow the current outpoint to be used again when collecting dependent txns for retry.
* Process all detected double spend txns instead of discarding them.
* Fix possible deadlock identified for Clang thread sanitiser.
* Check if fee estimation can be applied before txn is being validated.
* Fix bug in GetHeightFromCoinbase for very low heights.
* Move GetHeightFromCoinbase() into the block.cpp file.
* Lock cs_main before calling StreamBlockFromDisk in unit tests.
* Add missing mutex lock to orphan txn processing.
* Fix CConman shutdown error.
* Incorrect mempool lock in transaction propagator
* Fix bsv-broadcast_delay.py by adding -txnvalidationasynchrunfreq
* reorder setting diskBlockMetadata to guarantee backward compatibility
* Fix mempool mutex and logging
* Add some extra logging for journal error cases.
* Pass CJournalChangeSetPtrs as const&
* Apply basic journal change sets as early as possible.
* Rename getSimple to getTailAppendOnly.
* Include state message in the log data message for an invalid orphan txn.
* add missing multiple make & job executions in dev jenkinsfile
* Update timeouts for test cases.
* remove the extended tests, for this set of tests we\'re interested in speed of execution
* Remove redundant log message for an orphan txn (all valid cases are alredy covered).
* Solving issues caused by the order of locks.
* lower_bound error fixed for in TxConfirmStats
* Correct log message when an orphan txn is detected
* Remove inputs from the double spend detector only by transaction that added them.
* remove code coverage from dev tests Jenkins file
* Log info update: Read mempool size & dynamic memory usage when txn is commited (in the same call).
* Change default for P2SH acceptance.
* Remove references to P2SH changes from documentation for next release.
* Fix \"use before set\" error in bsv-protoconf-versions-compatibility.py
* Fix ITF in bip68-sequence.py
* Use a larger timeout when syncing the largest block.
* Allow the accepted() timeout to be overridden.
* Update manual pages for ARK release.
* Update release number to 0.2.2
* Update release notes for ARK release candidate.
* FT update: Wait until txn is accepted by the mempool.
* Changing nTransactionsUpdated type to std::atomic_uint
* An interface update for PrioritiseTransaction - passing strHash by a const std::string reference
* Decoupling NotifyEntryAdded signal from smtx. Code formatting.
* Adding a NL suffix for trackPackageRemoved (as it is a non-locking private method).
* Replacing CCriticalSection cs (a recursive mutex) by std::shared_mutex smtx (a shared mutex).
* Changing nCheckFrequency type from uint32_t to std::atomic_uint32_t
* Change return type from bool to void for AddUnchecked & AddUncheckedNL.
* Move AddUncheckedNL to the public interface.
* Introducing a non-locking version of DynamicMemoryUsage
* An interface update: Passing a hash value via const reference.
* Putting back an explicit LOCK(mempool.cs) into blockchain.cpp methods. - At the moment I can not optimize it as CTxMemPoolEntry is not a smart ptr inside mapTx member.
* Moving implementation from .h into .cpp
* Renaming entryToJSON to entryToJSONNL as it requires to take the mempool.cs lock.
* Renaming public methods: Start a method name with a upper-case character.
* Renaming private methods: Start a method name with a lower-case character.
* Renaming private and a non-locking method UpdateForDescendants.
* Introducing a non-locking version of exists which takes Outpoint object as an argument.
* CCoinsViewMemPool: Replacing get & exists by a non-locking versions. A usage of the view is always protected by an explicit LOCK(mempool.cs) call.
* Using CalculateMemPoolAncestorsNL in getmempoolancestors as it is alredy protected by LOCK(mempool.cs)
* Introducing a non-locking version of exists & get.
* Introducing a non-locking version of isSpent
* Replacing a non-locking method CompareDepthAndScoreUnlocked by CompareDepthAndScoreNL
* Replacing a non-locking _clear by clearNL
* - Replacing ApplyDeltas by a non-locking version in AddToBlock, addPriorityTxs methods where LOCK(mempool.cs) is already used. - Replacing CalculateMemPoolAncestors by a non-locking version in addPackageTxs method where LOCK(mempool.cs) is already used. - Changing removeConflicts by a private non-locking version
* Removing an explicit LOCK(mempool.cs) from getmempooldescendants.
* Introducing a private and a non-locking version of: - UpdateForRemoveFromMempoolNL - removeUncheckedNL - RemoveStagedNL - addUncheckedNL - removeRecursiveNL - CalculateDescendantsNL
* Introducing a private and non-locking version of addUnchecked.
* Introducing a private and non-locking version of CalculateMemPoolAncestors
* Interface clean up. Use NL suffix to show which methods are non-locking.
* Submit a valid txn to the mempool in validation thread - Due to existing limitations (related to cs_main lock) TransactionAddedToMempool & Misbehaving calls need to be moved to the Validator thread
* A dedicated FT to verify a processing of P2P txns depending on node\'s configuration. - It allows to configure test cases with and without double spend money issue
* Necessary update for functional tests - Due to an aynchronous processing of txn validation
* A failure during UTs execution in debug mode. The cs_main lock is held by the Validator during txn validation. Removing AssertLogHeld from: - CheckSequenceLock - GetBlockScriptFlags - IsCurrentForFeeEstimation
* Removing an explicit reference to the global object chainActive from ContextualCheckTransactionForCurrentBlock function.
* Protect an access to pfilter during node\'s destruction.
* Introducing cs_invQueries lock to properly protect askedFor structures in mt env.
* Introducing a dedicated lock for scriptExecutionCache - removing dependency between scriptExecutionCache and cs_main lock
* Removing ATMP and related functions
* Activate synchronous validation for txns loaded from a file (LoadMempool) - Enable it using txn Validator
* Activate synchronous validation for reorg txns - Enable it using txn Validator
* Activate synchronous validation for wallet txns - Enable it using txn Validator
* Activate synchronous validation for rpc txns - Enable it using txn Validator
* COrphanTxns: Moving constexpr variables into class.
* Removing old implementation for orphan & compact block extra txns. - UT update
* P2P: Introducing a new support for orphan & compact block extra txns. - Replacing previous implementation
* Replacing ATMP by a new functionality in ProcessTxMessage method
* Adding new methods for CConnman to support P2P txns.
* This commit introduces initial txn validation support for p2p txns. - Introducing asynchronous interface into CTxnValidator - Extending validation support for p2p txns - Create an instance of the Validator - Shutdown validator before propagator - UT update for asynch interface
* Update TrimToSize method to return removed TxIds.
* Removing GetSpendHeight call from CTxMemPool::check.
* Moving orphan txn\'s config from net_processing.h into orphan_txns.h - #include \"orphan_txns.h\" will be removed when legacy code is removed from the file.
* Introducing CTxnValidator class - It supports synchronous validation interface - UTs for the validator
* Moving static FlushStateToDisk function to the header file.
* HasNoInputsOf was not protected by the mempool lock.
* Introducing TxnValidation & ProcessValidatedTxn methods - These two methods will replace ATMP - A basic, initial UT test update to verify correctness - Introducing a new logging tag - P2P txns are not fully supported by this commit
* Support a vector of outpoints to uncache.
* Mt support for CCoinsViewCache.
* CheckSequenceLocks: Take the mempool explicitly by an argument
* Moving check for conflicts with in-mempool transactions into CTxMemPool class.
* class CValidationState: Adding support for a missing inputs.
* Introducing a basic class support for orphan txns - class COrphanTxns
* Introducing a basic class support for recently rejected txns - class CTxnRecentRejects. - Currently, it will be used by p2p txns.
* Introducing a basic class support for double spend detection used during txn validation. - class CTxnDoubleSpendDetector
* Introducing basic classes to support parallel validation - CTxInputData - an instance of this class will be used to represent a txn and all related data required to trigger validation - CTxnValResult - an instance of this class will be used to return a result of validation - A validation config file
* Use GetCurrentThreadId on cross-compile build for Windows.
* Boost.Test: Solving an ambiguous overload for nullptr.
* Missing files in Makefile configuration.
* include thread name only at the beginning of new lines
* Prevent JournalingBlockAssembler from locking same CJournal twice in a single thread
* Fix #define clash with enumeration on some Windows builds.
* Remove std move from return statement
* Move common test functions outside anonymous namespace
* Deletion of dead code
* Replacement of braces around scalar initializer
* add missing using statement requried by MSVC compiler
* fix: Error C2361 initialization of \'journalingAssembler\' is skipped by \'default\' label
* Race condition in p2p node messages access
* process batch of RPC requests in chunks
* remove blockToJSON method
* send blocks in chunks for RPC (for all verbosity options)
* send blocks in chunks for REST (bin, hex, json)
* add functional test for -acceptP2SH
* Discourage usage of P2SH in output script.
* document P2SH policy change
* add support for sending replies in chunks with eventlib
* add HAVE_DECL_DAEMON define to cmake build
* add bitcoin-miner to CMakeLists
* pipe-functionaltests.py edited online with Bitbucket
* Update functional test for journaling assembler.
* Improve the performance of the journal tester.
* Add new RPC commands for controlling the journal.
* Reduce ITFs within bsv-factorMaxSendQueuesBytes.py
* Tests for the new journaling block assembler.
* Ensure the journal is invalidated whenever the tip changes.
* Fix up the factory to create the appropriate block assembler type.
* The new journaling based block assembler.
* Add check for candidate builder being updated.
* Update locking for the journal.
* Refactor common code.
* Add fee and sigops counts to the journal.
* Allow iterating over the current journal.
* Allow block assembler type to be configured.
* Change sets don\'t need to be shared.
* Jenkinsfile edited online with Bitbucket. Removed code coverage on request.
* vNodes in ParallelForEachNode was no longer thread safe
* Additional logging in bsv-factorMaxSendQueuesBytes.py test
* Debug log duration for p2p request processing that takes too long
* Make SendMessage a CNode function
* Wrap net_processing most recent block caching
* Async file reader support for streams
* Use disk block streaming for gettxoutproof rpc request
* Use streams for wallet transaction scanning
* Convert merkle block sending to read block data from a stream
* Stream CBlockHeaderAndShortTxIDs creation from disk block
* Test that calling UnlinkPrunedFiles doesn\'t terminate opened streams
* Move disk block file size and hash info into CBlockIndex class
* Enable block from disk streaming
* Handle block file pruning for files with open file handles
* Added CBlock stream deserialization into CBlockHeader and CTransaction entries
* Extend network streams support to CSerializedNetMsg
* Conversion of message buffer to chunked streaming capable containers
* Added System requirements to manual.
* removig limit to only one OP_RETURN
* Fix failure in mining_journal.py.
* add missing using statements required by MSVC compiler
* update tests data for transactions with data; use os.path.join for joining paths
* Fix the block timestamps so they are not now too far in the future.
* Now build only develop branch, not all; added slack notifications.
* Fix race in mining_api.py
* Add a test method for checking the journal.
* Unit tests for journaling.
* Move ActivateBestChain call inside InvalidateBlock.
* Add hooks for journal change set.
* Allow querying of the current journal size over RPC.
* Classes to support journal tracking of changes to the mempool.
* Add new logging catagory for the journal.
* Allow mempool ancestor count details to be shared.
* Add enum_cast.
* Functional test for transaction ordering and journaling.
* slackSend notifications added
* Jenkinsfile edited online with Bitbucket
* CRYPTO_USE_ASM should be set in CMake list before first use.
* Fix for cmake build when wallet is disabled
* Fix for autotools build when wallet is disabled
* add blockmaxsize switch to avoid all transactions being included in one block
* set bitcoind time to be before activation time
* rename some error messages
* use OP_FALSE OP_RETURN when generating transactions using data through rpc createrawtransaction and bitcoin-tx
* Jenkinsfile edited online with Bitbucket
* Jenkinsfile edited online with Bitbucket
* Jenkinsfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Dockerfile edited online with Bitbucket
* Jenkinsfile edited online with Bitbucket
* cpanm term::readline
* relocated
* relocated under contrib directorY
* devops files relocated here from the top level; appropriate change to Dockerfile
* Update release notes after Orinoco release.
* add thread name in debug log
* Move run_connections to test_framework.py
* new files for the CI pipeline and to execute tests when SV is built
* Add functional tests for protoconf message
* Scale number of transactions we request in single GETDATA message with effective allowed protocol message length of the remote peer (instead of limiting it to 1000) Remove MAX_INV_SZ - it is not used anymore.
* Scale number of entries in mapAskFor and setAskFor with maximum protocol message length.
* Scale the limits for number of INV elements with protocol message size:
* Define protoconf message, send and process protoconf message, define LEGACY_MAX_PROTOCOL_PAYLOAD_LENGTH and MAX_PROTOCOL_SEND_PAYLOAD_LENGTH
* Implement CInv::estimateMaxInvElements
* Rename MAX_PROTOCOL_MESSAGE_LENGTH to MAX_PROTOCOL_RECV_PAYLOAD_LENGTH, rename nMessageSize to nPayloadLength
* Use relative activation time for functional tests.
* add test for logging time difference between block timestamp and received headers timestamp
* Fixed the comment about picking the more honestly mined block
* Merged logging block diff times from Bitcoin ABC
* add test for rest/block for bigger blocks
* remove redundant static object
* Move error messages to Config class to consolidate checks for invalid parameters at once location
* Adding rpc and command line setblockmaxsize
* Removed check in the GlobalConfig::SetMaxGeneratedBlockSize
* add tests for verifyblockcandidate RPC call
* verifyblockcandidate implementation
* Disable USE_ASM when building with autotools
* Documentation for use of sanitizers
* Use of LegacyBlockAssembler as BlockAssembler without virtual destructor
* Fix for CRollingBloomFilter use race condition
* mTemplates variable population should not cause a thread race condition
* Let g_connman terminate propperly
* Deleted unused variable that was experiencing undefined behaviour
* Support for CMake build with clang static analyzer
* Added undefined behaviour sanitizer for gcc and clang development support
* Division by 0 - detected by undefined behaviour sanitizer
* Addition of thread sanitizer
* Race condition detected by thread sanitizer
* Add support for enabling address sanitizer for gcc and clang builds
* sha256_sse4.cpp should not be built if CRYPTO_USE_ASM is disabled
* Remove additional versionbits code, add comments
* Tests for csv (bip9) modified
* Activate CSV using block height (not bip9)
* Remove the rest of BIP9 code
* API change: Remove BIP9 related result and arguments from getblocktemplate
* Remove BIP9 from setting block version
* Remove BIP9 csv activation
* Remove BIP9 version bits warning
* Remove BIP9 associated tests
* Cleanup after backport
* Remove bip9 from getblockchaininfo RPC call
* Remove the -bip9params flag
* Fri Jul 12 2019 marecAATTdetebe.org- Update to version 0.2.1:
* Update release notes
* Update release notes
* Update release notes
* Update Release information
* Fix deep JSON mitigation problem.
* Introduce REJECT_TOOBUSY reject code and timeout when node is overloaded
* Limit total size of currently sending block messages
* add possibility for verbosity argument to be string in getblock call (RAW_BLOCK, DECODE_HEADER, DECODE_TRANSACTIONS)
* add enum for argument verbosity of getblock rpc call
* Move -preload help message from RPC to general section
* add functional tests for getblock
* add checks for incorrect verbosity parameter to RPC getblock
* add comment on implementation of obtaining verbosity value
* refactor TxToJSON() and ScriptPubKeyToJSON()
* Use a verbosity instead of two verbose parameters
* RPC: Allow multiple names for parameters
* Include libgen.h on Linux and Mac.
* Remove duplicate calculation of pindexPrev.
* Replace MAC_OSX define with __APPLE__
* excluding VMTouch code from build on windows
* Rename EncodeLegacyAddr and DecodeLegacyAddr with EncodeBase58Addr and DecodeBase58Addr
* Remove the Bitcoin ABC cashaddr address format
* Tidy up GetMerkleProofBranches()
* Remove unnecessary call to MkBlockTemplateVersionBits().
* Add bounds checking within CBlokc::GetHeightFromCoinbase().
* Update test for -blockvaliditytest flag.
* Make block validity checking from new mining candidate optional.
* Add config option to control whether we run TestBlockValidity().
* Update the OpenBSV license to specifically license test networks.
* array.tostring deprecated alias for tobytes
* OP_FALSE,OP_RETURN behaves in the same way as OP_RETURN
* Removed CScript::IsCommitment because it is not used
* Return info about % of chainstate that is currently loaded in RAM as part of getmmemoryinfo RPC call
* Preload UTXO dataset at startup to speed up transaction validation.
* Tue May 21 2019 marecAATTdetebe.org- Update to version 0.2.0:
* Adding the test for mining from an old block candidate.
* Update unit tests for stricter MiningCandidate interface.
* Record block header fields with mining candidate.
* Update license to belong to Bitcoin Association
* Fix crash with new mining API.
* Minor documentation updates. Add a document for the public keys.
* Optimizing test to reduce memory consumption.
* Improve stability of pruning functional test.
* Update of the release notes for version 0.2.0 and of the Responsible Disclosure Policy.
* Update man pages by contrib/devtools/gen-manpages.sh
* Link with bcrypt.lib when building on Windows. This is required by the new mining API (CORE-13/SV-342) which uses boost uuid library
* Update the copyright and license information in source files.
* Change default for -datacarriersize to 100KB which enables us to relay larger OP_RETURNS by default.
* Move dataCarrierSize, limitDescendantSize and limitAncestorSize to config.
* Set the timeout for block sync during tests to 300 seconds, to support large blocks.
* Performance optimization of mininode serialization code - use \"join\" instead of \".\" when concatenating arrays
* Removed remaining usage of global constants DEFAULT_MAX_BLOCK_SIZE and DEFAULT_MAX_GENERATED_BLOCK_SIZE, since defaults are now network specific. Updated HelpMessage() to reflect new meaning of command line switches -blockmaxsize and -excessiveblocksize
* Added unit test for block size related configuration
* Unit test cleanup
* Removed workaround introduced in 81dc539b. It made sense when configuraiton values were stored in global variables. They were later moved to instance variables making this code noop.
* Make sure that GlobalConfig::SetDefaultBlockSizeParams has been called before using GLobalConfig
* added added -blocksizeactivationtime parameter, added GetMax[Generated]BlockSize overloads that take time and use them when mining/validating blocks
* -blockmaxsize moved to config
* Added DefaultBlockSizeParam to config, which are initialized per-chain. Activation is not implemented in this commit.
* Rename Block::GetHeight() to GetHeightFromCoinbase() to be more specific.
* Use static hasher when checking transactions.
* Only call CheckBlock() once when validating a new block template.
* Add an entry for bitcoin-cli to convert coinbase arg to getminingcandidate.
* Fixup example CPU miner to work with the new API.
* Remove old mining test.
* A test for the new mining API.
* Complete submitminingsolution.
* Use a UUID for the mining candidate IDs.
* Add coinbaseValue to result of getminingcandidate.
* Make provision of coinbase txn by getminingcandidate optional.
* Allow user to specify timeout for sync_all()
* Allow overriding of test binary from within test.
* Add for secp256k1 & univalue tests as well
* Update release notes for v0.2.0
* Insert original license holder.
* Update the license to the Open BSV License.
* Add missing \'make\' optimization for code coverage step
* Replace more references to BCH with BSV
* Fix MSVC build by adding a static cast in ReadVarInt to handle template instantiations that still incorrectly use signed int.
* Refactor CMiningCandidate into its own full class with its own manager.
* Refactor CBlockTemplate. Convert the block member object to a shared pointer.
* Refactor BlockAssembler. Create interface BlockAssembler & rename class to LegacyBlockAssembler. Add CMiningFactory.
* re-organise mining into sub-directory
* Added initial help text
* Incorrect comments syntax.
* Fixes as a result of code-review.
* Changes in response to pull request review and issue found by Brad with block chain height in coinbase in getminingcandidate
* New BU-spec mining interface (getminingcandidate)
* First tested version of BU getminingcandidate iterface - includes CPU miner (bitcoin-miner)
* Initial implementation of getminingcandidate and submitminingsolution.
* Add new checkpoint (block 2951) to STN.
* change name of log file to bitcoind.log from debug.log (part #3) - documentation and comments
* change name of log file to bitcoind.log from debug.log (part #2) - source code
* Fix ITF in example_test.py
* Test sending blocks larger than default preferredBlockfileSize
* parametrize excessive_block_size in test
* make blockFileSize configurable, rename MAX_BLOCKFILE_SIZE global variable - it now reflects preferred file size
* Add missing blockfileinfostore.h for gitian build.
* Add command line option -rejectmempoolrequest. When present, P2P mempool request form non-whitelisted peers are rejected. Updated p2p-mempool test
* Bump ZeroMQ version to 4.3.1
* Set DEFAULT_RUN_FREQUENCY_MILLIS to 250ms.
* Set default broadcastDelay to 150ms, add tests for broadcastDelay
* remove max ecessive size relation to max block file size
* Remove mallopt setting for 32-bit systems.
* Remove dead code related to ABC\'s forced obsolescence
* Remove tests related to ABC\'s forced obsolescence and regenerate sighash.json
* Use C++11 default initialisation for CNode.
* Add test for unsolicited addr messages.
* Add addresscount field to getnetworkinfo RPC command.
* Don\'t relay additional addresses on outbound connections.
* Ignore unsolicited ADDR messages.
* Removed GetBlockFileInfo from validation.h
* Moved CBlokFileStore related functions to a separate file
* Fix log spamming issue.
* Add comments
* Back to parallel jobs in functional tests
* Add leveldb tests
* Add Jenkinsfile
* Moved Open
*File family of functions to a helper class. Moved part of reindexing code into ReindexAllBlockFiles (validation.cpp) to make it possible to remove OpenBlockFile from validation.h
* Moved global setDirtyFileInfo to CBlockFileInfoStore
* Removed globals cs_LastBlockFile, vinfoBlockFile and nLastBlockFile - they have been moved to CBlockFileInfoStore
* Added CBlockFileInfoStore::GetLock() and used that instead of single remaining usage of global cs_LastBlockFile. Removing call to LOCK() FlushStateToDisk (line 2418) is not the option despite the fact, that some of the CBlockFileInfoStore functions already acquire the same lock and we could add locking to the remaining few. This would change locking semantic from a lock that is held for whole period from line to 2418 to line 2556 to multiple non-continuous locking of the same lock. In periods when lock is not held, another thread could perform modifications to pBlockFileInfoStore resulting in possible inconsistent state.
* Added accessor CBlockFileInfoStore::GetnLastBlockFile()
* Added accessor CBlockFileInfoStore::GetBlockFileInfo
* Extracted code to CBlockFileInfoStore::Clear
* Extracted code into CBlockFileInfoStore::ClearFileInfo()
* Extracted method CBlockFileInfoStore::GetAndClearDirtyFileInfo()
* Extracted loading code into CBlockFileInfoStore::LoadBlockFileInfo method.
* Moved FlushBlockFile into CBlockFileInfoStore
* Moved FindUndoPos into CBlockFileInfoStore, changed signature to remove direct usage of global variable fCheckForPruning
* Moved FindFilesToPruneManual into CBlockFileInfoStore
* Moved FindFilesToPrune into CBlockFileInfoStore
* Moved FindBlockPos into CBlockFileInfoStore, added explicit parameter fCheckForPruning
* Moved CalculateCurrentUsage int class. This (and further commits) are WIP. The code compiles, but it will not work until refactoring is finished.
* Added comment about BLOCKFILE_BLOCK_HEADER_SIZE
* Remove special branch for reconfiguring pipeline
* Fixed executable flags on python files
* Added Windows build documentation
* Added `--buildconfig` parameter to specify which Windows build configuration is used by functional test runner. On windows, copy test runner (and associated files) to build directory instead of creating symbolic links to them. CMake\'s make_link does not work on Windows and creating symbolic links through Window\'s mklink required elevated privileges.
* Skip symlink wallet test on windows, where users usually do not have SeCreateSymbolicLinkPrivilege activated.
* Fix versionbits functional tests. When running \"echo \'x y\' >somefile\", Windows will store single quotes as part of the file content, but Linux will not. To handle both cases, we we now search for substring instead of exact match
* use cross platform filenames in wallet_dump functional test
* Do not globally import fcntl in functional tests. It is not present (nor used) on Windows
* Remove --forced from test_runner.py. Functional tests are not disabled on Windows anymore
* qa: Prepare functional tests for Windows
* MSVC compatibility: fix signed/unsigned mismatch error
* bench: prefer a steady clock if the resolution is no worse
* bench: switch to std::chrono for time measurements
* Remove countMaskInv caching in bench framework
* Removed bitcoin seeder from MSVC build since it is not cross platform
* MSVC compatibility: exclude secp2561k benchmarks from MSVC build, since they use non standard time functions
* MSVC compatibility: Removed dependency on BDB C API- we still used BDB_CXX. Use versioned library name with MSVC
* MSVC compatibility: linq targets that use zmq with ip helper
* MSVC compatibility: test_bitcon now uses cross platform way of finding python. Bumped dependency to python3 (that is also used by functional tests)
* MSVC compatibility: link with crypt32.lib - required for openssl
* MSVC compatibility: fix compiler options - use static runtime (/MT), undefine NDEBUG
* MSVC compatibility: fix zmq library name
* MSVC compatibility: use supported scalar and field implementations that do not required inline assembly or int128 support (but is probably slower)
* Fixed check_builtin_exist() CMAKE macro that failed to correctly set the value of cahced variables resulting in incorrect #defines
* Resolved initialization order warning
* Generate bench block-header-include in platform independent way
* Squelch non-virtual destructor warning
* Convert C-style casts to reinterpret_cast
* MSVC and clang compatibility: random_shuffle has been removed from C++17. Use std:suffle instead
* MSVC compatibility: do not use designated initializers (c++20)
* MSVC compatibility: include cstdint, define ssize_t, do not use ssize_t for NUM_OS_RANDOM_BYTES
* MSVC compatibility: levedb fixes: - define ssize_t, - undefine snprintf macro - do not include unistd.h
* MSVC compatibility: Use .data() instead of std::begin() to get pointer to the first byte of std::array, since std::begin() returns an iterator which is not implicitly convertible to void
*
* Remove magnetic activation parameters and check function.
* Remove check for re-org across the magnetic upgrade point.
* Remove the SCRIPT_ENABLE_MAGNETIC_OPCODES flag.
* Remove the magnetic upgrade 128MB block size activation.
* Remove MAGNETIC_MAX_OPS_PER_SCRIPT.
* Increase max no of opcodes per script to 500, independently of the magnetic upgrade.
* Remove magnetic activation for the re-enabled opcodes.
* By default only build for amd_64.
* Code fixes for C++17.
* Add windows Gitian build.
* Riscv64 fixups.
* Replace gitain-build.sh with gitian-build.py
* Update symbol-check.py to latest version from ABC.
* Wrap log2f and __divmoddi4 functions.
* Update gitian-linux.yml.
* Fixup ITF in function test.
* Fix race in ActivateBestChain()
* Return after processing reject.
* Tidy up Misbehaving locks.
* Refactor P2P message processing.
* C++17 for cmake
* fix typo - error message after return
* bitbucket pipeline for C++17
* add testnet seeder
* typo in seed name
* Update build docs for newer GCC version.
* Update m4 build macros.
* Update the build to mandate C++17.
* add txn_propagator to CMakeLists.txt
* Updates after another review
* Updates following code reviews
* fixed test for 32-bit build and changed the json parse depth default value to be constexpr rather than a magic number in the constructor
* Removed the conditional build of the JSON parse checking
* Updates after comments from the previous pull requests
* Updates for comments after the previous pull request
* Commit updated tests for bloom filters
* Fixed rebase/merge conflict
* Updated tests for bloom filters, blockcheck sizes and serializing data
* Fixed rebase/merge conflict
* Updated both BloomFilter constructors to throw an exception in the event of invalid parameters
* Fix to mitigate a possible stack exhaustion during JSON deallocation
* Fix for undefined behaviour if an incorrect or invalid argument is passed to the Bloom filter constructor
* Allow user to set magicByte separating testnet
* Tue Feb 12 2019 marecAATTdetebe.org- Update to version 0.1.1:
* updated release notes
* change name of log file to bitcoind.log from debug.log
* Add txn src logging.
* Allow logging to multiple catagories.
* correct nPruneAfterHeight for STN
* update test to be independent of version
* Updates for release 0.1.1
* Fixup lcov make target.
* use DEFAULT_MAX_BLOCK_SIZE
* Bump protocol message length
* add unit tests for CMessageHeader from protocol.[h|cpp]
* Sat Jan 05 2019 marecAATTdetebe.org- initial package build