Skip to content

Commit

Permalink
Merge pull request #12 from valory-xyz/fix/issues
Browse files Browse the repository at this point in the history
Fix issues
  • Loading branch information
Adamantios authored Jul 13, 2023
2 parents 8ddd043 + b1d9cca commit c2ce1ae
Show file tree
Hide file tree
Showing 19 changed files with 183 additions and 46 deletions.
10 changes: 5 additions & 5 deletions packages/packages.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"dev": {
"skill/valory/market_manager_abci/0.1.0": "bafybeihosbo5jkviuy2bdgbt4gll3ba4hgxwgbkj6lup23z5wiopb7vf7q",
"skill/valory/decision_maker_abci/0.1.0": "bafybeia52wpwgnqxb3bm4mgbb5y2cq6lvuuhv2uvmfvsg6qglmrbfsdkru",
"skill/valory/trader_abci/0.1.0": "bafybeigpnlzqcktz6b43l4azljemu4lobsastxdzfdbzhukzctb5tusxly",
"skill/valory/market_manager_abci/0.1.0": "bafybeihdw263vfkzvopfmsatnlrcky5ohcq6grjeurr6opcmm6kcqqfkba",
"skill/valory/decision_maker_abci/0.1.0": "bafybeigdlxygxlxtubwwbninvhcm7m44fe634kp6fjhsdsvsubbti44kzy",
"skill/valory/trader_abci/0.1.0": "bafybeiaf76cioo47imacxziiqnvzmzq5tculaxk3q2sa53mrpuvszur2ji",
"contract/valory/market_maker/0.1.0": "bafybeifihhoertnx3itmfzbuf4lazclzjuctxurayajguyn7ggsddolhte",
"agent/valory/trader/0.1.0": "bafybeibuasbe47gl3nbo2wsvpzls5fpu5nmbsakuodc3hh3zbv65wwj26u",
"service/valory/trader/0.1.0": "bafybeieqtx6toktbm6injnm26maeiqtplyttcjp5xao6445fytaubkucdy"
"agent/valory/trader/0.1.0": "bafybeief3ecqswbtah7iiweyw4afpnh7k3txn2jslhbf5ykkhvvpkhzrbu",
"service/valory/trader/0.1.0": "bafybeibkgt7tb4oy7ismczzzcxaw32v2ijefd4upr7z6ri4rharlgvethi"
},
"third_party": {
"protocol/open_aea/signing/1.0.0": "bafybeibqlfmikg5hk4phzak6gqzhpkt6akckx7xppbp53mvwt6r73h7tk4",
Expand Down
6 changes: 3 additions & 3 deletions packages/valory/agents/trader/aea-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ skills:
- valory/reset_pause_abci:0.1.0:bafybeibqz7y3i4aepuprhijwdydkcsbqjtpeea6gdzpp5fgc6abrvjz25a
- valory/termination_abci:0.1.0:bafybeieb3gnvjxxsh73g67m7rivzknwb63xu4qeagpkv7f4mqz33ecikem
- valory/transaction_settlement_abci:0.1.0:bafybeihdpac4ayfgop3ixflimlb3zzyeejlpqtljfptdak6tc7aq4u5fzi
- valory/market_manager_abci:0.1.0:bafybeihosbo5jkviuy2bdgbt4gll3ba4hgxwgbkj6lup23z5wiopb7vf7q
- valory/decision_maker_abci:0.1.0:bafybeia52wpwgnqxb3bm4mgbb5y2cq6lvuuhv2uvmfvsg6qglmrbfsdkru
- valory/trader_abci:0.1.0:bafybeigpnlzqcktz6b43l4azljemu4lobsastxdzfdbzhukzctb5tusxly
- valory/market_manager_abci:0.1.0:bafybeihdw263vfkzvopfmsatnlrcky5ohcq6grjeurr6opcmm6kcqqfkba
- valory/decision_maker_abci:0.1.0:bafybeigdlxygxlxtubwwbninvhcm7m44fe634kp6fjhsdsvsubbti44kzy
- valory/trader_abci:0.1.0:bafybeiaf76cioo47imacxziiqnvzmzq5tculaxk3q2sa53mrpuvszur2ji
default_ledger: ethereum
required_ledgers:
- ethereum
Expand Down
2 changes: 1 addition & 1 deletion packages/valory/services/trader/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ license: Apache-2.0
fingerprint:
README.md: bafybeigtuothskwyvrhfosps2bu6suauycolj67dpuxqvnicdrdu7yhtvq
fingerprint_ignore_patterns: []
agent: valory/trader:0.1.0:bafybeibuasbe47gl3nbo2wsvpzls5fpu5nmbsakuodc3hh3zbv65wwj26u
agent: valory/trader:0.1.0:bafybeief3ecqswbtah7iiweyw4afpnh7k3txn2jslhbf5ykkhvvpkhzrbu
number_of_agents: 4
deployment: {}
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def params(self) -> DecisionMakerParams:
@property
def synchronized_data(self) -> SynchronizedData:
"""Return the synchronized data."""
return cast(SynchronizedData, super().synchronized_data)
return SynchronizedData(super().synchronized_data.db)

def finish_behaviour(self, payload: BaseTxPayload) -> Generator:
"""Finish the behaviour."""
Expand Down
18 changes: 15 additions & 3 deletions packages/valory/skills/decision_maker_abci/behaviours/sampling.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,18 @@

"""This module contains the behaviour for sampling a bet."""

from typing import Generator, Iterator
from typing import Generator, Iterator, Optional

from packages.valory.skills.decision_maker_abci.behaviours.base import (
DecisionMakerBaseBehaviour,
)
from packages.valory.skills.decision_maker_abci.payloads import SamplingPayload
from packages.valory.skills.decision_maker_abci.states.sampling import SamplingRound
from packages.valory.skills.market_manager_abci.bets import Bet, BetStatus
from packages.valory.skills.market_manager_abci.bets import (
Bet,
BetStatus,
serialize_bets,
)


class SamplingBehaviour(DecisionMakerBaseBehaviour):
Expand All @@ -53,9 +57,17 @@ def sampled_bet_idx(self) -> int:
max_lq = max(self.available_bets, key=lambda bet: bet.usdLiquidityMeasure)
return self.synchronized_data.bets.index(max_lq)

def set_processed(self, idx: int) -> Optional[str]:
"""Update the bet's status for the given id to `PROCESSED`, and return the updated bets list, serialized."""
bets = self.synchronized_data.bets
bets[idx].status = BetStatus.PROCESSED
return serialize_bets(bets)

def async_act(self) -> Generator:
"""Do the action."""
with self.context.benchmark_tool.measure(self.behaviour_id).local():
payload = SamplingPayload(self.context.agent_address, self.sampled_bet_idx)
idx = self.sampled_bet_idx
bets = self.set_processed(idx)
payload = SamplingPayload(self.context.agent_address, bets, idx)

yield from self.finish_behaviour(payload)
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ final_states:
- ImpossibleRound
label: DecisionMakerAbciApp
start_states:
- BlacklistingRound
- SamplingRound
states:
- BetPlacementRound
Expand Down
3 changes: 2 additions & 1 deletion packages/valory/skills/decision_maker_abci/payloads.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from typing import Optional

from packages.valory.skills.abstract_round_abci.base import BaseTxPayload
from packages.valory.skills.market_manager_abci.payloads import UpdateBetsPayload


@dataclass(frozen=True)
Expand All @@ -36,7 +37,7 @@ class DecisionMakerPayload(BaseTxPayload):


@dataclass(frozen=True)
class SamplingPayload(BaseTxPayload):
class SamplingPayload(UpdateBetsPayload):
"""Represents a transaction payload for the sampling of a bet."""

index: int
Expand Down
20 changes: 15 additions & 5 deletions packages/valory/skills/decision_maker_abci/rounds.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@
AbciApp,
AbciAppTransitionFunction,
AppState,
get_name,
)
from packages.valory.skills.decision_maker_abci.states.base import (
Event,
SynchronizedData,
)
from packages.valory.skills.decision_maker_abci.states.base import Event
from packages.valory.skills.decision_maker_abci.states.bet_placement import (
BetPlacementRound,
)
Expand All @@ -52,7 +56,7 @@ class DecisionMakerAbciApp(AbciApp[Event]):
Initial round: SamplingRound
Initial states: {SamplingRound}
Initial states: {BlacklistingRound, SamplingRound}
Transition states:
0. SamplingRound
Expand Down Expand Up @@ -90,7 +94,7 @@ class DecisionMakerAbciApp(AbciApp[Event]):
"""

initial_round_cls: AppState = SamplingRound
initial_states: Set[AppState] = {SamplingRound}
initial_states: Set[AppState] = {SamplingRound, BlacklistingRound}
transition_function: AbciAppTransitionFunction = {
SamplingRound: {
Event.DONE: DecisionMakerRound,
Expand Down Expand Up @@ -134,10 +138,16 @@ class DecisionMakerAbciApp(AbciApp[Event]):
Event.ROUND_TIMEOUT: 30.0,
}
db_pre_conditions: Dict[AppState, Set[str]] = {
BlacklistingRound: {
get_name(SynchronizedData.bets),
},
SamplingRound: set(),
}
db_post_conditions: Dict[AppState, Set[str]] = {
FinishedDecisionMakerRound: set(),
FinishedWithoutDecisionRound: set(),
FinishedDecisionMakerRound: {
get_name(SynchronizedData.sampled_bet_index),
get_name(SynchronizedData.most_voted_tx_hash),
},
FinishedWithoutDecisionRound: {get_name(SynchronizedData.sampled_bet_index)},
ImpossibleRound: set(),
}
18 changes: 9 additions & 9 deletions packages/valory/skills/decision_maker_abci/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,25 @@ fingerprint:
README.md: bafybeia367zzdwndvlhw27rvnwodytjo3ms7gbc3q7mhrrjqjgfasnk47i
__init__.py: bafybeih563ujnigeci2ldzh7hakbau6a222vsed7leg3b7lq32vcn3nm4a
behaviours/__init__.py: bafybeih6ddz2ocvm6x6ytvlbcz6oi4snb5ee5xh5h65nq4w2qf7fd7zfky
behaviours/base.py: bafybeihpxgeu6bkjyfhnayz27jvmm44h4cogia3erl2ihm4bdle6ribpiy
behaviours/base.py: bafybeiftzkqcn2abil4ljzoppcl52zrztplymwqbnydm6ippn7kzhgjexy
behaviours/bet_placement.py: bafybeigs7rzfms4axsdrqayo6vjomrxfu4vb2xu7yemizqehqimmdejx4e
behaviours/blacklisting.py: bafybeicvespraci44y2dtddy4wi7cdhjuyk6crjs7ztnssm2rcrovha3hm
behaviours/decision_maker.py: bafybeia7uxg4z2orig42t7k2s6bi2236jhlbgfwz2airwbpsuujbr3l6by
behaviours/round_behaviour.py: bafybeieoumnukyl3zojpud5ojmjder5lkncxwsxnhtfvwrbvs52bl4gj7a
behaviours/sampling.py: bafybeicx24iw2k4ps2eqmokqtnkndii7togl2cgfr65vjiegoxflzj5ekq
behaviours/sampling.py: bafybeiejyrqf2evjtct35eq3vwjw3f3ymeank2utsa62u5zytbj7y4l7tm
dialogues.py: bafybeigpwuzku3we7axmxeamg7vn656maww6emuztau5pg3ebsoquyfdqm
fsm_specification.yaml: bafybeierfujdtrnzl72b3vdsdiqcah6anroerqa4m763erxe6m6aq3tw3y
fsm_specification.yaml: bafybeiggebf4simuob5koqhtwnigt6yvnhe5fvr5px7gzci6kcx7tn6elm
handlers.py: bafybeihj33szgrcxnpd73s4nvluyxwwsvhjum2cuq3ilhhe6vfola3k7vy
models.py: bafybeiggylwxzknh4duj6cid3qoodm5wg7ip6ui5hxptvjgkpuaqcuewbq
payloads.py: bafybeihc2t4biela7hktwltwfjatihsxbsu4dutj4jcciiizgsgxwy2nxe
rounds.py: bafybeihr6psedc6gcd4pjtnp5mqhu5a2rvgiofha43kr4w4hmnhaaftrvm
payloads.py: bafybeibq2my4qz2z7frtevwpafstmltrl3xh3a355unge5q6cli3uneuja
rounds.py: bafybeia6xznked22dam43rol2otqbqjt73yic33rnrdlz52xat6gotwblm
states/__init__.py: bafybeid23llnyp6j257dluxmrnztugo5llsrog7kua53hllyktz4dqhqoy
states/base.py: bafybeidbtfxqgy6xek4ehoco5mvmhmcmx5nl4nrmjac4pit4243bfah4ee
states/base.py: bafybeiflaaefherbp2jvmevonqmarpctuzcchi4uv25ghn6mjll4cnjgwi
states/bet_placement.py: bafybeiafuxdellvnnocttnelnyi75sqrlnkobh6wr57mqysyrsyzirkaya
states/blacklisting.py: bafybeiao747i4z7owk6dmwfuzdijag55m3ryj3nowfoggvczpgk3koza44
states/decision_maker.py: bafybeicspctxyok4h2rssbg7a5fb7iduf4hwr2snglsjmqpldzim3p5e3i
states/decision_maker.py: bafybeiaqehtdzivhswlurqzxx2bxqjnrmeo6bfyvr2zn55ng3qpwbokauy
states/final_states.py: bafybeicruy5dbfzxtx5nvihcpxr5pfbgxxwbosy7x7d5wbqudtooxjsoqi
states/sampling.py: bafybeigehqnkr2hhc2hpagbj4ffiewzjqfwyj7cwkm6fvaoqvntburkxaq
states/sampling.py: bafybeidnvdogjlthjfe7jpaiuezm3xydrbxxukyoss4gx6t5fdin52rsta
tasks.py: bafybeidgfoukqknzwxc3aeu5ifhpygo5nwl6t37ezy362itx4wjslto5be
fingerprint_ignore_patterns: []
connections: []
Expand All @@ -38,7 +38,7 @@ protocols:
- valory/contract_api:1.0.0:bafybeidv6wxpjyb2sdyibnmmum45et4zcla6tl63bnol6ztyoqvpl4spmy
skills:
- valory/abstract_round_abci:0.1.0:bafybeiac62ennpw54gns2quk4g3yoaili2mb72nj6c52czobz5dcwj4mwi
- valory/market_manager_abci:0.1.0:bafybeihosbo5jkviuy2bdgbt4gll3ba4hgxwgbkj6lup23z5wiopb7vf7q
- valory/market_manager_abci:0.1.0:bafybeihdw263vfkzvopfmsatnlrcky5ohcq6grjeurr6opcmm6kcqqfkba
- valory/transaction_settlement_abci:0.1.0:bafybeihdpac4ayfgop3ixflimlb3zzyeejlpqtljfptdak6tc7aq4u5fzi
behaviours:
main:
Expand Down
3 changes: 2 additions & 1 deletion packages/valory/skills/decision_maker_abci/states/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ def non_binary(self) -> bool:
@property
def vote(self) -> Optional[int]:
"""Get the bet's vote index."""
return int(self.db.get_strict("vote"))
vote = self.db.get_strict("vote")
return int(vote) if vote is not None else None

