Pages:
Author

Topic: Создан патч для резолва .bit (namecoin) доменов в I2P - page 2. (Read 13404 times)

legendary
Activity: 3108
Merit: 1359
То есть ты просто предлагаешь вместо интегральной математики перейти на плавающую точку?
Нет, scrypt тоже использует целочисленную арифметику. Именно по этой причине процессоры amd в этой задаче так блекло выглядят.  Grin
hero member
Activity: 490
Merit: 500
То есть ты просто предлагаешь вместо интегральной математики перейти на плавающую точку?

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

Я не вижу проблемы шаринга вычислительной мощности с биткоин. Это вопрос профпригодности системы. И мержед майнинг тоже создан для лузерских систем.

Если система нужна обществу, общество будет майнить.
legendary
Activity: 3108
Merit: 1359
Господа криптопанки, вы зыбываетесь Smiley Основное в майнинге - это пруф ов ворк, который регулируется сложностью.

Необходима задача, сложность которой можно было бы легко регулировать и очень легко проверять.

И ша2 в купе с таргетом эту задачу достойно выполняют. Пока не изобретены квантовые компьютеры.

Хотя возможно я тоже полон стереотипов. Объясните, если в этом имеется какая то проблема.
Основная задача - бесспорно proof of work. Но смысл в том, что со scrypt на вычислительную мощность сети в целом не будут так сильно влиять  владельцы мегаферм. Простой пример - как запустились i0coin/ixcoin, мощность сети bitcoin упала на 1.5-2 тэрахэша, которые туда ушли за халявкой. Это очень плохой знак, говорящий о том чтоине стоит вкладывать в фундамент системы такой сомнительный актив в лице жадных людей. В случае scrypt у обладателей больших денег не будет такого весомого преимущества над обычными юзерами, потому что фермы можно будет строить разве что на ксеонах МП или итаниках. Это уже хорошо, даже если забыть о том, что считать на процессоре 24/7 гораздо проще, чем делать это на видеокарте, у которой то вентиль сдохнет то еще что (дохлые видеокарты вижу пачками, а процессоры гораздо реже Grin).
hero member
Activity: 490
Merit: 500
Господа криптопанки, вы зыбываетесь Smiley Основное в майнинге - это пруф ов ворк, который регулируется сложностью.

Необходима задача, сложность которой можно было бы легко регулировать и очень легко проверять.

И ша2 в купе с таргетом эту задачу достойно выполняют. Пока не изобретены квантовые компьютеры.

Хотя возможно я тоже полон стереотипов. Объясните, если в этом имеется какая то проблема.
legendary
Activity: 3108
Merit: 1359
Я имею в виду если будет сделан NMC-2 клиент для народа на scrypt
чтобы он все делал по понятиям как в пдфке

а не как у TBX.
В TBX копипаст референсной реализации, прикрученный через задницу Grin * сорри за риторику * Чтобы было нормально, надо исправить функцию GetHash(), а не прикручивать костыли в виде дополнительных функций и проверок...

Вот моя адаптация версии scrypt от pooler'а, пригодная для использования в клиенте:

http://zalil.ru/32646840

Для майнинга надо использовать функцию scanhash_scrypt, для получения хэша от переданного массива байтов с указанной длиной функцию scrypt_hash. Я это в своих экспериментах делал вот так:

в файле main.cpp:

Code:
#include "scrypt_mine.h"

<...//..>

void static BitcoinMiner(CWallet *pwallet, int thread_id)
{
    printf("Miner started\n");
    SetThreadPriority(THREAD_PRIORITY_LOWEST);

    // Each thread has its own key and counter
    CReserveKey reservekey(pwallet);
    unsigned int nExtraNonce = 0;
    void *scratchbuf = scrypt_buffer_alloc();

    while (fGenerateBitcoins)
    {
        if (AffinityBugWorkaround(ThreadMiner))
            return;
        if (fShutdown)
            return;
        while (vNodes.empty() || IsInitialBlockDownload())
        {
            Sleep(1000);
            if (fShutdown)
                return;
            if (!fGenerateBitcoins)
                return;
        }

        //
        // Create new block
        //

        unsigned int nTransactionsUpdatedLast = nTransactionsUpdated;
        CBlockIndex* pindexPrev = pindexBest;
        auto_ptr pblock(CreateNewBlock(pwallet));

        if (!pblock.get())
            return;

        IncrementExtraNonce(pblock.get(), pindexPrev, nExtraNonce);
        printf("Running Miner with %d transactions in block\n", pblock->vtx.size());

        //
        // Search
        //

        uint64_t nStart = GetTime();
        uint256 hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256();
        uint32_t max_nonce = 0xffff0000;
        block_header res_header;
        uint256 result;

        loop
        {
            // Check for stop or if block needs to be rebuilt
            if (fShutdown)
                return;

            if (!fGenerateBitcoins)
                return;

            if (fLimitProcessors && vnThreadsRunning[3] > nLimitProcessors)
                return;

            if (vNodes.empty())
                break;

            bool rc = scanhash_scrypt(
                        (block_header *)&pblock->nVersion, sizeof(block_header), UINTBEGIN(hashTarget),
                        scratchbuf, max_nonce, &sStat[thread_id - 1], nStart, pindexPrev,
                        nTransactionsUpdatedLast, UBEGIN(result), &res_header
            );
            pblock->nNonce = res_header.nonce;

            if (rc)
            {
                static CCriticalSection cs;
                CRITICAL_BLOCK(cs)
                {
                    printf("Thread %d: scan hash result = %i, nonce value = %d, hash = %s, target = %s\n", thread_id, rc, pblock->nNonce, result.ToString().c_str(), hashTarget.ToString().c_str());

                    // Found a solution
                    SetThreadPriority(THREAD_PRIORITY_NORMAL);
                    CheckWork(pblock.get(), *pwalletMain, reservekey);
                    SetThreadPriority(THREAD_PRIORITY_LOWEST);
                }
                break;
            }
            else
                if( (nTransactionsUpdated != nTransactionsUpdatedLast && GetTime() - nStart > 60) ||
                     (pindexPrev != pindexBest)
                )
                    break;

            // Update nTime every few seconds
            pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
        }
    }

    scrypt_buffer_free(scratchbuf);
}


в файле main.h

Code:
#include "scrypt_mine.h"

<...//..>

    /*
    uint256 GetHash() const
    {
        return Hash(BEGIN(nVersion), END(nNonce));
    }*/

    uint256 GetHash() const
    {
        uint256 thash;
        void * scratchbuff = scrypt_buffer_alloc();

        scrypt_hash(CVOIDBEGIN(nVersion), sizeof(block_header), UINTBEGIN(thash), scratchbuff);

        scrypt_buffer_free(scratchbuff);

        return thash;
    }

CVOIDBEGIN и UINTBEGIN это макросы, определенные по аналогии со штатным BEGIN в файле util.h:
Code:
#define UINTBEGIN(a)        ((uint32_t*)&(a))
#define CVOIDBEGIN(a)        ((const void*)&(a))


Плюс значение переменной bnProofOfWorkLimit надо сделать ~uint256(0) >> 20, потому что по умолчанию оно ориентировано на sha256 И настолько высокое, что со scrypt юзер никогда на такой сложности задачу не решит, имхо.

Если будут вопросы, поясню что как.
legendary
Activity: 3108
Merit: 1359
А оно под GPL. Если не закрывать исходный код, то можно юзать референсную реализацию. Правда, референсная реализация это больше proof of concept и страшный тормоз, т.к. написана на чистом C без привязки к какой-либо платформе. К примеру, на I7 970 она у меня выдает 10 килохэшей в секунду. После небольшой оптимизации интринсиками я получил 19. А pooler со своим cpuminer'ом и реализацией на ассемблере позволил 59 выжать. Есть приватные реализации, с которыми можно выжать под 70.

Реализацию pooler'а, позволяющую считать по 3 хэша за цикл на 64-битных процессорах, можно посмотреть тут:

https://github.com/pooler/cpuminer

У меня есть ее адаптация под использование в качестве функции хэшировани заголовков блоков в клиенте, могу выложить если надо.

Приватные реализации вычисляют 4 хэша за цикл, но поделиться не могу, ибо связан словом.  Roll Eyes

Но вообще, оптимизации скорости в клиенте смысла не имеют, дело клиента - хэши проверять на валидность, а там и скорости референсной реализации хватит с головой. А для майнинга можно юзать майнер от pooler'а.
full member
Activity: 181
Merit: 101
Ребята, от всей души желаю Вам УДАЧИ!!!
Как появится рабочий вариант с удовольствием приму участие в тестировании. (если конечно Вам будут нужны тестеры)
legendary
Activity: 3108
Merit: 1359
Scrypt деталь реализации, но влияет на систему фундаментально. Сколько видеокарт, пригодных для майнинга? Миллионы. А сколько процессоров? Десятки миллионов... Уже хотя бы поэтому влияние огромно.

Да и потом, scrypt это лишь дополнение к SHa256, и она ее не отменяет, а дополняет. Wink

1)Но scrypt можно майнить эффективно только на CPU --> низкая мощность сети
--> слабая защищенность --> FAIL --> RIP.
В корне неверно и противоречит логике (майнится только на цпу == ломать можно только на устройствах с хорошим префетчем и предсказанием ветвлений). Читайте статью, ссылку на которую я публиковал выше. Безопасность обеспечивается вовсе не кукурузными мегахэшами, а они в случае sha256-самая настоящая воздушная кукуруза. Для scrypt мегахэш-это все равно что для sha256 тэрахэш. Алгоритм очень тяжелый (в тысячи раз тяжелее таких тяжелых и трудно реализуемых на GPU алгоритмов, как blowfish), и для обеспечения той же степени защиты нужно на порядки меньше итераций в секунду.

Весьма красноречивая табличка:


А то что майнится только на CPU или на прочих подобных устройствах-это хорошо, означает отсутствие конкуренции с биткоином за мощности.
hero member
Activity: 490
Merit: 500
И еще неймкоин и все его предшественники шли по заведомо лузерской тропе прогиба своей системы под централизованную систему DNS ICANN.

Я же хочу, чтобы ICANN прогнулась под такую систему и стала ее частностью.
hero member
Activity: 490
Merit: 500
legendary
Activity: 3108
Merit: 1359
pent? почитай пост выше в тему стереотипов ) Пороц стереотипы даже до идиотизма доводят.  Grin
hero member
Activity: 490
Merit: 500
особенно если форк раскручивать одновременно с i2p и TORом... то вполне себе может не просто взлететь но и подмять под себя основную ветку.

p.s. немного не согласен с предложенным алгоритмом, но с текущим я тоже не согласен.. и своих предложений дать не могу...
Алгоритм я уже усовершенствовал и мне он кажется идеальным. Полностью основан на размышлениях Сатоши в ветке про BitDNS. Завтра буду обсуждать с програмерами. А выкладывать его до альфы смысла не вижу, потому что.

Мне задают вопросы "Не понимаю вашу точку зрения, в неймкоин все в порядке". Вот и в английской ветке уважаемый человек сказал что я несу беспорядочную пургу, и у неймкоина все в порядке.

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

А коммунити связано стереотипами и считает что если это форк Bitcoin, то там по дефолту все в порядке. А никто не изучал и не задавал неудобных вопросов. Вернее задавали и не раз, но это как то само собой заминалось.

In a name of science, question everithing...
legendary
Activity: 3108
Merit: 1359
В английской ветке markm утверждает что все scrypt алгоритмы
до сих пор реализованые в альтфорках -- не настоящие.

сделано так для того чтобы TBX/LTC можно было майнить с помощью
ботнетов а владельцы зараженных машин не замечали что комп чем-то
сильно занят.

Делайте настоящий кошерный scrypt для Namecoin2
а то некрасиво будет.
Scrypt во всех альткоинах прикручен криво, да (scrypt-хэш используется как дополнительный хэш для валидации блоков, который генерится в рантайме, а не сохраняется в цепочке). Это снижает производительность и выглядит нелогично, но неудивительно, т.к. все они являются копипастом с TBX, а ее автору просто не хотелось потратить время на нормальное прикручивание. Чего не скажешь про тех, кто будет форк делать для дела, а не просто лишь бы выкатить очередной недокоин поскорее. Grin

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

http://www.tarsnap.com/scrypt/scrypt.pdf

Пусть markm прочитает это, и троллит потоньше.
legendary
Activity: 3108
Merit: 1359
Завтра-послезавтра выкачу набросок-концепт, возможно...
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
pent, если и вправду будешь делать, то не забудь сохранить обеспеченность монеток доменами.
Пусть NetworkFee будет чем угодно, хоть экстремально низким числом, но никак не будет нулем.
legendary
Activity: 1120
Merit: 1069
особенно если форк раскручивать одновременно с i2p и TORом... то вполне себе может не просто взлететь но и подмять под себя основную ветку.

p.s. немного не согласен с предложенным алгоритмом, но с текущим я тоже не согласен.. и своих предложений дать не могу...
legendary
Activity: 3108
Merit: 1359
В принципе, если сделать форк и раскрутить его, то разработчики могут поумнеть и смержить нужные изменения...

В качестве алгоритма хэширования рекомендую scrypt, это увеличит майнерскую базу, т.к. нормальные процессоры лучше распространены, чем фермы.

Насчет комиссии за создание домена можно сделать аналогично тому, как считалась награда за блок в solidcoin2 раньше, она была привязана к сложности. Некая константа (там 25) и нелинейный коэффициент, зависящий от сложности. Scrypt намнооого тяжелее 2xSHA256, так что сложность едва ли в обозримом будущем превысит единицу, и можно не мудрить особо с нелинейностью, сделать комиссию за создание-продление домена равной сложности в человекопонятном представлении (сложность будет сначала около 0.0000006, потом вырастет до десятых и рост замедлится). Это будет логично - больше майнеров выполняют больше работы и платить надо больше за обеспечиваемую ими защиту.

А чтобы награда за блок и плата за домен не выглядели сильно непропорциональными, можно уменьшить награду за блок на старте (до 25 монет) и соответственно предел количества монет в системе (т.е. стартовать с того этапа эмиссии, на котором биткоин будет в скором времени), или даже больше. Вот такие мысли.
legendary
Activity: 1386
Merit: 1000
Короче от комунити толку...

Создатели namecoin тоже много раз кричали и предлагали обсудить как сделать namecoin,
никто не откликался, до тех пор пока они не выкатили софтину.
hero member
Activity: 490
Merit: 500
Короче от комунити толку...

"Если через 15 минут мне никто не придумает нормальное название фирмы, я назову ее Яблоко". Стив Джобс.

Есть кое какие идеи, делаю форк. Надоело ворошить это ленивое болото неймкоин девелоперов.

Заинтересованным программерам - в личку.
hero member
Activity: 490
Merit: 500
Вообще конечно приятно решать такую сложную задачу.

Но для меня было открытием, что есть задача посложнее - сделать так, чтобы меня услышали.
Pages:
Jump to: