aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
AgeCommit message (Collapse)Author
2012-11-15Introduce script verification flagsPieter Wuille
These flags select features to be enabled/disabled during script evaluation/checking, instead of several booleans passed along. Currently these flags are defined: * SCRIPT_VERIFY_P2SH: enable BIP16-style subscript evaluation * SCRIPT_VERIFY_STRICTENC: enforce strict adherence to pubkey/sig encoding standards.
2012-11-10fix some missing indentations in main.cpp for better readabilityPhilip Kaufmann
2012-11-09Add -reindex, to perform in-place reindexing of block chain filesPieter Wuille
Flushes the blktree/ and coins/ databases, and reindexes the block chain files, as if their contents was loaded via -loadblock. Based on earlier work by Jeff Garzik.
2012-11-09Move ThreadImport to init.cppPieter Wuille
2012-11-09LoadExternalBlockFile switched to CBufferedFilePieter Wuille
2012-11-04Cache size optimizationsPieter Wuille
2012-10-29Remove P2SH transition code: P2SH violations may cause DoS triggerPieter Wuille
2012-10-25Merge pull request #1904 from laanwj/2012_10_remove_getorderPieter Wuille
remove "checkorder" P2P command
2012-10-25Merge pull request #1953 from gmaxwell/createnewblock-racePieter Wuille
Fixes a race condition in CreateNewBlock and a future null deref on testnet.
2012-10-25Merge pull request #1926 from laanwj/2012_10_maindummyboundsWladimir J. van der Laan
Fix out-of-bounds read in main (issue #1924)
2012-10-25Show warning when using prerelease versionWladimir J. van der Laan
Implements #1948 - Add macro `CLIENT_VERSION_IS_RELEASE` to clientversion.h - When running a prerelease (the above macro is `false`): - In UI, show an orange warning bar at the top. This will be used for other warnings (and alerts) as well, instead of the status bar. - For `bitcoind`, show the warning in the "errors" field in `getinfo` response.
2012-10-24Fix out-of-bounds read noticed by Ricardo CorreiaWladimir J. van der Laan
Sizeof() returned the size of a pointer instead of the size of the buffer. Fixes issue #1924.
2012-10-24Fixes a race condition in CreateNewBlock and a future null deref on testnet.Gregory Maxwell
CreateNewBlock was reading pindexBest at the start before taking the lock so it was possible to have the the block content not match the prevheader and this can also trigger a newly added assert in ConnectBlock. I noticed this during a code review after twobitcoins reported that ab91bf39 (BIP30 for all blocks) could cause a null dereference on a modified node that mined during the IBD, or on testnet when it reached heights 91842 and 91880 due to CreateNewBlock calling ConnectBlock with pindex->phashBlock NULL.
2012-10-23Bugfix: actually use CCoinsViewMemPoolPieter Wuille
2012-10-23Added some commentsPieter Wuille
Some clarifications after a code review by Mike Hearn.
2012-10-23Bugfix: off-by-one in priority calculationPieter Wuille
2012-10-23Bugfix: add missing fee checkPieter Wuille
2012-10-23Bugfix: off-by-one error in coinbase maturity checkPieter Wuille
2012-10-21change blockchain -> block chain (spelling)Philip Kaufmann
- Wiki says "block chain" is correct ;) - remove some unneeded spaces I found in the source, while fixing the spelling
2012-10-21remove init messages from ThreadImport()Philip Kaufmann
- remove uiInterface.InitMessage() calls from ThreadImport(), as Qt doesn't like them getting called out of it's main thread and because the thread will continue to run after the GUI was loaded
2012-10-20Add gettxout and gettxoutsetinfo RPCsPieter Wuille
2012-10-20LevelDB block and coin databasesPieter Wuille
Split off CBlockTreeDB and CCoinsViewDB into txdb-*.{cpp,h} files, implemented by either LevelDB or BDB. Based on code from earlier commits by Mike Hearn in his leveldb branch.
2012-10-20Flush and sync block dataPieter Wuille
2012-10-20Use singleton block tree database instancePieter Wuille
2012-10-20Prepare database format for multi-stage block processingPieter Wuille
This commit adds a status field and a transaction counter to the block indexes.
2012-10-20Direct CCoins referencesPieter Wuille
To prevent excessive copying of CCoins in and out of the CCoinsView implementations, introduce a GetCoins() function in CCoinsViewCache with returns a direct reference. The block validation and connection logic is updated to require caching CCoinsViews, and exploits the GetCoins() function heavily.
2012-10-20Transaction hash cachingPieter Wuille
Use CBlock's vMerkleTree to cache transaction hashes, and pass them along as argument in more function calls. During initial block download, this results in every transaction's hash to be only computed once.
2012-10-20Batch block connection during IBDPieter Wuille
During the initial block download (or -loadblock), delay connection of new blocks a bit, and perform them in a single action. This reduces the load on the database engine, as subsequent blocks often update an earlier block's transaction already.
2012-10-20UltraprunePieter Wuille
This switches bitcoin's transaction/block verification logic to use a "coin database", which contains all unredeemed transaction output scripts, amounts and heights. The name ultraprune comes from the fact that instead of a full transaction index, we only (need to) keep an index with unspent outputs. For now, the blocks themselves are kept as usual, although they are only necessary for serving, rescanning and reorganizing. The basic datastructures are CCoins (representing the coins of a single transaction), and CCoinsView (representing a state of the coins database). There are several implementations for CCoinsView. A dummy, one backed by the coins database (coins.dat), one backed by the memory pool, and one that adds a cache on top of it. FetchInputs, ConnectInputs, ConnectBlock, DisconnectBlock, ... now operate on a generic CCoinsView. The block switching logic now builds a single cached CCoinsView with changes to be committed to the database before any changes are made. This means no uncommitted changes are ever read from the database, and should ease the transition to another database layer which does not support transactions (but does support atomic writes), like LevelDB. For the getrawtransaction() RPC call, access to a txid-to-disk index would be preferable. As this index is not necessary or even useful for any other part of the implementation, it is not provided. Instead, getrawtransaction() uses the coin database to find the block height, and then scans that block to find the requested transaction. This is slow, but should suffice for debug purposes.
2012-10-20Pre-allocate block and undo files in chunksPieter Wuille
Introduce a AllocateFileRange() function in util, which wipes or at least allocates a given range of a file. It can be overriden by more efficient OS-dependent versions if necessary. Block and undo files are now allocated in chunks of 16 and 1 MiB, respectively.
2012-10-20Multiple blocks per filePieter Wuille
Change the block storage layer again, this time with multiple files per block, but tracked by txindex.dat database entries. The file format is exactly the same as the earlier blk00001.dat, but with smaller files (128 MiB for now). The database entries track how many bytes each block file already uses, how many blocks are in it, which range of heights is present and which range of dates.
2012-10-20Preliminary undo file creationPieter Wuille
Create files (one per block) with undo information for the transactions in it.
2012-10-20One file per blockPieter Wuille
Refactor of the block storage code, which now stores one file per block. This will allow easier pruning, as blocks can be removed individually.
2012-10-20Compact serialization for amountsPieter Wuille
Special serializer/deserializer for amount values. It is optimized for values which have few non-zero digits in decimal representation. Most amounts currently in the txout set take only 1 or 2 bytes to represent.
2012-10-20Merge pull request #1880 from sipa/threadimportJeff Garzik
Move external block import to separate thread
2012-10-20Merge pull request #1742 from sipa/canonicalJeff Garzik
Check for canonical public keys and signatures
2012-10-20Move external block import to separate threadPieter Wuille
2012-10-08Merge pull request #1834 from jgarzik/kickblocksJeff Garzik
P2P: Do not request blocks from peers with fewer blocks than us
2012-10-08Revert "Send 'mempool' P2P command at the start of each P2P session"Jeff Garzik
Fat-fingered on github, and merged this too early. This reverts commit 22f9b069035c9ba0416a62714db167eea5ba762f.
2012-10-08Merge pull request #1833 from jgarzik/mempool-queryJeff Garzik
Send 'mempool' P2P command at the start of each P2P session
2012-10-03remove "checkorder" and "reply" P2P commandsWladimir J. van der Laan
These command are a leftover from send-to-IP transactions, which have been removed a long time ago. Also removes CNode::mapRequests and CNode::PushRequests, as these were only used for the mentioned commands.
2012-10-01fix -Wformat warnings all over the sourcePhilip Kaufmann
2012-09-24Send 'mempool' P2P command at the start of each P2P sessionJeff Garzik
to query remote node mempool contents.
2012-09-24P2P: Do not request blocks from peers with fewer blocks than usJeff Garzik
If the remote node has a shorter chain, do not waste our special getblocks request on them.
2012-09-21Check for canonical public keys and signaturesPieter Wuille
Only enabled inside tests for now.
2012-09-18When rejected TX relay due to lack of fees, log full txidJeff Garzik
2012-09-18Merge pull request #1812 from jgarzik/misc-07Jeff Garzik
Two minor generic cleanups done during OP_DROP hacking
2012-09-09Apply BIP30 checks to all blocks except the two historic violations.Gregory Maxwell
Matt pointed out some time ago that there existed a minor DOS attack where a node in its initial block download could be wedged by an overwrite attack in a fork created between checkpoints before a time where BIP30 was enforced. Now that the BIP30 timestamp is irreversibly past the check can be more aggressive and apply to all blocks except the two historic violations.
2012-09-09Improve debug logging, for mempool TXs that do not include sufficient feesJeff Garzik
2012-09-09Cosmetic: move CTransaction::GetMinFee out of header fileJeff Garzik