Bitcoin Forum
May 09, 2024, 11:12:51 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 установить? И почему?
1715253171
Hero Member
*
Offline Offline

Posts: 1715253171

View Profile Personal Message (Offline)

Ignore
1715253171
Reply with quote  #2

1715253171
Report to moderator
1715253171
Hero Member
*
Offline Offline

Posts: 1715253171

View Profile Personal Message (Offline)

Ignore
1715253171
Reply with quote  #2

1715253171
Report to moderator
1715253171
Hero Member
*
Offline Offline

Posts: 1715253171

View Profile Personal Message (Offline)

Ignore
1715253171
Reply with quote  #2

1715253171
Report to moderator
Transactions must be included in a block to be properly completed. When you send a transaction, it is broadcast to miners. Miners can then optionally include it in their next blocks. Miners will be more inclined to include your transaction if it has a higher transaction fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715253171
Hero Member
*
Offline Offline

Posts: 1715253171

View Profile Personal Message (Offline)

Ignore
1715253171
Reply with quote  #2

1715253171
Report to moderator
1715253171
Hero Member
*
Offline Offline

Posts: 1715253171

View Profile Personal Message (Offline)

Ignore
1715253171
Reply with quote  #2

1715253171
Report to moderator
A-Bolt
Legendary
*
Offline Offline

Activity: 2315
Merit: 2316


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: 2450
Merit: 2190



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!