Merge pull request #3547 from derekpierre/ape-0.8

Update to Ape 0.8
pull/3554/head
Derek Pierre 2024-08-26 08:12:35 -04:00 committed by derekpierre
commit b00485822b
No known key found for this signature in database
9 changed files with 1119 additions and 1088 deletions

View File

@ -1,44 +1,42 @@
abnf==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
aiohappyeyeballs==2.3.2 ; python_version >= "3.9" and python_version < "4.0"
aiohttp==3.10.0 ; python_version >= "3.9" and python_version < "4"
aiohappyeyeballs==2.4.0 ; python_version >= "3.9" and python_version < "4"
aiohttp==3.10.5 ; python_version >= "3.9" and python_version < "4"
aiosignal==1.3.1 ; python_version >= "3.9" and python_version < "4"
annotated-types==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
ape-solidity==0.7.3 ; python_version >= "3.9" and python_version < "4"
ape-solidity==0.8.3 ; python_version >= "3.9" and python_version < "4"
appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4"
asttokens==2.4.1 ; python_version >= "3.9" and python_version < "4"
async-timeout==4.0.3 ; python_version >= "3.9" and python_version < "3.11"
atomicwrites==1.4.1 ; python_version >= "3.9" and python_version < "4" and sys_platform == "win32"
attrs==23.2.0 ; python_version >= "3.9" and python_version < "4"
attrs==24.2.0 ; python_version >= "3.9" and python_version < "4"
atxm==0.5.0 ; python_version >= "3.9" and python_version < "4"
autobahn==23.6.2 ; python_version >= "3.9" and python_version < "4"
automat==22.10.0 ; python_version >= "3.9" and python_version < "4"
autobahn==24.4.2 ; python_version >= "3.9" and python_version < "4"
automat==24.8.1 ; python_version >= "3.9" and python_version < "4"
base58==1.0.3 ; python_version >= "3.9" and python_version < "4"
bitarray==2.9.2 ; python_version >= "3.9" and python_version < "4"
blinker==1.8.2 ; python_version >= "3.9" and python_version < "4"
bytestring-splitter==2.4.1 ; python_version >= "3.9" and python_version < "4"
cached-property==1.5.2 ; python_version >= "3.9" and python_version < "4"
certifi==2024.7.4 ; python_version >= "3.9" and python_version < "4"
cffi==1.16.0 ; python_version >= "3.9" and python_version < "4"
cffi==1.17.0 ; python_version >= "3.9" and python_version < "4"
cfgv==3.4.0 ; python_version >= "3.9" and python_version < "4"
charset-normalizer==3.3.2 ; python_version >= "3.9" and python_version < "4"
ckzg==1.0.2 ; python_version >= "3.9" and python_version < "4"
ckzg==2.0.0 ; python_version >= "3.9" and python_version < "4"
click==8.1.7 ; python_version >= "3.9" and python_version < "4"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4"
constant-sorrow==0.1.0a9 ; python_version >= "3.9" and python_version < "4"
constantly==23.10.4 ; python_version >= "3.9" and python_version < "4"
coverage==7.6.0 ; python_version >= "3.9" and python_version < "4"
coverage[toml]==7.6.0 ; python_version >= "3.9" and python_version < "4"
coverage==7.6.1 ; python_version >= "3.9" and python_version < "4"
coverage[toml]==7.6.1 ; python_version >= "3.9" and python_version < "4"
cryptography==43.0.0 ; python_version >= "3.9" and python_version < "4"
cytoolz==0.12.3 ; python_version >= "3.9" and python_version < "4" and implementation_name == "cpython"
dataclassy==0.11.1 ; python_version >= "3.9" and python_version < "4"
dateparser==1.2.0 ; python_version >= "3.9" and python_version < "4"
decorator==5.1.1 ; python_version >= "3.9" and python_version < "4"
deprecated==1.2.14 ; python_version >= "3.9" and python_version < "4"
distlib==0.3.8 ; python_version >= "3.9" and python_version < "4"
eip712==0.2.7 ; python_version >= "3.9" and python_version < "4"
eth-abi==5.1.0 ; python_version >= "3.9" and python_version < "4"
eth-account==0.11.2 ; python_version >= "3.9" and python_version < "4"
eth-ape==0.7.23 ; python_version >= "3.9" and python_version < "4"
eth-ape==0.8.12 ; python_version >= "3.9" and python_version < "4"
eth-bloom==3.0.1 ; python_version >= "3.9" and python_version < "4"
eth-hash==0.7.0 ; python_version >= "3.9" and python_version < "4"
eth-hash[pycryptodome]==0.7.0 ; python_version >= "3.9" and python_version < "4"
@ -50,8 +48,9 @@ eth-rlp==1.0.1 ; python_version >= "3.9" and python_version < "4"
eth-tester[py-evm]==0.11.0b2 ; python_version >= "3.9" and python_version < "4"
eth-typing==3.5.2 ; python_version >= "3.9" and python_version < "4"
eth-utils==2.3.1 ; python_version >= "3.9" and python_version < "4"
ethpm-types==0.6.14 ; python_version >= "3.9" and python_version < "4"
evm-trace==0.1.5 ; python_version >= "3.9" and python_version < "4"
ethpm-types==0.6.17 ; python_version >= "3.9" and python_version < "4"
eval-type-backport==0.2.0 ; python_version >= "3.9" and python_version < "3.10"
evm-trace==0.2.0 ; python_version >= "3.9" and python_version < "4"
evmchains==0.0.11 ; python_version >= "3.9" and python_version < "4"
exceptiongroup==1.2.2 ; python_version >= "3.9" and python_version < "3.11"
executing==2.0.1 ; python_version >= "3.9" and python_version < "4"
@ -66,7 +65,7 @@ hyperlink==21.0.0 ; python_version >= "3.9" and python_version < "4"
identify==2.6.0 ; python_version >= "3.9" and python_version < "4"
idna==3.7 ; python_version >= "3.9" and python_version < "4"
ijson==3.3.0 ; python_version >= "3.9" and python_version < "4"
importlib-metadata==8.2.0 ; python_version >= "3.9" and python_version < "3.10"
importlib-metadata==8.4.0 ; python_version >= "3.9" and python_version < "3.10"
incremental==24.7.2 ; python_version >= "3.9" and python_version < "4"
iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "4"
ipython==8.18.1 ; python_version >= "3.9" and python_version < "4"
@ -81,7 +80,7 @@ lru-dict==1.2.0 ; python_version >= "3.9" and python_version < "4"
mako==1.3.5 ; python_version >= "3.9" and python_version < "4"
markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "4"
markupsafe==2.1.5 ; python_version >= "3.9" and python_version < "4"
marshmallow==3.21.3 ; python_version >= "3.9" and python_version < "4"
marshmallow==3.22.0 ; python_version >= "3.9" and python_version < "4"
matplotlib-inline==0.1.7 ; python_version >= "3.9" and python_version < "4"
maya==0.6.1 ; python_version >= "3.9" and python_version < "4"
mdurl==0.1.2 ; python_version >= "3.9" and python_version < "4"
@ -94,7 +93,7 @@ nodeenv==1.9.1 ; python_version >= "3.9" and python_version < "4"
nucypher-core==0.13.0 ; python_version >= "3.9" and python_version < "4"
numpy==1.26.4 ; python_version >= "3.9" and python_version < "4"
packaging==23.2 ; python_version >= "3.9" and python_version < "4"
pandas==1.5.3 ; python_version >= "3.9" and python_version < "4"
pandas==2.2.2 ; python_version >= "3.9" and python_version < "4"
parsimonious==0.10.0 ; python_version >= "3.9" and python_version < "4"
parso==0.8.4 ; python_version >= "3.9" and python_version < "4"
pendulum==3.0.0 ; python_version >= "3.9" and python_version < "4"
@ -105,18 +104,17 @@ ply==3.11 ; python_version >= "3.9" and python_version < "4"
pre-commit==2.21.0 ; python_version >= "3.9" and python_version < "4"
prometheus-client==0.20.0 ; python_version >= "3.9" and python_version < "4"
prompt-toolkit==3.0.47 ; python_version >= "3.9" and python_version < "4"
protobuf==5.27.2 ; python_version >= "3.9" and python_version < "4"
protobuf==5.27.3 ; python_version >= "3.9" and python_version < "4"
ptyprocess==0.7.0 ; python_version >= "3.9" and python_version < "4" and sys_platform != "win32"
pure-eval==0.2.3 ; python_version >= "3.9" and python_version < "4"
py-cid==0.3.0 ; python_version >= "3.9" and python_version < "4"
py-ecc==7.0.1 ; python_version >= "3.9" and python_version < "4"
py-evm==0.10.1b1 ; python_version >= "3.9" and python_version < "4"
py-geth==4.4.0 ; python_version >= "3.9" and python_version < "4"
py-evm==0.10.1b2 ; python_version >= "3.9" and python_version < "4"
py-geth==5.0.0 ; python_version >= "3.9" and python_version < "4"
py-multibase==1.0.3 ; python_version >= "3.9" and python_version < "4"
py-multicodec==0.2.1 ; python_version >= "3.9" and python_version < "4"
py-multihash==0.2.3 ; python_version >= "3.9" and python_version < "4"
py-solc-x==2.0.3 ; python_version >= "3.9" and python_version < "4"
py==1.11.0 ; python_version >= "3.9" and python_version < "4"
pyasn1-modules==0.4.0 ; python_version >= "3.9" and python_version < "4"
pyasn1==0.6.0 ; python_version >= "3.9" and python_version < "4"
pychalk==2.0.1 ; python_version >= "3.9" and python_version < "4"
@ -125,50 +123,48 @@ pycryptodome==3.20.0 ; python_version >= "3.9" and python_version < "4"
pydantic-core==2.20.1 ; python_version >= "3.9" and python_version < "4.0"
pydantic-settings==2.4.0 ; python_version >= "3.9" and python_version < "4"
pydantic==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
pygithub==1.59.1 ; python_version >= "3.9" and python_version < "4"
pygments==2.18.0 ; python_version >= "3.9" and python_version < "4"
pyjwt[crypto]==2.8.0 ; python_version >= "3.9" and python_version < "4"
pynacl==1.5.0 ; python_version >= "3.9" and python_version < "4"
pyopenssl==24.2.1 ; python_version >= "3.9" and python_version < "4"
pytest-cov==5.0.0 ; python_version >= "3.9" and python_version < "4"
pytest-mock==3.14.0 ; python_version >= "3.9" and python_version < "4"
pytest-timeout==2.2.0 ; python_version >= "3.9" and python_version < "4"
pytest-timeout==2.3.1 ; python_version >= "3.9" and python_version < "4"
pytest-twisted==1.14.2 ; python_version >= "3.9" and python_version < "4"
pytest==6.2.5 ; python_version >= "3.9" and python_version < "4"
pytest==8.3.2 ; python_version >= "3.9" and python_version < "4"
python-baseconv==1.2.2 ; python_version >= "3.9" and python_version < "4"
python-dateutil==2.9.0.post0 ; python_version >= "3.9" and python_version < "4"
python-dotenv==1.0.1 ; python_version >= "3.9" and python_version < "4"
pytz==2024.1 ; python_version >= "3.9" and python_version < "4"
pyunormalize==15.1.0 ; python_version >= "3.9" and python_version < "4"
pywin32==306 ; python_version >= "3.9" and python_version < "4" and platform_system == "Windows"
pyyaml==6.0.1 ; python_version >= "3.9" and python_version < "4"
pyyaml==6.0.2 ; python_version >= "3.9" and python_version < "4"
referencing==0.35.1 ; python_version >= "3.9" and python_version < "4"
regex==2024.7.24 ; python_version >= "3.9" and python_version < "4"
requests==2.32.3 ; python_version >= "3.9" and python_version < "4"
rich==13.7.1 ; python_version >= "3.9" and python_version < "4"
rlp==4.0.1 ; python_version >= "3.9" and python_version < "4"
rpds-py==0.19.1 ; python_version >= "3.9" and python_version < "4"
rpds-py==0.20.0 ; python_version >= "3.9" and python_version < "4"
safe-pysha3==1.0.4 ; python_version >= "3.9" and python_version < "4" and implementation_name == "cpython"
semantic-version==2.10.0 ; python_version >= "3.9" and python_version < "4"
service-identity==24.1.0 ; python_version >= "3.9" and python_version < "4"
setuptools==72.1.0 ; python_version >= "3.9" and python_version < "4"
setuptools==73.0.1 ; python_version >= "3.9" and python_version < "4"
siwe==4.2.0 ; python_version >= "3.9" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.9" and python_version < "4"
snaptime==0.2.4 ; python_version >= "3.9" and python_version < "4"
sortedcontainers==2.4.0 ; python_version >= "3.9" and python_version < "4"
sqlalchemy==2.0.31 ; python_version >= "3.9" and python_version < "4"
sqlalchemy==2.0.32 ; python_version >= "3.9" and python_version < "4"
stack-data==0.6.3 ; python_version >= "3.9" and python_version < "4"
tabulate==0.9.0 ; python_version >= "3.9" and python_version < "4"
time-machine==2.14.2 ; python_version >= "3.9" and python_version < "4"
toml==0.10.2 ; python_version >= "3.9" and python_version < "4"
time-machine==2.15.0 ; python_version >= "3.9" and python_version < "4"
toml==0.10.2 ; python_version >= "3.9" and python_version < "3.11"
tomli==2.0.1 ; python_version >= "3.9" and python_full_version <= "3.11.0a6"
toolz==0.12.1 ; python_version >= "3.9" and python_version < "4" and (implementation_name == "pypy" or implementation_name == "cpython")
tqdm==4.66.4 ; python_version >= "3.9" and python_version < "4"
tqdm==4.66.5 ; python_version >= "3.9" and python_version < "4"
traitlets==5.14.3 ; python_version >= "3.9" and python_version < "4"
trie==3.0.1 ; python_version >= "3.9" and python_version < "4"
twisted-iocpsupport==1.0.4 ; python_version >= "3.9" and python_version < "4" and platform_system == "Windows"
twisted==24.3.0 ; python_version >= "3.9" and python_version < "4"
twisted==24.7.0 ; python_version >= "3.9" and python_version < "4"
txaio==23.1.1 ; python_version >= "3.9" and python_version < "4"
types-requests==2.32.0.20240712 ; python_version >= "3.9" and python_version < "4"
typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "4"
tzdata==2024.1 ; python_version >= "3.9" and python_version < "4"
tzlocal==5.2 ; python_version >= "3.9" and python_version < "4"
@ -179,9 +175,8 @@ watchdog==3.0.0 ; python_version >= "3.9" and python_version < "4"
wcwidth==0.2.13 ; python_version >= "3.9" and python_version < "4"
web3==6.20.1 ; python_version >= "3.9" and python_version < "4"
web3[tester]==6.20.1 ; python_version >= "3.9" and python_version < "4"
websockets==12.0 ; python_version >= "3.9" and python_version < "4"
werkzeug==3.0.3 ; python_version >= "3.9" and python_version < "4"
wrapt==1.16.0 ; python_version >= "3.9" and python_version < "4"
websockets==13.0 ; python_version >= "3.9" and python_version < "4"
werkzeug==3.0.4 ; python_version >= "3.9" and python_version < "4"
yarl==1.9.4 ; python_version >= "3.9" and python_version < "4"
zipp==3.19.2 ; python_version >= "3.9" and python_version < "3.10"
zope-interface==6.4.post2 ; python_version >= "3.9" and python_version < "4"
zipp==3.20.0 ; python_version >= "3.9" and python_version < "3.10"
zope-interface==7.0.1 ; python_version >= "3.9" and python_version < "4"

