MCPcopy Create free account
hub / github.com/ElementsProject/elements / VersionBitsConditionChecker

Class VersionBitsConditionChecker

src/versionbits.cpp:190–221  ·  view source on GitHub ↗

* Class to implement versionbits logic. */

Source from the content-addressed store, hash-verified

188 * Class to implement versionbits logic.
189 */
190class VersionBitsConditionChecker : public AbstractThresholdConditionChecker {
191private:
192 const Consensus::DeploymentPos id;
193
194protected:
195 int64_t BeginTime(const Consensus::Params& params) const override { return params.vDeployments[id].nStartTime; }
196 int64_t EndTime(const Consensus::Params& params) const override { return params.vDeployments[id].nTimeout; }
197 int MinActivationHeight(const Consensus::Params& params) const override { return params.vDeployments[id].min_activation_height; }
198 int Period(const Consensus::Params& params) const override {
199 if (params.vDeployments[id].nPeriod) {
200 return *params.vDeployments[id].nPeriod;
201 } else {
202 return params.nMinerConfirmationWindow;
203 }
204 }
205 int Threshold(const Consensus::Params& params) const override {
206 if (params.vDeployments[id].nThreshold) {
207 return *params.vDeployments[id].nThreshold;
208 } else {
209 return params.nRuleChangeActivationThreshold;
210 }
211 }
212
213 bool Condition(const CBlockIndex* pindex, const Consensus::Params& params) const override
214 {
215 return (((pindex->nVersion & VERSIONBITS_TOP_MASK) == VERSIONBITS_TOP_BITS) && (pindex->nVersion & Mask(params)) != 0);
216 }
217
218public:
219 explicit VersionBitsConditionChecker(Consensus::DeploymentPos id_) : id(id_) {}
220 uint32_t Mask(const Consensus::Params& params) const { return ((uint32_t)1) << params.vDeployments[id].bit; }
221};
222
223} // namespace
224

Callers 5

StateMethod · 0.85
StatisticsMethod · 0.85
StateSinceHeightMethod · 0.85
MaskMethod · 0.85
ComputeBlockVersionMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected