From 8febe658b04d1afaf28bc506b04fa5b4c7282b0d Mon Sep 17 00:00:00 2001 From: Abel Armoa Date: Fri, 2 Jun 2023 01:37:03 +0200 Subject: [PATCH 01/18] (feat) Test using Prcryptodome to remove pysha3 --- Pipfile | 2 ++ Pipfile.lock | 78 ++++++++++++++++++++++++++++++++++++++++++- pyinjective/wallet.py | 36 ++++++++++++++++---- tests/test_wallet.py | 33 ++++++++++++++++++ 4 files changed, 142 insertions(+), 7 deletions(-) create mode 100644 tests/test_wallet.py diff --git a/Pipfile b/Pipfile index b65021b0..3715b35d 100644 --- a/Pipfile +++ b/Pipfile @@ -20,6 +20,8 @@ coincurve = "*" aiocron = "*" websockets = "*" urllib3 = "<2" +pycryptodome = "*" +pycryptodomex = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index fff5c1aa..7281412a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "dc00f00f492872b6f9fcecb4352339ef18985ebaf1d793b6824b928ef2a6d17f" + "sha256": "71ab3eba66989d590da3699426035a6e3c606eb5b8069792cb50c85c1a3c2c76" }, "pipfile-spec": 6, "requires": { @@ -851,6 +851,82 @@ ], "version": "==2.21" }, + "pycryptodome": { + "hashes": [ + "sha256:01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb", + "sha256:10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6", + "sha256:12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403", + "sha256:157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148", + "sha256:16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4", + "sha256:363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825", + "sha256:3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2", + "sha256:422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14", + "sha256:4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c", + "sha256:4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4", + "sha256:51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2", + "sha256:53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb", + "sha256:62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf", + "sha256:6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec", + "sha256:78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918", + "sha256:795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3", + "sha256:7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944", + "sha256:83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e", + "sha256:928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024", + "sha256:957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f", + "sha256:9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1", + "sha256:9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380", + "sha256:b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9", + "sha256:b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e", + "sha256:c9adee653fc882d98956e33ca2c1fb582e23a8af7ac82fee75bd6113c55a0413", + "sha256:cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec", + "sha256:d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54", + "sha256:d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2", + "sha256:e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27", + "sha256:f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b", + "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf", + "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08" + ], + "index": "pypi", + "version": "==3.18.0" + }, + "pycryptodomex": { + "hashes": [ + "sha256:160a39a708c36fa0b168ab79386dede588e62aec06eb505add870739329aecc6", + "sha256:192306cf881fe3467dda0e174a4f47bb3a8bb24b90c9cdfbdc248eec5fc0578c", + "sha256:1949e09ea49b09c36d11a951b16ff2a05a0ffe969dda1846e4686ee342fe8646", + "sha256:215be2980a6b70704c10796dd7003eb4390e7be138ac6fb8344bf47e71a8d470", + "sha256:27072a494ce621cc7a9096bbf60ed66826bb94db24b49b7359509e7951033e74", + "sha256:2dc4eab20f4f04a2d00220fdc9258717b82d31913552e766d5f00282c031b70a", + "sha256:302a8f37c224e7b5d72017d462a2be058e28f7be627bdd854066e16722d0fc0c", + "sha256:3d9314ac785a5b75d5aaf924c5f21d6ca7e8df442e5cf4f0fefad4f6e284d422", + "sha256:3e3ecb5fe979e7c1bb0027e518340acf7ee60415d79295e5251d13c68dde576e", + "sha256:4d9379c684efea80fdab02a3eb0169372bca7db13f9332cb67483b8dc8b67c37", + "sha256:50308fcdbf8345e5ec224a5502b4215178bdb5e95456ead8ab1a69ffd94779cb", + "sha256:5594a125dae30d60e94f37797fc67ce3c744522de7992c7c360d02fdb34918f8", + "sha256:58fc0aceb9c961b9897facec9da24c6a94c5db04597ec832060f53d4d6a07196", + "sha256:6421d23d6a648e83ba2670a352bcd978542dad86829209f59d17a3f087f4afef", + "sha256:6875eb8666f68ddbd39097867325bd22771f595b4e2b0149739b5623c8bf899b", + "sha256:6ed3606832987018615f68e8ed716a7065c09a0fe94afd7c9ca1b6777f0ac6eb", + "sha256:71687eed47df7e965f6e0bf3cadef98f368d5221f0fb89d2132effe1a3e6a194", + "sha256:73d64b32d84cf48d9ec62106aa277dbe99ab5fbfd38c5100bc7bddd3beb569f7", + "sha256:75672205148bdea34669173366df005dbd52be05115e919551ee97171083423d", + "sha256:76f0a46bee539dae4b3dfe37216f678769349576b0080fdbe431d19a02da42ff", + "sha256:8ff129a5a0eb5ff16e45ca4fa70a6051da7f3de303c33b259063c19be0c43d35", + "sha256:ac614363a86cc53d8ba44b6c469831d1555947e69ab3276ae8d6edc219f570f7", + "sha256:ba95abd563b0d1b88401658665a260852a8e6c647026ee6a0a65589287681df8", + "sha256:bbdcce0a226d9205560a5936b05208c709b01d493ed8307792075dedfaaffa5f", + "sha256:bec6c80994d4e7a38312072f89458903b65ec99bed2d65aa4de96d997a53ea7a", + "sha256:c2953afebf282a444c51bf4effe751706b4d0d63d7ca2cc51db21f902aa5b84e", + "sha256:d35a8ffdc8b05e4b353ba281217c8437f02c57d7233363824e9d794cf753c419", + "sha256:d56c9ec41258fd3734db9f5e4d2faeabe48644ba9ca23b18e1839b3bdf093222", + "sha256:d84e105787f5e5d36ec6a581ff37a1048d12e638688074b2a00bcf402f9aa1c2", + "sha256:e00a4bacb83a2627e8210cb353a2e31f04befc1155db2976e5e239dd66482278", + "sha256:f237278836dda412a325e9340ba2e6a84cb0f56b9244781e5b61f10b3905de88", + "sha256:f9ab5ef0718f6a8716695dea16d83b671b22c45e9c0c78fd807c32c0192e54b5" + ], + "index": "pypi", + "version": "==3.18.0" + }, "pysha3": { "hashes": [ "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", diff --git a/pyinjective/wallet.py b/pyinjective/wallet.py index f682cdd2..2b192337 100644 --- a/pyinjective/wallet.py +++ b/pyinjective/wallet.py @@ -1,13 +1,20 @@ -import sys +import copy +import functools + +import eth_hash.auto import sha3 import hashlib -import bech32 import aiohttp import json import requests from typing import Tuple + +from eth_hash.backends import pysha3 +from eth_hash import Keccak256 +from Crypto.Hash.keccak import Keccak_Hash from bech32 import bech32_encode, bech32_decode, convertbits from bip32 import BIP32 +from Crypto.Hash import keccak from ecdsa import SigningKey, VerifyingKey, SECP256k1, BadSignatureError from ecdsa.util import sigencode_string_canonize from mnemonic import Mnemonic @@ -25,6 +32,14 @@ DEFAULT_DERIVATION_PATH = "m/44'/60'/0'/0/0" +class Keccak_Hash_With_Copy(Keccak_Hash): + # We need to create a version of Keccak_Hash that responds to `copy` + # This is a requirement from the ecdsa library + + def copy(self): + return self.new(data=self.digest()) + + class PrivateKey: """ Class for wrapping SigningKey that is used for signature creation and public key derivation. @@ -100,7 +115,16 @@ def sign(self, msg: bytes) -> bytes: :return: a signature of this private key over the given message """ # return self.signing_key.sign_deterministic(msg, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize) - return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + # keccak_function = functools.partial(keccak.new, digest_bits=256) + def keccak_creation(data=None): + # Create a 256 bits keccak hash + keccak_hash = Keccak_Hash_With_Copy(data=data, digest_bytes=32, update_after_digest=False) + return keccak_hash + + #return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + hash = eth_hash.auto.keccak + digest = eth_hash.auto.keccak(msg) + return self.signing_key.sign_digest_deterministic(digest, hashfunc=hash, sigencode=sigencode_string_canonize) class PublicKey: @@ -180,9 +204,9 @@ def to_address(self) -> "Address": # return Address(r) pubkey = self.verify_key.to_string("uncompressed") - k = sha3.keccak_256() - k.update(pubkey[1:]) - addr = k.digest()[12:] + keccak_hash = keccak.new(digest_bits=256) + keccak_hash.update(pubkey[1:]) + addr = keccak_hash.digest()[12:] return Address(addr) def verify(self, msg: bytes, sig: bytes) -> bool: diff --git a/tests/test_wallet.py b/tests/test_wallet.py new file mode 100644 index 00000000..e2cf7834 --- /dev/null +++ b/tests/test_wallet.py @@ -0,0 +1,33 @@ +import hashlib + +from eth_hash.auto import keccak + +from pyinjective import PrivateKey, Address + + +class TestPrivateKey: + + def test_private_key_signature_generation(self): + private_key = PrivateKey.from_mnemonic("test mnemonic never use other places") + + signature = private_key.sign(msg="test message".encode()) + expected_signature = b'\x8f\xae\xcb#z\x9a+\x12\x88\xea\xb5xZ"\x8f\x98y\xb8\x97\xa7F\xd5\xdd\x15s\x05;\x04\x1d\xbaY|rw\x8b\xbb\x19\xfc\x8e\x15\x8b\xf1\x18\x08\xba\xc7\x15\xed\xb0\xee\x95\x0e|Ch\x7f\xaf\x9cH\xc6\x9f\xbf\x14\xa5' + + hashlib.sha1() + + assert (expected_signature == signature) + + +class TestPublicKey: + + def test_convert_public_key_to_address(self): + private_key = PrivateKey.from_mnemonic("test mnemonic never use other places") + public_key = private_key.to_public_key() + address = public_key.to_address() + + key = public_key.verify_key.to_string("uncompressed") + hashed_value = keccak(key[1:]) + expected_address = Address(hashed_value[12:]) + + assert (expected_address == address) + From ae8c316d5201cde902fa95735e60a1b72f63dbc0 Mon Sep 17 00:00:00 2001 From: Abel Armoa Date: Fri, 2 Jun 2023 01:37:03 +0200 Subject: [PATCH 02/18] (feat) Test using Prcryptodome to remove pysha3 --- Pipfile | 2 ++ pyinjective/wallet.py | 36 ++++++++++++++++++++++++++++++------ tests/test_wallet.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 tests/test_wallet.py diff --git a/Pipfile b/Pipfile index b65021b0..3715b35d 100644 --- a/Pipfile +++ b/Pipfile @@ -20,6 +20,8 @@ coincurve = "*" aiocron = "*" websockets = "*" urllib3 = "<2" +pycryptodome = "*" +pycryptodomex = "*" [dev-packages] pytest = "*" diff --git a/pyinjective/wallet.py b/pyinjective/wallet.py index f682cdd2..2b192337 100644 --- a/pyinjective/wallet.py +++ b/pyinjective/wallet.py @@ -1,13 +1,20 @@ -import sys +import copy +import functools + +import eth_hash.auto import sha3 import hashlib -import bech32 import aiohttp import json import requests from typing import Tuple + +from eth_hash.backends import pysha3 +from eth_hash import Keccak256 +from Crypto.Hash.keccak import Keccak_Hash from bech32 import bech32_encode, bech32_decode, convertbits from bip32 import BIP32 +from Crypto.Hash import keccak from ecdsa import SigningKey, VerifyingKey, SECP256k1, BadSignatureError from ecdsa.util import sigencode_string_canonize from mnemonic import Mnemonic @@ -25,6 +32,14 @@ DEFAULT_DERIVATION_PATH = "m/44'/60'/0'/0/0" +class Keccak_Hash_With_Copy(Keccak_Hash): + # We need to create a version of Keccak_Hash that responds to `copy` + # This is a requirement from the ecdsa library + + def copy(self): + return self.new(data=self.digest()) + + class PrivateKey: """ Class for wrapping SigningKey that is used for signature creation and public key derivation. @@ -100,7 +115,16 @@ def sign(self, msg: bytes) -> bytes: :return: a signature of this private key over the given message """ # return self.signing_key.sign_deterministic(msg, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize) - return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + # keccak_function = functools.partial(keccak.new, digest_bits=256) + def keccak_creation(data=None): + # Create a 256 bits keccak hash + keccak_hash = Keccak_Hash_With_Copy(data=data, digest_bytes=32, update_after_digest=False) + return keccak_hash + + #return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + hash = eth_hash.auto.keccak + digest = eth_hash.auto.keccak(msg) + return self.signing_key.sign_digest_deterministic(digest, hashfunc=hash, sigencode=sigencode_string_canonize) class PublicKey: @@ -180,9 +204,9 @@ def to_address(self) -> "Address": # return Address(r) pubkey = self.verify_key.to_string("uncompressed") - k = sha3.keccak_256() - k.update(pubkey[1:]) - addr = k.digest()[12:] + keccak_hash = keccak.new(digest_bits=256) + keccak_hash.update(pubkey[1:]) + addr = keccak_hash.digest()[12:] return Address(addr) def verify(self, msg: bytes, sig: bytes) -> bool: diff --git a/tests/test_wallet.py b/tests/test_wallet.py new file mode 100644 index 00000000..e2cf7834 --- /dev/null +++ b/tests/test_wallet.py @@ -0,0 +1,33 @@ +import hashlib + +from eth_hash.auto import keccak + +from pyinjective import PrivateKey, Address + + +class TestPrivateKey: + + def test_private_key_signature_generation(self): + private_key = PrivateKey.from_mnemonic("test mnemonic never use other places") + + signature = private_key.sign(msg="test message".encode()) + expected_signature = b'\x8f\xae\xcb#z\x9a+\x12\x88\xea\xb5xZ"\x8f\x98y\xb8\x97\xa7F\xd5\xdd\x15s\x05;\x04\x1d\xbaY|rw\x8b\xbb\x19\xfc\x8e\x15\x8b\xf1\x18\x08\xba\xc7\x15\xed\xb0\xee\x95\x0e|Ch\x7f\xaf\x9cH\xc6\x9f\xbf\x14\xa5' + + hashlib.sha1() + + assert (expected_signature == signature) + + +class TestPublicKey: + + def test_convert_public_key_to_address(self): + private_key = PrivateKey.from_mnemonic("test mnemonic never use other places") + public_key = private_key.to_public_key() + address = public_key.to_address() + + key = public_key.verify_key.to_string("uncompressed") + hashed_value = keccak(key[1:]) + expected_address = Address(hashed_value[12:]) + + assert (expected_address == address) + From 111f8bc2894168cf0ca171be2b1b42180414fc39 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 14:58:13 +0200 Subject: [PATCH 03/18] (fix) Removed eip712-struct from the project because it depends on pysha3. Removed also the use of pysha3 directly. This will allow the SDK to work with Python 3.11 --- Pipfile | 8 +- Pipfile.lock | 407 +++++++++++++++++++++++++++++++++++++-- README.md | 3 +- pyinjective/orderhash.py | 84 ++++---- pyinjective/wallet.py | 34 +--- setup.py | 24 +-- tests/test_orderhash.py | 59 ++++++ tests/test_wallet.py | 4 - 8 files changed, 518 insertions(+), 105 deletions(-) create mode 100644 tests/test_orderhash.py diff --git a/Pipfile b/Pipfile index 3715b35d..2f9088bd 100644 --- a/Pipfile +++ b/Pipfile @@ -15,17 +15,17 @@ mnemonic = "*" hdwallets = "*" bip32 = "*" requests = "*" -eip712_structs = "*" coincurve = "*" aiocron = "*" websockets = "*" urllib3 = "<2" -pycryptodome = "*" -pycryptodomex = "*" +safe-pysha3 = "*" +eip712 = "*" [dev-packages] pytest = "*" pytest-asyncio = "*" +requests-mock = "*" [requires] -python_version = "3.9" +python_version = "3" diff --git a/Pipfile.lock b/Pipfile.lock index c17ec6bb..bf9dae83 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "43418c6c59b0ed3d50fc1f375ae7ebdf4a0a5d895c4257b6d55310855a598e86" + "sha256": "ddd9c0acafbf86fc3b26c88650bee0a2aa19d05a537541bfcbd8c8c2a1401266" }, "pipfile-spec": 6, "requires": { - "python_version": "3.9" + "python_version": "3" }, "sources": [ { @@ -182,6 +182,98 @@ "index": "pypi", "version": "==3.4" }, + "bitarray": { + "hashes": [ + "sha256:0331ce777174f1f06e592b5199e056cdece817181522d75e5671ef728bb5c591", + "sha256:0474532ad832da5a6c4f4127d64de68455a5948dcb9e824aa4a3927ced87ba1f", + "sha256:05c868339a9fb6095b600a4e576b76e269710ad519b00861d6b2a319e7d24465", + "sha256:0970faa5ce3ca6601d29f242941b5920c601535ac850aa9be942bcfe99636619", + "sha256:143d4f65e1f45a533e13521be1dc557a782317ecf76520eabd5a903b26ecb187", + "sha256:168acedc8ad7b87d01b6b733d37b0414aa4da6d10e1eedebb6cf3d79389fcef2", + "sha256:19bb60f0f3f99d066d4ad75247490107f7d3f0ba8f97b4f686f71bec8b0b2a68", + "sha256:1bcc809a67b03d7950a7f01cb8bb35b9a2b7fe9361f10aaf2fdfa44073ffed0d", + "sha256:1ffd91235c8a7c7ea3e3a6f710545b578c901303d6b98b7d2ee730ebf9c2a4ff", + "sha256:21f1ae716f61bf700327dd8e47a993a1b0bce30f1e8881f6bd6243223b6bafff", + "sha256:21ff72a03a9e60c43a98cb3b0f8c246414fae1a3bbbf425af06f6f350cde30d2", + "sha256:22dc38cb226b7604dbdd2d5504cf8d0a2e645e353eb158fed56d908e3243aea1", + "sha256:2435ac2598ae7caf283bf6af6c3e03f4dc6adf5a3bfaf01ffc719bd61411647b", + "sha256:2e55ad91330c2f1ff78f4b904b897e691d623a1858466924fb39233e669b1219", + "sha256:2e8365a513c1eaab2457e7065f517221bf11bf4909231f4b3e5204844b66bcbb", + "sha256:382e76863e9ad999af9ff0e5061d2df47abebcddeaa897da7924234f772db698", + "sha256:3ac1be1f87c67dc7e3640496427b6a291684a5612ede5b9a33aa34f620395985", + "sha256:3b3d319d89ee099279ec8c3efd57c2f21cd0b8d34e2ad0b5db07f3e45c4568d8", + "sha256:3c0f8520112563a306219ce1d4d9120a09179f5c7014e6cc629aeeb821436ecb", + "sha256:3cb3d4660075ee690549034c18093b1766168dc925ca16f76ab8d64250a96120", + "sha256:4138461ffb2605515fd5c7199c1d870095b3913fe2d0a195b21492ff84901168", + "sha256:4366f2998a63013fe260b8a34051858c98d6680a8bc832529d500af9e820f991", + "sha256:44203138e5a0548f120c40cf24bf27fc7e05ca5dc698f1f8fa53bfb9bdd1b700", + "sha256:4a9e2c9b6e391a167e1a87058ed3777440f5d4db623724832b762c704fe6f062", + "sha256:509a12c3f4a8abfcee3eec02000883b5cdce3e689bb99cdc5fac3767b6b7d2c5", + "sha256:50c7bb2d950c6ec10d02f47f6fd9e786ff890a4879e04bd62c74f0204c62c419", + "sha256:5423427bb3af9b75e01a4aca6d38e84906b16ff9f62e2a64dce877c9505735a3", + "sha256:54e1bdcdf3c4541a9df432c73c117be9d195629a4d9a705c9d61a05c797fb0c1", + "sha256:553f3a4d97d7974e7632f754411d91f4f435756fd961204ee494a2af68137b4f", + "sha256:58e3ce453708f43f9666a1abed97c50e052351631d7463fdea07d8e9f50dd9bd", + "sha256:656195c2e378cab88c98fbbad723104d1b75483d6a88df6049c81ca7303e3d88", + "sha256:6b417fb3d2c5636c369eda939db33dac97115fce72a192c63e1210db78ce4e9f", + "sha256:6f502bcef6e215b837db2c84150275ada5120c78776caffda26291c4b6688646", + "sha256:70fbb07504d63a5d793107ce16b0722de7fa45aca943959153b05ddc04f41cf3", + "sha256:716fdc54eaea23029d95f285b94d1bb1954aaeaa16ceb51910f3923ea13950e5", + "sha256:72cae6daf2e56675dfe4f65caf1d63ee74295926d0bb78c27d8e1b49a91dbae2", + "sha256:74d4fb48e2463638ce7be1c20613a7e118485bb46cfd84bc2a14c7d3b098f49c", + "sha256:7dac4575632f2900e7aed2f3a75c3ff672786bdfba8c000a86e62eea62d2a018", + "sha256:84262cadabc706a11affc6a80cc7ff3a0d0f2b7bd33eef58f9d733cfe260e6da", + "sha256:857c90a35ebaa1157b280ec62571e124384ca737434681d1a59de375795cc9d9", + "sha256:8712c561d370d7667c861e14e69fcce63ca761e50fb3cc7ef79682eeeaed567b", + "sha256:90a1cd9fe75eb91534ebf5459e9f2d4c83d5399f6ec812584d3dfc84440d784c", + "sha256:90d7f4c75174ed190c60854bce461fa6be66a9005e4bc595b8f134b31601ce90", + "sha256:94fdfaa747d5fcb996ff060a1396a6cb3132a3404ba7b019748370fafe3ff1dd", + "sha256:9944648f9f12a500c46e1786088a40e9711afc9c51db2370610f974e851dac9c", + "sha256:9c2cc2ab01bd1d809e9e5b0be28b25901db2a87b6ae483d29a744764cb89988e", + "sha256:9c6ef513b8166af421178027efbbf9b51a322645a00a2fa73809f27a899c1acb", + "sha256:9f79ad4d19595f9f9dd615a33a95c2eeb1b88705de3fbf96677b057b48408039", + "sha256:a3f5defdc2d36d969febeef7508a0bf7e93cdfb3325ac95863d95d753c23c99f", + "sha256:a625129aa68d7886a86bb0d5166c72fc0849f0e34dd88e8b772be3c7fcd6fd8b", + "sha256:a7d41e52d2295f53f5a03c62efbcb6d481f3b9a8ff87c2e072d2adb879f4929e", + "sha256:a99deab760c063e200ed3267893b87534deeaaa4ffc03da54942a7833e59fe51", + "sha256:abc528163aa87642b968a06af467b4db1e7f303784b30e0b2cc120aaba4bf887", + "sha256:adb48a4bb255d69fb22ac27d7ac92280731905a3b19f377ab1f02478c309b501", + "sha256:af991272a2a20396c79d07847d96370490a2eca0c781792c9c7cd7deff863297", + "sha256:b0274bf5a568d3322052403758c7ba0e32a005474115592cdb74d54cfa2b1772", + "sha256:b07ea1bb32f7ed62f2f693dabc91bd41e0977205fefbeb4fa93733518c09273a", + "sha256:b2a70ffabcce0efe8cf6113526c5dcb70c6e7b912289c84f0ad8c4288d7b1c0f", + "sha256:b4a94c1f94a8a4ebe51a375490eccec94261aa357edd4faf5ca2398e8c30ebd1", + "sha256:b56e07e21a24ca580bff7ef5eebef8d28bfe139c9a24da76359399ce20d33bc1", + "sha256:b73f48f85ba28c10db498bc2654678b7b9076d08ec34542101e9bfa3e209a6ee", + "sha256:b81c2d73a7b348c957aac8ee71076a80e92b29deb68db49ff941a4306cb419e8", + "sha256:bbfb02fde64b14a820a9268836103b028f20a206333fc6d637e3e663824b64ad", + "sha256:bdc829b1eecd57ee9b65c3b6c61814671683e061b21a267c64b8f1db29703bca", + "sha256:bf7921fef3e869e51734306174ed52d8ec11c8c359fcf98d72c4bee8d9fb82fc", + "sha256:bf8f13fc2d91960f94f8a8a3ad2e824cb1ca7bb49d1f905f9201327bdf9c086f", + "sha256:c2100c7b5bc813350ad8abe30f7223c9398d86ab30ebeffc7f780938fd53c009", + "sha256:c3aad9c8944a1cc2d3ac6f31fcfe164e22b1785e24f85b6f89b377667c5a5a87", + "sha256:ceb0e02a73d4908ab9aa72eb6c7fa04eec37daad2d93192892a5f3a6947264db", + "sha256:d03fe73637a798ac39adcefb18d8bb78eaa3529f79e6455ee462a1fb084adbf6", + "sha256:d1814b9185aedcb75fc7f7e02753be7fa114d18f8bb29f0e31a84507ed7d01ee", + "sha256:d6540e180eccb4e5c6df2d460df7b1b0d12a00364b73806a1df8cf1d8f1a34eb", + "sha256:d83881e4594c136301d1ec8d783f456dd6b001316588a781f16ddd20522c5d83", + "sha256:daa1239c5b388b6f5c51426eee0c70fad7f24d0668e4b461e66c8755f996d4cb", + "sha256:daa88834560f9c655231b6c3ed8ac069755a7f48ff8c3d37a5ffb88108e8c69d", + "sha256:de72f691895ee41cd720b335ab52d7dc979dd1348eb06891bd5093aa6988cfbd", + "sha256:e2f89fbe7dcd915a5bc4a53ed7be0e1640d3a84a5347db722e7249b715b8b91a", + "sha256:e5175dfe778839c6bf4e3496e4487dac0508a49c9a23c4a5b4fe29d2d1411543", + "sha256:e5b284c11eced377fa799f66fe69208d140a3ffcb29a767e57e9c66e66f061ad", + "sha256:ea6bda210224d23bef6af867adfc37bdf150fd9efdbfbdf61ba3b381b57583c5", + "sha256:ebc4ea4c48b050becdd177cf9b0a5d4be99cfa52a118fbe34f871156e5b1ad39", + "sha256:ed833c809ddff4d4ec81c878dd0b1a8a9b7de094d35dbc623b21cba707c26839", + "sha256:f30a89d673945109a64d2c3cb5bc2c707ed18efb8e018b6a9d233cb08034525d", + "sha256:f3f3d9cbd3e4032cc0b562a69cd7b2d7f7a7c96cc681871029f92bf49e99fb06", + "sha256:f4cdb4e3565d2fee759053272e6ec26ba8a7185f6bccba9e78a98d4df0ed08a2", + "sha256:fc99267064529627b28b53f8eeac64e3ac42a936c4f8c703122a6e14f77a1ea0", + "sha256:fce679c2d607ac7552516fbd08e1834ec4ef883ebcd94183daaf6190f4a2fc6b" + ], + "version": "==2.7.4" + }, "certifi": { "hashes": [ "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", @@ -500,6 +592,14 @@ "markers": "implementation_name == 'cpython'", "version": "==0.12.1" }, + "dataclassy": { + "hashes": [ + "sha256:ad6622cb91e644d13f68768558983fbc22c90a8ff7e355638485d18b9baf1198", + "sha256:bcb030d3d700cf9b1597042bbc8375b92773e6f68f65675a7071862c0ddb87f5" + ], + "markers": "python_version >= '3.6'", + "version": "==0.11.1" + }, "ecdsa": { "hashes": [ "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49", @@ -508,14 +608,34 @@ "index": "pypi", "version": "==0.18.0" }, - "eip712-structs": { + "eip712": { "hashes": [ - "sha256:b24400aef07b4d0287fb9bf8ce02b0abbe80c476d1b67222a7c5158df3a3e38d" + "sha256:3997dace7e581b66a84d106a10baac47a3f6c94095d79c7d0971ca0ede1926ad", + "sha256:c984c577358d1c7e5d4e52802bf4bd0432e965ba7326448998f95fcc1b6d5269" ], "index": "pypi", - "version": "==1.1.0" + "version": "==0.2.1" + }, + "eth-abi": { + "hashes": [ + "sha256:6949baba61a2c453f0719309ca145e8876a1cbae7ba377c991e67240c13ec7fc", + "sha256:79d258669f3505319e53638d644a75e1c816db552a1ab1927c3063763cc41031" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==4.0.0" + }, + "eth-account": { + "hashes": [ + "sha256:0ccc0edbb17021004356ae6e37887528b6e59e6ae6283f3917b9759a5887203b", + "sha256:ccb2d90a16c81c8ea4ca4dc76a70b50f1d63cea6aff3c5a5eddedf9e45143eca" + ], + "markers": "python_version >= '3.6' and python_version < '4'", + "version": "==0.8.0" }, "eth-hash": { + "extras": [ + "pycryptodome" + ], "hashes": [ "sha256:4d992e885f3ae3901abbe98bd776ba62d0f6335f98c6e9fc60a39b9d114dfb5a", "sha256:9805075f653e114a31a99678e93b257fb4082337696f4eff7b4371fe65158409" @@ -523,6 +643,28 @@ "markers": "python_version >= '3.7' and python_version < '4'", "version": "==0.5.1" }, + "eth-keyfile": { + "hashes": [ + "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c", + "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560" + ], + "version": "==0.6.1" + }, + "eth-keys": { + "hashes": [ + "sha256:7d18887483bc9b8a3fdd8e32ddcb30044b9f08fcb24a380d93b6eee3a5bb3216", + "sha256:e07915ffb91277803a28a379418bdd1fad1f390c38ad9353a0f189789a440d5d" + ], + "version": "==0.4.0" + }, + "eth-rlp": { + "hashes": [ + "sha256:e88e949a533def85c69fa94224618bbbd6de00061f4cff645c44621dab11cf33", + "sha256:f3263b548df718855d9a8dbd754473f383c0efc82914b0b849572ce3e06e71a6" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.3.0" + }, "eth-typing": { "hashes": [ "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", @@ -729,6 +871,14 @@ "index": "pypi", "version": "==0.1.2" }, + "hexbytes": { + "hashes": [ + "sha256:21c3a5bd00a383097f0369c387174e79839d75c4ccc3a7edda315c9644f4458a", + "sha256:afeebfb800f5f15a3ca5bab52e49eabcb4b6dac06ec8ff01a94fdb890c6c0712" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.3.0" + }, "idna": { "hashes": [ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", @@ -825,6 +975,12 @@ "markers": "python_version >= '3.7'", "version": "==6.0.4" }, + "parsimonious": { + "hashes": [ + "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1" + ], + "version": "==0.9.0" + }, "protobuf": { "hashes": [ "sha256:09310bce43353b46d73ba7e3bca78273b9bc50349509b9698e64d288c6372c2a", @@ -885,6 +1041,100 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, + "regex": { + "hashes": [ + "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", + "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", + "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", + "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", + "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", + "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", + "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", + "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", + "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", + "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", + "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", + "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", + "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", + "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", + "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", + "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", + "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", + "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", + "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", + "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", + "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", + "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", + "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", + "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", + "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", + "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", + "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", + "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", + "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", + "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", + "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", + "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", + "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", + "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", + "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", + "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", + "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", + "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", + "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", + "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", + "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", + "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", + "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", + "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", + "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", + "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", + "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", + "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", + "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", + "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", + "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", + "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", + "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", + "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", + "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", + "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", + "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", + "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", + "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", + "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", + "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", + "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", + "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", + "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", + "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", + "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", + "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", + "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", + "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", + "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", + "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", + "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", + "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", + "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", + "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", + "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", + "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", + "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", + "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", + "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", + "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", + "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", + "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", + "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", + "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", + "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", + "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", + "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.6.3" + }, "requests": { "hashes": [ "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", @@ -893,6 +1143,20 @@ "index": "pypi", "version": "==2.31.0" }, + "rlp": { + "hashes": [ + "sha256:63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8", + "sha256:d2a963225b3f26795c5b52310e0871df9824af56823d739511583ef459895a7d" + ], + "version": "==3.0.0" + }, + "safe-pysha3": { + "hashes": [ + "sha256:e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17" + ], + "index": "pypi", + "version": "==1.0.4" + }, "setuptools": { "hashes": [ "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", @@ -1091,13 +1355,102 @@ } }, "develop": { - "exceptiongroup": { + "certifi": { + "hashes": [ + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.5.7" + }, + "charset-normalizer": { + "hashes": [ + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.0" + }, + "idna": { "hashes": [ - "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e", - "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785" + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], - "markers": "python_version < '3.11'", - "version": "==1.1.1" + "markers": "python_version >= '3.5'", + "version": "==3.4" }, "iniconfig": { "hashes": [ @@ -1139,13 +1492,37 @@ "index": "pypi", "version": "==0.21.0" }, - "tomli": { + "requests": { + "hashes": [ + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" + ], + "index": "pypi", + "version": "==2.31.0" + }, + "requests-mock": { + "hashes": [ + "sha256:2fdbb637ad17ee15c06f33d31169e71bf9fe2bdb7bc9da26185be0dd8d842699", + "sha256:59c9c32419a9fb1ae83ec242d98e889c45bd7d7a65d48375cc243ec08441658b" + ], + "index": "pypi", + "version": "==1.10.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "urllib3": { "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", + "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14" ], - "markers": "python_version < '3.11'", - "version": "==2.0.1" + "index": "pypi", + "version": "==1.26.16" } } } diff --git a/README.md b/README.md index 143bad81..e7b151a3 100644 --- a/README.md +++ b/README.md @@ -87,9 +87,10 @@ make tests ``` ### Changelogs -**0.6.4**(change before release) +**0.6.4** * Change logging logic to use different loggers for each module and class * Solved issue preventing requesting spot and derivative historical orders for more than one market_id +* Removed references to pysha3 library (and also eip712-struct that required it) and replaced it with other implementation to allow the project to work with Python 3.11 * Add `pytest` as a development dependency to implement and run unit tests **0.6.3.1** diff --git a/pyinjective/orderhash.py b/pyinjective/orderhash.py index 06d54eae..b27551b1 100644 --- a/pyinjective/orderhash.py +++ b/pyinjective/orderhash.py @@ -1,38 +1,48 @@ -import sha3 import requests from decimal import Decimal -from eip712_structs import make_domain, EIP712Struct, String - -class OrderInfo(EIP712Struct): - SubaccountId = String() - FeeRecipient = String() - Price = String() - Quantity = String() - -class SpotOrder(EIP712Struct): - MarketId = String() - OrderInfo = OrderInfo - Salt = String() - OrderType = String() - TriggerPrice = String() - -class DerivativeOrder(EIP712Struct): - MarketId = String() - OrderInfo = OrderInfo - OrderType = String() - Margin = String() - TriggerPrice = String() - Salt = String() - -EIP712_domain = make_domain( - name='Injective Protocol', - version='2.0.0', - chainId=888, - verifyingContract='0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', - salt='0x0000000000000000000000000000000000000000000000000000000000000000' -) - -domain_separator = EIP712_domain.hash_struct() + +from eip712.messages import EIP712Message, EIP712Type +from eth_account.messages import _hash_eip191_message as hash_eip191_message +from hexbytes import HexBytes + + +class OrderInfo(EIP712Type): + SubaccountId: "string" + FeeRecipient: "string" + Price: "string" + Quantity: "string" + + +class SpotOrder(EIP712Message): + _name_ = "Injective Protocol" + _version_ = "2.0.0" + _chainId_ = 888 + _verifyingContract_ = "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + _salt_ = HexBytes("0x0000000000000000000000000000000000000000000000000000000000000000") + + MarketId: "string" + OrderInfo: OrderInfo + Salt: "string" + OrderType: "string" + TriggerPrice: "string" + + +class DerivativeOrder(EIP712Message): + _name_ = "Injective Protocol" + _version_ = "2.0.0" + _chainId_ = 888 + _verifyingContract_ = "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + _salt_ = HexBytes("0x0000000000000000000000000000000000000000000000000000000000000000") + + MarketId: "string" + OrderInfo: OrderInfo + OrderType: "string" + Margin: "string" + TriggerPrice: "string" + Salt: "string" + + +# domain_separator = EIP712_domain.hash_struct() order_type_dict = {0: '\x00', 1: '\x01', 2: '\x02', 3: '\x03', 4: '\x04', 5: '\x05', 6: '\x06', 7: '\x07', 8: '\x08'} class OrderHashResponse: @@ -127,8 +137,6 @@ def build_eip712_msg(order, nonce): ) def hash_order(msg): - typed_data_hash = msg.hash_struct() - typed_bytes = b'\x19\x01' + domain_separator + typed_data_hash - keccak256 = sha3.keccak_256() - keccak256.update(typed_bytes) - return '0x' + keccak256.hexdigest() + signable_message = msg.signable_message + hex_digest = hash_eip191_message(signable_message=signable_message).hex() + return "0x" + hex_digest diff --git a/pyinjective/wallet.py b/pyinjective/wallet.py index 2b192337..c557dd8f 100644 --- a/pyinjective/wallet.py +++ b/pyinjective/wallet.py @@ -1,7 +1,3 @@ -import copy -import functools - -import eth_hash.auto import sha3 import hashlib import aiohttp @@ -9,12 +5,8 @@ import requests from typing import Tuple -from eth_hash.backends import pysha3 -from eth_hash import Keccak256 -from Crypto.Hash.keccak import Keccak_Hash from bech32 import bech32_encode, bech32_decode, convertbits from bip32 import BIP32 -from Crypto.Hash import keccak from ecdsa import SigningKey, VerifyingKey, SECP256k1, BadSignatureError from ecdsa.util import sigencode_string_canonize from mnemonic import Mnemonic @@ -32,13 +24,6 @@ DEFAULT_DERIVATION_PATH = "m/44'/60'/0'/0/0" -class Keccak_Hash_With_Copy(Keccak_Hash): - # We need to create a version of Keccak_Hash that responds to `copy` - # This is a requirement from the ecdsa library - - def copy(self): - return self.new(data=self.digest()) - class PrivateKey: """ @@ -114,18 +99,8 @@ def sign(self, msg: bytes) -> bytes: :return: a signature of this private key over the given message """ - # return self.signing_key.sign_deterministic(msg, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize) - # keccak_function = functools.partial(keccak.new, digest_bits=256) - def keccak_creation(data=None): - # Create a 256 bits keccak hash - keccak_hash = Keccak_Hash_With_Copy(data=data, digest_bytes=32, update_after_digest=False) - return keccak_hash - - #return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) - hash = eth_hash.auto.keccak - digest = eth_hash.auto.keccak(msg) - return self.signing_key.sign_digest_deterministic(digest, hashfunc=hash, sigencode=sigencode_string_canonize) + return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) class PublicKey: """ @@ -198,13 +173,8 @@ def to_cons_bech32(self) -> str: def to_address(self) -> "Address": """Return address instance from this public key""" - # pubkey = self.verify_key.to_string("compressed") - # s = hashlib.new("sha256", pubkey).digest() - # r = hashlib.new("ripemd160", s).digest() - # return Address(r) - pubkey = self.verify_key.to_string("uncompressed") - keccak_hash = keccak.new(digest_bits=256) + keccak_hash = sha3.keccak_256() keccak_hash.update(pubkey[1:]) addr = keccak_hash.digest()[12:] return Address(addr) diff --git a/setup.py b/setup.py index cbad77b8..3f9b2395 100755 --- a/setup.py +++ b/setup.py @@ -20,26 +20,28 @@ VERSION = "0.6.4-pre" REQUIRED = [ - "protobuf", - "grpcio-tools", - "grpcio", - "asyncio", "aiohttp", - "ecdsa", + "aiocron", + "asyncio", "bech32", - "mnemonic", - "hdwallets", "bip32", - "requests", - "eip712_structs", "coincurve", - "aiocron", - "websockets" + "ecdsa", + "eip712", + "grpcio", + "grpcio-tools", + "hdwallets", + "mnemonic", + "protobuf", + "requests", + "safe-pysha3", + "websockets", ] DEV_REQUIRED = [ "pytest", "pytest-asyncio", + "request-mock", ] # The rest you shouldn't have to touch too much :) diff --git a/tests/test_orderhash.py b/tests/test_orderhash.py new file mode 100644 index 00000000..2aff84a0 --- /dev/null +++ b/tests/test_orderhash.py @@ -0,0 +1,59 @@ +from pyinjective import PrivateKey +from pyinjective.composer import Composer +from pyinjective.constant import Network +from pyinjective.orderhash import OrderHashManager + + +class TestOrderHashManager: + + def test_spot_order_hash(self, requests_mock): + network = Network.devnet() + composer = Composer(network=network.string()) + priv_key = PrivateKey.from_mnemonic("test one few words") + pub_key = priv_key.to_public_key() + address = pub_key.to_address() + + subaccount_id = address.get_subaccount_id(index=0) + + url = network.lcd_endpoint + "/injective/exchange/v1beta1/exchange/" + subaccount_id + requests_mock.get(url, json={"nonce": 0}) + order_hash_manager = OrderHashManager( + address=address, + network=network, + subaccount_indexes=[0] + ) + + spot_market_id = "0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0" + fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" + + spot_orders = [ + composer.SpotOrder( + market_id=spot_market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=0.524, + quantity=0.01, + is_buy=True, + is_po=False + ), + composer.SpotOrder( + market_id=spot_market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=27.92, + quantity=0.01, + is_buy=False, + is_po=False + ), + ] + + order_hashes_response = order_hash_manager.compute_order_hashes( + spot_orders=spot_orders, + derivative_orders=[], + subaccount_index=0 + ) + + assert (len(order_hashes_response.spot) == 2) + assert (len(order_hashes_response.derivative) == 0) + assert (order_hashes_response.spot[0] == "0x6b1e4d1fb3012735dd5e386175eb4541c024e0d8dbfeb452767b973d70ae0924") + assert (order_hashes_response.spot[1] == "0xb36146f913955d989269732d167ec554e6d0d544411d82d7f86aef18350b252b") diff --git a/tests/test_wallet.py b/tests/test_wallet.py index e2cf7834..4e6132a6 100644 --- a/tests/test_wallet.py +++ b/tests/test_wallet.py @@ -1,5 +1,3 @@ -import hashlib - from eth_hash.auto import keccak from pyinjective import PrivateKey, Address @@ -13,8 +11,6 @@ def test_private_key_signature_generation(self): signature = private_key.sign(msg="test message".encode()) expected_signature = b'\x8f\xae\xcb#z\x9a+\x12\x88\xea\xb5xZ"\x8f\x98y\xb8\x97\xa7F\xd5\xdd\x15s\x05;\x04\x1d\xbaY|rw\x8b\xbb\x19\xfc\x8e\x15\x8b\xf1\x18\x08\xba\xc7\x15\xed\xb0\xee\x95\x0e|Ch\x7f\xaf\x9cH\xc6\x9f\xbf\x14\xa5' - hashlib.sha1() - assert (expected_signature == signature) From aedc9c8cd1efa3f643fc3e021d68dfc2d8e9d707 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 15:13:55 +0200 Subject: [PATCH 04/18] (fix) Refactor dependencies to remove the pysha3 library requirement --- Pipfile | 24 +++++++++--------- Pipfile.lock | 69 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 52 insertions(+), 41 deletions(-) diff --git a/Pipfile b/Pipfile index 2f9088bd..f07ae931 100644 --- a/Pipfile +++ b/Pipfile @@ -4,23 +4,23 @@ verify_ssl = true name = "pypi" [packages] -protobuf = "*" -grpcio-tools = "*" -grpcio = "*" -asyncio = "*" +aiocron = "*" aiohttp = "*" -ecdsa = "*" +asyncio = "*" bech32 = "*" -mnemonic = "*" -hdwallets = "*" bip32 = "*" -requests = "*" coincurve = "*" -aiocron = "*" -websockets = "*" -urllib3 = "<2" -safe-pysha3 = "*" +ecdsa = "*" eip712 = "*" +grpcio = "*" +grpcio-tools = "*" +hdwallets = "*" +mnemonic = "*" +protobuf = "*" +requests = "*" +safe-pysha3 = "*" +urllib3 = "<2" +websockets = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index bf9dae83..ead81018 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -670,7 +670,7 @@ "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", "sha256:e9535e9d524d4c7a0cbd3d9832093cc5001a3e31869e72645674d24c6376d196" ], - "markers": "python_version < '4' and python_full_version >= '3.7.2'", + "markers": "python_full_version >= '3.7.2' and python_version < '4'", "version": "==3.3.0" }, "eth-utils": { @@ -1007,38 +1007,49 @@ ], "version": "==2.21" }, - "pysha3": { - "hashes": [ - "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", - "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48", - "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4", - "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d", - "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9", - "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603", - "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f", - "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f", - "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77", - "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5", - "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9", - "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d", - "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24", - "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608", - "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b", - "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030", - "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8", - "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef", - "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf", - "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07", - "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e" - ], - "version": "==1.0.2" + "pycryptodome": { + "hashes": [ + "sha256:01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb", + "sha256:10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6", + "sha256:12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403", + "sha256:157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148", + "sha256:16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4", + "sha256:363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825", + "sha256:3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2", + "sha256:422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14", + "sha256:4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c", + "sha256:4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4", + "sha256:51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2", + "sha256:53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb", + "sha256:62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf", + "sha256:6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec", + "sha256:78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918", + "sha256:795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3", + "sha256:7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944", + "sha256:83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e", + "sha256:928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024", + "sha256:957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f", + "sha256:9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1", + "sha256:9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380", + "sha256:b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9", + "sha256:b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e", + "sha256:c9adee653fc882d98956e33ca2c1fb582e23a8af7ac82fee75bd6113c55a0413", + "sha256:cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec", + "sha256:d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54", + "sha256:d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2", + "sha256:e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27", + "sha256:f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b", + "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf", + "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08" + ], + "version": "==3.18.0" }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.8.2" }, "regex": { @@ -1170,7 +1181,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "toolz": { @@ -1513,7 +1524,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "urllib3": { From 8eddc54af3ada38c9c7068c54b22b77a8467d225 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 15:18:52 +0200 Subject: [PATCH 05/18] (fix) Change setup.py version to enable the release of this version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3f9b2395..dbff1532 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" REQUIRES_PYTHON = ">=3.7, <3.11" -VERSION = "0.6.4-pre" +VERSION = "0.6.4" REQUIRED = [ "aiohttp", From c89af2a12f3ca03e23bf5ac62fb3ac3e51200b50 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 16:57:17 +0200 Subject: [PATCH 06/18] (fix) Added restriction in setup.py to require Python >= 3.9 (the new safe-pysha3 does not work with Python <=3.8) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dbff1532..6d3572b7 100755 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ URL = "https://github.com/InjectiveLabs/sdk-python" EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" -REQUIRES_PYTHON = ">=3.7, <3.11" +REQUIRES_PYTHON = ">=3.9" VERSION = "0.6.4" REQUIRED = [ From 5f4a42f2360a24f4beac551d5655045c0e2e89d1 Mon Sep 17 00:00:00 2001 From: abel Date: Fri, 9 Jun 2023 17:59:29 -0400 Subject: [PATCH 07/18] (fix) Added logic in Composer class to parse the transaction response messages from the Explorer. The transaction response message structure changed in the last chain upgrade. The messages in the transaction are now included in the messages attribute instead of the data attribute --- Pipfile | 2 +- Pipfile.lock | 40 ++++------------- .../explorer_rpc/1_GetTxByHash.py | 11 ++++- .../explorer_rpc/2_AccountTxs.py | 12 +++-- pyinjective/composer.py | 45 ++++++++++++++++++- pyinjective/transaction.py | 2 +- 6 files changed, 72 insertions(+), 40 deletions(-) diff --git a/Pipfile b/Pipfile index cc9330d8..956c5a05 100644 --- a/Pipfile +++ b/Pipfile @@ -24,4 +24,4 @@ urllib3 = "<2" [dev-packages] [requires] -python_version = "3.8" +python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock index 411f834d..8f821441 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -158,28 +158,6 @@ "markers": "python_version >= '3.7'", "version": "==23.1.0" }, - "backports.zoneinfo": { - "hashes": [ - "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", - "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", - "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", - "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", - "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", - "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", - "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", - "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", - "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", - "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", - "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", - "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", - "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", - "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", - "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", - "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" - ], - "markers": "python_version < '3.9'", - "version": "==0.2.1" - }, "base58": { "hashes": [ "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2", @@ -539,27 +517,27 @@ }, "eth-hash": { "hashes": [ - "sha256:4d992e885f3ae3901abbe98bd776ba62d0f6335f98c6e9fc60a39b9d114dfb5a", - "sha256:9805075f653e114a31a99678e93b257fb4082337696f4eff7b4371fe65158409" + "sha256:1b5f10eca7765cc385e1430eefc5ced6e2e463bb18d1365510e2e539c1a6fe4e", + "sha256:251f62f6579a1e247561679d78df37548bd5f59908da0b159982bf8293ad32f0" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.5.1" + "version": "==0.5.2" }, "eth-typing": { "hashes": [ - "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", - "sha256:e9535e9d524d4c7a0cbd3d9832093cc5001a3e31869e72645674d24c6376d196" + "sha256:347d50713dd58ab50063b228d8271624ab2de3071bfa32d467b05f0ea31ab4c5", + "sha256:7f49610469811ee97ac43eaf6baa294778ce74042d41e61ecf22e5ebe385590f" ], "markers": "python_version < '4' and python_full_version >= '3.7.2'", - "version": "==3.3.0" + "version": "==3.4.0" }, "eth-utils": { "hashes": [ - "sha256:63901e54ec9e4ac16ae0a0d28e1dc48b968c20184d22f2727e5f3ca24b6250bc", - "sha256:fcb4c3c1b32947ba92970963f9aaf40da73b04ea1034964ff8c0e70595127138" + "sha256:4938ab742f91cdf19bae024261af090664f63ccf83bdb1213e7146c14209e899", + "sha256:7cccfb0b0749431d0d001e327e9a7289bf07308316a73850ae3895020e5682f4" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.1.0" + "version": "==2.1.1" }, "frozenlist": { "hashes": [ diff --git a/examples/exchange_client/explorer_rpc/1_GetTxByHash.py b/examples/exchange_client/explorer_rpc/1_GetTxByHash.py index 4222c82b..0a95f2ea 100644 --- a/examples/exchange_client/explorer_rpc/1_GetTxByHash.py +++ b/examples/exchange_client/explorer_rpc/1_GetTxByHash.py @@ -2,15 +2,22 @@ import logging from pyinjective.async_client import AsyncClient +from pyinjective.composer import Composer from pyinjective.constant import Network async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() client = AsyncClient(network, insecure=False) + composer = Composer(network=network.string()) tx_hash = "0F3EBEC1882E1EEAC5B7BDD836E976250F1CD072B79485877CEACCB92ACDDF52" - account = await client.get_tx_by_hash(tx_hash=tx_hash) - print(account) + transaction_response = await client.get_tx_by_hash(tx_hash=tx_hash) + print(transaction_response) + + transaction_messages = composer.UnpackTransactionMessages(transaction=transaction_response.data) + print(transaction_messages) + first_message = transaction_messages[0] + print(first_message) if __name__ == '__main__': logging.basicConfig(level=logging.INFO) diff --git a/examples/exchange_client/explorer_rpc/2_AccountTxs.py b/examples/exchange_client/explorer_rpc/2_AccountTxs.py index 4f0027cf..29c6a513 100644 --- a/examples/exchange_client/explorer_rpc/2_AccountTxs.py +++ b/examples/exchange_client/explorer_rpc/2_AccountTxs.py @@ -2,17 +2,23 @@ import logging from pyinjective.async_client import AsyncClient +from pyinjective.composer import Composer from pyinjective.constant import Network async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() client = AsyncClient(network, insecure=False) + composer = Composer(network=network.string()) address = "inj1phd706jqzd9wznkk5hgsfkrc8jqxv0kmlj0kex" - type = "cosmos.bank.v1beta1.MsgSend" + message_type = "cosmos.bank.v1beta1.MsgSend" limit = 2 - account = await client.get_account_txs(address=address, type=type, limit=limit) - print(account) + transactions_response = await client.get_account_txs(address=address, type=message_type, limit=limit) + print(transactions_response) + first_transaction_messages = composer.UnpackTransactionMessages(transaction=transactions_response.data[0]) + print(first_transaction_messages) + first_message = first_transaction_messages[0] + print(first_message) if __name__ == '__main__': logging.basicConfig(level=logging.INFO) diff --git a/pyinjective/composer.py b/pyinjective/composer.py index 3b6a3c6d..92858868 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -2,7 +2,7 @@ import json import logging -from google.protobuf import any_pb2, message, timestamp_pb2 +from google.protobuf import any_pb2, timestamp_pb2, json_format from .proto.cosmos.authz.v1beta1 import authz_pb2 as cosmos_authz_pb from .proto.cosmos.authz.v1beta1 import tx_pb2 as cosmos_authz_tx_pb @@ -13,7 +13,6 @@ from .proto.injective.exchange.v1beta1 import tx_pb2 as injective_exchange_tx_pb from pyinjective.proto.injective.exchange.v1beta1 import exchange_pb2 as injective_dot_exchange_dot_v1beta1_dot_exchange__pb2 -from .proto.injective.types.v1beta1 import tx_response_pb2 as tx_response_pb from .proto.injective.auction.v1beta1 import tx_pb2 as injective_auction_tx_pb @@ -969,3 +968,45 @@ def UnpackMsgExecResponse(msg_type, data): responses = [header_map[msg_type].FromString(result) for result in data.results] return responses + + @staticmethod + def UnpackTransactionMessages(transaction): + meta_messages = json.loads(transaction.messages.decode()) + + header_map = { + "/injective.exchange.v1beta1.MsgCreateSpotLimitOrder": injective_exchange_tx_pb.MsgCreateSpotLimitOrderResponse, + "/injective.exchange.v1beta1.MsgCreateSpotMarketOrder": injective_exchange_tx_pb.MsgCreateSpotMarketOrderResponse, + "/injective.exchange.v1beta1.MsgCreateDerivativeLimitOrder": injective_exchange_tx_pb.MsgCreateDerivativeLimitOrderResponse, + "/injective.exchange.v1beta1.MsgCreateDerivativeMarketOrder": injective_exchange_tx_pb.MsgCreateDerivativeMarketOrderResponse, + "/injective.exchange.v1beta1.MsgCancelSpotOrder": injective_exchange_tx_pb.MsgCancelSpotOrderResponse, + "/injective.exchange.v1beta1.MsgCancelDerivativeOrder": injective_exchange_tx_pb.MsgCancelDerivativeOrderResponse, + "/injective.exchange.v1beta1.MsgBatchCancelSpotOrders": injective_exchange_tx_pb.MsgBatchCancelSpotOrdersResponse, + "/injective.exchange.v1beta1.MsgBatchCancelDerivativeOrders": injective_exchange_tx_pb.MsgBatchCancelDerivativeOrdersResponse, + "/injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrders": injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders, + "/injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrders": injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders, + "/injective.exchange.v1beta1.MsgBatchUpdateOrders": injective_exchange_tx_pb.MsgBatchUpdateOrders, + "/injective.exchange.v1beta1.MsgDeposit": injective_exchange_tx_pb.MsgDeposit, + "/injective.exchange.v1beta1.MsgWithdraw": injective_exchange_tx_pb.MsgWithdraw, + "/injective.exchange.v1beta1.MsgSubaccountTransfer": injective_exchange_tx_pb.MsgSubaccountTransfer, + "/injective.exchange.v1beta1.MsgLiquidatePosition": injective_exchange_tx_pb.MsgLiquidatePosition, + "/injective.exchange.v1beta1.MsgIncreasePositionMargin": injective_exchange_tx_pb.MsgIncreasePositionMargin, + "/injective.auction.v1beta1.MsgBid": injective_auction_tx_pb.MsgBid, + "/injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrder": injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder, + "/injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrder": injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder, + "/injective.exchange.v1beta1.MsgCancelBinaryOptionsOrder": injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder, + "/injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarket": injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarket, + "/injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunch": injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunch, + "/cosmos.bank.v1beta1.MsgSend": cosmos_bank_tx_pb.MsgSend, + "/cosmos.authz.v1beta1.MsgGrant": cosmos_authz_tx_pb.MsgGrant, + "/cosmos.authz.v1beta1.MsgExec": cosmos_authz_tx_pb.MsgExec, + "/cosmos.authz.v1beta1.MsgRevoke": cosmos_authz_tx_pb.MsgRevoke, + "/injective.oracle.v1beta1.MsgRelayPriceFeedPrice": injective_oracle_tx_pb.MsgRelayPriceFeedPrice, + "/injective.oracle.v1beta1.MsgRelayProviderPrices": injective_oracle_tx_pb.MsgRelayProviderPrices, + } + + msgs = [] + for msg in meta_messages: + msg_as_string_dict = json.dumps(msg["value"]) + msgs.append(json_format.Parse(msg_as_string_dict, header_map[msg["type"]]())) + + return msgs diff --git a/pyinjective/transaction.py b/pyinjective/transaction.py index 0a83ec9e..7a02228f 100644 --- a/pyinjective/transaction.py +++ b/pyinjective/transaction.py @@ -46,7 +46,7 @@ def with_messages(self, *msgs: message.Message) -> "Transaction": def with_sender(self, client: Client, sender: str) -> "Transaction": if len(self.msgs) == 0: - raise EmptyMsgError("messsage is empty, please use with_messages at least 1 message") + raise EmptyMsgError("message is empty, please use with_messages at least 1 message") account = client.get_account(sender) if account: self.account_num = account.account_number From 81ca1ef8356ddd56cc789c565462844cb7bc2b29 Mon Sep 17 00:00:00 2001 From: abel Date: Fri, 9 Jun 2023 18:12:27 -0400 Subject: [PATCH 08/18] (fix) Updating README and the version number to prepare the PR to be released to master --- README.md | 3 +++ setup.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 93122e4d..27359f20 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,9 @@ Note that the [sync client](https://github.com/InjectiveLabs/sdk-python/blob/mas ### Changelogs +**0.6.3.3** +* Update the code to the new structure of transaction responses + **0.6.3.1** * Update the code to the new structure of transaction simulation responses diff --git a/setup.py b/setup.py index ce3c94df..2f589c3b 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" REQUIRES_PYTHON = ">=3.7.0" -VERSION = "0.6.3.2" +VERSION = "0.6.3.3" REQUIRED = [ "protobuf", From 39b618a42656235e4ed4db9e2e8e19ffadf90d83 Mon Sep 17 00:00:00 2001 From: abel Date: Tue, 13 Jun 2023 12:00:07 -0400 Subject: [PATCH 09/18] (fix) Change version numbers to 0.6.4 in setup.py and README file in preparation for next release --- README.md | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 80eca782..74310d41 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ make tests ``` ### Changelogs -**0.6.4**(change before release) +**0.6.4** * Change logging logic to use different loggers for each module and class * Solved issue preventing requesting spot and derivative historical orders for more than one market_id * Add `pytest` as a development dependency to implement and run unit tests diff --git a/setup.py b/setup.py index cbad77b8..b5646fc1 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" REQUIRES_PYTHON = ">=3.7, <3.11" -VERSION = "0.6.4-pre" +VERSION = "0.6.4" REQUIRED = [ "protobuf", From 51a9a3338c0e92674be91e83e3c0af01a8075aa5 Mon Sep 17 00:00:00 2001 From: abel Date: Thu, 15 Jun 2023 15:20:18 -0400 Subject: [PATCH 10/18] (fix) Fix instanciation of mainnet network instance to not support `k8s` anymore (that node has been removed in favor of the load balanced nodes) --- Pipfile.lock | 42 ++++++++++++++++++++--------------------- pyinjective/constant.py | 1 - 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 488b6277..e6210905 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "43418c6c59b0ed3d50fc1f375ae7ebdf4a0a5d895c4257b6d55310855a598e86" + "sha256": "dc00f00f492872b6f9fcecb4352339ef18985ebaf1d793b6824b928ef2a6d17f" }, "pipfile-spec": 6, "requires": { @@ -390,11 +390,11 @@ }, "croniter": { "hashes": [ - "sha256:924a38fda88f675ec6835667e1d32ac37ff0d65509c2152729d16ff205e32a65", - "sha256:f17f877be1d93b9e3191151584a19d8b367b017ab0febc8c5472b9300da61c4c" + "sha256:1a6df60eacec3b7a0aa52a8f2ef251ae3dd2a7c7c8b9874e73e791636d55a361", + "sha256:9595da48af37ea06ec3a9f899738f1b2c1c13da3c38cea606ef7cd03ea421128" ], "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.3.15" + "version": "==1.4.1" }, "cytoolz": { "hashes": [ @@ -827,22 +827,22 @@ }, "protobuf": { "hashes": [ - "sha256:09310bce43353b46d73ba7e3bca78273b9bc50349509b9698e64d288c6372c2a", - "sha256:20874e7ca4436f683b64ebdbee2129a5a2c301579a67d1a7dda2cdf62fb7f5f7", - "sha256:25e3370eda26469b58b602e29dff069cfaae8eaa0ef4550039cc5ef8dc004511", - "sha256:281342ea5eb631c86697e1e048cb7e73b8a4e85f3299a128c116f05f5c668f8f", - "sha256:384dd44cb4c43f2ccddd3645389a23ae61aeb8cfa15ca3a0f60e7c3ea09b28b3", - "sha256:54a533b971288af3b9926e53850c7eb186886c0c84e61daa8444385a4720297f", - "sha256:6c081863c379bb1741be8f8193e893511312b1d7329b4a75445d1ea9955be69e", - "sha256:86df87016d290143c7ce3be3ad52d055714ebaebb57cc659c387e76cfacd81aa", - "sha256:8da6070310d634c99c0db7df48f10da495cc283fd9e9234877f0cd182d43ab7f", - "sha256:b2cfab63a230b39ae603834718db74ac11e52bccaaf19bf20f5cce1a84cf76df", - "sha256:c52cfcbfba8eb791255edd675c1fe6056f723bf832fa67f0442218f8817c076e", - "sha256:ce744938406de1e64b91410f473736e815f28c3b71201302612a68bf01517fea", - "sha256:efabbbbac1ab519a514579ba9ec52f006c28ae19d97915951f69fa70da2c9e91" + "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8", + "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223", + "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288", + "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac", + "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1", + "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1", + "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62", + "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb", + "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35", + "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b", + "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359", + "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a", + "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5" ], "index": "pypi", - "version": "==4.23.2" + "version": "==4.23.3" }, "pycparser": { "hashes": [ @@ -1125,11 +1125,11 @@ }, "pytest": { "hashes": [ - "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362", - "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3" + "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295", + "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b" ], "index": "pypi", - "version": "==7.3.1" + "version": "==7.3.2" }, "pytest-asyncio": { "hashes": [ diff --git a/pyinjective/constant.py b/pyinjective/constant.py index 72bbf2ec..0cb16a77 100644 --- a/pyinjective/constant.py +++ b/pyinjective/constant.py @@ -109,7 +109,6 @@ def testnet(cls): @classmethod def mainnet(cls, node='lb'): nodes = [ - 'k8s', # us, prod 'lb', # us, asia, prod 'sentry0', # ca, prod 'sentry1', # ca, prod From 9af635e98b3bdc9a34ef1e4622510dcafc40e830 Mon Sep 17 00:00:00 2001 From: abel Date: Thu, 15 Jun 2023 15:25:34 -0400 Subject: [PATCH 11/18] (fix) Change version number and changelog --- README.md | 3 +++ setup.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 74310d41..8c94c520 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,9 @@ make tests ``` ### Changelogs +**0.6.5** +* Removed `k8s` from the list of supported mainnet nodes (`lb` should be used instead) + **0.6.4** * Change logging logic to use different loggers for each module and class * Solved issue preventing requesting spot and derivative historical orders for more than one market_id diff --git a/setup.py b/setup.py index b5646fc1..b42d972d 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" REQUIRES_PYTHON = ">=3.7, <3.11" -VERSION = "0.6.4" +VERSION = "0.6.5" REQUIRED = [ "protobuf", From cb09390f82566441b0ca3ab6941633b159f651c0 Mon Sep 17 00:00:00 2001 From: Abel Armoa Date: Fri, 2 Jun 2023 01:37:03 +0200 Subject: [PATCH 12/18] (feat) Test using Prcryptodome to remove pysha3 --- Pipfile | 2 ++ pyinjective/wallet.py | 36 ++++++++++++++++++++++++++++++------ tests/test_wallet.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 tests/test_wallet.py diff --git a/Pipfile b/Pipfile index b65021b0..3715b35d 100644 --- a/Pipfile +++ b/Pipfile @@ -20,6 +20,8 @@ coincurve = "*" aiocron = "*" websockets = "*" urllib3 = "<2" +pycryptodome = "*" +pycryptodomex = "*" [dev-packages] pytest = "*" diff --git a/pyinjective/wallet.py b/pyinjective/wallet.py index f682cdd2..2b192337 100644 --- a/pyinjective/wallet.py +++ b/pyinjective/wallet.py @@ -1,13 +1,20 @@ -import sys +import copy +import functools + +import eth_hash.auto import sha3 import hashlib -import bech32 import aiohttp import json import requests from typing import Tuple + +from eth_hash.backends import pysha3 +from eth_hash import Keccak256 +from Crypto.Hash.keccak import Keccak_Hash from bech32 import bech32_encode, bech32_decode, convertbits from bip32 import BIP32 +from Crypto.Hash import keccak from ecdsa import SigningKey, VerifyingKey, SECP256k1, BadSignatureError from ecdsa.util import sigencode_string_canonize from mnemonic import Mnemonic @@ -25,6 +32,14 @@ DEFAULT_DERIVATION_PATH = "m/44'/60'/0'/0/0" +class Keccak_Hash_With_Copy(Keccak_Hash): + # We need to create a version of Keccak_Hash that responds to `copy` + # This is a requirement from the ecdsa library + + def copy(self): + return self.new(data=self.digest()) + + class PrivateKey: """ Class for wrapping SigningKey that is used for signature creation and public key derivation. @@ -100,7 +115,16 @@ def sign(self, msg: bytes) -> bytes: :return: a signature of this private key over the given message """ # return self.signing_key.sign_deterministic(msg, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize) - return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + # keccak_function = functools.partial(keccak.new, digest_bits=256) + def keccak_creation(data=None): + # Create a 256 bits keccak hash + keccak_hash = Keccak_Hash_With_Copy(data=data, digest_bytes=32, update_after_digest=False) + return keccak_hash + + #return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + hash = eth_hash.auto.keccak + digest = eth_hash.auto.keccak(msg) + return self.signing_key.sign_digest_deterministic(digest, hashfunc=hash, sigencode=sigencode_string_canonize) class PublicKey: @@ -180,9 +204,9 @@ def to_address(self) -> "Address": # return Address(r) pubkey = self.verify_key.to_string("uncompressed") - k = sha3.keccak_256() - k.update(pubkey[1:]) - addr = k.digest()[12:] + keccak_hash = keccak.new(digest_bits=256) + keccak_hash.update(pubkey[1:]) + addr = keccak_hash.digest()[12:] return Address(addr) def verify(self, msg: bytes, sig: bytes) -> bool: diff --git a/tests/test_wallet.py b/tests/test_wallet.py new file mode 100644 index 00000000..e2cf7834 --- /dev/null +++ b/tests/test_wallet.py @@ -0,0 +1,33 @@ +import hashlib + +from eth_hash.auto import keccak + +from pyinjective import PrivateKey, Address + + +class TestPrivateKey: + + def test_private_key_signature_generation(self): + private_key = PrivateKey.from_mnemonic("test mnemonic never use other places") + + signature = private_key.sign(msg="test message".encode()) + expected_signature = b'\x8f\xae\xcb#z\x9a+\x12\x88\xea\xb5xZ"\x8f\x98y\xb8\x97\xa7F\xd5\xdd\x15s\x05;\x04\x1d\xbaY|rw\x8b\xbb\x19\xfc\x8e\x15\x8b\xf1\x18\x08\xba\xc7\x15\xed\xb0\xee\x95\x0e|Ch\x7f\xaf\x9cH\xc6\x9f\xbf\x14\xa5' + + hashlib.sha1() + + assert (expected_signature == signature) + + +class TestPublicKey: + + def test_convert_public_key_to_address(self): + private_key = PrivateKey.from_mnemonic("test mnemonic never use other places") + public_key = private_key.to_public_key() + address = public_key.to_address() + + key = public_key.verify_key.to_string("uncompressed") + hashed_value = keccak(key[1:]) + expected_address = Address(hashed_value[12:]) + + assert (expected_address == address) + From 900ba8c7fc6061b2c367bb305772c005b5adb0bc Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 14:58:13 +0200 Subject: [PATCH 13/18] (fix) Removed eip712-struct from the project because it depends on pysha3. Removed also the use of pysha3 directly. This will allow the SDK to work with Python 3.11 --- Pipfile | 8 +- Pipfile.lock | 465 +++++++++++++++++++++++++++++++++++---- README.md | 3 + pyinjective/orderhash.py | 84 +++---- pyinjective/wallet.py | 34 +-- setup.py | 24 +- tests/test_orderhash.py | 59 +++++ tests/test_wallet.py | 4 - 8 files changed, 548 insertions(+), 133 deletions(-) create mode 100644 tests/test_orderhash.py diff --git a/Pipfile b/Pipfile index 3715b35d..2f9088bd 100644 --- a/Pipfile +++ b/Pipfile @@ -15,17 +15,17 @@ mnemonic = "*" hdwallets = "*" bip32 = "*" requests = "*" -eip712_structs = "*" coincurve = "*" aiocron = "*" websockets = "*" urllib3 = "<2" -pycryptodome = "*" -pycryptodomex = "*" +safe-pysha3 = "*" +eip712 = "*" [dev-packages] pytest = "*" pytest-asyncio = "*" +requests-mock = "*" [requires] -python_version = "3.9" +python_version = "3" diff --git a/Pipfile.lock b/Pipfile.lock index e6210905..bf9dae83 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "dc00f00f492872b6f9fcecb4352339ef18985ebaf1d793b6824b928ef2a6d17f" + "sha256": "ddd9c0acafbf86fc3b26c88650bee0a2aa19d05a537541bfcbd8c8c2a1401266" }, "pipfile-spec": 6, "requires": { - "python_version": "3.9" + "python_version": "3" }, "sources": [ { @@ -182,6 +182,98 @@ "index": "pypi", "version": "==3.4" }, + "bitarray": { + "hashes": [ + "sha256:0331ce777174f1f06e592b5199e056cdece817181522d75e5671ef728bb5c591", + "sha256:0474532ad832da5a6c4f4127d64de68455a5948dcb9e824aa4a3927ced87ba1f", + "sha256:05c868339a9fb6095b600a4e576b76e269710ad519b00861d6b2a319e7d24465", + "sha256:0970faa5ce3ca6601d29f242941b5920c601535ac850aa9be942bcfe99636619", + "sha256:143d4f65e1f45a533e13521be1dc557a782317ecf76520eabd5a903b26ecb187", + "sha256:168acedc8ad7b87d01b6b733d37b0414aa4da6d10e1eedebb6cf3d79389fcef2", + "sha256:19bb60f0f3f99d066d4ad75247490107f7d3f0ba8f97b4f686f71bec8b0b2a68", + "sha256:1bcc809a67b03d7950a7f01cb8bb35b9a2b7fe9361f10aaf2fdfa44073ffed0d", + "sha256:1ffd91235c8a7c7ea3e3a6f710545b578c901303d6b98b7d2ee730ebf9c2a4ff", + "sha256:21f1ae716f61bf700327dd8e47a993a1b0bce30f1e8881f6bd6243223b6bafff", + "sha256:21ff72a03a9e60c43a98cb3b0f8c246414fae1a3bbbf425af06f6f350cde30d2", + "sha256:22dc38cb226b7604dbdd2d5504cf8d0a2e645e353eb158fed56d908e3243aea1", + "sha256:2435ac2598ae7caf283bf6af6c3e03f4dc6adf5a3bfaf01ffc719bd61411647b", + "sha256:2e55ad91330c2f1ff78f4b904b897e691d623a1858466924fb39233e669b1219", + "sha256:2e8365a513c1eaab2457e7065f517221bf11bf4909231f4b3e5204844b66bcbb", + "sha256:382e76863e9ad999af9ff0e5061d2df47abebcddeaa897da7924234f772db698", + "sha256:3ac1be1f87c67dc7e3640496427b6a291684a5612ede5b9a33aa34f620395985", + "sha256:3b3d319d89ee099279ec8c3efd57c2f21cd0b8d34e2ad0b5db07f3e45c4568d8", + "sha256:3c0f8520112563a306219ce1d4d9120a09179f5c7014e6cc629aeeb821436ecb", + "sha256:3cb3d4660075ee690549034c18093b1766168dc925ca16f76ab8d64250a96120", + "sha256:4138461ffb2605515fd5c7199c1d870095b3913fe2d0a195b21492ff84901168", + "sha256:4366f2998a63013fe260b8a34051858c98d6680a8bc832529d500af9e820f991", + "sha256:44203138e5a0548f120c40cf24bf27fc7e05ca5dc698f1f8fa53bfb9bdd1b700", + "sha256:4a9e2c9b6e391a167e1a87058ed3777440f5d4db623724832b762c704fe6f062", + "sha256:509a12c3f4a8abfcee3eec02000883b5cdce3e689bb99cdc5fac3767b6b7d2c5", + "sha256:50c7bb2d950c6ec10d02f47f6fd9e786ff890a4879e04bd62c74f0204c62c419", + "sha256:5423427bb3af9b75e01a4aca6d38e84906b16ff9f62e2a64dce877c9505735a3", + "sha256:54e1bdcdf3c4541a9df432c73c117be9d195629a4d9a705c9d61a05c797fb0c1", + "sha256:553f3a4d97d7974e7632f754411d91f4f435756fd961204ee494a2af68137b4f", + "sha256:58e3ce453708f43f9666a1abed97c50e052351631d7463fdea07d8e9f50dd9bd", + "sha256:656195c2e378cab88c98fbbad723104d1b75483d6a88df6049c81ca7303e3d88", + "sha256:6b417fb3d2c5636c369eda939db33dac97115fce72a192c63e1210db78ce4e9f", + "sha256:6f502bcef6e215b837db2c84150275ada5120c78776caffda26291c4b6688646", + "sha256:70fbb07504d63a5d793107ce16b0722de7fa45aca943959153b05ddc04f41cf3", + "sha256:716fdc54eaea23029d95f285b94d1bb1954aaeaa16ceb51910f3923ea13950e5", + "sha256:72cae6daf2e56675dfe4f65caf1d63ee74295926d0bb78c27d8e1b49a91dbae2", + "sha256:74d4fb48e2463638ce7be1c20613a7e118485bb46cfd84bc2a14c7d3b098f49c", + "sha256:7dac4575632f2900e7aed2f3a75c3ff672786bdfba8c000a86e62eea62d2a018", + "sha256:84262cadabc706a11affc6a80cc7ff3a0d0f2b7bd33eef58f9d733cfe260e6da", + "sha256:857c90a35ebaa1157b280ec62571e124384ca737434681d1a59de375795cc9d9", + "sha256:8712c561d370d7667c861e14e69fcce63ca761e50fb3cc7ef79682eeeaed567b", + "sha256:90a1cd9fe75eb91534ebf5459e9f2d4c83d5399f6ec812584d3dfc84440d784c", + "sha256:90d7f4c75174ed190c60854bce461fa6be66a9005e4bc595b8f134b31601ce90", + "sha256:94fdfaa747d5fcb996ff060a1396a6cb3132a3404ba7b019748370fafe3ff1dd", + "sha256:9944648f9f12a500c46e1786088a40e9711afc9c51db2370610f974e851dac9c", + "sha256:9c2cc2ab01bd1d809e9e5b0be28b25901db2a87b6ae483d29a744764cb89988e", + "sha256:9c6ef513b8166af421178027efbbf9b51a322645a00a2fa73809f27a899c1acb", + "sha256:9f79ad4d19595f9f9dd615a33a95c2eeb1b88705de3fbf96677b057b48408039", + "sha256:a3f5defdc2d36d969febeef7508a0bf7e93cdfb3325ac95863d95d753c23c99f", + "sha256:a625129aa68d7886a86bb0d5166c72fc0849f0e34dd88e8b772be3c7fcd6fd8b", + "sha256:a7d41e52d2295f53f5a03c62efbcb6d481f3b9a8ff87c2e072d2adb879f4929e", + "sha256:a99deab760c063e200ed3267893b87534deeaaa4ffc03da54942a7833e59fe51", + "sha256:abc528163aa87642b968a06af467b4db1e7f303784b30e0b2cc120aaba4bf887", + "sha256:adb48a4bb255d69fb22ac27d7ac92280731905a3b19f377ab1f02478c309b501", + "sha256:af991272a2a20396c79d07847d96370490a2eca0c781792c9c7cd7deff863297", + "sha256:b0274bf5a568d3322052403758c7ba0e32a005474115592cdb74d54cfa2b1772", + "sha256:b07ea1bb32f7ed62f2f693dabc91bd41e0977205fefbeb4fa93733518c09273a", + "sha256:b2a70ffabcce0efe8cf6113526c5dcb70c6e7b912289c84f0ad8c4288d7b1c0f", + "sha256:b4a94c1f94a8a4ebe51a375490eccec94261aa357edd4faf5ca2398e8c30ebd1", + "sha256:b56e07e21a24ca580bff7ef5eebef8d28bfe139c9a24da76359399ce20d33bc1", + "sha256:b73f48f85ba28c10db498bc2654678b7b9076d08ec34542101e9bfa3e209a6ee", + "sha256:b81c2d73a7b348c957aac8ee71076a80e92b29deb68db49ff941a4306cb419e8", + "sha256:bbfb02fde64b14a820a9268836103b028f20a206333fc6d637e3e663824b64ad", + "sha256:bdc829b1eecd57ee9b65c3b6c61814671683e061b21a267c64b8f1db29703bca", + "sha256:bf7921fef3e869e51734306174ed52d8ec11c8c359fcf98d72c4bee8d9fb82fc", + "sha256:bf8f13fc2d91960f94f8a8a3ad2e824cb1ca7bb49d1f905f9201327bdf9c086f", + "sha256:c2100c7b5bc813350ad8abe30f7223c9398d86ab30ebeffc7f780938fd53c009", + "sha256:c3aad9c8944a1cc2d3ac6f31fcfe164e22b1785e24f85b6f89b377667c5a5a87", + "sha256:ceb0e02a73d4908ab9aa72eb6c7fa04eec37daad2d93192892a5f3a6947264db", + "sha256:d03fe73637a798ac39adcefb18d8bb78eaa3529f79e6455ee462a1fb084adbf6", + "sha256:d1814b9185aedcb75fc7f7e02753be7fa114d18f8bb29f0e31a84507ed7d01ee", + "sha256:d6540e180eccb4e5c6df2d460df7b1b0d12a00364b73806a1df8cf1d8f1a34eb", + "sha256:d83881e4594c136301d1ec8d783f456dd6b001316588a781f16ddd20522c5d83", + "sha256:daa1239c5b388b6f5c51426eee0c70fad7f24d0668e4b461e66c8755f996d4cb", + "sha256:daa88834560f9c655231b6c3ed8ac069755a7f48ff8c3d37a5ffb88108e8c69d", + "sha256:de72f691895ee41cd720b335ab52d7dc979dd1348eb06891bd5093aa6988cfbd", + "sha256:e2f89fbe7dcd915a5bc4a53ed7be0e1640d3a84a5347db722e7249b715b8b91a", + "sha256:e5175dfe778839c6bf4e3496e4487dac0508a49c9a23c4a5b4fe29d2d1411543", + "sha256:e5b284c11eced377fa799f66fe69208d140a3ffcb29a767e57e9c66e66f061ad", + "sha256:ea6bda210224d23bef6af867adfc37bdf150fd9efdbfbdf61ba3b381b57583c5", + "sha256:ebc4ea4c48b050becdd177cf9b0a5d4be99cfa52a118fbe34f871156e5b1ad39", + "sha256:ed833c809ddff4d4ec81c878dd0b1a8a9b7de094d35dbc623b21cba707c26839", + "sha256:f30a89d673945109a64d2c3cb5bc2c707ed18efb8e018b6a9d233cb08034525d", + "sha256:f3f3d9cbd3e4032cc0b562a69cd7b2d7f7a7c96cc681871029f92bf49e99fb06", + "sha256:f4cdb4e3565d2fee759053272e6ec26ba8a7185f6bccba9e78a98d4df0ed08a2", + "sha256:fc99267064529627b28b53f8eeac64e3ac42a936c4f8c703122a6e14f77a1ea0", + "sha256:fce679c2d607ac7552516fbd08e1834ec4ef883ebcd94183daaf6190f4a2fc6b" + ], + "version": "==2.7.4" + }, "certifi": { "hashes": [ "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", @@ -390,11 +482,11 @@ }, "croniter": { "hashes": [ - "sha256:1a6df60eacec3b7a0aa52a8f2ef251ae3dd2a7c7c8b9874e73e791636d55a361", - "sha256:9595da48af37ea06ec3a9f899738f1b2c1c13da3c38cea606ef7cd03ea421128" + "sha256:924a38fda88f675ec6835667e1d32ac37ff0d65509c2152729d16ff205e32a65", + "sha256:f17f877be1d93b9e3191151584a19d8b367b017ab0febc8c5472b9300da61c4c" ], "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.4.1" + "version": "==1.3.15" }, "cytoolz": { "hashes": [ @@ -500,6 +592,14 @@ "markers": "implementation_name == 'cpython'", "version": "==0.12.1" }, + "dataclassy": { + "hashes": [ + "sha256:ad6622cb91e644d13f68768558983fbc22c90a8ff7e355638485d18b9baf1198", + "sha256:bcb030d3d700cf9b1597042bbc8375b92773e6f68f65675a7071862c0ddb87f5" + ], + "markers": "python_version >= '3.6'", + "version": "==0.11.1" + }, "ecdsa": { "hashes": [ "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49", @@ -508,36 +608,78 @@ "index": "pypi", "version": "==0.18.0" }, - "eip712-structs": { + "eip712": { "hashes": [ - "sha256:b24400aef07b4d0287fb9bf8ce02b0abbe80c476d1b67222a7c5158df3a3e38d" + "sha256:3997dace7e581b66a84d106a10baac47a3f6c94095d79c7d0971ca0ede1926ad", + "sha256:c984c577358d1c7e5d4e52802bf4bd0432e965ba7326448998f95fcc1b6d5269" ], "index": "pypi", - "version": "==1.1.0" + "version": "==0.2.1" + }, + "eth-abi": { + "hashes": [ + "sha256:6949baba61a2c453f0719309ca145e8876a1cbae7ba377c991e67240c13ec7fc", + "sha256:79d258669f3505319e53638d644a75e1c816db552a1ab1927c3063763cc41031" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==4.0.0" + }, + "eth-account": { + "hashes": [ + "sha256:0ccc0edbb17021004356ae6e37887528b6e59e6ae6283f3917b9759a5887203b", + "sha256:ccb2d90a16c81c8ea4ca4dc76a70b50f1d63cea6aff3c5a5eddedf9e45143eca" + ], + "markers": "python_version >= '3.6' and python_version < '4'", + "version": "==0.8.0" }, "eth-hash": { + "extras": [ + "pycryptodome" + ], "hashes": [ - "sha256:1b5f10eca7765cc385e1430eefc5ced6e2e463bb18d1365510e2e539c1a6fe4e", - "sha256:251f62f6579a1e247561679d78df37548bd5f59908da0b159982bf8293ad32f0" + "sha256:4d992e885f3ae3901abbe98bd776ba62d0f6335f98c6e9fc60a39b9d114dfb5a", + "sha256:9805075f653e114a31a99678e93b257fb4082337696f4eff7b4371fe65158409" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.5.2" + "version": "==0.5.1" + }, + "eth-keyfile": { + "hashes": [ + "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c", + "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560" + ], + "version": "==0.6.1" + }, + "eth-keys": { + "hashes": [ + "sha256:7d18887483bc9b8a3fdd8e32ddcb30044b9f08fcb24a380d93b6eee3a5bb3216", + "sha256:e07915ffb91277803a28a379418bdd1fad1f390c38ad9353a0f189789a440d5d" + ], + "version": "==0.4.0" + }, + "eth-rlp": { + "hashes": [ + "sha256:e88e949a533def85c69fa94224618bbbd6de00061f4cff645c44621dab11cf33", + "sha256:f3263b548df718855d9a8dbd754473f383c0efc82914b0b849572ce3e06e71a6" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.3.0" }, "eth-typing": { "hashes": [ - "sha256:347d50713dd58ab50063b228d8271624ab2de3071bfa32d467b05f0ea31ab4c5", - "sha256:7f49610469811ee97ac43eaf6baa294778ce74042d41e61ecf22e5ebe385590f" + "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", + "sha256:e9535e9d524d4c7a0cbd3d9832093cc5001a3e31869e72645674d24c6376d196" ], "markers": "python_version < '4' and python_full_version >= '3.7.2'", - "version": "==3.4.0" + "version": "==3.3.0" }, "eth-utils": { "hashes": [ - "sha256:4938ab742f91cdf19bae024261af090664f63ccf83bdb1213e7146c14209e899", - "sha256:7cccfb0b0749431d0d001e327e9a7289bf07308316a73850ae3895020e5682f4" + "sha256:63901e54ec9e4ac16ae0a0d28e1dc48b968c20184d22f2727e5f3ca24b6250bc", + "sha256:fcb4c3c1b32947ba92970963f9aaf40da73b04ea1034964ff8c0e70595127138" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.1.1" + "version": "==2.1.0" }, "frozenlist": { "hashes": [ @@ -729,6 +871,14 @@ "index": "pypi", "version": "==0.1.2" }, + "hexbytes": { + "hashes": [ + "sha256:21c3a5bd00a383097f0369c387174e79839d75c4ccc3a7edda315c9644f4458a", + "sha256:afeebfb800f5f15a3ca5bab52e49eabcb4b6dac06ec8ff01a94fdb890c6c0712" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.3.0" + }, "idna": { "hashes": [ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", @@ -825,24 +975,30 @@ "markers": "python_version >= '3.7'", "version": "==6.0.4" }, + "parsimonious": { + "hashes": [ + "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1" + ], + "version": "==0.9.0" + }, "protobuf": { "hashes": [ - "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8", - "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223", - "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288", - "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac", - "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1", - "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1", - "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62", - "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb", - "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35", - "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b", - "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359", - "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a", - "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5" + "sha256:09310bce43353b46d73ba7e3bca78273b9bc50349509b9698e64d288c6372c2a", + "sha256:20874e7ca4436f683b64ebdbee2129a5a2c301579a67d1a7dda2cdf62fb7f5f7", + "sha256:25e3370eda26469b58b602e29dff069cfaae8eaa0ef4550039cc5ef8dc004511", + "sha256:281342ea5eb631c86697e1e048cb7e73b8a4e85f3299a128c116f05f5c668f8f", + "sha256:384dd44cb4c43f2ccddd3645389a23ae61aeb8cfa15ca3a0f60e7c3ea09b28b3", + "sha256:54a533b971288af3b9926e53850c7eb186886c0c84e61daa8444385a4720297f", + "sha256:6c081863c379bb1741be8f8193e893511312b1d7329b4a75445d1ea9955be69e", + "sha256:86df87016d290143c7ce3be3ad52d055714ebaebb57cc659c387e76cfacd81aa", + "sha256:8da6070310d634c99c0db7df48f10da495cc283fd9e9234877f0cd182d43ab7f", + "sha256:b2cfab63a230b39ae603834718db74ac11e52bccaaf19bf20f5cce1a84cf76df", + "sha256:c52cfcbfba8eb791255edd675c1fe6056f723bf832fa67f0442218f8817c076e", + "sha256:ce744938406de1e64b91410f473736e815f28c3b71201302612a68bf01517fea", + "sha256:efabbbbac1ab519a514579ba9ec52f006c28ae19d97915951f69fa70da2c9e91" ], "index": "pypi", - "version": "==4.23.3" + "version": "==4.23.2" }, "pycparser": { "hashes": [ @@ -885,6 +1041,100 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, + "regex": { + "hashes": [ + "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", + "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", + "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", + "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", + "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", + "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", + "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", + "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", + "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", + "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", + "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", + "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", + "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", + "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", + "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", + "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", + "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", + "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", + "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", + "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", + "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", + "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", + "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", + "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", + "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", + "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", + "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", + "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", + "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", + "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", + "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", + "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", + "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", + "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", + "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", + "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", + "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", + "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", + "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", + "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", + "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", + "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", + "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", + "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", + "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", + "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", + "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", + "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", + "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", + "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", + "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", + "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", + "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", + "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", + "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", + "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", + "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", + "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", + "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", + "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", + "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", + "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", + "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", + "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", + "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", + "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", + "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", + "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", + "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", + "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", + "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", + "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", + "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", + "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", + "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", + "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", + "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", + "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", + "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", + "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", + "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", + "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", + "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", + "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", + "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", + "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", + "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", + "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.6.3" + }, "requests": { "hashes": [ "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", @@ -893,6 +1143,20 @@ "index": "pypi", "version": "==2.31.0" }, + "rlp": { + "hashes": [ + "sha256:63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8", + "sha256:d2a963225b3f26795c5b52310e0871df9824af56823d739511583ef459895a7d" + ], + "version": "==3.0.0" + }, + "safe-pysha3": { + "hashes": [ + "sha256:e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17" + ], + "index": "pypi", + "version": "==1.0.4" + }, "setuptools": { "hashes": [ "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", @@ -1091,13 +1355,102 @@ } }, "develop": { - "exceptiongroup": { + "certifi": { "hashes": [ - "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e", - "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785" + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" ], - "markers": "python_version < '3.11'", - "version": "==1.1.1" + "markers": "python_version >= '3.6'", + "version": "==2023.5.7" + }, + "charset-normalizer": { + "hashes": [ + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.0" + }, + "idna": { + "hashes": [ + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" + ], + "markers": "python_version >= '3.5'", + "version": "==3.4" }, "iniconfig": { "hashes": [ @@ -1125,11 +1478,11 @@ }, "pytest": { "hashes": [ - "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295", - "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b" + "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362", + "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3" ], "index": "pypi", - "version": "==7.3.2" + "version": "==7.3.1" }, "pytest-asyncio": { "hashes": [ @@ -1139,13 +1492,37 @@ "index": "pypi", "version": "==0.21.0" }, - "tomli": { + "requests": { + "hashes": [ + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" + ], + "index": "pypi", + "version": "==2.31.0" + }, + "requests-mock": { + "hashes": [ + "sha256:2fdbb637ad17ee15c06f33d31169e71bf9fe2bdb7bc9da26185be0dd8d842699", + "sha256:59c9c32419a9fb1ae83ec242d98e889c45bd7d7a65d48375cc243ec08441658b" + ], + "index": "pypi", + "version": "==1.10.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "urllib3": { "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", + "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14" ], - "markers": "python_version < '3.11'", - "version": "==2.0.1" + "index": "pypi", + "version": "==1.26.16" } } } diff --git a/README.md b/README.md index 8c94c520..0107105c 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,9 @@ make tests ``` ### Changelogs +**0.7** +* Removed references to pysha3 library (and also eip712-struct that required it) and replaced it with other implementation to allow the project to work with Python 3.11 + **0.6.5** * Removed `k8s` from the list of supported mainnet nodes (`lb` should be used instead) diff --git a/pyinjective/orderhash.py b/pyinjective/orderhash.py index 06d54eae..b27551b1 100644 --- a/pyinjective/orderhash.py +++ b/pyinjective/orderhash.py @@ -1,38 +1,48 @@ -import sha3 import requests from decimal import Decimal -from eip712_structs import make_domain, EIP712Struct, String - -class OrderInfo(EIP712Struct): - SubaccountId = String() - FeeRecipient = String() - Price = String() - Quantity = String() - -class SpotOrder(EIP712Struct): - MarketId = String() - OrderInfo = OrderInfo - Salt = String() - OrderType = String() - TriggerPrice = String() - -class DerivativeOrder(EIP712Struct): - MarketId = String() - OrderInfo = OrderInfo - OrderType = String() - Margin = String() - TriggerPrice = String() - Salt = String() - -EIP712_domain = make_domain( - name='Injective Protocol', - version='2.0.0', - chainId=888, - verifyingContract='0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', - salt='0x0000000000000000000000000000000000000000000000000000000000000000' -) - -domain_separator = EIP712_domain.hash_struct() + +from eip712.messages import EIP712Message, EIP712Type +from eth_account.messages import _hash_eip191_message as hash_eip191_message +from hexbytes import HexBytes + + +class OrderInfo(EIP712Type): + SubaccountId: "string" + FeeRecipient: "string" + Price: "string" + Quantity: "string" + + +class SpotOrder(EIP712Message): + _name_ = "Injective Protocol" + _version_ = "2.0.0" + _chainId_ = 888 + _verifyingContract_ = "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + _salt_ = HexBytes("0x0000000000000000000000000000000000000000000000000000000000000000") + + MarketId: "string" + OrderInfo: OrderInfo + Salt: "string" + OrderType: "string" + TriggerPrice: "string" + + +class DerivativeOrder(EIP712Message): + _name_ = "Injective Protocol" + _version_ = "2.0.0" + _chainId_ = 888 + _verifyingContract_ = "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + _salt_ = HexBytes("0x0000000000000000000000000000000000000000000000000000000000000000") + + MarketId: "string" + OrderInfo: OrderInfo + OrderType: "string" + Margin: "string" + TriggerPrice: "string" + Salt: "string" + + +# domain_separator = EIP712_domain.hash_struct() order_type_dict = {0: '\x00', 1: '\x01', 2: '\x02', 3: '\x03', 4: '\x04', 5: '\x05', 6: '\x06', 7: '\x07', 8: '\x08'} class OrderHashResponse: @@ -127,8 +137,6 @@ def build_eip712_msg(order, nonce): ) def hash_order(msg): - typed_data_hash = msg.hash_struct() - typed_bytes = b'\x19\x01' + domain_separator + typed_data_hash - keccak256 = sha3.keccak_256() - keccak256.update(typed_bytes) - return '0x' + keccak256.hexdigest() + signable_message = msg.signable_message + hex_digest = hash_eip191_message(signable_message=signable_message).hex() + return "0x" + hex_digest diff --git a/pyinjective/wallet.py b/pyinjective/wallet.py index 2b192337..c557dd8f 100644 --- a/pyinjective/wallet.py +++ b/pyinjective/wallet.py @@ -1,7 +1,3 @@ -import copy -import functools - -import eth_hash.auto import sha3 import hashlib import aiohttp @@ -9,12 +5,8 @@ import requests from typing import Tuple -from eth_hash.backends import pysha3 -from eth_hash import Keccak256 -from Crypto.Hash.keccak import Keccak_Hash from bech32 import bech32_encode, bech32_decode, convertbits from bip32 import BIP32 -from Crypto.Hash import keccak from ecdsa import SigningKey, VerifyingKey, SECP256k1, BadSignatureError from ecdsa.util import sigencode_string_canonize from mnemonic import Mnemonic @@ -32,13 +24,6 @@ DEFAULT_DERIVATION_PATH = "m/44'/60'/0'/0/0" -class Keccak_Hash_With_Copy(Keccak_Hash): - # We need to create a version of Keccak_Hash that responds to `copy` - # This is a requirement from the ecdsa library - - def copy(self): - return self.new(data=self.digest()) - class PrivateKey: """ @@ -114,18 +99,8 @@ def sign(self, msg: bytes) -> bytes: :return: a signature of this private key over the given message """ - # return self.signing_key.sign_deterministic(msg, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize) - # keccak_function = functools.partial(keccak.new, digest_bits=256) - def keccak_creation(data=None): - # Create a 256 bits keccak hash - keccak_hash = Keccak_Hash_With_Copy(data=data, digest_bytes=32, update_after_digest=False) - return keccak_hash - - #return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) - hash = eth_hash.auto.keccak - digest = eth_hash.auto.keccak(msg) - return self.signing_key.sign_digest_deterministic(digest, hashfunc=hash, sigencode=sigencode_string_canonize) + return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) class PublicKey: """ @@ -198,13 +173,8 @@ def to_cons_bech32(self) -> str: def to_address(self) -> "Address": """Return address instance from this public key""" - # pubkey = self.verify_key.to_string("compressed") - # s = hashlib.new("sha256", pubkey).digest() - # r = hashlib.new("ripemd160", s).digest() - # return Address(r) - pubkey = self.verify_key.to_string("uncompressed") - keccak_hash = keccak.new(digest_bits=256) + keccak_hash = sha3.keccak_256() keccak_hash.update(pubkey[1:]) addr = keccak_hash.digest()[12:] return Address(addr) diff --git a/setup.py b/setup.py index b42d972d..06da44d3 100755 --- a/setup.py +++ b/setup.py @@ -20,26 +20,28 @@ VERSION = "0.6.5" REQUIRED = [ - "protobuf", - "grpcio-tools", - "grpcio", - "asyncio", "aiohttp", - "ecdsa", + "aiocron", + "asyncio", "bech32", - "mnemonic", - "hdwallets", "bip32", - "requests", - "eip712_structs", "coincurve", - "aiocron", - "websockets" + "ecdsa", + "eip712", + "grpcio", + "grpcio-tools", + "hdwallets", + "mnemonic", + "protobuf", + "requests", + "safe-pysha3", + "websockets", ] DEV_REQUIRED = [ "pytest", "pytest-asyncio", + "request-mock", ] # The rest you shouldn't have to touch too much :) diff --git a/tests/test_orderhash.py b/tests/test_orderhash.py new file mode 100644 index 00000000..2aff84a0 --- /dev/null +++ b/tests/test_orderhash.py @@ -0,0 +1,59 @@ +from pyinjective import PrivateKey +from pyinjective.composer import Composer +from pyinjective.constant import Network +from pyinjective.orderhash import OrderHashManager + + +class TestOrderHashManager: + + def test_spot_order_hash(self, requests_mock): + network = Network.devnet() + composer = Composer(network=network.string()) + priv_key = PrivateKey.from_mnemonic("test one few words") + pub_key = priv_key.to_public_key() + address = pub_key.to_address() + + subaccount_id = address.get_subaccount_id(index=0) + + url = network.lcd_endpoint + "/injective/exchange/v1beta1/exchange/" + subaccount_id + requests_mock.get(url, json={"nonce": 0}) + order_hash_manager = OrderHashManager( + address=address, + network=network, + subaccount_indexes=[0] + ) + + spot_market_id = "0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0" + fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" + + spot_orders = [ + composer.SpotOrder( + market_id=spot_market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=0.524, + quantity=0.01, + is_buy=True, + is_po=False + ), + composer.SpotOrder( + market_id=spot_market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=27.92, + quantity=0.01, + is_buy=False, + is_po=False + ), + ] + + order_hashes_response = order_hash_manager.compute_order_hashes( + spot_orders=spot_orders, + derivative_orders=[], + subaccount_index=0 + ) + + assert (len(order_hashes_response.spot) == 2) + assert (len(order_hashes_response.derivative) == 0) + assert (order_hashes_response.spot[0] == "0x6b1e4d1fb3012735dd5e386175eb4541c024e0d8dbfeb452767b973d70ae0924") + assert (order_hashes_response.spot[1] == "0xb36146f913955d989269732d167ec554e6d0d544411d82d7f86aef18350b252b") diff --git a/tests/test_wallet.py b/tests/test_wallet.py index e2cf7834..4e6132a6 100644 --- a/tests/test_wallet.py +++ b/tests/test_wallet.py @@ -1,5 +1,3 @@ -import hashlib - from eth_hash.auto import keccak from pyinjective import PrivateKey, Address @@ -13,8 +11,6 @@ def test_private_key_signature_generation(self): signature = private_key.sign(msg="test message".encode()) expected_signature = b'\x8f\xae\xcb#z\x9a+\x12\x88\xea\xb5xZ"\x8f\x98y\xb8\x97\xa7F\xd5\xdd\x15s\x05;\x04\x1d\xbaY|rw\x8b\xbb\x19\xfc\x8e\x15\x8b\xf1\x18\x08\xba\xc7\x15\xed\xb0\xee\x95\x0e|Ch\x7f\xaf\x9cH\xc6\x9f\xbf\x14\xa5' - hashlib.sha1() - assert (expected_signature == signature) From ed335ba9215060f8f14acdbbfe7f5ab45f5f82b3 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 15:13:55 +0200 Subject: [PATCH 14/18] (fix) Refactor dependencies to remove the pysha3 library requirement --- Pipfile | 24 +++++++++--------- Pipfile.lock | 69 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 52 insertions(+), 41 deletions(-) diff --git a/Pipfile b/Pipfile index 2f9088bd..f07ae931 100644 --- a/Pipfile +++ b/Pipfile @@ -4,23 +4,23 @@ verify_ssl = true name = "pypi" [packages] -protobuf = "*" -grpcio-tools = "*" -grpcio = "*" -asyncio = "*" +aiocron = "*" aiohttp = "*" -ecdsa = "*" +asyncio = "*" bech32 = "*" -mnemonic = "*" -hdwallets = "*" bip32 = "*" -requests = "*" coincurve = "*" -aiocron = "*" -websockets = "*" -urllib3 = "<2" -safe-pysha3 = "*" +ecdsa = "*" eip712 = "*" +grpcio = "*" +grpcio-tools = "*" +hdwallets = "*" +mnemonic = "*" +protobuf = "*" +requests = "*" +safe-pysha3 = "*" +urllib3 = "<2" +websockets = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index bf9dae83..ead81018 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -670,7 +670,7 @@ "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", "sha256:e9535e9d524d4c7a0cbd3d9832093cc5001a3e31869e72645674d24c6376d196" ], - "markers": "python_version < '4' and python_full_version >= '3.7.2'", + "markers": "python_full_version >= '3.7.2' and python_version < '4'", "version": "==3.3.0" }, "eth-utils": { @@ -1007,38 +1007,49 @@ ], "version": "==2.21" }, - "pysha3": { - "hashes": [ - "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", - "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48", - "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4", - "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d", - "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9", - "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603", - "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f", - "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f", - "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77", - "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5", - "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9", - "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d", - "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24", - "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608", - "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b", - "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030", - "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8", - "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef", - "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf", - "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07", - "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e" - ], - "version": "==1.0.2" + "pycryptodome": { + "hashes": [ + "sha256:01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb", + "sha256:10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6", + "sha256:12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403", + "sha256:157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148", + "sha256:16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4", + "sha256:363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825", + "sha256:3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2", + "sha256:422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14", + "sha256:4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c", + "sha256:4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4", + "sha256:51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2", + "sha256:53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb", + "sha256:62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf", + "sha256:6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec", + "sha256:78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918", + "sha256:795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3", + "sha256:7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944", + "sha256:83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e", + "sha256:928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024", + "sha256:957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f", + "sha256:9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1", + "sha256:9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380", + "sha256:b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9", + "sha256:b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e", + "sha256:c9adee653fc882d98956e33ca2c1fb582e23a8af7ac82fee75bd6113c55a0413", + "sha256:cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec", + "sha256:d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54", + "sha256:d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2", + "sha256:e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27", + "sha256:f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b", + "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf", + "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08" + ], + "version": "==3.18.0" }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.8.2" }, "regex": { @@ -1170,7 +1181,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "toolz": { @@ -1513,7 +1524,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "urllib3": { From 0829eea2caee8dd5b6fc826319eacac14a60e722 Mon Sep 17 00:00:00 2001 From: Abel Armoa Date: Fri, 2 Jun 2023 01:37:03 +0200 Subject: [PATCH 15/18] (feat) Test using Prcryptodome to remove pysha3 --- Pipfile.lock | 478 ++++++++---------------------------------- pyinjective/wallet.py | 26 ++- 2 files changed, 106 insertions(+), 398 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index ead81018..7281412a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "ddd9c0acafbf86fc3b26c88650bee0a2aa19d05a537541bfcbd8c8c2a1401266" + "sha256": "71ab3eba66989d590da3699426035a6e3c606eb5b8069792cb50c85c1a3c2c76" }, "pipfile-spec": 6, "requires": { - "python_version": "3" + "python_version": "3.9" }, "sources": [ { @@ -182,98 +182,6 @@ "index": "pypi", "version": "==3.4" }, - "bitarray": { - "hashes": [ - "sha256:0331ce777174f1f06e592b5199e056cdece817181522d75e5671ef728bb5c591", - "sha256:0474532ad832da5a6c4f4127d64de68455a5948dcb9e824aa4a3927ced87ba1f", - "sha256:05c868339a9fb6095b600a4e576b76e269710ad519b00861d6b2a319e7d24465", - "sha256:0970faa5ce3ca6601d29f242941b5920c601535ac850aa9be942bcfe99636619", - "sha256:143d4f65e1f45a533e13521be1dc557a782317ecf76520eabd5a903b26ecb187", - "sha256:168acedc8ad7b87d01b6b733d37b0414aa4da6d10e1eedebb6cf3d79389fcef2", - "sha256:19bb60f0f3f99d066d4ad75247490107f7d3f0ba8f97b4f686f71bec8b0b2a68", - "sha256:1bcc809a67b03d7950a7f01cb8bb35b9a2b7fe9361f10aaf2fdfa44073ffed0d", - "sha256:1ffd91235c8a7c7ea3e3a6f710545b578c901303d6b98b7d2ee730ebf9c2a4ff", - "sha256:21f1ae716f61bf700327dd8e47a993a1b0bce30f1e8881f6bd6243223b6bafff", - "sha256:21ff72a03a9e60c43a98cb3b0f8c246414fae1a3bbbf425af06f6f350cde30d2", - "sha256:22dc38cb226b7604dbdd2d5504cf8d0a2e645e353eb158fed56d908e3243aea1", - "sha256:2435ac2598ae7caf283bf6af6c3e03f4dc6adf5a3bfaf01ffc719bd61411647b", - "sha256:2e55ad91330c2f1ff78f4b904b897e691d623a1858466924fb39233e669b1219", - "sha256:2e8365a513c1eaab2457e7065f517221bf11bf4909231f4b3e5204844b66bcbb", - "sha256:382e76863e9ad999af9ff0e5061d2df47abebcddeaa897da7924234f772db698", - "sha256:3ac1be1f87c67dc7e3640496427b6a291684a5612ede5b9a33aa34f620395985", - "sha256:3b3d319d89ee099279ec8c3efd57c2f21cd0b8d34e2ad0b5db07f3e45c4568d8", - "sha256:3c0f8520112563a306219ce1d4d9120a09179f5c7014e6cc629aeeb821436ecb", - "sha256:3cb3d4660075ee690549034c18093b1766168dc925ca16f76ab8d64250a96120", - "sha256:4138461ffb2605515fd5c7199c1d870095b3913fe2d0a195b21492ff84901168", - "sha256:4366f2998a63013fe260b8a34051858c98d6680a8bc832529d500af9e820f991", - "sha256:44203138e5a0548f120c40cf24bf27fc7e05ca5dc698f1f8fa53bfb9bdd1b700", - "sha256:4a9e2c9b6e391a167e1a87058ed3777440f5d4db623724832b762c704fe6f062", - "sha256:509a12c3f4a8abfcee3eec02000883b5cdce3e689bb99cdc5fac3767b6b7d2c5", - "sha256:50c7bb2d950c6ec10d02f47f6fd9e786ff890a4879e04bd62c74f0204c62c419", - "sha256:5423427bb3af9b75e01a4aca6d38e84906b16ff9f62e2a64dce877c9505735a3", - "sha256:54e1bdcdf3c4541a9df432c73c117be9d195629a4d9a705c9d61a05c797fb0c1", - "sha256:553f3a4d97d7974e7632f754411d91f4f435756fd961204ee494a2af68137b4f", - "sha256:58e3ce453708f43f9666a1abed97c50e052351631d7463fdea07d8e9f50dd9bd", - "sha256:656195c2e378cab88c98fbbad723104d1b75483d6a88df6049c81ca7303e3d88", - "sha256:6b417fb3d2c5636c369eda939db33dac97115fce72a192c63e1210db78ce4e9f", - "sha256:6f502bcef6e215b837db2c84150275ada5120c78776caffda26291c4b6688646", - "sha256:70fbb07504d63a5d793107ce16b0722de7fa45aca943959153b05ddc04f41cf3", - "sha256:716fdc54eaea23029d95f285b94d1bb1954aaeaa16ceb51910f3923ea13950e5", - "sha256:72cae6daf2e56675dfe4f65caf1d63ee74295926d0bb78c27d8e1b49a91dbae2", - "sha256:74d4fb48e2463638ce7be1c20613a7e118485bb46cfd84bc2a14c7d3b098f49c", - "sha256:7dac4575632f2900e7aed2f3a75c3ff672786bdfba8c000a86e62eea62d2a018", - "sha256:84262cadabc706a11affc6a80cc7ff3a0d0f2b7bd33eef58f9d733cfe260e6da", - "sha256:857c90a35ebaa1157b280ec62571e124384ca737434681d1a59de375795cc9d9", - "sha256:8712c561d370d7667c861e14e69fcce63ca761e50fb3cc7ef79682eeeaed567b", - "sha256:90a1cd9fe75eb91534ebf5459e9f2d4c83d5399f6ec812584d3dfc84440d784c", - "sha256:90d7f4c75174ed190c60854bce461fa6be66a9005e4bc595b8f134b31601ce90", - "sha256:94fdfaa747d5fcb996ff060a1396a6cb3132a3404ba7b019748370fafe3ff1dd", - "sha256:9944648f9f12a500c46e1786088a40e9711afc9c51db2370610f974e851dac9c", - "sha256:9c2cc2ab01bd1d809e9e5b0be28b25901db2a87b6ae483d29a744764cb89988e", - "sha256:9c6ef513b8166af421178027efbbf9b51a322645a00a2fa73809f27a899c1acb", - "sha256:9f79ad4d19595f9f9dd615a33a95c2eeb1b88705de3fbf96677b057b48408039", - "sha256:a3f5defdc2d36d969febeef7508a0bf7e93cdfb3325ac95863d95d753c23c99f", - "sha256:a625129aa68d7886a86bb0d5166c72fc0849f0e34dd88e8b772be3c7fcd6fd8b", - "sha256:a7d41e52d2295f53f5a03c62efbcb6d481f3b9a8ff87c2e072d2adb879f4929e", - "sha256:a99deab760c063e200ed3267893b87534deeaaa4ffc03da54942a7833e59fe51", - "sha256:abc528163aa87642b968a06af467b4db1e7f303784b30e0b2cc120aaba4bf887", - "sha256:adb48a4bb255d69fb22ac27d7ac92280731905a3b19f377ab1f02478c309b501", - "sha256:af991272a2a20396c79d07847d96370490a2eca0c781792c9c7cd7deff863297", - "sha256:b0274bf5a568d3322052403758c7ba0e32a005474115592cdb74d54cfa2b1772", - "sha256:b07ea1bb32f7ed62f2f693dabc91bd41e0977205fefbeb4fa93733518c09273a", - "sha256:b2a70ffabcce0efe8cf6113526c5dcb70c6e7b912289c84f0ad8c4288d7b1c0f", - "sha256:b4a94c1f94a8a4ebe51a375490eccec94261aa357edd4faf5ca2398e8c30ebd1", - "sha256:b56e07e21a24ca580bff7ef5eebef8d28bfe139c9a24da76359399ce20d33bc1", - "sha256:b73f48f85ba28c10db498bc2654678b7b9076d08ec34542101e9bfa3e209a6ee", - "sha256:b81c2d73a7b348c957aac8ee71076a80e92b29deb68db49ff941a4306cb419e8", - "sha256:bbfb02fde64b14a820a9268836103b028f20a206333fc6d637e3e663824b64ad", - "sha256:bdc829b1eecd57ee9b65c3b6c61814671683e061b21a267c64b8f1db29703bca", - "sha256:bf7921fef3e869e51734306174ed52d8ec11c8c359fcf98d72c4bee8d9fb82fc", - "sha256:bf8f13fc2d91960f94f8a8a3ad2e824cb1ca7bb49d1f905f9201327bdf9c086f", - "sha256:c2100c7b5bc813350ad8abe30f7223c9398d86ab30ebeffc7f780938fd53c009", - "sha256:c3aad9c8944a1cc2d3ac6f31fcfe164e22b1785e24f85b6f89b377667c5a5a87", - "sha256:ceb0e02a73d4908ab9aa72eb6c7fa04eec37daad2d93192892a5f3a6947264db", - "sha256:d03fe73637a798ac39adcefb18d8bb78eaa3529f79e6455ee462a1fb084adbf6", - "sha256:d1814b9185aedcb75fc7f7e02753be7fa114d18f8bb29f0e31a84507ed7d01ee", - "sha256:d6540e180eccb4e5c6df2d460df7b1b0d12a00364b73806a1df8cf1d8f1a34eb", - "sha256:d83881e4594c136301d1ec8d783f456dd6b001316588a781f16ddd20522c5d83", - "sha256:daa1239c5b388b6f5c51426eee0c70fad7f24d0668e4b461e66c8755f996d4cb", - "sha256:daa88834560f9c655231b6c3ed8ac069755a7f48ff8c3d37a5ffb88108e8c69d", - "sha256:de72f691895ee41cd720b335ab52d7dc979dd1348eb06891bd5093aa6988cfbd", - "sha256:e2f89fbe7dcd915a5bc4a53ed7be0e1640d3a84a5347db722e7249b715b8b91a", - "sha256:e5175dfe778839c6bf4e3496e4487dac0508a49c9a23c4a5b4fe29d2d1411543", - "sha256:e5b284c11eced377fa799f66fe69208d140a3ffcb29a767e57e9c66e66f061ad", - "sha256:ea6bda210224d23bef6af867adfc37bdf150fd9efdbfbdf61ba3b381b57583c5", - "sha256:ebc4ea4c48b050becdd177cf9b0a5d4be99cfa52a118fbe34f871156e5b1ad39", - "sha256:ed833c809ddff4d4ec81c878dd0b1a8a9b7de094d35dbc623b21cba707c26839", - "sha256:f30a89d673945109a64d2c3cb5bc2c707ed18efb8e018b6a9d233cb08034525d", - "sha256:f3f3d9cbd3e4032cc0b562a69cd7b2d7f7a7c96cc681871029f92bf49e99fb06", - "sha256:f4cdb4e3565d2fee759053272e6ec26ba8a7185f6bccba9e78a98d4df0ed08a2", - "sha256:fc99267064529627b28b53f8eeac64e3ac42a936c4f8c703122a6e14f77a1ea0", - "sha256:fce679c2d607ac7552516fbd08e1834ec4ef883ebcd94183daaf6190f4a2fc6b" - ], - "version": "==2.7.4" - }, "certifi": { "hashes": [ "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", @@ -592,14 +500,6 @@ "markers": "implementation_name == 'cpython'", "version": "==0.12.1" }, - "dataclassy": { - "hashes": [ - "sha256:ad6622cb91e644d13f68768558983fbc22c90a8ff7e355638485d18b9baf1198", - "sha256:bcb030d3d700cf9b1597042bbc8375b92773e6f68f65675a7071862c0ddb87f5" - ], - "markers": "python_version >= '3.6'", - "version": "==0.11.1" - }, "ecdsa": { "hashes": [ "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49", @@ -608,34 +508,14 @@ "index": "pypi", "version": "==0.18.0" }, - "eip712": { + "eip712-structs": { "hashes": [ - "sha256:3997dace7e581b66a84d106a10baac47a3f6c94095d79c7d0971ca0ede1926ad", - "sha256:c984c577358d1c7e5d4e52802bf4bd0432e965ba7326448998f95fcc1b6d5269" + "sha256:b24400aef07b4d0287fb9bf8ce02b0abbe80c476d1b67222a7c5158df3a3e38d" ], "index": "pypi", - "version": "==0.2.1" - }, - "eth-abi": { - "hashes": [ - "sha256:6949baba61a2c453f0719309ca145e8876a1cbae7ba377c991e67240c13ec7fc", - "sha256:79d258669f3505319e53638d644a75e1c816db552a1ab1927c3063763cc41031" - ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==4.0.0" - }, - "eth-account": { - "hashes": [ - "sha256:0ccc0edbb17021004356ae6e37887528b6e59e6ae6283f3917b9759a5887203b", - "sha256:ccb2d90a16c81c8ea4ca4dc76a70b50f1d63cea6aff3c5a5eddedf9e45143eca" - ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==0.8.0" + "version": "==1.1.0" }, "eth-hash": { - "extras": [ - "pycryptodome" - ], "hashes": [ "sha256:4d992e885f3ae3901abbe98bd776ba62d0f6335f98c6e9fc60a39b9d114dfb5a", "sha256:9805075f653e114a31a99678e93b257fb4082337696f4eff7b4371fe65158409" @@ -643,34 +523,12 @@ "markers": "python_version >= '3.7' and python_version < '4'", "version": "==0.5.1" }, - "eth-keyfile": { - "hashes": [ - "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c", - "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560" - ], - "version": "==0.6.1" - }, - "eth-keys": { - "hashes": [ - "sha256:7d18887483bc9b8a3fdd8e32ddcb30044b9f08fcb24a380d93b6eee3a5bb3216", - "sha256:e07915ffb91277803a28a379418bdd1fad1f390c38ad9353a0f189789a440d5d" - ], - "version": "==0.4.0" - }, - "eth-rlp": { - "hashes": [ - "sha256:e88e949a533def85c69fa94224618bbbd6de00061f4cff645c44621dab11cf33", - "sha256:f3263b548df718855d9a8dbd754473f383c0efc82914b0b849572ce3e06e71a6" - ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.3.0" - }, "eth-typing": { "hashes": [ "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", "sha256:e9535e9d524d4c7a0cbd3d9832093cc5001a3e31869e72645674d24c6376d196" ], - "markers": "python_full_version >= '3.7.2' and python_version < '4'", + "markers": "python_version < '4' and python_full_version >= '3.7.2'", "version": "==3.3.0" }, "eth-utils": { @@ -871,14 +729,6 @@ "index": "pypi", "version": "==0.1.2" }, - "hexbytes": { - "hashes": [ - "sha256:21c3a5bd00a383097f0369c387174e79839d75c4ccc3a7edda315c9644f4458a", - "sha256:afeebfb800f5f15a3ca5bab52e49eabcb4b6dac06ec8ff01a94fdb890c6c0712" - ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.3.0" - }, "idna": { "hashes": [ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", @@ -975,12 +825,6 @@ "markers": "python_version >= '3.7'", "version": "==6.0.4" }, - "parsimonious": { - "hashes": [ - "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1" - ], - "version": "==0.9.0" - }, "protobuf": { "hashes": [ "sha256:09310bce43353b46d73ba7e3bca78273b9bc50349509b9698e64d288c6372c2a", @@ -1042,110 +886,81 @@ "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf", "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08" ], + "index": "pypi", + "version": "==3.18.0" + }, + "pycryptodomex": { + "hashes": [ + "sha256:160a39a708c36fa0b168ab79386dede588e62aec06eb505add870739329aecc6", + "sha256:192306cf881fe3467dda0e174a4f47bb3a8bb24b90c9cdfbdc248eec5fc0578c", + "sha256:1949e09ea49b09c36d11a951b16ff2a05a0ffe969dda1846e4686ee342fe8646", + "sha256:215be2980a6b70704c10796dd7003eb4390e7be138ac6fb8344bf47e71a8d470", + "sha256:27072a494ce621cc7a9096bbf60ed66826bb94db24b49b7359509e7951033e74", + "sha256:2dc4eab20f4f04a2d00220fdc9258717b82d31913552e766d5f00282c031b70a", + "sha256:302a8f37c224e7b5d72017d462a2be058e28f7be627bdd854066e16722d0fc0c", + "sha256:3d9314ac785a5b75d5aaf924c5f21d6ca7e8df442e5cf4f0fefad4f6e284d422", + "sha256:3e3ecb5fe979e7c1bb0027e518340acf7ee60415d79295e5251d13c68dde576e", + "sha256:4d9379c684efea80fdab02a3eb0169372bca7db13f9332cb67483b8dc8b67c37", + "sha256:50308fcdbf8345e5ec224a5502b4215178bdb5e95456ead8ab1a69ffd94779cb", + "sha256:5594a125dae30d60e94f37797fc67ce3c744522de7992c7c360d02fdb34918f8", + "sha256:58fc0aceb9c961b9897facec9da24c6a94c5db04597ec832060f53d4d6a07196", + "sha256:6421d23d6a648e83ba2670a352bcd978542dad86829209f59d17a3f087f4afef", + "sha256:6875eb8666f68ddbd39097867325bd22771f595b4e2b0149739b5623c8bf899b", + "sha256:6ed3606832987018615f68e8ed716a7065c09a0fe94afd7c9ca1b6777f0ac6eb", + "sha256:71687eed47df7e965f6e0bf3cadef98f368d5221f0fb89d2132effe1a3e6a194", + "sha256:73d64b32d84cf48d9ec62106aa277dbe99ab5fbfd38c5100bc7bddd3beb569f7", + "sha256:75672205148bdea34669173366df005dbd52be05115e919551ee97171083423d", + "sha256:76f0a46bee539dae4b3dfe37216f678769349576b0080fdbe431d19a02da42ff", + "sha256:8ff129a5a0eb5ff16e45ca4fa70a6051da7f3de303c33b259063c19be0c43d35", + "sha256:ac614363a86cc53d8ba44b6c469831d1555947e69ab3276ae8d6edc219f570f7", + "sha256:ba95abd563b0d1b88401658665a260852a8e6c647026ee6a0a65589287681df8", + "sha256:bbdcce0a226d9205560a5936b05208c709b01d493ed8307792075dedfaaffa5f", + "sha256:bec6c80994d4e7a38312072f89458903b65ec99bed2d65aa4de96d997a53ea7a", + "sha256:c2953afebf282a444c51bf4effe751706b4d0d63d7ca2cc51db21f902aa5b84e", + "sha256:d35a8ffdc8b05e4b353ba281217c8437f02c57d7233363824e9d794cf753c419", + "sha256:d56c9ec41258fd3734db9f5e4d2faeabe48644ba9ca23b18e1839b3bdf093222", + "sha256:d84e105787f5e5d36ec6a581ff37a1048d12e638688074b2a00bcf402f9aa1c2", + "sha256:e00a4bacb83a2627e8210cb353a2e31f04befc1155db2976e5e239dd66482278", + "sha256:f237278836dda412a325e9340ba2e6a84cb0f56b9244781e5b61f10b3905de88", + "sha256:f9ab5ef0718f6a8716695dea16d83b671b22c45e9c0c78fd807c32c0192e54b5" + ], + "index": "pypi", "version": "==3.18.0" }, + "pysha3": { + "hashes": [ + "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", + "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48", + "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4", + "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d", + "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9", + "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603", + "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f", + "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f", + "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77", + "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5", + "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9", + "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d", + "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24", + "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608", + "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b", + "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030", + "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8", + "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef", + "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf", + "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07", + "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e" + ], + "version": "==1.0.2" + }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, - "regex": { - "hashes": [ - "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", - "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", - "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", - "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", - "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", - "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", - "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", - "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", - "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", - "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", - "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", - "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", - "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", - "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", - "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", - "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", - "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", - "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", - "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", - "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", - "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", - "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", - "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", - "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", - "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", - "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", - "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", - "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", - "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", - "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", - "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", - "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", - "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", - "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", - "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", - "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", - "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", - "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", - "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", - "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", - "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", - "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", - "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", - "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", - "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", - "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", - "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", - "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", - "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", - "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", - "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", - "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", - "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", - "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", - "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", - "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", - "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", - "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", - "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", - "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", - "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", - "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", - "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", - "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", - "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", - "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", - "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", - "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", - "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", - "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", - "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", - "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", - "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", - "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", - "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", - "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", - "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", - "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", - "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", - "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", - "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", - "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", - "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", - "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", - "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", - "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", - "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", - "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" - ], - "markers": "python_version >= '3.6'", - "version": "==2023.6.3" - }, "requests": { "hashes": [ "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", @@ -1154,20 +969,6 @@ "index": "pypi", "version": "==2.31.0" }, - "rlp": { - "hashes": [ - "sha256:63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8", - "sha256:d2a963225b3f26795c5b52310e0871df9824af56823d739511583ef459895a7d" - ], - "version": "==3.0.0" - }, - "safe-pysha3": { - "hashes": [ - "sha256:e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17" - ], - "index": "pypi", - "version": "==1.0.4" - }, "setuptools": { "hashes": [ "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", @@ -1181,7 +982,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "toolz": { @@ -1366,102 +1167,13 @@ } }, "develop": { - "certifi": { + "exceptiongroup": { "hashes": [ - "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", - "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e", + "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785" ], - "markers": "python_version >= '3.6'", - "version": "==2023.5.7" - }, - "charset-normalizer": { - "hashes": [ - "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", - "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", - "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", - "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", - "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", - "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", - "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", - "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", - "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", - "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", - "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", - "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", - "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", - "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", - "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", - "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", - "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", - "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", - "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", - "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", - "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", - "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", - "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", - "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", - "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", - "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", - "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", - "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", - "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", - "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", - "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", - "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", - "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", - "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", - "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", - "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", - "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", - "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", - "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", - "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", - "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", - "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", - "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", - "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", - "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", - "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", - "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", - "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", - "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", - "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", - "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", - "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", - "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", - "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", - "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", - "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", - "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", - "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", - "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", - "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", - "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", - "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", - "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", - "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", - "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", - "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", - "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", - "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", - "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", - "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", - "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", - "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", - "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", - "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", - "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" - ], - "markers": "python_version >= '3.7'", - "version": "==3.1.0" - }, - "idna": { - "hashes": [ - "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", - "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" - ], - "markers": "python_version >= '3.5'", - "version": "==3.4" + "markers": "python_version < '3.11'", + "version": "==1.1.1" }, "iniconfig": { "hashes": [ @@ -1503,37 +1215,13 @@ "index": "pypi", "version": "==0.21.0" }, - "requests": { + "tomli": { "hashes": [ - "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", - "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "index": "pypi", - "version": "==2.31.0" - }, - "requests-mock": { - "hashes": [ - "sha256:2fdbb637ad17ee15c06f33d31169e71bf9fe2bdb7bc9da26185be0dd8d842699", - "sha256:59c9c32419a9fb1ae83ec242d98e889c45bd7d7a65d48375cc243ec08441658b" - ], - "index": "pypi", - "version": "==1.10.0" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.16.0" - }, - "urllib3": { - "hashes": [ - "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", - "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14" - ], - "index": "pypi", - "version": "==1.26.16" + "markers": "python_version < '3.11'", + "version": "==2.0.1" } } } diff --git a/pyinjective/wallet.py b/pyinjective/wallet.py index c557dd8f..2bb5b738 100644 --- a/pyinjective/wallet.py +++ b/pyinjective/wallet.py @@ -1,4 +1,4 @@ -import sha3 +import eth_hash.auto import hashlib import aiohttp import json @@ -7,6 +7,8 @@ from bech32 import bech32_encode, bech32_decode, convertbits from bip32 import BIP32 +from Crypto.Hash import keccak +from Crypto.Hash.keccak import Keccak_Hash from ecdsa import SigningKey, VerifyingKey, SECP256k1, BadSignatureError from ecdsa.util import sigencode_string_canonize from mnemonic import Mnemonic @@ -25,6 +27,14 @@ DEFAULT_DERIVATION_PATH = "m/44'/60'/0'/0/0" +class Keccak_Hash_With_Copy(Keccak_Hash): + # We need to create a version of Keccak_Hash that responds to `copy` + # This is a requirement from the ecdsa library + + def copy(self): + return self.new(data=self.digest()) + + class PrivateKey: """ Class for wrapping SigningKey that is used for signature creation and public key derivation. @@ -99,8 +109,18 @@ def sign(self, msg: bytes) -> bytes: :return: a signature of this private key over the given message """ + # return self.signing_key.sign_deterministic(msg, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize) + # keccak_function = functools.partial(keccak.new, digest_bits=256) + def keccak_creation(data=None): + # Create a 256 bits keccak hash + keccak_hash = Keccak_Hash_With_Copy(data=data, digest_bytes=32, update_after_digest=False) + return keccak_hash + + #return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) + hash = eth_hash.auto.keccak + digest = eth_hash.auto.keccak(msg) + return self.signing_key.sign_digest_deterministic(digest, hashfunc=hash, sigencode=sigencode_string_canonize) - return self.signing_key.sign_deterministic(msg, hashfunc=sha3.keccak_256, sigencode=sigencode_string_canonize) class PublicKey: """ @@ -174,7 +194,7 @@ def to_cons_bech32(self) -> str: def to_address(self) -> "Address": """Return address instance from this public key""" pubkey = self.verify_key.to_string("uncompressed") - keccak_hash = sha3.keccak_256() + keccak_hash = keccak.new(digest_bits=256) keccak_hash.update(pubkey[1:]) addr = keccak_hash.digest()[12:] return Address(addr) From a6c45af544dfa350c5327dd6aed14e862aa4f65c Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 15:18:52 +0200 Subject: [PATCH 16/18] (fix) Change setup.py version to enable the release of this version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 06da44d3..fe8f4c85 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" REQUIRES_PYTHON = ">=3.7, <3.11" -VERSION = "0.6.5" +VERSION = "0.7" REQUIRED = [ "aiohttp", From c2de4bbc04d91cfe3be6371ca0675fa09b672426 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 5 Jun 2023 16:57:17 +0200 Subject: [PATCH 17/18] (fix) Added restriction in setup.py to require Python >= 3.9 (the new safe-pysha3 does not work with Python <=3.8) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index fe8f4c85..5ace264c 100755 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ URL = "https://github.com/InjectiveLabs/sdk-python" EMAIL = "achilleas@injectivelabs.com" AUTHOR = "Injective Labs" -REQUIRES_PYTHON = ">=3.7, <3.11" +REQUIRES_PYTHON = ">=3.9" VERSION = "0.7" REQUIRED = [ From 7ddb66d88fe8fb09514674908000fb72c803d30b Mon Sep 17 00:00:00 2001 From: abel Date: Thu, 15 Jun 2023 16:31:08 -0400 Subject: [PATCH 18/18] (fix) Added missing required library in setup.py --- Pipfile.lock | 551 ++++++++++++++++++++++++++++++++++++++++----------- setup.py | 1 + 2 files changed, 440 insertions(+), 112 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 7281412a..4865929d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "71ab3eba66989d590da3699426035a6e3c606eb5b8069792cb50c85c1a3c2c76" + "sha256": "ddd9c0acafbf86fc3b26c88650bee0a2aa19d05a537541bfcbd8c8c2a1401266" }, "pipfile-spec": 6, "requires": { - "python_version": "3.9" + "python_version": "3" }, "sources": [ { @@ -182,6 +182,113 @@ "index": "pypi", "version": "==3.4" }, + "bitarray": { + "hashes": [ + "sha256:0052e0cfa15810b0dbb1e347b2e4676caa1a7a65c6f6838f50aca6518e8bc153", + "sha256:0400c5a6d68dcf4546e763b10239f916fc7145d909b7e72f0fcb372bf1d44b81", + "sha256:0655cb36ac48c7253af3de83e7c1132d04cf999c065a3afdf970d8f0fa0ed180", + "sha256:07a604d41e2a9ee88fb6f8dd6744b4c1845a537970321588485e4a55bd09e403", + "sha256:0d60f26cbfbea04d3960e442ff1d2e439dc0accc10412e0551ec743b399c1595", + "sha256:0d78d26ab9ab3b0bf684fcb4b947af71e164d2c6def892914d10d6b512383d52", + "sha256:11367e4e29d79295b83a3bbfaa9a928531b958e9db37f80497b7c6100950d049", + "sha256:128f398b119751c39abba1395764ff43995d5756844005c9d4db0e97867e6474", + "sha256:14dc0e1938955b340dc364591422a28e7c5d9c4cbb42ba215b6855b7edd5b9dc", + "sha256:15046a69aac33940fe14bdfc049a9ade5e8bd680eb662704e2581d2860be5ff7", + "sha256:158d099722ebf7294385f2071734b90e5665bba3ad56418c81b3fe3f9d39f720", + "sha256:1617c6fbe36f91e4aaa1552da57270e102a8733008d53239eac1d9f2cf15b265", + "sha256:1d8d5df5d0872edb1e1c50cd0d7fc04b0f373ad7b678ff1b1b48228d28c91f25", + "sha256:22a48b5682a6eb235d1a2ac82147e17bb4bb045afcb5869f53f42d1ba34e2bab", + "sha256:252bd62619339818a520d6ef0763086986611a2d27d2f3c0681d3d6ff7d78213", + "sha256:25321952806d070bd12fc652416047438a2f1984011f1e23e4f2391f7e3ab3d2", + "sha256:263e6239203e453a1e33b2232978012966a4e1fec47a1a519f715936e605b4e6", + "sha256:26cd0ec1a556fb5062d0bda13d8664f3bf5b0f9023a0254fbd76db366cd12673", + "sha256:2c5ed8ef5366a33a92bccb423529a8215b6dcc1a1ad095fab360eac9be94bcae", + "sha256:2e9e69d24b557fc614360e61d373b8e3114204c590c84b26ff31ac212a398052", + "sha256:37fb5777f155e5f2abc98e6db00c8bf7def8bcf2e36d736db025fa3cd7ad044e", + "sha256:38bda909b392f80b1fc04d2f86511cdec05e4a6151d0a660a50589ee0da394ae", + "sha256:3f4f8fd69642313e1ec288a22eb2ef49b8b0e6a6fb98afab0fb227a35a06543c", + "sha256:4024882e77dcb19c6e874faca47f637b97e02a9fcddc20289eabd427c641e902", + "sha256:41ef308abe02aed03058451ed17dad1365d4b4d32a7e63efa81a0becbc36b5ff", + "sha256:42b740e565858b51e8e64160ed204a8dd874293d9c78d513548da8b640b2d3c9", + "sha256:4819ad0640348da61d88e4820f2fbc66927cf6378c4fd609259a000c170660b7", + "sha256:4b729d2ee6a8b9ed9573ffd7fb3f66c5b340658013a73e334c8f7dc09d8e2bba", + "sha256:4bf7b7da77a275e937c2a42fcb846af581fc3f698683b9629827acda40bf96d1", + "sha256:4cfd9590a81606fb08adb7e08aefe1eae0b38ef65c82263b08cdb8daca1f6763", + "sha256:4d3503017ba68689b118f921b008750c955b8dd12ede9148cf99b97125670067", + "sha256:4d801f31a88f544b46c707dbfc095d427f81d02bffcfc1732a3359702550b87b", + "sha256:52baaf7c23f4416fc6ab4654cc7290ed0048950775125bed40b89bc331ede0d8", + "sha256:555f7fd1ec7b2d1b911929615df272bc831ff7b57e0d56bd6aefba427ed79c58", + "sha256:5677ca0196bf340c41c72038141e4da9ed0ac8159b7644ed4ae507d016f12787", + "sha256:576f1fd95043959cb2c04aa6835cafaa25c7f8c1b191ce99dbdd41137c6356eb", + "sha256:59b02a18100a0c94dd79d62903d29f830517291dc32fa5e36d08aea37277ae1a", + "sha256:5a862f19c387b9c53423bc5bed097c0394cead5b85dd1b55941d029889c681c3", + "sha256:5b7cdb62535b2c0851011856bb4eed233dfd183b06a254c7826a7b4b7cfaa714", + "sha256:5dabc0c23af19e48470740d4ab22cb04871f636ef297d7ae4e6a0b7f746e5500", + "sha256:67a740475995a6a53f58a922210c3d267d14780dae3cbd997a0ffc0640416fe6", + "sha256:6fd7b5c762a922df8b75080e6f976f4ce62d2b7e7648bb277b44ed482e19cf31", + "sha256:7606369109a1451623837a272c04020d47c92ea9af1bc6d074cbcceb9f9481f2", + "sha256:761bfac893c18d90b82bbdcc243e887ff315059c63f13459397e3d955834e4e9", + "sha256:761cc24012b0be2acebc2929eeaee3d9036655478974c847a0b5d5ac24d54d70", + "sha256:78b88c247ef366ad07b6877fd13fc96e363d791b200bed10706c4b5522853371", + "sha256:7e25891c8b3c29d785c18716202eacc237a9b65361e17d22d433639a3b1c0126", + "sha256:7e8ab9fa522c878afe2a049087ea723d932bbb15b0a08239d572945158731636", + "sha256:801639ec1663cde71eec343c81936aa6e2480d1ce1345560df7f63c9d49a6a4f", + "sha256:81f7c02f4a8ac119751d6350da0dba64dd4a5b4f1dd61da882b4adce0c1e3e4d", + "sha256:83ec9ea40f74bdbd4018a6d05f2ab68b20935e9c32fc1bdd3164db0a7214764a", + "sha256:8536467187b027bf40cdb1b20c0d2f0087893e427218f0db3cde0a9bd93548c6", + "sha256:85a3c39d55945f86541bc74fcecf107b0a8098b3b7f14f5126b515c9ec61857e", + "sha256:878f2c840ed693351d3531a127424af5e38e2c059727b8d47c0b8a56dc6800f2", + "sha256:8a0f3f1bb9c485f5120f49f37e18ca000beaad4c5bcb709be9a2f0061dcbdee4", + "sha256:8cf406ac78997bad3fc1b1eb99799934b309014177f0ebe46fc52d5e11e381a3", + "sha256:8de204abcb13bcfbea964e50e08dc1ee8d493b6a2da424fac1a866c24aab8557", + "sha256:9061e217e3b6041cd8eeff029681026e4c8f8c96821803e9358dc3cd2f21ce97", + "sha256:91b9de7c52fba6627c38aefda3acafc049a62aae398d0a7af6303b15dd1ad7bc", + "sha256:9225c310b34ba37627b917d49bb9ab9fb3192afdc15c4a2e466fdc3a1f3f7656", + "sha256:94871d66db2370409830b0f3a147e0bc83ebcdc7a233dfe856b989687ea29ab5", + "sha256:994de983cd6153931b98b28a3a37b14e3297d367975031f3a1610e716026bb98", + "sha256:9b66bc21240b150d14310464fe70d8b64350d3d7d1ba377251e75873d9980f2b", + "sha256:a40f3014e579372713a2f589a22dc2a95c46d04cb5c96111cc1e02b5fec398e8", + "sha256:a53f104555788164c3cc44c6e23ff2700b2aee53165d129577db0d21a697cb0d", + "sha256:a670877159565154d68c261e4a0eed151cae1ca05459d4967bfa7ed8f97785e7", + "sha256:a7fed384fc49b280533ba685aec6e3a2e0f72cd70819688991b01a23d6632f89", + "sha256:a81f6815ea3612aa490dccfb9a22274349fe4c7e83c97c6c97a6a57fb1e779b5", + "sha256:b1bdcb3c0e58087b2f38d27e91faa871a872fc8d5e7ceab4e89dd5029943030f", + "sha256:b363105ae888f305addf543471fa6bfe272a7db34c56f3e777f86c32f66c9f88", + "sha256:b43ea42693715a6a7ca11d8eb8b13c8148306559ce277a29c85afa48e9739b54", + "sha256:b44ad887182dd1b6236bc49b4f422e3360edadc0c31511764c82d5da272498b5", + "sha256:b4bc74c81184a2571b6b35bff9b0d749e8e3934ea682e5ea64b53f2b759fe111", + "sha256:b82dbc0a0b6ed67b4c9fa411c945ba642ff40a91799c0d6ce68ef623d951e468", + "sha256:b9b56d36e57ddf1b17d91597a4666adb947c38b76cba59e315ef58fa7a4d5ca9", + "sha256:bb26c370a4001cfe65115ffb564fc09401a8cf51a2cdc20def7526d253656146", + "sha256:bc3a297b9cef1210b43435d74ad8c5aea07c947676fe32306573ec42d94ff426", + "sha256:bc5a6a68fbb716a07a8cce47a9bae6db360cceb0fb60e304a51715f324f73bc8", + "sha256:becfb1f803fe380d5bcdf985e439cd4ae0ed06e19e52d5130bef2186908e350d", + "sha256:c528f2ee881e135b95306612b023c46556a811afa2ec509eab7b8d0559395bcb", + "sha256:c8bfcc26140486e52bbfb70e95fba8d4bd18f72b2aeb9659ecd2ee44f2514af0", + "sha256:ca9133085bec365957040aa88778dce400cbb9620e31a133233769d9c57567b4", + "sha256:d16fe3da83a6d7afc21313ebb17d63d820e34f736a0cf8c2da689c4c46cbc76e", + "sha256:d335e0cf7fd81ff687cfffe35ea862be582b1164fee6276ff3dec86de7dc7dfe", + "sha256:d356b956ee20a74ebe625be1cbf6536302bc09cc8ee39e29faf1ae671dee4263", + "sha256:d36b6b14ef5fa5108290c16f9af4e486e95b362468154c0ba654523674c3b877", + "sha256:d420b298a76acf7400df1d4296ab37d19157aa3397ececf3b5c288d6a76a2f8c", + "sha256:d5a76f9c263b0ed622d2ca99ad07b65dd0ebbd6d4ef4937cdd2a060ada5c6df4", + "sha256:d9e1ea490cb2760b1369b5033445b7389364c6b457d0d90524eced6c262f6bfc", + "sha256:e01bf467c3291e56ddaefb18599434c925479465d8658e5771bada6261926db9", + "sha256:e4bb54dcf8880722678e4f9fa32e7b7bfe4bd5281fd43441426767fe0afd8244", + "sha256:e73109715d748b6890c807b8a70d68939fedfda665a15ebe72009e1538f3d6fc", + "sha256:e86d7ffff696b11867c3624615461f7e91aa415ab53e3b0a08a595da78c653dc", + "sha256:e92212abfba29b903138b3be5c59d082e9dfe1e7054ed287a15f119d569046a3", + "sha256:ea1ec56b9e90ad186af7396cab8c44db720e77d34e9664c3e448c3d8b9234ea4", + "sha256:ede561bd1b20e7a647ecd00a84c15db4ba31d43bf36738337ec36f5c0ac01d31", + "sha256:f05e813ff8a06e1ef6feb23176e3d11ca4348ccd0e6715ed0e0888cb38886815", + "sha256:f66366166632e36a878e519cb91afba5ea067a65253cda747436236cd1637017", + "sha256:f89b9d0b1e09ca711e8100e78e1883b6fa6eb086f49dc8c8b4d53657188dce6e", + "sha256:fca906f07f9e3e782204366a34ddd55b405de50fd73c1c7b97e9c542076e2964", + "sha256:fe9aab0aca202df3170833c390496ca1f91ff7899076a4f7e9edf2cb04cc4d0c", + "sha256:ff91db785adc05f4f4ad6e9aa57333cb30346d2177c6470f3dbc8860121140bc" + ], + "version": "==2.7.5" + }, "certifi": { "hashes": [ "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", @@ -390,11 +497,11 @@ }, "croniter": { "hashes": [ - "sha256:924a38fda88f675ec6835667e1d32ac37ff0d65509c2152729d16ff205e32a65", - "sha256:f17f877be1d93b9e3191151584a19d8b367b017ab0febc8c5472b9300da61c4c" + "sha256:1a6df60eacec3b7a0aa52a8f2ef251ae3dd2a7c7c8b9874e73e791636d55a361", + "sha256:9595da48af37ea06ec3a9f899738f1b2c1c13da3c38cea606ef7cd03ea421128" ], "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.3.15" + "version": "==1.4.1" }, "cytoolz": { "hashes": [ @@ -500,6 +607,14 @@ "markers": "implementation_name == 'cpython'", "version": "==0.12.1" }, + "dataclassy": { + "hashes": [ + "sha256:ad6622cb91e644d13f68768558983fbc22c90a8ff7e355638485d18b9baf1198", + "sha256:bcb030d3d700cf9b1597042bbc8375b92773e6f68f65675a7071862c0ddb87f5" + ], + "markers": "python_version >= '3.6'", + "version": "==0.11.1" + }, "ecdsa": { "hashes": [ "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49", @@ -508,36 +623,78 @@ "index": "pypi", "version": "==0.18.0" }, - "eip712-structs": { + "eip712": { "hashes": [ - "sha256:b24400aef07b4d0287fb9bf8ce02b0abbe80c476d1b67222a7c5158df3a3e38d" + "sha256:3997dace7e581b66a84d106a10baac47a3f6c94095d79c7d0971ca0ede1926ad", + "sha256:c984c577358d1c7e5d4e52802bf4bd0432e965ba7326448998f95fcc1b6d5269" ], "index": "pypi", - "version": "==1.1.0" + "version": "==0.2.1" + }, + "eth-abi": { + "hashes": [ + "sha256:15f9870ca054c09a8e474d2d7e81aff0c32421aebdac896193183fc143e31b50", + "sha256:fe738cdb24983adfe89abf727c723c288f8d0029e97fb08160b20bb5290ab475" + ], + "markers": "python_full_version >= '3.7.2' and python_version < '4'", + "version": "==4.1.0" + }, + "eth-account": { + "hashes": [ + "sha256:0ccc0edbb17021004356ae6e37887528b6e59e6ae6283f3917b9759a5887203b", + "sha256:ccb2d90a16c81c8ea4ca4dc76a70b50f1d63cea6aff3c5a5eddedf9e45143eca" + ], + "markers": "python_version >= '3.6' and python_version < '4'", + "version": "==0.8.0" }, "eth-hash": { + "extras": [ + "pycryptodome" + ], + "hashes": [ + "sha256:1b5f10eca7765cc385e1430eefc5ced6e2e463bb18d1365510e2e539c1a6fe4e", + "sha256:251f62f6579a1e247561679d78df37548bd5f59908da0b159982bf8293ad32f0" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.5.2" + }, + "eth-keyfile": { + "hashes": [ + "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c", + "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560" + ], + "version": "==0.6.1" + }, + "eth-keys": { "hashes": [ - "sha256:4d992e885f3ae3901abbe98bd776ba62d0f6335f98c6e9fc60a39b9d114dfb5a", - "sha256:9805075f653e114a31a99678e93b257fb4082337696f4eff7b4371fe65158409" + "sha256:7d18887483bc9b8a3fdd8e32ddcb30044b9f08fcb24a380d93b6eee3a5bb3216", + "sha256:e07915ffb91277803a28a379418bdd1fad1f390c38ad9353a0f189789a440d5d" + ], + "version": "==0.4.0" + }, + "eth-rlp": { + "hashes": [ + "sha256:e88e949a533def85c69fa94224618bbbd6de00061f4cff645c44621dab11cf33", + "sha256:f3263b548df718855d9a8dbd754473f383c0efc82914b0b849572ce3e06e71a6" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.5.1" + "version": "==0.3.0" }, "eth-typing": { "hashes": [ - "sha256:323111b3b76c8ceaff01619367aa52806f0264ca0ec1a70d4b9a42e44360f554", - "sha256:e9535e9d524d4c7a0cbd3d9832093cc5001a3e31869e72645674d24c6376d196" + "sha256:347d50713dd58ab50063b228d8271624ab2de3071bfa32d467b05f0ea31ab4c5", + "sha256:7f49610469811ee97ac43eaf6baa294778ce74042d41e61ecf22e5ebe385590f" ], - "markers": "python_version < '4' and python_full_version >= '3.7.2'", - "version": "==3.3.0" + "markers": "python_full_version >= '3.7.2' and python_version < '4'", + "version": "==3.4.0" }, "eth-utils": { "hashes": [ - "sha256:63901e54ec9e4ac16ae0a0d28e1dc48b968c20184d22f2727e5f3ca24b6250bc", - "sha256:fcb4c3c1b32947ba92970963f9aaf40da73b04ea1034964ff8c0e70595127138" + "sha256:4938ab742f91cdf19bae024261af090664f63ccf83bdb1213e7146c14209e899", + "sha256:7cccfb0b0749431d0d001e327e9a7289bf07308316a73850ae3895020e5682f4" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.1.0" + "version": "==2.1.1" }, "frozenlist": { "hashes": [ @@ -729,6 +886,14 @@ "index": "pypi", "version": "==0.1.2" }, + "hexbytes": { + "hashes": [ + "sha256:383595ad75026cf00abd570f44b368c6cdac0c6becfae5c39ff88829877f8a59", + "sha256:a3fe35c6831ee8fafd048c4c086b986075fc14fd46258fa24ecb8d65745f9a9d" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.3.1" + }, "idna": { "hashes": [ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", @@ -825,24 +990,30 @@ "markers": "python_version >= '3.7'", "version": "==6.0.4" }, + "parsimonious": { + "hashes": [ + "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1" + ], + "version": "==0.9.0" + }, "protobuf": { "hashes": [ - "sha256:09310bce43353b46d73ba7e3bca78273b9bc50349509b9698e64d288c6372c2a", - "sha256:20874e7ca4436f683b64ebdbee2129a5a2c301579a67d1a7dda2cdf62fb7f5f7", - "sha256:25e3370eda26469b58b602e29dff069cfaae8eaa0ef4550039cc5ef8dc004511", - "sha256:281342ea5eb631c86697e1e048cb7e73b8a4e85f3299a128c116f05f5c668f8f", - "sha256:384dd44cb4c43f2ccddd3645389a23ae61aeb8cfa15ca3a0f60e7c3ea09b28b3", - "sha256:54a533b971288af3b9926e53850c7eb186886c0c84e61daa8444385a4720297f", - "sha256:6c081863c379bb1741be8f8193e893511312b1d7329b4a75445d1ea9955be69e", - "sha256:86df87016d290143c7ce3be3ad52d055714ebaebb57cc659c387e76cfacd81aa", - "sha256:8da6070310d634c99c0db7df48f10da495cc283fd9e9234877f0cd182d43ab7f", - "sha256:b2cfab63a230b39ae603834718db74ac11e52bccaaf19bf20f5cce1a84cf76df", - "sha256:c52cfcbfba8eb791255edd675c1fe6056f723bf832fa67f0442218f8817c076e", - "sha256:ce744938406de1e64b91410f473736e815f28c3b71201302612a68bf01517fea", - "sha256:efabbbbac1ab519a514579ba9ec52f006c28ae19d97915951f69fa70da2c9e91" + "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8", + "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223", + "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288", + "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac", + "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1", + "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1", + "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62", + "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb", + "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35", + "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b", + "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359", + "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a", + "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5" ], "index": "pypi", - "version": "==4.23.2" + "version": "==4.23.3" }, "pycparser": { "hashes": [ @@ -886,81 +1057,110 @@ "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf", "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08" ], - "index": "pypi", - "version": "==3.18.0" - }, - "pycryptodomex": { - "hashes": [ - "sha256:160a39a708c36fa0b168ab79386dede588e62aec06eb505add870739329aecc6", - "sha256:192306cf881fe3467dda0e174a4f47bb3a8bb24b90c9cdfbdc248eec5fc0578c", - "sha256:1949e09ea49b09c36d11a951b16ff2a05a0ffe969dda1846e4686ee342fe8646", - "sha256:215be2980a6b70704c10796dd7003eb4390e7be138ac6fb8344bf47e71a8d470", - "sha256:27072a494ce621cc7a9096bbf60ed66826bb94db24b49b7359509e7951033e74", - "sha256:2dc4eab20f4f04a2d00220fdc9258717b82d31913552e766d5f00282c031b70a", - "sha256:302a8f37c224e7b5d72017d462a2be058e28f7be627bdd854066e16722d0fc0c", - "sha256:3d9314ac785a5b75d5aaf924c5f21d6ca7e8df442e5cf4f0fefad4f6e284d422", - "sha256:3e3ecb5fe979e7c1bb0027e518340acf7ee60415d79295e5251d13c68dde576e", - "sha256:4d9379c684efea80fdab02a3eb0169372bca7db13f9332cb67483b8dc8b67c37", - "sha256:50308fcdbf8345e5ec224a5502b4215178bdb5e95456ead8ab1a69ffd94779cb", - "sha256:5594a125dae30d60e94f37797fc67ce3c744522de7992c7c360d02fdb34918f8", - "sha256:58fc0aceb9c961b9897facec9da24c6a94c5db04597ec832060f53d4d6a07196", - "sha256:6421d23d6a648e83ba2670a352bcd978542dad86829209f59d17a3f087f4afef", - "sha256:6875eb8666f68ddbd39097867325bd22771f595b4e2b0149739b5623c8bf899b", - "sha256:6ed3606832987018615f68e8ed716a7065c09a0fe94afd7c9ca1b6777f0ac6eb", - "sha256:71687eed47df7e965f6e0bf3cadef98f368d5221f0fb89d2132effe1a3e6a194", - "sha256:73d64b32d84cf48d9ec62106aa277dbe99ab5fbfd38c5100bc7bddd3beb569f7", - "sha256:75672205148bdea34669173366df005dbd52be05115e919551ee97171083423d", - "sha256:76f0a46bee539dae4b3dfe37216f678769349576b0080fdbe431d19a02da42ff", - "sha256:8ff129a5a0eb5ff16e45ca4fa70a6051da7f3de303c33b259063c19be0c43d35", - "sha256:ac614363a86cc53d8ba44b6c469831d1555947e69ab3276ae8d6edc219f570f7", - "sha256:ba95abd563b0d1b88401658665a260852a8e6c647026ee6a0a65589287681df8", - "sha256:bbdcce0a226d9205560a5936b05208c709b01d493ed8307792075dedfaaffa5f", - "sha256:bec6c80994d4e7a38312072f89458903b65ec99bed2d65aa4de96d997a53ea7a", - "sha256:c2953afebf282a444c51bf4effe751706b4d0d63d7ca2cc51db21f902aa5b84e", - "sha256:d35a8ffdc8b05e4b353ba281217c8437f02c57d7233363824e9d794cf753c419", - "sha256:d56c9ec41258fd3734db9f5e4d2faeabe48644ba9ca23b18e1839b3bdf093222", - "sha256:d84e105787f5e5d36ec6a581ff37a1048d12e638688074b2a00bcf402f9aa1c2", - "sha256:e00a4bacb83a2627e8210cb353a2e31f04befc1155db2976e5e239dd66482278", - "sha256:f237278836dda412a325e9340ba2e6a84cb0f56b9244781e5b61f10b3905de88", - "sha256:f9ab5ef0718f6a8716695dea16d83b671b22c45e9c0c78fd807c32c0192e54b5" - ], - "index": "pypi", "version": "==3.18.0" }, - "pysha3": { - "hashes": [ - "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", - "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48", - "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4", - "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d", - "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9", - "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603", - "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f", - "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f", - "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77", - "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5", - "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9", - "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d", - "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24", - "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608", - "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b", - "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030", - "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8", - "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef", - "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf", - "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07", - "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e" - ], - "version": "==1.0.2" - }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.8.2" }, + "regex": { + "hashes": [ + "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", + "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", + "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", + "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", + "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", + "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", + "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", + "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", + "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", + "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", + "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", + "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", + "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", + "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", + "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", + "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", + "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", + "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", + "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", + "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", + "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", + "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", + "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", + "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", + "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", + "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", + "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", + "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", + "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", + "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", + "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", + "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", + "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", + "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", + "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", + "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", + "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", + "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", + "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", + "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", + "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", + "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", + "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", + "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", + "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", + "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", + "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", + "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", + "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", + "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", + "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", + "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", + "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", + "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", + "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", + "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", + "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", + "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", + "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", + "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", + "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", + "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", + "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", + "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", + "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", + "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", + "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", + "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", + "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", + "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", + "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", + "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", + "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", + "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", + "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", + "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", + "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", + "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", + "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", + "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", + "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", + "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", + "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", + "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", + "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", + "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", + "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", + "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.6.3" + }, "requests": { "hashes": [ "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", @@ -969,6 +1169,20 @@ "index": "pypi", "version": "==2.31.0" }, + "rlp": { + "hashes": [ + "sha256:63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8", + "sha256:d2a963225b3f26795c5b52310e0871df9824af56823d739511583ef459895a7d" + ], + "version": "==3.0.0" + }, + "safe-pysha3": { + "hashes": [ + "sha256:e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17" + ], + "index": "pypi", + "version": "==1.0.4" + }, "setuptools": { "hashes": [ "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", @@ -982,7 +1196,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "toolz": { @@ -1167,13 +1381,102 @@ } }, "develop": { - "exceptiongroup": { + "certifi": { "hashes": [ - "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e", - "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785" + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" ], - "markers": "python_version < '3.11'", - "version": "==1.1.1" + "markers": "python_version >= '3.6'", + "version": "==2023.5.7" + }, + "charset-normalizer": { + "hashes": [ + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.0" + }, + "idna": { + "hashes": [ + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" + ], + "markers": "python_version >= '3.5'", + "version": "==3.4" }, "iniconfig": { "hashes": [ @@ -1201,11 +1504,11 @@ }, "pytest": { "hashes": [ - "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362", - "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3" + "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295", + "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b" ], "index": "pypi", - "version": "==7.3.1" + "version": "==7.3.2" }, "pytest-asyncio": { "hashes": [ @@ -1215,13 +1518,37 @@ "index": "pypi", "version": "==0.21.0" }, - "tomli": { + "requests": { "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], - "markers": "python_version < '3.11'", - "version": "==2.0.1" + "index": "pypi", + "version": "==2.31.0" + }, + "requests-mock": { + "hashes": [ + "sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4", + "sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15" + ], + "index": "pypi", + "version": "==1.11.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==1.16.0" + }, + "urllib3": { + "hashes": [ + "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", + "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14" + ], + "index": "pypi", + "version": "==1.26.16" } } } diff --git a/setup.py b/setup.py index 5ace264c..f3c350d7 100755 --- a/setup.py +++ b/setup.py @@ -35,6 +35,7 @@ "protobuf", "requests", "safe-pysha3", + "urllib3", "websockets", ]