View File

1954
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -31,12 +31,12 @@ twisted = "^24.2.0rc1"
jsonpath-ng = "^1.6.1"
[tool.poetry.dev-dependencies]
pytest = '<7'
pytest = '*'
pytest-cov = '*'
pytest-mock = '*'
pytest-timeout = '*'
pytest-twisted = '*'
eth-ape = ">=0.7"
eth-ape = ">=0.8"
ape-solidity = '*'
coverage = '^7.3.2'
pre-commit = '^2.12.1'

View File

@ -1,21 +1,21 @@
abnf==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
aiohappyeyeballs==2.3.2 ; python_version >= "3.9" and python_version < "4.0"
aiohttp==3.10.0 ; python_version >= "3.9" and python_version < "4"
aiohappyeyeballs==2.4.0 ; python_version >= "3.9" and python_version < "4"
aiohttp==3.10.5 ; python_version >= "3.9" and python_version < "4"
aiosignal==1.3.1 ; python_version >= "3.9" and python_version < "4"
annotated-types==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4"
async-timeout==4.0.3 ; python_version >= "3.9" and python_version < "3.11"
attrs==23.2.0 ; python_version >= "3.9" and python_version < "4"
attrs==24.2.0 ; python_version >= "3.9" and python_version < "4"
atxm==0.5.0 ; python_version >= "3.9" and python_version < "4"
autobahn==23.6.2 ; python_version >= "3.9" and python_version < "4"
automat==22.10.0 ; python_version >= "3.9" and python_version < "4"
autobahn==24.4.2 ; python_version >= "3.9" and python_version < "4"
automat==24.8.1 ; python_version >= "3.9" and python_version < "4"
bitarray==2.9.2 ; python_version >= "3.9" and python_version < "4"
blinker==1.8.2 ; python_version >= "3.9" and python_version < "4"
bytestring-splitter==2.4.1 ; python_version >= "3.9" and python_version < "4"
certifi==2024.7.4 ; python_version >= "3.9" and python_version < "4"
cffi==1.16.0 ; python_version >= "3.9" and python_version < "4"
cffi==1.17.0 ; python_version >= "3.9" and python_version < "4"
charset-normalizer==3.3.2 ; python_version >= "3.9" and python_version < "4"
ckzg==1.0.2 ; python_version >= "3.9" and python_version < "4"
ckzg==2.0.0 ; python_version >= "3.9" and python_version < "4"
click==8.1.7 ; python_version >= "3.9" and python_version < "4"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4"
constant-sorrow==0.1.0a9 ; python_version >= "3.9" and python_version < "4"
@ -39,7 +39,7 @@ hexbytes==0.3.1 ; python_version >= "3.9" and python_version < "4"
humanize==4.10.0 ; python_version >= "3.9" and python_version < "4"
hyperlink==21.0.0 ; python_version >= "3.9" and python_version < "4"
idna==3.7 ; python_version >= "3.9" and python_version < "4"
importlib-metadata==8.2.0 ; python_version >= "3.9" and python_version < "3.10"
importlib-metadata==8.4.0 ; python_version >= "3.9" and python_version < "3.10"
incremental==24.7.2 ; python_version >= "3.9" and python_version < "4"
itsdangerous==2.2.0 ; python_version >= "3.9" and python_version < "4"
jinja2==3.1.4 ; python_version >= "3.9" and python_version < "4"
@ -49,7 +49,7 @@ jsonschema==4.23.0 ; python_version >= "3.9" and python_version < "4"
lru-dict==1.2.0 ; python_version >= "3.9" and python_version < "4"
mako==1.3.5 ; python_version >= "3.9" and python_version < "4"
markupsafe==2.1.5 ; python_version >= "3.9" and python_version < "4"
marshmallow==3.21.3 ; python_version >= "3.9" and python_version < "4"
marshmallow==3.22.0 ; python_version >= "3.9" and python_version < "4"
maya==0.6.1 ; python_version >= "3.9" and python_version < "4"
mnemonic==0.21 ; python_version >= "3.9" and python_version < "4"
msgpack-python==0.5.6 ; python_version >= "3.9" and python_version < "4"
@ -60,7 +60,7 @@ parsimonious==0.10.0 ; python_version >= "3.9" and python_version < "4"
pendulum==3.0.0 ; python_version >= "3.9" and python_version < "4"
ply==3.11 ; python_version >= "3.9" and python_version < "4"
prometheus-client==0.20.0 ; python_version >= "3.9" and python_version < "4"
protobuf==5.27.2 ; python_version >= "3.9" and python_version < "4"
protobuf==5.27.3 ; python_version >= "3.9" and python_version < "4"
pyasn1-modules==0.4.0 ; python_version >= "3.9" and python_version < "4"
pyasn1==0.6.0 ; python_version >= "3.9" and python_version < "4"
pychalk==2.0.1 ; python_version >= "3.9" and python_version < "4"
@ -79,18 +79,17 @@ referencing==0.35.1 ; python_version >= "3.9" and python_version < "4"
regex==2024.7.24 ; python_version >= "3.9" and python_version < "4"
requests==2.32.3 ; python_version >= "3.9" and python_version < "4"
rlp==4.0.1 ; python_version >= "3.9" and python_version < "4"
rpds-py==0.19.1 ; python_version >= "3.9" and python_version < "4"
rpds-py==0.20.0 ; python_version >= "3.9" and python_version < "4"
service-identity==24.1.0 ; python_version >= "3.9" and python_version < "4"
setuptools==72.1.0 ; python_version >= "3.9" and python_version < "4"
setuptools==73.0.1 ; python_version >= "3.9" and python_version < "4"
siwe==4.2.0 ; python_version >= "3.9" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.9" and python_version < "4"
snaptime==0.2.4 ; python_version >= "3.9" and python_version < "4"
tabulate==0.9.0 ; python_version >= "3.9" and python_version < "4"
time-machine==2.14.2 ; python_version >= "3.9" and python_version < "4"
time-machine==2.15.0 ; python_version >= "3.9" and python_version < "4"
tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11"
toolz==0.12.1 ; python_version >= "3.9" and python_version < "4" and (implementation_name == "pypy" or implementation_name == "cpython")
twisted-iocpsupport==1.0.4 ; python_version >= "3.9" and python_version < "4" and platform_system == "Windows"
twisted==24.3.0 ; python_version >= "3.9" and python_version < "4"
twisted==24.7.0 ; python_version >= "3.9" and python_version < "4"
txaio==23.1.1 ; python_version >= "3.9" and python_version < "4"
typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "4"
tzdata==2024.1 ; python_version >= "3.9" and python_version < "4"
@ -98,8 +97,8 @@ tzlocal==5.2 ; python_version >= "3.9" and python_version < "4"
urllib3==2.2.2 ; python_version >= "3.9" and python_version < "4"
watchdog==3.0.0 ; python_version >= "3.9" and python_version < "4"
web3==6.20.1 ; python_version >= "3.9" and python_version < "4"
websockets==12.0 ; python_version >= "3.9" and python_version < "4"
werkzeug==3.0.3 ; python_version >= "3.9" and python_version < "4"
websockets==13.0 ; python_version >= "3.9" and python_version < "4"
werkzeug==3.0.4 ; python_version >= "3.9" and python_version < "4"
yarl==1.9.4 ; python_version >= "3.9" and python_version < "4"
zipp==3.19.2 ; python_version >= "3.9" and python_version < "3.10"
zope-interface==6.4.post2 ; python_version >= "3.9" and python_version < "4"
zipp==3.20.0 ; python_version >= "3.9" and python_version < "3.10"
zope-interface==7.0.1 ; python_version >= "3.9" and python_version < "4"

