Ca să încep în stilul primelor televiziuni, primelor portale… Privesc.Eu a devenit încet, încet cel mai mare distribuitor de date din Moldova. Doar tehnicienii știu că internetul este plătit atât de client cât și de site. Un utilizator obișniut plătește unui provider în jur de 5-20 euro lunar, în schimb privesc.eu care are mii de utilizatori plătește zeci de mii de euro anual pentru servere și traficul distribuit providerilor din Moldova, România și Europa. Ca să vă lămuresc dintr-o altă perspectivă: Operatorii de Internet mobil fac mult mai mulți bani pe clienții care consumă video pe www.privesc.eu decât Privesc.Eu.

Din necunoștință de situație, mulți organizatori de evenimente consideră www.privesc.eu că este ca și un TV obișnuit. Ceea ce nu este adevărat. Un TV clasic are cheltuieli distribuție fixe, indiferent de numărul de oameni care privesc acel TV, privesc.eu plătește providerului său pentru fiecare om care privește. Cu cât evenimentul e mai popular cu atât cheltuielile noastre sunt mai mare la acel eveniment. Pe de altă parte TV-ul clasic e restricționat să dea doar un singur eveniment pe când privesc.eu e limitat doar de numărul de operatori.

Odată cu creșterea popularității site-ului, cheltuielile de operare cresc liniar. Nu mai putem crește doar din evenimentele plătite, ele sunt destul de puține, însă noi ne dorim să transmitem live cât mai multe evenimente.

De aceea, pentru a continua dezvoltarea acestui proiect, îndrăgit de toți, am creat abonamente. La prima vedere 29.99 euro e mult, însă dacă împarți la 30 zile. Avem un euro/zi = cu o cafe. E o nimica toată pentru cetățenii care doresc să vadă evenimentele cu ochii proprii, nu prin interpretări jurnalistice.

Odată cu creșterea abonaților vom angaja tot mai mulți operatori prin țară, pentru a filma cât mai multe evenimente. Scopul inițial e să facem macar câte 1-2 evenimente zilnic doar pentru membrii clubului Privesc.Eu, restul fiind publice și gratuite ori plătite de către organizatori.

Pentru cititorii mei fideli, am făcut și un discount de 5 euro lunar.

Enjoy.

Aseară, la TEDx Chișinău a fost arătat un video despre Bitcoin. Video a fost ok. Însă am rămas profund dezamăgit de discuțiile din sală referitor la valute virtuale, digitale, fiat, cryptocurrency și gamification. Puțini aveau idee cum lucrează macăr unul din aceste sisteme deși informație despre transfer de valoare în societate este cu nemiluita.

Din toate discuțiile acele am ajuns la concluzia că noi, #dindragoste pentru Moldova, ne este lene să studiem lumea tehnică, matematică și fizică care ne înconjoară.

Fiind student umblam ca dracu după tot ce se tipărea despre IT și ce ajungea prin Chișinău. Gaseam câte ceva pe la librăria Știința, enervat pe țara asta că nu găsec informație. Însă odată cu apariția Internetului în Moldova practic am devenit obsedat de studierea noilor tehnologii. Sunt limitat doar de timp! Ura! Acum toți vor fi deștepți!

În schimb noi am căpătat o generație de leneși. Birocrații folosesc IT doar pentru a spăla banii, că doar în tenderele de soft pentru instituții poți scrie prețurile dorite. Poliția, cică, pentru pornografie infantilă. Politicienii pentru a se murdări în continuare unul pe altul. Jurnaliștii pentru a manipula fără obraz.

Având la dispoziție rețele de cea mai bună calitate, telefoane 4G, notebook-uri, iPad-uri, smartphone, youtube, wikipedia, quora, am căpătat o generație de egoiști care folosesc Internetul pentru selfie, cancan online, playboy, mâncare pe Instagram, foto de la discoteci, cerșit de like-uri, share-uri de mâțâșori.

O generație de animale sociale.

1 Comment

Gab

Gab screen for iOS

Se vede un trend în Internet pentru aplicații care permit trimiterea mesajelor anonime. Cel mai popular ar fi Snapchat, care recent a refuzat o achiziție din partea Facebook-lui de $3 mlrd.

Yik Yak, Glide, Secret și multe altele devin tot populare. Analizând unele de ele, zic să fac și eu una să nu scăp trenul.

Scopul aplicație Gab este de a da posibilitatea oamenilor de a pălăvragi în realtime anonim și doar cu prietenii.

Mai jos voi descrie cum am soluționat aceaste probleme.

Tehnic implementarea chat-ului realtime a fost făcut pe o tehnologie nouă de la Microsoft, SignalR, care avea implementat SDK pentru Web, iOS și Android.

Anonimitatea, e simplu de rezolvat, nu ceri nici o informație de la om, atât doar că generez un GUID (număr unic pentru fiecare pentru a identifica acelaș utilizator). Vizual pentru a identifica mesajele unui utilizator față de altul dau o culoare fiecărui utilizator care se schimbă zilnic. Adică timp de 24 de ore unul și acelaș utilizator va acea aceași culoare.

