Документация EjNET Blockchain v3.5.2

Обзор системы и Нововведения v3.5.2

EjNET Core API v3.5.2 — гибридный узел мультивалютного блокчейна с децентрализованной P2P Mesh-сетью и поддержкой текстовых On-chain сообщений.

🔥 Ключевые особенности версии 3.5.2:
  • P2P Mesh Gossip Protocol: Транзакции фоново транслируются соседним активным нодам сети.
  • On-Chain Messages: Добавлено опциональное поле message в транзакции.
  • Гибридная валидация Ed25519: Поддержка устранения конфликтов типов данных (int/float) между PHP и Python.
  • Синхронизация блоков: Новые ноды скачивают цепочку через Sync API.
  • Распределение майнинга: 50% награды OP-автору, 50% между работягами (с автоматической защитой от повторного майнинга).

Формат подписи Ed25519 & On-chain Сообщения

В структуру подписи включено поле message для защиты от подделки текстов. Если сообщение отсутствует, структура формируется без шестого блока.

Форматирование строки перед подписью:

SENDER_ADDRESS:RECIPIENT_ADDRESS:AMOUNT:CURRENCY:TIMESTAMP:MESSAGE_PAYLOAD

Пример строки ДЛЯ ПОДПИСИ (с текстом):
FINANCE_EJNET_A1B2...:FINANCE_EJNET_C3D4...:10.0:ALR:1700000000.0:Привет, EjNET!

Пример строки ДЛЯ ПОДПИСИ (без текста):
FINANCE_EJNET_A1B2...:FINANCE_EJNET_C3D4...:10.0:ALR:1700000000.0

POST /api/v1/wallet/create

Генерирует новую пару ключей Ed25519 и возвращает адрес кошелька, а также приватный и публичный ключи в формате HEX.

Ответ (200 OK):

{
  "status": "SUCCESS",
  "address": "FINANCE_EJNET_A1B2C3D4E5F6789012345678",
  "public_key_hex": "11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff",
  "private_key_hex": "887766554433221100ffeeddccbbaa99887766554433221100ffeeddccbbaa99"
}
GET /api/v1/balance/{address}

Возвращает актуальные балансы кошелька по всем поддерживаемым валютам (включая ALR и EJR).

Ответ (200 OK):

{
  "address": "FINANCE_EJNET_A1B2C3D4E5F6789012345678",
  "balances": {
    "ALR": 150.5,
    "EJR": 10.0
  }
}
POST /api/v1/transfer

Создает транзакцию перевода. Транзакция попадает в мемпул, записывается в блок и отправляется соседям по P2P Mesh-сети.

Тело запроса (JSON):

{
  "sender_pubkey_hex": "11223344...",
  "recipient_address": "FINANCE_EJNET_RECIPIENT_ADDRESS",
  "amount": 50.0,
  "currency": "ALR",
  "message": "Привет! Это оплата за пост.",
  "timestamp": 1700000000.0,
  "signature_hex": "aa33bb44..."
}

Ответ (200 OK):

{
  "status": "ACCEPTED",
  "tx_id": "a1f2e3d4c5b67890",
  "currency": "ALR",
  "sent_amount": 49.875,
  "ejnet_fee_0_25": 0.125,
  "message": "Привет! Это оплата за пост."
}
POST P2P MESH /api/v1/p2p/register_peer

Регистрирует адрес соседней P2P-ноды для участия в обмене транзакциями и блоками.

Тело запроса (JSON):

{
  "node_url": "http://192.168.1.45:8000"
}

Ответ (200 OK):

{
  "status": "SUCCESS",
  "peer": "http://192.168.1.45:8000"
}
GET P2P MESH /api/v1/p2p/peers

Возвращает список всех известных активных P2P-нод в сети.

Ответ (200 OK):

{
  "peers": [
    {
      "node_url": "http://192.168.1.45:8000",
      "last_seen": 1700000200.0
    }
  ]
}
POST P2P MESH /api/v1/p2p/gossip/tx

Принимает P2P-транзакцию от соседней ноды по протоколу Gossip. Если транзакция неизвестна, она добавляется в локальный мемпул.

Ответ (200 OK):

{
  "status": "RECEIVED_VIA_GOSSIP",
  "tx_id": "a1f2e3d4c5b67890"
}
GET P2P MESH /api/v1/p2p/sync/blocks

Используется новыми нодами для скачивания блоков и синхронизации локальной БД.

Query параметры:

ПараметрТипОписание
from_indexintНачальный индекс блока (по умолчанию 0)

Ответ (200 OK):

{
  "from_index": 0,
  "blocks": [
    {
      "block_index": 0,
      "timestamp": 1700000000.0,
      "prev_hash": "0",
      "block_hash": "GENESIS_HASH...",
      "transactions": []
    }
  ]
}
GET /api/v1/chain/status

Возвращает сводную статистику ноды: количество блоков, транзакций, размер мемпула и данные о последнем блоке.

Ответ (200 OK):

{
  "total_blocks": 150,
  "total_transactions": 1240,
  "pending_mempool": 0,
  "last_block": {
    "block_index": 149,
    "timestamp": 1700000500.0,
    "prev_hash": "a8b9c0d1e2f3...",
    "block_hash": "f1e2d3c4b5a6..."
  }
}