@property
def confidence(self) -> float:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ class DecisionMakerRound(CollectSameUntilThresholdRound):
no_majority_event = Event.NO_MAJORITY
selection_key = (
get_name(SynchronizedData.non_binary),
get_name(SynchronizedData.is_profitable),
get_name(SynchronizedData.vote),
get_name(SynchronizedData.confidence),
get_name(SynchronizedData.is_profitable),
)
collection_key = get_name(SynchronizedData.participant_to_decision)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,8 @@ class SamplingRound(CollectSameUntilThresholdRound):
done_event = Event.DONE
none_event = Event.NONE
no_majority_event = Event.NO_MAJORITY
selection_key = get_name(SynchronizedData.sampled_bet_index)
selection_key = (
get_name(SynchronizedData.bets),
get_name(SynchronizedData.sampled_bet_index),
)
collection_key = get_name(SynchronizedData.participant_to_sampling)
15 changes: 13 additions & 2 deletions packages/valory/skills/market_manager_abci/bets.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

"""Structures for the bets."""

import builtins
import dataclasses
import json
from enum import Enum, auto
Expand Down Expand Up @@ -51,7 +52,7 @@ class Bet:
outcomeTokenAmounts: List[int]
outcomeTokenMarginalPrices: List[float]
outcomes: Optional[List[str]]
usdLiquidityMeasure: int
usdLiquidityMeasure: float
status: BetStatus = BetStatus.UNPROCESSED
blacklist_expiration: float = -1

