Bitcoin Forum
May 05, 2024, 06:50:12 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;
}
It is a common myth that Bitcoin is ruled by a majority of miners. This is not true. Bitcoin miners "vote" on the ordering of transactions, but that's all they do. They can't vote to change the network rules.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714935012
Hero Member
*
Offline Offline

Posts: 1714935012

View Profile Personal Message (Offline)

Ignore
1714935012
Reply with quote  #2

1714935012
Report to moderator
1714935012
Hero Member
*
Offline Offline

Posts: 1714935012

View Profile Personal Message (Offline)

Ignore
1714935012
Reply with quote  #2

1714935012
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!