Author

Topic: NovaCoin (scrypt PoW + PoS hybrid) [self-mod] - page 137. (Read 744453 times)

legendary
Activity: 976
Merit: 1003
@penek EN локаль планируется?

движок сторонний, там много локалей...

Code:
[lang]$ ls ./
langreadme.txt                    strings_breton.txt               strings_danish.txt    strings_galician.txt     strings_italian.txt     strings_norwegian_bokmal.txt     strings_ripoarisch.txt     strings_spanish.txt      strings_urdu.txt
strings_aeb.txt                   strings_bulgarian.txt            strings_diq.txt       strings_german.txt       strings_japanese.txt    strings_norwegian_nynorsk.txt    strings_romanian.txt       strings_swedish.txt      strings_vietnamese.txt
strings_afrikaans.txt             strings_catalan.txt              strings_dutch.txt     strings_greek.txt        strings_korean.txt      strings_occitan.txt              strings_russian.txt        strings_swissgerman.txt  strings_volapuk.txt
strings_amharic.txt               strings_chinese_simplified.txt   strings_english.txt   strings_hebrew.txt       strings_latvian.txt     strings_polish.txt               strings_serbian_latin.txt  strings_tagalog.txt
strings_arabicegyptianspoken.txt  strings_chinese_traditional.txt  strings_estonian.txt  strings_hungarian.txt    strings_lb.txt          strings_portuguese_brazil.txt    strings_serbian.txt        strings_ta.txt
strings_arabic.txt                strings_croatian.txt             strings_finnish.txt   strings_icelandic.txt    strings_lithuanian.txt  strings_portuguese_standard.txt  strings_slovak.txt         strings_turkish.txt
strings_belarusian_tarask.txt     strings_czech.txt                strings_french.txt    strings_interlingua.txt  strings_macedonian.txt  strings_qqq.txt                  strings_slovene.txt        strings_ukrainian.txt

Я к тому, что по дефолту весь novaco.in на en - локали, а на вкладке issues - ru

движок автоматом цепает локаль по браузеру, мы ничего не меняли, за исключеним "шкуры"...
sr. member
Activity: 461
Merit: 252
@penek EN локаль планируется?

Я к тому, что по дефолту весь novaco.in на en - локали, а на вкладке issues - ru
legendary
Activity: 976
Merit: 1003
теперь внизу всех страниц домена:
Find a bug? Report on Issues, please.

и как бы чтобы долго не искать, и в меню...

апнуто:
I find a bug/typo or I have a suggestion
legendary
Activity: 1200
Merit: 1021
https://github.com/novacoin-project/novacoin/pull/226

Добавил в всплывающую подсказку зеленой галки.
Или лучше в всплывающую подсказку о состоянии PoS-майнера?
Конечно, удобнее было бы видеть PoS-сложность в подсказке PoS-майнера. А вот PoW-сложность будет выглядеть там несколько нелогично... Я поэтому и не предлагал её показывать.

Я бы сделал так, как предлагал: показывать только PoS-сложность в подсказке PoS-майнера.
legendary
Activity: 3108
Merit: 1359
https://github.com/CryptoManiac/StratumLibrary

Кто желает дергать методы сервера Electrum в среде .NET, это можно без проблем. Правда, это черновик больше, subscribe пока не поддерживается.
Теперь поддерживается.

[PIC]
Продолжение банкета... Раз уж StratumLibrary более-менее работоспособна, пилю библиотеку для работы с базовыми структурами.

https://github.com/CryptoManiac/NovacoinLibrary

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

Пример для такой транзакции:

https://explorer.novaco.in/tx/687d3938436a25cbc04a2bda29cfe755fea68d95f7c281e02796365b90c4b6de

Code:
CTransaction(
 nVersion=1,
 nTime=1405727864,
 CTxIn(txId=340d96b77ec4ee9d42b31cadc2fab911e48d48c36274d516f226d5e85bbc512c,n=1,scriptSig=3045022100c8df1fc17b6ea1355a39b92146ec67b3b53565e636e028010d3a8a87f6f805f202203888b9b74df03c3960773f2a81b2dfd1efb08bb036a8f3600bd24d5ed694cd5a01 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=364c640420de8fa77313475970bf09ce4d0b1f8eabb8f1d6ea49d90c85b202ee,n=1,scriptSig=3045022100b651bf3a6835d714d2c990c742136d769258d0170c9aac24803b986050a8655b0220623651077ff14b0a9d61e30e30f2c15352f70491096f0ec655ae1c79a44e53aa01 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=7adbd5f2e521f567bfea2cb63e65d55e66c83563fe253464b75184a5e462043d,n=0,scriptSig=30440220183609f2b995993acc9df241aff722d48b9a731b0cd376212934565723ed81f00220737e7ce75ef39bdc061d0dcdba3ee24e43b899696a7c96803cee0a79e1f78ecb01 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=999eb03e00a41c2f9fde8865a554ceebbc48d30f4c8ba22dd88da8c9b46fa920,n=3,scriptSig=3045022100ec1ab104ef086ba79b0f2611ebf1bfdd22a7a1020f6630fa1c6707546626e0db022056093d4048a999392185ccc735ef736a5497bd68f60b42e6c0c93ba770b54d0101 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=c0543b86be257ddd85b014a76718a70fab9eaa3c477460e4ca187094d86f369c,n=5,scriptSig=3043021f24275c72f952043174daf01d7f713f878625f0522124a3cab48a0a2e12604202201b47742e6697b0ebdd1e4ba49c74baf142a0228ad0e0ee847488994c9dce784701 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=e1793d4519147782293dd1db6d90e461265d91db2cc6889c37209394d42ad10d,n=5,scriptSig=3044022018a0c3d73b2765d75380614ab36ee8e3c937080894a19166128b1e3357b208fb0220233c9609985f535547381431526867ad0255ec4969afe5c360544992ed6b3ed601 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxOut(nValue=17125,scriptPubKey=OP_DUP OP_HASH160 57d84c814b14bd86bf32f106b733baa693db7dc7 OP_EQUALVERIFY OP_CHECKSIG),
 CTxOut(nValue=40000,scriptPubKey=OP_DUP OP_HASH160 08c8768d5d6bf7c1d9609da4e766c3f1752247b1 OP_EQUALVERIFY OP_CHECKSIG),
nLockTime=0)

На очереди создание собственно скриптов, их выполнение и необходимо-достаточный функционал будет завершен.
Между тем, библиотека уже научилась:

Декодировать и кодировать обратно блоки;
Генерировать пары ключей;
Декодировать и кодировать закрытые ключи в base58 формате;
Генерировать адреса из публичных ключей, извлекать ID ключа или скрита из адресов;
Конвертировать ключи принудительно в сжатый/несжатый вид;
Подписывать данные и проверять подписи.

Примеры набросаны в Program.cs.
Добавился Сатоши-подобный Solver, теперь можно вытаскивать их скриптов публичные ключи и их хэши.

Пример:

Code:
            /// Solver tests
            CScript scriptPubKey = new CScript(Interop.ParseHex("21021ad6ae76a602310e86957d4ca752c81a8725f142fd2fc40f6a7fc2310bb2c749ac"));
            CScript scriptPubKeyHash = new CScript(Interop.ParseHex("76a914edbf189bece45d4afa9848276e949183936bf6a488ac"));

            txnouttype typeRet;
            IList> solutions;

            Console.WriteLine("scriptPubKey solved: {0}", ScriptCode.Solver(scriptPubKey, out typeRet, out solutions));
            Console.WriteLine("scriptPubKey address: {0}", new CPubKey(solutions.First()).GetKeyID().ToString());

            Console.WriteLine("scriptPubKeyHash solved: {0}", ScriptCode.Solver(scriptPubKeyHash, out typeRet, out solutions));
            Console.WriteLine("scriptPubKeyHash address: {0}", new CKeyID(new Hash160(solutions.First())).ToString());

Результат:

Code:
scriptPubKey solved: True
scriptPubKey address: 4ZMR9VZ2m8XCCJvjhvyvQC2VraCwcv89vW
scriptPubKeyHash solved: True
scriptPubKeyHash address: 4bNuwvcUmyBEfHjChtNBJWD5jXa9T8cFcK

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

Code:
            string strBlock1 = "0600000086e539d77573abc0d81feb7896e1aef41a866001bc78bd24f5fe1a0000000000f5822cea59d999f37d896f66899c86e01e764ed6014706f3ceb58281ed55d0e55ab7d155ada3001d0000000005010000005ab7d155010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0363ff02026d05062f503253482fffffffff0100000000000000000000000000010000005ab7d15501a768f8ed022f4080e3c8866bbe8292c7610b826cd467c49a06a1d0ff2ef7cdd6000000006b483045022100dce689d8cda64ebaffd6b96321952f16df34494256c58d2fd83069db7bce40e5022016020f55dc747d845d2057547c650412aa27d7d628e72238579f72e572dafdfe012102916e12c72a41913a5307bf7477db80dd499ea20f1a6bd99a2bdae6229f5aa093ffffffff03000000000000000000d0f1440300000000232102916e12c72a41913a5307bf7477db80dd499ea20f1a6bd99a2bdae6229f5aa093acc23f450300000000232102916e12c72a41913a5307bf7477db80dd499ea20f1a6bd99a2bdae6229f5aa093ac000000000100000091b4d15502c252c9130b1fd1dc8ef59cdb550ed398c4fe12c7ebf3eb917076bbda039b769d010000004847304402204bee0faac004364cdf6483d492333d00ad6f7c925faa3750fef2c79a9065a28102204a5e2b970f776ea1af2c2c03e36e6381d3d69b529d90b512363ae44815a321c601ffffffffc252c9130b1fd1dc8ef59cdb550ed398c4fe12c7ebf3eb917076bbda039b769d02000000494830450221008bf152a838f6f14f0ed1b2afc27821717e43a528e27aec3569ab42fc82f468aa02202cf6c962ef97db6e5ba32ccdd235afdc9a3cbb7907bfe879f8109446485d66dc01ffffffff0116467210000000001976a914edbf189bece45d4afa9848276e949183936bf6a488ac000000000100000017b5d1550229c74fb0004d45fba5baaefed1d9c229a8f1c85c36590cedf3ce6635335963d5000000006a4730440220319a4dfcf1607682d493c6d90087dc35d778a8bfcebe3549bae0af69e8daecb902206e6622367be30d9ccd4fdd27ed09c2fbcc9e5c858b26dfcdd927a8aba637b327012103b103f5d7e9717bc37cc99984b23babc3fff4677728be6b9c1847f6ce78e557f5ffffffff24b91fa6e9c160cc8da306e485942ee76137117aa8adecf531f6af1aef4e9b680000000049483045022100c9b311b7a7f5adeb0e72f962fb81b4cc1d105e32cfd7b1a7641a0fcc014d67c50220527161371a17301448bae87a26df201598b46d00ff452893177e9aed665c357c01ffffffff028e380000000000001976a91400afc350f81916a642a88b5ce8f73508663b531188ac67f46b00000000001976a91420c10f267f55ff4e05a083a8e1f4e882fbca1f4988ac0000000001000000efb6d15501626835db281e1fe6271620b8f67999f2174bb96df0eb3935fc99771e4ff45acf000000006a47304402206c34deb9c07c5477c47d398eaf91dbdf74aff5229c448e82ed0c1d8e2ee30e2d02203fe609434844b3eee21e747e313bcbf98efa4326727db6d2efba7bb627d2e0ce0121030c86c72f59c66824297aa78e433fe7057fd064e03e44c62ec49201ee0184149bffffffff028be30300000000001976a91481fc5cfb7f41afb3baf4138626022b3081b84e1788ac6abd0000000000001976a91499346dcd8ddfa10326697d5387b7df765004f4e388ac0000000046304402205189911c97354edb2965b4a119e6d76281f4c5da8fcead19c97bf6bcc9990fe102200f56d9dd967b036627b32b1e3ef2f819deaaafcc3244332472df7acfe19f1aa5";
            CBlock b1 = new CBlock(Interop.ParseHex(strBlock1).ToList());


            IEnumerable dataBytesForScrypt = b1.header.ToBytes();
            ScryptHash256 scryptHash = ScryptHash256.Compute256(dataBytesForScrypt);

            Console.WriteLine("\nblock1 header hash: {0}", scryptHash.ToString());

Результат:

Code:
block1 header hash: f7223a2029d997661a0a92f846b8b6b83171705cb6d09a007e2e38c762b25aeb

А вот и он:

https://explorer.novaco.in/block/f7223a2029d997661a0a92f846b8b6b83171705cb6d09a007e2e38c762b25aeb

Smiley
full member
Activity: 145
Merit: 103
Ну да - или по таймеру сделать, или просто время последнего блока там выводить.
legendary
Activity: 3108
Merit: 1359
Меняется при обновлении элементов управления, а они обновляются при получении блока обычно... Можно сделать обновление по таймеру, в принципе.
full member
Activity: 145
Merit: 103
 Ещё по поводу сообщений "Последний полученный блок был сгенерирован..". Как там данные обновляются? Давно замечал, что вот навожу курсор - пишет, допустим, "10 секунд назад". Хотя на самом деле уже несколько минут прошло. И хоть несколько раз проверяй - такое впечатление, что до следующего блока время не меняется.. Ну или меняется, но как-то очень редко. Оно, конечно, не принципиально. Но если не работает как надо - тогда зачем нужно?
P.S. использую сборки под windows.
legendary
Activity: 1400
Merit: 1000
И ещё одно предложение - возможно, стоит добавить информацию о текущей PoS-сложности во всплывающей подсказке о состоянии PoS-майнера.
https://github.com/novacoin-project/novacoin/pull/226

Добавил в всплывающую подсказку зеленой галки.
Или лучше в всплывающую подсказку о состоянии PoS-майнера?
legendary
Activity: 1400
Merit: 1000
Под андроид здесь лежал в топике кошелек... Проверяли, работает вменяемо.
Да, вроде работает. Только не полностью совместим с Electrum. У него seed 15 слов. И, похоже, даже база слов другая.
 В последней версии русский язык добавили.. и ещё seed увеличили (до 18 слов против 13 у electrum). Таким образом для NVC основной минус этого кошелька - невозможность POS-майнинга. Т.к. нет возможности извлечь секретный ключ. Хотя может ещё сделают...
Обновил кошелёк до последней версии:
https://yadi.sk/d/dFNu87ELiYPLQ

Так как seed в новой версии не совместим с прошлой версией, то оставлю ссылку на прошлую версию(чтобы в случае чего можно было восстановить старый адрес):
https://yadi.sk/d/F655AB95hpZBe
legendary
Activity: 1912
Merit: 1020
Если только оно по умолчанию будет выключено и будет запрятано очень далеко.
Хорошо. Лишь-бы больше не пришлось вручную постоянно слияния делать.
legendary
Activity: 3108
Merit: 1359
https://github.com/CryptoManiac/StratumLibrary

Кто желает дергать методы сервера Electrum в среде .NET, это можно без проблем. Правда, это черновик больше, subscribe пока не поддерживается.
Теперь поддерживается.


Продолжение банкета... Раз уж StratumLibrary более-менее работоспособна, пилю библиотеку для работы с базовыми структурами.

https://github.com/CryptoManiac/NovacoinLibrary

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

Пример для такой транзакции:

https://explorer.novaco.in/tx/687d3938436a25cbc04a2bda29cfe755fea68d95f7c281e02796365b90c4b6de

Code:
CTransaction(
 nVersion=1,
 nTime=1405727864,
 CTxIn(txId=340d96b77ec4ee9d42b31cadc2fab911e48d48c36274d516f226d5e85bbc512c,n=1,scriptSig=3045022100c8df1fc17b6ea1355a39b92146ec67b3b53565e636e028010d3a8a87f6f805f202203888b9b74df03c3960773f2a81b2dfd1efb08bb036a8f3600bd24d5ed694cd5a01 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=364c640420de8fa77313475970bf09ce4d0b1f8eabb8f1d6ea49d90c85b202ee,n=1,scriptSig=3045022100b651bf3a6835d714d2c990c742136d769258d0170c9aac24803b986050a8655b0220623651077ff14b0a9d61e30e30f2c15352f70491096f0ec655ae1c79a44e53aa01 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=7adbd5f2e521f567bfea2cb63e65d55e66c83563fe253464b75184a5e462043d,n=0,scriptSig=30440220183609f2b995993acc9df241aff722d48b9a731b0cd376212934565723ed81f00220737e7ce75ef39bdc061d0dcdba3ee24e43b899696a7c96803cee0a79e1f78ecb01 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=999eb03e00a41c2f9fde8865a554ceebbc48d30f4c8ba22dd88da8c9b46fa920,n=3,scriptSig=3045022100ec1ab104ef086ba79b0f2611ebf1bfdd22a7a1020f6630fa1c6707546626e0db022056093d4048a999392185ccc735ef736a5497bd68f60b42e6c0c93ba770b54d0101 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=c0543b86be257ddd85b014a76718a70fab9eaa3c477460e4ca187094d86f369c,n=5,scriptSig=3043021f24275c72f952043174daf01d7f713f878625f0522124a3cab48a0a2e12604202201b47742e6697b0ebdd1e4ba49c74baf142a0228ad0e0ee847488994c9dce784701 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxIn(txId=e1793d4519147782293dd1db6d90e461265d91db2cc6889c37209394d42ad10d,n=5,scriptSig=3044022018a0c3d73b2765d75380614ab36ee8e3c937080894a19166128b1e3357b208fb0220233c9609985f535547381431526867ad0255ec4969afe5c360544992ed6b3ed601 030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4c),
 CTxOut(nValue=17125,scriptPubKey=OP_DUP OP_HASH160 57d84c814b14bd86bf32f106b733baa693db7dc7 OP_EQUALVERIFY OP_CHECKSIG),
 CTxOut(nValue=40000,scriptPubKey=OP_DUP OP_HASH160 08c8768d5d6bf7c1d9609da4e766c3f1752247b1 OP_EQUALVERIFY OP_CHECKSIG),
nLockTime=0)

На очереди создание собственно скриптов, их выполнение и необходимо-достаточный функционал будет завершен.
Между тем, библиотека уже научилась:

Декодировать и кодировать обратно блоки;
Генерировать пары ключей;
Декодировать и кодировать закрытые ключи в base58 формате;
Генерировать адреса из публичных ключей, извлекать ID ключа или скрита из адресов;
Конвертировать ключи принудительно в сжатый/несжатый вид;
Подписывать данные и проверять подписи.

Примеры набросаны в Program.cs.
legendary
Activity: 3108
Merit: 1359
Balthazar
Раз уж несколько раз всплывало, можно встроить в официальный клиент настройку ограничения инпутов которые будут делиться (т.е. минимальный размер, например 50 монет)?
Если только оно по умолчанию будет выключено и будет запрятано очень далеко.
hero member
Activity: 613
Merit: 500
Balthazar
Раз уж несколько раз всплывало, можно встроить в официальный клиент настройку ограничения инпутов которые будут делиться (т.е. минимальный размер, например 50 монет)?
тогда уж и максимальный. чтобы автоматом поддерживало заданный один раз оптимум
legendary
Activity: 1912
Merit: 1020
Balthazar
Раз уж несколько раз всплывало, можно встроить в официальный клиент настройку ограничения инпутов которые будут делиться (т.е. минимальный размер, например 50 монет)?
full member
Activity: 145
Merit: 103
Под андроид здесь лежал в топике кошелек... Проверяли, работает вменяемо.
Да, вроде работает. Только не полностью совместим с Electrum. У него seed 15 слов. И, похоже, даже база слов другая.
 В последней версии русский язык добавили.. и ещё seed увеличили (до 18 слов против 13 у electrum). Таким образом для NVC основной минус этого кошелька - невозможность POS-майнинга. Т.к. нет возможности извлечь секретный ключ. Хотя может ещё сделают...
legendary
Activity: 1912
Merit: 1020
А зачем синхронизировать на распике, если можно сгенерировать индексы на десктопе заранее?
Зачем просто, когда можно сложно? ) Захотелось получить бенчмарк новой малины. Получается работало все это дело с 17:30 до 23:30, что-то я не уверен что были все 4 ядра задействованы.
legendary
Activity: 1442
Merit: 1016
Начал эмиграцию своего PoS "майнера" на Raspberry Pi 2. Синхронизация походу затянется, хоть и грузит успешно 4 ядра @900Mhz
А зачем синхронизировать на распике, если можно сгенерировать индексы на десктопе заранее? От десктопного клиента файлы блоков и БД индекса подойдут, главное чтобы движок БД индекса был одинаковый. Roll Eyes

Согласен, я делал и так и так.
Синхронится вообще лучше на машине с SSD, а потом переноси куда хошь.
Тогда просто пока куришь клиент уже синхронится, за полторы минуты.
legendary
Activity: 3108
Merit: 1359
Начал эмиграцию своего PoS "майнера" на Raspberry Pi 2. Синхронизация походу затянется, хоть и грузит успешно 4 ядра @900Mhz
А зачем синхронизировать на распике, если можно сгенерировать индексы на десктопе заранее? От десктопного клиента файлы блоков и БД индекса подойдут, главное чтобы движок БД индекса был одинаковый. Roll Eyes
legendary
Activity: 1912
Merit: 1020
Начал эмиграцию своего PoS "майнера" на Raspberry Pi 2. Синхронизация походу затянется, хоть и грузит успешно 4 ядра @900Mhz
Jump to: