Перейти к содержанию

Програма для майнинга в пуле


Serg Acron

Рекомендуемые сообщения

Я пишу часть майнера для проверки правильности работы

private String generateCoinbase(String en2){
    StringBuilder coinbase = new StringBuilder();
    coinbase.append(coinb1);
    coinbase.append(Extranonce1);
    coinbase.append(en2);
    coinbase.append(coinb2);
    return coinbase.toString();
}

public String Merkle2(String cb) {
    String mr = cb;
    for(int i = 0; i < merkle_branch.length; ++i)
        mr = sha256(sha256(mr + merkle_branch));
    return mr;
}

public String reverse(String string) {
    int n = string.length() / 2;
    StringBuilder sb = new StringBuilder();
    for(int i = (n - 1) * 2; n >= 0; n-=2)
        sb.append(string.substring(i, i + 1));
    return sb.toString();
}

public String reverse8(String string) {
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < string.length(); i+=8){
        int end = Math.min(i + 7, string.length() - 1);
        sb.append(reverse(string.substring(i, end)));
    }
    return sb.toString();
}

public String testControll(String nonce2, String en2) {
    String coinbase = sha256(sha256(generateCoinbase(en2)));
    String merkle = Merkle2(coinbase);
    String header = version + prevhash + reverse8(merkle) + ntime +
            nbits + nonce2 + "000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000";
    String hash = sha256(sha256(header));
    return hash;
}

Алгоритм я получаю отсюда https://slushpool.com/help/#!/manual/stratum-protocol

я запускаю это со следующими параметрами (которые я получаю от существующего минера)

    {"id": 0, "method": "mining.subscribe", "params": ["cgminer/3.7.2"]}

    {"id":0,"result":[[["mining.set_difficulty","b4b6693b72a50c7116db18d6497cac52"],["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"]],"f53d0211",4],"error":null} {"id": 1, "method": "mining.authorize", "params": ["up101084139.cgminertest", "pass"]}

    {"id":1,"result":true,"error":null}

    {"id":null,"params":[4],"method":"mining.set_difficulty"}

    {"id":null,"params":["-4fb1d548","db48fff805d2f2be98c101b2103afcd3fc0d2f2803bf92a30000000000000000","01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff410353950604f8b0e75708","2e522cfabe6d6d3555ed13d9e4c9317fc507a9080eeef9cb14b591b0cc1636caff691168d3f24704000000000000000000000001e5129d4a000000001976a91480ad90d403581fa3bf46086a91b2d9d4125db6c188ac00000000",["7c60191525d8563e379a4049e44d77be2fecdb348eaf844c86d434a0cad8d75c","ae757ce8f99307303fd31b81b1672674523e84cebab7d4f5fc76c97c46fe6f87","6ab95b94b7970237331551e2f22097432863ee31916d9c80fa2251739d6eb20d","332eec53c5f131c6abe85d64f928151d072cae47f8477d417185b84ec2904a56","3c2f9fdbcca3f01cc8ca2f8eee445271617f10889c39d5644399865fe6dc8a1d","b06350717cd3e844ed5d605a4d7a5f25bf859beeb2bf1aab4e2bf7fa45ee5954","7a1f44163fe18591b2c50b1499b8f09f519e9cd18d1fda14be0e87a029cda741"],"20000000","18048ed4","57e7b0f8",true],"method":"mining.notify"}

    {"params": ["up101084139.cgminertest", "-4fb1d548", "01000000", "57e7b0f8", "2536d114"], "id": 2, "method": "mining.submit"}

и получить результат блока заголовка хеш: 60be74f0d211b35bc2d23b39cb3bc79667291b439639dc20f63616a35d89b14b, но она должна быть ниже, чем цель, но это не так

    что я делаю не так?
    где моя ошибка?
    как сделать это правильно?

 

здесь код онлайн

