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