diff --git a/configure.ac b/configure.ac
index 0598c5dfc..280fa98da 100755
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 1)
define(_CLIENT_VERSION_MINOR, 3)
-define(_CLIENT_VERSION_REVISION, 0)
+define(_CLIENT_VERSION_REVISION, 1)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2019)
diff --git a/contrib/devtools/README.md b/contrib/devtools/README.md
index 3f67d50dc..fb269237a 100644
--- a/contrib/devtools/README.md
+++ b/contrib/devtools/README.md
@@ -23,7 +23,7 @@ git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
copyright\_header.py
====================
-Provides utilities for managing copyright headers of `The Bitcoin Core
+Provides utilities for managing copyright headers of `The Axe Core
developers` in repository source files. It has three subcommands:
```
@@ -42,31 +42,31 @@ Specifying `verbose` will list the full filenames of files of each category.
copyright\_header.py update \ [verbose]
---------------------------------------------------------
-Updates all the copyright headers of `The Bitcoin Core developers` which were
+Updates all the copyright headers of `The Axe Core developers` which were
changed in a year more recent than is listed. For example:
```
-// Copyright (c) - The Bitcoin Core developers
+// Copyright (c) - The Axe Core developers
```
will be updated to:
```
-// Copyright (c) - The Bitcoin Core developers
+// Copyright (c) - The Axe Core developers
```
where `` is obtained from the `git log` history.
This subcommand also handles copyright headers that have only a single year. In
those cases:
```
-// Copyright (c) The Bitcoin Core developers
+// Copyright (c) The Axe Core developers
```
will be updated to:
```
-// Copyright (c) - The Bitcoin Core developers
+// Copyright (c) - The Axe Core developers
```
where the update is appropriate.
copyright\_header.py insert \
------------------------------------
-Inserts a copyright header for `The Bitcoin Core developers` at the top of the
+Inserts a copyright header for `The Axe Core developers` at the top of the
file in either Python or C++ style as determined by the file extension. If the
file is a Python file and it has `#!` starting the first line, the header is
inserted in the line below it.
@@ -76,7 +76,7 @@ The copyright dates will be set to be `-` where
`` is equal to ``, it will be set as a single
year rather than two hyphenated years.
-If the file already has a copyright for `The Bitcoin Core developers`, the
+If the file already has a copyright for `The Axe Core developers`, the
script will exit.
gen-manpages.sh
diff --git a/contrib/devtools/copyright_header.py b/contrib/devtools/copyright_header.py
index 9f35c378b..440000084 100755
--- a/contrib/devtools/copyright_header.py
+++ b/contrib/devtools/copyright_header.py
@@ -1,5 +1,7 @@
#!/usr/bin/env python3
# Copyright (c) 2016 The Bitcoin Core developers
+# Copyright (c) 2019 The Dash Core developers
+# Copyright (c) 2019 The Axe Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -105,6 +107,8 @@ def compile_copyright_regex(copyright_style, year_style, name):
"Jan-Klaas Kollhof\n",
"Sam Rushing\n",
"ArtForz -- public domain half-a-node\n",
+ "The Dash Core developers\n",
+ "The Axe Core developers\n",
]
DOMINANT_STYLE_COMPILED = {}
@@ -277,7 +281,7 @@ def exec_report(base_directory, verbose):
$ ./copyright_header.py report [verbose]
Arguments:
- - The base directory of a bitcoin source code repository.
+ - The base directory of a Axe Core source code repository.
[verbose] - Includes a list of every file of each subcategory in the report.
"""
@@ -340,7 +344,7 @@ def write_file_lines(filename, file_lines):
COPYRIGHT = 'Copyright \(c\)'
YEAR = "20[0-9][0-9]"
YEAR_RANGE = '(%s)(-%s)?' % (YEAR, YEAR)
-HOLDER = 'The Bitcoin Core developers'
+HOLDER = 'The Axe Core developers'
UPDATEABLE_LINE_COMPILED = re.compile(' '.join([COPYRIGHT, YEAR_RANGE, HOLDER]))
def get_updatable_copyright_line(file_lines):
@@ -408,24 +412,24 @@ def exec_update_header_year(base_directory):
################################################################################
UPDATE_USAGE = """
-Updates all the copyright headers of "The Bitcoin Core developers" which were
+Updates all the copyright headers of "The Axe Core developers" which were
changed in a year more recent than is listed. For example:
-// Copyright (c) - The Bitcoin Core developers
+// Copyright (c) - The Axe Core developers
will be updated to:
-// Copyright (c) - The Bitcoin Core developers
+// Copyright (c) - The Axe Core developers
where is obtained from the 'git log' history.
This subcommand also handles copyright headers that have only a single year. In those cases:
-// Copyright (c) The Bitcoin Core developers
+// Copyright (c) The Axe Core developers
will be updated to:
-// Copyright (c) - The Bitcoin Core developers
+// Copyright (c) - The Axe Core developers
where the update is appropriate.
@@ -433,7 +437,7 @@ def exec_update_header_year(base_directory):
$ ./copyright_header.py update
Arguments:
- - The base directory of a bitcoin source code repository.
+ - The base directory of Axe Core source code repository.
"""
def print_file_action_message(filename, action):
@@ -458,7 +462,7 @@ def get_header_lines(header, start_year, end_year):
return [line + '\n' for line in lines]
CPP_HEADER = '''
-// Copyright (c) %s The Bitcoin Core developers
+// Copyright (c) %s The Axe Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''
@@ -467,7 +471,7 @@ def get_cpp_header_lines_to_insert(start_year, end_year):
return reversed(get_header_lines(CPP_HEADER, start_year, end_year))
PYTHON_HEADER = '''
-# Copyright (c) %s The Bitcoin Core developers
+# Copyright (c) %s The Axe Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''
@@ -521,7 +525,7 @@ def insert_cpp_header(filename, file_lines, start_year, end_year):
def exec_insert_header(filename, style):
file_lines = read_file_lines(filename)
if file_already_has_core_copyright(file_lines):
- sys.exit('*** %s already has a copyright by The Bitcoin Core developers'
+ sys.exit('*** %s already has a copyright by The Axe Core developers'
% (filename))
start_year, end_year = get_git_change_year_range(filename)
if style == 'python':
@@ -534,7 +538,7 @@ def exec_insert_header(filename, style):
################################################################################
INSERT_USAGE = """
-Inserts a copyright header for "The Bitcoin Core developers" at the top of the
+Inserts a copyright header for "The Axe Core developers" at the top of the
file in either Python or C++ style as determined by the file extension. If the
file is a Python file and it has a '#!' starting the first line, the header is
inserted in the line below it.
@@ -548,14 +552,14 @@ def exec_insert_header(filename, style):
""
-If the file already has a copyright for "The Bitcoin Core developers", the
+If the file already has a copyright for "The Axe Core developers", the
script will exit.
Usage:
$ ./copyright_header.py insert
Arguments:
- - A source file in the bitcoin repository.
+ - A source file in the Axe Core repository.
"""
def insert_cmd(argv):
@@ -580,7 +584,7 @@ def insert_cmd(argv):
################################################################################
USAGE = """
-copyright_header.py - utilities for managing copyright headers of 'The Bitcoin
+copyright_header.py - utilities for managing copyright headers of 'The Axe
Core developers' in repository source files.
Usage:
diff --git a/depends/Makefile b/depends/Makefile
index dedb0674c..71aa4ecb8 100755
--- a/depends/Makefile
+++ b/depends/Makefile
@@ -21,7 +21,6 @@ BUILD_ID_SALT ?= salt
host:=$(BUILD)
ifneq ($(HOST),)
host:=$(HOST)
-host_toolchain:=$(HOST)-
endif
ifneq ($(DEBUG),)
diff --git a/depends/hosts/default.mk b/depends/hosts/default.mk
index 6f60d6b3f..144e5f88b 100755
--- a/depends/hosts/default.mk
+++ b/depends/hosts/default.mk
@@ -1,3 +1,7 @@
+ifneq ($(host),$(build))
+host_toolchain:=$(host)-
+endif
+
default_host_CC = $(host_toolchain)gcc
default_host_CXX = $(host_toolchain)g++
default_host_AR = $(host_toolchain)ar
diff --git a/depends/packages/chia_bls.mk b/depends/packages/chia_bls.mk
index 85eb21472..2a54e0797 100755
--- a/depends/packages/chia_bls.mk
+++ b/depends/packages/chia_bls.mk
@@ -21,6 +21,7 @@ define $(package)_set_vars
$(package)_config_opts_i686+= -DWSIZE=32
$(package)_config_opts_x86_64+= -DWSIZE=64
$(package)_config_opts_arm+= -DWSIZE=32
+ $(package)_config_opts_armv7l+= -DWSIZE=32
$(package)_config_opts_debug=-DDEBUG=ON -DCMAKE_BUILD_TYPE=Debug
ifneq ($(darwin_native_toolchain),)
diff --git a/depends/packages/gmp.mk b/depends/packages/gmp.mk
index 0003b24a3..ac685d767 100755
--- a/depends/packages/gmp.mk
+++ b/depends/packages/gmp.mk
@@ -6,6 +6,7 @@ $(package)_sha256_hash=5275bb04f4863a13516b2f39392ac5e272f5e1bb8057b18aec1c9b79d
define $(package)_set_vars
$(package)_config_opts+=--enable-cxx --enable-fat --with-pic --disable-shared
+$(package)_cflags_armv7l_linux+=-march=armv7-a
endef
define $(package)_config_cmds
diff --git a/depends/packages/openssl.mk b/depends/packages/openssl.mk
index 5ee9f17a6..37f0c28a5 100755
--- a/depends/packages/openssl.mk
+++ b/depends/packages/openssl.mk
@@ -47,6 +47,7 @@ $(package)_config_opts_linux=-fPIC -Wa,--noexecstack
$(package)_config_opts_x86_64_linux=linux-x86_64
$(package)_config_opts_i686_linux=linux-generic32
$(package)_config_opts_arm_linux=linux-generic32
+$(package)_config_opts_armv7l_linux=linux-generic32
$(package)_config_opts_aarch64_linux=linux-generic64
$(package)_config_opts_mipsel_linux=linux-generic32
$(package)_config_opts_mips_linux=linux-generic32
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 93faab459..995c2b852 100755
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -41,7 +41,7 @@ PROJECT_NAME = "Axe Core"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.3.0.0
+PROJECT_NUMBER = 1.3.1.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
diff --git a/doc/README.md b/doc/README.md
index 2318edafa..04d2fd05f 100755
--- a/doc/README.md
+++ b/doc/README.md
@@ -1,4 +1,4 @@
-Axe Core 1.2.0
+Axe Core 1.3.1
=====================
This is the official reference wallet for AXE digital currency and comprises the backbone of the AXE peer-to-peer network. You can [download AXE Core](https://axerunners.com/) or [build it yourself](#building) using the guides below.
diff --git a/doc/release-notes.md b/doc/release-notes.md
index 197800197..2b945939f 100755
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -1,11 +1,11 @@
-Axe Core version 1.3.0.0
+Axe Core version 1.3.1.0
==========================
Release is now available from:
-This is a new minor version release, bringing various bugfixes and other improvements.
+This is a new version release, bringing various bugfixes and other improvements.
Please report bugs using the issue tracker at github:
@@ -32,22 +32,4 @@ the node.
Notable changes
===============
-Instantsend Autolocks activated.
-
-Number of false-positives from anti virus software should be reduced
---------------------------------------------------------------------
-We have removed all mining code from Windows and Mac binaries, which should avoid most of the false-positive alerts
-from anti virus software. Linux builds are not affected. The mining code found in `axe-qt` and `axed` are only meant
-for regression/integration tests and devnets, so there is no harm in removing this code from non-linux builds.
-
-Fixed an issue with invalid merkle blocks causing SPV nodes to ban other nodes
-------------------------------------------------------------------------------
-A fix that was introduces in the last minor version caused creation of invalid merkle blocks, which in turn cause SPV
-nodes to ban 1.2.3 nodes. This can be observed on mobile clients which have troubles maintaining connections. This
-release fixes this issue and should allow SPV/mobile clients to sync with upgraded nodes.
-
-Bug fixes/Other improvements
-----------------------------
-There are few bug fixes in this release:
-- Fixed an issue with transaction sometimes not being fully zapped when `-zapwallettxes` is used
-- Fixed an issue with the `protx revoke` RPC and REASON_CHANGE_OF_KEYS
+Decentralized governance activated.
diff --git a/src/chainparams.cpp b/src/chainparams.cpp
index 148c053d6..18a1aac07 100755
--- a/src/chainparams.cpp
+++ b/src/chainparams.cpp
@@ -184,10 +184,10 @@ class CMainParams : public CChainParams {
consensus.nMasternodePaymentsIncreasePeriod = 576*30;
consensus.nInstantSendConfirmationsRequired = 6;
consensus.nInstantSendKeepLock = 24;
- consensus.nBudgetPaymentsStartBlock = 9999999;
+ consensus.nBudgetPaymentsStartBlock = 271350;
consensus.nBudgetPaymentsCycleBlocks = 16616;
consensus.nBudgetPaymentsWindowBlocks = 100;
- consensus.nSuperblockStartBlock = 9999999;
+ consensus.nSuperblockStartBlock = 304800;
consensus.nSuperblockStartHash = uint256S("");
consensus.nSuperblockCycle = 16616; // ~(60*24*30)/2.6, actual number of blocks per month is 200700 / 12 = 16725
consensus.nGovernanceMinQuorum = 10;
diff --git a/src/clientversion.h b/src/clientversion.h
index eb71e2a47..e3cf4462f 100755
--- a/src/clientversion.h
+++ b/src/clientversion.h
@@ -16,7 +16,7 @@
//! These need to be macros, as clientversion.cpp's and axe*-res.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 1
#define CLIENT_VERSION_MINOR 3
-#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
diff --git a/src/governance-object.h b/src/governance-object.h
index dfc5f5633..850f2ab1a 100755
--- a/src/governance-object.h
+++ b/src/governance-object.h
@@ -35,7 +35,7 @@ static const int GOVERNANCE_OBJECT_PROPOSAL = 1;
static const int GOVERNANCE_OBJECT_TRIGGER = 2;
static const int GOVERNANCE_OBJECT_WATCHDOG = 3;
-static const CAmount GOVERNANCE_PROPOSAL_FEE_TX = (5.0 * COIN);
+static const CAmount GOVERNANCE_PROPOSAL_FEE_TX = (0.5 * COIN);
static const int64_t GOVERNANCE_FEE_CONFIRMATIONS = 6;
static const int64_t GOVERNANCE_MIN_RELAY_FEE_CONFIRMATIONS = 1;
diff --git a/src/init.cpp b/src/init.cpp
index 67de20388..404912faa 100755
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -25,7 +25,6 @@
#include "miner.h"
#include "netbase.h"
#include "net.h"
-#include "netfulfilledman.h"
#include "net_processing.h"
#include "policy/policy.h"
#include "rpc/server.h"
@@ -2035,7 +2034,8 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
// LOAD SERIALIZED DAT FILES INTO DATA CACHES FOR INTERNAL USE
- if (!fLiteMode) {
+ bool fIgnoreCacheFiles = fLiteMode || fReindex || fReindexChainState;
+ if (!fIgnoreCacheFiles) {
boost::filesystem::path pathDB = GetDataDir();
std::string strDBName;
diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp
index 0d96c0238..f97a42dc8 100755
--- a/src/qt/optionsdialog.cpp
+++ b/src/qt/optionsdialog.cpp
@@ -92,14 +92,14 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :
}
/* Theme selector */
- ui->theme->addItem(QString("AXE-light"), QVariant("light"));
- ui->theme->addItem(QString("AXE-light-hires"), QVariant("light-hires"));
- ui->theme->addItem(QString("AXE-light-retro"), QVariant("light-retro"));
- ui->theme->addItem(QString("AXE-light-hires-retro"), QVariant("light-hires-retro"));
- ui->theme->addItem(QString("AXE-blue"), QVariant("drkblue"));
- ui->theme->addItem(QString("AXE-Crownium"), QVariant("crownium"));
- ui->theme->addItem(QString("AXE-traditional"), QVariant("trad"));
-
+ ui->theme->addItem(QString("Light"), QVariant("light"));
+ ui->theme->addItem(QString("Light-HiRes"), QVariant("light-hires"));
+ ui->theme->addItem(QString("Light-Retro"), QVariant("light-retro"));
+ ui->theme->addItem(QString("Light-HiRes-Retro"), QVariant("light-hires-retro"));
+ ui->theme->addItem(QString("Blue"), QVariant("drkblue"));
+ ui->theme->addItem(QString("Crownium"), QVariant("crownium"));
+ ui->theme->addItem(QString("Traditional"), QVariant("trad"));
+
/* Language selector */
QDir translations(":translations");
diff --git a/src/qt/res/icons/light-retro/overview.png b/src/qt/res/icons/light-retro/overview.png
index 00acd976e..724a0104e 100755
Binary files a/src/qt/res/icons/light-retro/overview.png and b/src/qt/res/icons/light-retro/overview.png differ
diff --git a/src/qt/res/icons/light-retro/toolbar.png b/src/qt/res/icons/light-retro/toolbar.png
deleted file mode 100755
index 556eeb486..000000000
Binary files a/src/qt/res/icons/light-retro/toolbar.png and /dev/null differ
diff --git a/src/qt/res/icons/light-retro/toolbar_testnet.png b/src/qt/res/icons/light-retro/toolbar_testnet.png
deleted file mode 100755
index 6809da711..000000000
Binary files a/src/qt/res/icons/light-retro/toolbar_testnet.png and /dev/null differ
diff --git a/src/qt/res/icons/light/toolbar.png b/src/qt/res/icons/light/toolbar.png
deleted file mode 100644
index 5f807b878..000000000
Binary files a/src/qt/res/icons/light/toolbar.png and /dev/null differ
diff --git a/src/qt/res/icons/light/toolbar_testnet.png b/src/qt/res/icons/light/toolbar_testnet.png
deleted file mode 100644
index 5f807b878..000000000
Binary files a/src/qt/res/icons/light/toolbar_testnet.png and /dev/null differ
diff --git a/src/rpc/rpcevo.cpp b/src/rpc/rpcevo.cpp
index 471e79d83..a0cd28754 100755
--- a/src/rpc/rpcevo.cpp
+++ b/src/rpc/rpcevo.cpp
@@ -1158,6 +1158,40 @@ UniValue bls_generate(const JSONRPCRequest& request)
return ret;
}
+void bls_fromsecret_help()
+{
+ throw std::runtime_error(
+ "bls fromsecret \"secret\"\n"
+ "\nParses a BLS secret key and returns the secret/public key pair.\n"
+ "\nArguments:\n"
+ "1. \"secret\" (string, required) The BLS secret key\n"
+ "\nResult:\n"
+ "{\n"
+ " \"secret\": \"xxxx\", (string) BLS secret key\n"
+ " \"public\": \"xxxx\", (string) BLS public key\n"
+ "}\n"
+ "\nExamples:\n"
+ + HelpExampleCli("bls fromsecret", "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f")
+ );
+}
+
+UniValue bls_fromsecret(const JSONRPCRequest& request)
+{
+ if (request.fHelp || request.params.size() != 2) {
+ bls_fromsecret_help();
+ }
+
+ CBLSSecretKey sk;
+ if (!sk.SetHexStr(request.params[1].get_str())) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Secret key must be a valid hex string of length %d", sk.SerSize*2));
+ }
+
+ UniValue ret(UniValue::VOBJ);
+ ret.push_back(Pair("secret", sk.ToString()));
+ ret.push_back(Pair("public", sk.GetPublicKey().ToString()));
+ return ret;
+}
+
[[ noreturn ]] void bls_help()
{
throw std::runtime_error(
@@ -1168,6 +1202,7 @@ UniValue bls_generate(const JSONRPCRequest& request)
"1. \"command\" (string, required) The command to execute\n"
"\nAvailable commands:\n"
" generate - Create a BLS secret/public key pair\n"
+ " fromsecret - Parse a BLS secret key and return the secret/public key pair\n"
);
}
@@ -1184,6 +1219,8 @@ UniValue _bls(const JSONRPCRequest& request)
if (command == "generate") {
return bls_generate(request);
+ } else if (command == "fromsecret") {
+ return bls_fromsecret(request);
} else {
bls_help();
}
diff --git a/src/spork.cpp b/src/spork.cpp
index 0812a85c8..08ea8816a 100755
--- a/src/spork.cpp
+++ b/src/spork.cpp
@@ -23,12 +23,12 @@ std::map mapSporkDefaults = {
{SPORK_5_INSTANTSEND_MAX_VALUE, 1000}, // 1000 Axe
{SPORK_6_NEW_SIGS, 4070908800ULL}, // OFF
{SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT, 0}, // ON
- {SPORK_9_SUPERBLOCKS_ENABLED, 4070908800ULL}, // OFF
+ {SPORK_9_SUPERBLOCKS_ENABLED, 0}, // ON
{SPORK_10_MASTERNODE_PAY_UPDATED_NODES, 0}, // ON
{SPORK_12_RECONSIDER_BLOCKS, 0}, // 0 BLOCKS
{SPORK_14_REQUIRE_SENTINEL_FLAG, 4070908800ULL}, // OFF
{SPORK_16_INSTANTSEND_AUTOLOCKS, 0}, // ON
- {SPORK_15_DETERMINISTIC_MNS_ENABLED, 0}, // ON
+ {SPORK_15_DETERMINISTIC_MNS_ENABLED, 239045}, // Hardened to mainnet
{SPORK_17_QUORUM_DKG_ENABLED, 4070908800ULL}, // OFF
};
diff --git a/src/validation.cpp b/src/validation.cpp
index 017b2fed6..87e78dec2 100755
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -4163,8 +4163,10 @@ bool InitBlockIndex(const CChainParams& chainparams)
if (chainparams.NetworkIDString() == CBaseChainParams::DEVNET) {
// We can't continue if devnet genesis block is invalid
std::shared_ptr shared_pblock = std::make_shared(chainparams.DevNetGenesisBlock());
- bool fProcessDevnetGenesisBlock = ProcessNewBlock(chainparams, shared_pblock, true, NULL);
- assert(fProcessDevnetGenesisBlock);
+ bool fCheckBlock = CheckBlock(*shared_pblock, state, chainparams.GetConsensus());
+ assert(fCheckBlock);
+ if (!AcceptBlock(shared_pblock, state, chainparams, NULL, true, NULL, NULL))
+ return false;
}
// Force a chainstate write so that when we VerifyDB in a moment, it doesn't check stale data