https://docs.google.com/document/d/132mNZ1TQ4kOCg490wUw44jkCFuMd5ehzqDxLGrnwnN0/edit?usp=sharing

Изменено пользователем Serg Acron
Ссылка на комментарий
Поделиться на другие сайты

А если запустить прогу два раза с одними и теми же входными параметрами, то результат не меняется?

Ссылка на комментарий
Поделиться на другие сайты

 

 

String coinbase = sha256(sha256(generateCoinbase(en2)));

 

На вход sha256 должна поступать не строка, а бинарные данные (массив byte[]).

Ссылка на комментарий
Поделиться на другие сайты

А если запустить прогу два раза с одними и теми же входными параметрами, то результат не меняется?

результат не меняется

Ссылка на комментарий
Поделиться на другие сайты

На вход sha256 должна поступать не строка, а бинарные данные (массив byte[]).

но generateCoinbase(en2) возвращает строку

 

https://docs.google.com/document/d/132mNZ1TQ4kOCg490wUw44jkCFuMd5ehzqDxLGrnwnN0/edit?usp=sharing

здесь есть код можеш исправить онлайн и розшарить мне ответ

Изменено пользователем Serg Acron
Ссылка на комментарий
Поделиться на другие сайты

 

 

здесь есть код можеш исправить

 

Анекдот, же:

 

 

Жили-были мыши и все их обижали. Как-то пошли они к мудрому филину и говорят:
- Мудрый филин, помоги советом. Все нас обижают, коты разные, совы.
Что нам делать?
Филин подумал и говорит:
- А вы станьте ежиками. У ежиков иголки, их никто не обижает.
Мыши обрадовались и побежали домой. Но по дороге одна мышка сказала:
- Как же мы станем ежиками? - и все побежали обратно, чтобы задать этот вопрос мудрому филину.
Прибежав, они спросили:
- Мудрый филин, а как же мы станем ежиками?
И ответил филин:
- Ребята, вы меня ерундой не грузите. Я стратегией занимаюсь.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

На вход sha256 должна поступать не строка, а бинарные данные (массив byte[]).

ок я переделал ето https://goo.gl/hBYBeW

но все равно не раьотает верно

 

import hashlib

import binascii

 

prevhash = "db48fff805d2f2be98c101b2103afcd3fc0d2f2803bf92a30000000000000000";

coinb1 = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff410353950604f8b0e75708";

coinb2 = "2e522cfabe6d6d3555ed13d9e4c9317fc507a9080eeef9cb14b591b0cc1636caff691168d3f24704000000000000000000000001e5129d4a000000001976a91480ad90d403581fa3bf46086a91b2d9d4125db6c188ac00000000";

merkle_branch = ["7c60191525d8563e379a4049e44d77be2fecdb348eaf844c86d434a0cad8d75c","ae757ce8f99307303fd31b81b1672674523e84cebab7d4f5fc76c97c46fe6f87",

    "6ab95b94b7970237331551e2f22097432863ee31916d9c80fa2251739d6eb20d","332eec53c5f131c6abe85d64f928151d072cae47f8477d417185b84ec2904a56",

    "3c2f9fdbcca3f01cc8ca2f8eee445271617f10889c39d5644399865fe6dc8a1d","b06350717cd3e844ed5d605a4d7a5f25bf859beeb2bf1aab4e2bf7fa45ee5954",

    "7a1f44163fe18591b2c50b1499b8f09f519e9cd18d1fda14be0e87a029cda741"]

version = "20000000"

nbits = "18048ed4"

ntime = "57e7b0f8"

extranonce1 = "f53d0211"

extranonce2 = "01000000"

nonce = "2536d114"

 

coinbase = coinb1 + extranonce1 + extranonce2 + coinb2

coinbase_hash_bin = hashlib.sha256(hashlib.sha256(binascii.unhexlify(coinbase)).digest()).digest()

 

merkle_root = coinbase_hash_bin

