mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
s/ConsensusParamEntry/DynaFedParamEntry/
This commit is contained in:
parent
642260a126
commit
15996384d4
10 changed files with 33 additions and 33 deletions
|
|
@ -2,7 +2,7 @@
|
|||
#include <dynafed.h>
|
||||
#include <script/standard.h>
|
||||
|
||||
bool NextBlockIsParameterTransition(const CBlockIndex* pindexPrev, const Consensus::Params& consensus, ConsensusParamEntry& winning_entry)
|
||||
bool NextBlockIsParameterTransition(const CBlockIndex* pindexPrev, const Consensus::Params& consensus, DynaFedParamEntry& winning_entry)
|
||||
{
|
||||
uint32_t next_height = pindexPrev->nHeight + 1;
|
||||
assert(consensus.dynamic_epoch_length != 0);
|
||||
|
|
@ -15,7 +15,7 @@ bool NextBlockIsParameterTransition(const CBlockIndex* pindexPrev, const Consens
|
|||
for (int32_t height = next_height - 1; height >= (int32_t)(next_height - consensus.dynamic_epoch_length); --height) {
|
||||
const CBlockIndex* p_epoch_walk = pindexPrev->GetAncestor(height);
|
||||
assert(p_epoch_walk);
|
||||
const ConsensusParamEntry& proposal = p_epoch_walk->dynafed_params.m_proposed;
|
||||
const DynaFedParamEntry& proposal = p_epoch_walk->dynafed_params.m_proposed;
|
||||
const uint256 proposal_root = proposal.CalculateRoot();
|
||||
vote_tally[proposal_root]++;
|
||||
// Short-circuit once 4/5 threshhold is reached
|
||||
|
|
@ -35,7 +35,7 @@ bool NextBlockIsParameterTransition(const CBlockIndex* pindexPrev, const Consens
|
|||
return false;
|
||||
}
|
||||
|
||||
ConsensusParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus)
|
||||
DynaFedParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus)
|
||||
{
|
||||
assert(pindexPrev);
|
||||
|
||||
|
|
@ -43,7 +43,7 @@ ConsensusParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pin
|
|||
const uint32_t epoch_length = consensus.dynamic_epoch_length;
|
||||
uint32_t epoch_age = next_height % epoch_length;
|
||||
|
||||
ConsensusParamEntry winning_proposal;
|
||||
DynaFedParamEntry winning_proposal;
|
||||
// Early return when there is a winning proposal
|
||||
if (NextBlockIsParameterTransition(pindexPrev, consensus, winning_proposal)) {
|
||||
assert(epoch_age == 0);
|
||||
|
|
@ -68,7 +68,7 @@ ConsensusParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pin
|
|||
|
||||
// Convert signblockscript to P2WSH
|
||||
CScript p2wsh_signblock_script = GetScriptForDestination(WitnessV0ScriptHash(p_epoch_start->proof.challenge));
|
||||
winning_proposal = ConsensusParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size+consensus.signblockscript.size(), consensus.fedpegScript, consensus.first_extension_space);
|
||||
winning_proposal = DynaFedParamEntry(p2wsh_signblock_script, consensus.max_block_signature_size+consensus.signblockscript.size(), consensus.fedpegScript, consensus.first_extension_space);
|
||||
} else {
|
||||
winning_proposal = p_epoch_start->dynafed_params.m_current;
|
||||
}
|
||||
|
|
@ -76,11 +76,11 @@ ConsensusParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pin
|
|||
}
|
||||
|
||||
// TODO cache this in CBlockIndex itself?
|
||||
ConsensusParamEntry ComputeNextBlockCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus)
|
||||
DynaFedParamEntry ComputeNextBlockCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus)
|
||||
{
|
||||
assert(pindexPrev);
|
||||
|
||||
ConsensusParamEntry entry = ComputeNextBlockFullCurrentParameters(pindexPrev, consensus);
|
||||
DynaFedParamEntry entry = ComputeNextBlockFullCurrentParameters(pindexPrev, consensus);
|
||||
|
||||
uint32_t next_height = pindexPrev->nHeight+1;
|
||||
const uint32_t epoch_length = consensus.dynamic_epoch_length;
|
||||
|
|
@ -89,7 +89,7 @@ ConsensusParamEntry ComputeNextBlockCurrentParameters(const CBlockIndex* pindexP
|
|||
// Return appropriate format based on epoch age
|
||||
if (epoch_age > 0) {
|
||||
// TODO implement "prune" function to remove fields in place and change serialize type
|
||||
return ConsensusParamEntry(entry.m_signblockscript, entry.m_signblock_witness_limit);
|
||||
return DynaFedParamEntry(entry.m_signblockscript, entry.m_signblock_witness_limit);
|
||||
} else {
|
||||
return entry;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
#include <primitives/block.h>
|
||||
|
||||
|
||||
bool NextBlockIsParameterTransition(const CBlockIndex* pindexPrev, const Consensus::Params& consensus, ConsensusParamEntry& winning_entry);
|
||||
bool NextBlockIsParameterTransition(const CBlockIndex* pindexPrev, const Consensus::Params& consensus, DynaFedParamEntry& winning_entry);
|
||||
|
||||
/* Compute the next block's enforced parameters */
|
||||
ConsensusParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus);
|
||||
DynaFedParamEntry ComputeNextBlockFullCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus);
|
||||
/* Compute the next block's expected published parameters. Blocks at "epoch_age" of non-0 only
|
||||
* publish signblockscript-related fields */
|
||||
ConsensusParamEntry ComputeNextBlockCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus);
|
||||
DynaFedParamEntry ComputeNextBlockCurrentParameters(const CBlockIndex* pindexPrev, const Consensus::Params& consensus);
|
||||
|
||||
|
||||
#endif // BITCOIN_DYNAFED_H
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ void BlockAssembler::resetBlock()
|
|||
Optional<int64_t> BlockAssembler::m_last_block_num_txs{nullopt};
|
||||
Optional<int64_t> BlockAssembler::m_last_block_weight{nullopt};
|
||||
|
||||
std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, int min_tx_age, ConsensusParamEntry* proposed_entry)
|
||||
std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, int min_tx_age, DynaFedParamEntry* proposed_entry)
|
||||
{
|
||||
assert(min_tx_age >= 0);
|
||||
int64_t nTimeStart = GetTimeMicros();
|
||||
|
|
@ -151,8 +151,8 @@ std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& sc
|
|||
fIncludeWitness = IsWitnessEnabled(pindexPrev, chainparams.GetConsensus());
|
||||
|
||||
if (IsDynaFedEnabled(pindexPrev, chainparams.GetConsensus())) {
|
||||
ConsensusParamEntry current_params = ComputeNextBlockCurrentParameters(chainActive.Tip(), chainparams.GetConsensus());
|
||||
DynaFedParams block_params(current_params, proposed_entry ? *proposed_entry : ConsensusParamEntry());
|
||||
DynaFedParamEntry current_params = ComputeNextBlockCurrentParameters(chainActive.Tip(), chainparams.GetConsensus());
|
||||
DynaFedParams block_params(current_params, proposed_entry ? *proposed_entry : DynaFedParamEntry());
|
||||
pblock->m_dyna_params = block_params;
|
||||
nBlockWeight += ::GetSerializeSize(block_params, PROTOCOL_VERSION)*WITNESS_SCALE_FACTOR;
|
||||
nBlockWeight += current_params.m_signblock_witness_limit; // Note witness discount
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ public:
|
|||
BlockAssembler(const CChainParams& params, const Options& options);
|
||||
|
||||
/** Construct a new block template with coinbase to scriptPubKeyIn. min_tx_age is in seconds */
|
||||
std::unique_ptr<CBlockTemplate> CreateNewBlock(const CScript& scriptPubKeyIn, int min_tx_age=0, ConsensusParamEntry* = nullptr);
|
||||
std::unique_ptr<CBlockTemplate> CreateNewBlock(const CScript& scriptPubKeyIn, int min_tx_age=0, DynaFedParamEntry* = nullptr);
|
||||
|
||||
static Optional<int64_t> m_last_block_num_txs;
|
||||
static Optional<int64_t> m_last_block_weight;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ std::string CBlock::ToString() const
|
|||
return s.str();
|
||||
}
|
||||
|
||||
uint256 ConsensusParamEntry::CalculateRoot() const
|
||||
uint256 DynaFedParamEntry::CalculateRoot() const
|
||||
{
|
||||
if (IsNull()) {
|
||||
return uint256();
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class ConsensusParamEntry
|
||||
class DynaFedParamEntry
|
||||
{
|
||||
public:
|
||||
unsigned char m_serialize_type; // Determines how it is serialized, defaults to null
|
||||
|
|
@ -65,9 +65,9 @@ public:
|
|||
|
||||
// Each constructor sets its own serialization type implicitly based on which
|
||||
// arguments are given
|
||||
ConsensusParamEntry() { m_signblock_witness_limit = 0; m_serialize_type = 0; };
|
||||
ConsensusParamEntry(const CScript& signblockscript_in, const uint32_t sbs_wit_limit_in) : m_signblockscript(signblockscript_in), m_signblock_witness_limit(sbs_wit_limit_in) { m_serialize_type = 1; };
|
||||
ConsensusParamEntry(const CScript& signblockscript_in, const uint32_t sbs_wit_limit_in, const CScript& fedpegscript_in, const std::vector<std::vector<unsigned char>> extension_space_in) : m_signblockscript(signblockscript_in), m_signblock_witness_limit(sbs_wit_limit_in), m_fedpegscript(fedpegscript_in), m_extension_space(extension_space_in) { m_serialize_type = 2; };
|
||||
DynaFedParamEntry() { m_signblock_witness_limit = 0; m_serialize_type = 0; };
|
||||
DynaFedParamEntry(const CScript& signblockscript_in, const uint32_t sbs_wit_limit_in) : m_signblockscript(signblockscript_in), m_signblock_witness_limit(sbs_wit_limit_in) { m_serialize_type = 1; };
|
||||
DynaFedParamEntry(const CScript& signblockscript_in, const uint32_t sbs_wit_limit_in, const CScript& fedpegscript_in, const std::vector<std::vector<unsigned char>> extension_space_in) : m_signblockscript(signblockscript_in), m_signblock_witness_limit(sbs_wit_limit_in), m_fedpegscript(fedpegscript_in), m_extension_space(extension_space_in) { m_serialize_type = 2; };
|
||||
|
||||
ADD_SERIALIZE_METHODS;
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ public:
|
|||
m_extension_space.clear();
|
||||
}
|
||||
|
||||
bool operator==(const ConsensusParamEntry &other) const
|
||||
bool operator==(const DynaFedParamEntry &other) const
|
||||
{
|
||||
return m_serialize_type == other.m_serialize_type &&
|
||||
m_signblockscript == other.m_signblockscript &&
|
||||
|
|
@ -122,7 +122,7 @@ public:
|
|||
m_fedpegscript == other.m_fedpegscript &&
|
||||
m_extension_space == other.m_extension_space;
|
||||
}
|
||||
bool operator!=(const ConsensusParamEntry &other) const
|
||||
bool operator!=(const DynaFedParamEntry &other) const
|
||||
{
|
||||
return !(*this == other);
|
||||
}
|
||||
|
|
@ -133,12 +133,12 @@ class DynaFedParams
|
|||
public:
|
||||
|
||||
// Currently enforced by network, not all fields may be known
|
||||
ConsensusParamEntry m_current;
|
||||
DynaFedParamEntry m_current;
|
||||
// Proposed rules for next epoch
|
||||
ConsensusParamEntry m_proposed;
|
||||
DynaFedParamEntry m_proposed;
|
||||
|
||||
DynaFedParams() {};
|
||||
DynaFedParams(const ConsensusParamEntry& current, const ConsensusParamEntry& proposed) : m_current(current), m_proposed(proposed) {};
|
||||
DynaFedParams(const DynaFedParamEntry& current, const DynaFedParamEntry& proposed) : m_current(current), m_proposed(proposed) {};
|
||||
|
||||
ADD_SERIALIZE_METHODS;
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ double GetDifficulty(const CBlockIndex* blockindex)
|
|||
return dDiff;
|
||||
}
|
||||
|
||||
UniValue paramEntryToJSON(const ConsensusParamEntry& entry)
|
||||
UniValue paramEntryToJSON(const DynaFedParamEntry& entry)
|
||||
{
|
||||
UniValue result(UniValue::VOBJ);
|
||||
result.pushKV("signblockscript", HexStr(entry.m_signblockscript));
|
||||
|
|
@ -1458,7 +1458,7 @@ UniValue getblockchaininfo(const JSONRPCRequest& request)
|
|||
}
|
||||
obj.pushKV("extension_space", arr);
|
||||
} else {
|
||||
const ConsensusParamEntry entry = ComputeNextBlockFullCurrentParameters(chainActive.Tip(), chainparams.GetConsensus());
|
||||
const DynaFedParamEntry entry = ComputeNextBlockFullCurrentParameters(chainActive.Tip(), chainparams.GetConsensus());
|
||||
obj.pushKV("current_signblock_asm", ScriptToAsmStr(entry.m_signblockscript));
|
||||
obj.pushKV("current_signblock_hex", HexStr(entry.m_signblockscript));
|
||||
obj.pushKV("max_block_witness", (uint64_t)entry.m_signblock_witness_limit);
|
||||
|
|
|
|||
|
|
@ -1030,7 +1030,7 @@ UniValue getnewblockhex(const JSONRPCRequest& request)
|
|||
}
|
||||
|
||||
// Construct proposed parameter entry, if any
|
||||
ConsensusParamEntry proposed;
|
||||
DynaFedParamEntry proposed;
|
||||
if (!request.params[1].isNull()) {
|
||||
if (!IsDynaFedEnabled(chainActive.Tip(), Params().GetConsensus())) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Dynamic federations is not active on this network. Proposed parameters are not needed.");
|
||||
|
|
|
|||
|
|
@ -3485,7 +3485,7 @@ static bool ContextualCheckDynaFedHeader(const CBlockHeader& block, CValidationS
|
|||
return state.Invalid(false, REJECT_INVALID, "invalid-dyna-fed", "dynamic block header has unknown HF extension bits set");
|
||||
}
|
||||
|
||||
const ConsensusParamEntry expected_current_params = ComputeNextBlockCurrentParameters(pindexPrev, params.GetConsensus());
|
||||
const DynaFedParamEntry expected_current_params = ComputeNextBlockCurrentParameters(pindexPrev, params.GetConsensus());
|
||||
|
||||
if (expected_current_params != dynafed_params.m_current) {
|
||||
return state.Invalid(false, REJECT_INVALID, "invalid-dyna-fed", "dynamic block header's current parameters do not match expected");
|
||||
|
|
|
|||
|
|
@ -835,7 +835,7 @@ class CProof:
|
|||
return "CProof(challenge=%s solution=%s)" \
|
||||
% (self.challenge, self.solution)
|
||||
|
||||
class ConsensusParamEntry:
|
||||
class DynaFedParamEntry:
|
||||
__slots__ = ("m_serialize_type", "m_signblockscript", "m_signblock_witness_limit", "m_fedpegscript", "m_extension_space")
|
||||
|
||||
# Constructor args will define serialization type:
|
||||
|
|
@ -877,7 +877,7 @@ class ConsensusParamEntry:
|
|||
r += ser_string(self.m_fedpegscript)
|
||||
r += ser_string_vector(self.m_extension_space)
|
||||
elif self.m_serialize_type > 2:
|
||||
raise Exception("Invalid serialization type for ConsensusParamEntry")
|
||||
raise Exception("Invalid serialization type for DynaFedParamEntry")
|
||||
return r
|
||||
|
||||
def deserialize(self, f):
|
||||
|
|
@ -892,13 +892,13 @@ class ConsensusParamEntry:
|
|||
self.m_extension_space = deser_string_vector(f)
|
||||
|
||||
def __repr__(self):
|
||||
return "ConsensusParamEntry(m_signblockscript=%s m_fedpegscript=%s m_extension_space=%s)" \
|
||||
return "DynaFedParamEntry(m_signblockscript=%s m_fedpegscript=%s m_extension_space=%s)" \
|
||||
% (self.m_signblockscript, self.m_fedpegscript, self.m_extension_space)
|
||||
|
||||
class DynaFedParams:
|
||||
__slots__ = ("m_current", "m_proposed")
|
||||
|
||||
def __init__(self, m_current=ConsensusParamEntry(), m_proposed=ConsensusParamEntry()):
|
||||
def __init__(self, m_current=DynaFedParamEntry(), m_proposed=DynaFedParamEntry()):
|
||||
self.m_current = m_current
|
||||
self.m_proposed = m_proposed
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue