Jump to content

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


Recommended Posts

Posted (edited)

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

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

Edited by Serg Acron
Posted

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

Posted

 

 

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

 

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

Posted

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

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

Posted (edited)

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

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

 

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

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

Edited by Serg Acron
Posted

 

 

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

 

Анекдот, же:

 

 

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

  • 2 weeks later...
Posted

На вход 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 weeks later...
  • 9 months later...
Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

    • Luxor Technology: Подорожание нефти может снизить доходность майнинга

      Рост цен на нефть на фоне конфликта вокруг Ирана вряд ли повысит расходы биткоин-майнеров на электроэнергию. Главный риск для отрасли — усиление волатильности биткоина и снижение доходности добычи криптовалюты, считают аналитики компании Luxor Technology. Эксперты отметили, что удары США и Израиля по объектам в Иране привели к перебоям в судоходстве через Ормузский пролив. Через этот маршрут проходит около 20% мировых поставок нефти, поэтому любые нарушения быстро отражаются на глобальных э

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

    • В Ставрополье семейная пара организовала в гараже ферму для майнинга

      В Ставропольском крае 52-летняя женщина и ее 45-летний сожитель организовали в гараже майнинговую ферму для добычи криптовалюты. Об этом сообщили в пресс-службе краевого ГУ МВД России. По версии следствия, подозреваемые установили в гараже своего дома специализированное компьютерное оборудование для майнинга. Чтобы сократить расходы на электроэнергию, они использовали техническое устройство, позволявшее потреблять электричество без учета.   Как утверждают правоохранительные органы, та

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

    • Foundry Digital запустит пул для майнинга Zcash

      Крупный пул для майнинга биткоина Foundry Digital планирует в апреле запустить добычу приватного токена Zcash. Проект рассчитан на корпоративных клиентов, в первую очередь из США. Foundry обещает предложить Zcash-майнерам платформу, которая соблюдает требования законодательства США: с проверками, стандартами отчетности и операционным контролем. Пользователи будут проходить верификацию по правилам KYC (Know Your Customer) и AML (Anti‑Money Laundering). Сейчас экосистема майнинга Zcash состои

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

    • Эксперты майнинг-пула описали перспективы майнинга биткоинов на ближайшие годы

      К 2030 году контролировать большую часть мощности сети Биткоина будут пять крупнейших майнеров, а главным фактором выживания станет доступ к дешевой электроэнергии, говорится в докладе аналитиков майнинг-пула Neopool. Обращаясь к истории индустрии, эксперты напомнили, что в первые годы существования сети добычей первой криптовалюты занимались владельцы домашних компьютеров. Лишь позже им на смену пришли майнинговые пулы, что стало началом объединения участников рынка.   Решающий перел

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

    • Энергетики оценили ущерб от майнинга на Северном Кавказе

      В регионах Северо-Кавказского федерального округа за прошлый год российские силовики закрыли 128 майнинг-ферм — втрое больше, чем годом ранее. Ущерб от кражи электроэнергии превысил 1 млрд рублей, увеличившись по сравнению с 2024 годом на 42,6%, сообщили «Россети Северный Кавказ». Общий объем украденной электроэнергии достиг 141,7 млн кВт·ч, что на 5,85% выше, чем в 2024 году, заявили энергетики. В Ингушетии объем вырос с 32,4 млн до 82,3 млн кВт·ч, в Северной Осетии — с 0,8 млн до 2,4 млн,

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

×
×
  • Create New...