Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion hathor/cli/mining.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,14 @@ def execute(args: Namespace) -> None:
block.nonce, block.weight))

try:
from unittest.mock import Mock

from hathor.conf.get_settings import get_global_settings
from hathor.daa import DifficultyAdjustmentAlgorithm
from hathor.verification.verification_service import VerificationService, VertexVerifiers
settings = get_global_settings()
daa = DifficultyAdjustmentAlgorithm(settings=settings)
verifiers = VertexVerifiers.create_defaults(settings=settings, daa=daa)
verifiers = VertexVerifiers.create_defaults(settings=settings, daa=daa, feature_service=Mock())
verification_service = VerificationService(verifiers=verifiers)
verification_service.verify_without_storage(block)
except HathorError:
Expand Down
1 change: 0 additions & 1 deletion hathor/conf/mainnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,6 @@
'000045ecbab77c9a8d819ff6d26893b9da2774eee5539f17d8fc2394f82b758e',
])),
FEATURE_ACTIVATION=FeatureActivationSettings(
enable_usage=True,
features={
Feature.NOP_FEATURE_1: Criteria(
bit=0,
Expand Down
1 change: 0 additions & 1 deletion hathor/conf/mainnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ SOFT_VOIDED_TX_IDS:
- 000045ecbab77c9a8d819ff6d26893b9da2774eee5539f17d8fc2394f82b758e

FEATURE_ACTIVATION:
enable_usage: true
features:
#### First Phased Testing features on mainnet ####

Expand Down
1 change: 0 additions & 1 deletion hathor/conf/testnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@
],
FEATURE_ACTIVATION=FeatureActivationSettings(
evaluation_interval=40_320,
enable_usage=True,
default_threshold=30240,
features={
Feature.NOP_FEATURE_4: Criteria(
Expand Down
1 change: 0 additions & 1 deletion hathor/conf/testnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ CHECKPOINTS:

FEATURE_ACTIVATION:
evaluation_interval: 40_320
enable_usage: true
default_threshold: 30_240 # 30240 = 75% of evaluation_interval (40320)
features:
#### Second Phased Testing features ####
Expand Down
3 changes: 0 additions & 3 deletions hathor/feature_activation/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,6 @@ class Settings(BaseModel, validate_all=True):
# neither their values changed, to preserve history.
features: dict[Feature, Criteria] = {}

# Boolean indicating whether feature activation can be used.
enable_usage: bool = False

@validator('default_threshold')
def _validate_default_threshold(cls, default_threshold: int, values: dict[str, Any]) -> int:
"""Validates that the default_threshold is not greater than the evaluation_interval."""
Expand Down
2 changes: 1 addition & 1 deletion hathor/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -1061,7 +1061,7 @@ def tx_fully_validated(self, tx: BaseTransaction, *, quiet: bool) -> None:

def _log_feature_states(self, vertex: BaseTransaction) -> None:
"""Log features states for a block. Used as part of the Feature Activation Phased Testing."""
if not self._settings.FEATURE_ACTIVATION.enable_usage or not isinstance(vertex, Block):
if not isinstance(vertex, Block):
return

feature_descriptions = self._feature_service.get_bits_description(block=vertex)
Expand Down
7 changes: 1 addition & 6 deletions hathor/verification/block_verifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def __init__(
*,
settings: HathorSettings,
daa: DifficultyAdjustmentAlgorithm,
feature_service: FeatureService | None = None
feature_service: FeatureService,
) -> None:
self._settings = settings
self._daa = daa
Expand Down Expand Up @@ -82,11 +82,6 @@ def verify_data(self, block: Block) -> None:

def verify_mandatory_signaling(self, block: Block) -> None:
"""Verify whether this block is missing mandatory signaling for any feature."""
if not self._settings.FEATURE_ACTIVATION.enable_usage:
return

assert self._feature_service is not None

signaling_state = self._feature_service.is_signaling_mandatory_features(block)

match signaling_state:
Expand Down
4 changes: 2 additions & 2 deletions hathor/verification/vertex_verifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def create_defaults(
*,
settings: HathorSettings,
daa: DifficultyAdjustmentAlgorithm,
feature_service: FeatureService | None = None,
feature_service: FeatureService,
) -> 'VertexVerifiers':
"""
Create a VertexVerifiers instance using the default verifier for each vertex type,
Expand All @@ -60,7 +60,7 @@ def create(
settings: HathorSettings,
vertex_verifier: VertexVerifier,
daa: DifficultyAdjustmentAlgorithm,
feature_service: FeatureService | None = None,
feature_service: FeatureService,
) -> 'VertexVerifiers':
"""
Create a VertexVerifiers instance using a custom vertex_verifier.
Expand Down
3 changes: 0 additions & 3 deletions tests/feature_activation/test_feature_simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ def test_feature(self) -> None:
method calls to make sure we're executing it in the intended, most performatic way.
"""
feature_settings = FeatureSettings(
enable_usage=True,
evaluation_interval=4,
max_signal_bits=4,
default_threshold=3,
Expand Down Expand Up @@ -336,7 +335,6 @@ def test_feature(self) -> None:

def test_reorg(self) -> None:
feature_settings = FeatureSettings(
enable_usage=True,
evaluation_interval=4,
max_signal_bits=4,
default_threshold=3,
Expand Down Expand Up @@ -551,7 +549,6 @@ def test_feature_from_existing_storage(self) -> None:
Tests that feature states are correctly retrieved from an existing storage, so no recalculation is required.
"""
feature_settings = FeatureSettings(
enable_usage=True,
evaluation_interval=4,
max_signal_bits=4,
default_threshold=3,
Expand Down
17 changes: 0 additions & 17 deletions tests/tx/test_block.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,24 +138,8 @@ def test_get_feature_activation_bit_value() -> None:
assert block.get_feature_activation_bit_value(3) == 0


@pytest.mark.parametrize(
'is_signaling_mandatory_features',
[BlockIsSignaling(), BlockIsMissingSignal(feature=Feature.NOP_FEATURE_1)]
)
def test_verify_must_signal_when_feature_activation_is_disabled(is_signaling_mandatory_features: bool) -> None:
settings = Mock(spec_set=HathorSettings)
settings.FEATURE_ACTIVATION.enable_usage = False
feature_service = Mock(spec_set=FeatureService)
feature_service.is_signaling_mandatory_features = Mock(return_value=is_signaling_mandatory_features)
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock())
block = Block()

verifier.verify_mandatory_signaling(block)


def test_verify_must_signal() -> None:
settings = Mock(spec_set=HathorSettings)
settings.FEATURE_ACTIVATION.enable_usage = True
feature_service = Mock(spec_set=FeatureService)
feature_service.is_signaling_mandatory_features = Mock(
return_value=BlockIsMissingSignal(feature=Feature.NOP_FEATURE_1)
Expand All @@ -171,7 +155,6 @@ def test_verify_must_signal() -> None:

def test_verify_must_not_signal() -> None:
settings = Mock(spec_set=HathorSettings)
settings.FEATURE_ACTIVATION.enable_usage = True
feature_service = Mock(spec_set=FeatureService)
feature_service.is_signaling_mandatory_features = Mock(return_value=BlockIsSignaling())
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock())
Expand Down
4 changes: 3 additions & 1 deletion tests/tx/test_genesis.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from unittest.mock import Mock

from hathor.conf import HathorSettings
from hathor.daa import DifficultyAdjustmentAlgorithm, TestMode
from hathor.transaction.storage import TransactionMemoryStorage
Expand Down Expand Up @@ -30,7 +32,7 @@ class GenesisTest(unittest.TestCase):
def setUp(self):
super().setUp()
self._daa = DifficultyAdjustmentAlgorithm(settings=self._settings)
verifiers = VertexVerifiers.create_defaults(settings=self._settings, daa=self._daa)
verifiers = VertexVerifiers.create_defaults(settings=self._settings, daa=self._daa, feature_service=Mock())
self._verification_service = VerificationService(verifiers=verifiers)
self.storage = TransactionMemoryStorage()

Expand Down
4 changes: 3 additions & 1 deletion tests/tx/test_tx_deserialization.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from unittest.mock import Mock

from hathor.daa import DifficultyAdjustmentAlgorithm
from hathor.transaction import Block, MergeMinedBlock, Transaction, TxVersion
from hathor.transaction.token_creation_tx import TokenCreationTransaction
Expand All @@ -11,7 +13,7 @@ class _DeserializationTest(unittest.TestCase):
def setUp(self) -> None:
super().setUp()
daa = DifficultyAdjustmentAlgorithm(settings=self._settings)
verifiers = VertexVerifiers.create_defaults(settings=self._settings, daa=daa)
verifiers = VertexVerifiers.create_defaults(settings=self._settings, daa=daa, feature_service=Mock())
self._verification_service = VerificationService(verifiers=verifiers)

def test_deserialize(self):
Expand Down