diff --git a/packages/packages.json b/packages/packages.json index 3880dcab..4f23d744 100644 --- a/packages/packages.json +++ b/packages/packages.json @@ -2,18 +2,18 @@ "dev": { "connection/valory/websocket_client/0.1.0": "bafybeiflmystocxaqblhpzqlcop2vkhsknpzjx2jomohomaxamwskeokzm", "skill/valory/contract_subscription/0.1.0": "bafybeicyugrkx5glat4p4ezwf6i7oduh26eycfie6ftd4uxrknztzl3ik4", - "agent/valory/mech/0.1.0": "bafybeie5mmcpvopfn7tjnbwlpctqorevyn5qdxyarhcpecwozsl3wt6tei", - "skill/valory/mech_abci/0.1.0": "bafybeie23zqol44pvz7clarq5jecrbpl2fn6ltlnf6wy62dgnn7b4ycraa", - "contract/valory/agent_mech/0.1.0": "bafybeig7zpqhcpt6z4eutedx6prciuq4g7mpadw636zkkcx3ach6oytdry", - "service/valory/mech/0.1.0": "bafybeiasbyxwemb64hgayleozdjv2otfgma7hq2xxjr36alfxc7o4ohpza", + "agent/valory/mech/0.1.0": "bafybeigpvlyzu2d6xjf2ij4gvmtefrcn5rmmzp237mpsb7ejdpuzskvspu", + "skill/valory/mech_abci/0.1.0": "bafybeicekwscm72ujrwc5vzbgnshoxjna7a4vluugiylh4gq7r4yaskuly", + "contract/valory/agent_mech/0.1.0": "bafybeiepxumywg6z2zapqzc3bg3iey23cmlgjzxisqox5j74o5i2texr5e", + "service/valory/mech/0.1.0": "bafybeiag3d54b7spafsicjx64ymh5hpmtwoggecnshrdndf67zjtlcksum", "protocol/valory/acn_data_share/0.1.0": "bafybeih5ydonnvrwvy2ygfqgfabkr47s4yw3uqxztmwyfprulwfsoe7ipq", - "skill/valory/task_submission_abci/0.1.0": "bafybeifb3vw25nlz2tecbpsbzrynwva2ey4r624htty62rjg6lrqwmh6l4", - "skill/valory/task_execution/0.1.0": "bafybeidwzdfodrb6el7hjtrt4fodw6qpcptnmfnpfcagf4qi5qvoeocu4i", + "skill/valory/task_submission_abci/0.1.0": "bafybeidned5sysejuakraqa4ssmc76chqnvyu7qqg4aywzddsayyooqflm", + "skill/valory/task_execution/0.1.0": "bafybeid7kneedwb3hu2nlsjusxgkfq4mvnsobxsbuqpfwkxnaeor6ffbpi", "contract/valory/agent_registry/0.1.0": "bafybeiargayav6yiztdnwzejoejstcx4idssch2h4f5arlgtzj3tgsgfmu", "protocol/valory/websocket_client/0.1.0": "bafybeih43mnztdv3v2hetr2k3gezg7d3yj4ur7cxdvcyaqhg65e52s5sf4", "skill/valory/websocket_client/0.1.0": "bafybeidwntmkk4b2ixq5454ycbkknclqx7a6vpn7aqpm2nw3duszqrxvta", "contract/valory/hash_checkpoint/0.1.0": "bafybeieys27hidb5m267jwqsxdgorf5v37o6lvrfy2oga557stjn4xgoaa", - "skill/valory/subscription_abci/0.1.0": "bafybeibgnw53s5nh6up35z6fgjisrrvrlt4nnjmx3ia7fcgwpmcprvja5u" + "skill/valory/subscription_abci/0.1.0": "bafybeick4zicydp42ieum74wekcz25uim3uyt7vugzjgfzsriqhswlxfti" }, "third_party": { "skill/valory/transaction_settlement_abci/0.1.0": "bafybeiaefgqbs7zsn5xe5kdwrujj7ivygkn3ujpw6crnvi3knvxw75qmja", diff --git a/packages/valory/agents/mech/aea-config.yaml b/packages/valory/agents/mech/aea-config.yaml index 5234f94c..c9d75b68 100644 --- a/packages/valory/agents/mech/aea-config.yaml +++ b/packages/valory/agents/mech/aea-config.yaml @@ -15,7 +15,7 @@ connections: - valory/p2p_libp2p_client:0.1.0:bafybeihge56dn3xep2dzomu7rtvbgo4uc2qqh7ljl3fubqdi2lq44gs5lq - valory/websocket_client:0.1.0:bafybeiflmystocxaqblhpzqlcop2vkhsknpzjx2jomohomaxamwskeokzm contracts: -- valory/agent_mech:0.1.0:bafybeig7zpqhcpt6z4eutedx6prciuq4g7mpadw636zkkcx3ach6oytdry +- valory/agent_mech:0.1.0:bafybeiepxumywg6z2zapqzc3bg3iey23cmlgjzxisqox5j74o5i2texr5e - valory/agent_registry:0.1.0:bafybeiargayav6yiztdnwzejoejstcx4idssch2h4f5arlgtzj3tgsgfmu - valory/gnosis_safe:0.1.0:bafybeidll7frtdsq2ckiluazkwk4zpkp7natt4kdejjehwvykqwzyuf6ei - valory/gnosis_safe_proxy_factory:0.1.0:bafybeidvcgnbbmjtha6tl7st2ysna2l3iiqfhnzjfasyvml5unecozeeka @@ -38,12 +38,12 @@ skills: - valory/abstract_abci:0.1.0:bafybeiflcfufixmsrhobf56bn5745m2iipcfqyulwk2qegtnagb3kvaaxi - valory/abstract_round_abci:0.1.0:bafybeiaqcl7h2famylusiffigwem7tevkcsyocdu5xd42jkmgq6kvowzgq - valory/contract_subscription:0.1.0:bafybeicyugrkx5glat4p4ezwf6i7oduh26eycfie6ftd4uxrknztzl3ik4 -- valory/mech_abci:0.1.0:bafybeie23zqol44pvz7clarq5jecrbpl2fn6ltlnf6wy62dgnn7b4ycraa +- valory/mech_abci:0.1.0:bafybeicekwscm72ujrwc5vzbgnshoxjna7a4vluugiylh4gq7r4yaskuly - valory/registration_abci:0.1.0:bafybeic2ynseiak7jpta7jfwuqwyp453b4p7lolr4wihxmpn633uekv5am - valory/reset_pause_abci:0.1.0:bafybeidzajbe3erygeh2xbd6lrjv7nsptznjuzrt24ykgvhgotdeyhfnba -- valory/subscription_abci:0.1.0:bafybeibgnw53s5nh6up35z6fgjisrrvrlt4nnjmx3ia7fcgwpmcprvja5u -- valory/task_execution:0.1.0:bafybeidwzdfodrb6el7hjtrt4fodw6qpcptnmfnpfcagf4qi5qvoeocu4i -- valory/task_submission_abci:0.1.0:bafybeifb3vw25nlz2tecbpsbzrynwva2ey4r624htty62rjg6lrqwmh6l4 +- valory/subscription_abci:0.1.0:bafybeick4zicydp42ieum74wekcz25uim3uyt7vugzjgfzsriqhswlxfti +- valory/task_execution:0.1.0:bafybeid7kneedwb3hu2nlsjusxgkfq4mvnsobxsbuqpfwkxnaeor6ffbpi +- valory/task_submission_abci:0.1.0:bafybeidned5sysejuakraqa4ssmc76chqnvyu7qqg4aywzddsayyooqflm - valory/termination_abci:0.1.0:bafybeie4zvjfxvdu7qrulmur3chpjz3kpj5m4bjsxvpk4gvj5zbyyayfaa - valory/transaction_settlement_abci:0.1.0:bafybeiaefgqbs7zsn5xe5kdwrujj7ivygkn3ujpw6crnvi3knvxw75qmja - valory/websocket_client:0.1.0:bafybeidwntmkk4b2ixq5454ycbkknclqx7a6vpn7aqpm2nw3duszqrxvta @@ -180,6 +180,8 @@ models: manual_gas_limit: ${int:1000000} service_owner_share: ${float:0.1} profit_split_freq: ${int:1} + agent_funding_amount: ${int:200000000000000000} + minimum_agent_balance: ${int:100000000000000000} mech_to_subscription: ${list:[["0x77af31De935740567Cf4fF1986D04B2c964A786a",["0x0000000000000000000000000000000000000000","1"]]]} hash_checkpoint_address: ${str:0x694e62BDF7Ff510A4EE66662cf4866A961a31653} setup: diff --git a/packages/valory/contracts/agent_mech/build/AgentMech.json b/packages/valory/contracts/agent_mech/build/AgentMech.json index 9efb8c20..a454ce60 100644 --- a/packages/valory/contracts/agent_mech/build/AgentMech.json +++ b/packages/valory/contracts/agent_mech/build/AgentMech.json @@ -86,12 +86,6 @@ { "anonymous": false, "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -108,6 +102,25 @@ "name": "Deliver", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "taskHash", + "type": "bytes32" + } + ], + "name": "Perform", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -223,11 +236,6 @@ "name": "requestId", "type": "uint256" }, - { - "internalType": "uint256", - "name": "requestIdWithNonce", - "type": "uint256" - }, { "internalType": "bytes", "name": "data", @@ -734,11 +742,6 @@ "internalType": "uint256", "name": "requestId", "type": "uint256" - }, - { - "internalType": "uint256", - "name": "requestIdWithNonce", - "type": "uint256" } ], "stateMutability": "payable", diff --git a/packages/valory/contracts/agent_mech/contract.yaml b/packages/valory/contracts/agent_mech/contract.yaml index 0189d98f..7122747e 100644 --- a/packages/valory/contracts/agent_mech/contract.yaml +++ b/packages/valory/contracts/agent_mech/contract.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: __init__.py: bafybeigpq5lxfj2aza6ok3fjuywtdafelkbvoqwaits7regfbgu4oynmku - build/AgentMech.json: bafybeigo2x7njyx5ttawfrf5pdjewe2dbh2u56vra7bm6vrohuu4xcmz3u + build/AgentMech.json: bafybeifw3whznwg6i6sa6cicivsfmqchfwfdodxwaqzepd3h6otq5qpktq contract.py: bafybeiawilbhsix4ui3whuoyk6sgundbbpeatbidv4krp2c45cpayhfu7m fingerprint_ignore_patterns: [] class_name: AgentMechContract diff --git a/packages/valory/services/mech/service.yaml b/packages/valory/services/mech/service.yaml index bcde8c2c..26f350a5 100644 --- a/packages/valory/services/mech/service.yaml +++ b/packages/valory/services/mech/service.yaml @@ -7,7 +7,7 @@ license: Apache-2.0 fingerprint: README.md: bafybeif7ia4jdlazy6745ke2k2x5yoqlwsgwr6sbztbgqtwvs3ndm2p7ba fingerprint_ignore_patterns: [] -agent: valory/mech:0.1.0:bafybeie5mmcpvopfn7tjnbwlpctqorevyn5qdxyarhcpecwozsl3wt6tei +agent: valory/mech:0.1.0:bafybeigpvlyzu2d6xjf2ij4gvmtefrcn5rmmzp237mpsb7ejdpuzskvspu number_of_agents: 4 deployment: agent: @@ -58,6 +58,8 @@ type: skill profit_split_freq: ${PROFIT_SPLIT_FREQ:int:100} hash_checkpoint_address: ${CHECKPOINT_ADDRESS:str:0x0000000000000000000000000000000000000000} mech_to_subscription: ${MECH_TO_SUBSCRIPTION:list:[["0x77af31De935740567Cf4fF1986D04B2c964A786a",["0x0000000000000000000000000000000000000000","1"]]]} + agent_funding_amount: ${AGENT_FUNDING_AMOUNT:int:200000000000000000} + minimum_agent_balance: ${MINIMUM_AGENT_BALANCE:int:100000000000000000} 1: models: params: @@ -90,6 +92,8 @@ type: skill hash_checkpoint_address: ${CHECKPOINT_ADDRESS:str:0x0000000000000000000000000000000000000000} service_endpoint_base: ${SERVICE_ENDPOINT_BASE:str:https://dummy_service.autonolas.tech/} mech_to_subscription: ${MECH_TO_SUBSCRIPTION:list:[["0x77af31De935740567Cf4fF1986D04B2c964A786a",["0x0000000000000000000000000000000000000000","1"]]]} + agent_funding_amount: ${AGENT_FUNDING_AMOUNT:int:200000000000000000} + minimum_agent_balance: ${MINIMUM_AGENT_BALANCE:int:100000000000000000} 2: models: params: @@ -122,6 +126,8 @@ type: skill profit_split_freq: ${PROFIT_SPLIT_FREQ:int:100} hash_checkpoint_address: ${CHECKPOINT_ADDRESS:str:0x0000000000000000000000000000000000000000} mech_to_subscription: ${MECH_TO_SUBSCRIPTION:list:[["0x77af31De935740567Cf4fF1986D04B2c964A786a",["0x0000000000000000000000000000000000000000","1"]]]} + agent_funding_amount: ${AGENT_FUNDING_AMOUNT:int:200000000000000000} + minimum_agent_balance: ${MINIMUM_AGENT_BALANCE:int:100000000000000000} 3: models: params: @@ -154,6 +160,8 @@ type: skill hash_checkpoint_address: ${CHECKPOINT_ADDRESS:str:0x0000000000000000000000000000000000000000} service_endpoint_base: ${SERVICE_ENDPOINT_BASE:str:https://dummy_service.autonolas.tech/} mech_to_subscription: ${MECH_TO_SUBSCRIPTION:list:[["0x77af31De935740567Cf4fF1986D04B2c964A786a",["0x0000000000000000000000000000000000000000","1"]]]} + agent_funding_amount: ${AGENT_FUNDING_AMOUNT:int:200000000000000000} + minimum_agent_balance: ${MINIMUM_AGENT_BALANCE:int:100000000000000000} --- public_id: valory/task_execution:0.1.0 type: skill diff --git a/packages/valory/skills/mech_abci/skill.yaml b/packages/valory/skills/mech_abci/skill.yaml index 25ccba9f..7513e892 100644 --- a/packages/valory/skills/mech_abci/skill.yaml +++ b/packages/valory/skills/mech_abci/skill.yaml @@ -23,10 +23,10 @@ skills: - valory/abstract_round_abci:0.1.0:bafybeiaqcl7h2famylusiffigwem7tevkcsyocdu5xd42jkmgq6kvowzgq - valory/registration_abci:0.1.0:bafybeic2ynseiak7jpta7jfwuqwyp453b4p7lolr4wihxmpn633uekv5am - valory/reset_pause_abci:0.1.0:bafybeidzajbe3erygeh2xbd6lrjv7nsptznjuzrt24ykgvhgotdeyhfnba -- valory/task_submission_abci:0.1.0:bafybeifb3vw25nlz2tecbpsbzrynwva2ey4r624htty62rjg6lrqwmh6l4 +- valory/task_submission_abci:0.1.0:bafybeidned5sysejuakraqa4ssmc76chqnvyu7qqg4aywzddsayyooqflm - valory/termination_abci:0.1.0:bafybeie4zvjfxvdu7qrulmur3chpjz3kpj5m4bjsxvpk4gvj5zbyyayfaa - valory/transaction_settlement_abci:0.1.0:bafybeiaefgqbs7zsn5xe5kdwrujj7ivygkn3ujpw6crnvi3knvxw75qmja -- valory/subscription_abci:0.1.0:bafybeibgnw53s5nh6up35z6fgjisrrvrlt4nnjmx3ia7fcgwpmcprvja5u +- valory/subscription_abci:0.1.0:bafybeick4zicydp42ieum74wekcz25uim3uyt7vugzjgfzsriqhswlxfti behaviours: main: args: {} @@ -165,6 +165,8 @@ models: service_owner_share: 0.1 profit_split_freq: 100 serious_slash_unit_amount: 8000000000000000 + agent_funding_amount: 200000000000000000 + minimum_agent_balance: 100000000000000000 mech_to_subscription: - - '0x77af31De935740567Cf4fF1986D04B2c964A786a' - - '0x0000000000000000000000000000000000000000' diff --git a/packages/valory/skills/subscription_abci/skill.yaml b/packages/valory/skills/subscription_abci/skill.yaml index 0576281e..fd350f3a 100644 --- a/packages/valory/skills/subscription_abci/skill.yaml +++ b/packages/valory/skills/subscription_abci/skill.yaml @@ -18,7 +18,7 @@ fingerprint: fingerprint_ignore_patterns: [] connections: [] contracts: -- valory/agent_mech:0.1.0:bafybeig7zpqhcpt6z4eutedx6prciuq4g7mpadw636zkkcx3ach6oytdry +- valory/agent_mech:0.1.0:bafybeiepxumywg6z2zapqzc3bg3iey23cmlgjzxisqox5j74o5i2texr5e - valory/gnosis_safe:0.1.0:bafybeidll7frtdsq2ckiluazkwk4zpkp7natt4kdejjehwvykqwzyuf6ei - valory/multisend:0.1.0:bafybeig5byt5urg2d2bsecufxe5ql7f4mezg3mekfleeh32nmuusx66p4y protocols: diff --git a/packages/valory/skills/task_execution/skill.yaml b/packages/valory/skills/task_execution/skill.yaml index 586eb3f3..1ceb554a 100644 --- a/packages/valory/skills/task_execution/skill.yaml +++ b/packages/valory/skills/task_execution/skill.yaml @@ -20,7 +20,7 @@ connections: - valory/ipfs:0.1.0:bafybeihx7wb5hngjobw2salzqqryrhxvmxfuw7o2npjyqd2talmh2flqeq - valory/p2p_libp2p_client:0.1.0:bafybeihge56dn3xep2dzomu7rtvbgo4uc2qqh7ljl3fubqdi2lq44gs5lq contracts: -- valory/agent_mech:0.1.0:bafybeig7zpqhcpt6z4eutedx6prciuq4g7mpadw636zkkcx3ach6oytdry +- valory/agent_mech:0.1.0:bafybeiepxumywg6z2zapqzc3bg3iey23cmlgjzxisqox5j74o5i2texr5e protocols: - valory/acn_data_share:0.1.0:bafybeih5ydonnvrwvy2ygfqgfabkr47s4yw3uqxztmwyfprulwfsoe7ipq - valory/contract_api:1.0.0:bafybeialhbjvwiwcnqq3ysxcyemobcbie7xza66gaofcvla5njezkvhcka diff --git a/packages/valory/skills/task_submission_abci/behaviours.py b/packages/valory/skills/task_submission_abci/behaviours.py index 40885c01..409956cc 100644 --- a/packages/valory/skills/task_submission_abci/behaviours.py +++ b/packages/valory/skills/task_submission_abci/behaviours.py @@ -333,7 +333,7 @@ def get_split_profit_txs( self.context.logger.info(f"Splitting profits {self.mech_addresses}.") txs = [] for mech_address in self.mech_addresses: - profits = yield from self._get_profits(mech_address) + profits = yield from self._get_balance(mech_address) if profits is None: self.context.logger.error( f"Could not get profits from mech {mech_address}. Don't split profits." @@ -365,15 +365,15 @@ def get_split_profit_txs( return txs - def _get_profits(self, address: str) -> Generator[None, None, int]: - """Get the profits.""" + def _get_balance(self, address: str) -> Generator[None, None, Optional[int]]: + """Get the balance for the provided address.""" ledger_api_response = yield from self.get_ledger_api_response( performative=LedgerApiMessage.Performative.GET_STATE, # type: ignore ledger_callable="get_balance", account=address, ) if ledger_api_response.performative != LedgerApiMessage.Performative.STATE: - return False # transition to await top-up round + return None balance = cast(int, ledger_api_response.state.body.get("get_balance_result")) return balance @@ -396,9 +396,35 @@ def _split_funds( return None funds_by_address = {} + agent_funding_amounts = yield from self._get_agent_funding_amounts() + if agent_funding_amounts is None: + self.context.logger.warning( + "Could not get agent funding amounts. Don't split profits." + ) + return None + + funds_by_address.update(agent_funding_amounts) + total_required_amount_for_agents = sum(agent_funding_amounts.values()) + if total_required_amount_for_agents > profits: + self.context.logger.warning( + f"Total required amount for agents {total_required_amount_for_agents} is greater than profits {profits}. " + f"Splitting all the funds among the agents." + ) + # if it's the case that the required amount for the agents is greater than the profits + # split all the funds among the agent, proportional to their intended funding amount + for agent, amount in agent_funding_amounts.items(): + agent_share = int((amount / total_required_amount_for_agents) * profits) + funds_by_address[agent] = agent_share + + # return here because we don't have any funds left to split + return funds_by_address + + # if we have funds left after splitting among the agents, + # split the rest among the service owner and the operator + profits = profits - total_required_amount_for_agents + service_owner_share = int(self.params.service_owner_share * profits) funds_by_address[service_owner] = service_owner_share - operator_share = profits - service_owner_share funds_by_operator = yield from self._get_funds_by_operator(operator_share) if funds_by_operator is None: @@ -527,6 +553,38 @@ def _accumulate_reqs_by_operator( reqs_by_operator[operator] += reqs return reqs_by_operator + def _get_agent_balances(self) -> Generator[None, None, Optional[Dict[str, int]]]: + """Get the agent balances.""" + balances = {} + for agent in self.synchronized_data.all_participants: + balance = yield from self._get_balance(agent) + if balance is None: + self.context.logger.warning( + f"Could not get balance for agent {agent}. Skipping re-funding." + ) + return None + balances[agent] = balance + + return balances + + def _get_agent_funding_amounts( + self, + ) -> Generator[None, None, Optional[Dict[str, int]]]: + """Get the agent balances.""" + agent_funding_amounts = {} + agent_balances = yield from self._get_agent_balances() + if agent_balances is None: + self.context.logger.warning( + "Could not get agent balances. Skipping re-funding." + ) + return None + + for agent, balance in agent_balances.items(): + if balance < self.params.minimum_agent_balance: + agent_funding_amounts[agent] = self.params.agent_funding_amount + + return agent_funding_amounts + class TrackingBehaviour(DeliverBehaviour, ABC): """Behaviour to track the execution of a task.""" diff --git a/packages/valory/skills/task_submission_abci/models.py b/packages/valory/skills/task_submission_abci/models.py index a40d68d9..3c0d1ef8 100644 --- a/packages/valory/skills/task_submission_abci/models.py +++ b/packages/valory/skills/task_submission_abci/models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2023 Valory AG +# Copyright 2023-2024 Valory AG # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -74,6 +74,8 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: self.hash_checkpoint_address = self._ensure( "hash_checkpoint_address", kwargs, str ) + self.minimum_agent_balance = self._ensure("minimum_agent_balance", kwargs, int) + self.agent_funding_amount = self._ensure("agent_funding_amount", kwargs, int) super().__init__(*args, **kwargs) @classmethod diff --git a/packages/valory/skills/task_submission_abci/skill.yaml b/packages/valory/skills/task_submission_abci/skill.yaml index 71094b9c..f96be887 100644 --- a/packages/valory/skills/task_submission_abci/skill.yaml +++ b/packages/valory/skills/task_submission_abci/skill.yaml @@ -8,18 +8,18 @@ license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: __init__.py: bafybeiholqak7ltw6bbmn2c5tn3j7xgzkdlfzp3kcskiqsvmxoih6m4muq - behaviours.py: bafybeif74c5ieukt56bgq3ynpwfxdpp36ug2rrejm76vxhuw5r2lqjpsqq + behaviours.py: bafybeifirwywbj433tyu45hhkuftlbxjg4hc7qsgtl3hppah77kcl7keye dialogues.py: bafybeibmac3m5u5h6ucoyjr4dazay72dyga656wvjl6z6saapluvjo54ne fsm_specification.yaml: bafybeig6bhn554qyou7kef5bstnlv54zke32avyti63uu4hvsol3lzqkoi handlers.py: bafybeibe5n7my2vd2wlwo73sbma65epjqc7kxgtittewlylcmvnmoxtxzq - models.py: bafybeia3nyyoujxtum4rtsa3zpsm3jecb53o6xpq4h5hltg2prxa2rxhmq + models.py: bafybeigmraodqqx33mlflscp27tkngjkmtk6j7askmwe4ynhinimtcomuq payloads.py: bafybeia2yorri2u5rwh6vukb6iwdrbn53ygsuuhthns2txptvjipyb6f4e rounds.py: bafybeicstmau4vlzpxz3kjgiwwsetwmotdk4un4iucmdddzvot5dgdkg2a tasks.py: bafybeicu5t5cvfhbndgpxbbtmp4vbmtyb6fba6vsnlewftvuderxp5lwcy fingerprint_ignore_patterns: [] connections: [] contracts: -- valory/agent_mech:0.1.0:bafybeig7zpqhcpt6z4eutedx6prciuq4g7mpadw636zkkcx3ach6oytdry +- valory/agent_mech:0.1.0:bafybeiepxumywg6z2zapqzc3bg3iey23cmlgjzxisqox5j74o5i2texr5e - valory/agent_registry:0.1.0:bafybeiargayav6yiztdnwzejoejstcx4idssch2h4f5arlgtzj3tgsgfmu - valory/gnosis_safe:0.1.0:bafybeidll7frtdsq2ckiluazkwk4zpkp7natt4kdejjehwvykqwzyuf6ei - valory/multisend:0.1.0:bafybeig5byt5urg2d2bsecufxe5ql7f4mezg3mekfleeh32nmuusx66p4y @@ -146,6 +146,8 @@ models: service_owner_share: 0.1 profit_split_freq: 1000 slash_cooldown_hours: 3 + agent_funding_amount: 200000000000000000 + minimum_agent_balance: 100000000000000000 slash_threshold_amount: 10000000000000000 light_slash_unit_amount: 5000000000000000 serious_slash_unit_amount: 8000000000000000