naeural-client 3.1.0__py3-none-any.whl → 3.1.2__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.
- naeural_client/_ver.py +1 -1
- naeural_client/bc/evm.py +79 -11
- naeural_client/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt +22 -0
- naeural_client/utils/config.py +8 -2
- {naeural_client-3.1.0.dist-info → naeural_client-3.1.2.dist-info}/METADATA +1 -1
- {naeural_client-3.1.0.dist-info → naeural_client-3.1.2.dist-info}/RECORD +9 -8
- {naeural_client-3.1.0.dist-info → naeural_client-3.1.2.dist-info}/WHEEL +0 -0
- {naeural_client-3.1.0.dist-info → naeural_client-3.1.2.dist-info}/entry_points.txt +0 -0
- {naeural_client-3.1.0.dist-info → naeural_client-3.1.2.dist-info}/licenses/LICENSE +0 -0
naeural_client/_ver.py
CHANGED
naeural_client/bc/evm.py
CHANGED
@@ -3,6 +3,8 @@ import os
|
|
3
3
|
|
4
4
|
from collections import namedtuple
|
5
5
|
|
6
|
+
from datetime import timezone, datetime
|
7
|
+
|
6
8
|
from eth_account import Account
|
7
9
|
from eth_utils import keccak, to_checksum_address
|
8
10
|
from eth_account.messages import encode_defunct
|
@@ -14,7 +16,8 @@ EE_VPN_IMPL = str(os.environ.get(EE_VPN_IMPL_ENV_KEY, False)).lower() in [
|
|
14
16
|
]
|
15
17
|
|
16
18
|
Web3Vars = namedtuple("Web3Vars", [
|
17
|
-
"w3", "rpc_url", "nd_contract_address", "r1_contract_address", "network"
|
19
|
+
"w3", "rpc_url", "nd_contract_address", "r1_contract_address", "network",
|
20
|
+
"genesis_date", "epoch_length_seconds"
|
18
21
|
])
|
19
22
|
|
20
23
|
|
@@ -224,22 +227,87 @@ class _EVMMixin:
|
|
224
227
|
if network is None:
|
225
228
|
network = self.evm_network
|
226
229
|
w3 = self.web3
|
227
|
-
rpc_url = self.network_rpc
|
228
|
-
nd_contract_address = self.nd_contract_address
|
229
|
-
r1_contract_address = self.r1_contract_address
|
230
230
|
else:
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
231
|
+
w3 = None
|
232
|
+
|
233
|
+
network_data = self.get_network_data(network)
|
234
|
+
nd_contract_address = network_data[dAuth.EvmNetData.DAUTH_ND_ADDR_KEY]
|
235
|
+
rpc_url = network_data[dAuth.EvmNetData.DAUTH_RPC_KEY]
|
236
|
+
r1_contract_address = network_data[dAuth.EvmNetData.DAUTH_R1_ADDR_KEY]
|
237
|
+
str_genesis_date = network_data[dAuth.EvmNetData.EE_GENESIS_EPOCH_DATE_KEY]
|
238
|
+
genesis_date = self.log.str_to_date(str_genesis_date).replace(tzinfo=timezone.utc)
|
239
|
+
ep_sec = (
|
240
|
+
network_data[dAuth.EvmNetData.EE_EPOCH_INTERVAL_SECONDS_KEY] *
|
241
|
+
network_data[dAuth.EvmNetData.EE_EPOCH_INTERVALS_KEY]
|
242
|
+
)
|
243
|
+
|
244
|
+
if w3 is None:
|
245
|
+
w3 = Web3(Web3.HTTPProvider(rpc_url))
|
236
246
|
self.P(f"Created temporary Web3 for {network=} via {rpc_url=}...", verbosity=2)
|
247
|
+
#end if
|
248
|
+
|
237
249
|
result = Web3Vars(
|
238
|
-
w3=w3,
|
239
|
-
|
250
|
+
w3=w3,
|
251
|
+
rpc_url=rpc_url,
|
252
|
+
nd_contract_address=nd_contract_address,
|
253
|
+
r1_contract_address=r1_contract_address,
|
254
|
+
network=network,
|
255
|
+
genesis_date=genesis_date,
|
256
|
+
epoch_length_seconds=ep_sec
|
240
257
|
)
|
241
258
|
return result
|
242
259
|
|
260
|
+
# Epoch handling
|
261
|
+
if True:
|
262
|
+
def get_epoch_id(self, date : any, network: str = None):
|
263
|
+
"""
|
264
|
+
Given a date as string or datetime, returns the epoch id - ie the number of days since
|
265
|
+
the genesis epoch.
|
266
|
+
|
267
|
+
Parameters
|
268
|
+
----------
|
269
|
+
date : str or date
|
270
|
+
The date as string that will be converted to epoch id.
|
271
|
+
"""
|
272
|
+
w3vars = self._get_web3_vars(network)
|
273
|
+
if isinstance(date, str):
|
274
|
+
# remove milliseconds from string
|
275
|
+
date = date.split('.')[0]
|
276
|
+
date = self.log.str_to_date(date)
|
277
|
+
# again this is correct to replace in order to have a timezone aware date
|
278
|
+
# and not consider the local timezone. the `date` string naive should be UTC offsetted
|
279
|
+
date = date.replace(tzinfo=timezone.utc)
|
280
|
+
# compute difference between date and self.__genesis_date in seconds
|
281
|
+
elapsed_seconds = (date - w3vars.genesis_date).total_seconds()
|
282
|
+
|
283
|
+
# the epoch id starts from 0 - the genesis epoch
|
284
|
+
# the epoch id is the number of days since the genesis epoch
|
285
|
+
# # TODO: change this if we move to start-from-one offset by adding +1
|
286
|
+
# OBS: epoch always ends at AB:CD:59 no matter what
|
287
|
+
epoch_id = int(elapsed_seconds / w3vars.epoch_length_seconds)
|
288
|
+
return epoch_id
|
289
|
+
|
290
|
+
|
291
|
+
def get_current_date(self):
|
292
|
+
# we convert local time to UTC time
|
293
|
+
return datetime.now(timezone.utc)
|
294
|
+
|
295
|
+
|
296
|
+
def get_time_epoch(self):
|
297
|
+
"""
|
298
|
+
Returns the current epoch id.
|
299
|
+
"""
|
300
|
+
return self.get_epoch_id(self.get_current_date())
|
301
|
+
|
302
|
+
|
303
|
+
def get_current_epoch(self):
|
304
|
+
"""
|
305
|
+
Returns the current epoch id using `get_time_epoch`.
|
306
|
+
"""
|
307
|
+
return self.get_time_epoch()
|
308
|
+
|
309
|
+
## End Epoch handling
|
310
|
+
|
243
311
|
|
244
312
|
# EVM signing methods (internal)
|
245
313
|
if True:
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
3
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
4
|
+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
5
|
+
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
6
|
+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
7
|
+
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
8
|
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
9
|
+
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
10
|
+
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
11
|
+
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
12
|
+
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
13
|
+
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
14
|
+
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
15
|
+
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
16
|
+
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
17
|
+
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
18
|
+
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
19
|
+
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
20
|
+
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
21
|
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
22
|
+
-----END CERTIFICATE-----
|
naeural_client/utils/config.py
CHANGED
@@ -88,6 +88,7 @@ def get_user_folder():
|
|
88
88
|
"""
|
89
89
|
return BaseLogger.get_user_folder(as_str=False, include_sdk_home=True)
|
90
90
|
|
91
|
+
|
91
92
|
def get_user_config_file():
|
92
93
|
"""
|
93
94
|
Returns the user configuration file.
|
@@ -95,11 +96,10 @@ def get_user_config_file():
|
|
95
96
|
return get_user_folder() / CONFIG_FILE
|
96
97
|
|
97
98
|
|
98
|
-
|
99
|
-
|
100
99
|
def get_network():
|
101
100
|
return os.environ.get(dAuth.DAUTH_NET_ENV_KEY, dAuth.DAUTH_SDK_NET_DEFAULT)
|
102
101
|
|
102
|
+
|
103
103
|
def get_networks(args):
|
104
104
|
"""
|
105
105
|
Shows the network configuration.
|
@@ -185,6 +185,7 @@ def reset_config(*larg, keep_existing=False, **kwargs):
|
|
185
185
|
show_version()
|
186
186
|
return
|
187
187
|
|
188
|
+
|
188
189
|
def show_address(args):
|
189
190
|
"""
|
190
191
|
Displays the current client address.
|
@@ -196,6 +197,7 @@ def show_address(args):
|
|
196
197
|
log_with_color(f"{sess.get_client_address()}", color='b')
|
197
198
|
return
|
198
199
|
|
200
|
+
|
199
201
|
def show_version(silent=True):
|
200
202
|
from naeural_client import Session
|
201
203
|
sess = Session(
|
@@ -203,10 +205,14 @@ def show_version(silent=True):
|
|
203
205
|
)
|
204
206
|
|
205
207
|
user_folder = get_user_folder()
|
208
|
+
|
209
|
+
# TODO: get the epoch from the SDK - AFTER moving get_epoch_id from core
|
210
|
+
|
206
211
|
|
207
212
|
log_with_color(f"SDK folder: {user_folder}", color='b')
|
208
213
|
log_with_color(f"SDK version: {version}", color='b')
|
209
214
|
log_with_color(f"Ratio1 network: {get_network()}", color='b')
|
215
|
+
log_with_color(f"Network Epoch: {sess.bc_engine.get_current_epoch()}", color='b')
|
210
216
|
log_with_color(f"SDK addr: {sess.get_client_address()}", color='b')
|
211
217
|
log_with_color(f"SDK ETH addr: {sess.bc_engine.eth_address}", color='b')
|
212
218
|
return
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: naeural_client
|
3
|
-
Version: 3.1.
|
3
|
+
Version: 3.1.2
|
4
4
|
Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
|
5
5
|
Project-URL: Homepage, https://github.com/NaeuralEdgeProtocol/naeural_client
|
6
6
|
Project-URL: Bug Tracker, https://github.com/NaeuralEdgeProtocol/naeural_client/issues
|
@@ -1,5 +1,5 @@
|
|
1
1
|
naeural_client/__init__.py,sha256=YimqgDbjLuywsf8zCWE0EaUXH4MBUrqLxt0TDV558hQ,632
|
2
|
-
naeural_client/_ver.py,sha256=
|
2
|
+
naeural_client/_ver.py,sha256=oELIU7G9GJjuV-9BiL-8ZqllYO1e53-SZBsHBYMM1W0,330
|
3
3
|
naeural_client/base_decentra_object.py,sha256=C4iwZTkhKNBS4VHlJs5DfElRYLo4Q9l1V1DNVSk1fyQ,4412
|
4
4
|
naeural_client/plugins_manager_mixin.py,sha256=X1JdGLDz0gN1rPnTN_5mJXR8JmqoBFQISJXmPR9yvCo,11106
|
5
5
|
naeural_client/base/__init__.py,sha256=hACh83_cIv7-PwYMM3bQm2IBmNqiHw-3PAfDfAEKz9A,259
|
@@ -17,8 +17,9 @@ naeural_client/bc/__init__.py,sha256=FQj23D1PrY06NUOARiKQi4cdj0-VxnoYgYDEht8lpr8
|
|
17
17
|
naeural_client/bc/base.py,sha256=CNFhPYMj45oVoP0xU9w8VzLUOBHgSljj8pFIzxjUwLg,44568
|
18
18
|
naeural_client/bc/chain.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
naeural_client/bc/ec.py,sha256=FwlkWmJvQ9aHuf_BZX1CWSUAxw6OZ9jBparLIWcs_e4,18933
|
20
|
-
naeural_client/bc/evm.py,sha256=
|
20
|
+
naeural_client/bc/evm.py,sha256=8_9IBum2wpw0SwWl5xBceU9p-9o4zyF6JBIJJiMr-a8,26022
|
21
21
|
naeural_client/certs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
naeural_client/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
|
22
23
|
naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
|
23
24
|
naeural_client/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
|
24
25
|
naeural_client/cli/README.md,sha256=WPdI_EjzAbUW1aPyj1sSR8rLydcJKZtoiaEtklQrjHo,74
|
@@ -93,11 +94,11 @@ naeural_client/logging/tzlocal/win32.py,sha256=zBoj0vFVrGhnCm_f7xmYzGym4-fV-4Ij2
|
|
93
94
|
naeural_client/logging/tzlocal/windows_tz.py,sha256=Sv9okktjZJfRGGUOOppsvQuX_eXyXUxkSKCAFmWT9Hw,34203
|
94
95
|
naeural_client/utils/__init__.py,sha256=mAnke3-MeRzz3nhQvhuHqLnpaaCSmDxicd7Ck9uwpmI,77
|
95
96
|
naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_LtMyCY,1072
|
96
|
-
naeural_client/utils/config.py,sha256=
|
97
|
+
naeural_client/utils/config.py,sha256=QamxSnF6rqw91VhMWZoeO1EYUKjqWa-D8VFC1tIzTTM,10517
|
97
98
|
naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
|
98
99
|
naeural_client/utils/oracle_sync/oracle_tester.py,sha256=X-923ccjkr6_kzbbiuAAcWSIhMtBDOH2VURjTh55apQ,27235
|
99
|
-
naeural_client-3.1.
|
100
|
-
naeural_client-3.1.
|
101
|
-
naeural_client-3.1.
|
102
|
-
naeural_client-3.1.
|
103
|
-
naeural_client-3.1.
|
100
|
+
naeural_client-3.1.2.dist-info/METADATA,sha256=Bly9lKoB7F77fKWrAwuIgGQTY-rnahBje6pcdPXCvmU,12353
|
101
|
+
naeural_client-3.1.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
102
|
+
naeural_client-3.1.2.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
|
103
|
+
naeural_client-3.1.2.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
|
104
|
+
naeural_client-3.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|