kopia lustrzana https://github.com/bugout-dev/moonstream
Update db module.
rodzic
41787fafaa
commit
911f7e7ebe
|
@ -32,6 +32,9 @@ from .models import (
|
||||||
PolygonBlock,
|
PolygonBlock,
|
||||||
PolygonLabel,
|
PolygonLabel,
|
||||||
PolygonTransaction,
|
PolygonTransaction,
|
||||||
|
ProofOfPlayApexBlock,
|
||||||
|
ProofOfPlayApexLabel,
|
||||||
|
ProofOfPlayApexTransaction,
|
||||||
WyrmBlock,
|
WyrmBlock,
|
||||||
WyrmLabel,
|
WyrmLabel,
|
||||||
WyrmTransaction,
|
WyrmTransaction,
|
||||||
|
@ -74,6 +77,7 @@ class AvailableBlockchainType(Enum):
|
||||||
AVALANCHE_FUJI = "avalanche_fuji"
|
AVALANCHE_FUJI = "avalanche_fuji"
|
||||||
BLAST = "blast"
|
BLAST = "blast"
|
||||||
BLAST_SEPOLIA = "blast_sepolia"
|
BLAST_SEPOLIA = "blast_sepolia"
|
||||||
|
PROOF_OF_PLAY_APEX = "proof_of_play_apex"
|
||||||
|
|
||||||
|
|
||||||
def get_block_model(
|
def get_block_model(
|
||||||
|
@ -97,6 +101,7 @@ def get_block_model(
|
||||||
AvalancheFujiBlock,
|
AvalancheFujiBlock,
|
||||||
BlastBlock,
|
BlastBlock,
|
||||||
BlastSepoliaBlock,
|
BlastSepoliaBlock,
|
||||||
|
ProofOfPlayApexBlock,
|
||||||
]
|
]
|
||||||
]:
|
]:
|
||||||
"""
|
"""
|
||||||
|
@ -121,6 +126,7 @@ def get_block_model(
|
||||||
AvalancheFujiBlock,
|
AvalancheFujiBlock,
|
||||||
BlastBlock,
|
BlastBlock,
|
||||||
BlastSepoliaBlock,
|
BlastSepoliaBlock,
|
||||||
|
ProofOfPlayApexBlock,
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
if blockchain_type == AvailableBlockchainType.ETHEREUM:
|
if blockchain_type == AvailableBlockchainType.ETHEREUM:
|
||||||
|
@ -157,6 +163,8 @@ def get_block_model(
|
||||||
block_model = BlastBlock
|
block_model = BlastBlock
|
||||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||||
block_model = BlastSepoliaBlock
|
block_model = BlastSepoliaBlock
|
||||||
|
elif blockchain_type == AvailableBlockchainType.PROOF_OF_PLAY_APEX:
|
||||||
|
block_model = ProofOfPlayApexBlock
|
||||||
else:
|
else:
|
||||||
raise Exception("Unsupported blockchain type provided")
|
raise Exception("Unsupported blockchain type provided")
|
||||||
|
|
||||||
|
@ -184,6 +192,7 @@ def get_label_model(
|
||||||
AvalancheFujiLabel,
|
AvalancheFujiLabel,
|
||||||
BlastLabel,
|
BlastLabel,
|
||||||
BlastSepoliaLabel,
|
BlastSepoliaLabel,
|
||||||
|
ProofOfPlayApexLabel,
|
||||||
]
|
]
|
||||||
]:
|
]:
|
||||||
"""
|
"""
|
||||||
|
@ -208,6 +217,7 @@ def get_label_model(
|
||||||
AvalancheFujiLabel,
|
AvalancheFujiLabel,
|
||||||
BlastLabel,
|
BlastLabel,
|
||||||
BlastSepoliaLabel,
|
BlastSepoliaLabel,
|
||||||
|
ProofOfPlayApexLabel,
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
if blockchain_type == AvailableBlockchainType.ETHEREUM:
|
if blockchain_type == AvailableBlockchainType.ETHEREUM:
|
||||||
|
@ -244,6 +254,8 @@ def get_label_model(
|
||||||
label_model = BlastLabel
|
label_model = BlastLabel
|
||||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||||
label_model = BlastSepoliaLabel
|
label_model = BlastSepoliaLabel
|
||||||
|
elif blockchain_type == AvailableBlockchainType.PROOF_OF_PLAY_APEX:
|
||||||
|
label_model = ProofOfPlayApexLabel
|
||||||
else:
|
else:
|
||||||
raise Exception("Unsupported blockchain type provided")
|
raise Exception("Unsupported blockchain type provided")
|
||||||
|
|
||||||
|
@ -271,6 +283,7 @@ def get_transaction_model(
|
||||||
AvalancheFujiTransaction,
|
AvalancheFujiTransaction,
|
||||||
BlastTransaction,
|
BlastTransaction,
|
||||||
BlastSepoliaTransaction,
|
BlastSepoliaTransaction,
|
||||||
|
ProofOfPlayApexTransaction,
|
||||||
]
|
]
|
||||||
]:
|
]:
|
||||||
"""
|
"""
|
||||||
|
@ -295,6 +308,7 @@ def get_transaction_model(
|
||||||
AvalancheFujiTransaction,
|
AvalancheFujiTransaction,
|
||||||
BlastTransaction,
|
BlastTransaction,
|
||||||
BlastSepoliaTransaction,
|
BlastSepoliaTransaction,
|
||||||
|
ProofOfPlayApexTransaction,
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
if blockchain_type == AvailableBlockchainType.ETHEREUM:
|
if blockchain_type == AvailableBlockchainType.ETHEREUM:
|
||||||
|
@ -331,6 +345,8 @@ def get_transaction_model(
|
||||||
transaction_model = BlastTransaction
|
transaction_model = BlastTransaction
|
||||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||||
transaction_model = BlastSepoliaTransaction
|
transaction_model = BlastSepoliaTransaction
|
||||||
|
elif blockchain_type == AvailableBlockchainType.PROOF_OF_PLAY_APEX:
|
||||||
|
transaction_model = ProofOfPlayApexTransaction
|
||||||
else:
|
else:
|
||||||
raise Exception("Unsupported blockchain type provided")
|
raise Exception("Unsupported blockchain type provided")
|
||||||
|
|
||||||
|
|
|
@ -1936,6 +1936,120 @@ class BlastSepoliaLabel(Base): # type: ignore
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ProofOfPlayApexBlock(Base): # type: ignore
|
||||||
|
__tablename__ = "proof_of_play_apex_blocks"
|
||||||
|
|
||||||
|
block_number = Column(
|
||||||
|
BigInteger, primary_key=True, unique=True, nullable=False, index=True
|
||||||
|
)
|
||||||
|
difficulty = Column(BigInteger)
|
||||||
|
extra_data = Column(VARCHAR(128))
|
||||||
|
gas_limit = Column(BigInteger)
|
||||||
|
gas_used = Column(BigInteger)
|
||||||
|
base_fee_per_gas = Column(Numeric(precision=78, scale=0), nullable=True)
|
||||||
|
hash = Column(VARCHAR(256), index=True)
|
||||||
|
logs_bloom = Column(VARCHAR(1024))
|
||||||
|
miner = Column(VARCHAR(256))
|
||||||
|
nonce = Column(VARCHAR(256))
|
||||||
|
parent_hash = Column(VARCHAR(256))
|
||||||
|
receipt_root = Column(VARCHAR(256))
|
||||||
|
uncles = Column(VARCHAR(256))
|
||||||
|
size = Column(Integer)
|
||||||
|
state_root = Column(VARCHAR(256))
|
||||||
|
timestamp = Column(BigInteger, index=True)
|
||||||
|
total_difficulty = Column(VARCHAR(256))
|
||||||
|
transactions_root = Column(VARCHAR(256))
|
||||||
|
indexed_at = Column(
|
||||||
|
DateTime(timezone=True), server_default=utcnow(), nullable=False
|
||||||
|
)
|
||||||
|
|
||||||
|
sha3_uncles = Column(VARCHAR(256), nullable=True)
|
||||||
|
l1_block_number = Column(BigInteger, nullable=True)
|
||||||
|
send_count = Column(BigInteger, nullable=True)
|
||||||
|
send_root = Column(VARCHAR(256), nullable=True)
|
||||||
|
mix_hash = Column(VARCHAR(256), nullable=True)
|
||||||
|
|
||||||
|
|
||||||
|
class ProofOfPlayApexTransaction(Base): # type: ignore
|
||||||
|
__tablename__ = "proof_of_play_apex_transactions"
|
||||||
|
|
||||||
|
hash = Column(
|
||||||
|
VARCHAR(256), primary_key=True, unique=True, nullable=False, index=True
|
||||||
|
)
|
||||||
|
block_number = Column(
|
||||||
|
BigInteger,
|
||||||
|
ForeignKey("proof_of_play_apex_blocks.block_number", ondelete="CASCADE"),
|
||||||
|
nullable=False,
|
||||||
|
index=True,
|
||||||
|
)
|
||||||
|
from_address = Column(VARCHAR(256), index=True)
|
||||||
|
to_address = Column(VARCHAR(256), index=True)
|
||||||
|
gas = Column(Numeric(precision=78, scale=0), index=True)
|
||||||
|
gas_price = Column(Numeric(precision=78, scale=0), index=True)
|
||||||
|
max_fee_per_gas = Column(Numeric(precision=78, scale=0), nullable=True)
|
||||||
|
max_priority_fee_per_gas = Column(Numeric(precision=78, scale=0), nullable=True)
|
||||||
|
input = Column(Text)
|
||||||
|
nonce = Column(VARCHAR(256))
|
||||||
|
transaction_index = Column(BigInteger)
|
||||||
|
transaction_type = Column(Integer, nullable=True)
|
||||||
|
value = Column(Numeric(precision=78, scale=0), index=True)
|
||||||
|
|
||||||
|
indexed_at = Column(
|
||||||
|
DateTime(timezone=True), server_default=utcnow(), nullable=False
|
||||||
|
)
|
||||||
|
|
||||||
|
y_parity = Column(BigInteger, nullable=True)
|
||||||
|
|
||||||
|
|
||||||
|
class ProofOfPlayApexLabel(Base): # type: ignore
|
||||||
|
__tablename__ = "proof_of_play_apex_labels"
|
||||||
|
|
||||||
|
__table_args__ = (
|
||||||
|
Index(
|
||||||
|
"ix_proof_of_play_apex_labels_address_block_number",
|
||||||
|
"address",
|
||||||
|
"block_number",
|
||||||
|
unique=False,
|
||||||
|
),
|
||||||
|
Index(
|
||||||
|
"ix_proof_of_play_apex_labels_address_block_timestamp",
|
||||||
|
"address",
|
||||||
|
"block_timestamp",
|
||||||
|
unique=False,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
id = Column(
|
||||||
|
UUID(as_uuid=True),
|
||||||
|
primary_key=True,
|
||||||
|
default=uuid.uuid4,
|
||||||
|
unique=True,
|
||||||
|
nullable=False,
|
||||||
|
)
|
||||||
|
label = Column(VARCHAR(256), nullable=False, index=True)
|
||||||
|
block_number = Column(
|
||||||
|
BigInteger,
|
||||||
|
nullable=True,
|
||||||
|
index=True,
|
||||||
|
)
|
||||||
|
address = Column(
|
||||||
|
VARCHAR(256),
|
||||||
|
nullable=True,
|
||||||
|
index=True,
|
||||||
|
)
|
||||||
|
transaction_hash = Column(
|
||||||
|
VARCHAR(256),
|
||||||
|
nullable=True,
|
||||||
|
index=True,
|
||||||
|
)
|
||||||
|
label_data = Column(JSONB, nullable=True)
|
||||||
|
block_timestamp = Column(BigInteger, index=True)
|
||||||
|
log_index = Column(Integer, nullable=True)
|
||||||
|
created_at = Column(
|
||||||
|
DateTime(timezone=True), server_default=utcnow(), nullable=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ESDFunctionSignature(Base): # type: ignore
|
class ESDFunctionSignature(Base): # type: ignore
|
||||||
"""
|
"""
|
||||||
Function signature from blockchain (Ethereum/Polygon) Signature Database.
|
Function signature from blockchain (Ethereum/Polygon) Signature Database.
|
||||||
|
|
|
@ -34,6 +34,9 @@ from .models import (
|
||||||
PolygonBlock,
|
PolygonBlock,
|
||||||
PolygonLabel,
|
PolygonLabel,
|
||||||
PolygonTransaction,
|
PolygonTransaction,
|
||||||
|
ProofOfPlayApexBlock,
|
||||||
|
ProofOfPlayApexLabel,
|
||||||
|
ProofOfPlayApexTransaction,
|
||||||
WyrmBlock,
|
WyrmBlock,
|
||||||
WyrmLabel,
|
WyrmLabel,
|
||||||
WyrmTransaction,
|
WyrmTransaction,
|
||||||
|
@ -76,6 +79,7 @@ class Network(Enum):
|
||||||
avalanche_fuji = "avalanche_fuji"
|
avalanche_fuji = "avalanche_fuji"
|
||||||
blast = "blast"
|
blast = "blast"
|
||||||
blast_sepolia = "blast_sepolia"
|
blast_sepolia = "blast_sepolia"
|
||||||
|
proof_of_play_apex = "proof_of_play_apex"
|
||||||
|
|
||||||
|
|
||||||
tx_raw_types = Union[
|
tx_raw_types = Union[
|
||||||
|
@ -96,6 +100,7 @@ tx_raw_types = Union[
|
||||||
AvalancheFujiTransaction,
|
AvalancheFujiTransaction,
|
||||||
BlastTransaction,
|
BlastTransaction,
|
||||||
BlastSepoliaTransaction,
|
BlastSepoliaTransaction,
|
||||||
|
ProofOfPlayApexTransaction,
|
||||||
]
|
]
|
||||||
|
|
||||||
MODELS: Dict[Network, Dict[str, Base]] = {
|
MODELS: Dict[Network, Dict[str, Base]] = {
|
||||||
|
@ -184,6 +189,11 @@ MODELS: Dict[Network, Dict[str, Base]] = {
|
||||||
"labels": BlastSepoliaLabel,
|
"labels": BlastSepoliaLabel,
|
||||||
"transactions": BlastSepoliaTransaction,
|
"transactions": BlastSepoliaTransaction,
|
||||||
},
|
},
|
||||||
|
Network.proof_of_play_apex: {
|
||||||
|
"blocks": ProofOfPlayApexBlock,
|
||||||
|
"labels": ProofOfPlayApexLabel,
|
||||||
|
"transactions": ProofOfPlayApexTransaction,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -224,5 +234,7 @@ def blockchain_type_to_network_type(
|
||||||
return Network.blast
|
return Network.blast
|
||||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||||
return Network.blast_sepolia
|
return Network.blast_sepolia
|
||||||
|
elif blockchain_type == AvailableBlockchainType.PROOF_OF_PLAY_APEX:
|
||||||
|
return Network.proof_of_play_apex
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||||
|
|
|
@ -21,6 +21,7 @@ class SubscriptionTypes(Enum):
|
||||||
AVALANCHE_FUJI_BLOCKCHAIN = "avalanche_fuji_smartcontract"
|
AVALANCHE_FUJI_BLOCKCHAIN = "avalanche_fuji_smartcontract"
|
||||||
BLAST_BLOCKCHAIN = "blast_smartcontract"
|
BLAST_BLOCKCHAIN = "blast_smartcontract"
|
||||||
BLAST_SEPOLIA_BLOCKCHAIN = "blast_sepolia_smartcontract"
|
BLAST_SEPOLIA_BLOCKCHAIN = "blast_sepolia_smartcontract"
|
||||||
|
PROOF_OF_PLAY_APEX_BLOCKCHAIN = "proof_of_play_apex_smartcontract"
|
||||||
|
|
||||||
|
|
||||||
def blockchain_type_to_subscription_type(
|
def blockchain_type_to_subscription_type(
|
||||||
|
@ -60,6 +61,8 @@ def blockchain_type_to_subscription_type(
|
||||||
return SubscriptionTypes.BLAST_BLOCKCHAIN
|
return SubscriptionTypes.BLAST_BLOCKCHAIN
|
||||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||||
return SubscriptionTypes.BLAST_SEPOLIA_BLOCKCHAIN
|
return SubscriptionTypes.BLAST_SEPOLIA_BLOCKCHAIN
|
||||||
|
elif blockchain_type == AvailableBlockchainType.PROOF_OF_PLAY_APEX:
|
||||||
|
return SubscriptionTypes.PROOF_OF_PLAY_APEX_BLOCKCHAIN
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||||
|
|
||||||
|
@ -82,6 +85,7 @@ subscription_id_by_blockchain = {
|
||||||
"avalanche_fuji": "avalanche_fuji_smartcontract",
|
"avalanche_fuji": "avalanche_fuji_smartcontract",
|
||||||
"blast": "blast_smartcontract",
|
"blast": "blast_smartcontract",
|
||||||
"blast_sepolia": "blast_sepolia_smartcontract",
|
"blast_sepolia": "blast_sepolia_smartcontract",
|
||||||
|
"proof_of_play_apex": "proof_of_play_apex_smartcontract",
|
||||||
}
|
}
|
||||||
|
|
||||||
blockchain_by_subscription_id = {
|
blockchain_by_subscription_id = {
|
||||||
|
@ -102,6 +106,7 @@ blockchain_by_subscription_id = {
|
||||||
"avalanche_fuji_blockchain": "avalanche_fuji",
|
"avalanche_fuji_blockchain": "avalanche_fuji",
|
||||||
"blast_blockchain": "blast",
|
"blast_blockchain": "blast",
|
||||||
"blast_sepolia_blockchain": "blast_sepolia",
|
"blast_sepolia_blockchain": "blast_sepolia",
|
||||||
|
"proof_of_play_apex_blockchain": "proof_of_play_apex",
|
||||||
"ethereum_smartcontract": "ethereum",
|
"ethereum_smartcontract": "ethereum",
|
||||||
"polygon_smartcontract": "polygon",
|
"polygon_smartcontract": "polygon",
|
||||||
"mumbai_smartcontract": "mumbai",
|
"mumbai_smartcontract": "mumbai",
|
||||||
|
@ -119,4 +124,5 @@ blockchain_by_subscription_id = {
|
||||||
"avalanche_fuji_smartcontract": "avalanche_fuji",
|
"avalanche_fuji_smartcontract": "avalanche_fuji",
|
||||||
"blast_smartcontract": "blast",
|
"blast_smartcontract": "blast",
|
||||||
"blast_sepolia_smartcontract": "blast_sepolia",
|
"blast_sepolia_smartcontract": "blast_sepolia",
|
||||||
|
"proof_of_play_apex_smartcontract": "proof_of_play_apex",
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
Moonstream database version.
|
Moonstream database version.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
MOONSTREAMDB_VERSION = "0.4.1"
|
MOONSTREAMDB_VERSION = "0.4.2"
|
||||||
|
|
Ładowanie…
Reference in New Issue