Expand All @@ -68,7 +69,17 @@ def __post_init__(self) -> None:
self.outcomes = None

if isinstance(self.status, int):
super().__setattr__("status", BetStatus(self.status))
self.status = BetStatus(self.status)

types_to_cast = ("int", "float", "str")
str_to_type = {getattr(builtins, type_): type_ for type_ in types_to_cast}
for field, hinted_type in self.__annotations__.items():
uncasted = getattr(self, field)
for type_to_cast, type_name in str_to_type.items():
if hinted_type == type_to_cast:
setattr(self, field, hinted_type(uncasted))
if f"{str(List)}[{type_name}]" == str(hinted_type):
setattr(self, field, list(type_to_cast(val) for val in uncasted))

def get_outcome(self, index: int) -> str:
"""Get an outcome given its index."""
Expand Down
6 changes: 2 additions & 4 deletions packages/valory/skills/market_manager_abci/payloads.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,11 @@
from dataclasses import dataclass
from typing import Optional

from packages.valory.skills.abstract_round_abci.base import (
BaseTxPayload as BaseMarketManagerPayload,
)
from packages.valory.skills.abstract_round_abci.base import BaseTxPayload


@dataclass(frozen=True)
class UpdateBetsPayload(BaseMarketManagerPayload):
class UpdateBetsPayload(BaseTxPayload):
"""A transaction payload for the updated bets."""

