@@ -767,59 +767,60 @@ def unstake_service_on_chain_from_safe(self, hash: str) -> None:
767
767
service .chain_data .staked = True
768
768
service .store ()
769
769
770
- def fund_service (
770
+ def fund_service ( # pylint: disable=too-many-arguments
771
771
self ,
772
772
hash : str ,
773
773
rpc : t .Optional [str ] = None ,
774
- min_agent_fund_requirement : t .Optional [float ] = None ,
775
- min_safe_fund_requirement : t .Optional [float ] = None ,
774
+ agent_topup : t .Optional [float ] = None ,
775
+ safe_topup : t .Optional [float ] = None ,
776
+ agent_fund_threshold : t .Optional [float ] = None ,
777
+ safe_fund_treshold : t .Optional [float ] = None ,
776
778
from_safe : bool = True ,
777
779
) -> None :
778
780
"""Fund service if required."""
779
781
service = self .create_or_load (hash = hash )
780
782
wallet = self .wallet_manager .load (ledger_type = service .ledger_config .type )
781
783
ledger_api = wallet .ledger_api (chain_type = service .ledger_config .chain , rpc = rpc )
782
- min_agent_fund_requirement = (
783
- min_agent_fund_requirement
784
+ agent_fund_threshold = (
785
+ agent_fund_threshold
784
786
or service .chain_data .user_params .fund_requirements .agent
785
787
)
786
788
787
789
for key in service .keys :
788
790
agent_balance = ledger_api .get_balance (address = key .address )
789
791
self .logger .info (f"Agent { key .address } balance: { agent_balance } " )
790
- self .logger .info (f"Required balance: { min_agent_fund_requirement } " )
791
- if agent_balance < min_agent_fund_requirement :
792
+ self .logger .info (f"Required balance: { agent_fund_threshold } " )
793
+ if agent_balance < agent_fund_threshold :
792
794
self .logger .info ("Funding agents" )
793
795
to_transfer = (
794
- service . chain_data . user_params . fund_requirements . agent
795
- - agent_balance
796
+ agent_topup
797
+ or service . chain_data . user_params . fund_requirements . agent
796
798
)
797
799
self .logger .info (f"Transferring { to_transfer } units to { key .address } " )
798
800
wallet .transfer (
799
801
to = key .address ,
800
- amount = to_transfer ,
802
+ amount = int ( to_transfer ) ,
801
803
chain_type = service .ledger_config .chain ,
802
804
from_safe = from_safe ,
803
805
)
804
806
805
807
safe_balanace = ledger_api .get_balance (service .chain_data .multisig )
806
- min_safe_fund_requirement = (
807
- min_safe_fund_requirement
808
- or service .chain_data .user_params .fund_requirements .safe
808
+ safe_fund_treshold = (
809
+ safe_fund_treshold or service .chain_data .user_params .fund_requirements .safe
809
810
)
810
811
self .logger .info (f"Safe { service .chain_data .multisig } balance: { safe_balanace } " )
811
- self .logger .info (f"Required balance: { min_safe_fund_requirement } " )
812
- if safe_balanace < min_safe_fund_requirement :
812
+ self .logger .info (f"Required balance: { safe_fund_treshold } " )
813
+ if safe_balanace < safe_fund_treshold :
813
814
self .logger .info ("Funding safe" )
814
815
to_transfer = (
815
- service .chain_data .user_params .fund_requirements .safe - safe_balanace
816
+ safe_topup or service .chain_data .user_params .fund_requirements .safe
816
817
)
817
818
self .logger .info (
818
819
f"Transferring { to_transfer } units to { service .chain_data .multisig } "
819
820
)
820
821
wallet .transfer (
821
822
to = t .cast (str , service .chain_data .multisig ),
822
- amount = to_transfer ,
823
+ amount = int ( to_transfer ) ,
823
824
chain_type = service .ledger_config .chain ,
824
825
)
825
826
@@ -838,10 +839,12 @@ async def funding_job(
838
839
await loop .run_in_executor (
839
840
executor ,
840
841
self .fund_service ,
841
- hash ,
842
- PUBLIC_RPCS [service .ledger_config .chain ],
843
- 100000000000000000 ,
844
- 500000000000000000 ,
842
+ hash , # Service hash
843
+ PUBLIC_RPCS [service .ledger_config .chain ], # RPC
844
+ 100000000000000000 , # agent_topup
845
+ 2000000000000000000 , # safe_topup
846
+ 50000000000000000 , # agent_fund_threshold
847
+ 500000000000000000 , # safe_fund_treshold
845
848
from_safe ,
846
849
)
847
850
except Exception : # pylint: disable=broad-except
0 commit comments