Расчет на CUDA ядрах SECP-256k1, Keccak-256 (только безопасная сделка)
20 000 руб. за проект
Необходимо разработать небольшое приложение рассчитывающее хэш на CUDA ядрах. Все расчеты и поиск совершать на GPU.
Результатом выполнения задания является работающее приложение для Ubuntu 20/22/24, исходный код и инструкция по сборке/компиляции.
- Программа получает аргументами номер видеокарты и начальный hex хэш. Пример: ./calc 0 f6406a1636543c04256b64e7d38002a13cf26c645cecf1cf7287e5800000000b
- Загружает файла с исходными данными (набор сортированных чисел uint64) в память GPU
- На GPU рассчитывает uint64 из хэша
- С помощью бинарного поиска ищет наличие в массиве uint64, если число есть в массиве то вывести в консоль хэш из которого получили число
- Увеличивает хэш на 1. Пример: f6406a1636543c04256b64e7d38002a13cf26c645cecf1cf7287e5800000000c
Расчёт uint64:
1. Приватный ключ -> открытый ключ (ECDSA на SECP-256k1).
2. Открытый ключ -> хэширование (Keccak-256).
3. Берем последние 20 байт хэша и получаем адрес.
4. Получаем uint.
4.1. Пример на golang: binary.BigEndian.Uint64([]byte{хэш[0], хэш[1], хэш[2], хэш[3], хэш[16], хэш[17], хэш[18], хэш[19]})
4.2. Пример на js: BigInt(`0x${хэшСтрока.substr(0, 8)}${хэшСтрока.substr(32)}`)
4.3. Хэш c3ea4627b15cfdb6869f35ca150f93e6dee40e32 соответствует числу 14117173119003397682
Все алгоритмы под CUDA уже существуют, надо собрать наиболее шустрый вариант.
Пример вывода в консоль:
```text
GPU: 0
Start: 9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c98763
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c98763
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c9b1c6
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c9dc29
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2ca068c
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2ca30ef
```
При файле:
```text
665827009123879698
5583111258928654999
6419952329182340394
7595130425839639305
15461504444051265698
```
Результатом выполнения задания является работающее приложение для Ubuntu 20/22/24, исходный код и инструкция по сборке/компиляции.
- Программа получает аргументами номер видеокарты и начальный hex хэш. Пример: ./calc 0 f6406a1636543c04256b64e7d38002a13cf26c645cecf1cf7287e5800000000b
- Загружает файла с исходными данными (набор сортированных чисел uint64) в память GPU
- На GPU рассчитывает uint64 из хэша
- С помощью бинарного поиска ищет наличие в массиве uint64, если число есть в массиве то вывести в консоль хэш из которого получили число
- Увеличивает хэш на 1. Пример: f6406a1636543c04256b64e7d38002a13cf26c645cecf1cf7287e5800000000c
Расчёт uint64:
1. Приватный ключ -> открытый ключ (ECDSA на SECP-256k1).
2. Открытый ключ -> хэширование (Keccak-256).
3. Берем последние 20 байт хэша и получаем адрес.
4. Получаем uint.
4.1. Пример на golang: binary.BigEndian.Uint64([]byte{хэш[0], хэш[1], хэш[2], хэш[3], хэш[16], хэш[17], хэш[18], хэш[19]})
4.2. Пример на js: BigInt(`0x${хэшСтрока.substr(0, 8)}${хэшСтрока.substr(32)}`)
4.3. Хэш c3ea4627b15cfdb6869f35ca150f93e6dee40e32 соответствует числу 14117173119003397682
Все алгоритмы под CUDA уже существуют, надо собрать наиболее шустрый вариант.
Пример вывода в консоль:
```text
GPU: 0
Start: 9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c98763
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c98763
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c9b1c6
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2c9dc29
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2ca068c
9f6eb28ac682aff612f1480a374f86c3a5b4b4e531da2a4b2edca050a2ca30ef
```
При файле:
```text
665827009123879698
5583111258928654999
6419952329182340394
7595130425839639305
15461504444051265698
```
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.