bets: Optional[str]
4 changes: 2 additions & 2 deletions packages/valory/skills/market_manager_abci/skill.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fingerprint:
README.md: bafybeie6miwn67uin3bphukmf7qgiifh4xtm42i5v3nuyqxzxtehxsqvcq
__init__.py: bafybeigrtedqzlq5mtql2ssjsdriw76ml3666m4e2c3fay6vmyzofl6v6e
behaviours.py: bafybeidzzyssdo6gsqtsvr6xbh5chszkev6fnnheuyhgmqsbl2ae6lhs5a
bets.py: bafybeifopryrvcynp2t6dxdvudeok3zag2hz7d5fuptxv2g33qmd6h3n6y
bets.py: bafybeifycdeosqn32wyids6rymjhwdjjebbavi5vcn2a5hrt3ho3aa3bfy
dialogues.py: bafybeiebofyykseqp3fmif36cqmmyf3k7d2zbocpl6t6wnlpv4szghrxbm
fsm_specification.yaml: bafybeic5cvwfbiu5pywyp3h5s2elvu7jqdrcwayay7o3v3ow47vu2jw53q
graph_tooling/__init__.py: bafybeigzo7nhbzafyq3fuhrlewksjvmzttiuk4vonrggtjtph4rw4ncpk4
Expand All @@ -18,7 +18,7 @@ fingerprint:
graph_tooling/requests.py: bafybeifkwmfjhxbmfexolos3umq3k4gsrn5ajhdgq4iht7ne3yge4llfjq
handlers.py: bafybeihot2i2yvfkz2gcowvt66wdu6tkjbmv7hsmc4jzt4reqeaiuphbtu
models.py: bafybeidhhhp2obt36iatytckybywdm55pzmefpyccakfw3ufyz732ydigy
payloads.py: bafybeihkxngjzlmorqpckhf7avdaczmzecpawa4ne6ewz7zhfcsw6trbeu
payloads.py: bafybeiamavgddfbzofpsjthmw6j7g2dyxm7fb6hvdb47kweyrx4w2ihcfi
rounds.py: bafybeib3kjtz6lpx7vczrmnanj6c2z4jrbvbdw6l3jvq5z3ecyglugiwmy
fingerprint_ignore_patterns: []
connections: []
Expand Down
14 changes: 13 additions & 1 deletion packages/valory/skills/trader_abci/composition.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
chain,
)
from packages.valory.skills.decision_maker_abci.rounds import DecisionMakerAbciApp
from packages.valory.skills.decision_maker_abci.states.blacklisting import (
BlacklistingRound,
)
from packages.valory.skills.decision_maker_abci.states.final_states import (
FinishedDecisionMakerRound,
FinishedWithoutDecisionRound,
Expand All @@ -49,13 +52,21 @@
from packages.valory.skills.termination_abci.rounds import BackgroundRound
from packages.valory.skills.termination_abci.rounds import Event as TerminationEvent
from packages.valory.skills.termination_abci.rounds import TerminationAbciApp
from packages.valory.skills.transaction_settlement_abci.rounds import (
FailedRound,
FinishedTransactionSubmissionRound,
RandomnessTransactionSubmissionRound,
TransactionSubmissionAbciApp,
)


abci_app_transition_mapping: AbciAppTransitionMapping = {
FinishedRegistrationRound: UpdateBetsRound,
FinishedMarketManagerRound: SamplingRound,
FailedMarketManagerRound: ResetAndPauseRound,
FinishedDecisionMakerRound: ResetAndPauseRound,
FinishedDecisionMakerRound: RandomnessTransactionSubmissionRound,
FinishedTransactionSubmissionRound: ResetAndPauseRound,
FailedRound: BlacklistingRound,
FinishedWithoutDecisionRound: ResetAndPauseRound,
FinishedResetAndPauseRound: UpdateBetsRound,
FinishedResetAndPauseErrorRound: RegistrationRound,
Expand All @@ -66,6 +77,7 @@
AgentRegistrationAbciApp,
DecisionMakerAbciApp,
MarketManagerAbciApp,
TransactionSubmissionAbciApp,
ResetPauseAbciApp,
),
abci_app_transition_mapping,
Expand Down
Loading

0 comments on commit c2ce1ae

Please sign in to comment.