Skip to content

Commit

Permalink
Fix get_starknet_account
Browse files Browse the repository at this point in the history
  • Loading branch information
ClementWalter committed Sep 13, 2023
1 parent ce956a6 commit 54c402e
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 20 deletions.
65 changes: 47 additions & 18 deletions packages/starksheet-cairo/notebooks/sheets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import itertools
import json
import logging
import math
import time
from pathlib import Path

Expand Down Expand Up @@ -94,6 +95,9 @@ def get_contract_calls(contract_address):
_calls = response.json()["data"]["calls"]["edges"]
page_info = response.json()["data"]["calls"]["pageInfo"]
if not _calls:
timestamps[contract_address] = math.floor(
pd.Timestamp.now(tz="UTC").timestamp()
)
return []

timestamps[contract_address] = _calls[-1]["node"]["timestamp"]
Expand All @@ -107,33 +111,57 @@ def get_contract_calls(contract_address):
page_info = response.json()["data"]["calls"]["pageInfo"]
timestamps[contract_address] = _calls[-1]["node"]["timestamp"]

timestamps[contract_address] = math.floor(
pd.Timestamp.now(tz="UTC").timestamp()
)
return [call["node"] for call in _calls]

previous_calls = (
pd.read_csv(
"calls.csv",
dtype={"contract_identifier": str},
parse_dates=["timestamp"],
)
if Path("calls.csv").is_file()
else pd.DataFrame(
columns=header,
dtype={"contract_identifier": str},
).astype({"timestamp": int})
)
logger.info(
f"📈 sheets up to "
f"{pd.Timestamp(max(timestamps.values()), unit='s', tz='UTC').tz_convert(tz='Europe/Paris')}: "
f"{len(previous_calls)}"
)

calls = (
pd.concat(
[
pd.DataFrame(
itertools.chain.from_iterable(
[get_contract_calls(address) for address in contract_addresses]
)
),
(
pd.read_csv("calls.csv")
if Path("calls.csv").is_file()
else pd.DataFrame(columns=header).astype({"timestamp": int})
pd.DataFrame(
itertools.chain.from_iterable(
[
get_contract_calls(address)
for address in contract_addresses
]
)
)
.reindex(header, axis=1)
.loc[lambda df: df.selector_name == "addSheet"]
.astype({"timestamp": "datetime64[s]", "contract_identifier": str})
.assign(
contract_identifier=lambda df: df.contract_identifier.str.extract(
r"(v\d+)"
),
class_hash=lambda df: get_class_hashes(
df.caller_address.tolist()
),
)
),
previous_calls,
],
ignore_index=True,
)
.reindex(header, axis=1)
.loc[lambda df: df.selector_name == "addSheet"]
.astype({"timestamp": "datetime64[s]", "contract_identifier": str})
.assign(
contract_identifier=lambda df: df.contract_identifier.str.extract(
r"(v\d+)"
),
class_hash=lambda df: get_class_hashes(df.caller_address.tolist()),
)
.sort_values("timestamp", ascending=False)
.drop_duplicates("transaction_hash")
)
Expand All @@ -145,6 +173,7 @@ def get_contract_calls(contract_address):
def get_class_hashes(contract_addresses):
labels = {
"0x025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918": "Argent",
"0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003": "Argent",
"0x03131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e": "Braavos",
}
known_classes = (
Expand Down Expand Up @@ -189,7 +218,7 @@ def get_clash_hash(contract_address):

# %% Fetch data
calls = get_contracts_calls(
[
contract_addresses=[
"0x028850a764600d53b2009b17428ae9eb980a4c4ea930a69ed8668048ef082a04",
"0x076a028b19d27310f5e9f941041ae4a3a52c0e0024d593ddcb0d34e1dcd24af1",
"0x071d48483dcfa86718a717f57cf99a72ff8198b4538a6edccd955312fe624747",
Expand Down
4 changes: 2 additions & 2 deletions packages/starksheet-cairo/utils/starknet.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ async def get_starknet_account(
or err.message
== "Client failed with code 21: Invalid message selector."
or "StarknetErrorCode.ENTRY_POINT_NOT_FOUND_IN_CONTRACT" in err.message
or err.message
== "Client failed with code -32603: Internal error: invalid entry point."
or err.message.find("Client failed with code -32603: Internal error:")
!= -1
):
continue
else:
Expand Down

0 comments on commit 54c402e

Please sign in to comment.