Bitcoin Forum
May 07, 2024, 11:25:30 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Про nBits объясните простыми словами, а?  (Read 188 times)
Many Coins (OP)
Member
**
Offline Offline

Activity: 266
Merit: 11

Lord Shiva


View Profile
February 17, 2018, 10:10:24 PM
 #1

Привет!

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

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

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

Posts: 1715081130

View Profile Personal Message (Offline)

Ignore
1715081130
Reply with quote  #2

1715081130
Report to moderator
Whoever mines the block which ends up containing your transaction will get its fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
A-Bolt
Legendary
*
Offline Offline

Activity: 2315
Merit: 2312


View Profile
February 17, 2018, 10:42:57 PM
Merited by Many Coins (1)
 #2

Mastering Bitcoin
глава "Представление сложности"
Many Coins (OP)
Member
**
Offline Offline

Activity: 266
Merit: 11

Lord Shiva


View Profile
February 18, 2018, 07:37:18 AM
Last edit: February 18, 2018, 08:02:24 AM by Many Coins
 #3

Mastering Bitcoin
глава "Представление сложности"

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

//мне просто придется это сделать - я прочитал эту главу и снова ничего не понял Grin по ходу не хватает базовых знаний всей этой кухни.
Coin-1
Legendary
*
Offline Offline

Activity: 2436
Merit: 2174



View Profile
February 19, 2018, 02:52:05 PM
 #4

То есть, например мне нужно снизить сложность вычислений от упомянутой 0x1d00ffff в 10 раз - это мне какое значение надо для block.nBits установить? И почему?
Сложность майнинга - это процесс управляемый и, если речь о Bitcoin, задаётся количеством нулевых старших битов хеша смайненного блока. Ровно в 10 раз, наверно, не получится снизить сложность, так как здесь двоичная математика. Можно снизить, например, в 8 раз, уменьшив число нулевых битов на 3.
Many Coins (OP)
Member
**
Offline Offline

Activity: 266
Merit: 11

Lord Shiva


View Profile
February 19, 2018, 03:57:49 PM
 #5

То есть, например мне нужно снизить сложность вычислений от упомянутой 0x1d00ffff в 10 раз - это мне какое значение надо для block.nBits установить? И почему?
Сложность майнинга - это процесс управляемый и, если речь о Bitcoin, задаётся количеством нулевых старших битов хеша смайненного блока. Ровно в 10 раз, наверно, не получится снизить сложность, так как здесь двоичная математика. Можно снизить, например, в 8 раз, уменьшив число нулевых битов на 3.

Отлично!

...но как это сделать? Grin
neiros
Legendary
*
Offline Offline

Activity: 3500
Merit: 1100



View Profile WWW
February 19, 2018, 04:07:27 PM
 #6

Я не заморачивался такими нюансами.
В 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

Many Coins (OP)
Member
**
Offline Offline

Activity: 266
Merit: 11

Lord Shiva


View Profile
February 19, 2018, 07:31:04 PM
 #7

Я не заморачивался такими нюансами.
В debag.log подобной строчкой:
Code:
printf("=== 0x201fffff target: %s\n", CBigNum().SetCompact(0x201fffff).getuint256().GetHex().c_str());
вывел несколько вариантов:
Code:
=== 0x1f0fffff target: 000fffff00000000000000000000000000000000000000000000000000000000
и выбирал среди них подходящие.

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

Activity: 3500
Merit: 1100



View Profile WWW
February 20, 2018, 06:33:01 AM
Last edit: February 20, 2018, 07:24:09 AM by neiros
 #8


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

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

Many Coins (OP)
Member
**
Offline Offline

Activity: 266
Merit: 11

Lord Shiva


View Profile
February 20, 2018, 11:07:57 AM
 #9

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

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

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

Activity: 3500
Merit: 1100



View Profile WWW
February 20, 2018, 12:30:06 PM
 #10

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

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

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

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!