Skip to content

Commit 1aaba6a

Browse files
Merge pull request #125 from valory-xyz/fix/funding
Fix service funding top up value calculations
2 parents e94b992 + dd0296c commit 1aaba6a

File tree

5 files changed

+63
-57
lines changed

5 files changed

+63
-57
lines changed

electron/install.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const process = require('process');
77
const { spawnSync } = require('child_process');
88
const Docker = require('dockerode');
99

10-
const Version = '0.1.0rc21';
10+
const Version = '0.1.0rc22';
1111
const OperateDirectory = `${os.homedir()}/.operate`;
1212
const VenvDir = `${OperateDirectory}/venv`;
1313
const VersionFile = `${OperateDirectory}/version.txt`;

operate/services/manage.py

+24-21
Original file line numberDiff line numberDiff line change
@@ -767,59 +767,60 @@ def unstake_service_on_chain_from_safe(self, hash: str) -> None:
767767
service.chain_data.staked = True
768768
service.store()
769769

770-
def fund_service(
770+
def fund_service( # pylint: disable=too-many-arguments
771771
self,
772772
hash: str,
773773
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,
776778
from_safe: bool = True,
777779
) -> None:
778780
"""Fund service if required."""
779781
service = self.create_or_load(hash=hash)
780782
wallet = self.wallet_manager.load(ledger_type=service.ledger_config.type)
781783
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
784786
or service.chain_data.user_params.fund_requirements.agent
785787
)
786788

787789
for key in service.keys:
788790
agent_balance = ledger_api.get_balance(address=key.address)
789791
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:
792794
self.logger.info("Funding agents")
793795
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
796798
)
797799
self.logger.info(f"Transferring {to_transfer} units to {key.address}")
798800
wallet.transfer(
799801
to=key.address,
800-
amount=to_transfer,
802+
amount=int(to_transfer),
801803
chain_type=service.ledger_config.chain,
802804
from_safe=from_safe,
803805
)
804806

805807
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
809810
)
810811
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:
813814
self.logger.info("Funding safe")
814815
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
816817
)
817818
self.logger.info(
818819
f"Transferring {to_transfer} units to {service.chain_data.multisig}"
819820
)
820821
wallet.transfer(
821822
to=t.cast(str, service.chain_data.multisig),
822-
amount=to_transfer,
823+
amount=int(to_transfer),
823824
chain_type=service.ledger_config.chain,
824825
)
825826

@@ -838,10 +839,12 @@ async def funding_job(
838839
await loop.run_in_executor(
839840
executor,
840841
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
845848
from_safe,
846849
)
847850
except Exception: # pylint: disable=broad-except

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,5 @@
5454
"start": "electron .",
5555
"build": "rm -rf dist/ && electron-builder build"
5656
},
57-
"version": "0.1.0-rc21"
57+
"version": "0.1.0-rc22"
5858
}

poetry.lock

+36-33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "olas-operate-middleware"
3-
version = "0.1.0-rc21"
3+
version = "0.1.0-rc22"
44
description = ""
55
authors = ["David Vilela <[email protected]>", "Viraj Patel <[email protected]>"]
66
readme = "README.md"

0 commit comments

Comments
 (0)