for h in merkle_branch:

    merkle_root = hashlib.sha256(hashlib.sha256(merkle_root + binascii.unhexlify(h)).digest()).digest()

merkle = binascii.hexlify(merkle_root)

 

header_hex = version + prevhash + merkle[::-1] + ntime + nbits[::-1] + nonce + '000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000'

header_bin = header_hex.decode('hex')

hash = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()

hash = hash.encode('hex_codec')

print hash

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
  • 9 месяцев спустя...

Я получил хеш 00000000105d363511cc21c07cb466039ebe5f8b2a164e6a1528d93e79c9038f для этих данных, следовательно, я правильно вычисляю хеш? Для данных из http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html я получил хеш c8e3b6a8dfcd7aa0a6dad4c9f5cd6461442e48ddb416f5e124a5e6a1d9cadce6 следовательно я неправильно вычисляю хеш?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • Посольство Китая в Анголе призвало граждан воздержаться от майнинга криптовалют

      Посольство Китая в Анголе призвало своих граждан, проживающих в этой африканской стране, воздержаться от майнинга криптовалют, поскольку эта деятельность считается в Анголе уголовным преступлением. Посольство также призвало своих граждан проявить бдительность в отношении цифровых активов, особенно в отношении проектов, гарантирующих быстрое обогащение и большую прибыль. Криптоактивы не являются законным платежным средством, поэтому граждане Китая не должны совершать с ними какие-либо транза

      в Новости криптовалют

    • Сенаторы от штата Арканзас рассмотрели законопроекты по ограничению майнинга

      Сенаторы США от штата Арканзас рассмотрели восемь законопроектов относительно ограничений майнинга криптовалют. Два из них были приняты — они касаются изменения порядка проведения операций по добыче виртуальных активов. Хотя ни один из законопроектов еще не прошел полную процедуру утверждения, ожидается, что это произойдет в течение нескольких месяцев.   Кроме этого, сенаторы обсудили ряд вопросов, касающихся применения зарубежного программного обеспечения в секторе майнинга, владени

      в Новости криптовалют

    • Джози Осборн: «Кабинет министров Британской Колумбии не заинтересован в развитии майнинга»

      Министр энергетики, горнодобывающей промышленности и низкоуглеродных инноваций Британской Колумбии заявила о подготовке законопроекта, ограничивающего деятельность майнинговых компаний на территории этой провинции Канады. Джози Осборн (Josie Osborne) считает, что поправки позволят властям регулировать «неконтролируемый рост» майнинговых компаний, а также запрещать использование электричества майнерами в интересах энергоснабжения домовладений и промышленных предприятий.   Министр энерг

      в Новости криптовалют

    • Сложность майнинга биткоина обновила исторический максимум

      Сложность добычи майнерами биткоина обновила исторический максимум, достигнув отметки 86,3 трлн. Показатель увеличился на 3,92 %. Средний хешрейт сети в четверг, 11 апреля, составляет чуть более 618 EH/s.   Сложность майнинга показывает совокупную мощность вычислительного оборудования, применяемого для добычи виртуальных монет. Повышение сложности майнинга приближает дату халвинга. Халвинг BTC должен состояться 19 апреля 2024 года.   Следующий пересчет сложности майнинга ожидает

      в Новости криптовалют

    • Новосибирсккие полицейские изъяли у местного жителя 3 000 устройств для майнинга

      Специалисты компании «Россети Новосибирск» и сотрудники полиции нашли целую сеть ферм для майнинга криптовалют, незаконно подключенных к электрическим сетям. Энергетики вышли на майнеров, анализируя потребления электричества. Итого в разных частях города были обнаружены четыре криптовалютные майнинговых фермы.     Энергетики уверяют, что предприятию «Россети Новосибирск» в результате деятельности незаконно подключенных устройств был причинен ущерб на сумму более 197 млн рублей.

      в Новости криптовалют

×
×
  • Создать...