Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e982520
Bump to 0.12.3.3
UdjinM6 Sep 18, 2018
d3b30e9
Fix crash bug with duplicate inputs within a transaction
sdaftuar Sep 17, 2018
f9e49c0
Remove redundant parameter fCheckDuplicateInputs from CheckTransaction
UdjinM6 Sep 18, 2018
c600487
Release notes 0.12.3.3
UdjinM6 Sep 18, 2018
0a93b0d
Merge pull request #2303 from UdjinM6/bp14247m
UdjinM6 Sep 19, 2018
1707f03
Bump nPowKGWHeight for testnet and cause a fork at height 4001
codablock Dec 13, 2018
cb8ab03
Change CSV, DIP0001 and BIP147 deployments to start today
codablock Dec 13, 2018
9eeea33
Update nMinimumChainWork and defaultAssumeValid for block 4000
codablock Dec 13, 2018
b5c71d9
Remove checkpoints above block 4000
codablock Dec 13, 2018
ddd0068
Bump to 0.12.3.4
codablock Dec 13, 2018
0dc849d
Update release-notes.md and copy 0.12.3.3 release-notes
codablock Dec 13, 2018
db4f43f
Don't check for nSuperblockStartHash on testnet
codablock Dec 13, 2018
0fca0e6
Remove temporary fork handling for emergency difficulty reduction on …
codablock Dec 13, 2018
f5b4026
Merge pull request #2555 from codablock/pr_testnetreset_v12
codablock Dec 14, 2018
a3b01df
Gracefully shutdown on evodb inconsistency instead of crashing (#2611…
codablock Jan 11, 2019
18e1eda
Backport 2618 to v0.13.0.x (#2619)
UdjinM6 Jan 11, 2019
10b3736
[0.13.0.x] Translations201901 (#2592)
UdjinM6 Jan 11, 2019
a22f1bf
Remove support for "0" as an alternative to "" when the default is re…
codablock Jan 14, 2019
a05eeb2
Update immer to c89819df92191d6969a6a22c88c72943b8e25016 (#2626)
UdjinM6 Jan 14, 2019
b5670c4
Set CLIENT_VERSION_IS_RELEASE to true (#2591)
codablock Jan 14, 2019
e24c0e8
Update 0.13.0.0 release notes (#2621)
UdjinM6 Jan 14, 2019
a68d1e3
[0.13.0.x] Add notes about changes in mining (#2628)
UdjinM6 Jan 14, 2019
811b87e
Merge branch 'master' into v0.13.0.x
UdjinM6 Jan 14, 2019
942838e
Merge pull request #2629 from UdjinM6/v0.13.0.x
UdjinM6 Jan 14, 2019
2c88ba7
Merge branch 'master' into `develop`
UdjinM6 Jan 14, 2019
fff50af
Revert "Set CLIENT_VERSION_IS_RELEASE to true (#2591)"
UdjinM6 Jan 14, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 32 additions & 5 deletions doc/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,22 +110,41 @@ update a masternode list with additional proof data.

Read more: https://github.com/dashpay/dips/blob/master/dip-0004.md

Mining
------
Please note that masternode payments in `getblocktemplate` rpc are now returned as an array and not as
a single object anymore. Make sure to apply corresponding changes to your pool software.

Also, deterministic masternodes can now set their payout address to a P2SH address. The most common use
case for P2SH is multisig but script can be pretty much anything. If your pool software doesn't recognize
P2SH addresses, the simplest way to fix it is to use `script` field which shows scriptPubKey for each
entry of masternode payments array in `getblocktemplate`.

And finally, after DIP0003 activation your pool software must be able to produce Coinbase Special
Transaction https://github.com/dashpay/dips/blob/master/dip-0004.md#coinbase-special-transaction.
Use `coinbase_payload` from `getblocktemplate` to get extra payload needed to construct this transaction.

PrivateSend
-----------
With further refactoring of PrivateSend code it became possible to implement mixing in few parallel
mixing sessions at once from one single wallet. You can set number of mixing sessions via
`privatesendsessions` cmd-line option or dash.conf. You can pick any number of sessions between 1 and 10,
default is 4 which should be good enough for most users. For this feature to work you should also make
sure that `privatesendmultisession` is set to `1` via cmd-line or `Enable PrivateSend multi-session` is enabled
in GUI.
sure that `privatesendmultisession` is set to `1` via cmd-line or `Enable PrivateSend multi-session` is
enabled in GUI.

Introducing parallel mixing sessions should speed mixing up which makes it's reasonable to add a new
Introducing parallel mixing sessions should speed mixing up which makes it reasonable to add a new
mixing denom (0.00100001 DASH) now while keeping all the old ones too. It also makes sense to allow more
mixing rounds now, so the new default number of rounds is 4 and the maximum number of rounds is 16 now.

You can also adjust rounds and amount via `setprivatesendrounds` and `setprivatesendamount` RPC commands
which override corresponding cmd-line params (`privatesendrounds` and `privatesendamount` respectively).

NOTE: Introducing the new denom and a couple of other changes made it incompatible with mixing on
masternodes running on pre-0.13 software. Please keep using 0.12.3 local wallet to mix your coins until
there is some significant number of masternodes running on version 0.13 to make sure you have enough
masternodes to choose from when the wallet picks one to mix funds on.

InstantSend
-----------
With further improvements of networking code it's now possible to handle more load, so we are changing
Expand Down Expand Up @@ -189,10 +208,11 @@ detailed list of fixes.
RPC changes
-----------
There are a few changes in existing RPC interfaces in this release:
- `gobject prepare` accepts an UTXO reference to spend;
- `masternode status` has DIP0003 related info now;
- `gobject prepare` allows to send proposal transaction as an InstantSend one and also accepts an UTXO reference to spend;
- `masternode status` and `masternode list` show some DIP0003 related info now;
- `previousbits` and `coinbase_payload` fields were added in `getblocktemplate`;
- `getblocktemplate` now returns an array for masternode payments instead of a single object (miners and mining pools have to upgrade their software to support multiple masternode payees);
- masternode and superblock payments in `getblocktemplate` show payee scriptPubKey in `script` field in addition to payee address in `payee`;
- `getblockchaininfo` shows BIP9 deployment progress;
- `help command subCommand` should give detailed help for subcommands e.g. `help protx list`;
- `compressed` option in `masternode genkey`;
Expand Down Expand Up @@ -278,6 +298,8 @@ See detailed [set of changes](https://github.com/dashpay/dash/compare/v0.12.3.4.
- [`0a086898f`](https://github.com/dashpay/dash/commit/0a086898f) Implement and enforce CbTx with correct block height and deprecate BIP34

### RPC
- [`a22f1bffe`](https://github.com/dashpay/dash/commit/a22f1bffe) Remove support for "0" as an alternative to "" when the default is requested (#2622) (#2624)
- [`18e1edabf`](https://github.com/dashpay/dash/commit/18e1edabf) Backport 2618 to v0.13.0.x (#2619)
- [`0dce846d5`](https://github.com/dashpay/dash/commit/0dce846d5) Add an option to use specific address as a source of funds in protx rpc commands (otherwise use payoutAddress/operatorPayoutAddress) (#2581)
- [`e71ea29e6`](https://github.com/dashpay/dash/commit/e71ea29e6) Add ownerAddr and votingAddr to CDeterministicMNState::ToJson (#2571)
- [`999a51907`](https://github.com/dashpay/dash/commit/999a51907) Fix optional revocation reason parameter for "protx revoke" and a few help strings (#2568)
Expand Down Expand Up @@ -332,6 +354,7 @@ See detailed [set of changes](https://github.com/dashpay/dash/compare/v0.12.3.4.
- [`ac30196bc`](https://github.com/dashpay/dash/commit/ac30196bc) Show some info about the wallet dumped via dumpwallet (#2191)

### LLMQ and Deterministic Masternodes
- [`a3b01dfbe`](https://github.com/dashpay/dash/commit/a3b01dfbe) Gracefully shutdown on evodb inconsistency instead of crashing (#2611) (#2620)
- [`3861c6a82`](https://github.com/dashpay/dash/commit/3861c6a82) Add BIP9 deployment for DIP3 on mainnet (#2585)
- [`587911b36`](https://github.com/dashpay/dash/commit/587911b36) Fix IsBlockPayeeValid (#2577)
- [`3c30a6aff`](https://github.com/dashpay/dash/commit/3c30a6aff) Add missing masternodeblsprivkey help text (#2569)
Expand Down Expand Up @@ -517,6 +540,10 @@ See detailed [set of changes](https://github.com/dashpay/dash/compare/v0.12.3.4.
- [`d7e210341`](https://github.com/dashpay/dash/commit/d7e210341) Fixes inaccurate round count in CoinControlDialog (#2137)

### Cleanups/Tests/Docs/Other
- [`b5670c475`](https://github.com/dashpay/dash/commit/b5670c475) Set CLIENT_VERSION_IS_RELEASE to true (#2591)
- [`a05eeb21e`](https://github.com/dashpay/dash/commit/a05eeb21e) Update immer to c89819df92191d6969a6a22c88c72943b8e25016 (#2626)
- [`10b3736bd`](https://github.com/dashpay/dash/commit/10b3736bd) [0.13.0.x] Translations201901 (#2592)
- [`34d2a6038`](https://github.com/dashpay/dash/commit/34d2a6038) Release notes 0.13.0.0 draft (#2583)
- [`c950a8f51`](https://github.com/dashpay/dash/commit/c950a8f51) Merge v0.12.3.4 commits into develop (#2582)
- [`6dfceaba5`](https://github.com/dashpay/dash/commit/6dfceaba5) Force FlushStateToDisk on ConnectTip/DisconnectTip while not in IBD (#2560)
- [`552d9089e`](https://github.com/dashpay/dash/commit/552d9089e) Update testnet seeds to point to MNs that are on the new chain (#2558)
Expand Down
2 changes: 1 addition & 1 deletion src/immer/array.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ class array
array take_move(std::false_type, size_type elems)
{ return impl_.take(elems); }

impl_t impl_ = impl_t::empty;
impl_t impl_ = impl_t::empty();
};

} /* namespace immer */
17 changes: 9 additions & 8 deletions src/immer/detail/arrays/no_capacity.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@ struct no_capacity
node_t* ptr;
size_t size;

static const no_capacity empty;
static const no_capacity& empty()
{
static const no_capacity empty_ {
node_t::make_n(0),
0,
};
return empty_;
}

no_capacity(node_t* p, size_t s)
: ptr{p}, size{s}
Expand All @@ -37,7 +44,7 @@ struct no_capacity
}

no_capacity(no_capacity&& other)
: no_capacity{empty}
: no_capacity{empty()}
{
swap(*this, other);
}
Expand Down Expand Up @@ -181,12 +188,6 @@ struct no_capacity
}
};

template <typename T, typename MP>
const no_capacity<T, MP> no_capacity<T, MP>::empty = {
node_t::make_n(0),
0,
};

} // namespace arrays
} // namespace detail
} // namespace immer
19 changes: 10 additions & 9 deletions src/immer/detail/arrays/with_capacity.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,15 @@ struct with_capacity
size_t size;
size_t capacity;

static const with_capacity empty;
static const with_capacity& empty()
{
static const with_capacity empty_ {
node_t::make_n(1),
0,
1
};
return empty_;
}

with_capacity(node_t* p, size_t s, size_t c)
: ptr{p}, size{s}, capacity{c}
Expand All @@ -46,7 +54,7 @@ struct with_capacity
}

with_capacity(with_capacity&& other)
: with_capacity{empty}
: with_capacity{empty()}
{
swap(*this, other);
}
Expand Down Expand Up @@ -285,13 +293,6 @@ struct with_capacity
}
};

template <typename T, typename MP>
const with_capacity<T, MP> with_capacity<T, MP>::empty = {
node_t::make_n(1),
0,
1,
};

} // namespace arrays
} // namespace detail
} // namespace immer
19 changes: 10 additions & 9 deletions src/immer/detail/hamts/champ.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,14 @@ struct champ
node_t* root;
size_t size;

static const champ empty;
static const champ& empty()
{
static const champ empty_ {
node_t::make_inner_n(0),
0,
};
return empty_;
}

champ(node_t* r, size_t sz)
: root{r}, size{sz}
Expand All @@ -47,7 +54,7 @@ struct champ
}

champ(champ&& other)
: champ{empty}
: champ{empty()}
{
swap(*this, other);
}
Expand Down Expand Up @@ -387,7 +394,7 @@ struct champ
node->values()[!offset]);
} else {
assert(shift == 0);
return empty.root->inc();
return empty().root->inc();
}
}
}
Expand Down Expand Up @@ -463,12 +470,6 @@ struct champ
}
};

template <typename T, typename H, typename Eq, typename MP, bits_t B>
const champ<T, H, Eq, MP, B> champ<T, H, Eq, MP, B>::empty = {
node_t::make_inner_n(0),
0,
};

} // namespace hamts
} // namespace detail
} // namespace immer
7 changes: 4 additions & 3 deletions src/immer/detail/rbts/operations.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

#include <immer/config.hpp>
#include <immer/heap/tags.hpp>
#include <immer/detail/util.hpp>
#include <immer/detail/rbts/position.hpp>
#include <immer/detail/rbts/visitor.hpp>

Expand Down Expand Up @@ -1959,9 +1960,9 @@ struct concat_merger_mut
from_data + from_offset + to_copy,
data + to_offset_);
else
uninitialized_move(from_data + from_offset,
from_data + from_offset + to_copy,
data + to_offset_);
detail::uninitialized_move(from_data + from_offset,
from_data + from_offset + to_copy,
data + to_offset_);
}
to_offset_ += to_copy;
from_offset += to_copy;
Expand Down
37 changes: 19 additions & 18 deletions src/immer/detail/rbts/rbtree.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,22 @@ struct rbtree
node_t* root;
node_t* tail;

static const rbtree empty;
static const rbtree& empty()
{
static const rbtree empty_ {
0,
BL,
node_t::make_inner_n(0u),
node_t::make_leaf_n(0u)
};
return empty_;
}

template <typename U>
static auto from_initializer_list(std::initializer_list<U> values)
{
auto e = owner_t{};
auto result = rbtree{empty};
auto result = rbtree{empty()};
for (auto&& v : values)
result.push_back_mut(e, v);
return result;
Expand All @@ -51,7 +60,7 @@ struct rbtree
static auto from_range(Iter first, Iter last)
{
auto e = owner_t{};
auto result = rbtree{empty};
auto result = rbtree{empty()};
for (; first != last; ++first)
result.push_back_mut(e, *first);
return result;
Expand All @@ -60,7 +69,7 @@ struct rbtree
static auto from_fill(size_t n, T v)
{
auto e = owner_t{};
auto result = rbtree{empty};
auto result = rbtree{empty()};
while (n --> 0)
result.push_back_mut(e, v);
return result;
Expand All @@ -79,7 +88,7 @@ struct rbtree
}

rbtree(rbtree&& other)
: rbtree{empty}
: rbtree{empty()}
{
swap(*this, other);
}
Expand Down Expand Up @@ -235,7 +244,7 @@ struct rbtree
{
if (size != other.size) return false;
if (size == 0) return true;
return (size <= branches<B>
return (size <= branches<BL>
|| make_regular_sub_pos(root, shift, tail_offset()).visit(
equals_visitor{}, other.root))
&& make_leaf_sub_pos(tail, tail_size()).visit(
Expand Down Expand Up @@ -415,7 +424,7 @@ struct rbtree
{
auto tail_off = tail_offset();
if (new_size == 0) {
return empty;
return empty();
} else if (new_size >= size) {
return *this;
} else if (new_size > tail_off) {
Expand All @@ -434,7 +443,7 @@ struct rbtree
assert(new_root->check(new_shift, new_size - get<2>(r)));
return { new_size, new_shift, new_root, new_tail };
} else {
return { new_size, BL, empty.root->inc(), new_tail };
return { new_size, BL, empty().root->inc(), new_tail };
}
}
}
Expand All @@ -444,7 +453,7 @@ struct rbtree
auto tail_off = tail_offset();
if (new_size == 0) {
// todo: more efficient?
*this = empty;
*this = empty();
} else if (new_size >= size) {
return;
} else if (new_size > tail_off) {
Expand All @@ -471,7 +480,7 @@ struct rbtree
root = new_root;
shift = new_shift;
} else {
root = empty.root->inc();
root = empty().root->inc();
shift = BL;
}
dec_leaf(tail, size - tail_off);
Expand Down Expand Up @@ -515,14 +524,6 @@ struct rbtree
}
};

template <typename T, typename MP, bits_t B, bits_t BL>
const rbtree<T, MP, B, BL> rbtree<T, MP, B, BL>::empty = {
0,
BL,
node_t::make_inner_n(0),
node_t::make_leaf_n(0)
};

} // namespace rbts
} // namespace detail
} // namespace immer
Loading