Bitcoin Forum
May 05, 2024, 03:53:07 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Исходники bitcoin  (Read 5395 times)
somenick (OP)
Legendary
*
Offline Offline

Activity: 1286
Merit: 1004


View Profile
May 11, 2012, 05:25:49 AM
 #1

Это так круто брать хеш ?  Shocked
Я уже боюсь дальше читать )
Кто считает что это нормальный способ, и этот способ не зависит от архитектуры компьютера ?

Code:
#define BEGIN(a)            ((char*)&(a))
#define END(a)              ((char*)&((&(a))[1]))

class CBlock
{
public:
    // header
    int nVersion;
    uint256 hashPrevBlock;
    uint256 hashMerkleRoot;
    unsigned int nTime;
    unsigned int nBits;
    unsigned int nNonce;

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


Code:
inline uint256 Hash(const T1 pbegin, const T1 pend)
{
    static unsigned char pblank[1];
    uint256 hash1;
    SHA256((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), (unsigned char*)&hash1);
    uint256 hash2;
    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
    return hash2;
}
1714924387
Hero Member
*
Offline Offline

Posts: 1714924387

View Profile Personal Message (Offline)

Ignore
1714924387
Reply with quote  #2

1714924387
Report to moderator
1714924387
Hero Member
*
Offline Offline

Posts: 1714924387

View Profile Personal Message (Offline)

Ignore
1714924387
Reply with quote  #2

1714924387
Report to moderator
"There should not be any signed int. If you've found a signed int somewhere, please tell me (within the next 25 years please) and I'll change it to unsigned int." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714924387
Hero Member
*
Offline Offline

Posts: 1714924387

View Profile Personal Message (Offline)

Ignore
1714924387
Reply with quote  #2

1714924387
Report to moderator
1714924387
Hero Member
*
Offline Offline

Posts: 1714924387

View Profile Personal Message (Offline)

Ignore
1714924387
Reply with quote  #2

1714924387
Report to moderator
1714924387
Hero Member
*
Offline Offline

Posts: 1714924387

View Profile Personal Message (Offline)

Ignore
1714924387
Reply with quote  #2

1714924387
Report to moderator
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
May 11, 2012, 08:13:55 PM
 #2

Главное, чтобы работало. Cool

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
SHawk
Sr. Member
****
Offline Offline

Activity: 658
Merit: 250


View Profile
May 12, 2012, 07:18:01 AM
 #3

меня в этой конструкции только отсутствие pragma pack смущает. Но все так пишут и это, обычно, работает.
Написане кода - всегда компромис Smiley
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
May 12, 2012, 07:57:22 AM
 #4

хм, а как это собирается на x86_64 платформе О_о, я имею в виду int
p.s. не ожидал, как минимум прагма и __int32 должны были стоять.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
somenick (OP)
Legendary
*
Offline Offline

Activity: 1286
Merit: 1004


View Profile
May 12, 2012, 06:57:06 PM
 #5

здесь вообще зависимость от little-endian и big-endian
SHawk
Sr. Member
****
Offline Offline

Activity: 658
Merit: 250


View Profile
May 12, 2012, 07:44:36 PM
 #6

здесь вообще зависимость от little-endian и big-endian


если на это закладываться, то как минимум, нужно бы еще декларацию uint256 приводить. В ней, наверняка, эта зависимость тоже есть и исправлением приведенного кода она не обойдется...

да и ХЭШ(&int) в little-endian и big-endian по-любому разный будет, не нужно так много строк кода приводить для того, чтобы это показать...
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
May 12, 2012, 11:09:22 PM
Last edit: May 13, 2012, 12:03:33 AM by Balthazar
 #7

Вышеприведенный код работает нормально на большинстве платформ, потому что размер структуры 80 байт ( кратно 2 и 8 ) . Со структурой других размеров (81 байт, к примеру) данный код уже неработоспособен без #pragma pack(push, 1) ... #pragma pack(pop). Но структура не может иметь размер, отличный от 80 байт, потому что заголовок блока всегда имеет размер 80 байт, это требование протокола, поэтому можно не думать о выравнивании.
somenick (OP)
Legendary
*
Offline Offline

Activity: 1286
Merit: 1004


View Profile
May 12, 2012, 11:56:01 PM
 #8

вывод код гавно ) (тему можно закрывать Smiley )
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
May 13, 2012, 12:02:59 AM
 #9

вывод код гавно ) (тему можно закрывать Smiley )
Если бы автор сделал что-то ценное и полезное для сообщества, его выводы имели бы какой-то вес. А называть говном проект, тыкая в фрагменты кода в нем, много ума-времени-сил не надо. Тему можно закрывать. Smiley
somenick (OP)
Legendary
*
Offline Offline

Activity: 1286
Merit: 1004


