somenick (OP)
Legendary
Offline
Activity: 1286
Merit: 1004
|
|
May 11, 2012, 05:25:49 AM |
|
Это так круто брать хеш ? Я уже боюсь дальше читать ) Кто считает что это нормальный способ, и этот способ не зависит от архитектуры компьютера ? #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)); } 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; }
|
|
|
|
LZ
Legendary
Offline
Activity: 1722
Merit: 1072
P2P Cryptocurrency
|
|
May 11, 2012, 08:13:55 PM |
|
Главное, чтобы работало.
|
My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
|
|
|
SHawk
|
|
May 12, 2012, 07:18:01 AM |
|
меня в этой конструкции только отсутствие pragma pack смущает. Но все так пишут и это, обычно, работает. Написане кода - всегда компромис
|
|
|
|
rPman
Legendary
Offline
Activity: 1120
Merit: 1069
|
|
May 12, 2012, 07:57:22 AM |
|
хм, а как это собирается на x86_64 платформе О_о, я имею в виду int p.s. не ожидал, как минимум прагма и __int32 должны были стоять.
|
|
|
|
somenick (OP)
Legendary
Offline
Activity: 1286
Merit: 1004
|
|
May 12, 2012, 06:57:06 PM |
|
здесь вообще зависимость от little-endian и big-endian
|
|
|
|
SHawk
|
|
May 12, 2012, 07:44:36 PM |
|
здесь вообще зависимость от little-endian и big-endian
если на это закладываться, то как минимум, нужно бы еще декларацию uint256 приводить. В ней, наверняка, эта зависимость тоже есть и исправлением приведенного кода она не обойдется... да и ХЭШ(&int) в little-endian и big-endian по-любому разный будет, не нужно так много строк кода приводить для того, чтобы это показать...
|
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
May 12, 2012, 11:09:22 PM Last edit: May 13, 2012, 12:03:33 AM by Balthazar |
|
Вышеприведенный код работает нормально на большинстве платформ, потому что размер структуры 80 байт ( кратно 2 и 8 ) . Со структурой других размеров (81 байт, к примеру) данный код уже неработоспособен без #pragma pack(push, 1) ... #pragma pack(pop). Но структура не может иметь размер, отличный от 80 байт, потому что заголовок блока всегда имеет размер 80 байт, это требование протокола, поэтому можно не думать о выравнивании.
|
|
|
|
somenick (OP)
Legendary
Offline
Activity: 1286
Merit: 1004
|
|
May 12, 2012, 11:56:01 PM |
|
вывод код гавно ) (тему можно закрывать )
|
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
May 13, 2012, 12:02:59 AM |
|
вывод код гавно ) (тему можно закрывать ) Если бы автор сделал что-то ценное и полезное для сообщества, его выводы имели бы какой-то вес. А называть говном проект, тыкая в фрагменты кода в нем, много ума-времени-сил не надо. Тему можно закрывать.
|
|
|
|
somenick (OP)
Legendary
Offline
Activity: 1286
Merit: 1004
|
|
May 13, 2012, 03:12:17 AM Last edit: May 13, 2012, 03:22:42 AM by somenick |
|
вывод код гавно ) (тему можно закрывать ) Если бы автор сделал что-то ценное и полезное для сообщества, его выводы имели бы какой-то вес. А называть говном проект, тыкая в фрагменты кода в нем, много ума-времени-сил не надо. Тему можно закрывать. а что вас задело ? моё высказывание ? ) Как будто это ваш код ) И что вы так привязываетесь к моей личности, я же не поносю вас говном ), хотя мог бы ), потому как вы ВООБЩЕ ничего не сделали, да ещё пытаетесь что то другим сказать. Я хотябы взял исходники почитал, и выявил очевидные программиские промашки, и выкладываю свои находки для других людей. Если вам это не интересно... никто вас сюда заходить не заставляет. И вообще когда то была статья что что якобы биткоин написан качественным программистом. Так что то это не очень то подтвержается.
|
|
|
|
ArsenShnurkov
Legendary
Offline
Activity: 1386
Merit: 1000
|
|
May 13, 2012, 05:16:18 AM |
|
Я хотябы взял исходники почитал, и выявил очевидные программиские промашки, и выкладываю свои находки для других людей.
Мне нравится, пиши еще. И вообще когда то была статья что что якобы биткоин написан качественным программистом. Так что то это не очень то подтвержается.
И это хорошо, а то итак параноя замучала...
|
|
|
|
LZ
Legendary
Offline
Activity: 1722
Merit: 1072
P2P Cryptocurrency
|
|
May 13, 2012, 03:57:47 PM |
|
Bitcoin написан гением, а гениальность, в отличие от качества, не измеряется. Так что неважно качественный или некачественный программист. Он - гений!а что вас задело ? моё высказывание ? ) Меня вот задевает. Код работает, а Вы вдруг называете чем-то нехорошим.
|
My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
May 13, 2012, 08:50:54 PM |
|
Да просто на любое критическое высказывание в подобной форме всегда возникает закономерный вопрос "а кто вы, собственно, вообще такой?". И дело тут не в том, задело или не задело.
|
|
|
|
ArsenShnurkov
Legendary
Offline
Activity: 1386
Merit: 1000
|
|
May 13, 2012, 09:48:02 PM |
|
|
|
|
|
SHawk
|
|
May 14, 2012, 04:05:40 PM |
|
вывод код гавно ) (тему можно закрывать ) Давайте сделаем так: Вы предлагаете (здесь) свою реализацию кода, так сказать, чтобы критика была конструктивной. А потом, если захотите, сможете ее (свою реализацию) сами прокомментировать...
|
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
May 14, 2012, 04:43:30 PM |
|
Вы предлагаете (здесь) свою реализацию кода, так сказать, чтобы критика была конструктивной.
Причем, полностью совместимую с протоколом.
|
|
|
|
somenick (OP)
Legendary
Offline
Activity: 1286
Merit: 1004
|
|
May 15, 2012, 06:05:09 PM |
|
даю на_водку byte* Hash(CBlock& block)
вообще я не собираюсь исправлять чужие баги. желание было и есть понять СМЫСЛ. и как я уже писал, для меня не является сложностью написать свой клиент, зная алгоритм.
|
|
|
|
rPman
Legendary
Offline
Activity: 1120
Merit: 1069
|
|
May 15, 2012, 06:26:48 PM |
|
вообще я не собираюсь исправлять чужие баги. желание было и есть понять СМЫСЛ. и как я уже писал, для меня не является сложностью написать свой клиент, зная алгоритм. А если за плату? Во сколько можно оценить исправление алгоритма хеширования? В том числе ту часть, из-за которой (как утверждают некоторые на форуме) текущая реализация официального клиента очень медленно обрабатывает загружаемые блоки (в т.ч. при первой загрузке), даже если загрузка происходит с соседней машины в локальной сети.
|
|
|
|
N.Z.
|
|
May 15, 2012, 06:51:35 PM |
|
В том числе ту часть, из-за которой (как утверждают некоторые на форуме) текущая реализация официального клиента очень медленно обрабатывает загружаемые блоки (в т.ч. при первой загрузке), даже если загрузка происходит с соседней машины в локальной сети. Вроде бы это исправляли недавно, не? И по словам тех же некоторых стало все значительно быстрее. Уже не помню тему на форуме, но вроде бы в официально-релизной за 0.6.0 или 0.6.1
|
|
|
|
SHawk
|
|
May 15, 2012, 07:10:24 PM |
|
даю на_водку byte* Hash(CBlock& block)
вообще я не собираюсь исправлять чужие баги. желание было и есть понять СМЫСЛ. и как я уже писал, для меня не является сложностью написать свой клиент, зная алгоритм. Чет на водку не хватает... Можно подробней? Меня гложут сильные сомнения, что с такой наводкой код ровно так же остается зависимым от порядка байт в слове. Ага?
|
|
|
|
|