Bitcoin Forum

Local => Кодеры => Topic started by: Many Coins on February 17, 2018, 10:10:24 PM



Title: Про nBits объясните простыми словами, а?
Post by: Many Coins on February 17, 2018, 10:10:24 PM
Привет!

Может кто-нибудь простыми русскими словами объяснить про "сложность = 1.0", "block.nBits = 0x1d00ffff" и другие смежные вопросы?

Я читал Вики - ничего не понял ???

То есть, например мне нужно снизить сложность вычислений от упомянутой 0x1d00ffff в 10 раз - это мне какое значение надо для block.nBits установить? И почему?


Title: Re: Про nBits объясните простыми словами, а?
Post by: A-Bolt on February 17, 2018, 10:42:57 PM
Mastering Bitcoin (https://bitcoinbook.info/wp-content/translations/ru/book.pdf)
глава "Представление сложности"


Title: Re: Про nBits объясните простыми словами, а?
Post by: Many Coins on February 18, 2018, 07:37:18 AM
Mastering Bitcoin (https://bitcoinbook.info/wp-content/translations/ru/book.pdf)
глава "Представление сложности"

Вау как круто!! Спасибище!! Я её всю прочту!!

//мне просто придется это сделать - я прочитал эту главу и снова ничего не понял ;D по ходу не хватает базовых знаний всей этой кухни.


Title: Re: Про nBits объясните простыми словами, а?
Post by: Coin-1 on February 19, 2018, 02:52:05 PM
То есть, например мне нужно снизить сложность вычислений от упомянутой 0x1d00ffff в 10 раз - это мне какое значение надо для block.nBits установить? И почему?
Сложность майнинга - это процесс управляемый и, если речь о Bitcoin, задаётся количеством нулевых старших битов хеша смайненного блока. Ровно в 10 раз, наверно, не получится снизить сложность, так как здесь двоичная математика. Можно снизить, например, в 8 раз, уменьшив число нулевых битов на 3.


Title: Re: Про nBits объясните простыми словами, а?
Post by: Many Coins on February 19, 2018, 03:57:49 PM
То есть, например мне нужно снизить сложность вычислений от упомянутой 0x1d00ffff в 10 раз - это мне какое значение надо для block.nBits установить? И почему?
Сложность майнинга - это процесс управляемый и, если речь о Bitcoin, задаётся количеством нулевых старших битов хеша смайненного блока. Ровно в 10 раз, наверно, не получится снизить сложность, так как здесь двоичная математика. Можно снизить, например, в 8 раз, уменьшив число нулевых битов на 3.

Отлично!

...но как это сделать? ;D


Title: Re: Про nBits объясните простыми словами, а?
Post by: neiros on February 19, 2018, 04:07:27 PM
Я не заморачивался такими нюансами.
В debag.log подобной строчкой:
Code:
printf("=== 0x201fffff target: %s\n", CBigNum().SetCompact(0x201fffff).getuint256().GetHex().c_str());
вывел несколько вариантов:
Code:
=== 0x1f0fffff target: 000fffff00000000000000000000000000000000000000000000000000000000
=== 0x1e0fffff target: 00000fffff000000000000000000000000000000000000000000000000000000
=== 0x1d0fffff target: 0000000fffff0000000000000000000000000000000000000000000000000000
=== 0x1c0fffff target: 000000000fffff00000000000000000000000000000000000000000000000000
=== 0x1b0fffff target: 00000000000fffff000000000000000000000000000000000000000000000000
=== 0x1a0fffff target: 0000000000000fffff0000000000000000000000000000000000000000000000
=== 0x190fffff target: 000000000000000fffff00000000000000000000000000000000000000000000
=== 0x180fffff target: 00000000000000000fffff000000000000000000000000000000000000000000
=== 0x170fffff target: 0000000000000000000fffff0000000000000000000000000000000000000000
=== 0x160fffff target: 000000000000000000000fffff00000000000000000000000000000000000000
=== 0x150fffff target: 00000000000000000000000fffff000000000000000000000000000000000000
=== 0x140fffff target: 0000000000000000000000000fffff0000000000000000000000000000000000
=== 0x130fffff target: 000000000000000000000000000fffff00000000000000000000000000000000
=== 0x120fffff target: 00000000000000000000000000000fffff000000000000000000000000000000
=== 0x110fffff target: 0000000000000000000000000000000fffff0000000000000000000000000000
=== 0x100fffff target: 000000000000000000000000000000000fffff00000000000000000000000000

=== 0x1e00ffff target: 000000ffff000000000000000000000000000000000000000000000000000000
=== 0x1e000fff target: 0000000fff000000000000000000000000000000000000000000000000000000
и выбирал среди них подходящие.

Вот это тоже может понадобиться:
Code:
=== CBigNum(~uint256(0) >> 10): 003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 16): 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 20): 00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 21): 000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 22): 000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 23): 000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 24): 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 25): 0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 26): 0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 27): 0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 28): 0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 29): 00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 30): 00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 31): 00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
=== CBigNum(~uint256(0) >> 32): 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff


Title: Re: Про nBits объясните простыми словами, а?
Post by: Many Coins on February 19, 2018, 07:31:04 PM
Я не заморачивался такими нюансами.
В debag.log подобной строчкой:
Code:
printf("=== 0x201fffff target: %s\n", CBigNum().SetCompact(0x201fffff).getuint256().GetHex().c_str());
вывел несколько вариантов:
Code:
=== 0x1f0fffff target: 000fffff00000000000000000000000000000000000000000000000000000000
и выбирал среди них подходящие.

То есть, я правильно понял, что если прописать block.nBits = 0x1f0fffff - то оно будет искать хэш с тремя лидирующими нулями (и меньше)?


Title: Re: Про nBits объясните простыми словами, а?
Post by: neiros on February 20, 2018, 06:33:01 AM

То есть, я правильно понял, что если прописать block.nBits = 0x1f0fffff - то оно будет искать хэш с тремя лидирующими нулями (и меньше(хеш), т.е. и больше(нулей))?

Да. При условии, что лимит это позволит(дополнение ::)).


Title: Re: Про nBits объясните простыми словами, а?
Post by: Many Coins on February 20, 2018, 11:07:57 AM
Да. При условии, что лимит это позволит(дополнение ::)).

Что за лимит? Еще какую-то переменную нужно поправить?

**ну да, хэш меньше - нулей больше)) может случайно так совпасть, что первое совпадение будет не с 3-мя, а с 5-ю нулями, например.


Title: Re: Про nBits объясните простыми словами, а?
Post by: neiros on February 20, 2018, 12:30:06 PM
Да. При условии, что лимит это позволит(дополнение ::)).

Что за лимит? Еще какую-то переменную нужно поправить?

Ага. Вот эту - https://github.com/neiros/---TTC---/blob/TTC-all-Lyra2REv2/src/chainparams.cpp#L35