Skip to content

Commit

Permalink
s/ConsensusParamEntry/DynaFedParamEntry/
Browse files Browse the repository at this point in the history
  • Loading branch information
instagibbs committed Sep 5, 2019
1 parent 642260a commit 1599638
Show file tree
Hide file tree
Showing 10 changed files with 33 additions and 33 deletions.
16 changes: 8 additions & 8 deletions src/dynafed.cpp
Expand Up @@ -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);
Expand All @@ -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
Expand All @@ -35,15 +35,15 @@ 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);

uint32_t next_height = pindexPrev->nHeight+1;
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);
Expand All @@ -68,19 +68,19 @@ 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;
}
return winning_proposal;
}

// 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;
Expand All @@ -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;
}
Expand Down
6 changes: 3 additions & 3 deletions src/dynafed.h
Expand Up @@ -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
6 changes: 3 additions & 3 deletions src/miner.cpp
Expand Up @@ -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();
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/miner.h
Expand Up @@ -159,7 +159,7 @@ class BlockAssembler
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;
Expand Down
2 changes: 1 addition & 1 deletion src/primitives/block.cpp
Expand Up @@ -41,7 +41,7 @@ std::string CBlock::ToString() const
return s.str();
}

uint256 ConsensusParamEntry::CalculateRoot() const
uint256 DynaFedParamEntry::CalculateRoot() const
{
if (IsNull()) {
return uint256();
Expand Down
18 changes: 9 additions & 9 deletions src/primitives/block.h
Expand Up @@ -53,7 +53,7 @@ class CProof
};


class ConsensusParamEntry
class DynaFedParamEntry
{
public:
unsigned char m_serialize_type; // Determines how it is serialized, defaults to null
Expand All @@ -65,9 +65,9 @@ class ConsensusParamEntry

// 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;

Expand Down Expand Up @@ -114,15 +114,15 @@ class ConsensusParamEntry
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 &&
m_signblock_witness_limit == other.m_signblock_witness_limit &&
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);
}
Expand All @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions src/rpc/blockchain.cpp
Expand Up @@ -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));
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/rpc/mining.cpp
Expand Up @@ -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.");
Expand Down
2 changes: 1 addition & 1 deletion src/validation.cpp
Expand Up @@ -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");
Expand Down
8 changes: 4 additions & 4 deletions test/functional/test_framework/messages.py
Expand Up @@ -835,7 +835,7 @@ def __repr__(self):
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:
Expand Down Expand Up @@ -877,7 +877,7 @@ def serialize(self):
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):
Expand All @@ -892,13 +892,13 @@ def deserialize(self, f):
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

Expand Down

0 comments on commit 1599638

Please sign in to comment.