diff --git a/doc/release-notes.md b/doc/release-notes.md
index 7608585a42..fcd5ae3f3e 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -1,12 +1,13 @@
Bitcoin ABC version 0.20.2 is now available from:
This release includes the following features and fixes:
- Improved initial block download performance by ~20%.
- Improved initial block download performance during pruning.
- `bitcoin-qt -resetguisettings` now generates a backup of the former GUI settings.
- Removed features that were deprecated in 0.19.x, including `signrawtransaction`,
`fundrawtransaction -reserveChangeKey`, parts of `validateaddress`, use of
addresses in `createmultisig`, and other miscellaneous behaviors.
- Minor logging improvements.
+ - Introduced `submitheader` RPC for submitting header candidates as chaintips.
diff --git a/src/core_io.h b/src/core_io.h
index 8e59d5558f..cd2977e17f 100644
--- a/src/core_io.h
+++ b/src/core_io.h
@@ -1,38 +1,40 @@
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_CORE_IO_H
#define BITCOIN_CORE_IO_H
#include
#include
struct Amount;
class CBlock;
+class CBlockHeader;
class CMutableTransaction;
class CScript;
class CTransaction;
class uint256;
class UniValue;
// core_read.cpp
CScript ParseScript(const std::string &s);
std::string ScriptToAsmStr(const CScript &script,
const bool fAttemptSighashDecode = false);
bool DecodeHexTx(CMutableTransaction &tx, const std::string &strHexTx);
bool DecodeHexBlk(CBlock &, const std::string &strHexBlk);
+bool DecodeHexBlockHeader(CBlockHeader &, const std::string &hex_header);
uint256 ParseHashUV(const UniValue &v, const std::string &strName);
uint256 ParseHashStr(const std::string &, const std::string &strName);
std::vector ParseHexUV(const UniValue &v, const std::string &strName);
// core_write.cpp
UniValue ValueFromAmount(const Amount &amount);
std::string FormatScript(const CScript &script);
std::string EncodeHexTx(const CTransaction &tx, const int serializeFlags = 0);
void ScriptPubKeyToUniv(const CScript &scriptPubKey, UniValue &out,
bool fIncludeHex);
void TxToUniv(const CTransaction &tx, const uint256 &hashBlock, UniValue &entry,
bool include_hex = true, int serialize_flags = 0);
#endif // BITCOIN_CORE_IO_H
diff --git a/src/core_read.cpp b/src/core_read.cpp
index 7becc526ad..7166cc5b31 100644
--- a/src/core_read.cpp
+++ b/src/core_read.cpp
@@ -1,252 +1,267 @@
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include
#include
#include
#include