diff --git a/README.md b/README.md index b5e79384..5a03c5f2 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -Copyright (c) 2014-2016 GCOIN Foundation +Copyright (c) 2014-2016 Gcoin Foundation -What is GCOIN? +What is Gcoin? ---------------- -GCOIN blockchain protocol is an open-source software. -GCOIN is built for next-generation digital infrastructure, the distributed ledger. +Gcoin blockchain protocol is an open-source software. +Gcoin is built for next-generation digital infrastructure, the distributed ledger. For more information, see http://g-coin.org, or go to the [help forum](https://groups.google.com/forum/#!forum/gcoins). License ------- -GCOIN is released under the terms of the Apache License 2.0. See [COPYING](COPYING) for more +Gcoin is released under the terms of the Apache License 2.0. See [COPYING](COPYING) for more information or see http://www.apache.org/licenses/LICENSE-2.0.html. Development process @@ -20,13 +20,12 @@ Development process Developers work in their own trees, then submit pull requests when they think their feature or bug fix is ready. -If it is a simple/trivial/non-controversial change, then one of the GCOIN +If it is a simple/trivial/non-controversial change, then one of the Gcoin development team members simply pulls it. The patch will be accepted if there is broad consensus that it is a good thing. -Developers should expect to rework and resubmit patches if the code doesn't -match the project's coding conventions (see [doc/coding.md](doc/coding.md)) or are -controversial. +Developers should expect to rework and resubmit patches if the code is +controversial. See [Developer-notes](doc/developer-notes.md) for more information. Testing @@ -73,24 +72,15 @@ on all categories (and give you a very large debug.log file). The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt to see it. -**testnet and regtest modes** - -Run with the -testnet option to run with "play bitcoins" on the test network, if you -are testing multi-machine code that needs to operate across the internet. - -If you are testing something that can run on one machine, run with the -regtest option. -In regression test mode blocks can be created on-demand; see qa/rpc-tests/ for tests -that run in -regest mode. - **DEBUG_LOCKORDER** -GCOIN Core is a multithreaded application, and deadlocks or other multithreading bugs +Gcoin Core is a multithreaded application, and deadlocks or other multithreading bugs can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of what locks are held, and adds warning to the debug.log file if inconsistencies are detected. Help Forums --------------------------- -Post questions and get advice from other people using GCOIN. +Post questions and get advice from other people using Gcoin. https://groups.google.com/forum/#!forum/gcoins diff --git a/doc/Doxyfile b/doc/Doxyfile deleted file mode 100644 index fa16582f..00000000 --- a/doc/Doxyfile +++ /dev/null @@ -1,1752 +0,0 @@ -# Doxyfile 1.7.4 - -# !!! Invoke doxygen from project root using: -# doxygen doc/Doxyfile - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = Bitcoin - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 0.11.0 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer -# a quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "P2P Digital Currency" - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - -PROJECT_LOGO = doc/bitcoin_logo_doxygen.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc/doxygen - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and -# unions are shown inside the group in which they are included (e.g. using -# @ingroup) instead of on a separate page (for HTML and Man pages) or -# section (for LaTeX and RTF). - -INLINE_GROUPED_CLASSES = NO - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to -# do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even -# if there is only one candidate or it is obvious which candidate to choose -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = src - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.py \ - *.f90 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = src/leveldb src/json src/test /src/qt/test - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = boost google - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - -FILTER_SOURCE_PATTERNS = - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. Note that when using a custom header you are responsible -# for the proper inclusion of any scripts and style sheets that doxygen -# needs, which is dependent on the configuration options used. -# It is adviced to generate a default header using "doxygen -w html -# header.html footer.html stylesheet.css YourConfigFile" and then modify -# that header. Note that the header is subject to change so you typically -# have to redo this when upgrading to a newer version of doxygen or when -# changing the value of configuration settings such as GENERATE_TREEVIEW! - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that -# the files will be copied as-is; there are no commands or markers available. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values -# (range [0,1..20]) that doxygen will group on one line in the generated HTML -# documentation. Note that a value of 0 will completely suppress the enum -# values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. - -USE_MATHJAX = NO - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the -# mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvantages are that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for -# the generated latex document. The footer should contain everything after -# the last chapter. If it is left blank doxygen will generate a -# standard footer. Notice: only use this tag if you know what you are doing! - -LATEX_FOOTER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# pointed to by INCLUDE_PATH will be searched when a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that -# overrules the definition found in the source code. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called Helvetica to the output -# directory and reference it in all dot files that doxygen generates. -# When you want a differently looking font you can specify the font name -# using DOT_FONTNAME. You need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = YES - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = YES - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are svg, png, jpg, or gif. -# If left blank png will be used. - -DOT_IMAGE_FORMAT = svg - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - -MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/doc/README.md b/doc/README.md index bf306e87..4b80919d 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,78 +1,41 @@ -Bitcoin Core 0.11.0 +Gcoin Core 1.2.1 ===================== Setup --------------------- -[Bitcoin Core](http://bitcoin.org/en/download) is the original Bitcoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Bitcoin transactions (which is currently several GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. - -Running ---------------------- -The following are some helpful notes on how to run Bitcoin on your native platform. - -### Unix - -You need the Qt4 run-time libraries to run Bitcoin-Qt. On Debian or Ubuntu: - - sudo apt-get install libqtgui4 - -Unpack the files into a directory and run: - -- bin/32/bitcoin-qt (GUI, 32-bit) or bin/32/gcoind (headless, 32-bit) -- bin/64/bitcoin-qt (GUI, 64-bit) or bin/64/gcoind (headless, 64-bit) - - - -### Windows - -Unpack the files into a directory, and then run bitcoin-qt.exe. - -### OSX - -Drag Bitcoin-Qt to your applications folder, and then run Bitcoin-Qt. +[Gcoin Core](https://github.com/OpenNetworking/gcoin-community) is the original Gcoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Gcoin transactions; depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. ### Need Help? -* See the documentation at the [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page) +* See the documentation at the [Gcoin Wiki](https://github.com/OpenNetworking/gcoin-community/wiki) for help and more information. -* Ask for help on [#bitcoin](http://webchat.freenode.net?channels=bitcoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net?channels=bitcoin). -* Ask for help on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Technical Support board](https://bitcointalk.org/index.php?board=4.0). +* Ask for help on the [Gcoin](https://groups.google.com/forum/#!forum/gcoins) forums. Building --------------------- -The following are developer notes on how to build Bitcoin on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc. +The following are developer notes on how to build Gcoin on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc. -- [OSX Build Notes](build-osx.md) - [Unix Build Notes](build-unix.md) -- [Gitian Building Guide](gitian-building.md) Development --------------------- -The Bitcoin repo's [root README](https://github.com/bitcoin/bitcoin/blob/master/README.md) contains relevant information on the development process and automated testing. +The Gcoin repo's [root README](https://github.com/OpenNetworking/gcoin-community/blob/develop/README.md) contains relevant information on the development process and automated testing. - [Developer Notes](developer-notes.md) -- [Multiwallet Qt Development](multiwallet-qt.md) -- [Release Notes](release-notes.md) -- [Release Process](release-process.md) -- [Source Code Documentation (External Link)](https://dev.visucore.com/bitcoin/doxygen/) -- [Translation Process](translation_process.md) -- [Translation Strings Policy](translation_strings_policy.md) - [Unit Tests](unit-tests.md) - [Unauthenticated REST Interface](REST-interface.md) - [BIPS](bips.md) -- [Dnsseed Policy](dnsseed-policy.md) ### Resources -* Discuss on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Development & Technical Discussion board](https://bitcointalk.org/index.php?board=6.0). -* Discuss on [#bitcoin-dev](http://webchat.freenode.net/?channels=bitcoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net/?channels=bitcoin-dev). +* Discuss on the [Gcoin](https://groups.google.com/forum/#!forum/gcoins) forums. ### Miscellaneous -- [Assets Attribution](assets-attribution.md) - [Files](files.md) -- [Tor Support](tor.md) - [Init Scripts (systemd/upstart/openrc)](init.md) License --------------------- Distributed under the [MIT software license](http://www.opensource.org/licenses/mit-license.php). This product includes software developed by the OpenSSL Project for use in the [OpenSSL Toolkit](https://www.openssl.org/). This product includes -cryptographic software written by Eric Young ([eay@cryptsoft.com](mailto:eay@cryptsoft.com)), and UPnP software written by Thomas Bernard. +cryptographic software written by Eric Young ([eay@cryptsoft.com](mailto:eay@cryptsoft.com)), and UPnP software written by Thomas Bernard. This +product includes software developed by the Crypto++ Project for use in the [Crypto++ Library](https://www.cryptopp.com). diff --git a/doc/README_osx.txt b/doc/README_osx.txt deleted file mode 100644 index a572c7a2..00000000 --- a/doc/README_osx.txt +++ /dev/null @@ -1,83 +0,0 @@ -Deterministic OSX Dmg Notes. - -Working OSX DMGs are created in Linux by combining a recent clang, -the Apple's binutils (ld, ar, etc), and DMG authoring tools. - -Apple uses clang extensively for development and has upstreamed the necessary -functionality so that a vanilla clang can take advantage. It supports the use -of -F, -target, -mmacosx-version-min, and --sysroot, which are all necessary -when building for OSX. A pre-compiled version of 3.2 is used because it was not -available in the Precise repositories at the time this work was started. In the -future, it can be switched to use system packages instead. - -Apple's version of binutils (called cctools) contains lots of functionality -missing in the FSF's binutils. In addition to extra linker options for -frameworks and sysroots, several other tools are needed as well such as -install_name_tool, lipo, and nmedit. These do not build under linux, so they -have been patched to do so. The work here was used as a starting point: -https://github.com/mingwandroid/toolchain4 - -In order to build a working toolchain, the following source packages are needed -from Apple: cctools, dyld, and ld64. - -These tools inject timestamps by default, which produce non-deterministic -binaries. The ZERO_AR_DATE environment variable is used to disable that. - -This version of cctools has been patched to use the current version of clang's -headers and and its libLTO.so rather than those from llvmgcc, as it was -originally done in toolchain4. - -To complicate things further, all builds must target an Apple SDK. These SDKs -are free to download, but not redistributable. -To obtain it, register for a developer account, then download the XCode 6.1.1 dmg: -https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6.1.1/xcode_6.1.1.dmg - -This file is several gigabytes in size, but only a single directory inside is -needed: Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk - -Unfortunately, the usual linux tools (7zip, hpmount, loopback mount) are incapable of opening this file. -To create a tarball suitable for gitian input, mount the dmg in OSX, then create it with: - $ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.9.sdk.tar.gz MacOSX10.9.sdk - - -The gitian descriptors build 2 sets of files: Linux tools, then Apple binaries -which are created using these tools. The build process has been designed to -avoid including the SDK's files in Gitian's outputs. All interim tarballs are -fully deterministic and may be freely redistributed. - -genisoimage is used to create the initial DMG. It is not deterministic as-is, -so it has been patched. A system genisoimage will work fine, but it will not -be deterministic because the file-order will change between invocations. -The patch can be seen here: -https://raw.githubusercontent.com/theuni/osx-cross-depends/master/patches/cdrtools/genisoimage.diff -No effort was made to fix this cleanly, so it likely leaks memory badly. But -it's only used for a single invocation, so that's no real concern. - -genisoimage cannot compress DMGs, so afterwards, the 'dmg' tool from the -libdmg-hfsplus project is used to compress it. There are several bugs in this -tool and its maintainer has seemingly abandoned the project. It has been forked -and is available (with fixes) here: https://github.com/theuni/libdmg-hfsplus . - -The 'dmg' tool has the ability to create DMGs from scratch as well, but this -functionality is broken. Only the compression feature is currently used. -Ideally, the creation could be fixed and genisoimage would no longer be necessary. - -Background images and other features can be added to DMG files by inserting a -.DS_Store before creation. The easiest way to create this file is to build a -DMG without one, move it to a device running OSX, customize the layout, then -grab the .DS_Store file for later use. That is the approach taken here. - -As of OSX Mavericks (10.9), using an Apple-blessed key to sign binaries is a -requirement in order to satisfy the new Gatekeeper requirements. Because this -private key cannot be shared, we'll have to be a bit creative in order for the -build process to remain somewhat deterministic. Here's how it works: - -- Builders use gitian to create an unsigned release. This outputs an unsigned - dmg which users may choose to bless and run. It also outputs an unsigned app - structure in the form of a tarball, which also contains all of the tools - that have been previously (deterministically) built in order to create a - final dmg. -- The Apple keyholder uses this unsigned app to create a detached signature, - using the script that is also included there. -- Builders feed the unsigned app + detached signature back into gitian. It - uses the pre-built tools to recombine the pieces into a deterministic dmg. diff --git a/doc/README_windows.txt b/doc/README_windows.txt deleted file mode 100644 index edff8a93..00000000 --- a/doc/README_windows.txt +++ /dev/null @@ -1,23 +0,0 @@ -Bitcoin Core 0.11.0 -===================== - -Intro ------ -Bitcoin is a free open source peer-to-peer electronic cash system that is -completely decentralized, without the need for a central server or trusted -parties. Users hold the crypto keys to their own money and transact directly -with each other, with the help of a P2P network to check for double-spending. - - -Setup ------ -Unpack the files into a directory and run bitcoin-qt.exe. - -Bitcoin Core is the original Bitcoin client and it builds the backbone of the network. -However, it downloads and stores the entire history of Bitcoin transactions; -depending on the speed of your computer and network connection, the synchronization -process can take anywhere from a few hours to a day or more. - -See the bitcoin wiki at: - https://en.bitcoin.it/wiki/Main_Page -for more help and information. diff --git a/doc/assets-attribution.md b/doc/assets-attribution.md deleted file mode 100644 index c6da1a45..00000000 --- a/doc/assets-attribution.md +++ /dev/null @@ -1,46 +0,0 @@ -The following is a list of assets used in the bitcoin source and their proper attribution. - -[Typicons/Stephen Hutchings](http://typicons.com) ------------------------ - -### Info -* Icon Pack: Typicons (http://typicons.com) -* Designer: Stephen Hutchings (and more) -* License: MIT -* Site: [https://github.com/stephenhutchings/typicons.font](https://github.com/stephenhutchings/typicons.font) - -### Assets Used - src/qt/res/icons/add.png, src/qt/res/icons/address-book.png, - src/qt/res/icons/configure.png, src/qt/res/icons/connect4.png, - src/qt/res/icons/debugwindow.png, src/qt/res/icons/edit.png, - src/qt/res/icons/exitcopy.png, src/qt/res/icons/editpaste.png, - src/qt/res/icons/export.png, src/qt/res/icons/eye.png, - src/qt/res/icons/filesave.png, src/qt/res/icons/history.png, - src/qt/res/icons/info.png, src/qt/res/icons/key.png, - src/qt/res/icons/lock_*.png, src/qt/res/icons/open.png, - src/qt/res/icons/overview.png, src/qt/res/icons/quit.png, - src/qt/res/icons/receive.png, src/qt/res/icons/remove.png, - src/qt/res/icons/send.png, src/qt/res/icons/synced.png, - src/qt/res/icons/transaction*.png, src/qt/res/icons/tx_output.png, - src/qt/res/icons/warning.png - -Jonas Schnelli ------------------------ - -### Info -* Designer: Jonas Schnelli -* Bitcoin Icon: (based on the original bitcoin logo from Bitboy) -* Some icons are based on Stephan Hutchings Typicons -* License: MIT - -### Assets Used - src/qt/res/icons/about.png, src/qt/res/icons/about_qt.png, - src/qt/res/icons/bitcoin.icns, src/qt/res/icons/bitcoin.ico, - src/qt/res/icons/bitcoin.png, src/qt/res/icons/clock*.png, - src/qt/res/icons/connect[0-3].png, src/qt/res/icons/eye_minus.png, - src/qt/res/icons/eye_plus.png, src/qt/res/icons/verify.png, - src/qt/res/icons/tx_inout.png, src/qt/res/icons/tx_input.png, - src/qt/res/src/verify.svg, src/qt/res/src/bitcoin.svg, - src/qt/res/src/clock*.svg, src/qt/res/src/connect*.svg, - src/qt/res/src/mine.svg, src/qt/res/src/qt.svg, src/qt/res/src/tx*.svg, - src/qt/res/src/verify.svg, diff --git a/doc/bitcoin_logo_doxygen.png b/doc/bitcoin_logo_doxygen.png deleted file mode 100644 index 258be86e..00000000 Binary files a/doc/bitcoin_logo_doxygen.png and /dev/null differ diff --git a/doc/build-osx.md b/doc/build-osx.md deleted file mode 100644 index 70faf013..00000000 --- a/doc/build-osx.md +++ /dev/null @@ -1,117 +0,0 @@ -Mac OS X Build Instructions and Notes -==================================== -This guide will show you how to build gcoind (headless client) for OSX. - -Notes ------ - -* Tested on OS X 10.7 through 10.10 on 64-bit Intel processors only. - -* All of the commands should be executed in a Terminal application. The -built-in one is located in `/Applications/Utilities`. - -Preparation ------------ - -You need to install XCode with all the options checked so that the compiler -and everything is available in /usr not just /Developer. XCode should be -available on your OS X installation media, but if not, you can get the -current version from https://developer.apple.com/xcode/. If you install -Xcode 4.3 or later, you'll need to install its command line tools. This can -be done in `Xcode > Preferences > Downloads > Components` and generally must -be re-done or updated every time Xcode is updated. - -You will also need to install [Homebrew](http://brew.sh) in order to install library -dependencies. - -The installation of the actual dependencies is covered in the Instructions -sections below. - -Instructions: Homebrew ----------------------- - -#### Install dependencies using Homebrew - - brew install autoconf automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf qt5 - -NOTE: Building with Qt4 is still supported, however, could result in a broken UI. As such, building with Qt5 is recommended. - -### Building `gcoind` - -1. Clone the github tree to get the source code and go into the directory. - - git clone https://github.com/bitcoin/bitcoin.git - cd bitcoin - -2. Build gcoind: - - ./autogen.sh - ./configure --with-gui=qt5 - make - -3. It is also a good idea to build and run the unit tests: - - make check - -4. (Optional) You can also install gcoind to your path: - - make install - -Use Qt Creator as IDE ------------------------- -You can use Qt Creator as IDE, for debugging and for manipulating forms, etc. -Download Qt Creator from http://www.qt.io/download/. Download the "community edition" and only install Qt Creator (uncheck the rest during the installation process). - -1. Make sure you installed everything through homebrew mentioned above -2. Do a proper ./configure --with-gui=qt5 --enable-debug -3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project -4. Enter "bitcoin-qt" as project name, enter src/qt as location -5. Leave the file selection as it is -6. Confirm the "summary page" -7. In the "Projects" tab select "Manage Kits..." -8. Select the default "Desktop" kit and select "Clang (x86 64bit in /usr/bin)" as compiler -9. Select LLDB as debugger (you might need to set the path to your installtion) -10. Start debugging with Qt Creator - -Creating a release build ------------------------- -You can ignore this section if you are building `gcoind` for your own use. - -gcoind/gcoin-cli binaries are not included in the Bitcoin-Qt.app bundle. - -If you are building `gcoind` or `Bitcoin-Qt` for others, your build machine should be set up -as follows for maximum compatibility: - -All dependencies should be compiled with these flags: - - -mmacosx-version-min=10.7 - -arch x86_64 - -isysroot $(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk - -Once dependencies are compiled, see [doc/release-process.md](release-process.md) for how the Bitcoin-Qt.app -bundle is packaged and signed to create the .dmg disk image that is distributed. - -Running -------- - -It's now available at `./gcoind`, provided that you are still in the `src` -directory. We have to first create the RPC configuration file, though. - -Run `./gcoind` to get the filename where it should be put, or just try these -commands: - - echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf" - chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf" - -The next time you run it, it will start downloading the blockchain, but it won't -output anything while it's doing this. This process may take several hours; -you can monitor its process by looking at the debug.log file, like this: - - tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log - -Other commands: -------- - - ./gcoind -daemon # to start the bitcoin daemon. - ./gcoin-cli --help # for a list of command-line options. - ./gcoin-cli help # When the daemon is running, to get a list of RPC commands diff --git a/doc/build-unix.md b/doc/build-unix.md index 149f5011..e74f0a29 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -1,10 +1,10 @@ UNIX BUILD NOTES ==================== -Some notes on how to build Bitcoin in Unix. +Some notes on how to build Gcoin in Unix. Note --------------------- -Always use absolute paths to configure and compile bitcoin and the dependencies, +Always use absolute paths to configure and compile Gcoin and the dependencies, for example, when specifying the the path of the dependency: ../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX @@ -22,8 +22,6 @@ make make install # optional ``` -This will build bitcoin-qt as well if the dependencies are met. - Dependencies --------------------- @@ -40,9 +38,6 @@ Optional dependencies: ------------|------------------|---------------------- miniupnpc | UPnP Support | Firewall-jumping support libdb4.8 | Berkeley DB | Wallet storage (only needed when wallet enabled) - qt | GUI | GUI toolkit (only needed when GUI enabled) - protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled) - libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled) For the versions used in the release, see [release-process.md](release-process.md) under *Fetch and build inputs*. @@ -50,7 +45,7 @@ System requirements -------------------- C++ compilers are memory-hungry. It is recommended to have at least 1 GB of -memory available when compiling Bitcoin Core. With 512MB of memory or less +memory available when compiling Gcoin Core. With 512MB of memory or less compilation will take much longer due to swap thrashing. Dependency Build Instructions: Ubuntu & Debian @@ -63,10 +58,9 @@ for Ubuntu 12.04 and later or Debian 7 and later libboost-all-dev has to be inst sudo apt-get install libboost-all-dev - db4.8 packages are available [here](https://launchpad.net/~bitcoin/+archive/bitcoin). You can add the repository using the following command: - sudo add-apt-repository ppa:bitcoin/bitcoin + sudo add-apt-repository ppa:OpenNetworking/gcoin-community sudo apt-get update Ubuntu 12.04 and later have packages for libdb5.1-dev and libdb5.1++-dev, @@ -91,29 +85,6 @@ Optional: sudo apt-get install libminiupnpc-dev (see --with-miniupnpc and --enable-upnp-default) -Dependencies for the GUI: Ubuntu & Debian ------------------------------------------ - -If you want to build Bitcoin-Qt, make sure that the required packages for Qt development -are installed. Either Qt 4 or Qt 5 are necessary to build the GUI. -If both Qt 4 and Qt 5 are installed, Qt 4 will be used. Pass `--with-gui=qt5` to configure to choose Qt5. -To build without GUI pass `--without-gui`. - -To build with Qt 4 you need the following: - - sudo apt-get install libqt4-dev libprotobuf-dev protobuf-compiler - -For Qt 5 you need the following: - - sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler - -libqrencode (optional) can be installed with: - - sudo apt-get install libqrencode-dev - -Once these are installed, they will be found by configure and a bitcoin-qt executable will be -built by default. - Notes ----- The release is built with GCC and then "strip gcoind" to strip the debug @@ -145,10 +116,10 @@ Berkeley DB It is recommended to use Berkeley DB 4.8. If you have to build it yourself: ```bash -BITCOIN_ROOT=$(pwd) +GCOIN_ROOT=$(pwd) -# Pick some path to install BDB to, here we create a directory within the bitcoin directory -BDB_PREFIX="${BITCOIN_ROOT}/db4" +# Pick some path to install BDB to, here we create a directory within the Gcoin directory +BDB_PREFIX="${GCOIN_ROOT}/db4" mkdir -p $BDB_PREFIX # Fetch the source and verify that it is not tampered with @@ -163,8 +134,8 @@ cd db-4.8.30.NC/build_unix/ ../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX make install -# Configure Bitcoin Core to use our own-built instance of BDB -cd $BITCOIN_ROOT +# Configure Gcoin Core to use our own-built instance of BDB +cd $GCOIN_ROOT ./configure (other args...) LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" ``` @@ -181,7 +152,7 @@ If you need to build Boost yourself: Security -------- -To help make your bitcoin installation more secure by making certain attacks impossible to +To help make your Gcoin installation more secure by making certain attacks impossible to exploit even if a vulnerability is found, binaries are hardened by default. This can be disabled with: @@ -205,7 +176,7 @@ Hardening enables the following features: To test that you have built PIE executable, install scanelf, part of paxutils, and use: - scanelf -e ./bitcoin + scanelf -e ./gcoin The output should contain: TYPE @@ -213,13 +184,13 @@ Hardening enables the following features: * Non-executable Stack If the stack is executable then trivial stack based buffer overflow exploits are possible if - vulnerable buffers are found. By default, bitcoin should be built with a non-executable stack + vulnerable buffers are found. By default, Gcoin should be built with a non-executable stack but if one of the libraries it uses asks for an executable stack or someone makes a mistake and uses a compiler extension which requires an executable stack, it will silently build an executable without the non-executable stack protection. To verify that the stack is non-executable after compiling use: - `scanelf -e ./bitcoin` + `scanelf -e ./gcoin` the output should contain: STK/REL/PTL @@ -229,7 +200,7 @@ Hardening enables the following features: Disable-wallet mode -------------------- -When the intention is to run only a P2P node without a wallet, bitcoin may be compiled in +When the intention is to run only a P2P node without a wallet, Gcoin may be compiled in disable-wallet mode with: ./configure --disable-wallet diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 8f7db31d..29e3ecc6 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -105,21 +105,9 @@ error and debugging messages are written there. The -debug=... command-line option controls debugging; running with just -debug will turn on all categories (and give you a very large debug.log file). -The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt -to see it. - -**testnet and regtest modes** - -Run with the -testnet option to run with "play bitcoins" on the test network, if you -are testing multi-machine code that needs to operate across the internet. - -If you are testing something that can run on one machine, run with the -regtest option. -In regression test mode, blocks can be created on-demand; see qa/rpc-tests/ for tests -that run in -regtest mode. - **DEBUG_LOCKORDER** -Bitcoin Core is a multithreaded application, and deadlocks or other multithreading bugs +Gcoin Core is a multithreaded application, and deadlocks or other multithreading bugs can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks are held, and adds warnings to the debug.log file if inconsistencies are detected. @@ -154,7 +142,7 @@ Threads - ThreadMapPort : Universal plug-and-play startup/shutdown -- ThreadSocketHandler : Sends/Receives data from peers on port 8333. +- ThreadSocketHandler : Sends/Receives data from peers on port 55666. - ThreadOpenAddedConnections : Opens network connections to added nodes. @@ -168,7 +156,7 @@ Threads - ThreadRPCServer : Remote procedure call handler, listens on port 8332 for connections and services them. -- BitcoinMiner : Generates bitcoins (if wallet is enabled). +- GcoinMiner : Generates gcoins (if wallet is enabled). - Shutdown : Does an orderly shutdown of everything. diff --git a/doc/dnsseed-policy.md b/doc/dnsseed-policy.md deleted file mode 100644 index 814ae387..00000000 --- a/doc/dnsseed-policy.md +++ /dev/null @@ -1,54 +0,0 @@ -Expectations for DNS Seed operators -==================================== - -Bitcoin Core attempts to minimize the level of trust in DNS seeds, -but DNS seeds still pose a small amount of risk for the network. -As such, DNS seeds must be run by entities which have some minimum -level of trust within the Bitcoin community. - -Other implementations of Bitcoin software may also use the same -seeds and may be more exposed. In light of this exposure, this -document establishes some basic expectations for operating dnsseeds. - -0. A DNS seed operating organization or person is expected to follow good -host security practices, maintain control of applicable infrastructure, -and not sell or transfer control of the DNS seed. Any hosting services -contracted by the operator are equally expected to uphold these expectations. - -1. The DNS seed results must consist exclusively of fairly selected and -functioning Bitcoin nodes from the public network to the best of the -operator's understanding and capability. - -2. For the avoidance of doubt, the results may be randomized but must not -single-out any group of hosts to receive different results unless due to an -urgent technical necessity and disclosed. - -3. The results may not be served with a DNS TTL of less than one minute. - -4. Any logging of DNS queries should be only that which is necessary -for the operation of the service or urgent health of the Bitcoin -network and must not be retained longer than necessary nor disclosed -to any third party. - -5. Information gathered as a result of the operators node-spidering -(not from DNS queries) may be freely published or retained, but only -if this data was not made more complete by biasing node connectivity -(a violation of expectation (1)). - -6. Operators are encouraged, but not required, to publicly document the -details of their operating practices. - -7. A reachable email contact address must be published for inquiries -related to the DNS seed operation. - -If these expectations cannot be satisfied the operator should -discontinue providing services and contact the active Bitcoin -Core development team as well as posting on -[bitcoin-dev](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev). - -Behavior outside of these expectations may be reasonable in some -situations but should be discussed in public in advance. - -See also ----------- -- [bitcoin-seeder](https://github.com/sipa/bitcoin-seeder) is a reference implementation of a DNS seed. diff --git a/doc/files.md b/doc/files.md index 80195535..a806d85f 100644 --- a/doc/files.md +++ b/doc/files.md @@ -1,23 +1,13 @@ -Used in 0.8.0 +Used in 1.2.1.1 --------------------- * wallet.dat: personal wallet (BDB) with keys and transactions -* peers.dat: peer IP address database (custom format); since 0.7.0 -* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0 -* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8) -* blocks/index/*; block index (LevelDB); since 0.8.0 -* chainstate/*; block chain state database (LevelDB); since 0.8.0 -* database/*: BDB database environment; only used for wallet since 0.8.0 - -Only used in pre-0.8.0 ---------------------- -* blktree/*; block chain index (LevelDB); since pre-0.8, replaced by blocks/index/* in 0.8.0 -* coins/*; unspent transaction output database (LevelDB); since pre-0.8, replaced by chainstate/* in 0.8.0 - -Only used before 0.8.0 ---------------------- -* blkindex.dat: block chain index database (BDB); replaced by {chainstate/*,blocks/index/*,blocks/rev000??.dat} in 0.8.0 -* blk000?.dat: block data (custom, 2 GiB per file); replaced by blocks/blk000??.dat in 0.8.0 - -Only used before 0.7.0 ---------------------- -* addr.dat: peer IP address database (BDB); replaced by peers.dat in 0.7.0 +* peers.dat: peer IP address database (custom format); since bitcoin 0.7.0 +* blkminer.dat: recent block miner database (custom format); since 1.1 +* member.dat: alliance member database (custom format); since 1.1 +* license.dat: license database (custom format); since 1.1 +* miner.dat: miner database (custom format); since 1.2 +* blocks/blk000??.dat: block data (custom, 128 MiB per file); since bitcoin 0.8.0 +* blocks/rev000??.dat; block undo data (custom); since bitcoin 0.8.0 (format changed since pre-0.8) +* blocks/index/*; block index (LevelDB); since bitcoin 0.8.0 +* chainstate/*; block chain state database (LevelDB); since bitcoin 0.8.0 +* database/*: BDB database environment; only used for wallet since bitcoin 0.8.0 diff --git a/doc/gitian-building.md b/doc/gitian-building.md deleted file mode 100644 index 1fa5b5f9..00000000 --- a/doc/gitian-building.md +++ /dev/null @@ -1,396 +0,0 @@ -Gitian building -================ - -*Setup instructions for a gitian build of Bitcoin using a Debian VM or physical system.* - -Gitian is the deterministic build process that is used to build the Bitcoin -Core executables. It provides a way to be reasonably sure that the -executables are really built from source on GitHub. It also makes sure that -the same, tested dependencies are used and statically built into the executable. - -Multiple developers build the source code by following a specific descriptor -("recipe"), cryptographically sign the result, and upload the resulting signature. -These results are compared and only if they match, the build is accepted and uploaded -to bitcoin.org. - -More independent gitian builders are needed, which is why I wrote this -guide. It is preferred to follow these steps yourself instead of using someone else's -VM image to avoid 'contaminating' the build. - -Table of Contents ------------------- - -- [Create a new VirtualBox VM](#create-a-new-virtualbox-vm) -- [Connecting to the VM](#connecting-to-the-vm) -- [Setting up Debian for gitian building](#setting-up-debian-for-gitian-building) -- [Installing gitian](#installing-gitian) -- [Setting up the gitian image](#setting-up-the-gitian-image) -- [Getting and building the inputs](#getting-and-building-the-inputs) -- [Building Bitcoin](#building-bitcoin) -- [Building an alternative repository](#building-an-alternative-repository) -- [Signing externally](#signing-externally) -- [Uploading signatures](#uploading-signatures) - -Preparing the Gitian builder host ---------------------------------- - -The first step is to prepare the host environment that will be used to perform the Gitian builds. -This guide explains how to set up the environment, and how to start the builds. - -Debian Linux was chosen as the host distribution because it has a lightweight install (in contrast to Ubuntu) and is readily available. -Any kind of virtualization can be used, for example: -- [VirtualBox](https://www.virtualbox.org/), covered by this guide -- [KVM](http://www.linux-kvm.org/page/Main_Page) -- [LXC](https://linuxcontainers.org/), see also [Gitian host docker container](https://github.com/gdm85/tenku/tree/master/docker/gitian-bitcoin-host/README.md). - -You can also install on actual hardware instead of using virtualization. - -Create a new VirtualBox VM ---------------------------- -In the VirtualBox GUI click "Create" and choose the following parameters in the wizard: - -![](gitian-building/create_vm_page1.png) - -- Type: Linux, Debian (64 bit) - -![](gitian-building/create_vm_memsize.png) - -- Memory Size: at least 1024MB, anything lower will really slow the build down - -![](gitian-building/create_vm_hard_drive.png) - -- Hard Drive: Create a virtual hard drive now - -![](gitian-building/create_vm_hard_drive_file_type.png) - -- Hard Drive file type: Use the default, VDI (VirtualBox Disk Image) - -![](gitian-building/create_vm_storage_physical_hard_drive.png) - -- Storage on Physical hard drive: Dynamically Allocated - -![](gitian-building/create_vm_file_location_size.png) - -- Disk size: at least 40GB; as low as 20GB *may* be possible, but better to err on the safe side -- Push the `Create` button - -Get the [Debian 7.8 net installer](http://cdimage.debian.org/debian-cd/7.8.0/amd64/iso-cd/debian-7.8.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)). -This DVD image can be validated using a SHA256 hashing tool, for example on -Unixy OSes by entering the following in a terminal: - - echo "e39c36d6adc0fd86c6edb0e03e22919086c883b37ca194d063b8e3e8f6ff6a3a debian-7.8.0-amd64-netinst.iso" | sha256sum -c - # (must return OK) - -After creating the VM, we need to configure it. - -- Click the `Settings` button, then go to the `Network` tab. Adapter 1 should be attached to `NAT`. - -![](gitian-building/network_settings.png) - -- Click `Advanced`, then `Port Forwarding`. We want to set up a port through which we can reach the VM to get files in and out. -- Create a new rule by clicking the plus icon. - -![](gitian-building/port_forwarding_rules.png) - -- Set up the new rule the following way: - - Name: `SSH` - - Protocol: `TCP` - - Leave Host IP empty - - Host Port: `22222` - - Leave Guest IP empty - - Guest Port: `22` - -- Click `Ok` twice to save. - -Then start the VM. On the first launch you will be asked for a CD or DVD image. Choose the downloaded iso. - -![](gitian-building/select_startup_disk.png) - -Installing Debian ------------------- - -This section will explain how to install Debian on the newly created VM. - -- Choose the non-graphical installer. We do not need the graphical environment; it will only increase installation time and disk usage. - -![](gitian-building/debian_install_1_boot_menu.png) - -**Note**: Navigation in the Debian installer: To keep a setting at the default -and proceed, just press `Enter`. To select a different button, press `Tab`. - -- Choose locale and keyboard settings (doesn't matter, you can just go with the defaults or select your own information) - -![](gitian-building/debian_install_2_select_a_language.png) -![](gitian-building/debian_install_3_select_location.png) -![](gitian-building/debian_install_4_configure_keyboard.png) - -- The VM will detect network settings using DHCP, this should all proceed automatically -- Configure the network: - - System name `debian`. - - Leave domain name empty. - -![](gitian-building/debian_install_5_configure_the_network.png) - -- Choose a root password and enter it twice (remember it for later) - -![](gitian-building/debian_install_6a_set_up_root_password.png) - -- Name the new user `debian` (the full name doesn't matter, you can leave it empty) - -![](gitian-building/debian_install_7_set_up_user_fullname.png) -![](gitian-building/debian_install_8_set_up_username.png) - -- Choose a user password and enter it twice (remember it for later) - -![](gitian-building/debian_install_9_user_password.png) - -- The installer will set up the clock using a time server; this process should be automatic -- Set up the clock: choose a time zone (depends on the locale settings that you picked earlier; specifics don't matter) - -![](gitian-building/debian_install_10_configure_clock.png) - -- Disk setup - - Partitioning method: Guided - Use the entire disk - -![](gitian-building/debian_install_11_partition_disks.png) - - - Select disk to partition: SCSI1 (0,0,0) - -![](gitian-building/debian_install_12_choose_disk.png) - - - Partitioning scheme: All files in one partition - -![](gitian-building/debian_install_13_partition_scheme.png) - - - Finish partitioning and write changes to disk -> *Yes* (`Tab`, `Enter` to select the `Yes` button) - -![](gitian-building/debian_install_14_finish.png) -![](gitian-building/debian_install_15_write_changes.png) - -- The base system will be installed, this will take a minute or so -- Choose a mirror (any will do) - -![](gitian-building/debian_install_16_choose_a_mirror.png) - -- Enter proxy information (unless you are on an intranet, you can leave this empty) - -![](gitian-building/debian_install_18_proxy_settings.png) - -- Wait a bit while 'Select and install software' runs -- Participate in popularity contest -> *No* -- Choose software to install. We need just the base system. - -![](gitian-building/debian_install_19_software_selection.png) - -- Make sure only 'SSH server' and 'Standard System Utilities' are checked -- Uncheck 'Debian Desktop Environment' and 'Print Server' - -![](gitian-building/debian_install_20_install_grub.png) - -- Install the GRUB boot loader to the master boot record? -> Yes - -![](gitian-building/debian_install_21_finish_installation.png) - -- Installation Complete -> *Continue* -- After installation, the VM will reboot and you will have a working Debian VM. Congratulations! - -Connecting to the VM ----------------------- - -After the VM has booted you can connect to it using SSH, and files can be copied from and to the VM using a SFTP utility. -Connect to `localhost`, port `22222` (or the port configured when installing the VM). -On Windows you can use putty[1] and WinSCP[2]. - -For example to connect as `root` from a Linux command prompt use - - $ ssh root@localhost -p 22222 - The authenticity of host '[localhost]:22222 ([127.0.0.1]:22222)' can't be established. - ECDSA key fingerprint is 8e:71:f9:5b:62:46:de:44:01:da:fb:5f:34:b5:f2:18. - Are you sure you want to continue connecting (yes/no)? yes - Warning: Permanently added '[localhost]:22222' (ECDSA) to the list of known hosts. - root@localhost's password: (enter root password configured during install) - Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 - root@debian:~# - -Replace `root` with `debian` to log in as user. - -[1] http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html -[2] http://winscp.net/eng/index.php - -Setting up Debian for gitian building --------------------------------------- - -In this section we will be setting up the Debian installation for Gitian building. - -First we need to log in as `root` to set up dependencies and make sure that our -user can use the sudo command. Type/paste the following in the terminal: - -```bash -apt-get install git ruby sudo apt-cacher-ng qemu-utils debootstrap lxc python-cheetah parted kpartx bridge-utils -adduser debian sudo -``` - -When you get a colorful screen with a question about the 'LXC directory', just -go with the default (`/var/lib/lxc`). - -Then set up LXC and the rest with the following, which is a complex jumble of settings and workarounds: - -```bash -# the version of lxc-start in Debian 7.4 needs to run as root, so make sure -# that the build script can exectute it without providing a password -echo "%sudo ALL=NOPASSWD: /usr/bin/lxc-start" > /etc/sudoers.d/gitian-lxc -# add cgroup for LXC -echo "cgroup /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab -# make /etc/rc.local script that sets up bridge between guest and host -echo '#!/bin/sh -e' > /etc/rc.local -echo 'brctl addbr br0' >> /etc/rc.local -echo 'ifconfig br0 10.0.3.2/24 up' >> /etc/rc.local -echo 'exit 0' >> /etc/rc.local -# make sure that USE_LXC is always set when logging in as debian, -# and configure LXC IP addresses -echo 'export USE_LXC=1' >> /home/debian/.profile -echo 'export GITIAN_HOST_IP=10.0.3.2' >> /home/debian/.profile -echo 'export LXC_GUEST_IP=10.0.3.5' >> /home/debian/.profile -reboot -``` - -At the end the VM is rebooted to make sure that the changes take effect. The steps in this -section need only to be performed once. - -Installing gitian ------------------- - -Re-login as the user `debian` that was created during installation. -The rest of the steps in this guide will be performed as that user. - -There is no `python-vm-builder` package in Debian, so we need to install it from source ourselves, - -```bash -wget http://archive.ubuntu.com/ubuntu/pool/universe/v/vm-builder/vm-builder_0.12.4+bzr489.orig.tar.gz -echo "ec12e0070a007989561bfee5862c89a32c301992dd2771c4d5078ef1b3014f03 vm-builder_0.12.4+bzr489.orig.tar.gz" | sha256sum -c -# (verification -- must return OK) -tar -zxvf vm-builder_0.12.4+bzr489.orig.tar.gz -cd vm-builder-0.12.4+bzr489 -sudo python setup.py install -cd .. -``` - -**Note**: When sudo asks for a password, enter the password for the user *debian* not for *root*. - -Clone the git repositories for bitcoin and gitian. - -```bash -git clone https://github.com/devrandom/gitian-builder.git -git clone https://github.com/bitcoin/bitcoin -``` - -Setting up the gitian image -------------------------- - -Gitian needs a virtual image of the operating system to build in. -Currently this is Ubuntu Precise x86_64. -This image will be copied and used every time that a build is started to -make sure that the build is deterministic. -Creating the image will take a while, but only has to be done once. - -Execute the following as user `debian`: - -```bash -cd gitian-builder -bin/make-base-vm --lxc --arch amd64 --suite precise -``` - -There will be a lot of warnings printed during build of the image. These can be ignored. - -**Note**: When sudo asks for a password, enter the password for the user *debian* not for *root*. - -Getting and building the inputs --------------------------------- - -Follow the instructions in [doc/release-process.md](release-process.md) in the bitcoin repository -under 'Fetch and build inputs' to install sources which require manual intervention. Also follow -the next step: 'Seed the Gitian sources cache', which will fetch all necessary source files allowing -for gitian to work offline. - -Building Bitcoin ----------------- - -To build Bitcoin (for Linux, OSX and Windows) just follow the steps under 'perform -gitian builds' in [doc/release-process.md](release-process.md) in the bitcoin repository. - -This may take a long time as it also builds the dependencies needed for each descriptor. -These dependencies will be cached after a successful build to avoid rebuilding them where possible. - -At any time you can check the package installation and build progress with - -```bash -tail -f var/install.log -tail -f var/build.log -``` - -Output from `gbuild` will look something like - - Initialized empty Git repository in /home/debian/gitian-builder/inputs/bitcoin/.git/ - remote: Reusing existing pack: 35606, done. - remote: Total 35606 (delta 0), reused 0 (delta 0) - Receiving objects: 100% (35606/35606), 26.52 MiB | 4.28 MiB/s, done. - Resolving deltas: 100% (25724/25724), done. - From https://github.com/bitcoin/bitcoin - ... (new tags, new branch etc) - --- Building for precise x86_64 --- - Stopping target if it is up - Making a new image copy - stdin: is not a tty - Starting target - Checking if target is up - Preparing build environment - Updating apt-get repository (log in var/install.log) - Installing additional packages (log in var/install.log) - Grabbing package manifest - stdin: is not a tty - Creating build script (var/build-script) - lxc-start: Connection refused - inotify event with no name (mask 32768) - Running build script (log in var/build.log) - -Building an alternative repository ------------------------------------ - -If you want to do a test build of a pull on GitHub it can be useful to point -the gitian builder at an alternative repository, using the same descriptors -and inputs. - -For example: -```bash -URL=https://github.com/laanwj/bitcoin.git -COMMIT=2014_03_windows_unicode_path -./bin/gbuild --commit bitcoin=${COMMIT} --url bitcoin=${URL} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml -./bin/gbuild --commit bitcoin=${COMMIT} --url bitcoin=${URL} ../bitcoin/contrib/gitian-descriptors/gitian-win.yml -./bin/gbuild --commit bitcoin=${COMMIT} --url bitcoin=${URL} ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml -``` - -Signing externally -------------------- - -If you want to do the PGP signing on another device, that's also possible; just define `SIGNER` as mentioned -and follow the steps in the build process as normal. - - gpg: skipped "laanwj": secret key not available - -When you execute `gsign` you will get an error from GPG, which can be ignored. Copy the resulting `.assert` files -in `gitian.sigs` to your signing machine and do - -```bash - gpg --detach-sign ${VERSION}-linux/${SIGNER}/bitcoin-linux-build.assert - gpg --detach-sign ${VERSION}-win/${SIGNER}/bitcoin-win-build.assert - gpg --detach-sign ${VERSION}-osx-unsigned/${SIGNER}/bitcoin-osx-build.assert -``` - -This will create the `.sig` files that can be committed together with the `.assert` files to assert your -gitian build. - -Uploading signatures ---------------------- - -After building and signing you can push your signatures (both the `.assert` and `.assert.sig` files) to the -[bitcoin/gitian.sigs](https://github.com/bitcoin/gitian.sigs/) repository, or if that's not possible create a pull -request. You can also mail the files to Wladimir (laanwj@gmail.com) and he will commit them. diff --git a/doc/gitian-building/create_vm_file_location_size.png b/doc/gitian-building/create_vm_file_location_size.png deleted file mode 100644 index 14aef5ab..00000000 Binary files a/doc/gitian-building/create_vm_file_location_size.png and /dev/null differ diff --git a/doc/gitian-building/create_vm_hard_drive.png b/doc/gitian-building/create_vm_hard_drive.png deleted file mode 100644 index a1706e14..00000000 Binary files a/doc/gitian-building/create_vm_hard_drive.png and /dev/null differ diff --git a/doc/gitian-building/create_vm_hard_drive_file_type.png b/doc/gitian-building/create_vm_hard_drive_file_type.png deleted file mode 100644 index 251b8ee3..00000000 Binary files a/doc/gitian-building/create_vm_hard_drive_file_type.png and /dev/null differ diff --git a/doc/gitian-building/create_vm_memsize.png b/doc/gitian-building/create_vm_memsize.png deleted file mode 100644 index 33717867..00000000 Binary files a/doc/gitian-building/create_vm_memsize.png and /dev/null differ diff --git a/doc/gitian-building/create_vm_page1.png b/doc/gitian-building/create_vm_page1.png deleted file mode 100644 index edaebc62..00000000 Binary files a/doc/gitian-building/create_vm_page1.png and /dev/null differ diff --git a/doc/gitian-building/create_vm_storage_physical_hard_drive.png b/doc/gitian-building/create_vm_storage_physical_hard_drive.png deleted file mode 100644 index 987efaa4..00000000 Binary files a/doc/gitian-building/create_vm_storage_physical_hard_drive.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_10_configure_clock.png b/doc/gitian-building/debian_install_10_configure_clock.png deleted file mode 100644 index 467c7901..00000000 Binary files a/doc/gitian-building/debian_install_10_configure_clock.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_11_partition_disks.png b/doc/gitian-building/debian_install_11_partition_disks.png deleted file mode 100644 index 18110734..00000000 Binary files a/doc/gitian-building/debian_install_11_partition_disks.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_12_choose_disk.png b/doc/gitian-building/debian_install_12_choose_disk.png deleted file mode 100644 index a00d4abf..00000000 Binary files a/doc/gitian-building/debian_install_12_choose_disk.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_13_partition_scheme.png b/doc/gitian-building/debian_install_13_partition_scheme.png deleted file mode 100644 index 2f80f19b..00000000 Binary files a/doc/gitian-building/debian_install_13_partition_scheme.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_14_finish.png b/doc/gitian-building/debian_install_14_finish.png deleted file mode 100644 index 411d457e..00000000 Binary files a/doc/gitian-building/debian_install_14_finish.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_15_write_changes.png b/doc/gitian-building/debian_install_15_write_changes.png deleted file mode 100644 index f2609398..00000000 Binary files a/doc/gitian-building/debian_install_15_write_changes.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_16_choose_a_mirror.png b/doc/gitian-building/debian_install_16_choose_a_mirror.png deleted file mode 100644 index d2c2e952..00000000 Binary files a/doc/gitian-building/debian_install_16_choose_a_mirror.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_17_choose_a_mirror2.png b/doc/gitian-building/debian_install_17_choose_a_mirror2.png deleted file mode 100644 index cef2db07..00000000 Binary files a/doc/gitian-building/debian_install_17_choose_a_mirror2.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_18_proxy_settings.png b/doc/gitian-building/debian_install_18_proxy_settings.png deleted file mode 100644 index 24ba25c1..00000000 Binary files a/doc/gitian-building/debian_install_18_proxy_settings.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_19_software_selection.png b/doc/gitian-building/debian_install_19_software_selection.png deleted file mode 100644 index d462757a..00000000 Binary files a/doc/gitian-building/debian_install_19_software_selection.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_1_boot_menu.png b/doc/gitian-building/debian_install_1_boot_menu.png deleted file mode 100644 index 27fd849b..00000000 Binary files a/doc/gitian-building/debian_install_1_boot_menu.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_20_install_grub.png b/doc/gitian-building/debian_install_20_install_grub.png deleted file mode 100644 index de4f9be0..00000000 Binary files a/doc/gitian-building/debian_install_20_install_grub.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_21_finish_installation.png b/doc/gitian-building/debian_install_21_finish_installation.png deleted file mode 100644 index b967c355..00000000 Binary files a/doc/gitian-building/debian_install_21_finish_installation.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_2_select_a_language.png b/doc/gitian-building/debian_install_2_select_a_language.png deleted file mode 100644 index 1c9e0bcf..00000000 Binary files a/doc/gitian-building/debian_install_2_select_a_language.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_3_select_location.png b/doc/gitian-building/debian_install_3_select_location.png deleted file mode 100644 index 005c3956..00000000 Binary files a/doc/gitian-building/debian_install_3_select_location.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_4_configure_keyboard.png b/doc/gitian-building/debian_install_4_configure_keyboard.png deleted file mode 100644 index 580c8af7..00000000 Binary files a/doc/gitian-building/debian_install_4_configure_keyboard.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_5_configure_the_network.png b/doc/gitian-building/debian_install_5_configure_the_network.png deleted file mode 100644 index a7fdffc6..00000000 Binary files a/doc/gitian-building/debian_install_5_configure_the_network.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_6_domain_name.png b/doc/gitian-building/debian_install_6_domain_name.png deleted file mode 100644 index 7a986d92..00000000 Binary files a/doc/gitian-building/debian_install_6_domain_name.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_6a_set_up_root_password.png b/doc/gitian-building/debian_install_6a_set_up_root_password.png deleted file mode 100644 index 31bd210f..00000000 Binary files a/doc/gitian-building/debian_install_6a_set_up_root_password.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_7_set_up_user_fullname.png b/doc/gitian-building/debian_install_7_set_up_user_fullname.png deleted file mode 100644 index bffc6ccd..00000000 Binary files a/doc/gitian-building/debian_install_7_set_up_user_fullname.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_8_set_up_username.png b/doc/gitian-building/debian_install_8_set_up_username.png deleted file mode 100644 index 9e2750ad..00000000 Binary files a/doc/gitian-building/debian_install_8_set_up_username.png and /dev/null differ diff --git a/doc/gitian-building/debian_install_9_user_password.png b/doc/gitian-building/debian_install_9_user_password.png deleted file mode 100644 index a26d30cb..00000000 Binary files a/doc/gitian-building/debian_install_9_user_password.png and /dev/null differ diff --git a/doc/gitian-building/network_settings.png b/doc/gitian-building/network_settings.png deleted file mode 100644 index 1d9b6428..00000000 Binary files a/doc/gitian-building/network_settings.png and /dev/null differ diff --git a/doc/gitian-building/port_forwarding_rules.png b/doc/gitian-building/port_forwarding_rules.png deleted file mode 100644 index e45c9eff..00000000 Binary files a/doc/gitian-building/port_forwarding_rules.png and /dev/null differ diff --git a/doc/gitian-building/select_startup_disk.png b/doc/gitian-building/select_startup_disk.png deleted file mode 100644 index 729b368f..00000000 Binary files a/doc/gitian-building/select_startup_disk.png and /dev/null differ diff --git a/doc/init.md b/doc/init.md index 22b7f107..66ae0cc4 100644 --- a/doc/init.md +++ b/doc/init.md @@ -13,7 +13,7 @@ can be found in the contrib/init folder. 1. Service User --------------------------------- -All three startup configurations assume the existence of a "bitcoin" user +All three startup configurations assume the existence of a "gcoin" user and group. They must be created before attempting to use these scripts. 2. Configuration @@ -35,10 +35,10 @@ generate one from the shell yourself like this: bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo' -Once you have a password in hand, set rpcpassword= in /etc/bitcoin/bitcoin.conf +Once you have a password in hand, set rpcpassword= in /etc/gcoin/gcoin.conf For an example configuration file that describes the configuration settings, -see contrib/debian/examples/bitcoin.conf. +see contrib/debian/examples/gcoin.conf. 3. Paths --------------------------------- @@ -46,7 +46,7 @@ see contrib/debian/examples/bitcoin.conf. All three configurations assume several paths that might need to be adjusted. Binary: /usr/bin/gcoind -Configuration file: /etc/bitcoin/bitcoin.conf +Configuration file: /etc/gcoin/gcoin.conf Data directory: /var/lib/gcoind PID file: /var/run/gcoind/gcoind.pid (OpenRC and Upstart) /var/lib/gcoind/gcoind.pid (systemd) diff --git a/doc/multiwallet-qt.md b/doc/multiwallet-qt.md deleted file mode 100644 index 3caab818..00000000 --- a/doc/multiwallet-qt.md +++ /dev/null @@ -1,48 +0,0 @@ -Multiwallet Qt Development and Integration Strategy -=================================================== - -In order to support loading of multiple wallets in bitcoin-qt, a few changes in the UI architecture will be needed. -Fortunately, only four of the files in the existing project are affected by this change. - -Two new classes have been implemented in two new .h/.cpp file pairs, with much of the functionality that was previously -implemented in the BitcoinGUI class moved over to these new classes. - -The two existing files most affected, by far, are bitcoingui.h and bitcoingui.cpp, as the BitcoinGUI class will require -some major retrofitting. - -Only requiring some minor changes is bitcoin.cpp. - -Finally, two new headers and source files will have to be added to bitcoin-qt.pro. - -Changes to class BitcoinGUI ---------------------------- -The principal change to the BitcoinGUI class concerns the QStackedWidget instance called centralWidget. -This widget owns five page views: overviewPage, transactionsPage, addressBookPage, receiveCoinsPage, and sendCoinsPage. - -A new class called *WalletView* inheriting from QStackedWidget has been written to handle all renderings and updates of -these page views. In addition to owning these five page views, a WalletView also has a pointer to a WalletModel instance. -This allows the construction of multiple WalletView objects, each rendering a distinct wallet. - -A second class called *WalletFrame* inheriting from QFrame has been written as a container for embedding all wallet-related -controls into BitcoinGUI. At present it contains the WalletView instances for the wallets and does little more than passing on messages -from BitcoinGUI to the currently selected WalletView. It is a WalletFrame instance -that takes the place of what used to be centralWidget in BitcoinGUI. The purpose of this class is to allow future -refinements of the wallet controls with minimal need for further modifications to BitcoinGUI, thus greatly simplifying -merges while reducing the risk of breaking top-level stuff. - -Changes to bitcoin.cpp ----------------------- -bitcoin.cpp is the entry point into bitcoin-qt, and as such, will require some minor modifications to provide hooks for -multiple wallet support. Most importantly will be the way it instantiates WalletModels and passes them to the -singleton BitcoinGUI instance called window. Formerly, BitcoinGUI kept a pointer to a single instance of a WalletModel. -The initial change required is very simple: rather than calling `window.setWalletModel(&walletModel);` we perform the -following two steps: - - window.addWallet("~Default", &walletModel); - window.setCurrentWallet("~Default"); - -The string parameter is just an arbitrary name given to the default wallet. It's been prepended with a tilde to avoid name collisions in the future with additional wallets. - -The shutdown call `window.setWalletModel(0)` has also been removed. In its place is now: - -window.removeAllWallets(); diff --git a/doc/release-notes.md b/doc/release-notes.md deleted file mode 100644 index c4a698d4..00000000 --- a/doc/release-notes.md +++ /dev/null @@ -1,505 +0,0 @@ -Bitcoin Core version 0.11.0 is now available from: - - - -This is a new major version release, bringing both new features and -bug fixes. - -Please report bugs using the issue tracker at github: - - - -Upgrading and downgrading -========================= - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -Downgrade warning ------------------- - -Because release 0.10.0 and later makes use of headers-first synchronization and -parallel block download (see further), the block files and databases are not -backwards-compatible with pre-0.10 versions of Bitcoin Core or other software: - -* Blocks will be stored on disk out of order (in the order they are -received, really), which makes it incompatible with some tools or -other programs. Reindexing using earlier versions will also not work -anymore as a result of this. - -* The block index database will now hold headers for which no block is -stored on disk, which earlier versions won't support. - -If you want to be able to downgrade smoothly, make a backup of your entire data -directory. Without this your node will need start syncing (or importing from -bootstrap.dat) anew afterwards. It is possible that the data from a completely -synchronised 0.10 node may be usable in older versions as-is, but this is not -supported and may break as soon as the older version attempts to reindex. - -This does not affect wallet forward or backward compatibility. There are no -known problems when downgrading from 0.11.x to 0.10.x. - -Important information -====================== - -Transaction flooding ---------------------- - -At the time of this release, the P2P network is being flooded with low-fee -transactions. This causes a ballooning of the mempool size. - -If this growth of the mempool causes problematic memory use on your node, it is -possible to change a few configuration options to work around this. The growth -of the mempool can be monitored with the RPC command `getmempoolinfo`. - -One is to increase the minimum transaction relay fee `minrelaytxfee`, which -defaults to 0.00001. This will cause transactions with fewer BTC/kB fee to be -rejected, and thus fewer transactions entering the mempool. - -The other is to restrict the relaying of free transactions with -`limitfreerelay`. This option sets the number of kB/minute at which -free transactions (with enough priority) will be accepted. It defaults to 15. -Reducing this number reduces the speed at which the mempool can grow due -to free transactions. - -For example, add the following to `bitcoin.conf`: - - minrelaytxfee=0.00005 - limitfreerelay=5 - -More robust solutions are being worked on for a follow-up release. - -Notable changes -=============== - -Block file pruning ----------------------- - -This release supports running a fully validating node without maintaining a copy -of the raw block and undo data on disk. To recap, there are four types of data -related to the blockchain in the bitcoin system: the raw blocks as received over -the network (blk???.dat), the undo data (rev???.dat), the block index and the -UTXO set (both LevelDB databases). The databases are built from the raw data. - -Block pruning allows Bitcoin Core to delete the raw block and undo data once -it's been validated and used to build the databases. At that point, the raw data -is used only to relay blocks to other nodes, to handle reorganizations, to look -up old transactions (if -txindex is enabled or via the RPC/REST interfaces), or -for rescanning the wallet. The block index continues to hold the metadata about -all blocks in the blockchain. - -The user specifies how much space to allot for block & undo files. The minimum -allowed is 550MB. Note that this is in addition to whatever is required for the -block index and UTXO databases. The minimum was chosen so that Bitcoin Core will -be able to maintain at least 288 blocks on disk (two days worth of blocks at 10 -minutes per block). In rare instances it is possible that the amount of space -used will exceed the pruning target in order to keep the required last 288 -blocks on disk. - -Block pruning works during initial sync in the same way as during steady state, -by deleting block files "as you go" whenever disk space is allocated. Thus, if -the user specifies 550MB, once that level is reached the program will begin -deleting the oldest block and undo files, while continuing to download the -blockchain. - -For now, block pruning disables block relay. In the future, nodes with block -pruning will at a minimum relay "new" blocks, meaning blocks that extend their -active chain. - -Block pruning is currently incompatible with running a wallet due to the fact -that block data is used for rescanning the wallet and importing keys or -addresses (which require a rescan.) However, running the wallet with block -pruning will be supported in the near future, subject to those limitations. - -Block pruning is also incompatible with -txindex and will automatically disable -it. - -Once you have pruned blocks, going back to unpruned state requires -re-downloading the entire blockchain. To do this, re-start the node with --reindex. Note also that any problem that would cause a user to reindex (e.g., -disk corruption) will cause a pruned node to redownload the entire blockchain. -Finally, note that when a pruned node reindexes, it will delete any blk???.dat -and rev???.dat files in the data directory prior to restarting the download. - -To enable block pruning on the command line: - -- `-prune=N`: where N is the number of MB to allot for raw block & undo data. - -Modified RPC calls: - -- `getblockchaininfo` now includes whether we are in pruned mode or not. -- `getblock` will check if the block's data has been pruned and if so, return an -error. -- `getrawtransaction` will no longer be able to locate a transaction that has a -UTXO but where its block file has been pruned. - -Pruning is disabled by default. - -Big endian support --------------------- - -Experimental support for big-endian CPU architectures was added in this -release. All little-endian specific code was replaced with endian-neutral -constructs. This has been tested on at least MIPS and PPC hosts. The build -system will automatically detect the endianness of the target. - -Memory usage optimization --------------------------- - -There have been many changes in this release to reduce the default memory usage -of a node, among which: - -- Accurate UTXO cache size accounting (#6102); this makes the option `-dbcache` - precise where this grossly underestimated memory usage before -- Reduce size of per-peer data structure (#6064 and others); this increases the - number of connections that can be supported with the same amount of memory -- Reduce the number of threads (#5964, #5679); lowers the amount of (esp. - virtual) memory needed - -Fee estimation changes ----------------------- - -This release improves the algorithm used for fee estimation. Previously, -1 -was returned when there was insufficient data to give an estimate. Now, -1 -will also be returned when there is no fee or priority high enough for the -desired confirmation target. In those cases, it can help to ask for an estimate -for a higher target number of blocks. It is not uncommon for there to be no -fee or priority high enough to be reliably (85%) included in the next block and -for this reason, the default for `-txconfirmtarget=n` has changed from 1 to 2. - -Privacy: Disable wallet transaction broadcast ----------------------------------------------- - -This release adds an option `-walletbroadcast=0` to prevent automatic -transaction broadcast and rebroadcast (#5951). This option allows separating -transaction submission from the node functionality. - -Making use of this, third-party scripts can be written to take care of -transaction (re)broadcast: - -- Send the transaction as normal, either through RPC or the GUI -- Retrieve the transaction data through RPC using `gettransaction` (NOT - `getrawtransaction`). The `hex` field of the result will contain the raw - hexadecimal representation of the transaction -- The transaction can then be broadcasted through arbitrary mechanisms - supported by the script - -One such application is selective Tor usage, where the node runs on the normal -internet but transactions are broadcasted over Tor. - -For an example script see [bitcoin-submittx](https://github.com/laanwj/bitcoin-submittx). - -Privacy: Stream isolation for Tor ----------------------------------- - -This release adds functionality to create a new circuit for every peer -connection, when the software is used with Tor. The new option, -`-proxyrandomize`, is on by default. - -When enabled, every outgoing connection will (potentially) go through a -different exit node. That significantly reduces the chance to get unlucky and -pick a single exit node that is either malicious, or widely banned from the P2P -network. This improves connection reliability as well as privacy, especially -for the initial connections. - -**Important note:** If a non-Tor SOCKS5 proxy is configured that supports -authentication, but doesn't require it, this change may cause that proxy to reject -connections. A user and password is sent where they weren't before. This setup -is exceedingly rare, but in this case `-proxyrandomize=0` can be passed to -disable the behavior. - -0.11.0 Change log -================= - -Detailed release notes follow. This overview includes changes that affect -behavior, not code moves, refactors and string updates. For convenience in locating -the code changes and accompanying discussion, both the pull request and -git merge commit are mentioned. - -### RPC and REST -- #5461 `5f7279a` signrawtransaction: validate private key -- #5444 `103f66b` Add /rest/headers//. -- #4964 `95ecc0a` Add scriptPubKey field to validateaddress RPC call -- #5476 `c986972` Add time offset into getpeerinfo output -- #5540 `84eba47` Add unconfirmed and immature balances to getwalletinfo -- #5599 `40e96a3` Get rid of the internal miner's hashmeter -- #5711 `87ecfb0` Push down RPC locks -- #5754 `1c4e3f9` fix getblocktemplate lock issue -- #5756 `5d901d8` Fix getblocktemplate_proposals test by mining one block -- #5548 `d48ce48` Add /rest/chaininfos -- #5992 `4c4f1b4` Push down RPC reqWallet flag -- #6036 `585b5db` Show zero value txouts in listunspent -- #5199 `6364408` Add RPC call `gettxoutproof` to generate and verify merkle blocks -- #5418 `16341cc` Report missing inputs in sendrawtransaction -- #5937 `40f5e8d` show script verification errors in signrawtransaction result -- #5420 `1fd2d39` getutxos REST command (based on Bip64) -- #6193 `42746b0` [REST] remove json input for getutxos, limit to query max. 15 outpoints -- #6226 `5901596` json: fail read_string if string contains trailing garbage - -### Configuration and command-line options -- #5636 `a353ad4` Add option `-allowselfsignedrootcertificate` to allow self signed root certs (for testing payment requests) -- #5900 `3e8a1f2` Add a consistency check `-checkblockindex` for the block chain data structures -- #5951 `7efc9cf` Make it possible to disable wallet transaction broadcast (using `-walletbroadcast=0`) -- #5911 `b6ea3bc` privacy: Stream isolation for Tor (on by default, use `-proxyrandomize=0` to disable) -- #5863 `c271304` Add autoprune functionality (`-prune=`) -- #6153 `0bcf04f` Parameter interaction: disable upnp if -proxy set -- #6274 `4d9c7fe` Add option `-alerts` to opt out of alert system - -### Block and transaction handling -- #5367 `dcc1304` Do all block index writes in a batch -- #5253 `203632d` Check against MANDATORY flags prior to accepting to mempool -- #5459 `4406c3e` Reject headers that build on an invalid parent -- #5481 `055f3ae` Apply AreSane() checks to the fees from the network -- #5580 `40d65eb` Preemptively catch a few potential bugs -- #5349 `f55c5e9` Implement test for merkle tree malleability in CPartialMerkleTree -- #5564 `a89b837` clarify obscure uses of EvalScript() -- #5521 `8e4578a` Reject non-final txs even in testnet/regtest -- #5707 `6af674e` Change hardcoded character constants to descriptive named constants for db keys -- #5286 `fcf646c` Change the default maximum OP_RETURN size to 80 bytes -- #5710 `175d86e` Add more information to errors in ReadBlockFromDisk -- #5948 `b36f1ce` Use GetAncestor to compute new target -- #5959 `a0bfc69` Add additional block index consistency checks -- #6058 `7e0e7f8` autoprune minor post-merge improvements -- #5159 `2cc1372` New fee estimation code -- #6102 `6fb90d8` Implement accurate UTXO cache size accounting -- #6129 `2a82298` Bug fix for clearing fCheckForPruning -- #5947 `e9af4e6` Alert if it is very likely we are getting a bad chain -- #6203 `c00ae64` Remove P2SH coinbase flag, no longer interesting -- #5985 `37b4e42` Fix removing of orphan transactions -- #6221 `6cb70ca` Prune: Support noncontiguous block files -- #6256 `fce474c` Use best header chain timestamps to detect partitioning -- #6233 `a587606` Advance pindexLastCommonBlock for blocks in chainActive - -### P2P protocol and network code -- #5507 `844ace9` Prevent DOS attacks on in-flight data structures -- #5770 `32a8b6a` Sanitize command strings before logging them -- #5859 `dd4ffce` Add correct bool combiner for net signals -- #5876 `8e4fd0c` Add a NODE_GETUTXO service bit and document NODE_NETWORK -- #6028 `b9311fb` Move nLastTry from CAddress to CAddrInfo -- #5662 `5048465` Change download logic to allow calling getdata on inbound peers -- #5971 `18d2832` replace absolute sleep with conditional wait -- #5918 `7bf5d5e` Use equivalent PoW for non-main-chain requests -- #6059 `f026ab6` chainparams: use SeedSpec6's rather than CAddress's for fixed seeds -- #6080 `31c0bf1` Add jonasschnellis dns seeder -- #5976 `9f7809f` Reduce download timeouts as blocks arrive -- #6172 `b4bbad1` Ignore getheaders requests when not synced -- #5875 `304892f` Be stricter in processing unrequested blocks -- #6333 `41bbc85` Hardcoded seeds update June 2015 - -### Validation -- #5143 `48e1765` Implement BIP62 rule 6 -- #5713 `41e6e4c` Implement BIP66 - -### Build system -- #5501 `c76c9d2` Add mips, mipsel and aarch64 to depends platforms -- #5334 `cf87536` libgcoinconsensus: Add pkg-config support -- #5514 `ed11d53` Fix 'make distcheck' -- #5505 `a99ef7d` Build winshutdownmonitor.cpp on Windows only -- #5582 `e8a6639` Osx toolchain update -- #5684 `ab64022` osx: bump build sdk to 10.9 -- #5695 `23ef5b7` depends: latest config.guess and config.sub -- #5509 `31dedb4` Fixes when compiling in c++11 mode -- #5819 `f8e68f7` release: use static libstdc++ and disable reduced exports by default -- #5510 `7c3fbc3` Big endian support -- #5149 `c7abfa5` Add script to verify all merge commits are signed -- #6082 `7abbb7e` qt: disable qt tests when one of the checks for the gui fails -- #6244 `0401aa2` configure: Detect (and reject) LibreSSL -- #6269 `95aca44` gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures -- #6285 `ef1d506` Fix scheduler build with some boost versions. -- #6280 `25c2216` depends: fix Boost 1.55 build on GCC 5 -- #6303 `b711599` gitian: add a gitian-win-signer descriptor -- #6246 `8ea6d37` Fix build on FreeBSD -- #6282 `daf956b` fix crash on shutdown when e.g. changing -txindex and abort action -- #6354 `bdf0d94` Gitian windows signing normalization - -### Wallet -- #2340 `811c71d` Discourage fee sniping with nLockTime -- #5485 `d01bcc4` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option -- #5508 `9a5cabf` Add RandAddSeedPerfmon to MakeNewKey -- #4805 `8204e19` Do not flush the wallet in AddToWalletIfInvolvingMe(..) -- #5319 `93b7544` Clean up wallet encryption code -- #5831 `df5c246` Subtract fee from amount -- #6076 `6c97fd1` wallet: fix boost::get usage with boost 1.58 -- #5511 `23c998d` Sort pending wallet transactions before reaccepting -- #6126 `26e08a1` Change default nTxConfirmTarget to 2 -- #6183 `75a4d51` Fix off-by-one error w/ nLockTime in the wallet -- #6276 `c9fd907` Fix getbalance * 0 - -### GUI -- #5219 `f3af0c8` New icons -- #5228 `bb3c75b` HiDPI (retina) support for splash screen -- #5258 `73cbf0a` The RPC Console should be a QWidget to make window more independent -- #5488 `851dfc7` Light blue icon color for regtest -- #5547 `a39aa74` New icon for the debug window -- #5493 `e515309` Adopt style colour for button icons -- #5557 `70477a0` On close of splashscreen interrupt verifyDB -- #5559 `83be8fd` Make the command-line-args dialog better -- #5144 `c5380a9` Elaborate on signverify message dialog warning -- #5489 `d1aa3c6` Optimize PNG files -- #5649 `e0cd2f5` Use text-color icons for system tray Send/Receive menu entries -- #5651 `848f55d` Coin Control: Use U+2248 "ALMOST EQUAL TO" rather than a simple tilde -- #5626 `ab0d798` Fix icon sizes and column width -- #5683 `c7b22aa` add new osx dmg background picture -- #5620 `7823598` Payment request expiration bug fix -- #5729 `9c4a5a5` Allow unit changes for read-only BitcoinAmountField -- #5753 `0f44672` Add bitcoin logo to about screen -- #5629 `a956586` Prevent amount overflow problem with payment requests -- #5830 `215475a` Don't save geometry for options and about/help window -- #5793 `d26f0b2` Honor current network when creating autostart link -- #5847 `f238add` Startup script for centos, with documentation -- #5915 `5bd3a92` Fix a static qt5 crash when using certain versions of libxcb -- #5898 `bb56781` Fix rpc console font size to flexible metrics -- #5467 `bc8535b` Payment request / server work - part 2 -- #6161 `180c164` Remove movable option for toolbar -- #6160 `0d862c2` Overviewpage: make sure warning icons gets colored - -### Tests -- #5453 `2f2d337` Add ability to run single test manually to RPC tests -- #5421 `886eb57` Test unexecuted OP_CODESEPARATOR -- #5530 `565b300` Additional rpc tests -- #5611 `37b185c` Fix spurious windows test failures after 012598880c -- #5613 `2eda47b` Fix smartfees test for change to relay policy -- #5612 `e3f5727` Fix zapwallettxes test -- #5642 `30a5b5f` Prepare paymentservertests for new unit tests -- #5784 `e3a3cd7` Fix usage of NegateSignatureS in script_tests -- #5813 `ee9f2bf` Add unit tests for next difficulty calculations -- #5855 `d7989c0` Travis: run unit tests in different orders -- #5852 `cdae53e` Reinitialize state in between individual unit tests. -- #5883 `164d7b6` tests: add a BasicTestingSetup and apply to all tests -- #5940 `446bb70` Regression test for ResendWalletTransactions -- #6052 `cf7adad` fix and enable bip32 unit test -- #6039 `734f80a` tests: Error when setgenerate is used on regtest -- #6074 `948beaf` Correct the PUSHDATA4 minimal encoding test in script_invalid.json -- #6032 `e08886d` Stop nodes after RPC tests, even with --nocleanup -- #6075 `df1609f` Add additional script edge condition tests -- #5981 `da38dc6` Python P2P testing -- #5958 `9ef00c3` Add multisig rpc tests -- #6112 `fec5c0e` Add more script edge condition tests - -### Miscellaneous -- #5457, #5506, #5952, #6047 Update libsecp256k1 -- #5437 `84857e8` Add missing CAutoFile::IsNull() check in main -- #5490 `ec20fd7` Replace uint256/uint160 with opaque blobs where possible -- #5654, #5764 Adding jonasschnelli's GPG key -- #5477 `5f04d1d` OS X 10.10: LSSharedFileListItemResolve() is deprecated -- #5679 `beff11a` Get rid of DetectShutdownThread -- #5787 `9bd8c9b` Add fanquake PGP key -- #5366 `47a79bb` No longer check osx compatibility in RenameThread -- #5689 `07f4386` openssl: abstract out OPENSSL_cleanse -- #5708 `8b298ca` Add list of implemented BIPs -- #5809 `46bfbe7` Add gcoin-cli man page -- #5839 `86eb461` keys: remove libsecp256k1 verification until it's actually supported -- #5749 `d734d87` Help messages correctly formatted (79 chars) -- #5884 `7077fe6` BUGFIX: Stack around the variable 'rv' was corrupted -- #5849 `41259ca` contrib/init/gcoind.openrc: Compatibility with previous OpenRC init script variables -- #5950 `41113e3` Fix locale fallback and guard tests against invalid locale settings -- #5965 `7c6bfb1` Add git-subtree-check.sh script -- #6033 `1623f6e` FreeBSD, OpenBSD thread renaming -- #6064 `b46e7c2` Several changes to mruset -- #6104 `3e2559c` Show an init message while activating best chain -- #6125 `351f73e` Clean up parsing of bool command line args -- #5964 `b4c219b` Lightweight task scheduler -- #6116 `30dc3c1` [OSX] rename Bitcoin-Qt.app to Bitcoin-Core.app -- #6168 `b3024f0` contrib/linearize: Support linearization of testnet blocks -- #6098 `7708fcd` Update Windows resource files (and add one for bitcoin-tx) -- #6159 `e1412d3` Catch errors on datadir lock and pidfile delete -- #6186 `182686c` Fix two problems in CSubnet parsing -- #6174 `df992b9` doc: add translation strings policy -- #6210 `dfdb6dd` build: disable optional use of gmp in internal secp256k1 build -- #6264 `94cd705` Remove translation for -help-debug options -- #6286 `3902c15` Remove berkeley-db4 workaround in MacOSX build docs -- #6319 `3f8fcc9` doc: update mailing list address - -Credits -======= - -Thanks to everyone who directly contributed to this release: - -- 21E14 -- Adam Weiss -- Alex Morcos -- ayeowch -- azeteki -- Ben Holden-Crowther -- bikinibabe -- BitcoinPRReadingGroup -- Blake Jakopovic -- BtcDrak -- charlescharles -- Chris Arnesen -- Ciemon -- CohibAA -- Corinne Dashjr -- Cory Fields -- Cozz Lovan -- Daira Hopwood -- Daniel Kraft -- Dave Collins -- David A. Harding -- dexX7 -- Earlz -- Eric Lombrozo -- Eric R. Schulz -- Everett Forth -- Flavien Charlon -- fsb4000 -- Gavin Andresen -- Gregory Maxwell -- Heath -- Ivan Pustogarov -- Jacob Welsh -- Jameson Lopp -- Jason Lewicki -- Jeff Garzik -- Jonas Schnelli -- Jonathan Brown -- Jorge Timón -- joshr -- jtimon -- Julian Yap -- Luca Venturini -- Luke Dashjr -- Manuel Araoz -- MarcoFalke -- Matt Bogosian -- Matt Corallo -- Micha -- Michael Ford -- Mike Hearn -- mrbandrews -- Nicolas Benoit -- paveljanik -- Pavel Janík -- Pavel Vasin -- Peter Todd -- Philip Kaufmann -- Pieter Wuille -- pstratem -- randy-waterhouse -- rion -- Rob Van Mieghem -- Ross Nicoll -- Ruben de Vries -- sandakersmann -- Shaul Kfir -- Shawn Wilkinson -- sinetek -- Suhas Daftuar -- svost -- Thomas Zander -- Tom Harding -- UdjinM6 -- Vitalii Demianets -- Wladimir J. van der Laan - -And all those who contributed additional code review and/or security research: - -- Sergio Demian Lerner - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). - diff --git a/doc/release-notes/release-notes-0.10.0.md b/doc/release-notes/release-notes-0.10.0.md deleted file mode 100644 index 30502f73..00000000 --- a/doc/release-notes/release-notes-0.10.0.md +++ /dev/null @@ -1,762 +0,0 @@ -Bitcoin Core version 0.10.0 is now available from: - - https://bitcoin.org/bin/0.10.0/ - -This is a new major version release, bringing both new features and -bug fixes. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -Upgrading and downgrading -========================= - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -Downgrading warning ---------------------- - -Because release 0.10.0 makes use of headers-first synchronization and parallel -block download (see further), the block files and databases are not -backwards-compatible with older versions of Bitcoin Core or other software: - -* Blocks will be stored on disk out of order (in the order they are -received, really), which makes it incompatible with some tools or -other programs. Reindexing using earlier versions will also not work -anymore as a result of this. - -* The block index database will now hold headers for which no block is -stored on disk, which earlier versions won't support. - -If you want to be able to downgrade smoothly, make a backup of your entire data -directory. Without this your node will need start syncing (or importing from -bootstrap.dat) anew afterwards. It is possible that the data from a completely -synchronised 0.10 node may be usable in older versions as-is, but this is not -supported and may break as soon as the older version attempts to reindex. - -This does not affect wallet forward or backward compatibility. - - -Notable changes -=============== - -Faster synchronization ----------------------- - -Bitcoin Core now uses 'headers-first synchronization'. This means that we first -ask peers for block headers (a total of 27 megabytes, as of December 2014) and -validate those. In a second stage, when the headers have been discovered, we -download the blocks. However, as we already know about the whole chain in -advance, the blocks can be downloaded in parallel from all available peers. - -In practice, this means a much faster and more robust synchronization. On -recent hardware with a decent network link, it can be as little as 3 hours -for an initial full synchronization. You may notice a slower progress in the -very first few minutes, when headers are still being fetched and verified, but -it should gain speed afterwards. - -A few RPCs were added/updated as a result of this: -- `getblockchaininfo` now returns the number of validated headers in addition to -the number of validated blocks. -- `getpeerinfo` lists both the number of blocks and headers we know we have in -common with each peer. While synchronizing, the heights of the blocks that we -have requested from peers (but haven't received yet) are also listed as -'inflight'. -- A new RPC `getchaintips` lists all known branches of the block chain, -including those we only have headers for. - -Transaction fee changes ------------------------ - -This release automatically estimates how high a transaction fee (or how -high a priority) transactions require to be confirmed quickly. The default -settings will create transactions that confirm quickly; see the new -'txconfirmtarget' setting to control the tradeoff between fees and -confirmation times. Fees are added by default unless the 'sendfreetransactions' -setting is enabled. - -Prior releases used hard-coded fees (and priorities), and would -sometimes create transactions that took a very long time to confirm. - -Statistics used to estimate fees and priorities are saved in the -data directory in the `fee_estimates.dat` file just before -program shutdown, and are read in at startup. - -New command line options for transaction fee changes: -- `-txconfirmtarget=n` : create transactions that have enough fees (or priority) -so they are likely to begin confirmation within n blocks (default: 1). This setting -is over-ridden by the -paytxfee option. -- `-sendfreetransactions` : Send transactions as zero-fee transactions if possible -(default: 0) - -New RPC commands for fee estimation: -- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for -a transaction to begin confirmation within nblocks. Returns -1 if not enough -transactions have been observed to compute a good estimate. -- `estimatepriority nblocks` : Returns approximate priority needed for -a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not -enough free transactions have been observed to compute a good -estimate. - -RPC access control changes --------------------------- - -Subnet matching for the purpose of access control is now done -by matching the binary network address, instead of with string wildcard matching. -For the user this means that `-rpcallowip` takes a subnet specification, which can be - -- a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`) -- a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`) -- a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`) - -An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address -matches one of them. - -For example: - -| 0.9.x and before | 0.10.x | -|--------------------------------------------|---------------------------------------| -| `-rpcallowip=192.168.1.1` | `-rpcallowip=192.168.1.1` (unchanged) | -| `-rpcallowip=192.168.1.*` | `-rpcallowip=192.168.1.0/24` | -| `-rpcallowip=192.168.*` | `-rpcallowip=192.168.0.0/16` | -| `-rpcallowip=*` (dangerous!) | `-rpcallowip=::/0` (still dangerous!) | - -Using wildcards will result in the rule being rejected with the following error in debug.log: - - Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). - - -REST interface --------------- - -A new HTTP API is exposed when running with the `-rest` flag, which allows -unauthenticated access to public node data. - -It is served on the same port as RPC, but does not need a password, and uses -plain HTTP instead of JSON-RPC. - -Assuming a local RPC server running on port 8332, it is possible to request: -- Blocks: http://localhost:8332/rest/block/*HASH*.*EXT* -- Blocks without transactions: http://localhost:8332/rest/block/notxdetails/*HASH*.*EXT* -- Transactions (requires `-txindex`): http://localhost:8332/rest/tx/*HASH*.*EXT* - -In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded -binary) or `json`. - -For more details, see the `doc/REST-interface.md` document in the repository. - -RPC Server "Warm-Up" Mode -------------------------- - -The RPC server is started earlier now, before most of the expensive -intialisations like loading the block index. It is available now almost -immediately after starting the process. However, until all initialisations -are done, it always returns an immediate error with code -28 to all calls. - -This new behaviour can be useful for clients to know that a server is already -started and will be available soon (for instance, so that they do not -have to start it themselves). - -Improved signing security -------------------------- - -For 0.10 the security of signing against unusual attacks has been -improved by making the signatures constant time and deterministic. - -This change is a result of switching signing to use libsecp256k1 -instead of OpenSSL. Libsecp256k1 is a cryptographic library -optimized for the curve Bitcoin uses which was created by Bitcoin -Core developer Pieter Wuille. - -There exist attacks[1] against most ECC implementations where an -attacker on shared virtual machine hardware could extract a private -key if they could cause a target to sign using the same key hundreds -of times. While using shared hosts and reusing keys are inadvisable -for other reasons, it's a better practice to avoid the exposure. - -OpenSSL has code in their source repository for derandomization -and reduction in timing leaks that we've eagerly wanted to use for a -long time, but this functionality has still not made its -way into a released version of OpenSSL. Libsecp256k1 achieves -significantly stronger protection: As far as we're aware this is -the only deployed implementation of constant time signing for -the curve Bitcoin uses and we have reason to believe that -libsecp256k1 is better tested and more thoroughly reviewed -than the implementation in OpenSSL. - -[1] https://eprint.iacr.org/2014/161.pdf - -Watch-only wallet support -------------------------- - -The wallet can now track transactions to and from wallets for which you know -all addresses (or scripts), even without the private keys. - -This can be used to track payments without needing the private keys online on a -possibly vulnerable system. In addition, it can help for (manual) construction -of multisig transactions where you are only one of the signers. - -One new RPC, `importaddress`, is added which functions similarly to -`importprivkey`, but instead takes an address or script (in hexadecimal) as -argument. After using it, outputs credited to this address or script are -considered to be received, and transactions consuming these outputs will be -considered to be sent. - -The following RPCs have optional support for watch-only: -`getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`, -`listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the -RPC documentation for those methods for more information. - -Compared to using `getrawtransaction`, this mechanism does not require -`-txindex`, scales better, integrates better with the wallet, and is compatible -with future block chain pruning functionality. It does mean that all relevant -addresses need to added to the wallet before the payment, though. - -Consensus library ------------------ - -Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library. - -The purpose of this library is to make the verification functionality that is -critical to Bitcoin's consensus available to other applications, e.g. to language -bindings such as [python-bitcoinlib](https://pypi.python.org/pypi/python-bitcoinlib) or -alternative node implementations. - -This library is called `libgcoinconsensus.so` (or, `.dll` for Windows). -Its interface is defined in the C header [gcoinconsensus.h](https://github.com/bitcoin/bitcoin/blob/0.10/src/script/gcoinconsensus.h). - -In its initial version the API includes two functions: - -- `gcoinconsensus_verify_script` verifies a script. It returns whether the indicated input of the provided serialized transaction -correctly spends the passed scriptPubKey under additional constraints indicated by flags -- `gcoinconsensus_version` returns the API version, currently at an experimental `0` - -The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface -for existing methods should remain stable. - -Standard script rules relaxed for P2SH addresses ------------------------------------------------- - -The IsStandard() rules have been almost completely removed for P2SH -redemption scripts, allowing applications to make use of any valid -script type, such as "n-of-m OR y", hash-locked oracle addresses, etc. -While the Bitcoin protocol has always supported these types of script, -actually using them on mainnet has been previously inconvenient as -standard Bitcoin Core nodes wouldn't relay them to miners, nor would -most miners include them in blocks they mined. - -bitcoin-tx ----------- - -It has been observed that many of the RPC functions offered by gcoind are -"pure functions", and operate independently of the gcoind wallet. This -included many of the RPC "raw transaction" API functions, such as -createrawtransaction. - -bitcoin-tx is a newly introduced command line utility designed to enable easy -manipulation of bitcoin transactions. A summary of its operation may be -obtained via "bitcoin-tx --help" Transactions may be created or signed in a -manner similar to the RPC raw tx API. Transactions may be updated, deleting -inputs or outputs, or appending new inputs and outputs. Custom scripts may be -easily composed using a simple text notation, borrowed from the bitcoin test -suite. - -This tool may be used for experimenting with new transaction types, signing -multi-party transactions, and many other uses. Long term, the goal is to -deprecate and remove "pure function" RPC API calls, as those do not require a -server round-trip to execute. - -Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making -key and script operations easily accessible via command line. - -Mining and relay policy enhancements ------------------------------------- - -Bitcoin Core's block templates are now for version 3 blocks only, and any mining -software relying on its `getblocktemplate` must be updated in parallel to use -libblkmaker either version 0.4.2 or any version from 0.5.1 onward. -If you are solo mining, this will affect you the moment you upgrade Bitcoin -Core, which must be done prior to BIP66 achieving its 951/1001 status. -If you are mining with the stratum mining protocol: this does not affect you. -If you are mining with the getblocktemplate protocol to a pool: this will affect -you at the pool operator's discretion, which must be no later than BIP66 -achieving its 951/1001 status. - -The `prioritisetransaction` RPC method has been added to enable miners to -manipulate the priority of transactions on an individual basis. - -Bitcoin Core now supports BIP 22 long polling, so mining software can be -notified immediately of new templates rather than having to poll periodically. - -Support for BIP 23 block proposals is now available in Bitcoin Core's -`getblocktemplate` method. This enables miners to check the basic validity of -their next block before expending work on it, reducing risks of accidental -hardforks or mining invalid blocks. - -Two new options to control mining policy: -- `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions -if this is 1. -- `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for -"data carrier" outputs. - -The relay policy has changed to more properly implement the desired behavior of not -relaying free (or very low fee) transactions unless they have a priority above the -AllowFreeThreshold(), in which case they are relayed subject to the rate limiter. - -BIP 66: strict DER encoding for signatures ------------------------------------------- - -Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new -consensus rule, which prohibits non-DER signatures. Such transactions have been -non-standard since Bitcoin v0.8.0 (released in February 2013), but were -technically still permitted inside blocks. - -This change breaks the dependency on OpenSSL's signature parsing, and is -required if implementations would want to remove all of OpenSSL from the -consensus code. - -The same miner-voting mechanism as in BIP 34 is used: when 751 out of a -sequence of 1001 blocks have version number 3 or higher, the new consensus -rule becomes active for those blocks. When 951 out of a sequence of 1001 -blocks have version number 3 or higher, it becomes mandatory for all blocks. - -Backward compatibility with current mining software is NOT provided, thus miners -should read the first paragraph of "Mining and relay policy enhancements" above. - -0.10.0 Change log -================= - -Detailed release notes follow. This overview includes changes that affect external -behavior, not code moves, refactors or string updates. - -RPC: -- `f923c07` Support IPv6 lookup in gcoin-cli even when IPv6 only bound on localhost -- `b641c9c` Fix addnode "onetry": Connect with OpenNetworkConnection -- `171ca77` estimatefee / estimatepriority RPC methods -- `b750cf1` Remove cli functionality from gcoind -- `f6984e8` Add "chain" to getmininginfo, improve help in getblockchaininfo -- `99ddc6c` Add nLocalServices info to RPC getinfo -- `cf0c47b` Remove getwork() RPC call -- `2a72d45` prioritisetransaction -- `e44fea5` Add an option `-datacarrier` to allow users to disable relaying/mining data carrier transactions -- `2ec5a3d` Prevent easy RPC memory exhaustion attack -- `d4640d7` Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation -- `83f3543` Added argument to listaccounts to include watchonly addresses -- `952877e` Showing 'involvesWatchonly' property for transactions returned by 'listtransactions' and 'listsinceblock'. It is only appended when the transaction involves a watchonly address -- `d7d5d23` Added argument to listtransactions and listsinceblock to include watchonly addresses -- `f87ba3d` added includeWatchonly argument to 'gettransaction' because it affects balance calculation -- `0fa2f88` added includedWatchonly argument to listreceivedbyaddress/...account -- `6c37f7f` `getrawchangeaddress`: fail when keypool exhausted and wallet locked -- `ff6a7af` getblocktemplate: longpolling support -- `c4a321f` Add peerid to getpeerinfo to allow correlation with the logs -- `1b4568c` Add vout to ListTransactions output -- `b33bd7a` Implement "getchaintips" RPC command to monitor blockchain forks -- `733177e` Remove size limit in RPC client, keep it in server -- `6b5b7cb` Categorize rpc help overview -- `6f2c26a` Closely track mempool byte total. Add "getmempoolinfo" RPC -- `aa82795` Add detailed network info to getnetworkinfo RPC -- `01094bd` Don't reveal whether password is <20 or >20 characters in RPC -- `57153d4` rpc: Compute number of confirmations of a block from block height -- `ff36cbe` getnetworkinfo: export local node's client sub-version string -- `d14d7de` SanitizeString: allow '(' and ')' -- `31d6390` Fixed setaccount accepting foreign address -- `b5ec5fe` update getnetworkinfo help with subversion -- `ad6e601` RPC additions after headers-first -- `33dfbf5` rpc: Fix leveldb iterator leak, and flush before `gettxoutsetinfo` -- `2aa6329` Enable customising node policy for datacarrier data size with a -datacarriersize option -- `f877aaa` submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock -- `e69a587` submitblock: Support for returning specific rejection reasons -- `af82884` Add "warmup mode" for RPC server -- `e2655e0` Add unauthenticated HTTP REST interface to public blockchain data -- `683dc40` Disable SSLv3 (in favor of TLS) for the RPC client and server -- `44b4c0d` signrawtransaction: validate private key -- `9765a50` Implement BIP 23 Block Proposal -- `f9de17e` Add warning comment to getinfo - -Command-line options: -- `ee21912` Use netmasks instead of wildcards for IP address matching -- `deb3572` Add `-rpcbind` option to allow binding RPC port on a specific interface -- `96b733e` Add `-version` option to get just the version -- `1569353` Add `-stopafterblockimport` option -- `77cbd46` Let -zapwallettxes recover transaction meta data -- `1c750db` remove -tor compatibility code (only allow -onion) -- `4aaa017` rework help messages for fee-related options -- `4278b1d` Clarify error message when invalid -rpcallowip -- `6b407e4` -datadir is now allowed in config files -- `bdd5b58` Add option `-sysperms` to disable 077 umask (create new files with system default umask) -- `cbe39a3` Add "bitcoin-tx" command line utility and supporting modules -- `dbca89b` Trigger -alertnotify if network is upgrading without you -- `ad96e7c` Make -reindex cope with out-of-order blocks -- `16d5194` Skip reindexed blocks individually -- `ec01243` --tracerpc option for regression tests -- `f654f00` Change -genproclimit default to 1 -- `3c77714` Make -proxy set all network types, avoiding a connect leak -- `57be955` Remove -printblock, -printblocktree, and -printblockindex -- `ad3d208` remove -maxorphanblocks config parameter since it is no longer functional - -Block and transaction handling: -- `7a0e84d` ProcessGetData(): abort if a block file is missing from disk -- `8c93bf4` LoadBlockIndexDB(): Require block db reindex if any `blk*.dat` files are missing -- `77339e5` Get rid of the static chainMostWork (optimization) -- `4e0eed8` Allow ActivateBestChain to release its lock on cs_main -- `18e7216` Push cs_mains down in ProcessBlock -- `fa126ef` Avoid undefined behavior using CFlatData in CScript serialization -- `7f3b4e9` Relax IsStandard rules for pay-to-script-hash transactions -- `c9a0918` Add a skiplist to the CBlockIndex structure -- `bc42503` Use unordered_map for CCoinsViewCache with salted hash (optimization) -- `d4d3fbd` Do not flush the cache after every block outside of IBD (optimization) -- `ad08d0b` Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache -- `5734d4d` Only remove actualy failed blocks from setBlockIndexValid -- `d70bc52` Rework block processing benchmark code -- `714a3e6` Only keep setBlockIndexValid entries that are possible improvements -- `ea100c7` Reduce maximum coinscache size during verification (reduce memory usage) -- `4fad8e6` Reject transactions with excessive numbers of sigops -- `b0875eb` Allow BatchWrite to destroy its input, reducing copying (optimization) -- `92bb6f2` Bypass reloading blocks from disk (optimization) -- `2e28031` Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage) -- `ab15b2e` Avoid copying undo data (optimization) -- `341735e` Headers-first synchronization -- `afc32c5` Fix rebuild-chainstate feature and improve its performance -- `e11b2ce` Fix large reorgs -- `ed6d1a2` Keep information about all block files in memory -- `a48f2d6` Abstract context-dependent block checking from acceptance -- `7e615f5` Fixed mempool sync after sending a transaction -- `51ce901` Improve chainstate/blockindex disk writing policy -- `a206950` Introduce separate flushing modes -- `9ec75c5` Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true -- `868d041` Remove coinbase-dependant transactions during reorg -- `723d12c` Remove txn which are invalidated by coinbase maturity during reorg -- `0cb8763` Check against MANDATORY flags prior to accepting to mempool -- `8446262` Reject headers that build on an invalid parent -- `008138c` Bugfix: only track UTXO modification after lookup - -P2P protocol and network code: -- `f80cffa` Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails -- `c30329a` Add testnet DNS seed of Alex Kotenko -- `45a4baf` Add testnet DNS seed of Andreas Schildbach -- `f1920e8` Ping automatically every 2 minutes (unconditionally) -- `806fd19` Allocate receive buffers in on the fly -- `6ecf3ed` Display unknown commands received -- `aa81564` Track peers' available blocks -- `caf6150` Use async name resolving to improve net thread responsiveness -- `9f4da19` Use pong receive time rather than processing time -- `0127a9b` remove SOCKS4 support from core and GUI, use SOCKS5 -- `40f5cb8` Send rejects and apply DoS scoring for errors in direct block validation -- `dc942e6` Introduce whitelisted peers -- `c994d2e` prevent SOCKET leak in BindListenPort() -- `a60120e` Add built-in seeds for .onion -- `60dc8e4` Allow -onlynet=onion to be used -- `3a56de7` addrman: Do not propagate obviously poor addresses onto the network -- `6050ab6` netbase: Make SOCKS5 negotiation interruptible -- `604ee2a` Remove tx from AlreadyAskedFor list once we receive it, not when we process it -- `efad808` Avoid reject message feedback loops -- `71697f9` Separate protocol versioning from clientversion -- `20a5f61` Don't relay alerts to peers before version negotiation -- `b4ee0bd` Introduce preferred download peers -- `845c86d` Do not use third party services for IP detection -- `12a49ca` Limit the number of new addressses to accumulate -- `35e408f` Regard connection failures as attempt for addrman -- `a3a7317` Introduce 10 minute block download timeout -- `3022e7d` Require sufficent priority for relay of free transactions -- `58fda4d` Update seed IPs, based on bitcoin.sipa.be crawler data -- `18021d0` Remove bitnodes.io from dnsseeds. - -Validation: -- `6fd7ef2` Also switch the (unused) verification code to low-s instead of even-s -- `584a358` Do merkle root and txid duplicates check simultaneously -- `217a5c9` When transaction outputs exceed inputs, show the offending amounts so as to aid debugging -- `f74fc9b` Print input index when signature validation fails, to aid debugging -- `6fd59ee` script.h: set_vch() should shift a >32 bit value -- `d752ba8` Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only) -- `698c6ab` Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only) -- `ab9edbd` script: create sane error return codes for script validation and remove logging -- `219a147` script: check ScriptError values in script tests -- `0391423` Discourage NOPs reserved for soft-fork upgrades -- `98b135f` Make STRICTENC invalid pubkeys fail the script rather than the opcode -- `307f7d4` Report script evaluation failures in log and reject messages -- `ace39db` consensus: guard against openssl's new strict DER checks -- `12b7c44` Improve robustness of DER recoding code -- `76ce5c8` fail immediately on an empty signature - -Build system: -- `f25e3ad` Fix build in OS X 10.9 -- `65e8ba4` build: Switch to non-recursive make -- `460b32d` build: fix broken boost chrono check on some platforms -- `9ce0774` build: Fix windows configure when using --with-qt-libdir -- `ea96475` build: Add mention of --disable-wallet to bdb48 error messages -- `1dec09b` depends: add shared dependency builder -- `c101c76` build: Add --with-utils (gcoin-cli and bitcoin-tx, default=yes). Help string consistency tweaks. Target sanity check fix -- `e432a5f` build: add option for reducing exports (v2) -- `6134b43` Fixing condition 'sabotaging' MSVC build -- `af0bd5e` osx: fix signing to make Gatekeeper happy (again) -- `a7d1f03` build: fix dynamic boost check when --with-boost= is used -- `d5fd094` build: fix qt test build when libprotobuf is in a non-standard path -- `2cf5f16` Add libgcoinconsensus library -- `914868a` build: add a deterministic dmg signer -- `2d375fe` depends: bump openssl to 1.0.1k -- `b7a4ecc` Build: Only check for boost when building code that requires it - -Wallet: -- `b33d1f5` Use fee/priority estimates in wallet CreateTransaction -- `4b7b1bb` Sanity checks for estimates -- `c898846` Add support for watch-only addresses -- `d5087d1` Use script matching rather than destination matching for watch-only -- `d88af56` Fee fixes -- `a35b55b` Dont run full check every time we decrypt wallet -- `3a7c348` Fix make_change to not create half-satoshis -- `f606bb9` fix a possible memory leak in CWalletDB::Recover -- `870da77` fix possible memory leaks in CWallet::EncryptWallet -- `ccca27a` Watch-only fixes -- `9b1627d` [Wallet] Reduce minTxFee for transaction creation to 1000 satoshis -- `a53fd41` Deterministic signing -- `15ad0b5` Apply AreSane() checks to the fees from the network -- `11855c1` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option - -GUI: -- `c21c74b` osx: Fix missing dock menu with qt5 -- `b90711c` Fix Transaction details shows wrong To: -- `516053c` Make links in 'About Bitcoin Core' clickable -- `bdc83e8` Ensure payment request network matches client network -- `65f78a1` Add GUI view of peer information -- `06a91d9` VerifyDB progress reporting -- `fe6bff2` Add BerkeleyDB version info to RPCConsole -- `b917555` PeerTableModel: Fix potential deadlock. #4296 -- `dff0e3b` Improve rpc console history behavior -- `95a9383` Remove CENT-fee-rule from coin control completely -- `56b07d2` Allow setting listen via GUI -- `d95ba75` Log messages with type>QtDebugMsg as non-debug -- `8969828` New status bar Unit Display Control and related changes -- `674c070` seed OpenSSL PNRG with Windows event data -- `509f926` Payment request parsing on startup now only changes network if a valid network name is specified -- `acd432b` Prevent balloon-spam after rescan -- `7007402` Implement SI-style (thin space) thoudands separator -- `91cce17` Use fixed-point arithmetic in amount spinbox -- `bdba2dd` Remove an obscure option no-one cares about -- `bd0aa10` Replace the temporary file hack currently used to change Bitcoin-Qt's dock icon (OS X) with a buffer-based solution -- `94e1b9e` Re-work overviewpage UI -- `8bfdc9a` Better looking trayicon -- `b197bf3` disable tray interactions when client model set to 0 -- `1c5f0af` Add column Watch-only to transactions list -- `21f139b` Fix tablet crash. closes #4854 -- `e84843c` Broken addresses on command line no longer trigger testnet -- `a49f11d` Change splash screen to normal window -- `1f9be98` Disable App Nap on OSX 10.9+ -- `27c3e91` Add proxy to options overridden if necessary -- `4bd1185` Allow "emergency" shutdown during startup -- `d52f072` Don't show wallet options in the preferences menu when running with -disablewallet -- `6093aa1` Qt: QProgressBar CPU-Issue workaround -- `0ed9675` [Wallet] Add global boolean whether to send free transactions (default=true) -- `ed3e5e4` [Wallet] Add global boolean whether to pay at least the custom fee (default=true) -- `e7876b2` [Wallet] Prevent user from paying a non-sense fee -- `c1c9d5b` Add Smartfee to GUI -- `e0a25c5` Make askpassphrase dialog behave more sanely -- `94b362d` On close of splashscreen interrupt verifyDB -- `b790d13` English translation update -- `8543b0d` Correct tooltip on address book page - -Tests: -- `b41e594` Fix script test handling of empty scripts -- `d3a33fc` Test CHECKMULTISIG with m == 0 and n == 0 -- `29c1749` Let tx (in)valid tests use any SCRIPT_VERIFY flag -- `6380180` Add rejection of non-null CHECKMULTISIG dummy values -- `21bf3d2` Add tests for BoostAsioToCNetAddr -- `b5ad5e7` Add Python test for -rpcbind and -rpcallowip -- `9ec0306` Add CODESEPARATOR/FindAndDelete() tests -- `75ebced` Added many rpc wallet tests -- `0193fb8` Allow multiple regression tests to run at once -- `92a6220` Hook up sanity checks -- `3820e01` Extend and move all crypto tests to crypto_tests.cpp -- `3f9a019` added list/get received by address/ account tests -- `a90689f` Remove timing-based signature cache unit test -- `236982c` Add skiplist unit tests -- `f4b00be` Add CChain::GetLocator() unit test -- `b45a6e8` Add test for getblocktemplate longpolling -- `cdf305e` Set -discover=0 in regtest framework -- `ed02282` additional test for OP_SIZE in script_valid.json -- `0072d98` script tests: BOOLAND, BOOLOR decode to integer -- `833ff16` script tests: values that overflow to 0 are true -- `4cac5db` script tests: value with trailing 0x00 is true -- `89101c6` script test: test case for 5-byte bools -- `d2d9dc0` script tests: add tests for CHECKMULTISIG limits -- `d789386` Add "it works" test for bitcoin-tx -- `df4d61e` Add bitcoin-tx tests -- `aa41ac2` Test IsPushOnly() with invalid push -- `6022b5d` Make `script_{valid,invalid}.json` validation flags configurable -- `8138cbe` Add automatic script test generation, and actual checksig tests -- `ed27e53` Add coins_tests with a large randomized CCoinViewCache test -- `9df9cf5` Make SCRIPT_VERIFY_STRICTENC compatible with BIP62 -- `dcb9846` Extend getchaintips RPC test -- `554147a` Ensure MINIMALDATA invalid tests can only fail one way -- `dfeec18` Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule -- `2b62e17` Clearly separate PUSHDATA and numeric argument MINIMALDATA tests -- `16d78bd` Add valid invert of invalid every numeric opcode tests -- `f635269` tests: enable alertnotify test for Windows -- `7a41614` tests: allow rpc-tests to get filenames for gcoind and gcoin-cli from the environment -- `5122ea7` tests: fix forknotify.py on windows -- `fa7f8cd` tests: remove old pull-tester scripts -- `7667850` tests: replace the old (unused since Travis) tests with new rpc test scripts -- `f4e0aef` Do signature-s negation inside the tests -- `1837987` Optimize -regtest setgenerate block generation -- `2db4c8a` Fix node ranges in the test framework -- `a8b2ce5` regression test only setmocktime RPC call -- `daf03e7` RPC tests: create initial chain with specific timestamps -- `8656dbb` Port/fix txnmall.sh regression test -- `ca81587` Test the exact order of CHECKMULTISIG sig/pubkey evaluation -- `7357893` Prioritize and display -testsafemode status in UI -- `f321d6b` Add key generation/verification to ECC sanity check -- `132ea9b` miner_tests: Disable checkpoints so they don't fail the subsidy-change test -- `bc6cb41` QA RPC tests: Add tests block block proposals -- `f67a9ce` Use deterministically generated script tests -- `11d7a7d` [RPC] add rpc-test for http keep-alive (persistent connections) -- `34318d7` RPC-test based on invalidateblock for mempool coinbase spends -- `76ec867` Use actually valid transactions for script tests -- `c8589bf` Add actual signature tests -- `e2677d7` Fix smartfees test for change to relay policy -- `263b65e` tests: run sanity checks in tests too - -Miscellaneous: -- `122549f` Fix incorrect checkpoint data for testnet3 -- `5bd02cf` Log used config file to debug.log on startup -- `68ba85f` Updated Debian example bitcoin.conf with config from wiki + removed some cruft and updated comments -- `e5ee8f0` Remove -beta suffix -- `38405ac` Add comment regarding experimental-use service bits -- `be873f6` Issue warning if collecting RandSeed data failed -- `8ae973c` Allocate more space if necessary in RandSeedAddPerfMon -- `675bcd5` Correct comment for 15-of-15 p2sh script size -- `fda3fed` libsecp256k1 integration -- `2e36866` Show nodeid instead of addresses in log (for anonymity) unless otherwise requested -- `cd01a5e` Enable paranoid corruption checks in LevelDB >= 1.16 -- `9365937` Add comment about never updating nTimeOffset past 199 samples -- `403c1bf` contrib: remove getwork-based pyminer (as getwork API call has been removed) -- `0c3e101` contrib: Added systemd .service file in order to help distributions integrate gcoind -- `0a0878d` doc: Add new DNSseed policy -- `2887bff` Update coding style and add .clang-format -- `5cbda4f` Changed LevelDB cursors to use scoped pointers to ensure destruction when going out of scope -- `b4a72a7` contrib/linearize: split output files based on new-timestamp-year or max-file-size -- `e982b57` Use explicit fflush() instead of setvbuf() -- `234bfbf` contrib: Add init scripts and docs for Upstart and OpenRC -- `01c2807` Add warning about the merkle-tree algorithm duplicate txid flaw -- `d6712db` Also create pid file in non-daemon mode -- `772ab0e` contrib: use batched JSON-RPC in linarize-hashes (optimization) -- `7ab4358` Update bash-completion for v0.10 -- `6e6a36c` contrib: show pull # in prompt for github-merge script -- `5b9f842` Upgrade leveldb to 1.18, make chainstate databases compatible between ARM and x86 (issue #2293) -- `4e7c219` Catch UTXO set read errors and shutdown -- `867c600` Catch LevelDB errors during flush -- `06ca065` Fix CScriptID(const CScript& in) in empty script case - -Credits -======= - -Thanks to everyone who contributed to this release: - -- 21E14 -- Adam Weiss -- Aitor Pazos -- Alexander Jeng -- Alex Morcos -- Alon Muroch -- Andreas Schildbach -- Andrew Poelstra -- Andy Alness -- Ashley Holman -- Benedict Chan -- Ben Holden-Crowther -- Bryan Bishop -- BtcDrak -- Christian von Roques -- Clinton Christian -- Cory Fields -- Cozz Lovan -- daniel -- Daniel Kraft -- David Hill -- Derek701 -- dexX7 -- dllud -- Dominyk Tiller -- Doug -- elichai -- elkingtowa -- ENikS -- Eric Shaw -- Federico Bond -- Francis GASCHET -- Gavin Andresen -- Giuseppe Mazzotta -- Glenn Willen -- Gregory Maxwell -- gubatron -- HarryWu -- himynameismartin -- Huang Le -- Ian Carroll -- imharrywu -- Jameson Lopp -- Janusz Lenar -- JaSK -- Jeff Garzik -- JL2035 -- Johnathan Corgan -- Jonas Schnelli -- jtimon -- Julian Haight -- Kamil Domanski -- kazcw -- kevin -- kiwigb -- Kosta Zertsekel -- LongShao007 -- Luke Dashjr -- Mark Friedenbach -- Mathy Vanvoorden -- Matt Corallo -- Matthew Bogosian -- Micha -- Michael Ford -- Mike Hearn -- mrbandrews -- mruddy -- ntrgn -- Otto Allmendinger -- paveljanik -- Pavel Vasin -- Peter Todd -- phantomcircuit -- Philip Kaufmann -- Pieter Wuille -- pryds -- randy-waterhouse -- R E Broadley -- Rose Toomey -- Ross Nicoll -- Roy Badami -- Ruben Dario Ponticelli -- Rune K. Svendsen -- Ryan X. Charles -- Saivann -- sandakersmann -- SergioDemianLerner -- shshshsh -- sinetek -- Stuart Cardall -- Suhas Daftuar -- Tawanda Kembo -- Teran McKinney -- tm314159 -- Tom Harding -- Trevin Hofmann -- Whit J -- Wladimir J. van der Laan -- Yoichi Hirai -- Zak Wilcox - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). - diff --git a/doc/release-notes/release-notes-0.10.1.md b/doc/release-notes/release-notes-0.10.1.md deleted file mode 100644 index 3869dbe0..00000000 --- a/doc/release-notes/release-notes-0.10.1.md +++ /dev/null @@ -1,143 +0,0 @@ -Bitcoin Core version 0.10.1 is now available from: - - - -This is a new minor version release, bringing bug fixes and translation -updates. It is recommended to upgrade to this version. - -Please report bugs using the issue tracker at github: - - - -Upgrading and downgrading -========================= - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -Downgrade warning ------------------- - -Because release 0.10.0 and later makes use of headers-first synchronization and -parallel block download (see further), the block files and databases are not -backwards-compatible with pre-0.10 versions of Bitcoin Core or other software: - -* Blocks will be stored on disk out of order (in the order they are -received, really), which makes it incompatible with some tools or -other programs. Reindexing using earlier versions will also not work -anymore as a result of this. - -* The block index database will now hold headers for which no block is -stored on disk, which earlier versions won't support. - -If you want to be able to downgrade smoothly, make a backup of your entire data -directory. Without this your node will need start syncing (or importing from -bootstrap.dat) anew afterwards. It is possible that the data from a completely -synchronised 0.10 node may be usable in older versions as-is, but this is not -supported and may break as soon as the older version attempts to reindex. - -This does not affect wallet forward or backward compatibility. - -Notable changes -=============== - -This is a minor release and hence there are no notable changes. -For the notable changes in 0.10, refer to the release notes for the -0.10.0 release at https://github.com/bitcoin/bitcoin/blob/v0.10.0/doc/release-notes.md - -0.10.1 Change log -================= - -Detailed release notes follow. This overview includes changes that affect external -behavior, not code moves, refactors or string updates. - -RPC: -- `7f502be` fix crash: createmultisig and addmultisigaddress -- `eae305f` Fix missing lock in submitblock - -Block (database) and transaction handling: -- `1d2cdd2` Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates -- `c91c660` fix InvalidateBlock to repopulate setBlockIndexCandidates -- `002c8a2` fix possible block db breakage during re-index -- `a1f425b` Add (optional) consistency check for the block chain data structures -- `1c62e84` Keep mempool consistent during block-reorgs -- `57d1f46` Fix CheckBlockIndex for reindex -- `bac6fca` Set nSequenceId when a block is fully linked - -P2P protocol and network code: -- `78f64ef` don't trickle for whitelisted nodes -- `ca301bf` Reduce fingerprinting through timestamps in 'addr' messages. -- `200f293` Ignore getaddr messages on Outbound connections. -- `d5d8998` Limit message sizes before transfer -- `aeb9279` Better fingerprinting protection for non-main-chain getdatas. -- `cf0218f` Make addrman's bucket placement deterministic (countermeasure 1 against eclipse attacks, see http://cs-people.bu.edu/heilman/eclipse/) -- `0c6f334` Always use a 50% chance to choose between tried and new entries (countermeasure 2 against eclipse attacks) -- `214154e` Do not bias outgoing connections towards fresh addresses (countermeasure 2 against eclipse attacks) -- `aa587d4` Scale up addrman (countermeasure 6 against eclipse attacks) -- `139cd81` Cap nAttempts penalty at 8 and switch to pow instead of a division loop - -Validation: -- `d148f62` Acquire CCheckQueue's lock to avoid race condition - -Build system: -- `8752b5c` 0.10 fix for crashes on OSX 10.6 - -Wallet: -- N/A - -GUI: -- `2c08406` some mac specifiy cleanup (memory handling, unnecessary code) -- `81145a6` fix OSX dock icon window reopening -- `786cf72` fix a issue where "command line options"-action overwrite "Preference"-action (on OSX) - -Tests: -- `1117378` add RPC test for InvalidateBlock - -Miscellaneous: -- `c9e022b` Initialization: set Boost path locale in main thread -- `23126a0` Sanitize command strings before logging them. -- `323de27` Initialization: setup environment before starting QT tests -- `7494e09` Initialization: setup environment before starting tests -- `df45564` Initialization: set fallback locale as environment variable - -Credits -======= - -Thanks to everyone who directly contributed to this release: - -- Alex Morcos -- Cory Fields -- dexX7 -- fsb4000 -- Gavin Andresen -- Gregory Maxwell -- Ivan Pustogarov -- Jonas Schnelli -- Matt Corallo -- mrbandrews -- Pieter Wuille -- Ruben de Vries -- Suhas Daftuar -- Wladimir J. van der Laan - -And all those who contributed additional code review and/or security research: -- 21E14 -- Alison Kendler -- Aviv Zohar -- Ethan Heilman -- Evil-Knievel -- fanquake -- Jeff Garzik -- Jonas Nick -- Luke Dashjr -- Patrick Strateman -- Philip Kaufmann -- Sergio Demian Lerner -- Sharon Goldberg - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). diff --git a/doc/release-notes/release-notes-0.10.2.md b/doc/release-notes/release-notes-0.10.2.md deleted file mode 100644 index 62055ae6..00000000 --- a/doc/release-notes/release-notes-0.10.2.md +++ /dev/null @@ -1,86 +0,0 @@ -Bitcoin Core version 0.10.2 is now available from: - - - -This is a new minor version release, bringing minor bug fixes and translation -updates. It is recommended to upgrade to this version. - -Please report bugs using the issue tracker at github: - - - -Upgrading and downgrading -========================= - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -Downgrade warning ------------------- - -Because release 0.10.0 and later makes use of headers-first synchronization and -parallel block download (see further), the block files and databases are not -backwards-compatible with pre-0.10 versions of Bitcoin Core or other software: - -* Blocks will be stored on disk out of order (in the order they are -received, really), which makes it incompatible with some tools or -other programs. Reindexing using earlier versions will also not work -anymore as a result of this. - -* The block index database will now hold headers for which no block is -stored on disk, which earlier versions won't support. - -If you want to be able to downgrade smoothly, make a backup of your entire data -directory. Without this your node will need start syncing (or importing from -bootstrap.dat) anew afterwards. It is possible that the data from a completely -synchronised 0.10 node may be usable in older versions as-is, but this is not -supported and may break as soon as the older version attempts to reindex. - -This does not affect wallet forward or backward compatibility. - -Notable changes -=============== - -This fixes a serious problem on Windows with data directories that have non-ASCII -characters (https://github.com/bitcoin/bitcoin/issues/6078). - -For other platforms there are no notable changes. - -For the notable changes in 0.10, refer to the release notes -at https://github.com/bitcoin/bitcoin/blob/v0.10.0/doc/release-notes.md - -0.10.2 Change log -================= - -Detailed release notes follow. This overview includes changes that affect external -behavior, not code moves, refactors or string updates. - -Wallet: -- `824c011` fix boost::get usage with boost 1.58 - -Miscellaneous: -- `da65606` Avoid crash on start in TestBlockValidity with gen=1. -- `424ae66` don't imbue boost::filesystem::path with locale "C" on windows (fixes #6078) - -Credits -======= - -Thanks to everyone who directly contributed to this release: - -- Cory Fields -- Gregory Maxwell -- Jonas Schnelli -- Wladimir J. van der Laan - -And all those who contributed additional code review and/or security research: - -- dexX7 -- Pieter Wuille -- vayvanne - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). diff --git a/doc/release-notes/release-notes-0.3.12.md b/doc/release-notes/release-notes-0.3.12.md deleted file mode 100644 index 38715bc7..00000000 --- a/doc/release-notes/release-notes-0.3.12.md +++ /dev/null @@ -1,13 +0,0 @@ -Version 0.3.12 is now available. - -Features: -* json-rpc errors return a more standard error object. (thanks to Gavin Andresen) -* json-rpc command line returns exit codes. -* json-rpc "backupwallet" command. -* Recovers and continues if an exception is caused by a message you received. Other nodes shouldn't be able to cause an exception, and it hasn't happened before, but if a way is found to cause an exception, this would keep it from being used to stop network nodes. - -If you have json-rpc code that checks the contents of the error string, you need to change it to expect error objects of the form {"code":,"message":}, which is the standard. See this thread: -http://www.bitcoin.org/smf/index.php?topic=969.0 - -Download: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.12/ diff --git a/doc/release-notes/release-notes-0.3.13.md b/doc/release-notes/release-notes-0.3.13.md deleted file mode 100644 index 2b95ff23..00000000 --- a/doc/release-notes/release-notes-0.3.13.md +++ /dev/null @@ -1,26 +0,0 @@ -Version 0.3.13 is now available. You should upgrade to prevent potential problems with 0/unconfirmed transactions. Note: 0.3.13 prevents problems if you haven't already spent a 0/unconfirmed transaction, but if that already happened, you need 0.3.13.2. - -Changes: -* Don't count or spend payments until they have 1 confirmation. -* Internal version number from 312 to 31300. -* Only accept transactions sent by IP address if -allowreceivebyip is specified. -* Dropped DB_PRIVATE Berkeley DB flag. -* Fix problem sending the last cent with sub-cent fractional change. -* Auto-detect whether to use 128-bit 4-way SSE2 on Linux. -Gavin Andresen: -* Option -rpcallowip= to accept json-rpc connections from another machine. -* Clean shutdown on SIGTERM on Linux. - -Download: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.13/ - -(Thanks Laszlo for the Mac OSX build!) - -Note: -The SSE2 auto-detect in the Linux 64-bit version doesn't work with AMD in 64-bit mode. Please try this instead and let me know if it gets it right: -http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz - -You can still control the SSE2 use manually with -4way and -4way=0. - -Version 0.3.13.2 (SVN rev 161) has improvements for the case where you already had 0/unconfirmed transactions that you might have already spent. Here's a Windows build of it: -http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe diff --git a/doc/release-notes/release-notes-0.3.14.md b/doc/release-notes/release-notes-0.3.14.md deleted file mode 100644 index e73052ed..00000000 --- a/doc/release-notes/release-notes-0.3.14.md +++ /dev/null @@ -1,11 +0,0 @@ -Version 0.3.14 is now available -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.14/ - -Changes: -* Key pool feature for safer wallet backup -Gavin Andresen: -* TEST network mode with switch -testnet -* Option to use SSL for JSON-RPC connections on unix/osx -* validateaddress RPC command -eurekafag: -* Russian translation diff --git a/doc/release-notes/release-notes-0.3.15.md b/doc/release-notes/release-notes-0.3.15.md deleted file mode 100644 index b98052ef..00000000 --- a/doc/release-notes/release-notes-0.3.15.md +++ /dev/null @@ -1,6 +0,0 @@ -* paytxfee switch is now per KB, so it adds the correct fee for large transactions -* sending avoids using coins with less than 6 confirmations if it can -* BitcoinMiner processes transactions in priority order based on age of dependencies -* make sure generation doesn't start before block 74000 downloaded -* bugfixes by Dean Gores -* testnet, keypoololdest and paytxfee added to getinfo diff --git a/doc/release-notes/release-notes-0.3.16.md b/doc/release-notes/release-notes-0.3.16.md deleted file mode 100644 index 743f84f3..00000000 --- a/doc/release-notes/release-notes-0.3.16.md +++ /dev/null @@ -1 +0,0 @@ -Never released. diff --git a/doc/release-notes/release-notes-0.3.17.md b/doc/release-notes/release-notes-0.3.17.md deleted file mode 100644 index d3604b8f..00000000 --- a/doc/release-notes/release-notes-0.3.17.md +++ /dev/null @@ -1,12 +0,0 @@ -Version 0.3.17 is now available. - -Changes: -* new getwork, thanks m0mchil -* added transaction fee setting in UI options menu -* free transaction limits -* sendtoaddress returns transaction id instead of "sent" -* getaccountaddress - -The UI transaction fee setting was easy since it was still there from 0.1.5 and all I had to do was re-enable it. - -The accounts-based commands: move, sendfrom and getbalance will be in the next release. We still have some more changes to make first. diff --git a/doc/release-notes/release-notes-0.3.18.md b/doc/release-notes/release-notes-0.3.18.md deleted file mode 100644 index ab1c2e06..00000000 --- a/doc/release-notes/release-notes-0.3.18.md +++ /dev/null @@ -1,11 +0,0 @@ -Changes: -* Fixed a wallet.dat compatibility problem if you downgraded from 0.3.17 and then upgraded again -* IsStandard() check to only include known transaction types in blocks -* Jgarzik's optimisation to speed up the initial block download a little - -The main addition in this release is the Accounts-Based JSON-RPC commands that Gavin's been working on (more details at http://www.bitcoin.org/smf/index.php?topic=1886.0). -* getaccountaddress -* sendfrom -* move -* getbalance -* listtransactions diff --git a/doc/release-notes/release-notes-0.3.19.md b/doc/release-notes/release-notes-0.3.19.md deleted file mode 100644 index fcd86756..00000000 --- a/doc/release-notes/release-notes-0.3.19.md +++ /dev/null @@ -1,9 +0,0 @@ -There's more work to do on DoS, but I'm doing a quick build of what I have so far in case it's needed, before venturing into more complex ideas. The build for this is version 0.3.19. - -- Added some DoS controls -As Gavin and I have said clearly before, the software is not at all resistant to DoS attack. This is one improvement, but there are still more ways to attack than I can count. - -I'm leaving the -limitfreerelay part as a switch for now and it's there if you need it. - -- Removed "safe mode" alerts -"safe mode" alerts was a temporary measure after the 0.3.9 overflow bug. We can say all we want that users can just run with "-disablesafemode", but it's better just not to have it for the sake of appearances. It was never intended as a long term feature. Safe mode can still be triggered by seeing a longer (greater total PoW) invalid block chain. diff --git a/doc/release-notes/release-notes-0.3.20.1.md b/doc/release-notes/release-notes-0.3.20.1.md deleted file mode 100644 index 6c5682ea..00000000 --- a/doc/release-notes/release-notes-0.3.20.1.md +++ /dev/null @@ -1 +0,0 @@ -Never released or release notes were lost. diff --git a/doc/release-notes/release-notes-0.3.20.2.md b/doc/release-notes/release-notes-0.3.20.2.md deleted file mode 100644 index 09ecb736..00000000 --- a/doc/release-notes/release-notes-0.3.20.2.md +++ /dev/null @@ -1,17 +0,0 @@ -The maxsendbuffer bug (0.3.20.1 clients not being able to download the block chain from other 0.3.20.1 clients) was only going to get -worse as people upgraded, so I cherry-picked the bug fix and created a minor release yesterday. - -The Amazon Machine Images I used to do the builds are available: - - ami-38a05251 Bitcoin-v0.3.20.2 Mingw (Windows; Administrator password 'bitcoin development') - ami-30a05259 Bitcoin_0.3.20.2 Linux32 - ami-8abc4ee3 Bitcoin_0.3.20.2 Linux64 - -(mac build will be done soon) - -If you have already downloaded version 0.3.20.1, please either add this to your bitcoin.conf file: - - maxsendbuffer=10000 - maxreceivebuffer=10000 - -... or download the new version. diff --git a/doc/release-notes/release-notes-0.3.20.md b/doc/release-notes/release-notes-0.3.20.md deleted file mode 100644 index 9ae21802..00000000 --- a/doc/release-notes/release-notes-0.3.20.md +++ /dev/null @@ -1,22 +0,0 @@ -Please checkout the git integration branch from: - -https://github.com/bitcoin/bitcoin - -... and help test. The new features that need testing are: - -* -nolisten : https://github.com/bitcoin/bitcoin/pull/11 -* -rescan : scan block chain for missing wallet transactions -* -printtoconsole : https://github.com/bitcoin/bitcoin/pull/37 -* RPC gettransaction details : https://github.com/bitcoin/bitcoin/pull/24 -* listtransactions new features : https://github.com/bitcoin/bitcoin/pull/10 - -Bug fixes that also need testing: - -* -maxconnections= : https://github.com/bitcoin/bitcoin/pull/42 -* RPC listaccounts minconf : https://github.com/bitcoin/bitcoin/pull/27 -* RPC move, add time to output : https://github.com/bitcoin/bitcoin/pull/21 -* ...and several improvements to --help output. - -This needs more testing on Windows! Please drop me a quick private message, email, or IRC message if you are able to do some testing. If you find bugs, please open an issue at: - -https://github.com/bitcoin/bitcoin/issues diff --git a/doc/release-notes/release-notes-0.3.21.md b/doc/release-notes/release-notes-0.3.21.md deleted file mode 100644 index 39ae1a4e..00000000 --- a/doc/release-notes/release-notes-0.3.21.md +++ /dev/null @@ -1,20 +0,0 @@ -Binaries for Bitcoin version 0.3.21 are available at: - https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.21/ - -Changes and new features from the 0.3.20 release include: - -* Universal Plug and Play support. Enable automatic opening of a port for incoming connections by running bitcoin or gcoind with the - -upnp=1 command line switch or using the Options dialog box. - -* Support for full-precision bitcoin amounts. You can now send, and bitcoin will display, bitcoin amounts smaller than 0.01. However, sending fewer than 0.01 bitcoins still requires a 0.01 bitcoin fee (so you can send 1.0001 bitcoins without a fee, but you will be asked to pay a fee if you try to send 0.0001). - -* A new method of finding bitcoin nodes to connect with, via DNS A records. Use the -dnsseed option to enable. - -For developers, changes to bitcoin's remote-procedure-call API: - -* New rpc command "sendmany" to send bitcoins to more than one address in a single transaction. - -* Several bug fixes, including a serious intermittent bug that would sometimes cause gcoind to stop accepting rpc requests. - -* -logtimestamps option, to add a timestamp to each line in debug.log. - -* Immature blocks (newly generated, under 120 confirmations) are now shown in listtransactions. diff --git a/doc/release-notes/release-notes-0.3.22.md b/doc/release-notes/release-notes-0.3.22.md deleted file mode 100644 index 4c05e3e5..00000000 --- a/doc/release-notes/release-notes-0.3.22.md +++ /dev/null @@ -1,16 +0,0 @@ -Download URL: https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.22/ - -This is largely a bugfix and TX fee schedule release. We also hope to make 0.3.23 a quick release, to fix problems that the network has seen due to explosive growth in the past week. - -Notable changes: -* Client will accept and relay TX's with 0.0005 BTC fee schedule (users still pay 0.01 BTC per kb, until next version) -* Non-standard transactions accepted on testnet -* Source code tree reorganized (prep for autotools build) -* Remove "Generate Coins" option from GUI, and remove 4way SSE miner. Internal reference CPU miner remains available, but users are directed to external miners for best hash production. -* IRC is overflowing. Client now bootstraps to channels #bitcoin00 - #bitcoin99 -* DNS names now may be used with -addnode, -connect (requires -dns to enable) - -RPC changes: -* 'listtransactions' adds 'from' param, for range queries -* 'move' may take account balances negative -* 'settxfee' added, to manually set TX fee diff --git a/doc/release-notes/release-notes-0.3.23.md b/doc/release-notes/release-notes-0.3.23.md deleted file mode 100644 index c1d520e4..00000000 --- a/doc/release-notes/release-notes-0.3.23.md +++ /dev/null @@ -1,10 +0,0 @@ -Win32, Linux, MacOSX and source releases for bitcoin v0.3.23 have been uploaded to -https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.23/ - -This is another quick bugfix release, trying to deal with the influx of new bitcoin users. - -Main items of note: - -* P2P connect-to-node logic changed to reduce timeout a bit. The network saw a huge influx of new users, who do not permit incoming connections. This change is a short-term hack, to more quickly hunt for useful P2P connections. Better "leaf node" logic is in the works, but this should let us limp along until then. One may use -upnp to properly forward ports, and help the network. -* Transaction fee reduced to 0.0005 for new transactions -* Client will relay transactions with fees as low as 0.0001 BTC diff --git a/doc/release-notes/release-notes-0.3.24.md b/doc/release-notes/release-notes-0.3.24.md deleted file mode 100644 index dc476402..00000000 --- a/doc/release-notes/release-notes-0.3.24.md +++ /dev/null @@ -1,20 +0,0 @@ -Bitcoin v0.3.24 is now available for download at -https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.24/ - -This is another bug fix release. We had hoped to have wallet encryption ready for release, but more urgent fixes for existing clients were needed -- most notably block download problems were getting severe. Wallet encryption is ready for testing at https://github.com/bitcoin/bitcoin/pull/352 for the git-savvy, and hopefully will follow shortly in the next release, v0.4. - -Notable fixes in v0.3.24, and the main reasons for this release: - -F1) Block downloads were failing or taking unreasonable amounts of time to complete, because the increased size of the block chain was bumping up against some earlier buffer-size DoS limits. - -F2) Fix crash caused by loss/lack of network connection. - -Notable changes in v0.3.24: - -C1) DNS seeding enabled by default. - -C2) UPNP enabled by default in the GUI client. The percentage of bitcoin clients that accept incoming connections is quite small, and that is a problem. This should help. gcoind, and unofficial builds, are unchanged (though we encourage use of "-upnp" to help the network!) - -C3) Initial unit testing framework. Bitcoin sorely needs automated tests, and this is a beginning. Contributions welcome. - -C4) Internal wallet code cleanup. While invisible to an end user, this change provides the basis for v0.4's wallet encryption. diff --git a/doc/release-notes/release-notes-0.4.0.md b/doc/release-notes/release-notes-0.4.0.md deleted file mode 100644 index 145072a3..00000000 --- a/doc/release-notes/release-notes-0.4.0.md +++ /dev/null @@ -1,70 +0,0 @@ -Bitcoin version 0.4.0 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.4.0/ - -The main feature in this release is wallet private key encryption; -you can set a passphrase that must be entered before sending coins. -See below for more information; if you decide to encrypt your wallet, -WRITE DOWN YOUR PASSPHRASE AND PUT IT IN A SECURE LOCATION. If you -forget or lose your wallet passphrase, you lose your bitcoins. -Previous versions of bitcoin are unable to read encrypted wallets, -and will crash on startup if the wallet is encrypted. - -Also note: bitcoin version 0.4 uses a newer version of Berkeley DB -(bdb version 4.8) than previous versions (bdb 4.7). If you upgrade -to version 0.4 and then revert back to an earlier version of bitcoin -the it may be unable to start because bdb 4.7 cannot read bdb 4.8 -"log" files. - - -Notable bug fixes from version 0.3.24: - -Fix several bitcoin-becomes-unresponsive bugs due to multithreading -deadlocks. - -Optimize database writes for large (lots of inputs) transactions -(fixes a potential denial-of-service attack) - - -Wallet Encryption - -Bitcoin supports native wallet encryption so that people who steal your -wallet file don't automatically get access to all of your Bitcoins. -In order to enable this feature, choose "Encrypt Wallet" from the -Options menu. You will be prompted to enter a passphrase, which -will be used as the key to encrypt your wallet and will be needed -every time you wish to send Bitcoins. If you lose this passphrase, -you will lose access to spend all of the bitcoins in your wallet, -no one, not even the Bitcoin developers can recover your Bitcoins. -This means you are responsible for your own security, store your -passphrase in a secure location and do not forget it. - -Remember that the encryption built into bitcoin only encrypts the -actual keys which are required to send your bitcoins, not the full -wallet. This means that someone who steals your wallet file will -be able to see all the addresses which belong to you, as well as the -relevant transactions, you are only protected from someone spending -your coins. - -It is recommended that you backup your wallet file before you -encrypt your wallet. To do this, close the Bitcoin client and -copy the wallet.dat file from ~/.bitcoin/ on Linux, /Users/(user -name)/Application Support/Bitcoin/ on Mac OSX, and %APPDATA%/Bitcoin/ -on Windows (that is /Users/(user name)/AppData/Roaming/Bitcoin on -Windows Vista and 7 and /Documents and Settings/(user name)/Application -Data/Bitcoin on Windows XP). Once you have copied that file to a -safe location, reopen the Bitcoin client and Encrypt your wallet. -If everything goes fine, delete the backup and enjoy your encrypted -wallet. Note that once you encrypt your wallet, you will never be -able to go back to a version of the Bitcoin client older than 0.4. - -Keep in mind that you are always responsible for your own security. -All it takes is a slightly more advanced wallet-stealing trojan which -installs a keylogger to steal your wallet passphrase as you enter it -in addition to your wallet file and you have lost all your Bitcoins. -Wallet encryption cannot keep you safe if you do not practice -good security, such as running up-to-date antivirus software, only -entering your wallet passphrase in the Bitcoin client and using the -same passphrase only as your wallet passphrase. - -See the doc/README file in the bitcoin source for technical details -of wallet encryption. diff --git a/doc/release-notes/release-notes-0.4.1.md b/doc/release-notes/release-notes-0.4.1.md deleted file mode 100644 index d0ba014d..00000000 --- a/doc/release-notes/release-notes-0.4.1.md +++ /dev/null @@ -1,38 +0,0 @@ -Bitcoin version 0.4.1 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.4.1/ - -This is a bugfix only release based on 0.4.0. - -Please report bugs by replying to this forum thread. - -MAJOR BUG FIX (CVE-2011-4447) - -The wallet encryption feature introduced in Bitcoin version 0.4.0 did not sufficiently secure the private keys. An attacker who -managed to get a copy of your encrypted wallet.dat file might be able to recover some or all of the unencrypted keys and steal the -associated coins. - -If you have a previously encrypted wallet.dat, the first time you run wxbitcoin or gcoind the wallet will be rewritten, Bitcoin will -shut down, and you will be prompted to restart it to run with the new, properly encrypted file. - -If you had a previously encrypted wallet.dat that might have been copied or stolen (for example, you backed it up to a public -location) you should send all of your bitcoins to yourself using a new bitcoin address and stop using any previously generated addresses. - -Wallets encrypted with this version of Bitcoin are written properly. - -Technical note: the encrypted wallet's 'keypool' will be regenerated the first time you request a new bitcoin address; to be certain that the -new private keys are properly backed up you should: - -1. Run Bitcoin and let it rewrite the wallet.dat file - -2. Run it again, then ask it for a new bitcoin address. -wxBitcoin: new address visible on main window -gcoind: run the 'walletpassphrase' RPC command to unlock the wallet, then run the 'getnewaddress' RPC command. - -3. If your encrypted wallet.dat may have been copied or stolen, send all of your bitcoins to the new bitcoin address. - -4. Shut down Bitcoin, then backup the wallet.dat file. -IMPORTANT: be sure to request a new bitcoin address before backing up, so that the 'keypool' is regenerated and backed up. - -"Security in depth" is always a good idea, so choosing a secure location for the backup and/or encrypting the backup before uploading it is recommended. And as in previous releases, if your machine is infected by malware there are several ways an attacker might steal your bitcoins. - -Thanks to Alan Reiner (etotheipi) for finding and reporting this bug. diff --git a/doc/release-notes/release-notes-0.4.2.md b/doc/release-notes/release-notes-0.4.2.md deleted file mode 100644 index 6c5682ea..00000000 --- a/doc/release-notes/release-notes-0.4.2.md +++ /dev/null @@ -1 +0,0 @@ -Never released or release notes were lost. diff --git a/doc/release-notes/release-notes-0.4.3.md b/doc/release-notes/release-notes-0.4.3.md deleted file mode 100644 index b0fdaea8..00000000 --- a/doc/release-notes/release-notes-0.4.3.md +++ /dev/null @@ -1,21 +0,0 @@ -gcoind version 0.4.3 is now available for download at: -http://luke.dashjr.org/programs/bitcoin/files/gcoind-0.4.3/ (until Gavin uploads to SourceForge) - -This is a bugfix-only release based on 0.4.0. - -Please note that the wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr. - -Please report bugs for the daemon only using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Stable source code is hosted at Gitorious: -http://gitorious.org/bitcoin/gcoind-stable/archive-tarball/v0.4.3#.tar.gz - -BUG FIXES - -Cease locking memory used by non-sensitive information (this caused a huge performance hit on some platforms, especially noticable during initial blockchain download). -Fixed some address-handling deadlocks (client freezes). -No longer accept inbound connections over the internet when Bitcoin is being used with Tor (identity leak). -Use the correct base transaction fee of 0.0005 BTC for accepting transactions into mined blocks (since 0.4.0, it was incorrectly accepting 0.0001 BTC which was only meant to be relayed). -Add new DNS seeds (maintained by Pieter Wuille and Luke Dashjr). - diff --git a/doc/release-notes/release-notes-0.4.4.md b/doc/release-notes/release-notes-0.4.4.md deleted file mode 100644 index c1d0ab02..00000000 --- a/doc/release-notes/release-notes-0.4.4.md +++ /dev/null @@ -1,30 +0,0 @@ -Bitcoin version 0.4.4 is now available for download at: -http://luke.dashjr.org/programs/bitcoin/files/gcoind-0.4.4/ - -This is a bugfix-only release based on 0.4.0. - -Please note that the wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr. - -Please report bugs for the daemon only using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Stable source code is hosted at Gitorious: -http://gitorious.org/bitcoin/gcoind-stable/archive-tarball/v0.4.4#.tar.gz - -BUG FIXES - -Limit the number of orphan transactions stored in memory, to prevent a potential denial-of-service attack by flooding orphan transactions. Also never store invalid transactions at all. -Fix possible buffer overflow on systems with very long application data paths. This is not exploitable. -Resolved multiple bugs preventing long-term unlocking of encrypted wallets (issue #922). -Only send local IP in "version" messages if it is globally routable (ie, not private), and try to get such an IP from UPnP if applicable. -Reannounce UPnP port forwards every 20 minutes, to workaround routers expiring old entries, and allow the -upnp option to override any stored setting. -Various memory leaks and potential null pointer deferences have been -fixed. -Several shutdown issues have been fixed. -Check that keys stored in the wallet are valid at startup, and if not, -report corruption. -Various build fixes. -If no password is specified to gcoind, recommend a secure password. -Update hard-coded fallback seed nodes, choosing recent ones with long uptime and versions at least 0.4.0. -Add checkpoint at block 168,000. - diff --git a/doc/release-notes/release-notes-0.4.5.md b/doc/release-notes/release-notes-0.4.5.md deleted file mode 100644 index 6c5682ea..00000000 --- a/doc/release-notes/release-notes-0.4.5.md +++ /dev/null @@ -1 +0,0 @@ -Never released or release notes were lost. diff --git a/doc/release-notes/release-notes-0.4.6.md b/doc/release-notes/release-notes-0.4.6.md deleted file mode 100644 index a5eb2d3a..00000000 --- a/doc/release-notes/release-notes-0.4.6.md +++ /dev/null @@ -1,37 +0,0 @@ -gcoind version 0.4.6 is now available for download at: -Windows: installer | zip (sig) -Source: tar.gz -gcoind and Bitcoin-Qt version 0.6.0.7 are also tagged in git, but it is recommended to upgrade to 0.6.1. - -These are bugfix-only releases. - -Please report bugs by replying to this forum thread. Note that the 0.4.x wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr. - -BUG FIXES - -Version 0.6.0 allowed importing invalid "private keys", which would be unspendable; 0.6.0.7 will now verify the private key is valid, and refuse to import an invalid one -Verify status of encrypt/decrypt calls to detect failed padding -Check blocks for duplicate transactions earlier. Fixes #1167 -Upgrade Windows builds to OpenSSL 1.0.1b -Set label when selecting an address that already has a label. Fixes #1080 (Bitcoin-Qt) -JSON-RPC listtransactions's from/count handling is now fixed -Optimize and fix multithreaded access, when checking whether we already know about transactions -Fix potential networking deadlock -Proper support for Growl 1.3 notifications -Display an error, rather than crashing, if encoding a QR Code failed (0.6.0.7) -Don't erroneously set "Display addresses" for users who haven't explicitly enabled it (Bitcoin-Qt) -Some non-ASCII input in JSON-RPC expecting hexadecimal may have been misinterpreted rather than rejected -Missing error condition checking added -Do not show green tick unless all known blocks are downloaded. Fixes #921 (Bitcoin-Qt) -Increase time ago of last block for "up to date" status from 30 to 90 minutes -Show a message box when runaway exception happens (Bitcoin-Qt) -Use a messagebox to display the error when -server is provided without providing a rpc password -Show error message instead of exception crash when unable to bind RPC port (Bitcoin-Qt) -Correct sign message bitcoin address tooltip. Fixes #1050 (Bitcoin-Qt) -Removed "(no label)" from QR Code dialog titlebar if we have no label (0.6.0.7) -Removed an ugly line break in tooltip for mature transactions (0.6.0.7) -Add missing tooltip and key shortcut in settings dialog (part of #1088) (Bitcoin-Qt) -Work around issue in boost::program_options that prevents from compiling in clang -Fixed bugs occurring only on platforms with unsigned characters (such as ARM). -Rename make_windows_icon.py to .sh as it is a shell script. Fixes #1099 (Bitcoin-Qt) -Various trivial internal corrections to types used for counting/size loops and warnings diff --git a/doc/release-notes/release-notes-0.5.0.md b/doc/release-notes/release-notes-0.5.0.md deleted file mode 100644 index 425bbfef..00000000 --- a/doc/release-notes/release-notes-0.5.0.md +++ /dev/null @@ -1,70 +0,0 @@ -Bitcoin version 0.5.0 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.0/ - -The major change for this release is a completely new graphical interface that uses the Qt user interface toolkit. - -This release include German, Spanish, Spanish-Castilian, Norwegian and Dutch translations. More translations are welcome; join the project at Transifex if you can help: -https://www.transifex.net/projects/p/bitcoin/ - -Please report bugs using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -For Ubuntu users, there is a new ppa maintained by Matt Corallo which you can add to your system so that it will automatically keep bitcoin up-to-date. Just type "sudo apt-add-repository ppa:bitcoin/bitcoin" in your terminal, then install the bitcoin-qt package. - -MAJOR BUG FIX (CVE-2011-4447) - -The wallet encryption feature introduced in Bitcoin version 0.4.0 did not sufficiently secure the private keys. An attacker who -managed to get a copy of your encrypted wallet.dat file might be able to recover some or all of the unencrypted keys and steal the -associated coins. - -If you have a previously encrypted wallet.dat, the first time you run bitcoin-qt or gcoind the wallet will be rewritten, Bitcoin will -shut down, and you will be prompted to restart it to run with the new, properly encrypted file. - -If you had a previously encrypted wallet.dat that might have been copied or stolen (for example, you backed it up to a public -location) you should send all of your bitcoins to yourself using a new bitcoin address and stop using any previously generated addresses. - -Wallets encrypted with this version of Bitcoin are written properly. - -Technical note: the encrypted wallet's 'keypool' will be regenerated the first time you request a new bitcoin address; to be certain that the -new private keys are properly backed up you should: - -1. Run Bitcoin and let it rewrite the wallet.dat file - -2. Run it again, then ask it for a new bitcoin address. -Bitcoin-Qt: Address Book, then New Address... -gcoind: run the 'walletpassphrase' RPC command to unlock the wallet, then run the 'getnewaddress' RPC command. - -3. If your encrypted wallet.dat may have been copied or stolen, send all of your bitcoins to the new bitcoin address. - -4. Shut down Bitcoin, then backup the wallet.dat file. -IMPORTANT: be sure to request a new bitcoin address before backing up, so that the 'keypool' is regenerated and backed up. - -"Security in depth" is always a good idea, so choosing a secure location for the backup and/or encrypting the backup before uploading it is recommended. And as in previous releases, if your machine is infected by malware there are several ways an attacker might steal your bitcoins. - -Thanks to Alan Reiner (etotheipi) for finding and reporting this bug. - -MAJOR GUI CHANGES - -"Splash" graphics at startup that show address/wallet/blockchain loading progress. - -"Synchronizing with network" progress bar to show block-chain download progress. - -Icons at the bottom of the window that show how well connected you are to the network, with tooltips to display details. - -Drag and drop support for bitcoin: URIs on web pages. - -Export transactions as a .csv file. - -Many other GUI improvements, large and small. - -RPC CHANGES - -getmemorypool : new RPC command, provides everything needed to construct a block with a custom generation transaction and submit a solution - -listsinceblock : new RPC command, list transactions since given block - -signmessage/verifymessage : new RPC commands to sign a message with one of your private keys or verify that a message signed by the private key associated with a bitcoin address. - -GENERAL CHANGES - -Faster initial block download. diff --git a/doc/release-notes/release-notes-0.5.1.md b/doc/release-notes/release-notes-0.5.1.md deleted file mode 100644 index d56bff6d..00000000 --- a/doc/release-notes/release-notes-0.5.1.md +++ /dev/null @@ -1,43 +0,0 @@ -Bitcoin version 0.5.1 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.1/ - -This is a bugfix-only release. - -This release includes 13 translations, including 5 new translations: -Italian, Hungarian, Ukranian, Portuguese (Brazilian) and Simplified Chinese. -More translations are welcome; join the project at Transifex if you can help: -https://www.transifex.net/projects/p/bitcoin/ - -Please report bugs using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Project source code is hosted at github; we are no longer -distributing .tar.gz files here, you can get them -directly from github: -https://github.com/bitcoin/bitcoin/tarball/v0.5.1 # .tar.gz -https://github.com/bitcoin/bitcoin/zipball/v0.5.1 # .zip - -For Ubuntu users, there is a new ppa maintained by Matt Corallo which -you can add to your system so that it will automatically keep -bitcoin up-to-date. Just type -sudo apt-add-repository ppa:bitcoin/bitcoin -in your terminal, then install the bitcoin-qt package. - - -BUG FIXES - -Re-enable SSL support for the JSON-RPC interface (it was unintentionally -disabled for the 0.5.0 release binaries). - -The code that finds peers via "dns seeds" no longer stops bitcoin startup -if one of the dns seed machines is down. - -Tooltips on the transaction list view were rendering incorrectly (as black boxes -or with a transparent background). - -Prevent a denial-of-service attack involving flooding a bitcoin node with -orphan blocks. - -The wallet passphrase dialog now warns you if the caps lock key was pressed. - -Improved searching in addresses and labels in bitcoin-qt. diff --git a/doc/release-notes/release-notes-0.5.2.md b/doc/release-notes/release-notes-0.5.2.md deleted file mode 100644 index d94c244c..00000000 --- a/doc/release-notes/release-notes-0.5.2.md +++ /dev/null @@ -1,22 +0,0 @@ -Bitcoin version 0.5.2 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.2/ - -This is a bugfix-only release based on 0.5.1. - -Please report bugs using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Stable source code is hosted at Gitorious: -http://gitorious.org/bitcoin/gcoind-stable/archive-tarball/v0.5.2#.tar.gz - -BUG FIXES - -Check all transactions in blocks after the last checkpoint (0.5.0 and 0.5.1 skipped checking ECDSA signatures during initial blockchain download). -Cease locking memory used by non-sensitive information (this caused a huge performance hit on some platforms, especially noticable during initial blockchain download; this was -not a security vulnerability). -Fixed some address-handling deadlocks (client freezes). -No longer accept inbound connections over the internet when Bitcoin is being used with Tor (identity leak). -Re-enable SSL support for the JSON-RPC interface (it was unintentionally disabled for the 0.5.0 and 0.5.1 release Linux binaries). -Use the correct base transaction fee of 0.0005 BTC for accepting transactions into mined blocks (since 0.4.0, it was incorrectly accepting 0.0001 BTC which was only meant to be relayed). -Don't show "IP" for transactions which are not necessarily IP transactions. -Add new DNS seeds (maintained by Pieter Wuille and Luke Dashjr). diff --git a/doc/release-notes/release-notes-0.5.3.md b/doc/release-notes/release-notes-0.5.3.md deleted file mode 100644 index 651d21e5..00000000 --- a/doc/release-notes/release-notes-0.5.3.md +++ /dev/null @@ -1,42 +0,0 @@ -Bitcoin version 0.5.3 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.3/ - -This is a bugfix-only release based on 0.5.1. -It also includes a few protocol updates. - -Please report bugs using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Stable source code is hosted at Gitorious: -http://gitorious.org/bitcoin/gcoind-stable/archive-tarball/v0.5.3#.tar.gz - -PROTOCOL UPDATES - -BIP 30: Introduce a new network rule: "a block is not valid if it contains a transaction whose hash already exists in the block chain, unless all that transaction's outputs were already spent before said block" beginning on March 15, 2012, 00:00 UTC. -On testnet, allow mining of min-difficulty blocks if 20 minutes have gone by without mining a regular-difficulty block. This is to make testing Bitcoin easier, and will not affect normal mode. - -BUG FIXES - -Limit the number of orphan transactions stored in memory, to prevent a potential denial-of-service attack by flooding orphan transactions. Also never store invalid transactions at all. -Fix possible buffer overflow on systems with very long application data paths. This is not exploitable. -Resolved multiple bugs preventing long-term unlocking of encrypted wallets -(issue #922). -Only send local IP in "version" messages if it is globally routable (ie, not private), and try to get such an IP from UPnP if applicable. -Reannounce UPnP port forwards every 20 minutes, to workaround routers expiring old entries, and allow the -upnp option to override any stored setting. -Skip splash screen when -min is used, and fix Minimize to Tray function. -Do not blank "label" in Bitcoin-Qt "Send" tab, if the user has already entered something. -Correct various labels and messages. -Various memory leaks and potential null pointer deferences have been fixed. -Handle invalid Bitcoin URIs using "bitcoin://" instead of "bitcoin:". -Several shutdown issues have been fixed. -Revert to "global progress indication", as starting from zero every time was considered too confusing for many users. -Check that keys stored in the wallet are valid at startup, and if not, report corruption. -Enable accessible widgets on Windows, so that people with screen readers such as NVDA can make sense of it. -Various build fixes. -If no password is specified to gcoind, recommend a secure password. -Automatically focus and scroll to new "Send coins" entries in Bitcoin-Qt. -Show a message box for --help on Windows, for Bitcoin-Qt. -Add missing "About Qt" menu option to show built-in Qt About dialog. -Don't show "-daemon" as an option for Bitcoin-Qt, since it isn't available. -Update hard-coded fallback seed nodes, choosing recent ones with long uptime and versions at least 0.4.0. -Add checkpoint at block 168,000. diff --git a/doc/release-notes/release-notes-0.5.4.md b/doc/release-notes/release-notes-0.5.4.md deleted file mode 100644 index fdc55fbd..00000000 --- a/doc/release-notes/release-notes-0.5.4.md +++ /dev/null @@ -1,39 +0,0 @@ -Bitcoin version 0.5.4 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.4/ -NOTE: 0.5.4rc3 is being renamed to 0.5.4 final with no changes. - -This is a bugfix-only release in the 0.5.x series, plus a few protocol updates. - -Please report bugs using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Stable source code is hosted at Gitorious: -http://gitorious.org/bitcoin/gcoind-stable/archive-tarball/v0.5.4#.tar.gz - -PROTOCOL UPDATES - -BIP 16: Special-case "pay to script hash" logic to enable minimal validation of new transactions. -Support for validating message signatures produced with compressed public keys. - -BUG FIXES - -Build with thread-safe MingW libraries for Windows, fixing a dangerous memory corruption scenario when exceptions are thrown. -Fix broken testnet mining. -Stop excess inventory relay during initial block download. -When disconnecting a node, clear the received buffer so that we do not process any already received messages. -Yet another attempt at implementing "minimize to tray" that works on all operating systems. -Fix Bitcoin-Qt notifications under Growl 1.3. -Increase required age of Bitcoin-Qt's "not up to date" status from 30 to 90 minutes. -Implemented missing verifications that led to crash on entering some wrong passphrases for encrypted wallets. -Fix default filename suffixes in GNOME save dialog. -Make the "Send coins" tab use the configured unit type, even on the first attempt. -Print detailed wallet loading errors to debug.log when it is corrupt. -Allocate exactly the amount of space needed for signing transactions, instead of a fixed 10k buffer. -Workaround for improbable memory access violation. -Check wallet's minimum version before trying to load it. -Remove wxBitcoin properly when installing Bitcoin-Qt over it. (Windows) -Detail reorganization information better in debug log. -Use a messagebox to display the error when -server is provided without configuring a RPC password. -Testing suite build now honours provided CXXFLAGS. -Removed an extraneous line-break in mature transaction tooltips. -Fix some grammatical errors in translation process documentation. diff --git a/doc/release-notes/release-notes-0.5.5.md b/doc/release-notes/release-notes-0.5.5.md deleted file mode 100644 index 3343cd3e..00000000 --- a/doc/release-notes/release-notes-0.5.5.md +++ /dev/null @@ -1,37 +0,0 @@ -gcoind and Bitcoin-Qt version 0.5.5 are now available for download at: -Windows: installer | zip (sig) -Source: tar.gz -gcoind and Bitcoin-Qt version 0.6.0.7 are also tagged in git, but it is recommended to upgrade to 0.6.1. - -These are bugfix-only releases. - -Please report bugs by replying to this forum thread. Note that the 0.4.x wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr. - -BUG FIXES - -Version 0.6.0 allowed importing invalid "private keys", which would be unspendable; 0.6.0.7 will now verify the private key is valid, and refuse to import an invalid one -Verify status of encrypt/decrypt calls to detect failed padding -Check blocks for duplicate transactions earlier. Fixes #1167 -Upgrade Windows builds to OpenSSL 1.0.1b -Set label when selecting an address that already has a label. Fixes #1080 (Bitcoin-Qt) -JSON-RPC listtransactions's from/count handling is now fixed -Optimize and fix multithreaded access, when checking whether we already know about transactions -Fix potential networking deadlock -Proper support for Growl 1.3 notifications -Display an error, rather than crashing, if encoding a QR Code failed (0.6.0.7) -Don't erroneously set "Display addresses" for users who haven't explicitly enabled it (Bitcoin-Qt) -Some non-ASCII input in JSON-RPC expecting hexadecimal may have been misinterpreted rather than rejected -Missing error condition checking added -Do not show green tick unless all known blocks are downloaded. Fixes #921 (Bitcoin-Qt) -Increase time ago of last block for "up to date" status from 30 to 90 minutes -Show a message box when runaway exception happens (Bitcoin-Qt) -Use a messagebox to display the error when -server is provided without providing a rpc password -Show error message instead of exception crash when unable to bind RPC port (Bitcoin-Qt) -Correct sign message bitcoin address tooltip. Fixes #1050 (Bitcoin-Qt) -Removed "(no label)" from QR Code dialog titlebar if we have no label (0.6.0.7) -Removed an ugly line break in tooltip for mature transactions (0.6.0.7) -Add missing tooltip and key shortcut in settings dialog (part of #1088) (Bitcoin-Qt) -Work around issue in boost::program_options that prevents from compiling in clang -Fixed bugs occurring only on platforms with unsigned characters (such as ARM). -Rename make_windows_icon.py to .sh as it is a shell script. Fixes #1099 (Bitcoin-Qt) -Various trivial internal corrections to types used for counting/size loops and warnings diff --git a/doc/release-notes/release-notes-0.6.0.md b/doc/release-notes/release-notes-0.6.0.md deleted file mode 100644 index 4b743ff7..00000000 --- a/doc/release-notes/release-notes-0.6.0.md +++ /dev/null @@ -1,138 +0,0 @@ -Bitcoin version 0.6.0 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.0/test/ - -This release includes more than 20 language localizations. -More translations are welcome; join the -project at Transifex to help: -https://www.transifex.net/projects/p/bitcoin/ - -Please report bugs using the issue tracker at github: -https://github.com/bitcoin/bitcoin/issues - -Project source code is hosted at github; we are no longer -distributing .tar.gz files here, you can get them -directly from github: -https://github.com/bitcoin/bitcoin/tarball/v0.6.0 # .tar.gz -https://github.com/bitcoin/bitcoin/zipball/v0.6.0 # .zip - -For Ubuntu users, there is a ppa maintained by Matt Corallo which -you can add to your system so that it will automatically keep -bitcoin up-to-date. Just type -sudo apt-add-repository ppa:bitcoin/bitcoin -in your terminal, then install the bitcoin-qt package. - - -KNOWN ISSUES - -Shutting down while synchronizing with the network -(downloading the blockchain) can take more than a minute, -because database writes are queued to speed up download -time. - - -NEW FEATURES SINCE BITCOIN VERSION 0.5 - -Initial network synchronization should be much faster -(one or two hours on a typical machine instead of ten or more -hours). - -Backup Wallet menu option. - -Bitcoin-Qt can display and save QR codes for sending -and receiving addresses. - -New context menu on addresses to copy/edit/delete them. - -New Sign Message dialog that allows you to prove that you -own a bitcoin address by creating a digital -signature. - -New wallets created with this version will -use 33-byte 'compressed' public keys instead of -65-byte public keys, resulting in smaller -transactions and less traffic on the bitcoin -network. The shorter keys are already supported -by the network but wallet.dat files containing -short keys are not compatible with earlier -versions of Bitcoin-Qt/gcoind. - -New command-line argument -blocknotify= -that will spawn a shell process to run -when a new block is accepted. - -New command-line argument -splash=0 to disable -Bitcoin-Qt's initial splash screen - -validateaddress JSON-RPC api command output includes -two new fields for addresses in the wallet: -pubkey : hexadecimal public key -iscompressed : true if pubkey is a short 33-byte key - -New JSON-RPC api commands for dumping/importing -private keys from the wallet (dumprivkey, importprivkey). - -New JSON-RPC api command for getting information about -blocks (getblock, getblockhash). - -New JSON-RPC api command (getmininginfo) for getting -extra information related to mining. The getinfo -JSON-RPC command no longer includes mining-related -information (generate/genproclimit/hashespersec). - - - -NOTABLE CHANGES - -BIP30 implemented (security fix for an attack involving -duplicate "coinbase transactions"). - -The -nolisten, -noupnp and -nodnsseed command-line -options were renamed to -listen, -upnp and -dnsseed, -with a default value of 1. The old names are still -supported for compatibility (so specifying -nolisten -is automatically interpreted as -listen=0; every -boolean argument can now be specified as either --foo or -nofoo). - -The -noirc command-line options was renamed to --irc, with a default value of 0. Run -irc=1 to -get the old behavior. - -Three fill-up-available-memory denial-of-service -attacks were fixed. - - -NOT YET IMPLEMENTED FEATURES - -Support for clicking on bitcoin: URIs and -opening/launching Bitcoin-Qt is available only on Linux, -and only if you configure your desktop to launch -Bitcoin-Qt. All platforms support dragging and dropping -bitcoin: URIs onto the Bitcoin-Qt window to start -payment. - - -PRELIMINARY SUPPORT FOR MULTISIGNATURE TRANSACTIONS - -This release has preliminary support for multisignature -transactions-- transactions that require authorization -from more than one person or device before they -will be accepted by the bitcoin network. - -Prior to this release, multisignature transactions -were considered 'non-standard' and were ignored; -with this release multisignature transactions are -considered standard and will start to be relayed -and accepted into blocks. - -It is expected that future releases of Bitcoin-Qt -will support the creation of multisignature transactions, -once enough of the network has upgraded so relaying -and validating them is robust. - -For this release, creation and testing of multisignature -transactions is limited to the bitcoin test network using -the "addmultisigaddress" JSON-RPC api call. - -Short multisignature address support is included in this -release, as specified in BIP 13 and BIP 16. diff --git a/doc/release-notes/release-notes-0.6.1.md b/doc/release-notes/release-notes-0.6.1.md deleted file mode 100644 index ef7966ec..00000000 --- a/doc/release-notes/release-notes-0.6.1.md +++ /dev/null @@ -1,2 +0,0 @@ -Never released - diff --git a/doc/release-notes/release-notes-0.6.2.md b/doc/release-notes/release-notes-0.6.2.md deleted file mode 100644 index bb85fb23..00000000 --- a/doc/release-notes/release-notes-0.6.2.md +++ /dev/null @@ -1,50 +0,0 @@ -Bitcoin version 0.6.2 is now available for download at: -http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.2/ - -This is a bug-fix and code-cleanup release, with no major new features. - -Please report bugs using the github issue tracker at: -https://github.com/bitcoin/bitcoin/issues - - -NOTABLE CHANGES - -Much faster shutdowns. However, the blkindex.dat file is no longer -portable to different data directories by default. If you need a -portable blkindex.dat file then run with the new -detachdb=1 option -or the "Detach databases at shutdown" GUI preference. - -Fixed https://github.com/bitcoin/bitcoin/issues/1065, a bug that -could cause long-running nodes to crash. - -Mac and Windows binaries are compiled against OpenSSL 1.0.1b (Linux -binaries are dynamically linked to the version of OpenSSL on the system). - - -CHANGE SUMMARY - -Use 'git shortlog --no-merges v0.6.0..' for a summary of this release. - -Source codebase changes: -- Many source code cleanups and warnings fixes. Close to building with -Wall -- Locking overhaul, and several minor locking fixes -- Several source code portability fixes, e.g. FreeBSD - -JSON-RPC interface changes: -- addmultisigaddress enabled for mainnet (previously only enabled for testnet) - -Network protocol changes: -- protocol version 60001 -- added nonce value to "ping" message (BIP 31) -- added new "pong" message (BIP 31) - -Backend storage changes: -- Less redundant database flushing, especially during initial block download -- Shutdown improvements (see above) - -Qt user interface: -- minor URI handling improvements -- progressbar improvements -- error handling improvements (show message box rather than console exception, -etc.) -- by popular request, make 4th bar of connection icon green diff --git a/doc/release-notes/release-notes-0.6.3.md b/doc/release-notes/release-notes-0.6.3.md deleted file mode 100644 index 28bb20e1..00000000 --- a/doc/release-notes/release-notes-0.6.3.md +++ /dev/null @@ -1,29 +0,0 @@ -Bitcoin version 0.6.3 is now available for download at: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.3/ - -This is a bug-fix release, with no new features. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - -CHANGE SUMMARY - -Fixed a serious denial-of-service attack that could cause the -bitcoin process to become unresponsive. Thanks to Sergio Lerner -for finding and responsibly reporting the problem. (CVE-2012-3789) - -Optimized the process of checking transaction signatures, to -speed up processing of new block messages and make propagating -blocks across the network faster. - -Fixed an obscure bug that could cause the bitcoin process to get -stuck on an invalid block-chain, if the invalid chain was -hundreds of blocks long. - -Bitcoin-Qt no longer automatically selects the first address -in the address book (Issue #1384). - -Fixed minimize-to-dock behavior of Bitcon-Qt on the Mac. - -Added a block checkpoint at block 185,333 to speed up initial -blockchain download. diff --git a/doc/release-notes/release-notes-0.7.0.md b/doc/release-notes/release-notes-0.7.0.md deleted file mode 100644 index 6ee7a9cf..00000000 --- a/doc/release-notes/release-notes-0.7.0.md +++ /dev/null @@ -1,169 +0,0 @@ -Bitcoin version 0.7.0 is now available for download at: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.7.0/ - -We recommend that everybody running prior versions of gcoind/Bitcoin-Qt -upgrade to this release, except for users running Mac OSX 10.5. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - -Project source code is hosted at github; you can get -source-only tarballs/zipballs directly from there: - https://github.com/bitcoin/bitcoin/tarball/v0.7.0 # .tar.gz - https://github.com/bitcoin/bitcoin/zipball/v0.7.0 # .zip - -Ubuntu Linux users can use the "Personal Package Archive" (PPA) -maintained by Matt Corallo to automatically keep -bitcoin up-to-date. Just type - sudo apt-add-repository ppa:bitcoin/bitcoin - sudo apt-get update -in your terminal, then install the bitcoin-qt package: - sudo apt-get install bitcoin-qt - - -How to Upgrade - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -Code: -/Applications/Bitcoin-Qt -(on Mac) or -Code: -gcoind/bitcoin-qt -(on Linux). - -If you were running on Linux with a version that might have been compiled -with a different version of Berkeley DB (for example, if you were using the -PPA and are switching to the binary release), then run the old version again -with the -detachdb argument and shut it down; if you do not, then the new -version will not be able to read the database files and will exit with an error. - -Incompatible Changes - -* Replaced the 'getmemorypool' RPC command with 'getblocktemplate/submitblock' - and 'getrawmempool' commands. -* Remove deprecated RPC 'getblocknumber' - -Bitcoin Improvement Proposals implemented - -BIP 22 - 'getblocktemplate', 'submitblock' RPCs -BIP 34 - block version 2, height in coinbase -BIP 35 - 'mempool' message, extended 'getdata' message behavior - - -Core bitcoin handling and blockchain database - -* Reduced CPU usage, by eliminating some redundant hash calculations -* Cache signature verifications, to eliminate redundant signature checks -* Transactions with zero-value outputs are considered non-standard -* Mining: when creating new blocks, sort 'paid' area by fee-per-kb -* Database: better validation of on-disk stored data -* Database: minor optimizations and reliability improvements -* -loadblock=FILE will import an external block file -* Additional DoS (denial-of-service) prevention measures -* New blockchain checkpoint at block 193,000 - - -JSON-RPC API - -* Internal HTTP server is now thread-per-connection, rather than - a single-threaded queue that would stall on network I/O. -* Internal HTTP server supports HTTP/1.1, pipelined requests and - connection keep-alive. -* Support JSON-RPC 2.0 batches, to encapsulate multiple JSON-RPC requests - within a single HTTP request. -* IPv6 support -* Added raw transaction API. See https://gist.github.com/2839617 -* Added 'getrawmempool', to list contents of TX memory pool -* Added 'getpeerinfo', to list data about each connected network peer -* Added 'listaddressgroupings' for better coin control -* Rework getblock call. -* Remove deprecated RPC 'getblocknumber' -* Remove superceded RPC 'getmemorypool' (see BIP 22, above) -* listtransactions output now displays "smart" times for transactions, - and 'blocktime' and 'timereceived' fields were added - - -P2P networking - -* IPv6 support -* Tor hidden service support (see doc/Tor.txt) -* Attempts to fix "stuck blockchain download" problems -* Replace BDB database "addr.dat" with internally-managed "peers.dat" - file containing peer address data. -* Lower default send buffer from 10MB to 1MB -* proxy: SOCKS5 by default -* Support connecting by hostnames passed to proxy -* Add -seednode connections, and use this instead of DNS seeds when proxied -* Added -externalip and -discover -* Add -onlynet to connect only to a given network (IPv4, IPv6, or Tor) -* Separate listening sockets, -bind= - - -Qt GUI - -* Add UI RPC console / debug window -* Re-Enable URI handling on Windows, add safety checks and tray-notifications -* Harmonize the use of ellipsis ("...") to be used in menus, but not on buttons -* Add 2 labels to the overviewpage that display Wallet and Transaction status (obsolete or current) -* Extend the optionsdialog (e.g. language selection) and re-work it to a tabbed UI -* Merge sign/verify message into a single window with tabbed UI -* Ensure a changed bitcoin unit immediately updates all GUI elements that use units -* Update QR Code dialog -* Improve error reporting at startup -* Fine-grained UI updates for a much smoother UI during block downloads -* Remove autocorrection of 0/i in addresses in UI -* Reorganize tray icon menu into more logical order -* Persistently poll for balance change when number of blocks changed -* Much better translations -* Override progress bar design on platforms with segmented progress bars to assist with readability -* Added 'immature balance' display on the overview page -* (Windows only): enable ASLR and DEP for bitcoin-qt.exe -* (Windows only): add meta-data to bitcoin-qt.exe (e.g. description) - -Internal codebase - -* Additional unit tests -* Compile warning fixes - - -Miscellaneous - -* Reopen debug.log upon SIGHUP -* Bash programmable completion for gcoind(1) -* On supported OS's, each thread is given a useful name - - -Thanks to everybody who contributed to this release: - -Chris Moore -Christian von Roques -David Joel Schwartz -Douglas Huff -Fordy -Gavin Andresen -Giel van Schijndel -Gregory Maxwell -Jeff Garzik -Luke Dashjr -Matt Corallo -Michael Ford -Michael Hendricks -Peter Todd -Philip Kaufmann -Pieter Wuille -R E Broadley -Ricardo M. Correia -Rune K. Svendsen -Scott Ellis -Stephane Glondu -Wladimir J. van der Laan -cardpuncher -coderrr -fanquake -grimd34th -sje397 -xanatos - -Thanks to Sergio Lerner for reporting denial-of-service vulnerabilities fixed in this release. diff --git a/doc/release-notes/release-notes-0.7.1.md b/doc/release-notes/release-notes-0.7.1.md deleted file mode 100644 index 580536a7..00000000 --- a/doc/release-notes/release-notes-0.7.1.md +++ /dev/null @@ -1,110 +0,0 @@ -Bitcoin version 0.7.1 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.7.1/ - -This is a bug-fix minor release. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - -Project source code is hosted at github; you can get -source-only tarballs/zipballs directly from there: - https://github.com/bitcoin/bitcoin/tarball/v0.7.1 # .tar.gz - https://github.com/bitcoin/bitcoin/zipball/v0.7.1 # .zip - -Ubuntu Linux users can use the "Personal Package Archive" (PPA) -maintained by Matt Corallo to automatically keep -up-to-date. Just type: - sudo apt-add-repository ppa:bitcoin/bitcoin - sudo apt-get update -in your terminal, then install the bitcoin-qt package: - sudo apt-get install bitcoin-qt - -KNOWN ISSUES ------------- - -Mac OSX 10.5 is no longer supported. - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you were running on Linux with a version that might have been compiled -with a different version of Berkeley DB (for example, if you were using an -Ubuntu PPA version), then run the old version again with the -detachdb -argument and shut it down; if you do not, then the new version will not -be able to read the database files and will exit with an error. - -Explanation of -detachdb (and the new "stop true" RPC command): -The Berkeley DB database library stores data in both ".dat" and -"log" files, so the database is always in a consistent state, -even in case of power failure or other sudden shutdown. The -format of the ".dat" files is portable between different -versions of Berkeley DB, but the "log" files are not-- even minor -version differences may have incompatible "log" files. The --detachdb option moves any pending changes from the "log" files -to the "blkindex.dat" file for maximum compatibility, but makes -shutdown much slower. Note that the "wallet.dat" file is always -detached, and versions prior to 0.6.0 detached all databases -at shutdown. - -New features ------------- - -* Added a boolean argument to the RPC 'stop' command, if true sets - -detachdb to create standalone database .dat files before shutting down. - -* -salvagewallet command-line option, which moves any existing wallet.dat - to wallet.{timestamp}.dat and then attempts to salvage public/private - keys and master encryption keys (if the wallet is encrypted) into - a new wallet.dat. This should only be used if your wallet becomes - corrupted, and is not intended to replace regular wallet backups. - -* Import $DataDir/bootstrap.dat automatically, if it exists. - -Dependency changes ------------------- - -* Qt 4.8.2 for Windows builds - -* openssl 1.0.1c - -Bug fixes ---------- - -* Clicking on a bitcoin: URI on Windows should now launch Bitcoin-Qt properly. - -* When running -testnet, use RPC port 18332 by default. - -* Better detection and handling of corrupt wallet.dat and blkindex.dat files. - Previous versions would crash with a DB_RUNRECOVERY exception, this - version detects most problems and tells you how to recover if it - cannot recover itself. - -* Fixed an uninitialized variable bug that could cause transactions to - be reported out of order. - -* Fixed a bug that could cause occasional crashes on exit. - -* Warn the user that they need to create fresh wallet backups after they - encrypt their wallet. - ----------------------------------------------------- -Thanks to everybody who contributed to this release: - -Gavin Andresen -Jeff Garzik -Luke Dashjr -Mark Friedenbach -Matt Corallo -Philip Kaufmann -Pieter Wuille -Rune K. Svendsen -Virgil Dupras -Wladimir J. van der Laan -fanquake -kjj2 -xanatos diff --git a/doc/release-notes/release-notes-0.7.2.md b/doc/release-notes/release-notes-0.7.2.md deleted file mode 100644 index 958a985a..00000000 --- a/doc/release-notes/release-notes-0.7.2.md +++ /dev/null @@ -1,68 +0,0 @@ -Bitcoin version 0.7.2 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.7.2 - -This is a bug-fix minor release. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you were running on Linux with a version that might have been compiled -with a different version of Berkeley DB (for example, if you were using an -Ubuntu PPA version), then run the old version again with the -detachdb -argument and shut it down; if you do not, then the new version will not -be able to read the database files and will exit with an error. - -Explanation of -detachdb (and the new "stop true" RPC command): -The Berkeley DB database library stores data in both ".dat" and -"log" files, so the database is always in a consistent state, -even in case of power failure or other sudden shutdown. The -format of the ".dat" files is portable between different -versions of Berkeley DB, but the "log" files are not-- even minor -version differences may have incompatible "log" files. The --detachdb option moves any pending changes from the "log" files -to the "blkindex.dat" file for maximum compatibility, but makes -shutdown much slower. Note that the "wallet.dat" file is always -detached, and versions prior to 0.6.0 detached all databases -at shutdown. - -Bug fixes ---------- - -* Prevent RPC 'move' from deadlocking. This was caused by trying to lock the - database twice. - -* Fix use-after-free problems in initialization and shutdown, the latter of - which caused Bitcoin-Qt to crash on Windows when exiting. - -* Correct library linking so building on Windows natively works. - -* Avoid a race condition and out-of-bounds read in block creation/mining code. - -* Improve platform compatibility quirks, including fix for 100% CPU utilization - on FreeBSD 9. - -* A few minor corrections to error handling, and updated translations. - -* OSX 10.5 supported again - ----------------------------------------------------- -Thanks to everybody who contributed to this release: - -Alex -dansmith -Gavin Andresen -Gregory Maxwell -Jeff Garzik -Luke Dashjr -Philip Kaufmann -Pieter Wuille -Wladimir J. van der Laan -grimd34th diff --git a/doc/release-notes/release-notes-0.8.0.md b/doc/release-notes/release-notes-0.8.0.md deleted file mode 100644 index 728750f5..00000000 --- a/doc/release-notes/release-notes-0.8.0.md +++ /dev/null @@ -1,139 +0,0 @@ -Bitcoin-Qt version 0.8.0 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.0/ - -This is a major release designed to improve performance and handle the -increasing volume of transactions on the network. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -The first time you run after the upgrade a re-indexing process will be -started that will take anywhere from 30 minutes to several hours, -depending on the speed of your machine. - -Incompatible Changes --------------------- - -This release no longer maintains a full index of historical transaction ids -by default, so looking up an arbitrary transaction using the getrawtransaction -RPC call will not work. If you need that functionality, you must run once -with -txindex=1 -reindex=1 to rebuild block-chain indices (see below for more -details). - -Improvements ------------- - -Mac and Windows binaries are signed with certificates owned by the Bitcoin -Foundation, to be compatible with the new security features in OSX 10.8 and -Windows 8. - -LevelDB, a fast, open-source, non-relational database from Google, is -now used to store transaction and block indices. LevelDB works much better -on machines with slow I/O and is faster in general. Berkeley DB is now only -used for the wallet.dat file (public and private wallet keys and transactions -relevant to you). - -Pieter Wuille implemented many optimizations to the way transactions are -verified, so a running, synchronized node uses less working memory and does -much less I/O. He also implemented parallel signature checking, so if you -have a multi-CPU machine all CPUs will be used to verify transactions. - -New Features ------------- - -"Bloom filter" support in the network protocol for sending only relevant transactions to -lightweight clients. - -contrib/verifysfbinaries is a shell-script to verify that the binary downloads -at sourceforge have not been tampered with. If you are able, you can help make -everybody's downloads more secure by running this occasionally to check PGP -signatures against download file checksums. - -contrib/spendfrom is a python-language command-line utility that demonstrates -how to use the "raw transactions" JSON-RPC api to send coins received from particular -addresses (also known as "coin control"). - -New/changed settings (command-line or bitcoin.conf file) --------------------------------------------------------- - -dbcache : controls LevelDB memory usage. - -par : controls how many threads to use to validate transactions. Defaults to the number -of CPUs on your machine, use -par=1 to limit to a single CPU. - -txindex : maintains an extra index of old, spent transaction ids so they will be found -by the getrawtransaction JSON-RPC method. - -reindex : rebuild block and transaction indices from the downloaded block data. - -New JSON-RPC API Features -------------------------- - -lockunspent / listlockunspent allow locking transaction outputs for a period of time so -they will not be spent by other processes that might be accessing the same wallet. - -addnode / getaddednodeinfo methods, to connect to specific peers without restarting. - -importprivkey now takes an optional boolean parameter (default true) to control whether -or not to rescan the blockchain for transactions after importing a new private key. - -Important Bug Fixes -------------------- - -Privacy leak: the position of the "change" output in most transactions was not being -properly randomized, making network analysis of the transaction graph to identify -users' wallets easier. - -Zero-confirmation transaction vulnerability: accepting zero-confirmation transactions -(transactions that have not yet been included in a block) from somebody you do not -trust is still not recommended, because there will always be ways for attackers to -double-spend zero-confirmation transactions. However, this release includes a bug -fix that makes it a little bit more difficult for attackers to double-spend a -certain type ("lockTime in the future") of zero-confirmation transaction. - -Dependency Changes ------------------- - -Qt 4.8.3 (compiling against older versions of Qt 4 should continue to work) - - -Thanks to everybody who contributed to this release: ----------------------------------------------------- - -Alexander Kjeldaas -Andrey Alekseenko -Arnav Singh -Christian von Roques -Eric Lombrozo -Forrest Voight -Gavin Andresen -Gregory Maxwell -Jeff Garzik -Luke Dashjr -Matt Corallo -Mike Cassano -Mike Hearn -Peter Todd -Philip Kaufmann -Pieter Wuille -Richard Schwab -Robert Backhaus -Rune K. Svendsen -Sergio Demian Lerner -Wladimir J. van der Laan -burger2 -default -fanquake -grimd34th -justmoon -redshark1802 -tucenaber -xanatos diff --git a/doc/release-notes/release-notes-0.8.1.md b/doc/release-notes/release-notes-0.8.1.md deleted file mode 100644 index ec07c1ad..00000000 --- a/doc/release-notes/release-notes-0.8.1.md +++ /dev/null @@ -1,22 +0,0 @@ -Bitcoin-Qt/gcoind version 0.8.1 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/ - -This is a maintenance release that adds a new network rule to avoid -a chain-forking incompatibility with versions 0.7.2 and earlier. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you -run 0.8.1 your blockchain files will be re-indexed, which will take -anywhere from 30 minutes to several hours, depending on the speed of -your machine. diff --git a/doc/release-notes/release-notes-0.8.2.md b/doc/release-notes/release-notes-0.8.2.md deleted file mode 100644 index 006aa646..00000000 --- a/doc/release-notes/release-notes-0.8.2.md +++ /dev/null @@ -1,137 +0,0 @@ -Bitcoin-Qt version 0.8.2 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.2/ - -This is a maintenance release that fixes many bugs and includes -a few small new features. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - - -How to Upgrade - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you -run 0.8.2 your blockchain files will be re-indexed, which will take -anywhere from 30 minutes to several hours, depending on the speed of -your machine. - -0.8.2 Release notes - -Fee Policy changes - -The default fee for low-priority transactions is lowered from 0.0005 BTC -(for each 1,000 bytes in the transaction; an average transaction is -about 500 bytes) to 0.0001 BTC. - -Payments (transaction outputs) of 0.543 times the minimum relay fee -(0.00005430 BTC) are now considered 'non-standard', because storing them -costs the network more than they are worth and spending them will usually -cost their owner more in transaction fees than they are worth. - -Non-standard transactions are not relayed across the network, are not included -in blocks by most miners, and will not show up in your wallet until they are -included in a block. - -The default fee policy can be overridden using the -mintxfee and -minrelaytxfee -command-line options, but note that we intend to replace the hard-coded fees -with code that automatically calculates and suggests appropriate fees in the -0.9 release and note that if you set a fee policy significantly different from -the rest of the network your transactions may never confirm. - -Bitcoin-Qt changes - -* New icon and splash screen -* Improve reporting of synchronization process -* Remove hardcoded fee recommendations -* Improve metadata of executable on MacOSX and Windows -* Move export button to individual tabs instead of toolbar -* Add "send coins" command to context menu in address book -* Add "copy txid" command to copy transaction IDs from transaction overview -* Save & restore window size and position when showing & hiding window -* New translations: Arabic (ar), Bosnian (bs), Catalan (ca), Welsh (cy), - Esperanto (eo), Interlingua (la), Latvian (lv) and many improvements - to current translations - -MacOSX: -* OSX support for click-to-pay (bitcoin:) links -* Fix GUI disappearing problem on MacOSX (issue #1522) - -Linux/Unix: -* Copy addresses to middle-mouse-button clipboard - - -Command-line options - -* -walletnotify will call a command on receiving transactions that affect the wallet. -* -alertnotify will call a command on receiving an alert from the network. -* -par now takes a negative number, to leave a certain amount of cores free. - -JSON-RPC API changes - -* fixed a getblocktemplate bug that caused excessive CPU creating blocks. -* listunspent now lists account and address information. -* getinfo now also returns the time adjustment estimated from your peers. -* getpeerinfo now returns bytessent, bytesrecv and syncnode. -* gettxoutsetinfo returns statistics about the unspent transaction output database. -* gettxout returns information about a specific unspent transaction output. - - -Networking changes - -* Significant changes to the networking code, reducing latency and memory consumption. -* Avoid initial block download stalling. -* Remove IRC seeding support. -* Performance tweaks. -* Added testnet DNS seeds. - -Wallet compatibility/rescuing - -* Cases where wallets cannot be opened in another version/installation should be reduced. -* -salvagewallet now works for encrypted wallets. - - -Known Bugs - -* Entering the 'getblocktemplate' or 'getwork' RPC commands into the Bitcoin-Qt debug -console will cause Bitcoin-Qt to crash. Run Bitcoin-Qt with the -server command-line -option to workaround. - -Thanks to everybody who contributed to the 0.8.2 release! - -APerson241 -Andrew Poelstra -Calvin Owens -Chuck LeDuc Díaz -Colin Dean -David Griffith -David Serrano -Eric Lombrozo -Gavin Andresen -Gregory Maxwell -Jeff Garzik -Jonas Schnelli -Larry Gilbert -Luke Dashjr -Matt Corallo -Michael Ford -Mike Hearn -Patrick Brown -Peter Todd -Philip Kaufmann -Pieter Wuille -Richard Schwab -Roman Mindalev -Scott Howard -Tariq Bashir -Warren Togami -Wladimir J. van der Laan -freewil -gladoscc -kjj2 -mb300sd -super3 diff --git a/doc/release-notes/release-notes-0.8.3.md b/doc/release-notes/release-notes-0.8.3.md deleted file mode 100644 index 856c20aa..00000000 --- a/doc/release-notes/release-notes-0.8.3.md +++ /dev/null @@ -1,18 +0,0 @@ -Bitcoin-Qt version 0.8.3 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.3/ - -This is a maintenance release to fix a denial-of-service attack that -can cause nodes to crash. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - -0.8.3 Release notes - -Truncate over-size messages to prevent a memory exhaustion attack. - -Fix a regression that causes excessive re-writing of the 'peers.dat' file. - - -Thanks to Peter Todd for responsibly disclosing the vulnerability -( CVE-2013-4627 ) and creating a fix. diff --git a/doc/release-notes/release-notes-0.8.4.md b/doc/release-notes/release-notes-0.8.4.md deleted file mode 100644 index eb92865b..00000000 --- a/doc/release-notes/release-notes-0.8.4.md +++ /dev/null @@ -1,83 +0,0 @@ -Bitcoin-Qt version 0.8.4 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.4/ - -This is a maintenance release to fix a critical bug and three -security issues; we urge all users to upgrade. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you -run 0.8.4 your blockchain files will be re-indexed, which will take -anywhere from 30 minutes to several hours, depending on the speed of -your machine. - -0.8.4 Release notes -=================== - -Security issues ---------------- - -An attacker could send a series of messages that resulted in -an integer division-by-zero error in the Bloom Filter handling -code, causing the Bitcoin-Qt or gcoind process to crash. -Bloom filters were introduced with version 0.8, so versions 0.8.0 -through 0.8.3 are vulnerable to this critical denial-of-service attack. - -A constant-time algorithm is now used to check RPC password -guess attempts; fixes https://github.com/bitcoin/bitcoin/issues/2838 -(CVE-2013-4165) - -Implement a better fix for the fill-memory-with-orphan-transactions -attack that was fixed in 0.8.3. See -https://bitslog.wordpress.com/2013/07/18/buggy-cve-2013-4627-patch-open-new-vectors-of-attack/ -for a description of the weaknesses of the previous fix. -(CVE-2013-4627) - -Bugs fixed ----------- - -Fix multi-block reorg transaction resurrection. - -Fix non-standard disconnected transactions causing mempool orphans. -This bug could cause nodes running with the -debug flag to crash. - -OSX: use 'FD_FULLSYNC' with LevelDB, which will (hopefully!) -prevent the database corruption issues many people have -experienced on OSX. - -Linux: clicking on bitcoin: links was broken if you were using -a Gnome-based desktop. - -Fix a hang-at-shutdown bug that only affects users that compile -their own version of Bitcoin against Boost versions 1.50-1.52. - -Other changes -------------- - -Checkpoint at block 250,000 to speed up initial block downloads -and make the progress indicator when downloading more accurate. - - -Thanks to everybody who contributed to the 0.8.4 releases! ----------------------------------------------------------- - -Pieter Wuille -Warren Togami -Patrick Strateman -pakt -Gregory Maxwell -Sergio Demian Lerner -grayleonard -Cory Fields -Matt Corallo -Gavin Andresen diff --git a/doc/release-notes/release-notes-0.8.5.md b/doc/release-notes/release-notes-0.8.5.md deleted file mode 100644 index 6d257c1d..00000000 --- a/doc/release-notes/release-notes-0.8.5.md +++ /dev/null @@ -1,44 +0,0 @@ -Bitcoin-Qt version 0.8.5 is now available from: - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.5/ - -This is a maintenance release to fix a critical bug; -we urge all users to upgrade. - -Please report bugs using the issue tracker at github: - https://github.com/bitcoin/bitcoin/issues - - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you -run 0.8.5 your blockchain files will be re-indexed, which will take -anywhere from 30 minutes to several hours, depending on the speed of -your machine. - -0.8.5 Release notes -=================== - -Bugs fixed ----------- - -Transactions with version numbers larger than 0x7fffffff were -incorrectly being relayed and included in blocks. - -Blocks containing transactions with version numbers larger -than 0x7fffffff caused the code that checks for LevelDB database -inconsistencies at startup to erroneously report database -corruption and suggest that you reindex your database. - -This release also contains a non-critical fix to the code that -enforces BIP 34 (block height in the coinbase transaction). - --- - -Thanks to Gregory Maxwell and Pieter Wuille for quickly -identifying and fixing the transaction version number bug. diff --git a/doc/release-notes/release-notes-0.8.6.md b/doc/release-notes/release-notes-0.8.6.md deleted file mode 100644 index 44943356..00000000 --- a/doc/release-notes/release-notes-0.8.6.md +++ /dev/null @@ -1,66 +0,0 @@ -Bitcoin-Qt version 0.8.6 final is now available from: - - http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.6/ - -This is a maintenance release to fix a critical bug; we urge all users to upgrade. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you already downloaded 0.8.6rc1 you do not need to re-download. This release is exactly the same. - -If you are running an older version, shut it down. Wait -until it has completely shut down (which might take a few minutes for older -versions), then run the installer (on Windows) or just copy over -/Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you -run 0.8.6 your blockchain files will be re-indexed, which will take -anywhere from 30 minutes to several hours, depending on the speed of -your machine. - -0.8.6 Release notes -=================== - -- Default block size increase for miners. - (see https://gist.github.com/gavinandresen/7670433#086-accept-into-block) - -- Remove the all-outputs-must-be-greater-than-CENT-to-qualify-as-free rule for relaying - (see https://gist.github.com/gavinandresen/7670433#086-relaying) - -- Lower maximum size for free transaction creation - (see https://gist.github.com/gavinandresen/7670433#086-wallet) - -- OSX block chain database corruption fixes - - Update leveldb to 1.13 - - Use fcntl with `F_FULLSYNC` instead of fsync on OSX - - Use native Darwin memory barriers - - Replace use of mmap in leveldb for improved reliability (only on OSX) - -- Fix nodes forwarding transactions with empty vins and getting banned - -- Network code performance and robustness improvements - -- Additional debug.log logging for diagnosis of network problems, log timestamps by default - -- Fix Bitcoin-Qt startup crash when clicking dock icon on OSX - -- Fix memory leaks in CKey::SetCompactSignature() and Key::SignCompact() - -- Fix rare GUI crash on send - -- Various small GUI, documentation and build fixes - -Warning -------- - -- There have been frequent reports of users running out of virtual memory on 32-bit systems - during the initial sync. - Hence it is recommended to use a 64-bit executable if possible. - A 64-bit executable for Windows is planned for 0.9. - -Note: Gavin Andresen's GPG signing key for SHA256SUMS.asc has been changed from key id 1FC730C1 to sub key 7BF6E212 (see https://github.com/bitcoin/bitcoin.org/pull/279). diff --git a/doc/release-notes/release-notes-0.9.0.md b/doc/release-notes/release-notes-0.9.0.md deleted file mode 100644 index 5bdbf330..00000000 --- a/doc/release-notes/release-notes-0.9.0.md +++ /dev/null @@ -1,411 +0,0 @@ -Bitcoin Core version 0.9.0 is now available from: - - https://bitcoin.org/bin/0.9.0/ - -This is a new major version release, bringing both new features and -bug fixes. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), uninstall all -earlier versions of Bitcoin, then run the installer (on Windows) or just copy -over /Applications/Bitcoin-Qt (on Mac) or gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you run -0.9.0 your blockchain files will be re-indexed, which will take anywhere from -30 minutes to several hours, depending on the speed of your machine. - -On Windows, do not forget to uninstall all earlier versions of the Bitcoin -client first, especially if you are switching to the 64-bit version. - -Windows 64-bit installer -------------------------- - -New in 0.9.0 is the Windows 64-bit version of the client. There have been -frequent reports of users running out of virtual memory on 32-bit systems -during the initial sync. Because of this it is recommended to install the -64-bit version if your system supports it. - -NOTE: Release candidate 2 Windows binaries are not code-signed; use PGP -and the SHA256SUMS.asc file to make sure your binaries are correct. -In the final 0.9.0 release, Windows setup.exe binaries will be code-signed. - -OSX 10.5 / 32-bit no longer supported -------------------------------------- - -0.9.0 drops support for older Macs. The minimum requirements are now: -* A 64-bit-capable CPU (see http://support.apple.com/kb/ht3696); -* Mac OS 10.6 or later (see https://support.apple.com/kb/ht1633). - -Downgrading warnings --------------------- - -The 'chainstate' for this release is not always compatible with previous -releases, so if you run 0.9 and then decide to switch back to a -0.8.x release you might get a blockchain validation error when starting the -old release (due to 'pruned outputs' being omitted from the index of -unspent transaction outputs). - -Running the old release with the -reindex option will rebuild the chainstate -data structures and correct the problem. - -Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan -the blockchain for missing spent coins, which will take a long time (tens -of minutes on a typical machine). - -Rebranding to Bitcoin Core ---------------------------- - -To reduce confusion between Bitcoin-the-network and Bitcoin-the-software we -have renamed the reference client to Bitcoin Core. - - -OP_RETURN and data in the block chain -------------------------------------- -On OP_RETURN: There was been some confusion and misunderstanding in -the community, regarding the OP_RETURN feature in 0.9 and data in the -blockchain. This change is not an endorsement of storing data in the -blockchain. The OP_RETURN change creates a provably-prunable output, -to avoid data storage schemes -- some of which were already deployed -- -that were storing arbitrary data such as images as forever-unspendable -TX outputs, bloating bitcoin's UTXO database. - -Storing arbitrary data in the blockchain is still a bad idea; it is less -costly and far more efficient to store non-currency data elsewhere. - -Autotools build system ------------------------ - -For 0.9.0 we switched to an autotools-based build system instead of individual -(q)makefiles. - -Using the standard "./autogen.sh; ./configure; make" to build Bitcoin-Qt and -gcoind makes it easier for experienced open source developers to contribute -to the project. - -Be sure to check doc/build-*.md for your platform before building from source. - -Bitcoin-cli -------------- - -Another change in the 0.9 release is moving away from the gcoind executable -functioning both as a server and as a RPC client. The RPC client functionality -("tell the running bitcoin daemon to do THIS") was split into a separate -executable, 'gcoin-cli'. The RPC client code will eventually be removed from -gcoind, but will be kept for backwards compatibility for a release or two. - -`walletpassphrase` RPC ------------------------ - -The behavior of the `walletpassphrase` RPC when the wallet is already unlocked -has changed between 0.8 and 0.9. - -The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked: - - > walletpassphrase 1000 - walletunlocktime = now + 1000 - > walletpassphrase 10 - Error: Wallet is already unlocked (old unlock time stays) - -The new behavior of `walletpassphrase` is to set a new unlock time overriding -the old one: - - > walletpassphrase 1000 - walletunlocktime = now + 1000 - > walletpassphrase 10 - walletunlocktime = now + 10 (overriding the old unlock time) - -Transaction malleability-related fixes --------------------------------------- - -This release contains a few fixes for transaction ID (TXID) malleability -issues: - -- -nospendzeroconfchange command-line option, to avoid spending - zero-confirmation change -- IsStandard() transaction rules tightened to prevent relaying and mining of - mutated transactions -- Additional information in listtransactions/gettransaction output to - report wallet transactions that conflict with each other because - they spend the same outputs. -- Bug fixes to the getbalance/listaccounts RPC commands, which would report - incorrect balances for double-spent (or mutated) transactions. -- New option: -zapwallettxes to rebuild the wallet's transaction information - -Transaction Fees ----------------- - -This release drops the default fee required to relay transactions across the -network and for miners to consider the transaction in their blocks to -0.01mBTC per kilobyte. - -Note that getting a transaction relayed across the network does NOT guarantee -that the transaction will be accepted by a miner; by default, miners fill -their blocks with 50 kilobytes of high-priority transactions, and then with -700 kilobytes of the highest-fee-per-kilobyte transactions. - -The minimum relay/mining fee-per-kilobyte may be changed with the -minrelaytxfee option. Note that previous releases incorrectly used -the mintxfee setting to determine which low-priority transactions should -be considered for inclusion in blocks. - -The wallet code still uses a default fee for low-priority transactions of -0.1mBTC per kilobyte. During periods of heavy transaction volume, even this -fee may not be enough to get transactions confirmed quickly; the mintxfee -option may be used to override the default. - -0.9.0 Release notes -======================= - -RPC: - -- New notion of 'conflicted' transactions, reported as confirmations: -1 -- 'listreceivedbyaddress' now provides tx ids -- Add raw transaction hex to 'gettransaction' output -- Updated help and tests for 'getreceivedby(account|address)' -- In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction, - but defaulting to 1 for backward compatibility -- Add 'verifychain', to verify chain database at runtime -- Add 'dumpwallet' and 'importwallet' RPCs -- 'keypoolrefill' gains optional size parameter -- Add 'getbestblockhash', to return tip of best chain -- Add 'chainwork' (the total work done by all blocks since the genesis block) - to 'getblock' output -- Make RPC password resistant to timing attacks -- Clarify help messages and add examples -- Add 'getrawchangeaddress' call for raw transaction change destinations -- Reject insanely high fees by default in 'sendrawtransaction' -- Add RPC call 'decodescript' to decode a hex-encoded transaction script -- Make 'validateaddress' provide redeemScript -- Add 'getnetworkhashps' to get the calculated network hashrate -- New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields - in 'getpeerinfo' output -- Adding new 'addrlocal' field to 'getpeerinfo' output -- Add verbose boolean to 'getrawmempool' -- Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance -- Explicitly ensure that wallet is unlocked in `importprivkey` -- Add check for valid keys in `importprivkey` - -Command-line options: - -- New option: -nospendzeroconfchange to never spend unconfirmed change outputs -- New option: -zapwallettxes to rebuild the wallet's transaction information -- Rename option '-tor' to '-onion' to better reflect what it does -- Add '-disablewallet' mode to let gcoind run entirely without wallet (when - built with wallet) -- Update default '-rpcsslciphers' to include TLSv1.2 -- make '-logtimestamps' default on and rework help-message -- RPC client option: '-rpcwait', to wait for server start -- Remove '-logtodebugger' -- Allow `-noserver` with gcoind - -Block-chain handling and storage: - -- Update leveldb to 1.15 -- Check for correct genesis (prevent cases where a datadir from the wrong - network is accidentally loaded) -- Allow txindex to be removed and add a reindex dialog -- Log aborted block database rebuilds -- Store orphan blocks in serialized form, to save memory -- Limit the number of orphan blocks in memory to 750 -- Fix non-standard disconnected transactions causing mempool orphans -- Add a new checkpoint at block 279,000 - -Wallet: - -- Bug fixes and new regression tests to correctly compute - the balance of wallets containing double-spent (or mutated) transactions -- Store key creation time. Calculate whole-wallet birthday. -- Optimize rescan to skip blocks prior to birthday -- Let user select wallet file with -wallet=foo.dat -- Consider generated coins mature at 101 instead of 120 blocks -- Improve wallet load time -- Don't count txins for priority to encourage sweeping -- Don't create empty transactions when reading a corrupted wallet -- Fix rescan to start from beginning after importprivkey -- Only create signatures with low S values - -Mining: - -- Increase default -blockmaxsize/prioritysize to 750K/50K -- 'getblocktemplate' does not require a key to create a block template -- Mining code fee policy now matches relay fee policy - -Protocol and network: - -- Drop the fee required to relay a transaction to 0.01mBTC per kilobyte -- Send tx relay flag with version -- New 'reject' P2P message (BIP 0061, see - https://gist.github.com/gavinandresen/7079034 for draft) -- Dump addresses every 15 minutes instead of 10 seconds -- Relay OP_RETURN data TxOut as standard transaction type -- Remove CENT-output free transaction rule when relaying -- Lower maximum size for free transaction creation -- Send multiple inv messages if mempool.size > MAX_INV_SZ -- Split MIN_PROTO_VERSION into INIT_PROTO_VERSION and MIN_PEER_PROTO_VERSION -- Do not treat fFromMe transaction differently when broadcasting -- Process received messages one at a time without sleeping between messages -- Improve logging of failed connections -- Bump protocol version to 70002 -- Add some additional logging to give extra network insight -- Added new DNS seed from bitcoinstats.com - -Validation: - -- Log reason for non-standard transaction rejection -- Prune provably-unspendable outputs, and adapt consistency check for it. -- Detect any sufficiently long fork and add a warning -- Call the -alertnotify script when we see a long or invalid fork -- Fix multi-block reorg transaction resurrection -- Reject non-canonically-encoded serialization sizes -- Reject dust amounts during validation -- Accept nLockTime transactions that finalize in the next block - -Build system: - -- Switch to autotools-based build system -- Build without wallet by passing `--disable-wallet` to configure, this - removes the BerkeleyDB dependency -- Upgrade gitian dependencies (libpng, libz, libupnpc, boost, openssl) to more - recent versions -- Windows 64-bit build support -- Solaris compatibility fixes -- Check integrity of gitian input source tarballs -- Enable full GCC Stack-smashing protection for all OSes - -GUI: - -- Switch to Qt 5.2.0 for Windows build -- Add payment request (BIP 0070) support -- Improve options dialog -- Show transaction fee in new send confirmation dialog -- Add total balance in overview page -- Allow user to choose data directory on first start, when data directory is - missing, or when the -choosedatadir option is passed -- Save and restore window positions -- Add vout index to transaction id in transactions details dialog -- Add network traffic graph in debug window -- Add open URI dialog -- Add Coin Control Features -- Improve receive coins workflow: make the 'Receive' tab into a form to request - payments, and move historical address list functionality to File menu. -- Rebrand to `Bitcoin Core` -- Move initialization/shutdown to a thread. This prevents "Not responding" - messages during startup. Also show a window during shutdown. -- Don't regenerate autostart link on every client startup -- Show and store message of normal bitcoin:URI -- Fix richtext detection hang issue on very old Qt versions -- OS X: Make use of the 10.8+ user notification center to display Growl-like - notifications -- OS X: Added NSHighResolutionCapable flag to Info.plist for better font - rendering on Retina displays. -- OS X: Fix bitcoin-qt startup crash when clicking dock icon -- Linux: Fix Gnome bitcoin: URI handler - -Miscellaneous: - -- Add Linux script (contrib/qos/tc.sh) to limit outgoing bandwidth -- Add '-regtest' mode, similar to testnet but private with instant block - generation with 'setgenerate' RPC. -- Add 'linearize.py' script to contrib, for creating bootstrap.dat -- Add separate gcoin-cli client - -Credits --------- - -Thanks to everyone who contributed to this release: - -- Andrey -- Ashley Holman -- b6393ce9-d324-4fe1-996b-acf82dbc3d53 -- bitsofproof -- Brandon Dahler -- Calvin Tam -- Christian Decker -- Christian von Roques -- Christopher Latham -- Chuck -- coblee -- constantined -- Cory Fields -- Cozz Lovan -- daniel -- Daniel Larimer -- David Hill -- Dmitry Smirnov -- Drak -- Eric Lombrozo -- fanquake -- fcicq -- Florin -- frewil -- Gavin Andresen -- Gregory Maxwell -- gubatron -- Guillermo Céspedes Tabárez -- Haakon Nilsen -- HaltingState -- Han Lin Yap -- harry -- Ian Kelling -- Jeff Garzik -- Johnathan Corgan -- Jonas Schnelli -- Josh Lehan -- Josh Triplett -- Julian Langschaedel -- Kangmo -- Lake Denman -- Luke Dashjr -- Mark Friedenbach -- Matt Corallo -- Michael Bauer -- Michael Ford -- Michagogo -- Midnight Magic -- Mike Hearn -- Nils Schneider -- Noel Tiernan -- Olivier Langlois -- patrick s -- Patrick Strateman -- paveljanik -- Peter Todd -- phantomcircuit -- phelixbtc -- Philip Kaufmann -- Pieter Wuille -- Rav3nPL -- R E Broadley -- regergregregerrge -- Robert Backhaus -- Roman Mindalev -- Rune K. Svendsen -- Ryan Niebur -- Scott Ellis -- Scott Willeke -- Sergey Kazenyuk -- Shawn Wilkinson -- Sined -- sje -- Subo1978 -- super3 -- Tamas Blummer -- theuni -- Thomas Holenstein -- Timon Rapp -- Timothy Stranex -- Tom Geller -- Torstein Husebø -- Vaclav Vobornik -- vhf / victor felder -- Vinnie Falco -- Warren Togami -- Wil Bown -- Wladimir J. van der Laan diff --git a/doc/release-notes/release-notes-0.9.1.md b/doc/release-notes/release-notes-0.9.1.md deleted file mode 100644 index ba22682c..00000000 --- a/doc/release-notes/release-notes-0.9.1.md +++ /dev/null @@ -1,53 +0,0 @@ -Bitcoin Core version 0.9.1 is now available from: - - https://bitcoin.org/bin/0.9.1/ - -This is a security update. It is recommended to upgrade to this release -as soon as possible. - -It is especially important to upgrade if you currently have version -0.9.0 installed and are using the graphical interface OR you are using -gcoind from any pre-0.9.1 version, and have enabled SSL for RPC and -have configured allowip to allow rpc connections from potentially -hostile hosts. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you run -0.9.1 your blockchain files will be re-indexed, which will take anywhere from -30 minutes to several hours, depending on the speed of your machine. - -0.9.1 Release notes -======================= - -No code changes were made between 0.9.0 and 0.9.1. Only the dependencies were changed. - -- Upgrade OpenSSL to 1.0.1g. This release fixes the following vulnerabilities which can - affect the Bitcoin Core software: - - - CVE-2014-0160 ("heartbleed") - A missing bounds check in the handling of the TLS heartbeat extension can - be used to reveal up to 64k of memory to a connected client or server. - - - CVE-2014-0076 - The Montgomery ladder implementation in OpenSSL does not ensure that - certain swap operations have a constant-time behavior, which makes it - easier for local users to obtain ECDSA nonces via a FLUSH+RELOAD cache - side-channel attack. - -- Add statically built executables to Linux build - -Credits --------- - -Credits go to the OpenSSL team for fixing the vulnerabilities quickly. diff --git a/doc/release-notes/release-notes-0.9.2.1.md b/doc/release-notes/release-notes-0.9.2.1.md deleted file mode 100644 index 091fd820..00000000 --- a/doc/release-notes/release-notes-0.9.2.1.md +++ /dev/null @@ -1,207 +0,0 @@ -Bitcoin Core version 0.9.2.1 is now available from: - - https://bitcoin.org/bin/0.9.2.1/ - -This is a new minor version release, bringing mostly bug fixes and some minor -improvements. OpenSSL has been updated because of a security issue (CVE-2014-0224). -Upgrading to this release is recommended. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you run -0.9.2.1 your blockchain files will be re-indexed, which will take anywhere from -30 minutes to several hours, depending on the speed of your machine. - -Downgrading warnings --------------------- - -The 'chainstate' for this release is not always compatible with previous -releases, so if you run 0.9.x and then decide to switch back to a -0.8.x release you might get a blockchain validation error when starting the -old release (due to 'pruned outputs' being omitted from the index of -unspent transaction outputs). - -Running the old release with the -reindex option will rebuild the chainstate -data structures and correct the problem. - -Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan -the blockchain for missing spent coins, which will take a long time (tens -of minutes on a typical machine). - -Important changes -================== - -Gitian OSX build ------------------ - -The deterministic build system that was already used for Windows and Linux -builds is now used for OSX as well. Although the resulting executables have -been tested quite a bit, there could be possible regressions. Be sure to report -these on the Github bug tracker mentioned above. - -Compatibility of Linux build ------------------------------ - -For Linux we now build against Qt 4.6, and filter the symbols for libstdc++ and glibc. -This brings back compatibility with - -- Debian 6+ / Tails -- Ubuntu 10.04 -- CentOS 6.5 - -0.9.2 - 0.9.2.1 Release notes -======================= - -The OpenSSL dependency in the gitian builds has been upgraded to 1.0.1h because of CVE-2014-0224. - -RPC: - -- Add `getwalletinfo`, `getblockchaininfo` and `getnetworkinfo` calls (will replace hodge-podge `getinfo` at some point) -- Add a `relayfee` field to `getnetworkinfo` -- Fix RPC related shutdown hangs and leaks -- Always show syncnode in `getpeerinfo` -- `sendrawtransaction`: report the reject code and reason, and make it possible to re-send transactions that are already in the mempool -- `getmininginfo` show right genproclimit - -Command-line options: - -- Fix `-printblocktree` output -- Show error message if ReadConfigFile fails - -Block-chain handling and storage: - -- Fix for GetBlockValue() after block 13,440,000 (BIP42) -- Upgrade leveldb to 1.17 - -Protocol and network code: - -- Per-peer block download tracking and stalled download detection -- Add new DNS seed from bitnodes.io -- Prevent socket leak in ThreadSocketHandler and correct some proxy related socket leaks -- Use pnode->nLastRecv as sync score (was the wrong way around) - -Wallet: - -- Make GetAvailableCredit run GetHash() only once per transaction (performance improvement) -- Lower paytxfee warning threshold from 0.25 BTC to 0.01 BTC -- Fix importwallet nTimeFirstKey (trigger necessary rescans) -- Log BerkeleyDB version at startup -- CWallet init fix - -Build system: - -- Add OSX build descriptors to gitian -- Fix explicit --disable-qt-dbus -- Don't require db_cxx.h when compiling with wallet disabled and GUI enabled -- Improve missing boost error reporting -- Upgrade miniupnpc version to 1.9 -- gitian-linux: --enable-glibc-back-compat for binary compatibility with old distributions -- gitian: don't export any symbols from executable -- gitian: build against Qt 4.6 -- devtools: add script to check symbols from Linux gitian executables -- Remove build-time no-IPv6 setting - -GUI: - -- Fix various coin control visual issues -- Show number of in/out connections in debug console -- Show weeks as well as years behind for long timespans behind -- Enable and disable the Show and Remove buttons for requested payments history based on whether any entry is selected. -- Show also value for options overridden on command line in options dialog -- Fill in label from address book also for URIs -- Fixes feel when resizing the last column on tables (issue #2862) -- Fix ESC in disablewallet mode -- Add expert section to wallet tab in optionsdialog -- Do proper boost::path conversion (fixes unicode in datadir) -- Only override -datadir if different from the default (fixes -datadir in config file) -- Show rescan progress at start-up -- Show importwallet progress -- Get required locks upfront in polling functions (avoids hanging on locks) -- Catch Windows shutdown events while client is running -- Optionally add third party links to transaction context menu -- Check for !pixmap() before trying to export QR code (avoids crashes when no QR code could be generated) -- Fix "Start bitcoin on system login" - -Miscellaneous: - -- Replace non-threadsafe C functions (gmtime, strerror and setlocale) -- Add missing cs_main and wallet locks -- Avoid exception at startup when system locale not recognized -- Changed bitrpc.py's raw_input to getpass for passwords to conceal characters during command line input -- devtools: add a script to fetch and postprocess translations - -Credits --------- - -Thanks to everyone who contributed to this release: - -- Addy Yeow -- Altoidnerd -- Andrea D'Amore -- Andreas Schildbach -- Bardi Harborow -- Brandon Dahler -- Bryan Bishop -- Chris Beams -- Christian von Roques -- Cory Fields -- Cozz Lovan -- daniel -- Daniel Newton -- David A. Harding -- ditto-b -- duanemoody -- Eric S. Bullington -- Fabian Raetz -- Gavin Andresen -- Gregory Maxwell -- gubatron -- Haakon Nilsen -- harry -- Hector Jusforgues -- Isidoro Ghezzi -- Jeff Garzik -- Johnathan Corgan -- jtimon -- Kamil Domanski -- langerhans -- Luke Dashjr -- Manuel Araoz -- Mark Friedenbach -- Matt Corallo -- Matthew Bogosian -- Meeh -- Michael Ford -- Michagogo -- Mikael Wikman -- Mike Hearn -- olalonde -- paveljanik -- peryaudo -- Philip Kaufmann -- philsong -- Pieter Wuille -- R E Broadley -- richierichrawr -- Rune K. Svendsen -- rxl -- shshshsh -- Simon de la Rouviere -- Stuart Cardall -- super3 -- Telepatheic -- Thomas Zander -- Torstein Husebø -- Warren Togami -- Wladimir J. van der Laan -- Yoichi Hirai diff --git a/doc/release-notes/release-notes-0.9.2.md b/doc/release-notes/release-notes-0.9.2.md deleted file mode 100644 index 18669f21..00000000 --- a/doc/release-notes/release-notes-0.9.2.md +++ /dev/null @@ -1,207 +0,0 @@ -Bitcoin Core version 0.9.2 is now available from: - - https://bitcoin.org/bin/0.9.2/ - -This is a new minor version release, bringing mostly bug fixes and some minor -improvements. OpenSSL has been updated because of a security issue (CVE-2014-0224). -Upgrading to this release is recommended. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you run -0.9.2 your blockchain files will be re-indexed, which will take anywhere from -30 minutes to several hours, depending on the speed of your machine. - -Downgrading warnings --------------------- - -The 'chainstate' for this release is not always compatible with previous -releases, so if you run 0.9.x and then decide to switch back to a -0.8.x release you might get a blockchain validation error when starting the -old release (due to 'pruned outputs' being omitted from the index of -unspent transaction outputs). - -Running the old release with the -reindex option will rebuild the chainstate -data structures and correct the problem. - -Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan -the blockchain for missing spent coins, which will take a long time (tens -of minutes on a typical machine). - -Important changes -================== - -Gitian OSX build ------------------ - -The deterministic build system that was already used for Windows and Linux -builds is now used for OSX as well. Although the resulting executables have -been tested quite a bit, there could be possible regressions. Be sure to report -these on the Github bug tracker mentioned above. - -Compatibility of Linux build ------------------------------ - -For Linux we now build against Qt 4.6, and filter the symbols for libstdc++ and glibc. -This brings back compatibility with - -- Debian 6+ / Tails -- Ubuntu 10.04 -- CentOS 6.5 - -0.9.2 Release notes -======================= - -The OpenSSL dependency in the gitian builds has been upgraded to 1.0.1h because of CVE-2014-0224. - -RPC: - -- Add `getwalletinfo`, `getblockchaininfo` and `getnetworkinfo` calls (will replace hodge-podge `getinfo` at some point) -- Add a `relayfee` field to `getnetworkinfo` -- Fix RPC related shutdown hangs and leaks -- Always show syncnode in `getpeerinfo` -- `sendrawtransaction`: report the reject code and reason, and make it possible to re-send transactions that are already in the mempool -- `getmininginfo` show right genproclimit - -Command-line options: - -- Fix `-printblocktree` output -- Show error message if ReadConfigFile fails - -Block-chain handling and storage: - -- Fix for GetBlockValue() after block 13,440,000 (BIP42) -- Upgrade leveldb to 1.17 - -Protocol and network code: - -- Per-peer block download tracking and stalled download detection -- Add new DNS seed from bitnodes.io -- Prevent socket leak in ThreadSocketHandler and correct some proxy related socket leaks -- Use pnode->nLastRecv as sync score (was the wrong way around) - -Wallet: - -- Make GetAvailableCredit run GetHash() only once per transaction (performance improvement) -- Lower paytxfee warning threshold from 0.25 BTC to 0.01 BTC -- Fix importwallet nTimeFirstKey (trigger necessary rescans) -- Log BerkeleyDB version at startup -- CWallet init fix - -Build system: - -- Add OSX build descriptors to gitian -- Fix explicit --disable-qt-dbus -- Don't require db_cxx.h when compiling with wallet disabled and GUI enabled -- Improve missing boost error reporting -- Upgrade miniupnpc version to 1.9 -- gitian-linux: --enable-glibc-back-compat for binary compatibility with old distributions -- gitian: don't export any symbols from executable -- gitian: build against Qt 4.6 -- devtools: add script to check symbols from Linux gitian executables -- Remove build-time no-IPv6 setting - -GUI: - -- Fix various coin control visual issues -- Show number of in/out connections in debug console -- Show weeks as well as years behind for long timespans behind -- Enable and disable the Show and Remove buttons for requested payments history based on whether any entry is selected. -- Show also value for options overridden on command line in options dialog -- Fill in label from address book also for URIs -- Fixes feel when resizing the last column on tables (issue #2862) -- Fix ESC in disablewallet mode -- Add expert section to wallet tab in optionsdialog -- Do proper boost::path conversion (fixes unicode in datadir) -- Only override -datadir if different from the default (fixes -datadir in config file) -- Show rescan progress at start-up -- Show importwallet progress -- Get required locks upfront in polling functions (avoids hanging on locks) -- Catch Windows shutdown events while client is running -- Optionally add third party links to transaction context menu -- Check for !pixmap() before trying to export QR code (avoids crashes when no QR code could be generated) -- Fix "Start bitcoin on system login" - -Miscellaneous: - -- Replace non-threadsafe C functions (gmtime, strerror and setlocale) -- Add missing cs_main and wallet locks -- Avoid exception at startup when system locale not recognized -- Changed bitrpc.py's raw_input to getpass for passwords to conceal characters during command line input -- devtools: add a script to fetch and postprocess translations - -Credits --------- - -Thanks to everyone who contributed to this release: - -- Addy Yeow -- Altoidnerd -- Andrea D'Amore -- Andreas Schildbach -- Bardi Harborow -- Brandon Dahler -- Bryan Bishop -- Chris Beams -- Christian von Roques -- Cory Fields -- Cozz Lovan -- daniel -- Daniel Newton -- David A. Harding -- ditto-b -- duanemoody -- Eric S. Bullington -- Fabian Raetz -- Gavin Andresen -- Gregory Maxwell -- gubatron -- Haakon Nilsen -- harry -- Hector Jusforgues -- Isidoro Ghezzi -- Jeff Garzik -- Johnathan Corgan -- jtimon -- Kamil Domanski -- langerhans -- Luke Dashjr -- Manuel Araoz -- Mark Friedenbach -- Matt Corallo -- Matthew Bogosian -- Meeh -- Michael Ford -- Michagogo -- Mikael Wikman -- Mike Hearn -- olalonde -- paveljanik -- peryaudo -- Philip Kaufmann -- philsong -- Pieter Wuille -- R E Broadley -- richierichrawr -- Rune K. Svendsen -- rxl -- shshshsh -- Simon de la Rouviere -- Stuart Cardall -- super3 -- Telepatheic -- Thomas Zander -- Torstein Husebø -- Warren Togami -- Wladimir J. van der Laan -- Yoichi Hirai diff --git a/doc/release-notes/release-notes-0.9.3.md b/doc/release-notes/release-notes-0.9.3.md deleted file mode 100644 index b5eed7da..00000000 --- a/doc/release-notes/release-notes-0.9.3.md +++ /dev/null @@ -1,101 +0,0 @@ -Bitcoin Core version 0.9.3 is now available from: - - https://bitcoin.org/bin/0.9.3/ - -This is a new minor version release, bringing only bug fixes and updated -translations. Upgrading to this release is recommended. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -Upgrading and downgrading -========================== - -How to Upgrade --------------- - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -If you are upgrading from version 0.7.2 or earlier, the first time you run -0.9.3 your blockchain files will be re-indexed, which will take anywhere from -30 minutes to several hours, depending on the speed of your machine. - -Downgrading warnings --------------------- - -The 'chainstate' for this release is not always compatible with previous -releases, so if you run 0.9.x and then decide to switch back to a -0.8.x release you might get a blockchain validation error when starting the -old release (due to 'pruned outputs' being omitted from the index of -unspent transaction outputs). - -Running the old release with the -reindex option will rebuild the chainstate -data structures and correct the problem. - -Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan -the blockchain for missing spent coins, which will take a long time (tens -of minutes on a typical machine). - -0.9.3 Release notes -======================= - -RPC: -- Avoid a segfault on getblock if it can't read a block from disk -- Add paranoid return value checks in base58 - -Protocol and network code: -- Don't poll showmyip.com, it doesn't exist anymore -- Add a way to limit deserialized string lengths and use it -- Add a new checkpoint at block 295,000 -- Increase IsStandard() scriptSig length -- Avoid querying DNS seeds, if we have open connections -- Remove a useless millisleep in socket handler -- Stricter memory limits on CNode -- Better orphan transaction handling -- Add `-maxorphantx=` and `-maxorphanblocks=` options for control over the maximum orphan transactions and blocks - -Wallet: -- Check redeemScript size does not exceed 520 byte limit -- Ignore (and warn about) too-long redeemScripts while loading wallet - -GUI: -- fix 'opens in testnet mode when presented with a BIP-72 link with no fallback' -- AvailableCoins: acquire cs_main mutex -- Fix unicode character display on MacOSX - -Miscellaneous: -- key.cpp: fail with a friendlier message on missing ssl EC support -- Remove bignum dependency for scripts -- Upgrade OpenSSL to 1.0.1i (see https://www.openssl.org/news/secadv_20140806.txt - just to be sure, no critical issues for Bitcoin Core) -- Upgrade miniupnpc to 1.9.20140701 -- Fix boost detection in build system on some platforms - -Credits --------- - -Thanks to everyone who contributed to this release: - -- Andrew Poelstra -- Cory Fields -- Gavin Andresen -- Jeff Garzik -- Johnathan Corgan -- Julian Haight -- Michael Ford -- Pavel Vasin -- Peter Todd -- phantomcircuit -- Pieter Wuille -- Rose Toomey -- Ruben Dario Ponticelli -- shshshsh -- Trevin Hofmann -- Warren Togami -- Wladimir J. van der Laan -- Zak Wilcox - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). diff --git a/doc/release-notes/release-notes-0.9.4.md b/doc/release-notes/release-notes-0.9.4.md deleted file mode 100644 index b6ed6ae8..00000000 --- a/doc/release-notes/release-notes-0.9.4.md +++ /dev/null @@ -1,95 +0,0 @@ -Bitcoin Core version 0.9.4 is now available from: - - https://bitcoin.org/bin/0.9.4/ - -This is a new minor version release, bringing only bug fixes and updated -translations. Upgrading to this release is recommended. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade -=============== - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -OpenSSL Warning -================ - -OpenSSL 1.0.0p / 1.0.1k was recently released and is being pushed out by -various operating system maintainers. Review by Gregory Maxwell determined that -this update is incompatible with the Bitcoin system and could lead to consensus -forks. - -Bitcoin Core released binaries from https://bitcoin.org are unaffected, -as are any built with the gitian deterministic build system. - -However, if you are running either - -- The Ubuntu PPA from https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin -- A third-party or self-compiled Bitcoin Core - -upgrade to Bitcoin Core 0.9.4, which includes a workaround, **before** updating -OpenSSL. - -The incompatibility is due to the OpenSSL update changing the -behavior of ECDSA validation to reject any signature which is -not encoded in a very rigid manner. This was a result of -OpenSSL's change for CVE-2014-8275 "Certificate fingerprints -can be modified". - -We are specifically aware of potential hard-forks due to signature -encoding handling and had been hoping to close them via BIP62 in 0.10. -BIP62's purpose is to improve transaction malleability handling and -as a side effect rigidly defines the encoding for signatures, but the -overall scope of BIP62 has made it take longer than we'd like to -deploy. - -0.9.4 changelog -================ - -Validation: -- `b8e81b7` consensus: guard against openssl's new strict DER checks -- `60c51f1` fail immediately on an empty signature -- `037bfef` Improve robustness of DER recoding code - -Command-line options: -- `cd5164a` Make -proxy set all network types, avoiding a connect leak. - -P2P: -- `bb424e4` Limit the number of new addressses to accumulate - -RPC: -- `0a94661` Disable SSLv3 (in favor of TLS) for the RPC client and server. - -Build system: -- `f047dfa` gitian: openssl-1.0.1i.tar.gz -> openssl-1.0.1k.tar.gz -- `5b9f78d` build: Fix OSX build when using Homebrew and qt5 -- `ffab1dd` Keep symlinks when copying into .app bundle -- `613247f` osx: fix signing to make Gatekeeper happy (again) - -Miscellaneous: -- `25b49b5` Refactor -alertnotify code -- `2743529` doc: Add instructions for consistent Mac OS X build names - -Credits --------- - -Thanks to who contributed to this release, at least: - -- Cory Fields -- Gavin Andresen -- Gregory Maxwell -- Jeff Garzik -- Luke Dashjr -- Matt Corallo -- Pieter Wuille -- Saivann -- Sergio Demian Lerner -- Wladimir J. van der Laan - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). diff --git a/doc/release-notes/release-notes-0.9.5.md b/doc/release-notes/release-notes-0.9.5.md deleted file mode 100644 index df5f20fb..00000000 --- a/doc/release-notes/release-notes-0.9.5.md +++ /dev/null @@ -1,60 +0,0 @@ -Bitcoin Core version 0.9.5 is now available from: - - https://bitcoin.org/bin/0.9.5/ - -This is a new minor version release, with the goal of backporting BIP66. There -are also a few bug fixes and updated translations. Upgrading to this release is -recommended. - -Please report bugs using the issue tracker at github: - - https://github.com/bitcoin/bitcoin/issues - -How to Upgrade -=============== - -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or -gcoind/bitcoin-qt (on Linux). - -Notable changes -================ - -Mining and relay policy enhancements ------------------------------------- - -Bitcoin Core's block templates are now for version 3 blocks only, and any mining -software relying on its `getblocktemplate` must be updated in parallel to use -libblkmaker either version 0.4.2 or any version from 0.5.1 onward. -If you are solo mining, this will affect you the moment you upgrade Bitcoin -Core, which must be done prior to BIP66 achieving its 951/1001 status. -If you are mining with the stratum mining protocol: this does not affect you. -If you are mining with the getblocktemplate protocol to a pool: this will affect -you at the pool operator's discretion, which must be no later than BIP66 -achieving its 951/1001 status. - -0.9.5 changelog -================ - -- `74f29c2` Check pindexBestForkBase for null -- `9cd1dd9` Fix priority calculation in CreateTransaction -- `6b4163b` Sanitize command strings before logging them. -- `3230b32` Raise version of created blocks, and enforce DERSIG in mempool -- `989d499` Backport of some of BIP66's tests -- `ab03660` Implement BIP 66 validation rules and switchover logic -- `8438074` build: fix dynamic boost check when --with-boost= is used - -Credits --------- - -Thanks to who contributed to this release, at least: - -- 21E14 -- Alex Morcos -- Cory Fields -- Gregory Maxwell -- Pieter Wuille -- Wladimir J. van der Laan - -As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). diff --git a/doc/release-process.md b/doc/release-process.md deleted file mode 100644 index 5ecb9334..00000000 --- a/doc/release-process.md +++ /dev/null @@ -1,172 +0,0 @@ -Release Process -==================== - -* update translations (ping wumpus, Diapolo or tcatm on IRC) -* see https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#syncing-with-transifex - -* * * - -###update (commit) version in sources - - contrib/verifysfbinaries/verify.sh - doc/README* - share/setup.nsi - src/clientversion.h (change CLIENT_VERSION_IS_RELEASE to true) - -###tag version in git - - git tag -s v(new version, e.g. 0.8.0) - -###write release notes. git shortlog helps a lot, for example: - - git shortlog --no-merges v(current version, e.g. 0.7.2)..v(new version, e.g. 0.8.0) - -* * * - -###update gitian - - In order to take advantage of the new caching features in gitian, be sure to update to a recent version (`e9741525c` or later is recommended) - -###perform gitian builds - - From a directory containing the bitcoin source, gitian-builder and gitian.sigs - - export SIGNER=(your gitian key, ie bluematt, sipa, etc) - export VERSION=(new version, e.g. 0.8.0) - pushd ./bitcoin - git checkout v${VERSION} - popd - pushd ./gitian-builder - -###fetch and build inputs: (first time, or when dependency versions change) - - mkdir -p inputs - wget -P inputs https://bitcoincore.org/cfields/osslsigncode-Backports-to-1.7.1.patch - wget -P inputs http://downloads.sourceforge.net/project/osslsigncode/osslsigncode/osslsigncode-1.7.1.tar.gz - - Register and download the Apple SDK: (see OSX Readme for details) - - https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6.1.1/xcode_6.1.1.dmg - - Using a Mac, create a tarball for the 10.9 SDK and copy it to the inputs directory: - - tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.9.sdk.tar.gz MacOSX10.9.sdk - -###Optional: Seed the Gitian sources cache - - By default, gitian will fetch source files as needed. For offline builds, they can be fetched ahead of time: - - make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common - - Only missing files will be fetched, so this is safe to re-run for each build. - -###Build Bitcoin Core for Linux, Windows, and OS X: - - ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml - ./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml - mv build/out/bitcoin-*.tar.gz build/out/src/bitcoin-*.tar.gz ../ - ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-win.yml - ./bin/gsign --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win.yml - mv build/out/bitcoin-*-win-unsigned.tar.gz inputs/bitcoin-win-unsigned.tar.gz - mv build/out/bitcoin-*.zip build/out/bitcoin-*.exe ../ - ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml - ./bin/gsign --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml - mv build/out/bitcoin-*-osx-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz - mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ../ - popd - Build output expected: - - 1. source tarball (bitcoin-${VERSION}.tar.gz) - 2. linux 32-bit and 64-bit dist tarballs (bitcoin-${VERSION}-linux[32|64].tar.gz) - 3. windows 32-bit and 64-bit unsigned installers and dist zips (bitcoin-${VERSION}-win[32|64]-setup-unsigned.exe, bitcoin-${VERSION}-win[32|64].zip) - 4. OSX unsigned installer and dist tarball (bitcoin-${VERSION}-osx-unsigned.dmg, bitcoin-${VERSION}-osx64.tar.gz) - 5. Gitian signatures (in gitian.sigs/${VERSION}-/(your gitian key)/ - -###Next steps: - -Commit your signature to gitian.sigs: - - pushd gitian.sigs - git add ${VERSION}-linux/${SIGNER} - git add ${VERSION}-win-unsigned/${SIGNER} - git add ${VERSION}-osx-unsigned/${SIGNER} - git commit -a - git push # Assuming you can push to the gitian.sigs tree - popd - - Wait for Windows/OSX detached signatures: - Once the Windows/OSX builds each have 3 matching signatures, they will be signed with their respective release keys. - Detached signatures will then be committed to the bitcoin-detached-sigs repository, which can be combined with the unsigned apps to create signed binaries. - - Create the signed OSX binary: - - pushd ./gitian-builder - ./bin/gbuild -i --commit signature=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml - ./bin/gsign --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml - mv build/out/bitcoin-osx-signed.dmg ../bitcoin-${VERSION}-osx.dmg - popd - - Create the signed Windows binaries: - - pushd ./gitian-builder - ./bin/gbuild -i --commit signature=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml - ./bin/gsign --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml - mv build/out/bitcoin-*win64-setup.exe ../bitcoin-${VERSION}-win64-setup.exe - mv build/out/bitcoin-*win32-setup.exe ../bitcoin-${VERSION}-win32-setup.exe - popd - -Commit your signature for the signed OSX/Windows binaries: - - pushd gitian.sigs - git add ${VERSION}-osx-signed/${SIGNER} - git add ${VERSION}-win-signed/${SIGNER} - git commit -a - git push # Assuming you can push to the gitian.sigs tree - popd - -------------------------------------------------------------------------- - -### After 3 or more people have gitian-built and their results match: - -- Create `SHA256SUMS.asc` for the builds, and GPG-sign it: -```bash -sha256sum * > SHA256SUMS -gpg --digest-algo sha256 --clearsign SHA256SUMS # outputs SHA256SUMS.asc -rm SHA256SUMS -``` -(the digest algorithm is forced to sha256 to avoid confusion of the `Hash:` header that GPG adds with the SHA256 used for the files) -Note: check that SHA256SUMS itself doesn't end up in SHA256SUMS, which is a spurious/nonsensical entry. - -- Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the bitcoin.org server - into `/var/www/bin/bitcoin-core-${VERSION}` - -- Update bitcoin.org version - - - First, check to see if the Bitcoin.org maintainers have prepared a - release: https://github.com/bitcoin/bitcoin.org/labels/Releases - - - If they have, it will have previously failed their Travis CI - checks because the final release files weren't uploaded. - Trigger a Travis CI rebuild---if it passes, merge. - - - If they have not prepared a release, follow the Bitcoin.org release - instructions: https://github.com/bitcoin/bitcoin.org#release-notes - - - After the pull request is merged, the website will automatically show the newest version within 15 minutes, as well - as update the OS download links. Ping @saivann/@harding (saivann/harding on Freenode) in case anything goes wrong - -- Announce the release: - - - Release sticky on bitcointalk: https://bitcointalk.org/index.php?board=1.0 - - - Bitcoin-development mailing list - - - Update title of #bitcoin on Freenode IRC - - - Optionally reddit /r/Bitcoin, ... but this will usually sort out itself - -- Notify BlueMatt so that he can start building [https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin](the PPAs) - -- Add release notes for the new version to the directory `doc/release-notes` in git master - -- Celebrate diff --git a/doc/tor.md b/doc/tor.md deleted file mode 100644 index 744c97fa..00000000 --- a/doc/tor.md +++ /dev/null @@ -1,85 +0,0 @@ -TOR SUPPORT IN BITCOIN -====================== - -It is possible to run Bitcoin as a Tor hidden service, and connect to such services. - -The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on a random port. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly -configure Tor. - - -1. Run bitcoin behind a Tor proxy ---------------------------------- - -The first step is running Bitcoin behind a Tor proxy. This will already make all -outgoing connections be anonymized, but more is possible. - - -proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy - server will be used to try to reach .onion addresses as well. - - -onion=ip:port Set the proxy server to use for tor hidden services. You do not - need to set this if it's the same as -proxy. You can use -noonion - to explicitly disable access to hidden service. - - -listen When using -proxy, listening is disabled by default. If you want - to run a hidden service (see next section), you'll need to enable - it explicitly. - - -connect=X When behind a Tor proxy, you can specify .onion addresses instead - -addnode=X of IP addresses or hostnames in these parameters. It requires - -seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with - other P2P nodes. - -In a typical situation, this suffices to run behind a Tor proxy: - - ./bitcoin -proxy=127.0.0.1:9050 - - -2. Run a bitcoin hidden server ------------------------------- - -If you configure your Tor system accordingly, it is possible to make your node also -reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equivalent -config file): - - HiddenServiceDir /var/lib/tor/bitcoin-service/ - HiddenServicePort 8333 127.0.0.1:8333 - HiddenServicePort 18333 127.0.0.1:18333 - -The directory can be different of course, but (both) port numbers should be equal to -your gcoind's P2P listen port (8333 by default). - - -externalip=X You can tell bitcoin about its publicly reachable address using - this option, and this can be a .onion address. Given the above - configuration, you can find your onion address in - /var/lib/tor/bitcoin-service/hostname. Onion addresses are given - preference for your node to advertize itself with, for connections - coming from unroutable addresses (such as 127.0.0.1, where the - Tor proxy typically runs). - - -listen You'll need to enable listening for incoming connections, as this - is off by default behind a proxy. - - -discover When -externalip is specified, no attempt is made to discover local - IPv4 or IPv6 addresses. If you want to run a dual stack, reachable - from both Tor and IPv4 (or IPv6), you'll need to either pass your - other addresses using -externalip, or explicitly enable -discover. - Note that both addresses of a dual-stack system may be easily - linkable using traffic analysis. - -In a typical situation, where you're only reachable via Tor, this should suffice: - - ./gcoind -proxy=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -listen - -(obviously, replace the Onion address with your own). If you don't care too much -about hiding your node, and want to be reachable on IPv4 as well, additionally -specify: - - ./gcoind ... -discover - -and open port 8333 on your firewall (or use -upnp). - -If you only want to use Tor to reach onion addresses, but not use it as a proxy -for normal IPv4/IPv6 communication, use: - - ./bitcoin -onion=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover - diff --git a/doc/translation_process.md b/doc/translation_process.md deleted file mode 100644 index 3653e530..00000000 --- a/doc/translation_process.md +++ /dev/null @@ -1,111 +0,0 @@ -Translations -============ - -The Bitcoin-Core project has been designed to support multiple localisations. This makes adding new phrases, and completely new languages easily achievable. For managing all application translations, Bitcoin-Core makes use of the Transifex online translation management tool. - -### Helping to translate (using Transifex) -Transifex is setup to monitor the Github repo for updates, and when code containing new translations is found, Transifex will process any changes. It may take several hours after a pull-request has been merged, to appear in the Transifex web interface. - -Multiple language support is critical in assisting Bitcoin’s global adoption, and growth. One of Bitcoin’s greatest strengths is cross-boarder money transfers, any help making that easier is greatly appreciated. - -See the [Transifex Bitcoin project](https://www.transifex.com/projects/p/bitcoin/) to assist in translations. You should also join the translation mailing list for announcements - see details below. - -### Writing code with translations -We use automated scripts to help extract translations in both Qt, and non-Qt source files. It is rarely necessary to manually edit the files in `src/qt/locale/`. The translation source files must adhere to the following format: -`bitcoin_xx_YY.ts or bitcoin_xx.ts` - -`src/qt/locale/bitcoin_en.ts` is treated in a special way. It is used as the source for all other translations. Whenever a string in the source code is changed, this file must be updated to reflect those changes. A custom script is used to extract strings from the non-Qt parts. This script makes use of `gettext`, so make sure that utility is installed (ie, `apt-get install gettext` on Ubuntu/Debian). Once this has been updated, `lupdate` (included in the Qt SDK) is used to update `bitcoin_en.ts`. - -To automatically regenerate the `bitcoin_en.ts` file, run the following commands: -```sh -cd src/ -make translate -``` - -`contrib/bitcoin-qt.pro` takes care of generating `.qm` (binary compiled) files from `.ts` (source files) files. It’s mostly automated, and you shouldn’t need to worry about it. - -**Example Qt translation** -```cpp -QToolBar *toolbar = addToolBar(tr("Tabs toolbar")); -``` - -### Creating a pull-request -For general PRs, you shouldn’t include any updates to the translation source files. They will be updated periodically, primarily around pre-releases, allowing time for any new phrases to be translated before public releases. This is also important in avoiding translation related merge conflicts. - -When an updated source file is merged into the Github repo, Transifex will automatically detect it (although it can take several hours). Once processed, the new strings will show up as "Remaining" in the Transifex web interface and are ready for translators. - -To create the pull-request, use the following commands: -``` -git add src/qt/bitcoinstrings.cpp src/qt/locale/bitcoin_en.ts -git commit -``` - -### Creating a Transifex account -Visit the [Transifex Signup](https://www.transifex.com/signup/) page to create an account. Take note of your username and password, as they will be required to configure the command-line tool. - -You can find the Bitcoin translation project at [https://www.transifex.com/projects/p/bitcoin/](https://www.transifex.com/projects/p/bitcoin/). - -### Installing the Transifex client command-line tool -The client it used to fetch updated translations. If you are having problems, or need more details, see [http://docs.transifex.com/developer/client/setup](http://docs.transifex.com/developer/client/setup) - -**For Linux and Mac** - -`pip install transifex-client` - -Setup your transifex client config as follows. Please *ignore the token field*. - -```ini -nano ~/.transifexrc - -[https://www.transifex.com] -hostname = https://www.transifex.com -password = PASSWORD -token = -username = USERNAME -``` - -**For Windows** - -Please see [http://docs.transifex.com/developer/client/setup#windows](http://docs.transifex.com/developer/client/setup#windows) for details on installation. - -The Transifex Bitcoin project config file is included as part of the repo. It can be found at `.tx/config`, however you shouldn’t need change anything. - -### Synchronising translations -To assist in updating translations, we have created a script to help. - -1. `python contrib/devtools/update-translations.py` -2. Update `src/qt/bitcoin.qrc` manually or via - `ls src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/locale\/\1.qm<\/file>/'` -3. Update `src/qt/Makefile.am` manually or via - `ls src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/ locale\/\1.ts \\/'` -4. `git add` new translations from `src/qt/locale/` - -**Do not directly download translations** one by one from the Transifex website, as we do a few post-processing steps before committing the translations. - -### Handling Plurals (in source files) -When new plurals are added to the source file, it's important to do the following steps: - -1. Open `bitcoin_en.ts` in Qt Linguist (included in the Qt SDK) -2. Search for `%n`, which will take you to the parts in the translation that use plurals -3. Look for empty `English Translation (Singular)` and `English Translation (Plural)` fields -4. Add the appropriate strings for the singular and plural form of the base string -5. Mark the item as done (via the green arrow symbol in the toolbar) -6. Repeat from step 2, until all singular and plural forms are in the source file -7. Save the source file - -### Translating a new language -To create a new language template, you will need to edit the languages manifest file `src/qt/bitcoin.qrc` and add a new entry. Below is an example of the english language entry. - -```xml - - locale/bitcoin_en.qm - ... - -``` - -**Note:** that the language translation file **must end in `.qm`** (the compiled extension), and not `.ts`. - -### Questions and general assistance -The Bitcoin-Core translation maintainers include *tcatm, seone, Diapolo, wumpus and luke-jr*.You can find them, and others, in the Freenode IRC chatroom - `irc.freenode.net #bitcoin-dev`. - -If you are a translator, you should also subscribe to the mailing list, https://groups.google.com/forum/#!forum/bitcoin-translators. Announcements will be posted during application pre-releases to notify translators to check for updates. diff --git a/doc/translation_strings_policy.md b/doc/translation_strings_policy.md deleted file mode 100644 index 6824b1d8..00000000 --- a/doc/translation_strings_policy.md +++ /dev/null @@ -1,72 +0,0 @@ -Translation Strings Policy -=========================== - -This document provides guidelines for internationalization of the Bitcoin Core software. - -How to translate? ------------------- - -To mark a message as translatable - -- In GUI source code (under `src/qt`): use `tr("...")` - -- In non-GUI source code (under `src`): use `_("...")` - -No internationalization is used for e.g. developer scripts outside `src`. - -Strings to be translated -------------------------- - -On a high level, these strings are to be translated: - -- GUI strings, anything that appears in a dialog or window - -- Command-line option documentation - -### GUI strings - -Anything that appears to the user in the GUI is to be translated. This includes labels, menu items, button texts, tooltips and window titles. -This includes messages passed to the GUI through the UI interface through `InitMessage`, `ThreadSafeMessageBox` or `ShowProgress`. - -### Command-line options - -Documentation for the command line options in the output of `--help` should be translated as well. - -Make sure that default values do not end up in the string, but use string formatting like `strprintf(_("Threshold for disconnecting misbehaving peers (default: %u)"), 100)`. Putting default values in strings has led to accidental translations in the past, and forces the string to be retranslated every time the value changes. - -Do not translate messages that are only shown to developers, such as those that only appear when `--help-debug` is used. - -General recommendations ------------------------- - -### Avoid unnecessary translation strings - -Try not to burden translators with translating messages that are e.g. slight variations of other messages. -In the GUI, avoid the use of text where an icon or symbol will do. -Make sure that placeholder texts in forms don't end up in the list of strings to be translated (use ``). - -### Make translated strings understandable - -Try to write translation strings in an understandable way, for both the user and the translator. Avoid overly technical or detailed messages - -### Do not translate internal errors - -Do not translate internal errors, or log messages, or messages that appear on the RPC interface. If an error is to be shown to the user, -use a generic message, then log the detailed message to the log. E.g. "Error: A fatal internal error occurred, see debug.log for details". -This helps troubleshooting; if the error is the same for everyone, the likelihood is increased that it can be found using a search engine. - -### Avoid fragments - -Avoid dividing up a message into fragments. Translators see every string separately, so may misunderstand the context if the messages are not self-contained. - -### Avoid HTML in translation strings - -There have been difficulties with use of HTML in translation strings; translators should not be able to accidentally affect the formatting of messages. -This may sometimes be at conflict with the recommendation in the previous section. - -### String freezes - -During a string freeze (often before a major release), no translation strings are to be added, modified or removed. - -This can be checked by executing `make translate` in the `src` directory, then verifying that `bitcoin_en.ts` remains unchanged. - diff --git a/doc/unit-tests.md b/doc/unit-tests.md index 02f5384c..475c7eb4 100644 --- a/doc/unit-tests.md +++ b/doc/unit-tests.md @@ -6,13 +6,8 @@ and tests weren't explicitly disabled. After configuring, they can be run with 'make check'. -To run the gcoind tests manually, launch src/test/test_bitcoin . +To run the gcoind tests manually, launch src/test/test_gcoin . To add more gcoind tests, add `BOOST_AUTO_TEST_CASE` functions to the existing .cpp files in the test/ directory or add new .cpp files that implement new BOOST_AUTO_TEST_SUITE sections. - -To run the bitcoin-qt tests manually, launch src/qt/test/test_bitcoin-qt - -To add more bitcoin-qt tests, add them to the `src/qt/test/` directory and -the `src/qt/test/test_main.cpp` file.