View File

@ -2,6 +2,7 @@ import pytest
import pytest_twisted
from twisted.logger import globalLogPublisher
from nucypher.blockchain.eth.models import Coordinator
from nucypher.blockchain.eth.signers import InMemorySigner
from nucypher.crypto.keypairs import RitualisticKeypair
from nucypher.crypto.powers import RitualisticPower
@ -117,11 +118,22 @@ def test_dkg_failure_with_ferveo_key_mismatch(
globalLogPublisher.addObserver(log_trapper)
print("==================== AWAITING DKG FAILURE ====================")
while len(log_messages) == 0:
print(
"==================== AWAITING DKG FAILURE (FERVEO MISMATCH) ===================="
)
while (
coordinator_agent.get_ritual_status(ritual_id)
!= Coordinator.RitualStatus.DKG_TIMEOUT
):
# remains in awaiting transcripts because of the one bad ursula not submitting transcript
assert (
coordinator_agent.get_ritual_status(ritual_id)
== Coordinator.RitualStatus.DKG_AWAITING_TRANSCRIPTS
)
yield clock.advance(interval)
yield testerchain.time_travel(seconds=1)
yield testerchain.time_travel(
seconds=coordinator_agent.get_timeout() // 6
) # min. 6 rounds before timeout
assert (
render_ferveo_key_mismatch_warning(
@ -130,6 +142,17 @@ def test_dkg_failure_with_ferveo_key_mismatch(
in log_messages
)
for ursula in cohort:
participant = coordinator_agent.get_participant(
ritual_id, ursula.checksum_address, True
)
if ursula.checksum_address == bad_ursula.checksum_address:
assert (
not participant.transcript
), "transcript not submitted due to mismatched ferveo key"
else:
assert participant.transcript, "transcript submitted"
testerchain.tx_machine.stop()
assert not testerchain.tx_machine.running
globalLogPublisher.removeObserver(log_trapper)

View File

@ -11,11 +11,6 @@ dependencies:
solidity:
version: 0.8.23
evm_version: paris
import_remapping:
- "@openzeppelin/contracts=openzeppelin/v5.0.0"
- "@openzeppelin-upgradeable/contracts=openzeppelin-upgradeable/v5.0.0"
- "@fx-portal/contracts=fx-portal/v1.0.5"
- "@threshold/contracts=threshold/v1.2.1"
- name: openzeppelin
github: OpenZeppelin/openzeppelin-contracts
@ -24,11 +19,10 @@ dependencies:
solidity:
version: 0.8.23
evm_version: paris
import_remapping:
- "@openzeppelin/contracts=openzeppelin/v5.0.0"
test:
provider:
chain_id: 131277322940537 # ensure ape doesn't change chain id to 1337
mnemonic: test test test test test test test test test test test junk
number_of_accounts: 30
balance: 1_000_000 ETH

View File

@ -7,6 +7,7 @@ import pytest_twisted
from eth_typing import ChecksumAddress
from nucypher_core.ferveo import FerveoVariant
from twisted.internet.threads import deferToThread
from twisted.logger import globalLogPublisher
from web3.datastructures import AttributeDict
from nucypher.blockchain.eth.agents import CoordinatorAgent
@ -16,6 +17,7 @@ from nucypher.characters.lawful import Enrico, Ursula
from nucypher.crypto.keypairs import RitualisticKeypair
from nucypher.crypto.powers import RitualisticPower
from nucypher.policy.conditions.lingo import ConditionLingo, ConditionType
from nucypher.utilities.warnings import render_ferveo_key_mismatch_warning
from tests.constants import TESTERCHAIN_CHAIN_ID
from tests.mock.coordinator import MockCoordinatorAgent
from tests.mock.interfaces import MockBlockchain
@ -122,7 +124,7 @@ def execute_round_2(ritual_id: int, cohort: List[Ursula]):
def run_test(
mock_coordinator_agent,
bad_cohort,
cohort,
alice,
bob,
dkg_size,
@ -131,7 +133,7 @@ def run_test(
get_random_checksum_address,
):
"""Tests the DKG and the encryption/decryption of a message"""
cohort = bad_cohort[:dkg_size]
cohort = cohort[:dkg_size]
# adjust threshold since we are testing with pre-computed (simple is the default)
threshold = mock_coordinator_agent.get_threshold_for_ritual_size(dkg_size)
@ -380,19 +382,16 @@ def test_ursula_ritualist_good_cohort(
)
@pytest.mark.xfail(reason="This is not fixed yet")
@pytest_twisted.inlineCallbacks()
def test_ursula_ritualist_bad_cohort(
mock_coordinator_agent,
cohort,
alice,
bob,
get_random_checksum_address,
):
"""Modify the first Ursula's keystore to be different"""
bad_ursula = cohort[0]
old_public_key = bad_ursula.public_keys(RitualisticPower)
onchain_public_key = bad_ursula.public_keys(RitualisticPower)
new_keypair = RitualisticKeypair()
new_public_key = new_keypair.pubkey
@ -401,18 +400,62 @@ def test_ursula_ritualist_bad_cohort(
new_keypair
)
assert old_public_key != new_public_key
assert old_public_key != bad_ursula.public_keys(RitualisticPower)
assert onchain_public_key != new_public_key
assert onchain_public_key != bad_ursula.public_keys(RitualisticPower)
assert new_public_key == bad_ursula.public_keys(RitualisticPower)
print(f"BAD URSULA: {bad_ursula.checksum_address}")
yield from run_test(
mock_coordinator_agent,
cohort,
alice,
bob,
2,
3,
FerveoVariant.Precomputed,
get_random_checksum_address,
ritual_id = mock_coordinator_agent.number_of_rituals()
"==================== INITIALIZING ===================="
cohort_staking_provider_addresses = list(u.checksum_address for u in cohort)
mock_coordinator_agent.initiate_ritual(
fee_model=get_random_checksum_address(),
providers=cohort_staking_provider_addresses,
authority=alice.transacting_power.account,
duration=1,
access_controller=get_random_checksum_address(),
transacting_power=alice.transacting_power,
)
print(
"==================== AWAITING DKG FAILURE (FERVEO MISMATCH) ===================="
)
ritual = mock_coordinator_agent.get_ritual(ritual_id)
status = mock_coordinator_agent.get_ritual_status(ritual_id=ritual_id)
assert status == Coordinator.RitualStatus.DKG_AWAITING_TRANSCRIPTS
# collect log messages
log_messages = []
def log_trapper(event):
log_messages.append(event["log_format"])
globalLogPublisher.addObserver(log_trapper)
execute_round_1(ritual_id, ritual.authority, cohort)
status = mock_coordinator_agent.get_ritual_status(ritual_id=ritual_id)
assert status != Coordinator.RitualStatus.ACTIVE
# remains in awaiting transcripts until ritual expires, since bad ursula doesn't submit their transcript
assert status == Coordinator.RitualStatus.DKG_AWAITING_TRANSCRIPTS
assert (
render_ferveo_key_mismatch_warning(
bytes(new_public_key), bytes(onchain_public_key)
)
in log_messages
)
for ursula in cohort:
participant = mock_coordinator_agent.get_participant(
ritual_id, ursula.checksum_address, True
)
if ursula.checksum_address == bad_ursula.checksum_address:
assert (
not participant.transcript
), "transcript not submitted due to mismatched ferveo key"
else:
assert participant.transcript, "transcript submitted"

View File

@ -1,4 +1,4 @@
from functools import cached_property
from functools import cached_property, singledispatchmethod
from typing import List, Union
import maya
@ -6,6 +6,7 @@ from ape.api import AccountAPI
from ape.managers.accounts import TestAccountManager
from eth_tester.exceptions import TransactionFailed
from eth_typing import ChecksumAddress
from eth_utils import to_checksum_address
from hexbytes import HexBytes
from nucypher.blockchain.eth.interfaces import (
@ -66,6 +67,24 @@ class ReservedTestAccountManager(TestAccountManager):
self.__ape_accounts = test_accounts
return test_accounts
@singledispatchmethod
def __getitem__(self, account_id):
raise NotImplementedError(f"Cannot use {type(account_id)} as account ID.")
@__getitem__.register
def __getitem_int(self, account_id: int):
account = self.accounts[account_id]
return account
@__getitem__.register
def __getitem_str(self, account_str: str):
account_id = to_checksum_address(account_str)
for account in self.accounts:
if account.address == account_id:
return account
raise KeyError(f"test account '{account_str}' not found")
@property
def etherbase_account(self) -> ChecksumAddress:
return self[self._ETHERBASE].address