← Назад к вопросам

Что такое blockchain и какие задачи DS с ним связаны?

2.0 Middle🔥 151 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Blockchain: основы и задачи Data Scientist

Что такое blockchain

Blockchain — это распределённая база данных, которая хранит данные в виде связанных блоков с криптографической защитой. Ключевые характеристики:

Структура:

  • Каждый блок содержит:
    • Данные транзакций
    • Хеш блока (уникальный идентификатор)
    • Хеш предыдущего блока (криптографическая связь)
    • Timestamp
    • Nonce (число для Proof of Work)
# Упрощённый пример блока
class Block:
    def __init__(self, index, timestamp, data, previous_hash):
        self.index = index
        self.timestamp = timestamp
        self.data = data
        self.previous_hash = previous_hash
        self.hash = self.calculate_hash()
        self.nonce = 0
    
    def calculate_hash(self):
        import hashlib
        block_string = str(self.index) + str(self.timestamp) + str(self.data) + str(self.previous_hash)
        return hashlib.sha256(block_string.encode()).hexdigest()

Ключевые свойства:

  1. Неизменяемость — изменение одного блока invalidates все последующие
  2. Прозрачность — все данные публичны (в публичных блокчейнах)
  3. Распределённость — копии хранятся на множестве узлов
  4. Криптографическая защита — используется хеширование и цифровые подписи

Примеры blockchain-систем

Bitcoin:

  • Криптовалюта, Proof of Work
  • ~600 GB данных (весь блокчейн)

Ethereum:

  • Смарт-контракты, Proof of Stake
  • ~1 TB данных

Ripple, Cardano, Polkadot:

  • Специализированные решения

Задачи Data Scientist в blockchain

1. Анализ транзакций и сетевых паттернов

# Задача: Обнаружить фальшивые транзакции (fraud detection)
from pandas import DataFrame
import numpy as np

# Данные из блокчейна
transactions_df = DataFrame({
    'from_address': ['0x123...', '0x456...', '0x789...'],
    'to_address': ['0x abc...', '0xdef...', '0x123...'],
    'value': [1.5, 0.001, 100.0],
    'timestamp': [1234567890, 1234567891, 1234567892],
    'gas_price': [20, 15, 50]
})

# Анализ графа
import networkx as nx

G = nx.DiGraph()
for _, row in transactions_df.iterrows():
    G.add_edge(row['from_address'], row['to_address'], value=row['value'])

# Поиск аномалий: вершины с необычно высокой степенью
anomalies = [(node, G.out_degree(node)) for node in G.nodes() if G.out_degree(node) > 100]
print(f'Подозрительные адреса: {anomalies}')

Практические применения:

  • Обнаружение схем отмывания денег (AML — Anti-Money Laundering)
  • Выявление Ponzi schemes
  • Отслеживание stolen funds
  • Know Your Customer (KYC) анализ

2. Прогнозирование цены криптовалют

# Time series prediction
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.preprocessing import StandardScaler

# Данные: OHLCV (Open, High, Low, Close, Volume)
prices_df = pd.read_csv('bitcoin_prices.csv')

# Инженерия признаков
prices_df['returns'] = prices_df['close'].pct_change()
prices_df['volatility'] = prices_df['returns'].rolling(20).std()
prices_df['ma_20'] = prices_df['close'].rolling(20).mean()
prices_df['rsi'] = calculate_rsi(prices_df['close'], 14)  # Relative Strength Index

# ARIMA или LSTM для прогноза
from statsmodels.tsa.arima.model import ARIMA

model = ARIMA(prices_df['close'], order=(5, 1, 2))
results = model.fit()
forecast = results.forecast(steps=30)  # На 30 дней вперёд

# Deep Learning подход
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

model_lstm = Sequential([
    LSTM(50, activation='relu', input_shape=(lookback, n_features)),
    LSTM(50, activation='relu'),
    Dense(1)
])
model_lstm.compile(optimizer='adam', loss='mse')

Вызовы:

  • Высокая волатильность
  • Влияние новостей и социальных сетей (не-линейные связи)
  • Разные циклы разных криптовалют

3. Анализ смарт-контрактов на уязвимости

# Задача: Обнаружить уязвимости в коде смарт-контракта
# Примеры уязвимостей:
# 1. Reentrancy attacks
# 2. Integer overflow/underflow
# 3. Timestamp dependence