Problema cea mare vine atunci când trebuie să identifici prietenii care deja sunt în rețea. Evident că trebuie să fie un mecanism de filtrare, că doar nu pot să transmit un mesaj tuturor.

Cea mai simplă soluție ar fi să scanezi lista de contacte de pe telefon și să faci comparare cu o altă listă. Când doi utilizatori au acelaș email în lista lor de contacte înseamnă că ei au un prieten comun. Neajunsul la această metodă e că nu știi cu certitudine dacă doi utlizatori sunt prieteni sau au prieten comun. Deci, Gab transmite orice mesaje prietenilor prietenilor inclusiv și a prietenilor direct care nu pot fi identificați exact.

Adresele din agenda utilizatorilor trebuie să ajungă pe server pentru comparație însă asta implică cererea de informație privată de la utilizatori. Problema se rezolvă simplu prin hash-area tuturor adreselor. Adică email vitalie@esanu.name prin hash-are devine un număr foarte mare d1724abe3469b79f11dd08bf0aa46a8e124b02ecb7a304ccd60fa3c09cb5a516. Doar aceste numere se transmit la server pentru comparație, nu și informația privată de la utilizator. Un număr hash nimeni practic nu poate să ghicească în baza cărui email a fost generat. Astfel se păstrează intimitatea clientului și totodată găsim informația comună. Serverul nu nostru primește nici o informație privată de la utilizator.

Dacă la Android și iOS scanarea contactelor se face automată, prin web site, va trebui manual să adăugați niște email adrese, telefoane, facebook id, twitter account…

Concluzie. Cu Gab poți să vorbești anonim cu prietenii și prietenii prietenilor în realtime.

Puteți descărca aplicația de pe Gab App Store, Gab Google Play și puteți pălăvragi și de pe desktop http://www.gab-app.com

PS: Am inventat o metodă super de growth hacking, nemaiîntâlnită până acum, de care desigur veți afla prin Gab. Mai târziu voi publica un articol despre rezultatele acestui experiment.

PS: Aplicația a fost pornită pe 6 iunie 2014. În prima zi au instalat 120 de Androizi, pe 7 iunie Apple a aprobat aplicația pe iOS și au instalat încă 170 de oameni. Thanks.

 

1 Comment

 

Mining Rig

2x HD Radeon 7950 Cards mining rig

După pseudo noutatea de la Publika. Am fost contactat de mulți oameni, mulțumită Facebook-ului, referitor la mineritul de bitcoini. Voi încerca să lămuresc mai jos ce este mineritul și cum să-l faci.

Mining (mineritul) nu e cuvântul cel mai protrivit pentru exprima acțiunea. Presupun că acest cuvând a fost ales pentru a da o similitudine cu aurul.

Mineritul e procesul de sigilare (hashing) a tranzacțiilor care au fost create în ultimile 10 minute. În procesul de sigilare, minerul, își asignează 25 de BTC. Dacă, sigilarea lui sa dovedit a fi cea mai bună, din toată rețeaua, atunci minerul are în cont încă 25 BTC noi nouți. Funcția principală a minerilor este de a securiza rețeaua și mai apoi de a întroduce bani în sistem, prin generarea lor.

La început, de prin 2009, această sigilare se făcea cu calculatoare obișnuite, cu procesorul. Apoi programatorii au găsit o metodă de a pune la lucru procesoarele grafice, cele care le folosim noi la jocuri. GPU, un procesor grafic are mii se procesoare mici, sunt mult mai efective decât CPU-ul. Și cum doar la un singur miner se dau BTC-uri.. cel cu mai mare putere de calcul statistic are mai multe șanse de câștig. Minerii, în goana după putere de calcul, au trecut la FPGA, viteză comparabilă cu GPU însă mai eficient energetic.

Knc Jupiter

570 GH/s ASIC miner

Ultima etapă sunt ASIC-urile (chip-ul special programate de la fabrică să facă doar un singur lucru, rapid și eficient energetic). Atenție, și la ASIC-uri, există o competiție între ele. Caracteristica principală este tehnologia pe care se produc. 65nm, 28nm, 20nm și 16nm. Cu cât e mai mic nm cu atât se poate ambala mai multe chipuri și mai eficient energetic. Acum se întrec cele cu 28nm și unele companii fac designul la 20nm, prin aprilie, mai 2014 le vom vedea în lucru. ASIC-urile sunt foarte greu de găsit. Dacă se vând din stock mai mult ca probabil ele deja nu mai sunt profitabile. Dacă se vând cu o dată stabilită în viitor există riscul ca până la producere iar să nu ma fie rentabile.

Au venit foarte mulți mineri, odată cu popularizarea Bitcoin-ului, însă BTC se distribuiau cu regularitate de 10 min, doar 50 BTC, apoi 25 BTC. Statistic, un miner trebuia să aștepte o lună/un an, pentru a primi cele 25 de BTC, ceea ce e foarte plictisitor. Pentru a nivela riscul, s-au inventat mining pool.

Mining pool, este un server care îndeplinește funcția de miner, doar că lucru care trebuie să-l facă este împărțit la toți minerii care participă. Apoi când pool-ul câștigă cei 25 BTC, îi împarte proporțional la toți minerii. Acum în lume au rămas câteva minning pool-uri.

De la teorie, la practică. Doriți să mineriți?

La început trebuie să aveți ceva bani ($ sau BTC) pentru a cumpăra hardware. Uitați de CPU, GPU, FPGA. Atrageți atenția doar la ASIC-uri de 28nm și 20nm. Ele costă de la câteva mii de $ în sus. Cointerra, KNCminer, Butterflylabs, Coincraft.

Atenție, sunt multe scamuri care promit mașini contra BTC și apoi dispar.

Apoi vă faceți un bitcoin wallet. Ori unul online pe blockchain.info ori vă instalați Bitcoin client pe desktop. Generați o adresă pentru a acumula banii de la minerit.

Configurați ASIC-ul (de obicei e prin web interfață) la un mining pool. În contul de la mining pool indicați o adresă de a voastră unde să vă transfere BTC.

Puterea fiecărui ASIC se măsoară în TH/s și eficiența energetică. Având aceste două cifre poți socoti câți BTC poți face azi. De exemplu cu un ASIC care face 2TH/s poți face 0.4 BTC pe zi (6 februarie 2014). Iată un calculator pentru ajutor.

Odată la 14 zile, rețeaua Bitcoin ajustează dificultate, în dependență de puterea sumară a rețelei de a genera TH/s. Și cum puterea crește, în jur de 20-30% la fiecare 2 săptămâni, veți genera mai puțini BTC cu aceași mașină, apoi și mai puțini…. și așa până când mașina va deveni nerentabilă adică mai multă energie electrică va consuma decât genera BTC.

Deci, la cumpărarea unui ASIC cu data de distribuție în viitor, trebuie să puteți prezice cu cât va crește dificultatea până atunci. Trebuie să luați în calcul că și companiile care fac designul și produc aceste ASIC-uri de obicei întârzie cu 1-2 luni, unele chiar cu 4 luni. Dacă nu-l puteți prezice, cel mai bine să vă cumpărați BTC și să dormiți liniștit.

Mai există o metodă de a face BTC/LTC cu GPU, însă las pe altă dată ;)

Dacă acest articol va îndemnat pe calea cea dreaptă îmi puteți dona un tips pe această adresa: 18xvq8N1vPYBdmYnr7UyaU9T2riScZ3SC3

1 Comment

Bitcoin

Reprezentarea simbolică a Bitcoin

Din 2010, de când am auzit prima dată de Bitcoin, am citit multe explicații. Majoritatea lor fiind artificial limitate în profunzime pentru a face articolul pe înțelesul tuturor. Înțelegerea acestui protocol în detalii este destul de greu. Multe articole jurnalistice, populiste, scriu despre posibilul impact financiar și social, nu și despre modul în care lucrează acest protocol. Pentru a vedea pe deplin impactul lui, trebuie să se înțeleagă cum el într-adevăr funcționează.

Pentru a înțelege acest articol trebuie să aveți cât de cât cunoștințe de noțiuni despre cheie publică/privată, semnătură digitală și funcții hash. Aceste noțiuni nu sunt foarte complicate, deschideți wikipedia și citiți.

Cât nu ar părea de straniu, criptografia este ceea ce stă la bazele Bitcoin-ului. Este Bitcoin-ul o monedă, este o metodă de a transmite mesaje secrete? De fapt, Bitcoin-ul este o metodă de a securiza tranzacțiile. De a proteja utilizatorii contra furturilor și de a face anonime tranzacțiile.

Eu voi încerca să vă explic cum lucrează Bitcoin, construind un protocol similar cum ar fi Moldocoin. Vom încerca împreună să construim acest sistem pas cu pas, pentru a vedea la fiecare etapă ce probleme apar și cum le putem rezolva.

Primul pas. Cum să inventăm o monedă virtuală?

La prima vedere, o monedă virtuală – pare imposibil. Presupunem că o oarecare persoană, cu numele Alinuța, are ceva monede virtuale și dorește să le cheltuie. Dacă Аlinuța are un șir de biți ca monede, ce-i poate interzice ei ca același șir de biți să-i cheltuie din nou, și apoi iar și iar … la infinit? Sau dacă cineva copie acel șir de biți, să-i cheltuie mai departe la infinit.

Acesteа sunt doar două din problemele care trebuie rezolvate pentru a avea bani virtuali.

Să încercăm să găsim o soluție pentru prima problemă, unde Alinuța folosește un șir de biți ca bani, contra falsificării acestui șir. Să presupunem că Alinuța vrea să-i transmită altei persoane, lui Bulă, un moldocoin. Pentru aceasta, Alinuța scrie un mesaj: “Eu, Alinuța îi dau lui Bulă un moldocoin”. Ea semnează digital acest mesaj utilizând cheia privată și anunță tuturor că a făcut aceasta.

Hei, nu e cel mai super-puper prototip de monedă, însă are unele calități. Oricine din lume (inclusiv și Bulă) poate utiliza cheia publică a Alinuței și verifica dacă într-adevăr Alinuța a semnat mesajul “Eu, Alinuța îi dau lui Bulă un moldocoin”. Nimeni altcineva nu poate crea un astfel de mesaj semnat și nici Alinuța nu se mai poate dezice de acea semnătură și să zică că: “Nu, Eu nu îi dau lui Bulă un moldocoin”. Deci protocolul stabilește că Alinuța are o adevărată intenție de a-i da lui Bulă un moldocoin. Cu alte cuvinte, nimeni nu mai poate publica un astfel de mesaj semnat și oarecum o protejează pe Alinuța contra falsificării.

Observați că am folosit doar un mesaj textual semnat, în următorii pași acest mesaj va deveni mai formalizat.

Utilizarea numerelor unice pentru identificarea monedelor.

O problemă a primei versiuni Moldocoin este că Alinuța poate trimite lui Bulă același mesaj semnat încă odată și încă odată. Presupunem că Bulă a primit zece copii a mesajului “Eu, Alinuța îi dau lui Bulă un moldocoin”. Înseamnă această că Alinuța i-a trimis 10 monede diferite? Poate ea accidental a trimis o copie? Poate ea încearcă  să-l amăgească pe Bulă că-i trimite zece monede, iar tuturor le spune că doar una.

Deci, trebuie să facem moldocoinii unici. Trebuie să le asignăm un număr unic de serie. Mesajul semnat al Alinuței va arăta astfel: “Eu, Alinuța îi dau lui Bulă un moldocoin, cu numărul de serie 35312408”. Iar mai târziu când Alinuța va trimte un mesaj “Eu, Alinuța îi dau lui Bulă un moldocoin, cu numărul de serie 733232323”, toată lumea, inclusiv și Bulă, va ști că un moldocoin diferit a fost transferat.

Pentru a face să lucreze corect această schemă avem nevoie de o sursă de încredere care va genera aceste numere de serie. O soluție ar fi o bancă. Această bancă va genera numere de serie pentru fiecare moldocoin, va urmări fiecare moldocoin și va verifica dacă tranzacțiile sunt valide.

De exemplu, Alinuța se duce la bancă și zice: “Doresc să iau un moldocoin din contul meu”. Banca reduce contul ei cu un moldocoin și îi asignează ei, un număr de serie nemaifolosit până atunci, să zicem 654321. Apoi când Alinuța va dori să transfere moldocoin-ul ei lui Bulă, ea va semna un mesaj “Eu, Alinuța îi dau lui Bulă un moldocoin, cu numărul de serie 654321”. Bulă nu va accepta imediat moldocoin-ul, se va duce mai întâi la bancă pentru verificarea tranzacției. Se va convinge că într-adevăr acest moldocoin cu numărul de serie 654321 îi aparține Alinuței și că ea nu l-a mai cheltuit pe altundeva. Dacă ambele condiții sunt adevărate, Bulă îi spune băncii că el dorește să accepte acest moldocoin și banca face o rectificare în baza de date că acest moldocoin va aparține lui Bulă.

Să-i facem pe toți să acționeze ca o bancă.

Soluția cu banca e una bună însă noi avem ambiții mult mai mari. Noi putem elimina cu totul banca din protocol. Aceasta va schimba considerabil natura banilor. Și când te gândești că puterea unei bănci centrale este imensă, controlul asupra masei monetare, schimbarea este destul de mare.

Idea este ca să-i facem pe toți participanții să acționeze ca o bancă. În special, vom presupune că toți utilizatorii de Moldocoin țin o copie a tuturor înscrierilor: care moldocoin și cui aparține. O carte contabilă în care sunt înscrise toate tranzacțiile. Să numim această carte block chain, fiindcă așa se numește în Bitcoin.

Acum, să presupunem că Alinuța dorește să transfere un moldocoin lui Bulă. Ea semnează mesajul: “Eu, Alinuța, îi dau lui Bulă un moldocoin, cu numărul de serie 654321” și transmite acest mesaj lui Bulă. Bulă poate utiliza copia sa de block chain pentru verificare. Dacă e ok, el acceptă moldocoin-ul, rectifică block chain-ul său și transmite mai departe în rețea pentru ca fiecare să-și modifice block chain-ul.

Mai rămâne problema, “de unde vine numărul de serie”? Această problemă e destul de ușor de rezolvat, veți vedea mai jos. O problemă mai mare care trebuie rezolvată, însă, este dubla cheltuire. Alinuța ne poate amăgi generând două mesaje cu același număr de serie, însă adresat la două persoane diferite. Ea poate trimite un mesaj: “Eu, Alinuța, îi dau lui Bulă un moldocoin, cu numărul de serie 654321” lui Bulă și altul “Eu, Alinuța, îi dau lui Ghiță un moldocoin, cu numărul de serie 654321” lui Ghiță. Ambii, Bulă și Ghiță utilizează copiile lor de block chain pentru verificare. Verificarea e efectuată în aceeași perioadă scurtă de timp și ambii acceptă tranzacția și transmit acceptul lor mai departe în rețea. Iată problema. Cum alții din rețea trebuie să rectifice block chain-ul lor? Nu există o metodă coerentă de a rectifica block chain-ul. Și chiar de ar fi, pe cine să-l credem? Pe Bulă sau pe Ghiță?

Cum putem rezolva problema cu dubla cheltuire? O soluție ar fi, ca atunci când Alinuța transmite lui Bulă un moldocoin, Bulă să nu încerce să verifice singur tranzacția. Bulă ar putea să transmită mesajul rețelei întregi de Moldocoin și să-i întrebe pe ei dacă tranzacția e validă. Dacă ei, cei din rețea, colectiv decid că tranzacția e validă atunci Bulă acceptă moldocoin-ul și toți rectifică block chain-ul. Acest prototip de protocol ne ajută să prevenim dubla cheltuire, pentru că dacă Alinuța va încerca să cheltuie moldocoin-ul său cu Bulă și Ghiță, alții din rețea vor vedea aceasta și îi vor comunica lui Bulă și lui Ghiță că există o problemă cu această tranzacție.

Ca exemplu, să presupunem că Alinuța dorește să-i dea lui Bulă un moldocoin. Ea semnează mesajul “Eu, Alinuța, îi dau lui Bulă un moldocoin, cu numărul de serie 654321” și-i transmite mesajul semnat lui Bulă. Bulă controlează la validitate, însă nu acceptă imediat, ci răspândește mesajul în rețea. Ei toți, verifică mesajul și confirmă că “Da, Alinuței îi aparține moldocoin-ul cu numărul de serie 654321, și poate fi transferat lui Bulă”. Demîndată ce un număr suficient de oameni confirmă, toți rectifică block chain-ul că moldocoin-ul 654321 îi aparține lui Bulă.

Acest protocol are multe elemente imprecise încă. De exemplu, ce înseamnă “îndată ce un număr suficient de oameni confirmă”? Ce înseamnă “suficient”? Nu poate fi toți cei din rețea și nici nu e specificat un procent anumit. Nu încercăm să rezolvăm această problemă acum, însă vom încerca să rezolvăm o altă problemă soluția căreia o rezolvă și pe aceasta.

Dovada muncii (proof-of-work).

Să presupunem că Alinuța dorește să facă o dublă cheltuire în rețeaua descrisă mai sus. Ea o poate face prin preluarea rețelei Moldocoin. Ea poate utiliza un sistem automatizat pentru a crea un număr mare de identități, să zicem un miliard, în rețeaua Moldocoin. Ca și mai devreme, ea va încerca să cheltuie dublu același moldocoin cu Bulă și Ghiță. Dar atunci când Bulă și Ghiță vor întreba rețeaua să valideze tranzacțiile, toate identitățile false create de Alinuța îi pot amăgi. Zicându-i lui Bulă că tranzacția lui e validă și zicându-i lui Ghiță că și a lui e validă.

O soluție șmecheră de a rezolva această problemă e să utilizăm ideea de proof-of-work (dovada muncii). Idea e destul de neintuitivă și implică combinația a două idei: 1) de a face (artificial) costisitoare validarea tranzacțiilor pentru utilizatorii din rețea și 2) de a-i remunera pe cei care ajută cu validarea tranzacțiilor. Remunerarea e necesară pentru a-i face pe utilizatorii din rețea să valideze tranzacțiile chiar dacă noi le-am făcut calculabile costisitor. Beneficiul de a face costisitoare validarea tranzacțiilor e că validarea nu mai poate fi făcută de cineva care controlează o mulțime de identități din rețea, ci de cei care au putere de calculator pentru validare. Cum vom vedea mai jos, putem face ca celor care trișează să nu le mai fie rentabil să trișeze.

Aceasta e esența dovezii muncii. Dar pentru a înțelege într-adevăr dovada muncii (proof-of-work) vom trece prin niște exemple.

Să presupunem că Alinuța distribuie în rețea mesajul: “Eu, Alinuța, îi dau lui Bulă un moldocoin, cu numărul de serie 654321”.

Alții din rețea primesc acest mesaj și îl adaugă într-o coadă cu tranzacțiile care au fost distribuite, însă nu au fost încă aprobate. De exemplu, un utilizator din rețea cu numele Vlad poate avea următoarele tranzacții în așteptare:

“Eu, Ion, îi dau lui Vasile un moldocoin, cu numărul de serie 443322”
“Eu, Alinuța, îi dau lui Bulă un moldocoin, cu numărul de serie 654321”
“Eu, Maria, îi dau lui Mihai un moldocoin, cu numărul de serie 445566”

Vlad verifică cu block chain-ul lui și vede că toate tranzacțiile sunt valide. El poate transmite întregii rețele că aceste tranzacții sunt valide. Însă, până a face aceasta el trebuie să rezolve puzzle de calcul - proof-of-work. Fără soluția la acest puzzle, restul rețelei nu-i va accepta validitatea tranzacțiilor.

Ce puzzle trebuie Vlad să rezolve? Pentru a Vă explica să luăm o funcție hash h care e cunoscută de toți din rețea - adică e inclusă în protocol. Bitcoin utilizează funcția hash binecunoscută SHA-256, însă poate fi utilizată orice hash funcție. Deci, Vlad ia toate tranzacțiile din coada l și adaugă la sfârșit un număr x (să-l numim nonce). De exemplu dacă l=“Salut lume!” și nonce x=0 vom avea.

h(“Salut lume!0”)= 4f8574dc0ca7fa7f046cf2a61c7964b177d3b60c3133e7537ea1f76829aacdc0

Puzzle care Vlad trebuie să-l rezolve, proof-of-work, să găsească un astfel de x, ca atunci când îl adăugăm la lista tranzacțiilor l hash-ul să se înceapă cu un anumit număr de zerouri. Să încercăm cu x=1.

h(“Salut lume!1”)= 5905051116ef23c9fa77cd654575cd86d8e42cd744f5b5a6980493f7e171e53f

heh.. nu se începe cu nici un zero..

Putem continua cu x=2,3 … În sfârșit x=8 obținem:

h(“Salut lume!8”) = 03b94aaf33d0a4bb88d3c1c7fa4aace92891e34b9689d793a060e6645e80af7f

Acest nonce ne dă doar un zero la început de rezultat, e doar un puzzle simplu, pentru un puzzle complicat se cer multe zerouri consecutive.

Ceea ce face ca acest puzzle să fie foarte greu de rezolvat e funcția hash, care se comportă ca un număr aleator, la cea mai mică schimbare a mesajului rezultatul funcției se schimbă total. Deci dacă dorim să avem un rezultat care să înceapă cu 10 zerouri, va trebui să încercăm 16^10 valori diferite pentru x pentru a găsi nonce-ul necesar. E un lucru foarte greu de calculat.

Evident, acest puzzle poate fi mai puțin sau mai mult dificil de rezolvat prin mărirea numărului de zerouri la rezultatul funcției hash. De fapt, protocolul Bitcoin anume asta și face, doar că nu numărul de zerouri, ci un număr care se numește target, iar rezultatul funcției hash trebuie să fie mai mic decât acest target. Acest target se ajustează pentru a da posibilitate oricui din sistem să găsească o soluție în 10 minute.

Deci, să zicem că Vlad a găsit nonce-ul x norocos. Felicitări. (El va fi remunerat pentru că a găsit soluția). El va distribui blocul de tranzacții spre aprobare împreună cu valoarea x. Ceilalți participanți din rețeaua Moldocoin pot verifica x dacă într-adevăr e proof-of-work. Și apoi să rectifice block chain-urile lor cu noile tranzacții din block.

Pentru ca idea cu proof-of-work să aibă succes, utilizatorii din rețea trebuie să fie stimulați pentru a ne ajuta cu validarea tranzacțiilor. Fără o astfel de stimulare, ei nu au nici un motiv să-și cheltuie timpul de calculator cu validarea tranzacțiilor altor oameni. Și dacă nimeni din sistem nu va valida tranzacțiile, sistemul nu va lucra. Soluția e să remunerăm oamenii pentru validarea tranzacțiilor. Să presupunem că vom recompensa cu moldocoini pe fiecare care va valida cu succes tranzacțiile. Recompensa trebuie să fie destul de mare pentru ca să avem doritori.

În protocolul Bitcoin, procesul de validare se numește minerit. Pentru fiecare block de tranzacții validate, minerul norocos primește o recompensă în bitcoini. Inițial se împărțeau a câte 50 de bitcoini. Însă la fiecare 210000 de blocuri validate (aproximativ la fiecare 4 ani) recompensa se înjumătățește. Rata de înjumătățire s-a întâmplat doar o singură dată, acum se dau câte 25 de bitcoini. Rata de înjumătățire la fiecare 4 ani va dura până în 2140. Până atunci când remunerarea va ajunge la 10^-8 bitcoini. 10^-8 bitcoin e unitatea minimală a bitcoin-ului și se numește satoshi. Deci spre 2140 masa totală de bitcoini va înceta să crească. Însă nu va elimina stimularea pentru validarea tranzacțiilor. Bitcoin presupune o plată minimă pentru procesarea tranzacțiilor, care se va duce la minerul care validează tranzacția.

Proof-of-work e un fel de competiție pentru a aproba tranzacții. Un miner are șansa de a câștiga proporțional cu puterea de calcul a a mașinilor sale față de puterea de calcul totală a sistemului. De exemplu dacă deține calculatoare cu puterea de 1% din puterea totală de calcul a rețelei Bitcoin, el va avea aproximativ șansa de 1% că  va câștiga competiția. Cu cât mai multă putere de calcul, cu atât mai mari șanse de câștig. Un miner necinstit, are relativ puține șanse pentru coruperea validării tranzacțiilor.

Deși un miner necinstit are puține șanse de a corupe block chain-ul, nu e deajuns pentru a avea încredere în valuta virtuală. Noi încă nu am finalizat problema cu dubla cheltuială.

Acuș vom analiza dubla cheltuială. Însă până atunci vom descrie un detaliu important în Moldocoin. Noi dorim ca în rețeaua Moldocoin să avem o ordine a tranzacțiilor. Dacă nu vom avea aceasta, nu va fi clar cine și ce moldocoini deține. Pentru aceasta noi vom cere ca orice block nou întotdeauna să includă un pointer la ultimul block validat din chain. Un block chain este un șir de block-uri aranjate unul după altul și fiecare conține pointer la block-ul precedent.

Ocazional, apare câte o bifurcație în block chain. Aceasta se poate întâmpla atunci când 2 mineri rezolvă puzzle-ul aproape simultan și ambii distribuie în rețea blocul nou validat și unii oameni rectifică după rezultatul la un miner alții de altul.

Și aceasta cauzează exact problema pe care noi o doream rezolvată, nu mai este clară ordinea tranzacțiilor și nici nu e clar cui aparțin moldocoinii. Din fericire este o soluție simplă pentru a anula bifurcațiile. Regula e următoarea: dacă apare o bifurcație, utilizatorii rețelei păstrează ambele ramificări. Iar minerii continuă să lucreze doar la bifurcația care are cel mai lung block chain. În rețeaua Bitcoin, o tranzacție nu se consideră confirmată până când: 1) Nu face parte din cea mai lungă bifurcație și 2) după ea urmează încă 5 blocuri în aceiași bifurcație.

Am pus la punct problema cu ordinea tranzacțiilor, să ne întoarcem la utilizatorul necinstit care vrea o dublă cheltuire. Presupunem că Alinuța încearcă să cheltuie aceiași bani cu Bulă și Ghiță. O variantă ar fi ca ea să valideze blocul care include ambele tranzacții. Presupunând că ea deține un procent din puterea de calcul a rețelei, există o șansă ca ea prima să rezolve puzzle-ul. Din nefericire pentru Alinuța, dubla cheltuială imediat va fi detectată de alții din rețeaua Moldocoin și vor respinge blocul chiar dacă conține rezolvarea proof-of-work.

O problemă mai serioasă e atunci când ea va distribui ambele tranzacții cu același moldocoin cheltuiți cu Bulă și Ghiță. Ea poate să distribuie o tranzacție spre unii mineri iar alta către alții în speranța că ambele vor fi validate. Din fericire rețeaua, după cum am văzut mai sus va confirma doar o tranzacție, nu și pe ambele.

Voila, dubla cheltuire a fost rezolvată, cu ajutorul unor tehnici de proof-of-work și ordonarea tranzacțiilor. Avem o valută virtuală deplin funcțională. Aceasta și este adevărata invenție. Până la Bitcoin lumea credea că e imposibil de a transmite un mesaj digital și înghețat în timp.

Proof-of-work și mineritul generează multe întrebări. Ce răsplată e îndeajuns pentru miner pentru a mineri? Cum creșterea masei de moldocoin afectează economia Moldocoin? Se vor concentra toți moldocoinii în câteva mâini?

Tranzacțiile care le-am prezentat în forme de mesaje, într-adevăr e un limbaj mult mai complex și uneltele financiare care vor fi inventate în viitor vor fi anume în baza acestui limbaj.

Ce unelte financiare vor fi inventate? Multe, foarte multe. Ne rămâne să așteptăm ca oamenii cu scaun la cap să le inventeze, până atunci ne vedem la bursă!

Guvernul live.

Povestea cu live-urile de la ședințele de guvern e haioasă și se va termina în curând.

Odată cu venirea democraților la putere Privesc.Eu a hotărât să retransmită ședințele de guvern. Pentru cei care nu cunosc, la guvern este o odaie rezervată jurnaliștilor în care este un TV pe care se arată ce se discută la ședința de guvern. Jurnaliștii mănâncă răsărită și scriu articole în baza celor auzite și văzute, adică telefonul stricat.

Păi, Privesc.Eu a hotărât să le facem un bine jurnaliștilor cât și simplilor cetățeni să privească live-urile din Guvern. Cum? Prin simpla conectare la TV-ul din camera jurnaliștilor iar audio de la prin microfon de la boxele din acea cameră. Multe noutăți pipărate și cuvinte au aflat cetățenii de la jurnaliștii gălăgioși. Au mai fost și alte televiziuni care se rupeau să dea live și filmau TV-ul. După ce metoda a căpătat popularitate, guvernul a decis să dea și el live. Cel puțin așa a fost anunțat. Însă din câte eu am scos din arhivele guvernului am văzut că pe timpul comuniștilor se filmau toate ședințele și se plasau online, doar că erau foarte greu de găsit.

Azi democrația a învins. Au hotărât să închidă live-urile. Pentru că miniștri nu se pot materi în guvern. Sunt filmați și fiind filmați fac populizme nu lucru. Au adus o mulțime de exemple unde ședințele de guvern sunt închise. Sunt sigur că sunt tot atâtea state unde ședințele sunt publice.