View Profile
May 13, 2012, 03:12:17 AM
Last edit: May 13, 2012, 03:22:42 AM by somenick
 #10

вывод код гавно ) (тему можно закрывать Smiley )
Если бы автор сделал что-то ценное и полезное для сообщества, его выводы имели бы какой-то вес. А называть говном проект, тыкая в фрагменты кода в нем, много ума-времени-сил не надо. Тему можно закрывать. Smiley

а что вас задело ? моё высказывание ? ) Как будто это ваш код )
И что вы так привязываетесь к моей личности, я же не поносю вас говном ), хотя мог бы ), потому как вы ВООБЩЕ ничего не сделали, да ещё пытаетесь что то другим сказать.
Я хотябы взял исходники почитал, и выявил очевидные программиские промашки, и выкладываю свои находки для других людей. Если вам это не интересно... никто вас сюда заходить не заставляет.

И вообще когда то была статья что что якобы биткоин написан качественным программистом. Так что то это не очень то подтвержается.


ArsenShnurkov
Legendary
*
Offline Offline

Activity: 1386
Merit: 1000



View Profile
May 13, 2012, 05:16:18 AM
 #11

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

Мне нравится, пиши еще.


И вообще когда то была статья что что якобы биткоин написан качественным программистом. Так что то это не очень то подтвержается.

И это хорошо, а то итак параноя замучала...
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
May 13, 2012, 03:57:47 PM
 #12

Bitcoin написан гением, а гениальность, в отличие от качества, не измеряется.
Так что неважно качественный или некачественный программист. Он - гений!

а что вас задело ? моё высказывание ? )
Меня вот задевает. Код работает, а Вы вдруг называете чем-то нехорошим. Angry

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
May 13, 2012, 08:50:54 PM
 #13

Да просто на любое критическое высказывание в подобной форме всегда возникает закономерный вопрос "а кто вы, собственно, вообще такой?". И дело тут не в том, задело или не задело.
ArsenShnurkov
Legendary
*
Offline Offline

Activity: 1386
Merit: 1000



View Profile
May 13, 2012, 09:48:02 PM
 #14

https://bitcointalk.org/index.php?topic=81651.0
SHawk
Sr. Member
****
Offline Offline

Activity: 658
Merit: 250


View Profile
May 14, 2012, 04:05:40 PM
 #15

вывод код гавно ) (тему можно закрывать Smiley )

Давайте сделаем так:
Вы предлагаете (здесь) свою реализацию кода, так сказать, чтобы критика была конструктивной.
А потом, если захотите, сможете ее (свою реализацию) сами прокомментировать... Smiley
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
May 14, 2012, 04:43:30 PM
 #16

Вы предлагаете (здесь) свою реализацию кода, так сказать, чтобы критика была конструктивной.
Причем, полностью совместимую с протоколом. Roll Eyes
somenick (OP)
Legendary
*
Offline Offline

Activity: 1286
Merit: 1004


View Profile
May 15, 2012, 06:05:09 PM
 #17

даю на_водку
Code:
byte* Hash(CBlock& block)

вообще я не собираюсь исправлять чужие баги.
желание было и есть понять СМЫСЛ.
и как я уже писал, для меня не является сложностью написать свой клиент, зная алгоритм.
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
May 15, 2012, 06:26:48 PM
 #18

вообще я не собираюсь исправлять чужие баги.
желание было и есть понять СМЫСЛ.
и как я уже писал, для меня не является сложностью написать свой клиент, зная алгоритм.
А если за плату?
Во сколько можно оценить исправление алгоритма хеширования? В том числе ту часть, из-за которой (как утверждают некоторые на форуме) текущая реализация официального клиента очень медленно обрабатывает загружаемые блоки (в т.ч. при первой загрузке), даже если загрузка происходит с соседней машины в локальной сети.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
N.Z.
Sr. Member
****
Offline Offline

Activity: 427
Merit: 250



View Profile
May 15, 2012, 06:51:35 PM
 #19

Quote
В том числе ту часть, из-за которой (как утверждают некоторые на форуме) текущая реализация официального клиента очень медленно обрабатывает загружаемые блоки (в т.ч. при первой загрузке), даже если загрузка происходит с соседней машины в локальной сети.
Вроде бы это исправляли недавно, не? И по словам тех же некоторых стало все значительно быстрее. Уже не помню тему на форуме, но вроде бы в официально-релизной за 0.6.0 или 0.6.1
SHawk
Sr. Member
****
Offline Offline

Activity: 658
Merit: 250


View Profile
May 15, 2012, 07:10:24 PM
 #20

даю на_водку
Code:
byte* Hash(CBlock& block)

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

Чет на водку не хватает... Можно подробней?
Меня гложут сильные сомнения, что с такой наводкой код ровно так же остается зависимым от порядка байт в слове. Ага?
Pages: [1] 2 »  All
  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!