diff --git a/ct-app/core/core.py b/ct-app/core/core.py index 9a16c95b..2b4266a5 100644 --- a/ct-app/core/core.py +++ b/ct-app/core/core.py @@ -513,6 +513,9 @@ async def get_ticket_price(self): await self.ticket_price.set(price) self.debug(f"Ticket price: {price}") + self.legacy_model.budget.ticket_price = price + self.sigmoid_model.budget.ticket_price = price + async def start(self): """ Start the node. diff --git a/ct-app/core/model/budget.py b/ct-app/core/model/budget.py index 22fe4a53..f87d9284 100644 --- a/ct-app/core/model/budget.py +++ b/ct-app/core/model/budget.py @@ -12,12 +12,11 @@ def __init__( self, period: float, distribution_per_period: float, - ticket_price: float, winning_probability: float, ): self.period = period self.distribution_per_period = distribution_per_period - self.ticket_price = ticket_price + self.ticket_price = None self.winning_probability = winning_probability @property @@ -49,7 +48,8 @@ def distribution_per_period(self, value): @ticket_price.setter def ticket_price(self, value): self._ticket_price = value - TICKET_PRICE.set(value) + if value is not None: + TICKET_PRICE.set(value) @winning_probability.setter def winning_probability(self, value): @@ -61,7 +61,6 @@ def fromParameters(cls, parameters: Parameters): return cls( parameters.period, parameters.countsInPeriod, - parameters.ticketPrice, parameters.winningProbability, ) diff --git a/ct-app/core/model/economic_model_legacy.py b/ct-app/core/model/economic_model_legacy.py index 8777b250..691dfe62 100644 --- a/ct-app/core/model/economic_model_legacy.py +++ b/ct-app/core/model/economic_model_legacy.py @@ -79,7 +79,10 @@ def message_count_for_reward(self, stake: float): rewards = self.apr / 12 * self.transformed_stake(stake) denominator = self.budget.ticket_price * self.budget.winning_probability - return round(rewards / denominator * self.economic_model.proportion) + if denominator != 0: + return round(rewards / denominator * self.economic_model.proportion) + else: + return 0 @classmethod def fromParameters(cls, parameters: Parameters): diff --git a/ct-app/scripts/core_production_config.yaml b/ct-app/scripts/core_production_config.yaml index 25cfd3fd..8b19bc31 100644 --- a/ct-app/scripts/core_production_config.yaml +++ b/ct-app/scripts/core_production_config.yaml @@ -76,7 +76,6 @@ economicModel: budget: period: 2628000 countsInPeriod: 365 - ticketPrice: 0.03 # deprecated winningProbability: 1 # ============================================================================= diff --git a/ct-app/scripts/core_staging_config.yaml b/ct-app/scripts/core_staging_config.yaml index 9beb2f02..8a5409f3 100644 --- a/ct-app/scripts/core_staging_config.yaml +++ b/ct-app/scripts/core_staging_config.yaml @@ -75,7 +75,6 @@ economicModel: budget: period: 1200 countsInPeriod: 1 - ticketPrice: 0.5 # deprecated winningProbability: 1 # ============================================================================= diff --git a/ct-app/test/model/test_economic_model_sigmoid.py b/ct-app/test/model/test_economic_model_sigmoid.py index 5b7188cb..cc11a3c7 100644 --- a/ct-app/test/model/test_economic_model_sigmoid.py +++ b/ct-app/test/model/test_economic_model_sigmoid.py @@ -105,7 +105,8 @@ def test_economic_model_message_count_for_reward(): model = EconomicModelSigmoid( 10.0, [Bucket("bucket_1", 1, 1, 1), Bucket("bucket_2", 1, 1, 0.5)], 20.0, 1 ) - model.budget = Budget(60, 1, 1, 1) + model.budget = Budget(60, 1, 1) + model.budget.ticket_price = 1 assert model.apr([0.5, 0.25]) == 10 assert model.message_count_for_reward(stake, [0.5, 0.25]) == round(