ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ PySpark ΠΈ HDFS. Π ΡΠ΅Π½ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ β rule-based (ΠΏΡΠ°Π²ΠΈΠ»ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ) ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ² (AntiFraud) Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Π±ΠΎΡΠ° ΡΠ²ΡΠΈΡΡΠΈΠΊ.
- Python β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- PySpark β Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ
- HDFS β Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Parquet
- Apache Airflow β Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ DAG-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°
- cryo β Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½-Π΄Π°Π½Π½ΡΡ Ρ RPC ΡΠ·Π»ΠΎΠ²
.
βββ block_analysis.ipynb # Jupyter-Π½ΠΎΡΡΠ±ΡΠΊ Ρ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π΄Π°Π½Π½ΡΡ
βββ get_ethereum_transaction.py # DAG Π΄Π»Ρ Airflow
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ:
- Python 3.8+
- Apache Spark (ΠΈ PySpark)
- HDFS (Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½ ΠΊΠ»Π°ΡΡΠ΅Ρ)
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π² HDFS (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Parquet).
- ΠΡΠΊΡΠΎΠΉΡΠ΅
block_analysis.ipynbΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ.
Π€Π°ΠΉΠ» get_ethereum_transaction.py ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ DAG'ΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ Airflow ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈΠ· Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π° Ethereum. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° cryo, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· RPC.
pysparkapache-airflow(Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° DAG)cryo(Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Ethereum-Π΄Π°Π½Π½ΡΡ )matplotlibΠ΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ²
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, Π΄Π°ΡΠ°-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌ ΠΈ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°ΠΌ, Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΡΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠ². ΠΠ½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ rule-based ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ML-ΠΌΠΎΠ΄Π΅Π»ΡΠΌ.
ΠΠ½Π°Π»ΠΈΠ· Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠ°ΠΊ:
- Π§Π°ΡΡΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ ("ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³")
- ΠΡΡΠΎΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΈΡΡΠΈΠΈ
- ΠΠ½ΠΎΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
- ΠΡΠΏΠ»Π΅ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ
- Π‘Π»Π°Π±Π°Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