3 июля 2011, 1:26:31 AM   # 1
 
 
Сообщения: 192
Цитировать по имени
цитировать ответ
по умолчанию Re: Информация о getwork?

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Хорошо, как некоторые из вас могли заметить, я занимаюсь разработкой нового пула бэкенд: http://forum.bitcoin.org/index.php?topic=19149.0 Однако, как это Widly известно вокруг операторов пула JSON-RCP является крайне неэффективным, особенно в настоящее время однопоточно внедрением в официальном клиенте.
По этой причине я полагал, что это может быть хорошей идеей, чтобы осуществить обработку цепи и метод getwork непосредственно в программное обеспечение пула, который уже в основном делается: http://code.google.com/p/bitcoinsharp/ Однако это, кажется, не имеет getwork реализовано и как таковой я смотрю на то, что обработка участвуют в получении различных частей данных работ.
До сих пор я нашел очень мало об этом, то, что я нашел до сих пор из исходного кода клиента:
Код:
    если (params.size () == 0)
    {
        // блок обновления
        Статический неподписанный INT nTransactionsUpdatedLast;
        Статическая CBlockIndex * pindexPrev;
        Статическая int64 nStart;
        Статическая CBlock * pblock;
        если (pindexPrev! = pindexBest ||
            (NTransactionsUpdated! = NTransactionsUpdatedLast && GetTime () - nStart > 60))
        {
            если (pindexPrev! = pindexBest)
            {
                // DEALLOCATE старых блоков, так как они теперь вы устарели
                mapNewBlock.clear ();
                BOOST_FOREACH (CBlock * pblock, vNewBlock)
                    удалить pblock;
                vNewBlock.clear ();
            }
            nTransactionsUpdatedLast = nTransactionsUpdated;
            pindexPrev = pindexBest;
            nStart = GetTime ();

            // Создать новый блок
            pblock = CreateNewBlock (reservekey);
            если (! pblock)
                бросить JSONRPCError (-7, "Недостаточно памяти");
            vNewBlock.push_back (pblock);
        }

        // Обновление NTime
        pblock->Ntime = макс (pindexPrev->GetMedianTimePast () + 1, GetAdjustedTime ());
        pblock->nNonce = 0;

        // Обновление nExtraNonce
        статический беззнаковый INT nExtraNonce = 0;
        статическая int64 nPrevTime = 0;
        IncrementExtraNonce (pblock, pindexPrev, nExtraNonce, nPrevTime);

        // Сохранить
        mapNewBlock [pblock->hashMerkleRoot] = make_pair (pblock, nExtraNonce);

        // Prebuild хэш-буфер
        символ pmidstate [32];
        символьный PDATA [128];
        символ phash1 [64];
        FormatHashBuffers (pblock, pmidstate, PDATA, phash1);

        uint256 hashTarget = CBigNum (). SetCompact (pblock->Nbits) .getuint256 ();

        Результат объекта;
        result.push_back (пара ("Midstate", HexStr (НАЧАТЬ (pmidstate), конец (pmidstate))));
        result.push_back (пара ("данные", HexStr (НАЧАТЬ (PDATA), конец (PDATA))));
        result.push_back (пара ("hash1", HexStr (НАЧАТЬ (phash1), конец (phash1))));
        result.push_back (пара ("цель", HexStr (НАЧАТЬ (hashTarget), END (hashTarget))));
        возвращать результат;
    }
    еще
    {
        // параметры Разбор
        вектор<неподписанные символ> vchData = ParseHex (PARAMS [0] .get_str ());
        если (vchData.size ()! = 128)
            бросить JSONRPCError (-8, "Неверный параметр");
        CBlock * PDATA = (CBlock *)&vchData [0];

        // Байт обратного
        для (INT I = 0; я < 128/4; я ++)
            ((Беззнаковое INT *) PDATA) [I] = CryptoPP :: ByteReverse (((беззнаковое INT *) PDATA) [I]);

        // Получить сохраняемый блок
        если (! mapNewBlock.count (pdata->hashMerkleRoot))
            вернуться ложным;
        CBlock * pblock = mapNewBlock [pdata->hashMerkleRoot .first];
        неподписанных INT nExtraNonce = mapNewBlock [pdata->hashMerkleRoot .second];

        pblock->Ntime = pdata->NTime;
        pblock->nNonce = pdata->nNonce;
        pblock->VTX [0] .vin [0] = .scriptSig CScript () << pblock->Nbits << CBigNum (nExtraNonce);
        pblock->hashMerkleRoot = pblock->BuildMerkleTree ();

        вернуться CheckWork (pblock, * pwalletMain, reservekey);
    }

Я понимаю, почему это проверки количества параметров, однако у меня есть очень трудное время следующего остальной части коды, как это кажется довольно суматоха с другим лишь косвенно связанным с материалом, например, что делает высвобождение старых блоков нужно сделать с получением нового Работа?

Так что все во всем процессе получения работы по-прежнему в темноте для меня бы кто-нибудь обмена ума ссылки или их собственные знания об этом процессе?
Zagitta сейчас офлайн Пожаловаться на Zagitta   Ответить с цитированием Мультицитирование сообщения от Zagitta Быстрый ответ на сообщение Zagitta


Как заработать Биткоины?
Без вложений. Не майнинг.


4 июля 2011, 5:07:18 AM   # 2
 
 
Сообщения: 1582
Цитировать по имени
цитировать ответ
по умолчанию Re: Информация о getwork?

Получил 1806 Биткоинов
Реальная история.





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

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

Многопоточность кода JSON и фиксирующее постоянные соединения являются частью моего набора исправлений «3diff».
http://davids.webmaster.com/~davids/bitcoin-3diff.txt

Примерно через два дня или около того, я выпущу массовые оптимизации «getwork», что примерно вдвое сократить потребление процессора в обычном «пуле менеджер звонков getwork лот» случай.
JoelKatz сейчас офлайн Пожаловаться на JoelKatz   Ответить с цитированием Мультицитирование сообщения от JoelKatz Быстрый ответ на сообщение JoelKatz



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW