obliczenia

Początkujący
Posty: 2
Rejestracja: 31 maja 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

obliczenia

Postautor: wasylek » wtorek, 31 maja 2011, 15:51

Witam wszystkich maniaków o otwartych umysłach.
Niedawno zaraziłem się 'bitcoinem'... Czytałem sporo i widzę, że ma to naprawdę sens. Zastanawiam mnie jednak jedna rzecz. Mianowicie - co nasze komputery obliczają? Zauważyłem, że obliczenia absorbują ogromne zasoby mojego komputera, a przecież ludzi połączonych są tysiące, czy setki tysięcy.

Co my właściwie obliczamy i dla kogo?

Gdy dowiedziałem się o tych obliczeniach, od razu na myśl przeszedł mi projekt SETI wykorzystujący moc obliczeniową pojedynczych komputerów połączonych w sieci, do obliczeń ogromnych ilości danych. W tamtym przypadku w imię nauki i za darmo. Tutaj dostajemy za to kasę - pytanie - co i dla kogo obliczamy?

Pozdrowienia!
wasylek

Początkujący
Posty: 36
Rejestracja: 23 maja 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: obliczenia

Postautor: zerth » wtorek, 31 maja 2011, 16:11

Obliczamy hashe dla nikogo. Dla siebie. Obliczenia nie mają jakiegoś wielkiego sensu. Jedynym ich sensem jest to, że są długotrwale. Żadnego pożytku z tych obliczeń nie ma :-)
Obrazek

Początkujący
Posty: 44
Rejestracja: 5 maja 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: obliczenia

Postautor: Shudde M'ell » wtorek, 31 maja 2011, 16:18

A czy nie jest to tak, że obliczenia są wykorzystywane celem zabezpieczenia całej tej sieci?

Dyskutant
Posty: 191
Rejestracja: 28 maja 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: obliczenia

Postautor: Muniek » wtorek, 31 maja 2011, 17:08

Shudde M'ell pisze:A czy nie jest to tak, że obliczenia są wykorzystywane celem zabezpieczenia całej tej sieci?
Oczywiście że tak właśnie jest. To dzięki "obliczaniu" hashów działa cała sieć.

Początkujący
Posty: 2
Rejestracja: 31 maja 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: obliczenia

Postautor: wasylek » środa, 1 czerwca 2011, 08:36

Ok, wszystko fajnie, ale skąd mamy pewność, że obliczenia te nie mają sensu?
Czy masz sto procent pewności, że niczemu to nie służy?
Program ma otwarty kod, można to zweryfikować na 100%?? Nie znam się na programowaniu itd. Samemu ni jestem w stanie tego sprawdzić i nie wiem czy de'facto można to sprawdzić; czy w kodzie jest jakaś linia, która pokazuje, że bezspornie obliczenia są bez sensu.

Na strukturę bitcoin trafiłem przypadkiem. Śledzę dość skrupulatnie finansowe wydarzenia na świecie. Dość solidnie 'wdepnąłem' w rozmaite teorie spiskowe i pseudo spiskowe. Śledząc historię dolara, FED-u, manipulacji i spekulacji giełdowych, natrafiłem w końcu na bitcoin. Mając w głowie te wszystkie finansowe przekręty, aż mi trudno uwierzyć, że bitcoin nie ma drugiego dna.

W chwili obecnej postrzegam ten system jako sprytnie wymyślone narzędzie do wykorzystania ogromnej mocy obliczeniowej. Przecież taka ilość pracujących, niejednokrotnie podkręconych procesorów, nie może się zwyczajnie marnować.

Czy aby autor pod pozorem zarabiania pieniędzy nie wykorzystuje tego?

Kolejny raz wspomnę o SETI - swego czasu (gdy Internet w Polsce raczkował) można było ściągnąć wygaszacz ekranu programu SETI. Gdy wygaszacz się włączał, komputer zaczynał obliczenia dla SETI. Oczywiście wyglądało to kompletnie bez sensu, a de'facto, procesor odszyfrowywał jakieś tam sygnały z radio-teleskopów. Dla nas bez znaczenia, dla SETI bardzo pomocne, ważne.

piszesz:
zerth pisze: [...] Jedynym ich sensem jest to, że są długotrwale. Żadnego pożytku z tych obliczeń nie ma :-)
Są długotrwałe - dlatego dają mi do myślenia. My nie mamy z nich pożytku, jedynie korzystamy ze skutku ubocznego. Pytanie, czy komuś to nie służy na innej płaszczyźnie.

Pozdrawiam!
wasylek

Wygadany
Posty: 507
Rejestracja: 28 marca 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: obliczenia

Postautor: orka » środa, 1 czerwca 2011, 08:52

Kod jest prosty i liczy funkcje skrótu sha 256 z bieżących transakcji w sieci bitcoin.
http://pl.wikipedia.org/wiki/SHA-1

Do tego celu najwydajniejsze są procesory strumieniowe których jest bardzo dużo w kartach z serii 5xxx (od 800 do 1600 sztuk na procesor graficzny), mam nadzieje że dostatecznie wytłumaczyłem :mrgreen:

Dyskutant
Awatar użytkownika
Posty: 241
Rejestracja: 22 lutego 2011
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Dolnośląskie, Polska

Re: obliczenia

Postautor: M4v3R » środa, 1 czerwca 2011, 09:01

Bitcoin jest w całości otwarty. Otwarty jest zarówno kod klienta, jak i algorytmy, które są wykorzystywane do jego działania. Ja jestem programistą i zapewniam Cię - obliczenia te nie są wykorzystywane w żaden inny sposób. To, co klient (miner) Bitcoin robi, to bierze tzw. blok transakcji, które miały miejsce od ostatniego "bloku", następnie szuka takiego zestawu liczb, aby suma kontrolna SHA-256 tego bloku odpowiadała danemu kryterium (tzw. target - cel). Ponieważ wyniku SHA-256 nie da się przewidzieć dla danego zestawu danych wejściowych, to trzeba próbować setki miliardów (w rzeczywistości dużo więcej) razy zanim trafi się na ten właściwy. Z kolei inni użytkownicy sieci mogą łatwo sprawdzić, czy podany zestaw danych pasuje do celu. Wszystko po to, żeby najpierw "wytworzyć" monety, które będą akceptowane przez sieć, a następnie by potwierdzać transakcje tymi monetami. Bez tej pracy każdy mógłby ogłosić w sieci że właśnie "nabył" np. 1000 BTC, a w takich warunkach waluta nie mogłaby istnieć.

W rzeczywistości, tak jak orka powiedział (tylko błędnie podlinkował do Wikipedii do starszego algorytmu SHA-1), sam kod do wykonywania obliczeń jest banalny:

Kod: Zaznacz cały

unsigned int ScanHash_CryptoPP(char* pmidstate, char* pdata, char* phash1, char* phash, unsigned int& nHashesDone)
{
    unsigned int& nNonce = *(unsigned int*)(pdata + 12);
    for (;;)
    {
        // Crypto++ SHA-256
        // Hash pdata using pmidstate as the starting state into
        // preformatted buffer phash1, then hash phash1 into phash
        nNonce++;
        SHA256Transform(phash1, pdata, pmidstate);
        SHA256Transform(phash, phash1, pSHA256InitState);

        // Return the nonce if the hash has at least some zero bits,
        // caller will check if it has enough to reach the target
        if (((unsigned short*)phash)[14] == 0)
            return nNonce;

        // If nothing found after trying for a while, return -1
        if ((nNonce & 0xffff) == 0)
        {
            nHashesDone = 0xffff+1;
            return -1;
        }
    }
}
Funkcja SHA256Transform() to właśnie funkcja wykonująca skrót wiadomości przy pomocy algorytmu SHA-256. To tyle.
Bitalo - bezpieczniejsza giełda i portfel Bitcoin.

Wróć do „Bitcoin”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 37 gości