From e5ce9d041dce0393bee704192dfe4d54dceaaa5a Mon Sep 17 00:00:00 2001 From: Ross Nicoll Date: Thu, 28 Aug 2014 20:22:39 +0100 Subject: [PATCH 1/8] Correct example for IP mask passed to rpcallowip. --- RELEASE_NOTES_1_8.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES_1_8.md b/RELEASE_NOTES_1_8.md index a54efd0cd..c816ffec2 100644 --- a/RELEASE_NOTES_1_8.md +++ b/RELEASE_NOTES_1_8.md @@ -78,7 +78,7 @@ As of 1.8 all transactions have fees applied by defaults, with no exemptions mad ## RPC Allow IP The format of IP masks supplied to the "rpcallowip" command line option has changed. -It no longer accepts subnets like '192.168.*.*', and the format '192.168/16" should +It no longer accepts subnets like '192.168.*.*', and the format '192.168.0.0/16" should be used instead. ## Other Changes From 876f23f5f182a202fc6ad641eaae3316895f0c84 Mon Sep 17 00:00:00 2001 From: Daniel Kraft Date: Tue, 11 Nov 2014 14:10:40 +0100 Subject: [PATCH 2/8] Remove unreachable code. The removed case (pcHead == script.end()) can never be reached, since we explicitly error out above if that is the case. It is legacy from Namecoin's merge-mining, which does not forbid this case earlier. --- src/auxpow.cpp | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/auxpow.cpp b/src/auxpow.cpp index daebfa7f0..8e0497040 100644 --- a/src/auxpow.cpp +++ b/src/auxpow.cpp @@ -54,24 +54,12 @@ bool CAuxPow::Check(uint256 hashAuxBlock, int nChainID) if (pc == script.end()) return error("Aux POW missing chain merkle root in parent coinbase"); - if (pcHead != script.end()) - { - // Enforce only one chain merkle root by checking that a single instance of the merged - // mining header exists just before. - if (script.end() != std::search(pcHead + 1, script.end(), UBEGIN(pchMergedMiningHeader), UEND(pchMergedMiningHeader))) - return error("Multiple merged mining headers in coinbase"); - if (pcHead + sizeof(pchMergedMiningHeader) != pc) - return error("Merged mining header is not just before chain merkle root"); - } - else - { - // For backward compatibility. - // Enforce only one chain merkle root by checking that it starts early in the coinbase. - // 8-12 bytes are enough to encode extraNonce and nBits. - if (pc - script.begin() > 20) - return error("Aux POW chain merkle root must start in the first 20 bytes of the parent coinbase"); - } - + // Enforce only one chain merkle root by checking that a single instance of the merged + // mining header exists just before. + if (script.end() != std::search(pcHead + 1, script.end(), UBEGIN(pchMergedMiningHeader), UEND(pchMergedMiningHeader))) + return error("Multiple merged mining headers in coinbase"); + if (pcHead + sizeof(pchMergedMiningHeader) != pc) + return error("Merged mining header is not just before chain merkle root"); // Ensure we are at a deterministic point in the merkle leaves by hashing // a nonce and our chain ID and comparing to the index. From e993b12278f0a0b64b03b55898cc263ae7e139d3 Mon Sep 17 00:00:00 2001 From: langerhans Date: Sat, 20 Dec 2014 17:21:29 +0100 Subject: [PATCH 3/8] Add %i to -blocknotify and replace it by the height of the block that the notification is about --- src/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 40aacc8d4..ed237a73c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,6 +28,7 @@ #include #include #include +#include using namespace std; using namespace boost; @@ -2318,6 +2319,7 @@ bool ActivateBestChain(CValidationState &state) { if (!IsInitialBlockDownload() && !strCmd.empty()) { boost::replace_all(strCmd, "%s", chainActive.Tip()->GetBlockHash().GetHex()); + boost::replace_all(strCmd, "%i", boost::lexical_cast(chainActive.Height())); boost::thread t(runCommand, strCmd); // thread runs free } } From 93d0ddad73e05c318a980284bf601158a3ef0d02 Mon Sep 17 00:00:00 2001 From: langerhans Date: Sat, 20 Dec 2014 18:05:06 +0100 Subject: [PATCH 4/8] Introduce -maxoutconnections= to set the maximum number of outbound connections --- src/init.cpp | 3 +++ src/net.cpp | 9 ++++----- src/net.h | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 8223e3282..1737bb069 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -230,6 +230,7 @@ std::string HelpMessage(HelpMessageMode hmm) strUsage += " -externalip= " + _("Specify your own public address") + "\n"; strUsage += " -listen " + _("Accept connections from outside (default: 1 if no -proxy or -connect)") + "\n"; strUsage += " -maxconnections= " + _("Maintain at most connections to peers (default: 125)") + "\n"; + strUsage += " -maxoutconnections= " + _("Maintain at most outbound connections to peers (default: 8)") + "\n"; strUsage += " -maxreceivebuffer= " + _("Maximum per-connection receive buffer, *1000 bytes (default: 5000)") + "\n"; strUsage += " -maxsendbuffer= " + _("Maximum per-connection send buffer, *1000 bytes (default: 1000)") + "\n"; strUsage += " -onion= " + _("Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: -proxy)") + "\n"; @@ -535,6 +536,8 @@ bool AppInit2(boost::thread_group& threadGroup) if (nFD - MIN_CORE_FILEDESCRIPTORS < nMaxConnections) nMaxConnections = nFD - MIN_CORE_FILEDESCRIPTORS; + nMaxOutboundConnections = GetArg("-maxoutconnections", 8); + nMaxOutboundConnections = std::min(std::max(nMaxOutboundConnections, 2), nMaxConnections); // ********************************************************* Step 3: parameter-to-internal-flags fDebug = !mapMultiArgs["-debug"].empty(); diff --git a/src/net.cpp b/src/net.cpp index 425989b3b..f337447ff 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -39,8 +39,6 @@ using namespace std; using namespace boost; -static const int MAX_OUTBOUND_CONNECTIONS = 8; - bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOutbound = NULL, const char *strDest = NULL, bool fOneShot = false); @@ -59,6 +57,7 @@ uint64_t nLocalHostNonce = 0; static std::vector vhListenSocket; CAddrMan addrman; int nMaxConnections = 125; +int nMaxOutboundConnections = 8; vector vNodes; CCriticalSection cs_vNodes; @@ -916,7 +915,7 @@ void ThreadSocketHandler() if (nErr != WSAEWOULDBLOCK) LogPrintf("socket error accept failed: %s\n", NetworkErrorString(nErr)); } - else if (nInbound >= nMaxConnections - MAX_OUTBOUND_CONNECTIONS) + else if (nInbound >= nMaxConnections - nMaxOutboundConnections) { closesocket(hSocket); } @@ -1709,7 +1708,7 @@ void StartNode(boost::thread_group& threadGroup) { if (semOutbound == NULL) { // initialize semaphore - int nMaxOutbound = min(MAX_OUTBOUND_CONNECTIONS, nMaxConnections); + int nMaxOutbound = min(nMaxOutboundConnections, nMaxConnections); semOutbound = new CSemaphore(nMaxOutbound); } @@ -1753,7 +1752,7 @@ bool StopNode() LogPrintf("StopNode()\n"); MapPort(false); if (semOutbound) - for (int i=0; ipost(); MilliSleep(50); DumpAddresses(); diff --git a/src/net.h b/src/net.h index cb07156bd..5862129fa 100644 --- a/src/net.h +++ b/src/net.h @@ -104,6 +104,7 @@ extern uint64_t nLocalServices; extern uint64_t nLocalHostNonce; extern CAddrMan addrman; extern int nMaxConnections; +extern int nMaxOutboundConnections; extern std::vector vNodes; extern CCriticalSection cs_vNodes; From f01c4426f328cb310f678d3bfb7c931832a7864c Mon Sep 17 00:00:00 2001 From: Ross Nicoll Date: Sat, 20 Dec 2014 17:45:33 +0000 Subject: [PATCH 5/8] Updated Dogecoin Core 1.8.1 release notes. --- RELEASE_NOTES_1_8.1.md | 55 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES_1_8.1.md b/RELEASE_NOTES_1_8.1.md index d2d08d9c2..42f7eed64 100644 --- a/RELEASE_NOTES_1_8.1.md +++ b/RELEASE_NOTES_1_8.1.md @@ -1,9 +1,9 @@ # Dogecoin Core 1.8.1 -===================== Dogecoin Core 1.8.1 is primarily a bugfix release, bringing Dogecoin Core in line with Bitcoin 0.9.3. Dogecoin Core 1.8.1 also adds in support for printing -paper wallets, and disables connections to pre-1.8 clients. +paper wallets, and disables connections to pre-1.8 clients. This is a RECOMMENDED +upgrade due to the large number of bug fixes, but is not a required one. Paper wallet support has been developed by AndyMeows (IRC username), and can be accessed via the "File" menu. It's intended for two purposes; to generate @@ -14,3 +14,54 @@ IMPORTANT: If you are producing offline paper wallets, you should do so on a computer that's disconnected from the Internet. While the wallet generator does not save the keys it generates, this ensures there is no risk of a virus or similar capturing the key from memory or interfering with its generation. + +## Dogecoin Core Release Notes + +* Translation improvements and corrections +* Disable Transifex based translation process (not used by Dogecoin Core) +* Add checkpoints around AuxPoW switchover block (371,337) +* Disable connections from pre-1.8 Dogecoin Core clients +* Use HTTPS with dogechain.info +* Remove unreachable code introduced with AuxPoW support +* "blocknotify" option now supports %i as a format parameter, which is replaced by block height + +## Bitcoin Core Release Notes + +Full release notes for Bitcoin Core 0.9.3 are available from +https://bitcoin.org/en/release/v0.9.3 , but highlights are included +below: + + +* Better orphan transaction handling +* Add -maxorphantx= and -maxorphanblocks= options for control over the maximum orphan transactions and blocks +* key.cpp: fail with a friendlier message on missing ssl EC support +* 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) + +## Known Issues + +There is a known issue with quantities in JSON used by the RPC interface (https://github.com/dogecoin/dogecoin/issues/134). +This stems from the use of a floating point precision number to hold fixed precision data. +Currently looking at solutions, which primarily either involve JSON which is not compliant +to the specification, or making the RPC layer slightly incompatible with the conventional +Bitcoin API. + +This only affects values significantly below 1 Doge, however merchants may wish to round to +the nearest Doge on all transactions for now. + +## Credits + +Listed in strictly alphabetical order, using name listed in Github. This +includes those whose contributions to Bitcoin Core have been merged +into Dogecoin Core: + +* Abderraouf Adjal +* Andymeows +* Daniel Kraft +* Gavin Andresen +* langerhans +* michilumin +* nameEO +* Patrick Lodder +* Ross Nicoll +* Wladimir J. van der Laan +* Whit J From 556d5343b3b217378bfbdf12b07571b80351c283 Mon Sep 17 00:00:00 2001 From: langerhans Date: Sat, 20 Dec 2014 19:09:18 +0100 Subject: [PATCH 6/8] edit release notes for late changes --- RELEASE_NOTES_1_8.1.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES_1_8.1.md b/RELEASE_NOTES_1_8.1.md index 42f7eed64..9bc0a50b9 100644 --- a/RELEASE_NOTES_1_8.1.md +++ b/RELEASE_NOTES_1_8.1.md @@ -24,6 +24,7 @@ or similar capturing the key from memory or interfering with its generation. * Use HTTPS with dogechain.info * Remove unreachable code introduced with AuxPoW support * "blocknotify" option now supports %i as a format parameter, which is replaced by block height +* New option "maxoutconnections" to set the maximum number of outbound peer connections. Defaults to 8, minimum is 2, maximum is whatever "maxconnections" is set to (default 125). ## Bitcoin Core Release Notes From 432ce93412c66b75c1a6344e34bb6acea83af5bc Mon Sep 17 00:00:00 2001 From: langerhans Date: Sat, 20 Dec 2014 20:21:50 +0100 Subject: [PATCH 7/8] Bump to release version --- configure.ac | 2 +- src/clientversion.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 237281ee6..7c7220049 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MINOR, 8) define(_CLIENT_VERSION_REVISION, 1) define(_CLIENT_VERSION_BUILD, 0) -define(_CLIENT_VERSION_IS_RELEASE, false) +define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2014) AC_INIT([Dogecoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@dogecoin.com],[dogecoin]) AC_CONFIG_AUX_DIR([src/build-aux]) diff --git a/src/clientversion.h b/src/clientversion.h index 4f3446af5..bb8651aef 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -11,11 +11,11 @@ // These need to be macros, as version.cpp's and dogecoin-qt.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 1 #define CLIENT_VERSION_MINOR 8 -#define CLIENT_VERSION_REVISION 0 +#define CLIENT_VERSION_REVISION 1 #define CLIENT_VERSION_BUILD 0 // Set to true for release, false for prerelease or test build -#define CLIENT_VERSION_IS_RELEASE false +#define CLIENT_VERSION_IS_RELEASE true // Copyright year (2009-this) // Todo: update this when changing our copyright comments in the source From e5f85a3b99f2c94d4fb4d11dabf23b8724d52e67 Mon Sep 17 00:00:00 2001 From: langerhans Date: Wed, 24 Dec 2014 23:11:46 +0100 Subject: [PATCH 8/8] Adjust version for 1.8.2 --- configure.ac | 4 ++-- src/clientversion.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 7c7220049..a60160b86 100644 --- a/configure.ac +++ b/configure.ac @@ -2,9 +2,9 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MINOR, 8) -define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_REVISION, 2) define(_CLIENT_VERSION_BUILD, 0) -define(_CLIENT_VERSION_IS_RELEASE, true) +define(_CLIENT_VERSION_IS_RELEASE, false) define(_COPYRIGHT_YEAR, 2014) AC_INIT([Dogecoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@dogecoin.com],[dogecoin]) AC_CONFIG_AUX_DIR([src/build-aux]) diff --git a/src/clientversion.h b/src/clientversion.h index bb8651aef..082ae81ee 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -11,11 +11,11 @@ // These need to be macros, as version.cpp's and dogecoin-qt.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 1 #define CLIENT_VERSION_MINOR 8 -#define CLIENT_VERSION_REVISION 1 +#define CLIENT_VERSION_REVISION 2 #define CLIENT_VERSION_BUILD 0 // Set to true for release, false for prerelease or test build -#define CLIENT_VERSION_IS_RELEASE true +#define CLIENT_VERSION_IS_RELEASE false // Copyright year (2009-this) // Todo: update this when changing our copyright comments in the source