Merge downstream 0.11.1.

This commit is contained in:
vertoe 2015-02-04 15:44:38 +01:00
commit ea48a14424
4 changed files with 330 additions and 18 deletions

View File

@ -1,18 +1,291 @@
0.11.1 Release notes
0.11.0 Release notes
====================
Darkcoin Core 0.11.1 supports a full implementation of InstantX, Darksend improvements
and a new version of enforcement compatible with the newer Bitcoin architechure.
Darkcoin Core 0.11.0 is forked off the Bitcoin Core 0.9.3. The old darkcoin
versions 0.10.x were forked from the Litecoin 0.8 tree. The following changes
are introduced in this major release. This list is compiled from the release
notes of Bitcoin Core 0.9.0, 0.9.1, 0.9.2, 0.9.2.1, 0.9.3 and was completed
with the introduced changes to the Darkcoin Core 0.11.0.
- Fully implemented IX
- Added support for DSTX messages, as a result DS should be much faster
- Clear vValue in SelectCoinsMinConf - should fix an issue with conflicted txes
- "Debug window" -> "Tools window" renaming
- "Last Darksend message" text added in overview page
- Many new languages are supported, such as German, Vietnamese, Spanish
- Fixed required maturity of coins before sending
- New masternode payments enforcement implementation
- Added support to ignore IX confirmations when needed
- Added --instantxdepth, which will show X confirmations when a transaction lock is present
- fix coin control crash https://github.com/bitcoin/bitcoin/pull/5700
- always get only confirmed coins by AvailableCoins for every DS relative action
Darkcoin Core:
- Rebrand to `Darkcoin Core`
- Version bumped to 0.11 to indicate a new major release
- Renamed client to identify with network from `Satoshi` to `Core`
- Bumped protocol version to 70052
- Changed p2sh-address versions to start with `7` (instead of `3`, this affects
public keys only, old scripts remain valid and usable!)
- Changed testnet address versions to start with `x` or `y` (instead of `m` or
`n`, this affects public keys only, old wallets remain valid and usable!)
- Defined BIP32 (HD) address versions to start with `drkp`/`drkv` (`DRKP`/`DRKV`
for testnet)
- Adapted BIP44 coin type `5` for Darkcoin (0x80000005) as defined in SLIP-0044
- Added new units: `duffs` (1 / 100.000.000 DRK)
- Added units for testnet: tDRK, mtDRK, utDRK, tduffs
- Added new DNS seed from masternode.io
- Fixed wallet locking after sending coins
- Add `-regtest` mode, similar to testnet but private with instant block
generation with `setgenerate` RPC.
- Add separate darkcoin-cli client
- Implemented KeyPass integration for CLI, RPC and Qt:
`keepass`, `keepassport`, `keepasskey`, `keepassid`, `keepassname`
Masternodes:
- Improve support for start-many with multi masternode config
- New masternode rpc commands: stop-many, start-alias, stop-alias, list-conf
- Fixed possible masternode payments exploit
- Better support for non-specific masternode payments
- Added masternode support for regtest
- Randomly sort masternodes before picking next winner
- Show number of masternodes in debug window
Darksend:
- Reduced lower darksend limit to 1.5 DRK
- Fixed progress bar calculation for low amounts
- Improved support for adding DRK after anon has completed
- Added denomination information to Overview tab
- Added more detailed Darksend status information to Overview tab
- Added Darksend high precision matching engine
- Added Darksend balance to `getinfo`
- Changed maximum rounds of mixing to 16
RPC:
- Add `getwalletinfo`, `getblockchaininfo` and `getnetworkinfo` calls
(will replace hodge-podge `getinfo` at some point)
- Add a `relayfee` field to `getnetworkinfo`
- 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
- 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`
- Disable SSLv3 (in favor of TLS) for the RPC client and server.
Command-line options:
- Fix `-printblocktree` output
- Show error message if ReadConfigFile fails
- 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 darkcoind 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 darkcoind
- Make -proxy set all network types, avoiding a connect leak.
Block-chain handling and storage:
- Upgrade leveldb to 1.17
- 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
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
- 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=<n>` and `-maxorphanblocks=<n>` options for control over the
maximum orphan transactions and blocks
- Per-peer block download tracking and stalled download detection
- Prevent socket leak in ThreadSocketHandler and correct some proxy related
socket leaks
- Use pnode->nLastRecv as sync score (was the wrong way around)
- Drop the fee required to relay a transaction to 0.01mDRK 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
- Add some additional logging to give extra network insight
- Limit the number of new addressses to accumulate
Wallet:
- Check redeemScript size does not exceed 520 byte limit
- Ignore (and warn about) too-long redeemScripts while loading wallet
- Make GetAvailableCredit run GetHash() only once per transaction (performance
improvement)
- Lower paytxfee warning threshold
- Fix importwallet nTimeFirstKey (trigger necessary rescans)
- Log BerkeleyDB version at startup
- CWallet init fix
- 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
- 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
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
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
- 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
- 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 darkcoin on system login"
- 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
- Improve receive coins workflow: make the 'Receive' tab into a form to request
payments, and move historical address list functionality to File menu.
- 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 darkcoin: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 darkcoin-qt startup crash when clicking dock icon
- Linux: Fix Gnome darkcoin: URI handler
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
- consensus: guard against openssl's new strict DER checks
- fail immediately on an empty signature
- Improve robustness of DER recoding code
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
- 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
- Add statically built executables to Linux build
- 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
- build: Fix OSX build when using Homebrew and qt5
- Keep symlinks when copying into .app bundle
- osx: fix signing to make Gatekeeper happy (again)
Miscellaneous:
- key.cpp: fail with a friendlier message on missing ssl EC support
- Remove bignum dependency for scripts
- Upgrade OpenSSL to 1.0.1i, includes CVE-2014-0224, CVE-2014-0160 and
CVE-2014-0076 (see https://www.openssl.org/news/secadv_20140806.txt)
- Upgrade miniupnpc to 1.9.20140701
- Fix boost detection in build system on some platforms
- 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
- devtools: add a script to fetch and postprocess translations
- Refactor -alertnotify code
- doc: Add instructions for consistent Mac OS X build names

View File

@ -0,0 +1,37 @@
0.11.1 Release notes
====================
Darkcoin Core 0.11.1 supports a full implementation of InstantX, Darksend improvements
and a new version of enforcement compatible with the newer Bitcoin architechure.
- Fully implemented IX
- Added support for DSTX messages, as a result DS should be much faster
- Clear vValue in SelectCoinsMinConf - should fix an issue with conflicted txes
- "Debug window" -> "Tools window" renaming
- "Last Darksend message" text added in overview page
- Many new languages are supported, such as German, Vietnamese, Spanish
- Fixed required maturity of coins before sending
- New masternode payments enforcement implementation
- Added support to ignore IX confirmations when needed
- Added --instantxdepth, which will show X confirmations when a transaction lock is present
- fix coin control crash https://github.com/bitcoin/bitcoin/pull/5700
- always get only confirmed coins by AvailableCoins for every DS relative action
Thanks to who contributed to this release, at least:
- Vertoe
- Udjin
- Holger Schinzel
- Mario Müller
- Crowning
- Alexandre Devilliers
- Stuart Buck
- Tiago Serôdio
- Slawek
- Moli
- Lukas Jackson
- Snogcel
- Jimbit
- Coingun
- Sub-Ether

View File

@ -47,6 +47,7 @@ SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
connect(ui->checkBoxCoinControlChange, SIGNAL(stateChanged(int)), this, SLOT(coinControlChangeChecked(int)));
connect(ui->lineEditCoinControlChange, SIGNAL(textEdited(const QString &)), this, SLOT(coinControlChangeEdited(const QString &)));
connect(ui->checkUseDarksend, SIGNAL(stateChanged ( int )), this, SLOT(updateDisplayUnit()));
connect(ui->checkInstantX, SIGNAL(stateChanged ( int )), this, SLOT(updateDisplayUnit()));
// Coin Control: clipboard actions
QAction *clipboardQuantityAction = new QAction(tr("Copy quantity"), this);

View File

@ -1873,9 +1873,6 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,
dPriority += (double)nCredit * (pcoin.first->GetDepthInMainChain()+1);
}
// IX has a minimum fee of 0.01 DRK
if(useIX && nFeeRet < COIN*0.01 ) nFeeRet = COIN*0.01;
int64_t nChange = nValueIn - nValue - nFeeRet;
// The following if statement should be removed once enough miners
@ -1893,6 +1890,10 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,
if(coin_type == ONLY_DENOMINATED) {
nFeeRet = nChange;
nChange = 0;
} else if(useIX && nFeeRet < COIN*0.01 && nChange > ((COIN*0.01)-nFeeRet)) {
// IX has a minimum fee of 0.01 DRK
nChange -= (COIN*0.01)-nFeeRet;
nFeeRet = COIN*0.01;
}
if (nChange > 0)