Skip to content
Snippets Groups Projects
Commit 53d610cb authored by inso's avatar inso
Browse files

Get parameters during initialization

parent 68de9a52
No related branches found
No related tags found
No related merge requests found
......@@ -14,12 +14,16 @@ class BlockchainParameters:
sig_period = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Maximum quantity of active certifications made by member
sig_stock = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Maximum delay in seconds a certification can wait before being expired for non-writing
sig_window = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Maximum age of a active signature (in seconds)
sig_validity = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Minimum quantity of signatures to be part of the WoT
sig_qty = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Maximum delay in seconds a certification can wait before being expired for non-writing
sig_window = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Maximum delay in seconds an identity can wait before being expired for non-writing
idty_window = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Maximum delay in seconds a membership can wait before being expired for non-writing
ms_window = attr.ib(convert=int, default=0, cmp=False, hash=False)
# Minimum decimal percent of sentries to reach to match the distance rule
xpercent = attr.ib(convert=float, default=0, cmp=False, hash=False)
# Maximum age of an active membership( in seconds)
......
import attr
import re
from ..entities import Blockchain
from ..entities import Blockchain, BlockchainParameters
from .nodes import NodesProcessor
from ..connectors import BmaConnector
from duniterpy.api import bma, errors
......@@ -175,6 +175,32 @@ class BlockchainProcessor:
blockchain = self._repo.get_one(currency=currency)
if not blockchain:
blockchain = Blockchain(currency=currency)
blockchain_parameters = BlockchainParameters()
log_stream("Requesting blockchain parameters")
try:
parameters = await self._bma_connector.get(currency, bma.blockchain.Parameters)
blockchain.parameters.ms_validity = parameters['msValidity']
blockchain.parameters.avg_gen_time = parameters['avgGenTime']
blockchain.parameters.blocks_rot = parameters['blocksRot']
blockchain.parameters.c = parameters['c']
blockchain.parameters.dt = parameters['dt']
blockchain.parameters.dt_diff_eval = parameters['dtDiffEval']
blockchain.parameters.median_time_blocks = parameters['medianTimeBlocks']
blockchain.parameters.percent_rot = parameters['percentRot']
blockchain.parameters.idty_window = parameters['idtyWindow']
blockchain.parameters.ms_window = parameters['msWindow']
blockchain.parameters.sig_window = parameters['sigWindow']
blockchain.parameters.sig_period = parameters['sigPeriod']
blockchain.parameters.sig_qty = parameters['sigQty']
blockchain.parameters.sig_stock = parameters['sigStock']
blockchain.parameters.sig_validity = parameters['sigValidity']
blockchain.parameters.sig_qty = parameters['sigQty']
blockchain.parameters.sig_period = parameters['sigPeriod']
blockchain.parameters.ud0 = parameters['ud0']
blockchain.parameters.xpercent = parameters['xpercent']
except errors.DuniterError as e:
raise
log_stream("Requesting current block")
try:
current_block = await self._bma_connector.get(currency, bma.blockchain.Current)
......
......@@ -68,7 +68,7 @@ class BlockchainsRepo:
c = self._conn.execute(request, tuple(values))
data = c.fetchone()
if data:
return Blockchain(BlockchainParameters(*data[:15]), *data[16:])
return Blockchain(BlockchainParameters(*data[:17]), *data[18:])
def get_all(self, offset=0, limit=1000, sort_by="currency", sort_order="ASC", **search) -> List[Blockchain]:
"""
......@@ -110,7 +110,7 @@ class BlockchainsRepo:
c = self._conn.execute(request)
datas = c.fetchall()
if datas:
return [Blockchain(BlockchainParameters(*data[:15]), *data[16:]) for data in datas]
return [Blockchain(BlockchainParameters(*data[:17]), *data[18:]) for data in datas]
return []
def drop(self, blockchain):
......
......@@ -24,6 +24,8 @@ CREATE TABLE IF NOT EXISTS blockchains (
sig_period INT,
sig_stock INT,
sig_window INT,
idty_window INT,
ms_window INT,
sig_validity INT,
sig_qty INT,
xpercent FLOAT(1, 6),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment