From d20934d4479c294d23a59ae527103e7eec9e19fd Mon Sep 17 00:00:00 2001 From: Veselin Penev Date: Fri, 12 Jul 2024 21:52:28 +0200 Subject: [PATCH] do not reject unpaid customers for now, storage contracts are still in progress --- CHANGELOG.txt | 6 ++++-- bitdust/customer/payment.py | 13 +++++++++++-- bitdust/interface/web_html_template.py | 9 +++++++++ bitdust/main/config_defaults.py | 12 ++++++------ bitdust/services/service_blockchain_id.py | 2 +- bitdust/services/service_customer_contracts.py | 2 +- bitdust/supplier/customer_space.py | 3 ++- bitdust/supplier/customers_rejector.py | 4 +++- bitdust_forks/Bismuth/polysign/signer_ed25519.py | 10 +++++----- bitdust_forks/Bismuth/polysign/signerfactory.py | 2 +- regress/testsupport.py | 7 +++++++ 11 files changed, 50 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 6b23857..ef1f867 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,9 +1,11 @@ Change Log ========== -2024-06-17 Veselin Penev [penev.veselin@gmail.com](mailto:penev.veselin@gmail.com) +2024-07-12 Veselin Penev [penev.veselin@gmail.com](mailto:penev.veselin@gmail.com) -* refreshed requirements.txt +* do not reject unpaid customers for now, storage contracts are still in progress +* fixed ed25519 to pynacl migration in Bismuth polysign +* removed un-used files diff --git a/bitdust/customer/payment.py b/bitdust/customer/payment.py index 175b54c..71444af 100644 --- a/bitdust/customer/payment.py +++ b/bitdust/customer/payment.py @@ -66,6 +66,8 @@ def get_supplier_contracts_dir(supplier_idurl): def save_storage_contract(supplier_idurl, json_data): + if _Debug: + lg.args(_DebugLevel, s=supplier_idurl, json_data=json_data) supplier_contracts_dir = get_supplier_contracts_dir(supplier_idurl) if not os.path.isdir(supplier_contracts_dir): bpio._dirs_make(supplier_contracts_dir) @@ -85,13 +87,18 @@ def list_storage_contracts(supplier_idurl): json_data = jsn.loads_text(local_fs.ReadTextFile(contract_path)) l.append(json_data) l.sort(key=lambda json_data: utime.unpack_time(json_data['started'])) + if _Debug: + lg.args(_DebugLevel, s=supplier_idurl, l=l) return l def list_contracted_suppliers(): + customer_contracts_dir = settings.ServiceDir('service_customer_contracts') + if not os.path.isdir(customer_contracts_dir): + bpio._dirs_make(customer_contracts_dir) supplier_idurls = [] - for supplier_contracts_prefix in os.listdir(settings.ServiceDir('service_customer_contracts')): - supplier_contracts_dir = os.path.join(settings.ServiceDir('service_customer_contracts'), supplier_contracts_prefix) + for supplier_contracts_prefix in os.listdir(customer_contracts_dir): + supplier_contracts_dir = os.path.join(customer_contracts_dir, supplier_contracts_prefix) for contract_filename in os.listdir(supplier_contracts_dir): contract_path = os.path.join(supplier_contracts_dir, contract_filename) json_data = jsn.loads_text(local_fs.ReadTextFile(contract_path)) @@ -113,6 +120,8 @@ def pay_for_storage(): return False now = utime.utcnow_to_sec1970() my_customer_prefix = my_id.getIDURL().unique_name() + if _Debug: + lg.args(_DebugLevel, my_balance=cur_balance, my_customer_prefix=my_customer_prefix) for supplier_idurl in list_contracted_suppliers(): supplier_contracts = list_storage_contracts(supplier_idurl) unpaid_contracts = [] diff --git a/bitdust/interface/web_html_template.py b/bitdust/interface/web_html_template.py index a1f6074..7986989 100644 --- a/bitdust/interface/web_html_template.py +++ b/bitdust/interface/web_html_template.py @@ -64,13 +64,17 @@ Ecosystem + +
  • Wiki @@ -100,6 +104,11 @@ Get Started + + + Give Feedback + diff --git a/bitdust/main/config_defaults.py b/bitdust/main/config_defaults.py index 9e7d90c..394a604 100644 --- a/bitdust/main/config_defaults.py +++ b/bitdust/main/config_defaults.py @@ -85,7 +85,7 @@ def reset(conf_obj): conf_obj.setDefaultValue('services/backups/keep-local-copies-enabled', 'true') conf_obj.setDefaultValue('services/backups/wait-suppliers-enabled', 'true') - conf_obj.setDefaultValue('services/blockchain-id/enabled', 'false') + conf_obj.setDefaultValue('services/blockchain-id/enabled', 'true') conf_obj.setDefaultValue('services/blockchain-authority/enabled', 'false') conf_obj.setDefaultValue('services/blockchain-authority/registration-bonus-coins', 100) @@ -96,13 +96,13 @@ def reset(conf_obj): conf_obj.setDefaultValue('services/blockchain-explorer/host', '127.0.0.1') conf_obj.setDefaultValue('services/blockchain-explorer/web-port', 19080) - conf_obj.setDefaultValue('services/bismuth-blockchain/enabled', 'false') + conf_obj.setDefaultValue('services/bismuth-blockchain/enabled', 'true') conf_obj.setDefaultValue('services/bismuth-node/enabled', 'false') conf_obj.setDefaultValue('services/bismuth-node/host', '127.0.0.1') conf_obj.setDefaultValue('services/bismuth-node/tcp-port', 15658) - conf_obj.setDefaultValue('services/bismuth-wallet/enabled', 'false') + conf_obj.setDefaultValue('services/bismuth-wallet/enabled', 'true') conf_obj.setDefaultValue('services/bismuth-pool/enabled', 'false') conf_obj.setDefaultValue('services/bismuth-pool/host', '127.0.0.1') @@ -110,7 +110,7 @@ def reset(conf_obj): conf_obj.setDefaultValue('services/bismuth-miner/enabled', 'false') - conf_obj.setDefaultValue('services/bismuth-identity/enabled', 'false') + conf_obj.setDefaultValue('services/bismuth-identity/enabled', 'true') conf_obj.setDefaultValue('services/broadcasting/enabled', 'false') conf_obj.setDefaultValue('services/broadcasting/routing-enabled', 'false') @@ -122,7 +122,7 @@ def reset(conf_obj): conf_obj.setDefaultValue('services/customer/needed-space', diskspace.MakeStringFromBytes(settings.DefaultNeededBytes())) conf_obj.setDefaultValue('services/customer/suppliers-number', settings.DefaultDesiredSuppliers()) - conf_obj.setDefaultValue('services/customer-contracts/enabled', 'false') + conf_obj.setDefaultValue('services/customer-contracts/enabled', 'true') conf_obj.setDefaultValue('services/customer-family/enabled', 'true') @@ -247,7 +247,7 @@ def reset(conf_obj): conf_obj.setDefaultValue('services/supplier/enabled', 'true') conf_obj.setDefaultValue('services/supplier/donated-space', diskspace.MakeStringFromBytes(settings.DefaultDonatedBytes())) - conf_obj.setDefaultValue('services/supplier-contracts/enabled', 'false') + conf_obj.setDefaultValue('services/supplier-contracts/enabled', 'true') conf_obj.setDefaultValue('services/supplier-contracts/initial-duration-hours', 6) conf_obj.setDefaultValue('services/supplier-contracts/duration-raise-factor', 2.0) diff --git a/bitdust/services/service_blockchain_id.py b/bitdust/services/service_blockchain_id.py index 7008337..d21d4b8 100644 --- a/bitdust/services/service_blockchain_id.py +++ b/bitdust/services/service_blockchain_id.py @@ -66,7 +66,7 @@ def start(self): def stop(self): from bitdust.blockchain import blockchain_registrator - if self.sync_my_transactions_loop.running: + if self.sync_my_transactions_loop and self.sync_my_transactions_loop.running: self.sync_my_transactions_loop.stop() self.sync_my_transactions_loop = None blockchain_registrator.A('shutdown') diff --git a/bitdust/services/service_customer_contracts.py b/bitdust/services/service_customer_contracts.py index 15de88c..0edddcb 100644 --- a/bitdust/services/service_customer_contracts.py +++ b/bitdust/services/service_customer_contracts.py @@ -55,7 +55,7 @@ def start(self): return True def stop(self): - if self.payment_loop.running: + if self.payment_loop and self.payment_loop.running: self.payment_loop.stop() self.payment_loop = None return True diff --git a/bitdust/supplier/customer_space.py b/bitdust/supplier/customer_space.py index 7e58003..f864b21 100644 --- a/bitdust/supplier/customer_space.py +++ b/bitdust/supplier/customer_space.py @@ -953,7 +953,8 @@ def on_service_supplier_request(json_payload, newpacket, info): current_contract = {} if current_contract and current_contract.get('deny'): lg.warn('contract processing denied with user %s' % customer_idurl) - return p2p_service.SendFail(newpacket, 'deny:' + jsn.dumps(current_contract)) + # TODO: disabled for now... + # return p2p_service.SendFail(newpacket, 'deny:' + jsn.dumps(current_contract)) # check if this is a new customer or an existing one # for existing one, we have to first release currently allocated resources if customer_idurl in current_customers: diff --git a/bitdust/supplier/customers_rejector.py b/bitdust/supplier/customers_rejector.py index 080e849..ea49f63 100644 --- a/bitdust/supplier/customers_rejector.py +++ b/bitdust/supplier/customers_rejector.py @@ -280,7 +280,9 @@ def doVerifyStorageContracts(self, *args, **kwargs): rejected_customers = storage_contract.verify_all_current_customers_contracts() if rejected_customers: lg.warn('found unpaid customers: %r' % rejected_customers) - self.automat('found-unpaid-customers', rejected_customers) + # TODO: disabled for now... + # self.automat('found-unpaid-customers', rejected_customers) + self.automat('contracts-verified') else: lg.info('all customers have valid contracts') self.automat('contracts-verified') diff --git a/bitdust_forks/Bismuth/polysign/signer_ed25519.py b/bitdust_forks/Bismuth/polysign/signer_ed25519.py index 14be555..3f5ea6d 100644 --- a/bitdust_forks/Bismuth/polysign/signer_ed25519.py +++ b/bitdust_forks/Bismuth/polysign/signer_ed25519.py @@ -9,7 +9,7 @@ from typing import Union import base58 -import ed25519 +from nacl.signing import SigningKey, VerifyKey from polysign.signer import Signer, SignerType, SignerSubType @@ -60,10 +60,10 @@ def from_seed(self, seed: str='', subtype: SignerSubType=SignerSubType.MAINNET_R try: # print("SEED", seed) # TODO: check flow, there may be many unnecessary hex-byte-hex-bytes conversions from top to bottom - key = ed25519.SigningKey(bytes.fromhex(seed)) + key = SigningKey(bytes.fromhex(seed)) hexa = key.to_ascii(encoding="hex").decode('utf-8') # print("ED25519 Privk Key", hexa) # e5b42f3c-3fe02e16-1d42ff47-07a174a5 715b2badc7d4d3aebbea9081bd9123d5 - verifying_key = key.get_verifying_key() + verifying_key = key.verify_key public_key = verifying_key.to_ascii(encoding="hex").decode('utf-8') # public_key = hexa[32:] # print("ED25519 Public Key", public_key) @@ -105,8 +105,8 @@ def verify_signature(cls, signature: Union[bytes, str], public_key: Union[bytes, """Verify signature from raw signature. Address may be used to determine the sig subtype""" try: # print("verif", signature, public_key, len(public_key)) - verifying_key = ed25519.VerifyingKey(public_key) - verifying_key.verify(signature, buffer) + verifying_key = VerifyKey(public_key) + verifying_key.verify(buffer, signature) except Exception as e: print(e) raise ValueError(f"Invalid ED25519 signature from {address}") diff --git a/bitdust_forks/Bismuth/polysign/signerfactory.py b/bitdust_forks/Bismuth/polysign/signerfactory.py index a637af0..7c2590b 100644 --- a/bitdust_forks/Bismuth/polysign/signerfactory.py +++ b/bitdust_forks/Bismuth/polysign/signerfactory.py @@ -54,7 +54,7 @@ def address_to_signer(cls, address: str) -> Type[Signer]: else: return SignerECDSA - raise ValueError("Unsupported Address type") + raise ValueError("Unsupported Address type: %r" % address) @classmethod def address_is_valid(cls, address: str) -> bool: diff --git a/regress/testsupport.py b/regress/testsupport.py index 80e8d6d..c37cc13 100644 --- a/regress/testsupport.py +++ b/regress/testsupport.py @@ -757,6 +757,7 @@ def start_dht_seed(node, wait_seconds=0, dht_seeds='', attached_layers='', verbo # use shorter key to run tests faster cmd += 'bitdust set personal/private-key-size 1024;' # disable unrelated services + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/customer/enabled false;' cmd += 'bitdust set services/supplier/enabled false;' cmd += 'bitdust set services/message-broker/enabled false;' @@ -793,6 +794,7 @@ async def start_identity_server_async(node, loop, verbose=True): cmd += 'bitdust set logs/packet-enabled true;' cmd += 'bitdust set services/gateway/p2p-timeout 20;' cmd += 'bitdust set personal/private-key-size 1024;' + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/customer/enabled false;' cmd += 'bitdust set services/supplier/enabled false;' cmd += 'bitdust set services/message-broker/enabled false;' @@ -825,6 +827,7 @@ async def start_stun_server_async(node, loop, dht_seeds=''): # use short key to run tests faster cmd += 'bitdust set personal/private-key-size 1024;' # disable unrelated services + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/customer/enabled false;' cmd += 'bitdust set services/supplier/enabled false;' cmd += 'bitdust set services/message-broker/enabled false;' @@ -862,6 +865,7 @@ async def start_proxy_server_async( # use short key to run tests faster cmd += 'bitdust set personal/private-key-size 1024;' # disable unrelated services + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/customer/enabled false;' cmd += 'bitdust set services/supplier/enabled false;' cmd += 'bitdust set services/proxy-transport/enabled false;' @@ -919,6 +923,7 @@ async def start_supplier_async( # use short key to run tests faster cmd += 'bitdust set personal/private-key-size 1024;' # disable unrelated services + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/customer/enabled false;' cmd += 'bitdust set services/proxy-server/enabled false;' # configure ID servers @@ -984,6 +989,7 @@ async def start_message_broker_async( # use short key to run tests faster cmd += 'bitdust set personal/private-key-size 1024;' # disable unrelated services + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/customer/enabled false;' cmd += 'bitdust set services/supplier/enabled false;' cmd += 'bitdust set services/proxy-server/enabled false;' @@ -1066,6 +1072,7 @@ async def start_customer_async( # use short key to run tests faster cmd += 'bitdust set personal/private-key-size 1024;' # disable unrelated services + cmd += 'bitdust set services/bismuth-blockchain/enabled false;' cmd += 'bitdust set services/supplier/enabled false;' cmd += 'bitdust set services/message-broker/enabled false;' cmd += 'bitdust set services/proxy-server/enabled false;'