kopia lustrzana https://github.com/bugout-dev/moonstream
added tokenAddress
rodzic
e82e255709
commit
5c8d003079
|
@ -55,11 +55,12 @@ def handle_initdb(args: argparse.Namespace) -> None:
|
|||
|
||||
def handle_materialize(args: argparse.Namespace) -> None:
|
||||
|
||||
if args.start is None or args.end is None:
|
||||
raise ValueError("Set --end --start")
|
||||
|
||||
bounds: Optional[BlockBounds] = None
|
||||
if args.start is not None:
|
||||
bounds = BlockBounds(starting_block=args.start, ending_block=args.end)
|
||||
elif args.end is not None:
|
||||
raise ValueError("You cannot set --end unless you also set --start")
|
||||
|
||||
logger.info(f"Materializing NFT events to datastore: {args.datastore}")
|
||||
logger.info(f"Block bounds: {bounds}")
|
||||
|
@ -78,8 +79,8 @@ def handle_materialize(args: argparse.Namespace) -> None:
|
|||
moonstream_datastore,
|
||||
label_model,
|
||||
start_block=bounds.starting_block,
|
||||
end_block=bounds.starting_block + 500000,
|
||||
batch_size=10000,
|
||||
end_block=bounds.ending_block,
|
||||
batch_size=args.batch_size,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ class NftTransaction:
|
|||
@dataclass
|
||||
class NftApprovalEvent:
|
||||
blockchain_type: str
|
||||
token_address: str
|
||||
owner: str
|
||||
approved: str
|
||||
token_id: str
|
||||
|
@ -44,6 +45,7 @@ class NftApprovalEvent:
|
|||
@dataclass
|
||||
class NftApprovalForAllEvent:
|
||||
blockchain_type: str
|
||||
token_address: str
|
||||
owner: str
|
||||
approved: str
|
||||
operator: str
|
||||
|
@ -54,6 +56,7 @@ class NftApprovalForAllEvent:
|
|||
@dataclass
|
||||
class NftTransferEvent:
|
||||
blockchain_type: str
|
||||
token_address: str
|
||||
from_address: str
|
||||
to_address: str
|
||||
token_id: str
|
||||
|
@ -64,6 +67,7 @@ class NftTransferEvent:
|
|||
@dataclass
|
||||
class Erc20TransferEvent:
|
||||
blockchain_type: str
|
||||
token_address: str
|
||||
from_address: str
|
||||
to_address: str
|
||||
value: int
|
||||
|
|
|
@ -49,6 +49,7 @@ def create_approvals_table_query(tabel_name) -> str:
|
|||
CREATE TABLE IF NOT EXISTS {tabel_name}
|
||||
(
|
||||
blockchainType TEXT NOT NULL,
|
||||
tokenAddress TEXT NOT NULL,
|
||||
owner TEXT NOT NULL,
|
||||
approved TEXT NOT NULL,
|
||||
tokenId TEXT NOT NULL,
|
||||
|
@ -65,6 +66,7 @@ def create_approval_for_all_table_query(tabel_name) -> str:
|
|||
CREATE TABLE IF NOT EXISTS {tabel_name}
|
||||
(
|
||||
blockchainType TEXT NOT NULL,
|
||||
tokenAddress TEXT NOT NULL,
|
||||
owner TEXT NOT NULL,
|
||||
approved BOOL NOT NULL,
|
||||
operator TEXT NOT NULL,
|
||||
|
@ -81,6 +83,7 @@ def create_transfers_table_query(tabel_name) -> str:
|
|||
CREATE TABLE IF NOT EXISTS {tabel_name}
|
||||
(
|
||||
blockchainType TEXT NOT NULL,
|
||||
tokenAddress TEXT NOT NULL,
|
||||
from_address TEXT NOT NULL,
|
||||
to_address TEXT NOT NULL,
|
||||
tokenId TEXT NOT NULL,
|
||||
|
@ -97,6 +100,7 @@ def create_erc20_transfers_table_query(tabel_name) -> str:
|
|||
CREATE TABLE IF NOT EXISTS {tabel_name}
|
||||
(
|
||||
blockchainType TEXT NOT NULL,
|
||||
tokenAddress TEXT NOT NULL,
|
||||
from_address TEXT NOT NULL,
|
||||
to_address TEXT NOT NULL,
|
||||
value INTEGER NOT NULL,
|
||||
|
@ -139,6 +143,7 @@ def insert_nft_approval_query(tabel_name):
|
|||
INSERT INTO {tabel_name}
|
||||
(
|
||||
blockchainType,
|
||||
tokenAddress,
|
||||
owner,
|
||||
approved,
|
||||
tokenId,
|
||||
|
@ -147,7 +152,7 @@ INSERT INTO {tabel_name}
|
|||
)
|
||||
VALUES
|
||||
(
|
||||
?,?,?,?,?,?
|
||||
?,?,?,?,?,?,?
|
||||
);
|
||||
"""
|
||||
return query
|
||||
|
@ -158,6 +163,7 @@ def insert_nft_approval_for_all_query(tabel_name):
|
|||
INSERT INTO {tabel_name}
|
||||
(
|
||||
blockchainType,
|
||||
tokenAddress,
|
||||
owner,
|
||||
approved,
|
||||
operator,
|
||||
|
@ -166,7 +172,7 @@ INSERT INTO {tabel_name}
|
|||
)
|
||||
VALUES
|
||||
(
|
||||
?,?,?,?,?,?
|
||||
?,?,?,?,?,?, ?
|
||||
);
|
||||
"""
|
||||
return query
|
||||
|
@ -177,6 +183,7 @@ def insert_nft_transfers_query(tabel_name):
|
|||
INSERT INTO {tabel_name}
|
||||
(
|
||||
blockchainType,
|
||||
tokenAddress,
|
||||
from_address,
|
||||
to_address,
|
||||
tokenId,
|
||||
|
@ -186,7 +193,7 @@ INSERT INTO {tabel_name}
|
|||
VALUES
|
||||
|
||||
(
|
||||
?,?,?,?,?,?
|
||||
?,?,?,?,?,?,?
|
||||
);
|
||||
"""
|
||||
return query
|
||||
|
@ -197,6 +204,7 @@ def insert_erc20_transfer_query(tabel_name):
|
|||
INSERT INTO {tabel_name}
|
||||
(
|
||||
blockchainType,
|
||||
tokenAddress,
|
||||
from_address,
|
||||
to_address,
|
||||
value,
|
||||
|
@ -205,7 +213,7 @@ INSERT INTO {tabel_name}
|
|||
)
|
||||
VALUES
|
||||
(
|
||||
?,?,?,?,?,?
|
||||
?,?,?,?,?,?,?
|
||||
);
|
||||
"""
|
||||
return query
|
||||
|
@ -245,6 +253,7 @@ def nft_approval_to_tuple(nft_approval: NftApprovalEvent) -> Tuple[Any]:
|
|||
"""
|
||||
return (
|
||||
nft_approval.blockchain_type,
|
||||
nft_approval.token_address,
|
||||
nft_approval.owner,
|
||||
nft_approval.approved,
|
||||
str(nft_approval.token_id),
|
||||
|
@ -261,6 +270,7 @@ def nft_approval_for_all_to_tuple(
|
|||
"""
|
||||
return (
|
||||
nft_approval_for_all.blockchain_type,
|
||||
nft_approval_for_all.token_address,
|
||||
nft_approval_for_all.owner,
|
||||
nft_approval_for_all.approved,
|
||||
nft_approval_for_all.operator,
|
||||
|
@ -275,6 +285,7 @@ def nft_transfer_to_tuple(nft_transfer: NftTransferEvent) -> Tuple[Any]:
|
|||
"""
|
||||
return (
|
||||
nft_transfer.blockchain_type,
|
||||
nft_transfer.token_address,
|
||||
nft_transfer.from_address,
|
||||
nft_transfer.to_address,
|
||||
str(nft_transfer.token_id),
|
||||
|
@ -291,6 +302,7 @@ def erc20_nft_transfer_to_tuple(
|
|||
"""
|
||||
return (
|
||||
erc20_nft_transfer.blockchain_type,
|
||||
erc20_nft_transfer.token_address,
|
||||
erc20_nft_transfer.from_address,
|
||||
erc20_nft_transfer.to_address,
|
||||
str(erc20_nft_transfer.value),
|
||||
|
|
|
@ -27,6 +27,7 @@ logging.basicConfig(level=logging.INFO)
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
ERC721_LABEL = "erc721"
|
||||
ERC20_LABEL = "test-erc20"
|
||||
|
||||
|
||||
def _get_last_labeled_erc721_block(
|
||||
|
@ -95,6 +96,7 @@ def _parse_transfer_event(
|
|||
if label_model.label_data["args"].get("tokenId") is not None:
|
||||
return NftTransferEvent(
|
||||
blockchain_type=blockchain_type,
|
||||
token_address=label_model.address,
|
||||
from_address=label_model.label_data["args"]["from"],
|
||||
to_address=label_model.label_data["args"]["to"],
|
||||
token_id=label_model.label_data["args"]["tokenId"],
|
||||
|
@ -104,6 +106,7 @@ def _parse_transfer_event(
|
|||
else:
|
||||
return Erc20TransferEvent(
|
||||
blockchain_type=blockchain_type,
|
||||
token_address=label_model.address,
|
||||
from_address=label_model.label_data["args"]["from"],
|
||||
to_address=label_model.label_data["args"]["to"],
|
||||
value=label_model.label_data["args"]["value"],
|
||||
|
@ -128,6 +131,7 @@ def _parse_approval_event(
|
|||
blockchain_type = "polygon"
|
||||
return NftApprovalEvent(
|
||||
blockchain_type=blockchain_type,
|
||||
token_address=label_model.address,
|
||||
owner=label_model.label_data["args"]["owner"],
|
||||
approved=label_model.label_data["args"]["approved"],
|
||||
token_id=label_model.label_data["args"]["tokenId"],
|
||||
|
@ -152,6 +156,7 @@ def _parse_approval_for_all_event(
|
|||
blockchain_type = "polygon"
|
||||
return NftApprovalForAllEvent(
|
||||
blockchain_type=blockchain_type,
|
||||
token_address=label_model.address,
|
||||
owner=label_model.label_data["args"]["owner"],
|
||||
operator=label_model.label_data["args"]["operator"],
|
||||
approved=label_model.label_data["args"]["approved"],
|
||||
|
@ -196,7 +201,9 @@ def crawl_erc721_labels(
|
|||
and_(
|
||||
label_model.block_number >= current_block,
|
||||
label_model.block_number <= batch_end,
|
||||
label_model.label == ERC721_LABEL,
|
||||
or_(
|
||||
label_model.label == ERC721_LABEL, label_model.label == ERC20_LABEL
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue