mm-eth 0.2.4__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mm_eth/account.py +12 -13
- mm_eth/cli/calcs.py +71 -90
- mm_eth/cli/cli.py +60 -37
- mm_eth/cli/cli_utils.py +11 -81
- mm_eth/cli/cmd/balance_cmd.py +1 -1
- mm_eth/cli/cmd/balances_cmd.py +23 -23
- mm_eth/cli/cmd/call_contract_cmd.py +9 -4
- mm_eth/cli/cmd/config_example_cmd.py +1 -1
- mm_eth/cli/cmd/deploy_cmd.py +10 -4
- mm_eth/cli/cmd/node_cmd.py +1 -1
- mm_eth/cli/cmd/send_contract_cmd.py +74 -122
- mm_eth/cli/cmd/transfer_erc20_cmd.py +86 -158
- mm_eth/cli/cmd/transfer_eth_cmd.py +85 -152
- mm_eth/cli/cmd/tx_cmd.py +16 -0
- mm_eth/cli/cmd/vault_cmd.py +6 -3
- mm_eth/cli/config_examples/{balances.yml → balances.toml} +7 -7
- mm_eth/cli/config_examples/call_contract.toml +5 -0
- mm_eth/cli/config_examples/transfer_erc20.toml +27 -0
- mm_eth/cli/config_examples/transfer_eth.toml +26 -0
- mm_eth/cli/rpc_helpers.py +43 -50
- mm_eth/cli/validators.py +23 -64
- mm_eth/constants.py +1 -0
- mm_eth/ens.py +2 -2
- mm_eth/erc20.py +3 -7
- mm_eth/json_encoder.py +15 -0
- mm_eth/rpc.py +4 -7
- mm_eth/tx.py +3 -2
- mm_eth/utils.py +1 -15
- {mm_eth-0.2.4.dist-info → mm_eth-0.3.0.dist-info}/METADATA +2 -3
- mm_eth-0.3.0.dist-info/RECORD +49 -0
- mm_eth/cli/config_examples/call_contract.yml +0 -5
- mm_eth/cli/config_examples/transfer_erc20.yml +0 -26
- mm_eth/cli/config_examples/transfer_eth.yml +0 -24
- mm_eth/types.py +0 -4
- mm_eth-0.2.4.dist-info/RECORD +0 -47
- {mm_eth-0.2.4.dist-info → mm_eth-0.3.0.dist-info}/WHEEL +0 -0
- {mm_eth-0.2.4.dist-info → mm_eth-0.3.0.dist-info}/entry_points.txt +0 -0
mm_eth/cli/validators.py
CHANGED
|
@@ -1,78 +1,37 @@
|
|
|
1
|
-
import
|
|
2
|
-
from decimal import Decimal, InvalidOperation
|
|
3
|
-
from pathlib import Path
|
|
1
|
+
from collections.abc import Callable
|
|
4
2
|
|
|
5
|
-
from
|
|
3
|
+
from mm_crypto_utils import AddressToPrivate, ConfigValidators, TxRoute
|
|
6
4
|
|
|
7
|
-
from mm_eth.
|
|
5
|
+
from mm_eth.account import address_from_private, is_address
|
|
6
|
+
from mm_eth.constants import SUFFIX_DECIMALS
|
|
8
7
|
|
|
9
8
|
from . import calcs
|
|
10
9
|
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
class Validators(ConfigValidators):
|
|
12
|
+
@staticmethod
|
|
13
|
+
def valid_eth_expression(var_name: str | None = None) -> Callable[[str], str]:
|
|
14
|
+
return ConfigValidators.valid_calc_int_expression(var_name, SUFFIX_DECIMALS)
|
|
16
15
|
|
|
16
|
+
@staticmethod
|
|
17
|
+
def valid_token_expression(var_name: str | None = None) -> Callable[[str], str]:
|
|
18
|
+
return ConfigValidators.valid_calc_int_expression(var_name, {"t": 6})
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
log_file = Path(v).expanduser()
|
|
22
|
-
log_file.touch(exist_ok=True)
|
|
23
|
-
if not (log_file.is_file() and os.access(log_file, os.W_OK)):
|
|
24
|
-
raise ValueError(f"wrong log path: {v}")
|
|
25
|
-
return v
|
|
20
|
+
@staticmethod
|
|
21
|
+
def eth_routes() -> Callable[[str | None], list[TxRoute]]:
|
|
22
|
+
return ConfigValidators.routes(is_address, to_lower=True)
|
|
26
23
|
|
|
24
|
+
@staticmethod
|
|
25
|
+
def eth_private_keys() -> Callable[[str | list[str] | None], AddressToPrivate]:
|
|
26
|
+
return ConfigValidators.private_keys(address_from_private)
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return
|
|
31
|
-
if isinstance(v, str):
|
|
32
|
-
return str_to_list(v, unique=True, remove_comments=True, split_line=True)
|
|
33
|
-
return v
|
|
28
|
+
@staticmethod
|
|
29
|
+
def eth_address() -> Callable[[str], str]:
|
|
30
|
+
return ConfigValidators.address(is_address, to_lower=True)
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
def
|
|
37
|
-
|
|
38
|
-
return []
|
|
39
|
-
if isinstance(v, str):
|
|
40
|
-
return str_to_list(v, unique=True, remove_comments=True, split_line=True, lower=True)
|
|
41
|
-
return v
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def delay_validator(v: str | Decimal) -> Decimal | tuple[Decimal, Decimal]:
|
|
45
|
-
if isinstance(v, int | float):
|
|
46
|
-
return Decimal(str(v))
|
|
47
|
-
if isinstance(v, str):
|
|
48
|
-
arr = [a.strip() for a in v.split("-")]
|
|
49
|
-
if len(arr) != 2:
|
|
50
|
-
raise ValueError("wrong delay value")
|
|
51
|
-
try:
|
|
52
|
-
return Decimal(arr[0]), Decimal(arr[1])
|
|
53
|
-
except InvalidOperation:
|
|
54
|
-
raise ValueError("wrong delay value") from None
|
|
55
|
-
raise ValueError("wrong delay value")
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def is_valid_calc_var_wei_value(value: str | None, base_name: str = "var", decimals: int | None = None) -> bool:
|
|
59
|
-
if value is None:
|
|
60
|
-
return True # check for None on BaseModel.field type level
|
|
61
|
-
try:
|
|
62
|
-
calcs.calc_var_wei_value(value, var_value=123, var_name=base_name, decimals=decimals)
|
|
63
|
-
return True # noqa: TRY300
|
|
64
|
-
except ValueError:
|
|
65
|
-
return False
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def is_valid_calc_decimal_value(value: str | None) -> bool:
|
|
69
|
-
if value is None:
|
|
70
|
-
return True # check for None on BaseModel.field type level
|
|
71
|
-
try:
|
|
72
|
-
calcs.calc_decimal_value(value)
|
|
73
|
-
return True # noqa: TRY300
|
|
74
|
-
except ValueError:
|
|
75
|
-
return False
|
|
32
|
+
@staticmethod
|
|
33
|
+
def eth_addresses(unique: bool) -> Callable[[str | list[str] | None], list[str]]:
|
|
34
|
+
return ConfigValidators.addresses(unique, to_lower=True, is_address=is_address)
|
|
76
35
|
|
|
77
36
|
|
|
78
37
|
def is_valid_calc_function_args(value: str | None) -> bool:
|
mm_eth/constants.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
SUFFIX_DECIMALS = {"eth": 18, "gwei": 9, "ether": 18}
|
mm_eth/ens.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
from mm_crypto_utils import Nodes, Proxies, random_node, random_proxy
|
|
1
2
|
from mm_std import Err, Ok, Result
|
|
2
3
|
|
|
3
|
-
from mm_eth.
|
|
4
|
-
from mm_eth.utils import get_w3, random_node, random_proxy
|
|
4
|
+
from mm_eth.utils import get_w3
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def get_name(nodes: Nodes, address: str, timeout: int = 10, proxies: Proxies = None, attempts: int = 3) -> Result[str]:
|
mm_eth/erc20.py
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import string
|
|
4
|
+
from collections.abc import Sequence
|
|
4
5
|
from dataclasses import dataclass
|
|
5
|
-
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
import eth_abi
|
|
8
8
|
import eth_utils
|
|
9
9
|
from eth_typing import HexStr
|
|
10
10
|
from eth_utils import to_checksum_address, to_hex
|
|
11
|
+
from mm_crypto_utils import Nodes, Proxies
|
|
11
12
|
from mm_std import Err, Ok, Result
|
|
12
13
|
|
|
13
14
|
from mm_eth import rpc
|
|
15
|
+
from mm_eth.rpc import Log
|
|
14
16
|
from mm_eth.tx import SignedTx, sign_legacy_tx, sign_tx
|
|
15
17
|
from mm_eth.utils import hex_str_to_int, hex_to_bytes, log_topic_to_address
|
|
16
18
|
|
|
17
|
-
if TYPE_CHECKING:
|
|
18
|
-
from collections.abc import Sequence
|
|
19
|
-
|
|
20
|
-
from mm_eth.rpc import Log
|
|
21
|
-
from mm_eth.types import Nodes, Proxies
|
|
22
|
-
|
|
23
19
|
TRANSFER_METHOD = "0xa9059cbb"
|
|
24
20
|
TRANSFER_TOPIC = HexStr("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef")
|
|
25
21
|
|
mm_eth/json_encoder.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from hexbytes import HexBytes
|
|
2
|
+
from mm_std import CustomJSONEncoder
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class EthJsonEncoder(CustomJSONEncoder):
|
|
6
|
+
def default(self, o: object) -> object:
|
|
7
|
+
if isinstance(o, HexBytes):
|
|
8
|
+
return o.hex()
|
|
9
|
+
return super().default(o)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def json_default(o: object) -> str:
|
|
13
|
+
if isinstance(o, HexBytes):
|
|
14
|
+
return o.to_0x_hex()
|
|
15
|
+
raise TypeError(f"Object of type {type(o).__name__} is not JSON serializable")
|
mm_eth/rpc.py
CHANGED
|
@@ -2,18 +2,15 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Any, Literal, cast
|
|
6
6
|
|
|
7
7
|
import websocket
|
|
8
|
+
from mm_crypto_utils import Nodes, Proxies, random_node, random_proxy
|
|
8
9
|
from mm_std import Err, Ok, Result, hr, random_choice
|
|
9
10
|
from pydantic import BaseModel
|
|
11
|
+
from web3.types import BlockIdentifier
|
|
10
12
|
|
|
11
|
-
from mm_eth.utils import hex_str_to_int
|
|
12
|
-
|
|
13
|
-
if TYPE_CHECKING:
|
|
14
|
-
from web3.types import BlockIdentifier
|
|
15
|
-
|
|
16
|
-
from mm_eth.types import Nodes, Proxies
|
|
13
|
+
from mm_eth.utils import hex_str_to_int
|
|
17
14
|
|
|
18
15
|
|
|
19
16
|
@dataclass
|
mm_eth/tx.py
CHANGED
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
5
|
import rlp
|
|
6
|
+
from eth_account import Account
|
|
6
7
|
from eth_utils import keccak, to_hex
|
|
7
8
|
from pydantic import BaseModel
|
|
8
9
|
from rlp.sedes import Binary, big_endian_int, binary
|
|
@@ -133,8 +134,8 @@ def sign_tx(
|
|
|
133
134
|
if to:
|
|
134
135
|
tx["to"] = Web3.to_checksum_address(to)
|
|
135
136
|
|
|
136
|
-
signed =
|
|
137
|
-
return SignedTx(tx_hash=signed.hash.
|
|
137
|
+
signed = Account.sign_transaction(tx, private_key)
|
|
138
|
+
return SignedTx(tx_hash=signed.hash.to_0x_hex(), raw_tx=signed.raw_transaction.to_0x_hex())
|
|
138
139
|
|
|
139
140
|
|
|
140
141
|
def decode_raw_tx(raw_tx: str) -> DecodedRawTx:
|
mm_eth/utils.py
CHANGED
|
@@ -6,14 +6,11 @@ import eth_utils
|
|
|
6
6
|
import pydash
|
|
7
7
|
from eth_typing import HexStr
|
|
8
8
|
from hexbytes import HexBytes
|
|
9
|
-
from mm_std import Err, Ok, Result, number_with_separator
|
|
10
|
-
from mm_std.random_ import random_str_choice
|
|
9
|
+
from mm_std import Err, Ok, Result, number_with_separator
|
|
11
10
|
from pydantic import BaseModel
|
|
12
11
|
from web3 import Web3
|
|
13
12
|
from web3.types import Wei
|
|
14
13
|
|
|
15
|
-
from mm_eth.types import Nodes, Proxies
|
|
16
|
-
|
|
17
14
|
|
|
18
15
|
def parse_addresses(data: str) -> list[str]:
|
|
19
16
|
result = []
|
|
@@ -229,16 +226,5 @@ def hex_str_to_int(value: str) -> Result[int]:
|
|
|
229
226
|
return Err(f"can't convert to int: {value}")
|
|
230
227
|
|
|
231
228
|
|
|
232
|
-
def random_node(nodes: Nodes, remove_slash: bool = True) -> str:
|
|
233
|
-
node = cast(str, random_choice(nodes))
|
|
234
|
-
if remove_slash and node.endswith("/"):
|
|
235
|
-
node = node.removesuffix("/")
|
|
236
|
-
return node
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
def random_proxy(proxies: Proxies) -> str | None:
|
|
240
|
-
return random_str_choice(proxies)
|
|
241
|
-
|
|
242
|
-
|
|
243
229
|
def to_hex(data: bytes | int | bool) -> str:
|
|
244
230
|
return Web3.to_hex(data)
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mm-eth
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Requires-Python: >=3.12
|
|
5
|
-
Requires-Dist:
|
|
6
|
-
Requires-Dist: mm-std~=0.1.12
|
|
5
|
+
Requires-Dist: mm-crypto-utils>=0.1.2
|
|
7
6
|
Requires-Dist: typer>=0.15.1
|
|
8
7
|
Requires-Dist: web3~=7.7.0
|
|
9
8
|
Requires-Dist: websocket-client~=1.8.0
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
mm_eth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
mm_eth/abi.py,sha256=Qf-QOsR9QexyQM9XWKNeTMkRarIL3XQJbaDbJ8ifMrw,4856
|
|
3
|
+
mm_eth/account.py,sha256=VjyWOYX5K9ZgdJsHp_I3m-lJ5g9FDo3OJ3knqUPs_TM,1924
|
|
4
|
+
mm_eth/anvil.py,sha256=98RCfI7dEpxFBTV6UErYvubWVP3n0ctUFn1--4kZ84U,1603
|
|
5
|
+
mm_eth/constants.py,sha256=Cy_G-IleBH4gAZ4ok8AGHHlqmdW0ZM7ZldyVpzAfWLs,54
|
|
6
|
+
mm_eth/deploy.py,sha256=SB3ruY808_5UnG8kHR34uVP66P3zOWZu0ImKD7UUv2s,691
|
|
7
|
+
mm_eth/ens.py,sha256=zwwVBk1jikIkPhRAB29T6oNHmWPVBTikTpiOWdzrA04,626
|
|
8
|
+
mm_eth/erc20.py,sha256=V__yPDG4ABXWfkSdIqffE5qQDjjZl93287YunllN52A,6804
|
|
9
|
+
mm_eth/ethernodes.py,sha256=9y_poTmFUj6cnWaT9mtfc6S9lAfVXTwLGRqxMQ8hT0Y,3080
|
|
10
|
+
mm_eth/json_encoder.py,sha256=S4oD-qfTVztMb4sRpY1puhBQwOBofTyQXWszmdXk4og,433
|
|
11
|
+
mm_eth/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
mm_eth/rpc.py,sha256=k0eHxo_Dp6G0fHQ_rD-QbwOJz5ngC6kxBjl5NEHnyw8,13832
|
|
13
|
+
mm_eth/solc.py,sha256=dYRvT8PjZlLDZhNsc_-0790Eug_ZwU2G-iBfIdGj6wQ,1071
|
|
14
|
+
mm_eth/tx.py,sha256=efSoMCoWkenbGdHo1_LX66_Edz1HvED5-J_i3wrHwMw,4051
|
|
15
|
+
mm_eth/utils.py,sha256=sSxt9GZEntZlT0RU8ht9Qon875HPhpd-1JjgqUBEfVo,7405
|
|
16
|
+
mm_eth/vault.py,sha256=h8NyiOQh5YFskh1lZA3KyvnJUnxl9769ME2ChplG0CM,1477
|
|
17
|
+
mm_eth/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
mm_eth/cli/calcs.py,sha256=iHPofMxttXGiJ6h_TqGduzrvfxqQdgYbTHxMWI9u8MA,3845
|
|
19
|
+
mm_eth/cli/cli.py,sha256=1c16hY4SIL2NqCnY5SUBPCSIk3AoBn-kPLs9oZsgB1g,10112
|
|
20
|
+
mm_eth/cli/cli_utils.py,sha256=j09pcGYJ6MfPV-DOjICTB4G8hE2vqb5od19_T2HbGbk,858
|
|
21
|
+
mm_eth/cli/print_helpers.py,sha256=yOiOFjTKloumwf07AqNIHQswUo8t0yuT9bpeGBGl60Q,1470
|
|
22
|
+
mm_eth/cli/rpc_helpers.py,sha256=FMV-QVNM3v9X8H_-DP0hjNRqmm7KOnfzkw9bP17Qbz0,4499
|
|
23
|
+
mm_eth/cli/validators.py,sha256=UV7d53cZZ4vRuRWNfBbw7RpQl8pADyhG2WV7KgmYMCg,1520
|
|
24
|
+
mm_eth/cli/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
mm_eth/cli/cmd/balance_cmd.py,sha256=gkwUa8VGe1wXH0GDsit3-1NmRiijojaNLygi5zNcYSY,2110
|
|
26
|
+
mm_eth/cli/cmd/balances_cmd.py,sha256=X3dzzVlphu9L4YPvm--Iev48zqOHlqtckxV8g1tNbwM,4206
|
|
27
|
+
mm_eth/cli/cmd/call_contract_cmd.py,sha256=nsOIu8JIZNSZwXi-z9TmjRrzhkupyf9zlf8N65l3HZc,1273
|
|
28
|
+
mm_eth/cli/cmd/config_example_cmd.py,sha256=hXsG6S6yZXrr9thu3Uc-RQyl7MCaKayX1v9Ix9m7t50,271
|
|
29
|
+
mm_eth/cli/cmd/deploy_cmd.py,sha256=H5p0K4p3wX9MGFHg-h__dYUw-X5ttNTEDMPCy_T5eHQ,1281
|
|
30
|
+
mm_eth/cli/cmd/encode_input_data_cmd.py,sha256=9UQ1MKPEFQJ8j_COsP3KGKhwOf9tT3feBezI8vvxTlw,267
|
|
31
|
+
mm_eth/cli/cmd/mnemonic_cmd.py,sha256=Mb0H0inSNCa93GEPxGYQi7BnPe11mnLjnspfe7h54I4,972
|
|
32
|
+
mm_eth/cli/cmd/node_cmd.py,sha256=Ae5yPxxnNiHw3tZcojS7KwNLM4gEfLhsTfhZp_86rqU,1956
|
|
33
|
+
mm_eth/cli/cmd/private_key_cmd.py,sha256=Fv_2OLog1h32pIP7PJITwl_pHdy3BXvaDRcXZsxY1xo,241
|
|
34
|
+
mm_eth/cli/cmd/rpc_cmd.py,sha256=02q82YqgbPezfEBmV_QBCIeNReE7ktkPych8Xr9ann8,2186
|
|
35
|
+
mm_eth/cli/cmd/send_contract_cmd.py,sha256=h4Ue2gU0SqMoqQk9L8gSOJyzGUgzNLk2fXkEwsTlgQE,7325
|
|
36
|
+
mm_eth/cli/cmd/solc_cmd.py,sha256=tBpeMdPfGs2iQIMaIJAAhMh1a3KyXHwyninfXPVpsgs,677
|
|
37
|
+
mm_eth/cli/cmd/token_cmd.py,sha256=4y6ZQpLOJ33_iNuKpm9tZXh4RntWhmPUcizgaNNBzaw,1102
|
|
38
|
+
mm_eth/cli/cmd/transfer_erc20_cmd.py,sha256=F9lUE4X_i4-yo4pdhHA3CWi1joHvtbUxyFUT4ibc574,7870
|
|
39
|
+
mm_eth/cli/cmd/transfer_eth_cmd.py,sha256=WeGX6kHc0x9kTTYuchp80DNWhq-i8vMCuR5JRq8kbVQ,6982
|
|
40
|
+
mm_eth/cli/cmd/tx_cmd.py,sha256=PIenXYTT60Z2fqsivpzybCLI2Z_tlcz-asm3B0JLHgI,517
|
|
41
|
+
mm_eth/cli/cmd/vault_cmd.py,sha256=MOM1CILIaaqown1I-Fgo22ckqIMLtFt8t2D3fWNp798,606
|
|
42
|
+
mm_eth/cli/config_examples/balances.toml,sha256=Wb3y_-Rh5kqjEDX-jvRZhzwq_rVGv4zLKy7PGe1jysY,418
|
|
43
|
+
mm_eth/cli/config_examples/call_contract.toml,sha256=vq6VtOlRYGWfLRpPXNkNcdQpndW8bJJRDBbrTr5rSt8,244
|
|
44
|
+
mm_eth/cli/config_examples/transfer_erc20.toml,sha256=3bnLZbl49HlG0BFa4JLp0HQswNbr72BNBTa-niWsRGA,1135
|
|
45
|
+
mm_eth/cli/config_examples/transfer_eth.toml,sha256=-eQEU9tK_4To_PDG39vvIZNkZhgh0_EZQJVjbUHJlyg,1164
|
|
46
|
+
mm_eth-0.3.0.dist-info/METADATA,sha256=8-_f0wEkpdt0pA8P7kYg2Es1bCjykJUxzaGn553IXEY,207
|
|
47
|
+
mm_eth-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
48
|
+
mm_eth-0.3.0.dist-info/entry_points.txt,sha256=aGhpsozl8NIrkuUcX5fSgURCcDhr3ShUdeTSIrJq4oc,46
|
|
49
|
+
mm_eth-0.3.0.dist-info/RECORD,,
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
token: "0x60631C856303731BE4deb81C0303F80B652aA5b4" # USDC
|
|
2
|
-
decimals: 6
|
|
3
|
-
max_fee_per_gas: 1.2base + 1gwei + random(1,200) # supported var_name=base
|
|
4
|
-
max_fee_per_gas_limit: 10.1gwei - random(1,10) # optional
|
|
5
|
-
max_priority_fee_per_gas: 1gwei + random(1,12)
|
|
6
|
-
gas: estimate + random(100,200) - 19 # supported var_name=estimate
|
|
7
|
-
value: 0.5balance - random(1.5t,3t) + 11gwei # supported var_name=balance
|
|
8
|
-
value_min_limit: 0.5t + random(1,2) - 7
|
|
9
|
-
addresses_map: |
|
|
10
|
-
0x10fd602Bff689e64D4720D1DCCCD3494f1f16623 0x58487485c3858109f5A37e42546FE87473f79a4b
|
|
11
|
-
0x97C77B548aE0d4925F5C201220fC6d8996424309 0x7EdF3b8579c21A8820b4C0B8352541c1CE04045f # can comment here
|
|
12
|
-
# and here
|
|
13
|
-
addresses_from_file: ~/path/from.txt
|
|
14
|
-
addresses_to_file: ~/path/to.txt
|
|
15
|
-
delay: random(1.123,10) + 1 # secs, optional
|
|
16
|
-
private_keys: | # optional, private_keys or private_keys_file must be used
|
|
17
|
-
0x7bb5b9c0ba991275f84b796b4d25fd3a8d7320911f50fade85410e7a2b000632
|
|
18
|
-
0xb7e0b671e176b04ceb0897a698d34771bfe9acf29273dc52a141be6e97145a00
|
|
19
|
-
private_keys_file: ~/path/private_keys.txt # optional, private_keys or private_keys_file must be used
|
|
20
|
-
log_debug: /path/to/file_debug.log # optional
|
|
21
|
-
log_info: /path/to/file_info.log # optional
|
|
22
|
-
round_ndigits: 6 # optional, default=5
|
|
23
|
-
chain_id: 421613
|
|
24
|
-
nodes: |
|
|
25
|
-
https://arbitrum-goerli.publicnode.com
|
|
26
|
-
https://rpc.goerli.arbitrum.gateway.fm
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
max_fee_per_gas: 1.2base + 1gwei + random(1,200) # supported var_name=base
|
|
2
|
-
max_fee_per_gas_limit: 10.1gwei - random(1,10) # optional
|
|
3
|
-
max_priority_fee_per_gas: 1gwei + random(1,12)
|
|
4
|
-
gas: estimate + random(100,200) - 19 # supported var_name=estimate
|
|
5
|
-
value: balance - random(0.002eth,0.0025eth) + 11gwei # supported var_name=balance. If 'balance' is used, value=calc(value) - gas*max_fee_per_gas
|
|
6
|
-
value_min_limit: 0.001eth + random(1,2) - 7
|
|
7
|
-
addresses_map: |
|
|
8
|
-
0x10fd602Bff689e64D4720D1DCCCD3494f1f16623 0x58487485c3858109f5A37e42546FE87473f79a4b
|
|
9
|
-
0x97C77B548aE0d4925F5C201220fC6d8996424309 0x7EdF3b8579c21A8820b4C0B8352541c1CE04045f # can comment here
|
|
10
|
-
# and here
|
|
11
|
-
#addresses_from_file: ~/path/from.txt
|
|
12
|
-
#addresses_to_file: ~/path/to.txt
|
|
13
|
-
delay: random(1.123,10) + 1 # secs
|
|
14
|
-
#private_keys: |
|
|
15
|
-
# 0x7bb5b9c0ba991275f84b796b4d25fd3a8d7320911f50fade85410e7a2b000632
|
|
16
|
-
# 0xb7e0b671e176b04ceb0897a698d34771bfe9acf29273dc52a141be6e97145a00
|
|
17
|
-
private_keys_file: ~/path/private_keys.txt
|
|
18
|
-
log_debug: /path/to/file_debug.log # optional
|
|
19
|
-
log_info: /path/to/file_info.log # optional
|
|
20
|
-
round_ndigits: 6
|
|
21
|
-
chain_id: 421613
|
|
22
|
-
nodes: |
|
|
23
|
-
https://arbitrum-goerli.publicnode.com
|
|
24
|
-
https://rpc.goerli.arbitrum.gateway.fm
|
mm_eth/types.py
DELETED
mm_eth-0.2.4.dist-info/RECORD
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
mm_eth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
mm_eth/abi.py,sha256=Qf-QOsR9QexyQM9XWKNeTMkRarIL3XQJbaDbJ8ifMrw,4856
|
|
3
|
-
mm_eth/account.py,sha256=IsajQ7156-CxqRFt2ntv_3nJKwi6tCZz0TmtjUCgmIg,2038
|
|
4
|
-
mm_eth/anvil.py,sha256=98RCfI7dEpxFBTV6UErYvubWVP3n0ctUFn1--4kZ84U,1603
|
|
5
|
-
mm_eth/deploy.py,sha256=SB3ruY808_5UnG8kHR34uVP66P3zOWZu0ImKD7UUv2s,691
|
|
6
|
-
mm_eth/ens.py,sha256=WMxqC1v3zwDDuLH_oWekm22qrNYxCNcvZumQMT7SYds,623
|
|
7
|
-
mm_eth/erc20.py,sha256=m0_yYzPYgOBx0oh4V330XGjRQBjMd5XlWhRL5qChvQE,6866
|
|
8
|
-
mm_eth/ethernodes.py,sha256=9y_poTmFUj6cnWaT9mtfc6S9lAfVXTwLGRqxMQ8hT0Y,3080
|
|
9
|
-
mm_eth/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
mm_eth/rpc.py,sha256=F0jBzYw4wkh9LKwynXrzyhA08r5JTGrYAbwTH6C2Z7w,13872
|
|
11
|
-
mm_eth/solc.py,sha256=dYRvT8PjZlLDZhNsc_-0790Eug_ZwU2G-iBfIdGj6wQ,1071
|
|
12
|
-
mm_eth/tx.py,sha256=J5Wky8rmV6NlMFmAYF4997PscRYlUdkYFpEldH3BCNg,4014
|
|
13
|
-
mm_eth/types.py,sha256=vXXP5Dc72BpHv5tsyws0KDZebG1W1-5HH0UjL7N2Mgc,113
|
|
14
|
-
mm_eth/utils.py,sha256=NICgROKU5ZTrkY6nlSDLHjbbpYYswLoofyc3ozPdwBs,7804
|
|
15
|
-
mm_eth/vault.py,sha256=h8NyiOQh5YFskh1lZA3KyvnJUnxl9769ME2ChplG0CM,1477
|
|
16
|
-
mm_eth/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
mm_eth/cli/calcs.py,sha256=yDx3VgFmCLRYWpZVqyk_-mXIgTVFDPKGTktx-7H2XDw,4426
|
|
18
|
-
mm_eth/cli/cli.py,sha256=FfEgosWXa9gIGRuwSbPILvaDQ2Crh9hqTU50CqatvgY,8956
|
|
19
|
-
mm_eth/cli/cli_utils.py,sha256=jkw2hDzR2hrYKmY8egR4RicLHe4RFjC7yhShtA0HzhQ,3682
|
|
20
|
-
mm_eth/cli/print_helpers.py,sha256=yOiOFjTKloumwf07AqNIHQswUo8t0yuT9bpeGBGl60Q,1470
|
|
21
|
-
mm_eth/cli/rpc_helpers.py,sha256=tAJBUHwpH0jPvg0Hrm-cwpOrpp9GUb91e4ZdwixNUQg,4723
|
|
22
|
-
mm_eth/cli/validators.py,sha256=CWOXorI2HGajhLvQ354d2cCl5S3JC7tKUxWmmVn6j4Y,2417
|
|
23
|
-
mm_eth/cli/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
mm_eth/cli/cmd/balance_cmd.py,sha256=SjRSbGF8QFMBHncEyzPdVUi_rjOwNW2wxfbFsRBV2A0,2097
|
|
25
|
-
mm_eth/cli/cmd/balances_cmd.py,sha256=3kxgHBmMDbzt0E7iaNaVaP_YaQArttlHaOfnB2usez8,4214
|
|
26
|
-
mm_eth/cli/cmd/call_contract_cmd.py,sha256=T6IHzxHuymJsEog2y7oMKNiHahip_W3FIk0adH4T0W4,1170
|
|
27
|
-
mm_eth/cli/cmd/config_example_cmd.py,sha256=hMfrFxjIP0xZllJRRxi99qhF8tzJI3lrp-XudFEWF1g,270
|
|
28
|
-
mm_eth/cli/cmd/deploy_cmd.py,sha256=nFJExEcKbm-6pE-r-XDY6pExOJywSSK7fN_gMZs9hc4,1173
|
|
29
|
-
mm_eth/cli/cmd/encode_input_data_cmd.py,sha256=9UQ1MKPEFQJ8j_COsP3KGKhwOf9tT3feBezI8vvxTlw,267
|
|
30
|
-
mm_eth/cli/cmd/mnemonic_cmd.py,sha256=Mb0H0inSNCa93GEPxGYQi7BnPe11mnLjnspfe7h54I4,972
|
|
31
|
-
mm_eth/cli/cmd/node_cmd.py,sha256=mUqixPGNHzuKCJvk1Fd5VaUGumpbR2AE7raGmXZscg4,1943
|
|
32
|
-
mm_eth/cli/cmd/private_key_cmd.py,sha256=Fv_2OLog1h32pIP7PJITwl_pHdy3BXvaDRcXZsxY1xo,241
|
|
33
|
-
mm_eth/cli/cmd/rpc_cmd.py,sha256=02q82YqgbPezfEBmV_QBCIeNReE7ktkPych8Xr9ann8,2186
|
|
34
|
-
mm_eth/cli/cmd/send_contract_cmd.py,sha256=cGVP1hZOp64e5rN5uCsA2QkG5NIN9Car_2IZDWh4RvA,9023
|
|
35
|
-
mm_eth/cli/cmd/solc_cmd.py,sha256=tBpeMdPfGs2iQIMaIJAAhMh1a3KyXHwyninfXPVpsgs,677
|
|
36
|
-
mm_eth/cli/cmd/token_cmd.py,sha256=4y6ZQpLOJ33_iNuKpm9tZXh4RntWhmPUcizgaNNBzaw,1102
|
|
37
|
-
mm_eth/cli/cmd/transfer_erc20_cmd.py,sha256=fNja8Krx5OLzEvZypt1d5CogrN9BsLHVG48DI1W0twM,10195
|
|
38
|
-
mm_eth/cli/cmd/transfer_eth_cmd.py,sha256=_LgSGaFD0GbzODA3OfIUXjKGFSNBHltNM0fcgDbnEN8,9369
|
|
39
|
-
mm_eth/cli/cmd/vault_cmd.py,sha256=rRTclz0U6N_87KFsssdvZhi3_f6tmkHiYxMsIoVeBGc,532
|
|
40
|
-
mm_eth/cli/config_examples/balances.yml,sha256=fpXJfoOSqOrkoWpqO7-HrTTb5OBs9PM-PpZ1ulqWUnY,399
|
|
41
|
-
mm_eth/cli/config_examples/call_contract.yml,sha256=E0XuWuBnbhyTYfxNqaoxH6Cy7UCYqMLDwoEu_4OSV3M,233
|
|
42
|
-
mm_eth/cli/config_examples/transfer_erc20.yml,sha256=mCUpUfqzZjTvst8kqd3EGzJY0S7cr48ySqS6yZhzLdI,1324
|
|
43
|
-
mm_eth/cli/config_examples/transfer_eth.yml,sha256=i4hh3-LTcpl7JsrSuuM6gDi23B5ZnCeEnaYazQO3bzQ,1181
|
|
44
|
-
mm_eth-0.2.4.dist-info/METADATA,sha256=XnqJ7NqhVE7Ck7We-qN96VS8DCLPjMfxlSR3MpvGZMs,228
|
|
45
|
-
mm_eth-0.2.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
46
|
-
mm_eth-0.2.4.dist-info/entry_points.txt,sha256=aGhpsozl8NIrkuUcX5fSgURCcDhr3ShUdeTSIrJq4oc,46
|
|
47
|
-
mm_eth-0.2.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|