# ML подход: классификация контрактов как безопасные/уязвимые
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC

contract_code = [
    'contract Vulnerable { ... }',  # Содержит уязвимость
    'contract Safe { ... }',          # Безопасный
]
labels = [1, 0]  # 1 = уязвимый, 0 = безопасный

vectorizer = TfidfVectorizer(analyzer='char', ngram_range=(2, 3))
X = vectorizer.fit_transform(contract_code)

model = SVC(kernel='rbf')
model.fit(X, labels)

prediction = model.predict(vectorizer.transform(['new_contract']))
print(f'Статус безопасности: {"Уязвим" if prediction[0] == 1 else "Безопасен"}')

4. Анализ сентимента в crypto-сообществах

# Задача: Прогнозировать движение цены по социальным сигналам
import pandas as pd
from textblob import TextBlob

# Данные из Twitter/Reddit
tweets_df = pd.read_csv('crypto_tweets.csv')

# Sentiment анализ
def get_sentiment(text):
    return TextBlob(text).sentiment.polarity  # -1 (отрицательный) до 1 (положительный)

tweets_df['sentiment'] = tweets_df['text'].apply(get_sentiment)
tweets_df['sentiment_group'] = pd.cut(tweets_df['sentiment'], bins=3, labels=['negative', 'neutral', 'positive'])

# Коррелируем с движением цены
sentiment_score = tweets_df.groupby('date')['sentiment'].mean()
price_change = prices_df.groupby('date')['close'].pct_change().mean()

correlation = sentiment_score.corr(price_change)
print(f'Корреляция сентимент-цена: {correlation:.3f}')

5. Кластеризация адресов и выявление координированного действия

# Задача: Найти группы связанных адресов (wash trading, bot networks)
from sklearn.cluster import DBSCAN

# Граф транзакций
transaction_features = pd.DataFrame({
    'address': address_list,
    'total_in': [total_income for addr in address_list],
    'total_out': [total_outcome for addr in address_list],
    'transaction_count': [count for addr in address_list],
    'avg_transaction_size': [...],
    'days_active': [active_days for addr in address_list]
})

# Нормализация
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
features_scaled = scaler.fit_transform(transaction_features.iloc[:, 1:])

# Кластеризация
dbscan = DBSCAN(eps=0.5, min_samples=3)
clusters = dbscan.fit_predict(features_scaled)

# Анализ кластеров
for cluster_id in set(clusters):
    if cluster_id != -1:  # -1 — noise
        cluster_addrs = transaction_features[clusters == cluster_id]
        print(f'Кластер {cluster_id}: {len(cluster_addrs)} адресов')

6. Экономические модели и game theory

# Анализ стимулов в блокчейне
# Задача: Оптимизировать параметры (комиссии, награды за майнинг)

# Agent-based моделирование
import mesa

class MinerAgent(mesa.Agent):
    def __init__(self, unique_id, model, hash_power):
        super().__init__(model)
        self.hash_power = hash_power
        self.revenue = 0
    
    def step(self):
        # Вероятность найти блок пропорциональна hash_power
        if random.random() < self.hash_power / self.model.total_hash_power:
            self.revenue += self.model.block_reward

class BlockchainModel(mesa.Model):
    def __init__(self, n_miners=10, block_reward=6.25):
        self.miners = [MinerAgent(i, self, hash_power=random.uniform(0.01, 0.5)) for i in range(n_miners)]
        self.block_reward = block_reward
        self.total_hash_power = sum(m.hash_power for m in self.miners)
    
    def step(self):
        for miner in self.miners:
            miner.step()

Практические вызовы для DS

ЗадачаСложностьData Size
Price predictionВысокая~10 GB OHLCV
Fraud detectionСредняя~100-500 GB транзакции
Network analysisСредняя~50-200 GB граф адресов
Smart contract auditВысокаяКод-based анализ
Sentiment analysisНизкая~1-5 GB текстов

Инструменты

# Популярные библиотеки
web3.py              # Взаимодействие с блокчейном
pandas               # Анализ данных
scikit-learn         # ML модели
tensorflow/pytorch   # Deep learning
networkx             # Анализ графов

Вывод: Data Science в blockchain — это интересная область, сочетающая финансовый анализ, ML, анализ сетей и криптографию. Основные возможности — fraud detection, price prediction и сетевой анализ.

Что такое blockchain и какие задачи DS с ним связаны? | PrepBro