În statele unde ședințele sunt închise, opoziția cere să fie de tip închis pentru ca guvernanții să nu-și facă PR. Deci, azi, logic, comuniștii trebuiau să fie pentru închiderea live-ului nu democrații.

Uite așa o poveste cu 3...

3 Comments

Vineri, 12 iulie, am primit un email de la Amabsada României
cu o invitaţie adresată de către E.S. Dl. Ambasador Marius Gabriel Lazurca, la o întalnire cu Dl. Traian Băsescu, Preşedintele României, miercuri, 17 iulie 2013, ora 18.00 la Hotel Leogrand.

WTF. De unde ambasada are email-ul meu?

Am început să cercetez și am dat că site-ul ambasadaromâniei nu e a ambasadei.

Iar domain-ul a fost cumpărat încă din 2010.

Pe adresa IP 89.28.21.50, mai sunt hostate și alte web site-uri: bercut.md, cocos-tur.md, azi.md, soros.md...

Întrebare? Cine și de ce face această dezinformare?

6 Comments

Pray to Bugs God

Pray to Bugs God


În clasa întâi țin minte cum prima mea profesoară m-a întrebat ce vreau să fiu când voi crește mare. În spatele meu era o colecție de fotografii cu profesii, eu am ales să fiu constructor. Printr-a patra, aviator, poate chiar cosmonaut. :) Într-a cincea am început să dau târcoale pe la calculatoare. Într-a noua, fiind la o tabără de muncă și odihnă, adică prășeam toată ziua iar seara mergeam la discotecă, am dat peste un anunț despre noul Colegiu Republican de Informatică. În acel moment am hotărât să devin programator.

Nu am întrebat de nimeni cum e să fii "programator", pentru că nici nu aveam pe cine. Câți bani, cum se plătește? Eram convins că această profesie îmi va plăcea mult și e pentru toată viața!

Rămân mirat când unele din rudele mele ajung să dea BAC-ul și nici nu știu ce le-ar plăcea să devină.

De ce am ales cariera de programator?

Îmi place pentru că această profesie mă ajută să ajut o mulțime de oameni, să-mi scalez lucrul cu ajutorul calculatoarelor millioanelor de oameni. Mă fascinează cum fiind un puști eram mult mai profitabil decât o mulțime de oameni fără cunoștințe în domeniul IT. Urăsc să fac lucruri monotone, nu ezit să automatizez cu ajutorul calculatoarelor.

Pentru că doar fiind programator pot construi orice în minte și transpune în lumea reală cu ajutorul calculatoarelor. Sunt limitat doar de imaginația mea, ei bine, puțin limitat și de hardware, dar aceste limite an de an sunt eliminate.

A fi programator înseamnă a rezolva puzzle-uri zi de zi, iar atunci când le rezolvi, te bucuri ca un copil mic.

E o profesie unde zilnic trebuie să înveți mult mai mult decât în anii de studenție. E o profesie unde ești liber să te afli în ce țară dorești, să lucrezi din birou sau la distanță. Să-ți creeezi o afacere internațională chiar din apartamentul părinților, cu niște costuri minime.

A fi programator e un trend acum. Nu vă lăsați amăgiți de trend daca descrierea mea nu corespunde ideilor voastre.

Proaspeților absolvenți le recomand această profesie doar dacă doresc să învețe în fiecare zi, până la sfârșitul vieții.

Nu regret nici o clipă cele 37960 mii de ore petrecute în acest domeniu.

Vezi mai multe pe site-ul ATIC.

9 Comments

Gossip app screenshot

Gossip captură

Nu sunt bârfitor, însă mulți/multe sunt ;)
Discutând cu partenerul meu despre noi idei de aplicații, am ajuns la una. Una despre bârfe. Gossip.

Ideea este simplă, să simulăm virtual procesul de bârfe din lumea reală.
Adică, spui cuiva niște informații, uneori dubioase sau intenționat greșite, cu eticheta “Numai să nu spui nimănui!” și bârfa pleacă în lume.

Aplicația e simplă de tot:

  1. Indici numărul tău de telefon, primești un SMS cu codul de activare.
  2. Inviți câțiva din cei mai buni prieteni/prietene să ți se alăture.
  3. Scrii mesaje pe care toți prietenii tăi le văd.
  4. Atenție! Dacă cineva răspunde la un mesaj de al tău, răspunsul lui și mesajul tău este văzut și de prietenii prietenului. Așa se propagă bârfa ;)
  5. Toți cei pe care i-ai invitat și au instalat aplicația, automat îți devin prieteni.

Șmecheria este că nu există nickname-uri, nume sau fotografii de profil. Între utilizatori diferă doar culoarea de fundal a mesajelor.
Culoare se schimbă odată la fiecare 24 de ore. Totul e anonim, până când decizi tu să-ți dezvălui identitatea în vreun mesaj.

Gossip se poate descărca de pe App Store.

PS1: Știind cum lucrează clasa politică la noi în țară, le-aș recomanda și lor această aplicație :)
PS2: Aplicația iOS și partea de server a fost făcută de 10 oameni-zile.