Комплексное решение для распределенного поиска Bitcoin seed-фраз с поддержкой множественных платформ и агентов.
- BitcoinFinder - основное WinForms приложение (агент)
- BitcoinFinderWebServer - веб-сервер для API
- BitcoinFinderAndroid - Android приложение-сервер
- DistributedProtocolTests - тесты для распределенного протокола
WinForms Agent ←→ Android Server/Broker ←→ WinForms Agents
↓ ↓ ↓
Поиск seed Координация задач Поиск seed
- Android Server - центральный координатор на мобильном устройстве
- WinForms Agents - агенты на Windows для выполнения поиска
- HTTP API - REST API для связи агентов с сервером
- TCP Server - прямая связь для быстрой передачи данных
- Поиск seed-фраз: Полнофункциональный поиск Bitcoin seed-фраз с использованием BIP39
- Распределенный поиск: Поддержка множественных агентов для параллельной обработки задач
- Автоматический сброс пула: Сброс соединений каждые 30 минут при бездействии
- Веб-интерфейс: Современный веб-интерфейс для мониторинга и управления
- REST API: Полнофункциональный API для агентов и поиска
- База данных: Сохранение задач и статистики в SQL Server
- Real-time обновления: Автоматическое обновление статуса через JavaScript
- SeedPhraseFinder - Поиск и генерация Bitcoin seed-фраз
- TaskManager - Управление задачами поиска
- AgentManager - Управление подключенными агентами
- PoolManager - Автоматический сброс пула соединений
- WebController - Веб-интерфейс
- ApiController - REST API для агентов
- SearchController - API для поиска seed-фраз
- SearchTasks - Задачи поиска
- AgentInfos - Информация об агентах
- .NET 8.0 или выше
- SQL Server (LocalDB для разработки)
- Visual Studio 2022 или VS Code
- Клонируйте репозиторий
- Откройте проект в Visual Studio
- Обновите строку подключения в
appsettings.json - Запустите проект
dotnet restore
dotnet runОсновные настройки в appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=BitcoinFinderWebServer;Trusted_Connection=true;MultipleActiveResultSets=true"
},
"PoolSettings": {
"ResetIntervalMinutes": 30,
"CleanupIntervalMinutes": 5
}
}- BIP39 совместимость: Поддержка стандарта BIP39 для seed-фраз
- Генерация адресов: Автоматическая генерация Bitcoin адресов из seed-фраз
- Валидация: Проверка корректности seed-фраз
- Расчет комбинаций: Подсчет общего количества возможных комбинаций
- Поиск по шаблону: Поиск с использованием * для неизвестных слов
// Создание задачи поиска
var task = new SearchTask
{
SeedPhrase = "abandon * * * * * * * * * * *",
BitcoinAddress = "1MCirzugBCrn5H6jHix6PJSLX7EqUEniBQ",
WordCount = 12,
StartIndex = 0,
EndIndex = 1000000
};
// Выполнение поиска
var result = await seedPhraseFinder.FindSeedPhraseAsync(task);POST /api/search/execute/{taskId}POST /api/search/validate
Content-Type: application/json
{
"seedPhrase": "abandon ability able about above absent absorb abstract absurd abuse access accident"
}GET /api/search/combinations?seedPhrase=* * * * * * * * * * * *&wordCount=12POST /api/api/register
Content-Type: application/json
{
"agentId": "agent-001",
"ipAddress": "192.168.1.100"
}POST /api/api/task/request
Content-Type: application/json
{
"agentId": "agent-001"
}POST /api/api/task/progress
Content-Type: application/json
{
"agentId": "agent-001",
"taskId": 1,
"currentProgress": 50000,
"speed": 1000.5
}POST /api/api/task/complete
Content-Type: application/json
{
"agentId": "agent-001",
"taskId": 1,
"success": true,
"result": "abandon ability able about above absent absorb abstract absurd abuse access accident",
"totalProcessed": 100000
}POST /api/api/heartbeat
Content-Type: application/json
{
"agentId": "agent-001",
"status": "Working",
"currentTaskId": 1,
"speed": 1000.5
}- Dashboard - Общая статистика и мониторинг
- Tasks - Управление задачами поиска
- Agents - Мониторинг подключенных агентов
- Create Task - Создание новых задач
- Создание задач поиска
- Мониторинг прогресса в реальном времени
- Просмотр статистики агентов
- Управление пулом соединений
- Пул автоматически сбрасывается каждые 30 минут при отсутствии активности
- Все активные задачи возвращаются в статус "Pending"
- Агенты отключаются и должны переподключиться
- Кнопка "Reset Timer" на дашборде
- Обновляет таймер сброса пула
BitcoinFinderWebServer/
├── Controllers/
│ ├── ApiController.cs # API для агентов
│ ├── WebController.cs # Веб-интерфейс
│ └── SearchController.cs # API для поиска
├── Data/
│ └── ApplicationDbContext.cs
├── Models/
│ ├── SearchTask.cs
│ ├── AgentInfo.cs
│ └── ApiModels.cs
├── Services/
│ ├── SeedPhraseFinder.cs # Поиск seed-фраз
│ ├── TaskManager.cs
│ ├── AgentManager.cs
│ └── PoolManager.cs
└── Views/
├── Shared/
│ └── _Layout.cshtml
└── Web/
├── Index.cshtml
├── Tasks.cshtml
└── CreateTask.cshtml
- Создайте модель в папке
Models/ - Добавьте сервис в папку
Services/ - Создайте контроллер в папке
Controllers/ - Добавьте представления в папку
Views/
Этот проект является частью BitcoinFinder и использует ту же лицензию.
Для вопросов и предложений создавайте issues в репозитории проекта.
- Логин: admin
- Пароль: admin123
Файл конфигурации: BitcoinFinderWebServer/admin_config.json
- Через веб-интерфейс: вкладка "Настройки" (или через API
/api/auth/configи/api/auth/change-password). - Можно вручную отредактировать файл
admin_config.json(пароль хранится в виде SHA256-хэша).
- Откройте http://localhost:5000/login.html
- После входа доступны все функции админки.
- Без входа никто не сможет попасть в интерфейс.
- Аутентификация работает даже если база данных не настроена.