From 73425f04bc45255ee7c29e68112ae8ff4285969a Mon Sep 17 00:00:00 2001 From: OjusWiZard Date: Thu, 14 Nov 2024 23:31:03 +0530 Subject: [PATCH] Feat: Strict checks in rounds' for properties Signed-off-by: OjusWiZard --- autonomy/constants.py | 2 +- .../transaction_settlement_abci/rounds.md | 1 + .../overview_of_the_development_process.md | 2 +- docs/package_list.md | 48 ++++++++-------- packages/packages.json | 48 ++++++++-------- .../agents/offend_slash/aea-config.yaml | 14 ++--- .../agents/register_reset/aea-config.yaml | 8 +-- .../register_reset_recovery/aea-config.yaml | 6 +- .../register_termination/aea-config.yaml | 12 ++-- .../registration_start_up/aea-config.yaml | 4 +- .../solana_transfer_agent/aea-config.yaml | 10 ++-- .../valory/agents/test_abci/aea-config.yaml | 4 +- .../valory/agents/test_ipfs/aea-config.yaml | 4 +- .../services/register_reset/service.yaml | 2 +- .../valory/skills/abstract_round_abci/base.py | 57 +++++++++++++++++++ .../skills/abstract_round_abci/skill.yaml | 8 +-- .../abstract_round_abci/test_tools/rounds.py | 25 +++++++- .../tests/data/dummy_abci/rounds.py | 5 +- .../tests/test_base_rounds.py | 10 ++-- packages/valory/skills/offend_abci/rounds.py | 3 +- packages/valory/skills/offend_abci/skill.yaml | 4 +- .../skills/offend_slash_abci/skill.yaml | 10 ++-- .../skills/register_reset_abci/skill.yaml | 6 +- .../register_reset_recovery_abci/rounds.py | 3 +- .../register_reset_recovery_abci/skill.yaml | 6 +- .../register_termination_abci/skill.yaml | 8 +-- .../valory/skills/registration_abci/rounds.py | 1 + .../skills/registration_abci/skill.yaml | 4 +- .../valory/skills/reset_pause_abci/rounds.py | 1 + .../valory/skills/reset_pause_abci/skill.yaml | 4 +- .../valory/skills/slashing_abci/rounds.py | 3 +- .../valory/skills/slashing_abci/skill.yaml | 6 +- .../skill.yaml | 2 +- .../valory/skills/termination_abci/rounds.py | 1 + .../valory/skills/termination_abci/skill.yaml | 6 +- packages/valory/skills/test_abci/skill.yaml | 2 +- .../valory/skills/test_ipfs_abci/skill.yaml | 2 +- .../skills/test_solana_tx_abci/skill.yaml | 8 +-- .../fsm_specification.yaml | 1 + .../transaction_settlement_abci/rounds.py | 24 +++++++- .../transaction_settlement_abci/skill.yaml | 6 +- 41 files changed, 247 insertions(+), 134 deletions(-) diff --git a/autonomy/constants.py b/autonomy/constants.py index aa4a453ad7..47179fb50e 100644 --- a/autonomy/constants.py +++ b/autonomy/constants.py @@ -65,5 +65,5 @@ ACN_IMAGE_NAME = os.environ.get("ACN_IMAGE_NAME", "valory/open-acn-node") DEFAULT_DOCKER_IMAGE_AUTHOR = "valory" OAR_IMAGE = "{image_author}/oar-{agent}:{version}" -ABSTRACT_ROUND_ABCI_SKILL_WITH_HASH = "valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti" +ABSTRACT_ROUND_ABCI_SKILL_WITH_HASH = "valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq" OLAS_DOCS_URL = "https://docs.autonolas.network" diff --git a/docs/api/skills/transaction_settlement_abci/rounds.md b/docs/api/skills/transaction_settlement_abci/rounds.md index 6a2145ea9c..df5f0916b8 100644 --- a/docs/api/skills/transaction_settlement_abci/rounds.md +++ b/docs/api/skills/transaction_settlement_abci/rounds.md @@ -506,6 +506,7 @@ Initial states: {RandomnessTransactionSubmissionRound} Transition states: 0. RandomnessTransactionSubmissionRound - done: 1. + - none: 0. - round timeout: 0. - no majority: 0. 1. SelectKeeperTransactionSubmissionARound diff --git a/docs/guides/overview_of_the_development_process.md b/docs/guides/overview_of_the_development_process.md index b7769c44da..29132b6496 100644 --- a/docs/guides/overview_of_the_development_process.md +++ b/docs/guides/overview_of_the_development_process.md @@ -46,7 +46,7 @@ To follow the next sections, you need to populate the local registry with a numb "protocol/valory/ledger_api/1.0.0": "bafybeihdk6psr4guxmbcrc26jr2cbgzpd5aljkqvpwo64bvaz7tdti2oni", "protocol/valory/tendermint/0.1.0": "bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra", "skill/valory/abstract_abci/0.1.0": "bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu", - "skill/valory/abstract_round_abci/0.1.0": "bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti", + "skill/valory/abstract_round_abci/0.1.0": "bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq", "skill/valory/hello_world_abci/0.1.0": "bafybeiebittgfcz4idj633fkrvu6qle2ajekdjxpp7slggyur7vv7s7hrq", "connection/valory/p2p_libp2p_client/0.1.0": "bafybeid3xg5k2ol5adflqloy75ibgljmol6xsvzvezebsg7oudxeeolz7e" } diff --git a/docs/package_list.md b/docs/package_list.md index fcff23329b..fce45fb9f1 100644 --- a/docs/package_list.md +++ b/docs/package_list.md @@ -17,37 +17,37 @@ | contract/valory/multicall2/0.1.0 | `bafybeift3dae56smtkofxe3ijrygv4xsimsaseblkvhs2wr5qg4qj72pzi` | The MakerDAO multicall2 contract. | | connection/valory/abci/0.1.0 | `bafybeiavg4blopyq2mfojlfmsdxpk64ywpot25zi34wfmv4yeal6pbqbfy` | connection to wrap communication with an ABCI server. | | connection/valory/ipfs/0.1.0 | `bafybeiay3g7ioixe5zxilb5vodvz3lpf3jhugvpdzisfzeqlxt2wejaira` | A connection responsible for uploading and downloading files from IPFS. | -| skill/valory/test_ipfs_abci/0.1.0 | `bafybeiaq3nwiqzestjgxcnwgycqimen2plzqvq43okgqzkeptllp24micm` | IPFS e2e testing application. | +| skill/valory/test_ipfs_abci/0.1.0 | `bafybeiblf2tay33ox4cawy7ctvxplvt5ejenn2tggapb5yuq7uepwsylwe` | IPFS e2e testing application. | | skill/valory/abstract_abci/0.1.0 | `bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu` | The abci skill provides a template of an ABCI application. | -| skill/valory/abstract_round_abci/0.1.0 | `bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti` | abstract round-based ABCI application | -| skill/valory/transaction_settlement_abci/0.1.0 | `bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy` | ABCI application for transaction settlement. | -| skill/valory/registration_abci/0.1.0 | `bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq` | ABCI application for common apps. | -| skill/valory/reset_pause_abci/0.1.0 | `bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e` | ABCI application for resetting and pausing app executions. | -| skill/valory/termination_abci/0.1.0 | `bafybeifi2uodnrjsrivj53g3sjutocmyusbx6mlsb6oanqdyt2mfbyvusy` | Termination skill. | +| skill/valory/abstract_round_abci/0.1.0 | `bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq` | abstract round-based ABCI application | +| skill/valory/transaction_settlement_abci/0.1.0 | `bafybeiagciws2zpj2gi6rmr6fz2y6xs25r5mkfdakc2gmg5aje4tpcxibe` | ABCI application for transaction settlement. | +| skill/valory/registration_abci/0.1.0 | `bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga` | ABCI application for common apps. | +| skill/valory/reset_pause_abci/0.1.0 | `bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4` | ABCI application for resetting and pausing app executions. | +| skill/valory/termination_abci/0.1.0 | `bafybeiaggva65tsaikrqstowr22r4udvimb2gbu5mpspplwehbyj6sc5ra` | Termination skill. | | skill/valory/counter/0.1.0 | `bafybeifb3txnejlybrh3uvknir3oylot3exnslmszvc4fsw7i3yyn77bha` | The ABCI Counter application example. | | skill/valory/counter_client/0.1.0 | `bafybeih2hz7bvltfnlw7cgjrwgjdw3xgejwcnkxry7i6ajcspwcw2hrb3e` | A client for the ABCI counter application. | -| skill/valory/register_reset_abci/0.1.0 | `bafybeiaugkurd6l6n4awpckm344lilychnrctbw2eie6sss5533dfaf2xa` | ABCI application for dummy skill that registers and resets | -| skill/valory/register_termination_abci/0.1.0 | `bafybeidnfpwok5wk6puytgumilf2bcdwdvyn6px2dos3tnebahzd5y7yvm` | ABCI application for dummy skill that registers and resets | -| skill/valory/test_abci/0.1.0 | `bafybeiciihwa5igw5bpdoumvfzkdax7rnsptlqo7ns72fbfr7ggr7ioune` | ABCI application for testing the ABCI connection. | -| skill/valory/register_reset_recovery_abci/0.1.0 | `bafybeihyvepephtx7wpkig36fm2obywn5xwzk7morkx2xm37bontwsybfy` | ABCI application for dummy skill that registers and resets | -| skill/valory/slashing_abci/0.1.0 | `bafybeigec47d4smbsm3x375svsv4hw3aa53xue7dnugve4kvk36jauw5sm` | Slashing skill. | -| skill/valory/offend_abci/0.1.0 | `bafybeiai64ovubechzkroegg2s4wys62d5vtlzpw24mybp2dl2t3p6zr4u` | Offend ABCI application. | -| skill/valory/offend_slash_abci/0.1.0 | `bafybeibixg4hkmawn5bkip3ncami4czrpazagpsfrd5cpyaa7k7a5yld44` | ABCI application used in order to test the slashing abci | -| skill/valory/squads_transaction_settlement_abci/0.1.0 | `bafybeihezye3mhdkdlirehgdbtgda2xaau7svz3nws5zu6znqncf7okgoe` | ABCI application for transaction settlement. | -| skill/valory/test_solana_tx_abci/0.1.0 | `bafybeiexltz7bw4nphaeukewhvpnxfdv5lhp2j5h7nxu2jkkaippkyofnq` | SOLANA e2e testing application. | -| agent/valory/test_ipfs/0.1.0 | `bafybeifzq6tysi6nb7gtlexofkjeuq75ogejvlktcbdw5pfjewvq7zfkre` | Agent for testing the ABCI connection. | +| skill/valory/register_reset_abci/0.1.0 | `bafybeicljtvr53f2atbuc2hthvbe5yfep4nwdjpmlmibo5xfw3u2p26jmm` | ABCI application for dummy skill that registers and resets | +| skill/valory/register_termination_abci/0.1.0 | `bafybeieu2hbdrqyht6bfb36b7wyb6yhznxu62tuxwarpx2ud4hpbsiqsvm` | ABCI application for dummy skill that registers and resets | +| skill/valory/test_abci/0.1.0 | `bafybeifuior5k7kn6eztgizytcex6svqhff7thh5lecpqih4oxuz35hue4` | ABCI application for testing the ABCI connection. | +| skill/valory/register_reset_recovery_abci/0.1.0 | `bafybeight72macmxsgkgsjed6h4spmigbfr452fxz5222qggytc6il74qi` | ABCI application for dummy skill that registers and resets | +| skill/valory/slashing_abci/0.1.0 | `bafybeihkgvz4aj75mlogdcf72atnhjstxfieuaxwn2njd3yq4ra44j4ljq` | Slashing skill. | +| skill/valory/offend_abci/0.1.0 | `bafybeihtrnlnf7ejk5zqdim2a34ygckgefokvzkqft2qrroambhkxzxrsi` | Offend ABCI application. | +| skill/valory/offend_slash_abci/0.1.0 | `bafybeigq2qtkm2fzytor3wnuxrckwahfsews64uguufnyzosktuntwqpl4` | ABCI application used in order to test the slashing abci | +| skill/valory/squads_transaction_settlement_abci/0.1.0 | `bafybeieyogdw3ittuvrnf5sspwjsxyvjudl7dzxigoqg3op4rs3grtgcqm` | ABCI application for transaction settlement. | +| skill/valory/test_solana_tx_abci/0.1.0 | `bafybeihyqkfndepfivqw5h6nsp56xnrnhlrpla47y3f3ed4mojvgkd27my` | SOLANA e2e testing application. | +| agent/valory/test_ipfs/0.1.0 | `bafybeidqwasnc7xsqte3ow2lnec7umsppm7jbglhcsmbcepevzhtygya6e` | Agent for testing the ABCI connection. | | agent/valory/abstract_abci/0.1.0 | `bafybeicdre4pthgr3r2ucwn6jmgstxodfiftw6qxszvp2y2yubc6an3ou4` | The abstract ABCI AEA - for testing purposes only. | | agent/valory/counter/0.1.0 | `bafybeib6nob23qhhd2emcqxsq2h3wvu5nsqvq52nx6z24itwdjwlod4lh4` | The ABCI Counter example as an AEA | | agent/valory/counter_client/0.1.0 | `bafybeifiyevp2rguzzegylzge5fzhnw2wv5tkspknhepqjfz4omuytvfmi` | The ABCI Counter example as an AEA | -| agent/valory/register_reset/0.1.0 | `bafybeigpvhmf6shju7vhkhoq7v2ifweyz4vpoco5lvaljmbmulqnxmafca` | Register reset to replicate Tendermint issue. | -| agent/valory/register_termination/0.1.0 | `bafybeidh5k5nzk6k5qj5ny25udoberxjwwklcfqsiscw5t5kfjlehf6lea` | Register terminate to test the termination feature. | -| agent/valory/registration_start_up/0.1.0 | `bafybeihhirnzimsyeqaqj2i5f4jn7y52bskikkjlprcn3o6bdbgwukabii` | Registration start-up ABCI example. | -| agent/valory/test_abci/0.1.0 | `bafybeiett2dlthpzd7j25mfmfzc7h7kyub3iyv2j2dk5ecfktd24qfsjha` | Agent for testing the ABCI connection. | -| agent/valory/register_reset_recovery/0.1.0 | `bafybeiesaqjfx5tnlle7m54745bqs77ncpe75bskpugzmlzwmc5scjj5zy` | Agent to showcase hard reset as a recovery mechanism. | -| agent/valory/offend_slash/0.1.0 | `bafybeieyidjz32m6js5lvnz4uj7a5fety7x5x5jn5ikxzfn7j27ux6fiay` | Offend and slash to test the slashing feature. | -| agent/valory/solana_transfer_agent/0.1.0 | `bafybeidsert3tvudk6skpg4wgvhwslmuvrxhhtk5mmcf7d6hvvfpsj46qi` | Register terminate to test the termination feature. | +| agent/valory/register_reset/0.1.0 | `bafybeidmfl2elfnz3qg3k2yn2g66rjontgotxaehgt7eag5qz3647sqira` | Register reset to replicate Tendermint issue. | +| agent/valory/register_termination/0.1.0 | `bafybeihgdtemjpnv77xtkxlrmy4ukc5eljmugwbm4sreqimyknmnatng3m` | Register terminate to test the termination feature. | +| agent/valory/registration_start_up/0.1.0 | `bafybeicfv5rqu6hnqsmednbpu6kmg4n7zcsbsqehg6dkipgtqjg73frk54` | Registration start-up ABCI example. | +| agent/valory/test_abci/0.1.0 | `bafybeiemyrizrquzoq6rrmimzwttt3mpaasnygdwpbfadjjkyhpevvjtca` | Agent for testing the ABCI connection. | +| agent/valory/register_reset_recovery/0.1.0 | `bafybeic6spx5j6lliwy3t2nad7o7ypkjwy6dbvf6qlerg4vdtc6fbhqmz4` | Agent to showcase hard reset as a recovery mechanism. | +| agent/valory/offend_slash/0.1.0 | `bafybeib2n52pmsymp5fcrltz2i7g6d56zmpeom7dwzjpgnevzrhunsbwcm` | Offend and slash to test the slashing feature. | +| agent/valory/solana_transfer_agent/0.1.0 | `bafybeidlh6rkyqhxutsaqkoyrfdco6dcorwpvpsw4afnadfeqnyt7gfyce` | Register terminate to test the termination feature. | | service/valory/counter/0.1.0 | `bafybeideenxgizowigwldrnx5qel2pdb4pg243qo64gdroegholtujvyku` | A set of agents incrementing a counter | -| service/valory/register_reset/0.1.0 | `bafybeidi3bblw24bwvofnuwb4ubwd4zdnalmn7my4stny4qcuqlmi4qsbe` | Test and debug tendermint reset mechanism. | +| service/valory/register_reset/0.1.0 | `bafybeigveiprew4j3ivtfciynhhas245qoxs2jj6aovosp56jyqvipfn6i` | Test and debug tendermint reset mechanism. | | protocol/open_aea/signing/1.0.0 | `bafybeihv62fim3wl2bayavfcg3u5e5cxu3b7brtu4cn5xoxd6lqwachasi` | A protocol for communication between skills and decision maker. | | protocol/valory/acn/1.1.0 | `bafybeidluaoeakae3exseupaea4i3yvvk5vivyt227xshjlffywwxzcxqe` | The protocol used for envelope delivery on the ACN. | | protocol/valory/http/1.0.0 | `bafybeifugzl63kfdmwrxwphrnrhj7bn6iruxieme3a4ntzejf6kmtuwmae` | A protocol for HTTP requests and responses. | diff --git a/packages/packages.json b/packages/packages.json index 43f5efee6e..5822197a61 100644 --- a/packages/packages.json +++ b/packages/packages.json @@ -17,37 +17,37 @@ "contract/valory/multicall2/0.1.0": "bafybeift3dae56smtkofxe3ijrygv4xsimsaseblkvhs2wr5qg4qj72pzi", "connection/valory/abci/0.1.0": "bafybeiavg4blopyq2mfojlfmsdxpk64ywpot25zi34wfmv4yeal6pbqbfy", "connection/valory/ipfs/0.1.0": "bafybeiay3g7ioixe5zxilb5vodvz3lpf3jhugvpdzisfzeqlxt2wejaira", - "skill/valory/test_ipfs_abci/0.1.0": "bafybeiaq3nwiqzestjgxcnwgycqimen2plzqvq43okgqzkeptllp24micm", + "skill/valory/test_ipfs_abci/0.1.0": "bafybeiblf2tay33ox4cawy7ctvxplvt5ejenn2tggapb5yuq7uepwsylwe", "skill/valory/abstract_abci/0.1.0": "bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu", - "skill/valory/abstract_round_abci/0.1.0": "bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti", - "skill/valory/transaction_settlement_abci/0.1.0": "bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy", - "skill/valory/registration_abci/0.1.0": "bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq", - "skill/valory/reset_pause_abci/0.1.0": "bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e", - "skill/valory/termination_abci/0.1.0": "bafybeifi2uodnrjsrivj53g3sjutocmyusbx6mlsb6oanqdyt2mfbyvusy", + "skill/valory/abstract_round_abci/0.1.0": "bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq", + "skill/valory/transaction_settlement_abci/0.1.0": "bafybeiagciws2zpj2gi6rmr6fz2y6xs25r5mkfdakc2gmg5aje4tpcxibe", + "skill/valory/registration_abci/0.1.0": "bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga", + "skill/valory/reset_pause_abci/0.1.0": "bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4", + "skill/valory/termination_abci/0.1.0": "bafybeiaggva65tsaikrqstowr22r4udvimb2gbu5mpspplwehbyj6sc5ra", "skill/valory/counter/0.1.0": "bafybeifb3txnejlybrh3uvknir3oylot3exnslmszvc4fsw7i3yyn77bha", "skill/valory/counter_client/0.1.0": "bafybeih2hz7bvltfnlw7cgjrwgjdw3xgejwcnkxry7i6ajcspwcw2hrb3e", - "skill/valory/register_reset_abci/0.1.0": "bafybeiaugkurd6l6n4awpckm344lilychnrctbw2eie6sss5533dfaf2xa", - "skill/valory/register_termination_abci/0.1.0": "bafybeidnfpwok5wk6puytgumilf2bcdwdvyn6px2dos3tnebahzd5y7yvm", - "skill/valory/test_abci/0.1.0": "bafybeiciihwa5igw5bpdoumvfzkdax7rnsptlqo7ns72fbfr7ggr7ioune", - "skill/valory/register_reset_recovery_abci/0.1.0": "bafybeihyvepephtx7wpkig36fm2obywn5xwzk7morkx2xm37bontwsybfy", - "skill/valory/slashing_abci/0.1.0": "bafybeigec47d4smbsm3x375svsv4hw3aa53xue7dnugve4kvk36jauw5sm", - "skill/valory/offend_abci/0.1.0": "bafybeiai64ovubechzkroegg2s4wys62d5vtlzpw24mybp2dl2t3p6zr4u", - "skill/valory/offend_slash_abci/0.1.0": "bafybeibixg4hkmawn5bkip3ncami4czrpazagpsfrd5cpyaa7k7a5yld44", - "skill/valory/squads_transaction_settlement_abci/0.1.0": "bafybeihezye3mhdkdlirehgdbtgda2xaau7svz3nws5zu6znqncf7okgoe", - "skill/valory/test_solana_tx_abci/0.1.0": "bafybeiexltz7bw4nphaeukewhvpnxfdv5lhp2j5h7nxu2jkkaippkyofnq", - "agent/valory/test_ipfs/0.1.0": "bafybeifzq6tysi6nb7gtlexofkjeuq75ogejvlktcbdw5pfjewvq7zfkre", + "skill/valory/register_reset_abci/0.1.0": "bafybeicljtvr53f2atbuc2hthvbe5yfep4nwdjpmlmibo5xfw3u2p26jmm", + "skill/valory/register_termination_abci/0.1.0": "bafybeieu2hbdrqyht6bfb36b7wyb6yhznxu62tuxwarpx2ud4hpbsiqsvm", + "skill/valory/test_abci/0.1.0": "bafybeifuior5k7kn6eztgizytcex6svqhff7thh5lecpqih4oxuz35hue4", + "skill/valory/register_reset_recovery_abci/0.1.0": "bafybeight72macmxsgkgsjed6h4spmigbfr452fxz5222qggytc6il74qi", + "skill/valory/slashing_abci/0.1.0": "bafybeihkgvz4aj75mlogdcf72atnhjstxfieuaxwn2njd3yq4ra44j4ljq", + "skill/valory/offend_abci/0.1.0": "bafybeihtrnlnf7ejk5zqdim2a34ygckgefokvzkqft2qrroambhkxzxrsi", + "skill/valory/offend_slash_abci/0.1.0": "bafybeigq2qtkm2fzytor3wnuxrckwahfsews64uguufnyzosktuntwqpl4", + "skill/valory/squads_transaction_settlement_abci/0.1.0": "bafybeieyogdw3ittuvrnf5sspwjsxyvjudl7dzxigoqg3op4rs3grtgcqm", + "skill/valory/test_solana_tx_abci/0.1.0": "bafybeihyqkfndepfivqw5h6nsp56xnrnhlrpla47y3f3ed4mojvgkd27my", + "agent/valory/test_ipfs/0.1.0": "bafybeidqwasnc7xsqte3ow2lnec7umsppm7jbglhcsmbcepevzhtygya6e", "agent/valory/abstract_abci/0.1.0": "bafybeicdre4pthgr3r2ucwn6jmgstxodfiftw6qxszvp2y2yubc6an3ou4", "agent/valory/counter/0.1.0": "bafybeib6nob23qhhd2emcqxsq2h3wvu5nsqvq52nx6z24itwdjwlod4lh4", "agent/valory/counter_client/0.1.0": "bafybeifiyevp2rguzzegylzge5fzhnw2wv5tkspknhepqjfz4omuytvfmi", - "agent/valory/register_reset/0.1.0": "bafybeigpvhmf6shju7vhkhoq7v2ifweyz4vpoco5lvaljmbmulqnxmafca", - "agent/valory/register_termination/0.1.0": "bafybeidh5k5nzk6k5qj5ny25udoberxjwwklcfqsiscw5t5kfjlehf6lea", - "agent/valory/registration_start_up/0.1.0": "bafybeihhirnzimsyeqaqj2i5f4jn7y52bskikkjlprcn3o6bdbgwukabii", - "agent/valory/test_abci/0.1.0": "bafybeiett2dlthpzd7j25mfmfzc7h7kyub3iyv2j2dk5ecfktd24qfsjha", - "agent/valory/register_reset_recovery/0.1.0": "bafybeiesaqjfx5tnlle7m54745bqs77ncpe75bskpugzmlzwmc5scjj5zy", - "agent/valory/offend_slash/0.1.0": "bafybeieyidjz32m6js5lvnz4uj7a5fety7x5x5jn5ikxzfn7j27ux6fiay", - "agent/valory/solana_transfer_agent/0.1.0": "bafybeidsert3tvudk6skpg4wgvhwslmuvrxhhtk5mmcf7d6hvvfpsj46qi", + "agent/valory/register_reset/0.1.0": "bafybeidmfl2elfnz3qg3k2yn2g66rjontgotxaehgt7eag5qz3647sqira", + "agent/valory/register_termination/0.1.0": "bafybeihgdtemjpnv77xtkxlrmy4ukc5eljmugwbm4sreqimyknmnatng3m", + "agent/valory/registration_start_up/0.1.0": "bafybeicfv5rqu6hnqsmednbpu6kmg4n7zcsbsqehg6dkipgtqjg73frk54", + "agent/valory/test_abci/0.1.0": "bafybeiemyrizrquzoq6rrmimzwttt3mpaasnygdwpbfadjjkyhpevvjtca", + "agent/valory/register_reset_recovery/0.1.0": "bafybeic6spx5j6lliwy3t2nad7o7ypkjwy6dbvf6qlerg4vdtc6fbhqmz4", + "agent/valory/offend_slash/0.1.0": "bafybeib2n52pmsymp5fcrltz2i7g6d56zmpeom7dwzjpgnevzrhunsbwcm", + "agent/valory/solana_transfer_agent/0.1.0": "bafybeidlh6rkyqhxutsaqkoyrfdco6dcorwpvpsw4afnadfeqnyt7gfyce", "service/valory/counter/0.1.0": "bafybeideenxgizowigwldrnx5qel2pdb4pg243qo64gdroegholtujvyku", - "service/valory/register_reset/0.1.0": "bafybeidi3bblw24bwvofnuwb4ubwd4zdnalmn7my4stny4qcuqlmi4qsbe" + "service/valory/register_reset/0.1.0": "bafybeigveiprew4j3ivtfciynhhas245qoxs2jj6aovosp56jyqvipfn6i" }, "third_party": { "protocol/open_aea/signing/1.0.0": "bafybeihv62fim3wl2bayavfcg3u5e5cxu3b7brtu4cn5xoxd6lqwachasi", diff --git a/packages/valory/agents/offend_slash/aea-config.yaml b/packages/valory/agents/offend_slash/aea-config.yaml index 0c44fc6c6f..be86b21700 100644 --- a/packages/valory/agents/offend_slash/aea-config.yaml +++ b/packages/valory/agents/offend_slash/aea-config.yaml @@ -31,13 +31,13 @@ protocols: - valory/tendermint:0.1.0:bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/offend_abci:0.1.0:bafybeiai64ovubechzkroegg2s4wys62d5vtlzpw24mybp2dl2t3p6zr4u -- valory/offend_slash_abci:0.1.0:bafybeibixg4hkmawn5bkip3ncami4czrpazagpsfrd5cpyaa7k7a5yld44 -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e -- valory/slashing_abci:0.1.0:bafybeigec47d4smbsm3x375svsv4hw3aa53xue7dnugve4kvk36jauw5sm -- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/offend_abci:0.1.0:bafybeihtrnlnf7ejk5zqdim2a34ygckgefokvzkqft2qrroambhkxzxrsi +- valory/offend_slash_abci:0.1.0:bafybeigq2qtkm2fzytor3wnuxrckwahfsews64uguufnyzosktuntwqpl4 +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 +- valory/slashing_abci:0.1.0:bafybeihkgvz4aj75mlogdcf72atnhjstxfieuaxwn2njd3yq4ra44j4ljq +- valory/transaction_settlement_abci:0.1.0:bafybeiagciws2zpj2gi6rmr6fz2y6xs25r5mkfdakc2gmg5aje4tpcxibe default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/agents/register_reset/aea-config.yaml b/packages/valory/agents/register_reset/aea-config.yaml index 63f0c6f764..bb59b8b84e 100644 --- a/packages/valory/agents/register_reset/aea-config.yaml +++ b/packages/valory/agents/register_reset/aea-config.yaml @@ -35,10 +35,10 @@ protocols: - valory/ipfs:0.1.0:bafybeiftxi2qhreewgsc5wevogi7yc5g6hbcbo4uiuaibauhv3nhfcdtvm skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/register_reset_abci:0.1.0:bafybeiaugkurd6l6n4awpckm344lilychnrctbw2eie6sss5533dfaf2xa -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/register_reset_abci:0.1.0:bafybeicljtvr53f2atbuc2hthvbe5yfep4nwdjpmlmibo5xfw3u2p26jmm +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/agents/register_reset_recovery/aea-config.yaml b/packages/valory/agents/register_reset_recovery/aea-config.yaml index b4e64ea60f..db32bc5e9f 100644 --- a/packages/valory/agents/register_reset_recovery/aea-config.yaml +++ b/packages/valory/agents/register_reset_recovery/aea-config.yaml @@ -25,9 +25,9 @@ protocols: - valory/ipfs:0.1.0:bafybeiftxi2qhreewgsc5wevogi7yc5g6hbcbo4uiuaibauhv3nhfcdtvm skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/register_reset_recovery_abci:0.1.0:bafybeihyvepephtx7wpkig36fm2obywn5xwzk7morkx2xm37bontwsybfy -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/register_reset_recovery_abci:0.1.0:bafybeight72macmxsgkgsjed6h4spmigbfr452fxz5222qggytc6il74qi +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/agents/register_termination/aea-config.yaml b/packages/valory/agents/register_termination/aea-config.yaml index 3ea33a27bf..f6c0b5f516 100644 --- a/packages/valory/agents/register_termination/aea-config.yaml +++ b/packages/valory/agents/register_termination/aea-config.yaml @@ -33,12 +33,12 @@ protocols: - valory/tendermint:0.1.0:bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/register_termination_abci:0.1.0:bafybeidnfpwok5wk6puytgumilf2bcdwdvyn6px2dos3tnebahzd5y7yvm -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e -- valory/termination_abci:0.1.0:bafybeifi2uodnrjsrivj53g3sjutocmyusbx6mlsb6oanqdyt2mfbyvusy -- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/register_termination_abci:0.1.0:bafybeieu2hbdrqyht6bfb36b7wyb6yhznxu62tuxwarpx2ud4hpbsiqsvm +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 +- valory/termination_abci:0.1.0:bafybeiaggva65tsaikrqstowr22r4udvimb2gbu5mpspplwehbyj6sc5ra +- valory/transaction_settlement_abci:0.1.0:bafybeiagciws2zpj2gi6rmr6fz2y6xs25r5mkfdakc2gmg5aje4tpcxibe default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/agents/registration_start_up/aea-config.yaml b/packages/valory/agents/registration_start_up/aea-config.yaml index 52cb3c205c..4b3fab3e43 100644 --- a/packages/valory/agents/registration_start_up/aea-config.yaml +++ b/packages/valory/agents/registration_start_up/aea-config.yaml @@ -29,8 +29,8 @@ protocols: - valory/tendermint:0.1.0:bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/agents/solana_transfer_agent/aea-config.yaml b/packages/valory/agents/solana_transfer_agent/aea-config.yaml index 11d3ca2d28..e8b96945c7 100644 --- a/packages/valory/agents/solana_transfer_agent/aea-config.yaml +++ b/packages/valory/agents/solana_transfer_agent/aea-config.yaml @@ -31,11 +31,11 @@ protocols: - valory/tendermint:0.1.0:bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e -- valory/squads_transaction_settlement_abci:0.1.0:bafybeihezye3mhdkdlirehgdbtgda2xaau7svz3nws5zu6znqncf7okgoe -- valory/test_solana_tx_abci:0.1.0:bafybeiexltz7bw4nphaeukewhvpnxfdv5lhp2j5h7nxu2jkkaippkyofnq +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 +- valory/squads_transaction_settlement_abci:0.1.0:bafybeieyogdw3ittuvrnf5sspwjsxyvjudl7dzxigoqg3op4rs3grtgcqm +- valory/test_solana_tx_abci:0.1.0:bafybeihyqkfndepfivqw5h6nsp56xnrnhlrpla47y3f3ed4mojvgkd27my default_ledger: solana required_ledgers: - solana diff --git a/packages/valory/agents/test_abci/aea-config.yaml b/packages/valory/agents/test_abci/aea-config.yaml index b0486aec18..f01b1ded30 100644 --- a/packages/valory/agents/test_abci/aea-config.yaml +++ b/packages/valory/agents/test_abci/aea-config.yaml @@ -23,8 +23,8 @@ protocols: - valory/ledger_api:1.0.0:bafybeihdk6psr4guxmbcrc26jr2cbgzpd5aljkqvpwo64bvaz7tdti2oni skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/test_abci:0.1.0:bafybeiciihwa5igw5bpdoumvfzkdax7rnsptlqo7ns72fbfr7ggr7ioune +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/test_abci:0.1.0:bafybeifuior5k7kn6eztgizytcex6svqhff7thh5lecpqih4oxuz35hue4 default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/agents/test_ipfs/aea-config.yaml b/packages/valory/agents/test_ipfs/aea-config.yaml index 5092f864ba..316c7a2823 100644 --- a/packages/valory/agents/test_ipfs/aea-config.yaml +++ b/packages/valory/agents/test_ipfs/aea-config.yaml @@ -29,8 +29,8 @@ protocols: - valory/tendermint:0.1.0:bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/test_ipfs_abci:0.1.0:bafybeiaq3nwiqzestjgxcnwgycqimen2plzqvq43okgqzkeptllp24micm +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/test_ipfs_abci:0.1.0:bafybeiblf2tay33ox4cawy7ctvxplvt5ejenn2tggapb5yuq7uepwsylwe default_ledger: ethereum required_ledgers: - ethereum diff --git a/packages/valory/services/register_reset/service.yaml b/packages/valory/services/register_reset/service.yaml index edc339ca32..fa9ad301c0 100644 --- a/packages/valory/services/register_reset/service.yaml +++ b/packages/valory/services/register_reset/service.yaml @@ -1,7 +1,7 @@ name: register_reset author: valory version: 0.1.0 -agent: valory/register_reset:0.1.0:bafybeigpvhmf6shju7vhkhoq7v2ifweyz4vpoco5lvaljmbmulqnxmafca +agent: valory/register_reset:0.1.0:bafybeidmfl2elfnz3qg3k2yn2g66rjontgotxaehgt7eag5qz3647sqira number_of_agents: 4 description: Test and debug tendermint reset mechanism. aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/valory/skills/abstract_round_abci/base.py b/packages/valory/skills/abstract_round_abci/base.py index 9718c8e981..519da90159 100644 --- a/packages/valory/skills/abstract_round_abci/base.py +++ b/packages/valory/skills/abstract_round_abci/base.py @@ -94,6 +94,16 @@ NUMBER_OF_BLOCKS_TRACKED = 10_000 NUMBER_OF_ROUNDS_TRACKED = 50 +DONE_EVENT_ATTRIBUTE = "done_event" +NO_MAJORITY_EVENT_ATTRIBUTE = "no_majority_event" +NONE_EVENT_ATTRIBUTE = "none_event" +NEGATIVE_EVENT_ATTRIBUTE = "negative_event" +FAIL_EVENT_ATTRIBUTE = "fail_event" +PAYLOAD_KEY_ATTRIBUTE = "payload_key" +COLLECTION_KEY_ATTRIBUTE = "collection_key" +SELECTION_KEY_ATTRIBUTE = "selection_key" +REQUIRED_BLOCK_CONFIRMATIONS_ATTRIBUTE = "required_block_confirmations" + EventType = TypeVar("EventType") @@ -1062,6 +1072,8 @@ class AbstractRound(Generic[EventType], ABC, metaclass=_MetaAbstractRound): round_id: str + required_class_attributes: Tuple[str, ...] = tuple() + def __init__( self, synchronized_data: BaseSynchronizedData, @@ -1074,6 +1086,16 @@ def __init__( self._previous_round_payload_class = previous_round_payload_class self.context = context + self._check_required_attributes() + + def _check_required_attributes(self) -> None: + """Check that required attributes are set.""" + for attribute in self.required_class_attributes: + if not hasattr(self, attribute): + raise AbstractRoundInternalError( + f"'{attribute}' not set on {self.__class__}" + ) + @classmethod def auto_round_id(cls) -> str: """ @@ -1549,6 +1571,14 @@ class CollectSameUntilThresholdRound(CollectionRound, ABC): collection_key: str selection_key: Union[str, Tuple[str, ...]] + required_class_attributes: Tuple[str, ...] = ( + DONE_EVENT_ATTRIBUTE, + NO_MAJORITY_EVENT_ATTRIBUTE, + NONE_EVENT_ATTRIBUTE, + COLLECTION_KEY_ATTRIBUTE, + SELECTION_KEY_ATTRIBUTE, + ) + @property def threshold_reached( self, @@ -1631,6 +1661,12 @@ class OnlyKeeperSendsRound(AbstractRound, ABC): fail_event: Any payload_key: Union[str, Tuple[str, ...]] + required_class_attributes: Tuple[str, ...] = ( + DONE_EVENT_ATTRIBUTE, + FAIL_EVENT_ATTRIBUTE, + PAYLOAD_KEY_ATTRIBUTE, + ) + def process_payload(self, payload: BaseTxPayload) -> None: """Handle a deploy safe payload.""" if payload.round_count != self.synchronized_data.round_count: @@ -1726,6 +1762,14 @@ class VotingRound(CollectionRound, ABC): no_majority_event: Any collection_key: str + required_class_attributes: Tuple[str, ...] = ( + DONE_EVENT_ATTRIBUTE, + NEGATIVE_EVENT_ATTRIBUTE, + NONE_EVENT_ATTRIBUTE, + NO_MAJORITY_EVENT_ATTRIBUTE, + COLLECTION_KEY_ATTRIBUTE, + ) + @property def vote_count(self) -> Counter: """Get agent payload vote count""" @@ -1790,6 +1834,12 @@ class CollectDifferentUntilThresholdRound(CollectionRound, ABC): collection_key: str required_block_confirmations: int = 0 + required_class_attributes: Tuple[str, ...] = ( + DONE_EVENT_ATTRIBUTE, + COLLECTION_KEY_ATTRIBUTE, + REQUIRED_BLOCK_CONFIRMATIONS_ATTRIBUTE, + ) + @property def collection_threshold_reached( self, @@ -1841,6 +1891,11 @@ class CollectNonEmptyUntilThresholdRound(CollectDifferentUntilThresholdRound, AB none_event: Any selection_key: Union[str, Tuple[str, ...]] + required_class_attributes: Tuple[str, ...] = ( + NONE_EVENT_ATTRIBUTE, + SELECTION_KEY_ATTRIBUTE, + ) + def _get_non_empty_values(self) -> Dict[str, Tuple[Any, ...]]: """Get the non-empty values from the payload, for all attributes.""" non_empty_values: Dict[str, List[List[Any]]] = {} @@ -3803,6 +3858,8 @@ class PendingOffencesRound(CollectSameUntilThresholdRound): payload_class = PendingOffencesPayload synchronized_data_class = BaseSynchronizedData + required_class_attributes: Tuple[str, ...] = tuple() + def __init__(self, *args: Any, **kwargs: Any) -> None: """Initialize the `PendingOffencesRound`.""" super().__init__(*args, **kwargs) diff --git a/packages/valory/skills/abstract_round_abci/skill.yaml b/packages/valory/skills/abstract_round_abci/skill.yaml index 4cbc034963..66f4a3ce44 100644 --- a/packages/valory/skills/abstract_round_abci/skill.yaml +++ b/packages/valory/skills/abstract_round_abci/skill.yaml @@ -9,7 +9,7 @@ fingerprint: README.md: bafybeievb7bhfm46p5adx3x4gvsynjpq35fcrrapzn5m2whcdt4ufxfvfq __init__.py: bafybeihxbinbrvhj2edqthpzc2mywfzxzkf7l4v5uj6ubwnffrwgzelmre abci_app_chain.py: bafybeibhzrixbp5x26wqhb6ogtr3af5lc4tax7lcsvk4v5rvg4psrq5yzi - base.py: bafybeihm7lf4nfqcwfvs4antge2l7eyc7vrafaw6p5canlxwy4qy4akwme + base.py: bafybeigdcn4xflitqjgujdd6wr5yj4tmrqjhcwn4oampqbfl4lpatchkwq behaviour_utils.py: bafybeidhnu2ucjhlluwthpl4d6374nzmvjopy7byc2uyirajb3kswfggle behaviours.py: bafybeifzbzy2ppabm6dpgvbsuvpgduyg7g7rei6u4ouy3nnak5top5be5u common.py: bafybeib4coyhaxvpup7m25lsab2lpebv2wrkjp2cwihuitxmaibo6u6z2m @@ -26,7 +26,7 @@ fingerprint: test_tools/base.py: bafybeibef4lclyecne5qj4zaxnaxaqzwpxjaitqqmddgsiezduhb7pfxly test_tools/common.py: bafybeibxlx7es632kdoeivfrjahns3kknkxfmw4rj2dcxjwqm5j6vx25sq test_tools/integration.py: bafybeifqq3bx46hz2deph3usvrt7u45tpsapvocofd2zu3yh7rfl5nlmzq - test_tools/rounds.py: bafybeie576yxtiramzt5czpt4hnv76gfetzio2t3k5kprhdhvbpfddbaem + test_tools/rounds.py: bafybeigsg7s7gefmsiq5nkthr7qppb52vhvysfccau7vx4dqeh2fxqeh74 tests/__init__.py: bafybeie54sgqid64dyarbcttz3nnmyympyrtdyxy4lcc7c7yjxhefodbgq tests/conftest.py: bafybeiauvmnuetxooprdsy3vlys3pha6x2rfg7acr3xrdfffr7onlmnave tests/data/__init__.py: bafybeifmqjnrqgbau4tshhdtrosru7xyjky72ljlrf3ynrk76fxjcsgfpi @@ -36,10 +36,10 @@ fingerprint: tests/data/dummy_abci/handlers.py: bafybeifik3ftljs63u7nm4gadxpqbcvqj53p7qftzzzfto3ioad57k3x3u tests/data/dummy_abci/models.py: bafybeiear3i45wbaylrkbnm2fbtqorxx56glul36piuah7m7jb56f5rpoq tests/data/dummy_abci/payloads.py: bafybeiczldqiumb7prcusb7l5vb575vschwyseyigpupvteldfyz7h6fyi - tests/data/dummy_abci/rounds.py: bafybeihhheznpcntg4z5cdd7dysnivo2g4x5biv7blriyiyoouqp6xf5aq + tests/data/dummy_abci/rounds.py: bafybeihhn67atkbvgem5ebttkjbjjauu3evxtyltaykik3epx5sbqfyb3e tests/test_abci_app_chain.py: bafybeihqvjkcwkwxowhb3umtk52us4pd5f6nbppw4ycx76oljw4j3j7xpa tests/test_base.py: bafybeihtx2ktf6uck2l6yw72lvnvm5y224vlgawxette75cluc6juedeqe - tests/test_base_rounds.py: bafybeiadkpwuhz6y5k5ffvoqvyi6nqetf5ov5bmodejge7yvscm6yqzpse + tests/test_base_rounds.py: bafybeiadvit4t54qmh3fxiulcsjg6fu7jphtypnkdpzt72kklk4javju5y tests/test_behaviours.py: bafybeibxxev34avddvezqumr56k7txmqkubl2c5u6y7ydjqn6kp3wabbvq tests/test_behaviours_utils.py: bafybeidkxzhu26r2shkblz2l3syzc62uet4cxrdbschnf7vuwuuior6xkm tests/test_common.py: bafybeiekicwjh3vu5kqppictya2bmqm3p5dcauj7cvsiunvhhultpzmyla diff --git a/packages/valory/skills/abstract_round_abci/test_tools/rounds.py b/packages/valory/skills/abstract_round_abci/test_tools/rounds.py index 77f50c83d2..51ac1e98e8 100644 --- a/packages/valory/skills/abstract_round_abci/test_tools/rounds.py +++ b/packages/valory/skills/abstract_round_abci/test_tools/rounds.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2022-2023 Valory AG +# Copyright 2022-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. @@ -33,6 +33,7 @@ Optional, Tuple, Type, + Union, ) from unittest import mock @@ -134,26 +135,48 @@ class DummyCollectDifferentUntilThresholdRound( ): """Dummy Class for CollectDifferentUntilThresholdRound""" + done_event: Enum = DummyEvent.DONE + collection_key: str = "dummy_collection_key" + required_block_confirmations: int = 0 + class DummyCollectSameUntilThresholdRound(CollectSameUntilThresholdRound, DummyRound): """Dummy Class for CollectSameUntilThresholdRound""" + done_event: Enum = DummyEvent.DONE + no_majority_event: Enum = DummyEvent.NO_MAJORITY + none_event: Enum = DummyEvent.NONE + collection_key: str = "dummy_collection_key" + selection_key: Union[str, Tuple[str, ...]] = "dummy_selection_key" + class DummyOnlyKeeperSendsRound(OnlyKeeperSendsRound, DummyRound): """Dummy Class for OnlyKeeperSendsRound""" + keeper_payload: Optional[BaseTxPayload] = None + done_event: Enum = DummyEvent.DONE fail_event = "FAIL_EVENT" + payload_key: str = "dummy_payload_key" class DummyVotingRound(VotingRound, DummyRound): """Dummy Class for VotingRound""" + done_event: Enum = DummyEvent.DONE + negative_event: Enum = DummyEvent.NEGATIVE + none_event: Enum = DummyEvent.NONE + no_majority_event: Enum = DummyEvent.NO_MAJORITY + collection_key: str = "dummy_collection_key" + class DummyCollectNonEmptyUntilThresholdRound( CollectNonEmptyUntilThresholdRound, DummyRound ): """Dummy Class for `CollectNonEmptyUntilThresholdRound`""" + none_event: Enum = DummyEvent.NONE + selection_key: Union[str, Tuple[str, ...]] = "dummy_selection_key" + class BaseRoundTestClass: # pylint: disable=too-few-public-methods """Base test class.""" diff --git a/packages/valory/skills/abstract_round_abci/tests/data/dummy_abci/rounds.py b/packages/valory/skills/abstract_round_abci/tests/data/dummy_abci/rounds.py index b3ee3bc174..d9d9173148 100644 --- a/packages/valory/skills/abstract_round_abci/tests/data/dummy_abci/rounds.py +++ b/packages/valory/skills/abstract_round_abci/tests/data/dummy_abci/rounds.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2022-2023 Valory AG +# Copyright 2022-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. @@ -63,6 +63,8 @@ class DummyMixinRound(AbstractRound, ABC): done_event = Event.DONE no_majority_event = Event.NO_MAJORITY + none_event = Event.DONE + fail_event = Event.DONE @property def synchronized_data(self) -> SynchronizedData: @@ -116,6 +118,7 @@ class DummyFinalRound(OnlyKeeperSendsRound, DummyMixinRound): """DummyFinalRound""" round_id: str = "dummy_final" + payload_key = "dummy_key" payload_class = DummyFinalPayload payload_attribute: str = "dummy_final" synchronized_data_class = SynchronizedData diff --git a/packages/valory/skills/abstract_round_abci/tests/test_base_rounds.py b/packages/valory/skills/abstract_round_abci/tests/test_base_rounds.py index 06da2581fb..7423906fd0 100644 --- a/packages/valory/skills/abstract_round_abci/tests/test_base_rounds.py +++ b/packages/valory/skills/abstract_round_abci/tests/test_base_rounds.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2021-2023 Valory AG +# Copyright 2021-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. @@ -544,7 +544,7 @@ def test_run( test_round.block_confirmations = 0 test_round.required_block_confirmations = required_confirmations test_round.collection_key = "collection_key" - test_round.done_event = 0 + test_round.done_event = DummyEvent.DONE assert ( test_round.synchronized_data.consensus_threshold <= required_confirmations ), "Incorrect test parametrization: required confirmations cannot be set with a smalled value than the consensus threshold" @@ -609,9 +609,9 @@ def test_get_non_empty_values(self) -> None: non_empty_values = test_round._get_non_empty_values() assert non_empty_values == { - tuple(sorted(self.participants))[i]: (f"agent_{i}", False) - if i != none_payload_idx - else (False,) + tuple(sorted(self.participants))[i]: ( + (f"agent_{i}", False) if i != none_payload_idx else (False,) + ) for i in range(4) } diff --git a/packages/valory/skills/offend_abci/rounds.py b/packages/valory/skills/offend_abci/rounds.py index 9a19d7085f..9917f2310a 100644 --- a/packages/valory/skills/offend_abci/rounds.py +++ b/packages/valory/skills/offend_abci/rounds.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. @@ -48,6 +48,7 @@ class OffendRound(CollectSameUntilThresholdRound): synchronized_data_class = BaseSynchronizedData payload_class = OffencesPayload + required_class_attributes: Tuple[str, ...] = tuple() def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Event]]: """Process the end of the block.""" diff --git a/packages/valory/skills/offend_abci/skill.yaml b/packages/valory/skills/offend_abci/skill.yaml index 74d649f177..5d5fd331f5 100644 --- a/packages/valory/skills/offend_abci/skill.yaml +++ b/packages/valory/skills/offend_abci/skill.yaml @@ -14,7 +14,7 @@ fingerprint: handlers.py: bafybeidb35i5zq5ichb3dxzsjdlqo4baltmtpldf4l7nw3uxaqa2cxaktq models.py: bafybeigzu5qbghaniagvchbaamac4edl23djsb2dhfwuxs47f7n2fljfpi payloads.py: bafybeiaew2vr65nm7gmm4qf5wh445wrwn7hbgm7hlx3jz7k2rucq73dj7m - rounds.py: bafybeie7j4a53uvmb7mw64hwqdkaricthckvduodmjpsslyr42w4633tie + rounds.py: bafybeibhn3gi6th6x62dqhaltu5f4p4zryxjaeuqekfiwmmvmqixtwxp3m tests/__init__.py: bafybeibdfveo3untltoeuvvv3nalsg2kilbwpxg6ypxax73b44nksva26m tests/test_behaviours.py: bafybeievl6cyr5dmzu4r57urspvl4uy2yzty5a3mhrbxqmezn6ph6ycl2i tests/test_dialogues.py: bafybeifqufxzmjmzph7ub2eucz3atgadl2lubf45xriaqgqgvck4yf5xs4 @@ -27,7 +27,7 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {} diff --git a/packages/valory/skills/offend_slash_abci/skill.yaml b/packages/valory/skills/offend_slash_abci/skill.yaml index 7b705fdd03..02fc02a3b6 100644 --- a/packages/valory/skills/offend_slash_abci/skill.yaml +++ b/packages/valory/skills/offend_slash_abci/skill.yaml @@ -23,11 +23,11 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/offend_abci:0.1.0:bafybeiai64ovubechzkroegg2s4wys62d5vtlzpw24mybp2dl2t3p6zr4u -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e -- valory/slashing_abci:0.1.0:bafybeigec47d4smbsm3x375svsv4hw3aa53xue7dnugve4kvk36jauw5sm +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/offend_abci:0.1.0:bafybeihtrnlnf7ejk5zqdim2a34ygckgefokvzkqft2qrroambhkxzxrsi +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 +- valory/slashing_abci:0.1.0:bafybeihkgvz4aj75mlogdcf72atnhjstxfieuaxwn2njd3yq4ra44j4ljq behaviours: main: args: {} diff --git a/packages/valory/skills/register_reset_abci/skill.yaml b/packages/valory/skills/register_reset_abci/skill.yaml index 222a6e1e50..20cf944a5c 100644 --- a/packages/valory/skills/register_reset_abci/skill.yaml +++ b/packages/valory/skills/register_reset_abci/skill.yaml @@ -24,9 +24,9 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 behaviours: main: args: {} diff --git a/packages/valory/skills/register_reset_recovery_abci/rounds.py b/packages/valory/skills/register_reset_recovery_abci/rounds.py index fe686ecc17..efabf97cd3 100644 --- a/packages/valory/skills/register_reset_recovery_abci/rounds.py +++ b/packages/valory/skills/register_reset_recovery_abci/rounds.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2022-2023 Valory AG +# Copyright 2022-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. @@ -46,6 +46,7 @@ class RoundCountRound(CollectSameUntilThresholdRound): payload_class = RoundCountPayload synchronized_data_class = BaseSynchronizedData + required_class_attributes: Tuple[str, ...] = tuple() def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Event]]: """Process the end of the block.""" diff --git a/packages/valory/skills/register_reset_recovery_abci/skill.yaml b/packages/valory/skills/register_reset_recovery_abci/skill.yaml index 7b3085a293..59ebdfa570 100644 --- a/packages/valory/skills/register_reset_recovery_abci/skill.yaml +++ b/packages/valory/skills/register_reset_recovery_abci/skill.yaml @@ -14,7 +14,7 @@ fingerprint: handlers.py: bafybeih26owzkshjt3itwvkdb2j3rrmsp3dxeeiiubhq6tfy2lalog7lcq models.py: bafybeicrwzylgk6aui3b6t3ipzg6iaqmxctprlf55b3xyvnt6auqcvzkvi payloads.py: bafybeigcwu3xbu23z6ezcnxvabwx2lzpkoyzefprvjvlow4nejjhp2q22m - rounds.py: bafybeieql5lhyqe24tc3evwm7bgazqnsozumsjekhe7xzlzwmwgrq6uhxa + rounds.py: bafybeiegepeupysrvhn66kiieqyuxvlpcglg3ackdpmbhenkcmk2f2c67e tests/__init__.py: bafybeigl6apxxiffa4ls45lukhbquaunzm2cspxdyf6thy5dz2rya44seq tests/test_behaviours.py: bafybeic6kzdhckipmdsp4uaf7dxx7kmqp4dv3xyeiueoa3fxuanqejpjre tests/test_dialogues.py: bafybeifna75wlo2zpymsx2oa5ct7uzujgo6ahnvd5yhzvnn6ekoxrgeaei @@ -26,8 +26,8 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga behaviours: main: args: {} diff --git a/packages/valory/skills/register_termination_abci/skill.yaml b/packages/valory/skills/register_termination_abci/skill.yaml index 06eb216ef6..b8425f78ce 100644 --- a/packages/valory/skills/register_termination_abci/skill.yaml +++ b/packages/valory/skills/register_termination_abci/skill.yaml @@ -23,10 +23,10 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e -- valory/termination_abci:0.1.0:bafybeifi2uodnrjsrivj53g3sjutocmyusbx6mlsb6oanqdyt2mfbyvusy +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 +- valory/termination_abci:0.1.0:bafybeiaggva65tsaikrqstowr22r4udvimb2gbu5mpspplwehbyj6sc5ra behaviours: main: args: {} diff --git a/packages/valory/skills/registration_abci/rounds.py b/packages/valory/skills/registration_abci/rounds.py index a191ddd022..10309afeea 100644 --- a/packages/valory/skills/registration_abci/rounds.py +++ b/packages/valory/skills/registration_abci/rounds.py @@ -102,6 +102,7 @@ class RegistrationRound(CollectSameUntilThresholdRound): # this allows rejoining agents to send payloads _allow_rejoin_payloads = True + required_class_attributes: Tuple[str, ...] = tuple() def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Event]]: """Process the end of the block.""" diff --git a/packages/valory/skills/registration_abci/skill.yaml b/packages/valory/skills/registration_abci/skill.yaml index e3cae519e6..d42c2e3b67 100644 --- a/packages/valory/skills/registration_abci/skill.yaml +++ b/packages/valory/skills/registration_abci/skill.yaml @@ -14,7 +14,7 @@ fingerprint: handlers.py: bafybeifby6yecei2d7jvxbqrc3tpyemb7xdb4ood2kny5dqja26qnxrf24 models.py: bafybeifkfjsfkjy2x32cbuoewxujfgpcl3wk3fji6kq27ofr2zcfe7l5oe payloads.py: bafybeiacrixfazch2a5ydj7jfk2pnvlxwkygqlwzkfmdeldrj4fqgwyyzm - rounds.py: bafybeifch5qouoop77ef6ghsdflzuy7bcgn4upxjuusxalqzbk53vrxj4q + rounds.py: bafybeigxw7gcsfwnpzuokl64kq4mtclbvnh3qv5guskqzvlykhdri57dbi tests/__init__.py: bafybeiab2s4vkmbz5bc4wggcclapdbp65bosv4en5zaazk5dwmldojpqja tests/test_behaviours.py: bafybeicwlo3y44sf7gzkyzfuzhwqkax4hln3oforbcvy4uitlgleft3cge tests/test_dialogues.py: bafybeibeqnpzuzgcfb6yz76htslwsbbpenihswbp7j3qdyq42yswjq25l4 @@ -32,7 +32,7 @@ protocols: - valory/http:1.0.0:bafybeifugzl63kfdmwrxwphrnrhj7bn6iruxieme3a4ntzejf6kmtuwmae - valory/tendermint:0.1.0:bafybeig4mi3vmlv5zpbjbfuzcgida6j5f2nhrpedxicmrrfjweqc5r7cra skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {} diff --git a/packages/valory/skills/reset_pause_abci/rounds.py b/packages/valory/skills/reset_pause_abci/rounds.py index 1fd666acb0..1cbd1ad520 100644 --- a/packages/valory/skills/reset_pause_abci/rounds.py +++ b/packages/valory/skills/reset_pause_abci/rounds.py @@ -48,6 +48,7 @@ class ResetAndPauseRound(CollectSameUntilThresholdRound): payload_class = ResetPausePayload _allow_rejoin_payloads = True synchronized_data_class = BaseSynchronizedData + required_class_attributes: Tuple[str, ...] = tuple() def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Event]]: """Process the end of the block.""" diff --git a/packages/valory/skills/reset_pause_abci/skill.yaml b/packages/valory/skills/reset_pause_abci/skill.yaml index 8ba6e84f73..5edab3e22d 100644 --- a/packages/valory/skills/reset_pause_abci/skill.yaml +++ b/packages/valory/skills/reset_pause_abci/skill.yaml @@ -14,7 +14,7 @@ fingerprint: handlers.py: bafybeie22h45jr2opf2waszr3qt5km2fppcaahalcavhzutgb6pyyywqxq models.py: bafybeiagj2e73wvzfqti6chbgkxh5tawzdjwqnxlo2bcfa5lyzy6ogzh2u payloads.py: bafybeihychpsosovpyq7bh6aih2cyjkxr23j7becd5apetrqivvnolzm7i - rounds.py: bafybeifi2gpj2piilxtqcvv6lxhwpnbl7xs3a3trh3wvlv2wihowoon4tm + rounds.py: bafybeidg3owxgtd4464oipbz7r67ponvnzdsbgbtpwilokasixinatyzmi tests/__init__.py: bafybeiclijinxvycj7agcagt2deuuyh7zxyp7k2s55la6lh3jghzqvfux4 tests/test_behaviours.py: bafybeigblrmkjci6at74yetaevgw5zszhivpednbok7fby4tqn7zt2vemy tests/test_dialogues.py: bafybeif7pe7v34cfznzv4htyuevx733ersmk4bqjcgajn2535jmuujdmzm @@ -26,7 +26,7 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {} diff --git a/packages/valory/skills/slashing_abci/rounds.py b/packages/valory/skills/slashing_abci/rounds.py index 1db1da5b95..04ed612e95 100644 --- a/packages/valory/skills/slashing_abci/rounds.py +++ b/packages/valory/skills/slashing_abci/rounds.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2022-2023 Valory AG +# Copyright 2022-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. @@ -116,6 +116,7 @@ class SlashingCheckRound(CollectSameUntilThresholdRound): get_name(SynchronizedData.slashing_in_flight), get_name(SynchronizedData.slashing_majority_reached), ) + required_class_attributes: Tuple[str, ...] = tuple() def process_payload(self, payload: BaseTxPayload) -> None: """Process payload.""" diff --git a/packages/valory/skills/slashing_abci/skill.yaml b/packages/valory/skills/slashing_abci/skill.yaml index d1dbb1c8fe..b755c93e5c 100644 --- a/packages/valory/skills/slashing_abci/skill.yaml +++ b/packages/valory/skills/slashing_abci/skill.yaml @@ -13,7 +13,7 @@ fingerprint: handlers.py: bafybeihagfgueqadffrmvqwkrjk4vhalhfvsctquay2uiqru2h4vur6j5e models.py: bafybeifr2eeesjvoo52z5fvnar4j7q3o7etqzq4arqbxn622gvdyfymz4u payloads.py: bafybeif6hfnib6yrurrju4dtxnccwsnoi2keqp7sr4qas6xegseunygydu - rounds.py: bafybeibiypvjy7f2cs6h33jtu44w3dhgfj6lrvgh6juidgas3n4bxbvc4a + rounds.py: bafybeicrwm74voy4a2otkg3zyfc7e5o27iypfmvb5iihy6dlnbnjsyttpu tests/__init__.py: bafybeiesff34nldcxucqzb7fz5bg6awtqxgcafvasecdsh5eutmtahwaeu tests/test_behaviours.py: bafybeihhzhfmd7jvybvmsuvryajafuqzkjjd7lifxlva6xyl2vo7jeb5yu tests/test_dialogues.py: bafybeiaipkfzciwtc6emjsi2vatof3tjptxww5cwqymefs57co7f2hb6pe @@ -29,8 +29,8 @@ contracts: protocols: - valory/contract_api:1.0.0:bafybeidgu7o5llh26xp3u3ebq3yluull5lupiyeu6iooi2xyymdrgnzq5i skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/transaction_settlement_abci:0.1.0:bafybeiagciws2zpj2gi6rmr6fz2y6xs25r5mkfdakc2gmg5aje4tpcxibe behaviours: main: args: {} diff --git a/packages/valory/skills/squads_transaction_settlement_abci/skill.yaml b/packages/valory/skills/squads_transaction_settlement_abci/skill.yaml index fb0a726845..9a39a033fd 100644 --- a/packages/valory/skills/squads_transaction_settlement_abci/skill.yaml +++ b/packages/valory/skills/squads_transaction_settlement_abci/skill.yaml @@ -21,7 +21,7 @@ contracts: protocols: - valory/contract_api:1.0.0:bafybeidgu7o5llh26xp3u3ebq3yluull5lupiyeu6iooi2xyymdrgnzq5i skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {} diff --git a/packages/valory/skills/termination_abci/rounds.py b/packages/valory/skills/termination_abci/rounds.py index b11cece668..275bc7bf52 100644 --- a/packages/valory/skills/termination_abci/rounds.py +++ b/packages/valory/skills/termination_abci/rounds.py @@ -79,6 +79,7 @@ class BackgroundRound(CollectSameUntilThresholdRound): payload_class = BackgroundPayload synchronized_data_class = SynchronizedData + required_class_attributes: Tuple[str, ...] = tuple() def process_payload(self, payload: BaseTxPayload) -> None: """Process payload.""" diff --git a/packages/valory/skills/termination_abci/skill.yaml b/packages/valory/skills/termination_abci/skill.yaml index 19471e30c5..6fc6d86b87 100644 --- a/packages/valory/skills/termination_abci/skill.yaml +++ b/packages/valory/skills/termination_abci/skill.yaml @@ -12,7 +12,7 @@ fingerprint: handlers.py: bafybeibh5b3p4bdvbnwiqwormduqjvuievylb3s2wgj4ald4led7gx2kji models.py: bafybeihak6dcfqpjxbryeixksdn5lbdifq5ondzlh4wiweoptzzn42wco4 payloads.py: bafybeihbwfunongkws5lck67sdgpnytq6bdbiv22yuehmyfth4qeypjcpa - rounds.py: bafybeifouwd4dv6ummirb45e7qxnyyadg2bsrl4kx6xbr6rvodz3lsqgqa + rounds.py: bafybeiawd6lsajl5uayqkryu6yhlqwafsi6zaf4wjvfzrtzip6kv2fadb4 tests/__init__.py: bafybeigsjjibb2gcybzp5yrsy25vyiu54rw6oaeyw5onaqemsvul7bmroi tests/test_behaviours.py: bafybeibkogjosxk6ktneru5ddgzguuiw2wuvx2n63d3rpyqhoy7llnoc5i tests/test_dialogues.py: bafybeicb6gfanfyt3wiq3svdlvtxiuzpk72oxp7cfdeq4ezed7ixee5yae @@ -29,8 +29,8 @@ contracts: protocols: - valory/contract_api:1.0.0:bafybeidgu7o5llh26xp3u3ebq3yluull5lupiyeu6iooi2xyymdrgnzq5i skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/transaction_settlement_abci:0.1.0:bafybeigh2vkt74jrad5gtsczrgqcuhcqe7jkgjy7jdw56yamlzwwnaymjy +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/transaction_settlement_abci:0.1.0:bafybeiagciws2zpj2gi6rmr6fz2y6xs25r5mkfdakc2gmg5aje4tpcxibe behaviours: main: args: {} diff --git a/packages/valory/skills/test_abci/skill.yaml b/packages/valory/skills/test_abci/skill.yaml index b2b964c534..b0650824fb 100644 --- a/packages/valory/skills/test_abci/skill.yaml +++ b/packages/valory/skills/test_abci/skill.yaml @@ -27,7 +27,7 @@ contracts: [] protocols: [] skills: - valory/abstract_abci:0.1.0:bafybeieo7pe5wqjphs5izpz5aujjbubymlxub62b3rhx6yglu65ibalffu -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {} diff --git a/packages/valory/skills/test_ipfs_abci/skill.yaml b/packages/valory/skills/test_ipfs_abci/skill.yaml index b1cdf813d9..1274b6fda0 100644 --- a/packages/valory/skills/test_ipfs_abci/skill.yaml +++ b/packages/valory/skills/test_ipfs_abci/skill.yaml @@ -27,7 +27,7 @@ connections: [] contracts: [] protocols: [] skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {} diff --git a/packages/valory/skills/test_solana_tx_abci/skill.yaml b/packages/valory/skills/test_solana_tx_abci/skill.yaml index af7db87c36..ca3d5fab9d 100644 --- a/packages/valory/skills/test_solana_tx_abci/skill.yaml +++ b/packages/valory/skills/test_solana_tx_abci/skill.yaml @@ -23,10 +23,10 @@ contracts: protocols: - valory/contract_api:1.0.0:bafybeidgu7o5llh26xp3u3ebq3yluull5lupiyeu6iooi2xyymdrgnzq5i skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti -- valory/registration_abci:0.1.0:bafybeib3n6vqkfbrcubcbliebjnuwyywdinxkbzt76n6gbn2kg7ace47dq -- valory/reset_pause_abci:0.1.0:bafybeihkj6lmaypspyxe5qqrjgnolyck62pyvqoylr24ab6ue4steqcw7e -- valory/squads_transaction_settlement_abci:0.1.0:bafybeihezye3mhdkdlirehgdbtgda2xaau7svz3nws5zu6znqncf7okgoe +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq +- valory/registration_abci:0.1.0:bafybeihy5qodbffjfhn42caqpaztd2qycxeyoysk5djhudjbtsgr5wliga +- valory/reset_pause_abci:0.1.0:bafybeiguw4jyb5k5uavp4aue6b52fbftuonvnhwmfolrl4kk2ulsmremq4 +- valory/squads_transaction_settlement_abci:0.1.0:bafybeieyogdw3ittuvrnf5sspwjsxyvjudl7dzxigoqg3op4rs3grtgcqm behaviours: main: args: {} diff --git a/packages/valory/skills/transaction_settlement_abci/fsm_specification.yaml b/packages/valory/skills/transaction_settlement_abci/fsm_specification.yaml index 70b6e1f22c..a39ba513ab 100644 --- a/packages/valory/skills/transaction_settlement_abci/fsm_specification.yaml +++ b/packages/valory/skills/transaction_settlement_abci/fsm_specification.yaml @@ -58,6 +58,7 @@ transition_func: (FinalizationRound, FINALIZE_TIMEOUT): SelectKeeperTransactionSubmissionBAfterTimeoutRound (FinalizationRound, INSUFFICIENT_FUNDS): SelectKeeperTransactionSubmissionBRound (RandomnessTransactionSubmissionRound, DONE): SelectKeeperTransactionSubmissionARound + (RandomnessTransactionSubmissionRound, NONE): RandomnessTransactionSubmissionRound (RandomnessTransactionSubmissionRound, NO_MAJORITY): RandomnessTransactionSubmissionRound (RandomnessTransactionSubmissionRound, ROUND_TIMEOUT): RandomnessTransactionSubmissionRound (ResetRound, DONE): RandomnessTransactionSubmissionRound diff --git a/packages/valory/skills/transaction_settlement_abci/rounds.py b/packages/valory/skills/transaction_settlement_abci/rounds.py index d6231ee3db..d8837c13b8 100644 --- a/packages/valory/skills/transaction_settlement_abci/rounds.py +++ b/packages/valory/skills/transaction_settlement_abci/rounds.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2021-2023 Valory AG +# Copyright 2021-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. @@ -64,6 +64,11 @@ TX_HASH_LENGTH = 66 RETRIES_LENGTH = 64 +DONE_EVENT_ATTRIBUTE = "done_event" +NO_MAJORITY_EVENT_ATTRIBUTE = "no_majority_event" +COLLECTION_KEY_ATTRIBUTE = "collection_key" +SELECTION_KEY_ATTRIBUTE = "selection_key" + class Event(Enum): """Event enumeration for the price estimation demo.""" @@ -271,6 +276,8 @@ class FinalizationRound(OnlyKeeperSendsRound): payload_class = FinalizationTxPayload synchronized_data_class = SynchronizedData + required_class_attributes: Tuple[str, ...] = tuple() + def end_block( # pylint: disable=too-many-return-statements self, ) -> Optional[ @@ -340,6 +347,7 @@ class RandomnessTransactionSubmissionRound(CollectSameUntilThresholdRound): payload_class = RandomnessPayload synchronized_data_class = SynchronizedData done_event = Event.DONE + none_event = Event.NONE no_majority_event = Event.NO_MAJORITY collection_key = get_name(SynchronizedData.participant_to_randomness) selection_key = ( @@ -357,6 +365,12 @@ class SelectKeeperTransactionSubmissionARound(CollectSameUntilThresholdRound): no_majority_event = Event.NO_MAJORITY collection_key = get_name(SynchronizedData.participant_to_selection) selection_key = get_name(SynchronizedData.keepers) + required_class_attributes: Tuple[str, ...] = ( + DONE_EVENT_ATTRIBUTE, + NO_MAJORITY_EVENT_ATTRIBUTE, + COLLECTION_KEY_ATTRIBUTE, + SELECTION_KEY_ATTRIBUTE, + ) def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Enum]]: """Process the end of the block.""" @@ -381,6 +395,8 @@ class SelectKeeperTransactionSubmissionBAfterTimeoutRound( ): """A round in which a new keeper is selected for tx submission after a round timeout of the previous keeper""" + required_class_attributes: Tuple[str, ...] = tuple() + def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Enum]]: """Process the end of the block.""" if self.threshold_reached: @@ -462,6 +478,8 @@ class CheckTransactionHistoryRound(CollectSameUntilThresholdRound): collection_key = get_name(SynchronizedData.participant_to_check) selection_key = get_name(SynchronizedData.most_voted_check_result) + required_class_attributes: Tuple[str, ...] = tuple() + def end_block( # pylint: disable=too-many-return-statements self, ) -> Optional[Tuple[BaseSynchronizedData, Enum]]: @@ -603,6 +621,8 @@ class ResetRound(CollectSameUntilThresholdRound): payload_class = ResetPayload synchronized_data_class = SynchronizedData + required_class_attributes: Tuple[str, ...] = tuple() + def end_block(self) -> Optional[Tuple[BaseSynchronizedData, Event]]: """Process the end of the block.""" if self.threshold_reached: @@ -653,6 +673,7 @@ class TransactionSubmissionAbciApp(AbciApp[Event]): Transition states: 0. RandomnessTransactionSubmissionRound - done: 1. + - none: 0. - round timeout: 0. - no majority: 0. 1. SelectKeeperTransactionSubmissionARound @@ -730,6 +751,7 @@ class TransactionSubmissionAbciApp(AbciApp[Event]): transition_function: AbciAppTransitionFunction = { RandomnessTransactionSubmissionRound: { Event.DONE: SelectKeeperTransactionSubmissionARound, + Event.NONE: RandomnessTransactionSubmissionRound, Event.ROUND_TIMEOUT: RandomnessTransactionSubmissionRound, Event.NO_MAJORITY: RandomnessTransactionSubmissionRound, }, diff --git a/packages/valory/skills/transaction_settlement_abci/skill.yaml b/packages/valory/skills/transaction_settlement_abci/skill.yaml index e8e956257b..cedd4d3c1c 100644 --- a/packages/valory/skills/transaction_settlement_abci/skill.yaml +++ b/packages/valory/skills/transaction_settlement_abci/skill.yaml @@ -10,12 +10,12 @@ fingerprint: __init__.py: bafybeicyrp6x2efg43gfdekxuofrlidc3w6aubzmyioqwnryropp6u7sby behaviours.py: bafybeibv5y34bwaloj455bjws3a2aeh2bgi4dclq2f5d35apm2mloen5xa dialogues.py: bafybeigabhaykiyzbluu4mk6bbrmqhzld2kyp32pg24bvjmzrrb74einwm - fsm_specification.yaml: bafybeigdj64py4zjihcxdkvtrydbxyeh4slr2kkghltz3upnupdgad4et4 + fsm_specification.yaml: bafybeiapzjwj34sisjcgzznqh3vqkcv3kfqw3jiucjvnw632yyo3v6dudy handlers.py: bafybeie42qa3csgy6oompuqs2qnkat5mnslepbbwmgoxv6ljme4jofa5pe models.py: bafybeiguxishqvtvlyznok3xjnzm4t6vfflamcvz5vtecq5esbldsxuc5e payload_tools.py: bafybeiatlbw3vyo5ppjhxf4psdvkwubmrjolsprf44lis5ozfkjo7o3cba payloads.py: bafybeiclhjnsgylqzfnu2azlqxor3vyldaoof757dnfwz5xbwejk2ro2cm - rounds.py: bafybeieo5l6gh276hhtztphloyknb5ew66hvqhzzjiv26isaz7ptvtqjgu + rounds.py: bafybeiacfaz7lf7eabn33miy6cgav3yt54k3uy3ukv45lizhprifprvddq test_tools/__init__.py: bafybeibj2blgxzvcgdi5gzcnlzs2nt7bpdifzvjjlxlrkeutjy2qrqbwau test_tools/integration.py: bafybeictb7ym4xsbo3ti5y2a2fpg344graa4d7352oozsea5rbab3kq4ae tests/__init__.py: bafybeifukcwmf2ewkjqdu7j6xzmaovgrul7jnea5lrl4o3ianoofje6vfa @@ -38,7 +38,7 @@ protocols: - valory/contract_api:1.0.0:bafybeidgu7o5llh26xp3u3ebq3yluull5lupiyeu6iooi2xyymdrgnzq5i - valory/ledger_api:1.0.0:bafybeihdk6psr4guxmbcrc26jr2cbgzpd5aljkqvpwo64bvaz7tdti2oni skills: -- valory/abstract_round_abci:0.1.0:bafybeibiw4oqwqvo4jccwz5fb73iardzychgvcl66tceiildohoju2ikti +- valory/abstract_round_abci:0.1.0:bafybeiflrbdaclbmi2md2brc7emyv2pwrckv3ifjmce6oszffcccvhxxeq behaviours: main: args: {}