Călătoria mea pentru a deveni validator pe Ethereum 2.0

blogul 1NewsDevelopersEnterpriseBlockchain Explained Evenimente și conferințe ApăsațiBuletine informative

Aboneaza-te la newsletter-ul nostru.

Adresa de email

Vă respectăm confidențialitatea

AcasăBlogBlockchain explicat

Călătoria mea pentru a deveni validator pe Ethereum 2.0

Acesta este primul dintr-o serie de articole care descriu modul în care o persoană, cu ~ 32 ETH și cunoștințe tehnice, poate participa la lansarea lanțului de balize Ethereum de către Coogan Brennan 25 noiembrie 2020 Postat pe 25 noiembrie 2020

flux validator teku

Imagine: Imaginea de mai sus, de Ben Edgington de la Teku (care scrie și esențialul Eth2.news buletin informativ), descrie pașii pe care îi vom parcurge în următoarele trei postări pe blog. 

Notă: În timp ce termenul a trecut pentru ca validatorii să fie incluși în evenimentul Genesis pentru lanțul de balize, oamenii pot depune în continuare 32 ETH în contractul de depunere urmând pașii de mai jos. Potrivit lui Alex Tudorache din Eth2stats, odată ce lanțul începe pe 1 decembrie, ora 12:00 UTC, 2020, persoanele care depun din 24 noiembrie ora 12:00 UTC, 2020, în geneză vor fi la coadă și vor urma procedura normală de activare. 

  1. Introducere
  2. Declinarea responsabilității
  3. Materiale și cerințe
  4. Achiziționarea de 32 ETH pe MetaMask
  5. Prezentare generală a Launchpad-ului
  6. Generarea cheilor
  7. Conectarea Ethereum 1.0 și 2.0 și blocarea 32 ETH
  8. Concluzie

1. Introducere

Acesta este primul dintr-o serie de articole care descriu modul în care o persoană, cu ~ 32 ETH și cunoștințe tehnice, poate participa la lansarea lanțului de balize Ethereum, faza 0 a proiectului Ethereum 2.0. Înainte de a intra în primul pas de a trimite ETH la contractul de depozit și de a obține cheile de validare, aș dori să discut câteva dintre motivațiile din spatele Ethereum 2.0.

Ethereum este pe cale să se lanseze într-o călătorie nouă și interesantă pe teritoriu neexplorat pentru orice rețea blockchain. Trecerea de la Dovada muncii la Dovada mizei este cea mai semnificativă schimbare de protocol din scurta istorie a blockchain-urilor publice. Cel mai apropiat echivalent ar fi Martor separat (sau, SegWit) hard fork al Bitcoin – o ajustare a modului în care dimensiunile blocurilor au fost procesate în rețeaua Bitcoin. Această schimbare, relativ minoră în comparație cu Ethereum 2.0, a dus la o luptă controversată și amară și, în cele din urmă, a dus la fragmentarea comunității Bitcoin.  

Lansarea Ethereum 2.0 face ca SegWit să arate ca o schimbare de anvelope. Există două motive majore pentru care această comunitate ar întreprinde o refacere atât de semnificativă. În primul rând, comunitatea Ethereum este o comunitate de dezvoltatori. Dezvoltatorii nu lansează un produs și nu îl mai ating niciodată. Implementăm, observăm, discutăm și repetăm ​​în mod constant ideile și munca pe care o producem. Acest ciclu este însoțit de niveluri ridicate de planificare, modelare și coordonare între multe echipe care, în alte setări, ar putea fi considerate competitori. Atunci când există greșeli, comunitatea se reunește pentru a le rezolva în cel mai bun mod posibil.

Al doilea motiv pentru care întreprindem acest nou efort este că credem că blockchain-urile publice sunt departe de întregul lor potențial. Dovada muncii a fost o ipoteză netestată atunci când Bitcoin a fost lansat în 2009. Marea majoritate a oamenilor nu credea că puteți rezolva problema cheltuielilor duble decât prin utilizarea unor intermediari de încredere. Bitcoin și alte rețele de dovadă a muncii au demonstrat acum că putem implementa un sistem monetar ca protocol peer-to-peer (eu îți trimit bani) fără terți.

Dovedirea acestui punct a fost doar începutul. Ethereum a fost poreclit Bitcoin 2.0 de către comunitate atunci când a fost dezvoltat pentru prima dată: a recunoscut neajunsurile sistemului de operare Bitcoin și a fost lansat pentru a extinde capacitatea protocoalelor peer-to-peer. Ethereum 1.0 va continua să facă pași mari de-a lungul anilor, pe măsură ce construim 2.0 alături de el, dar așa cum a spus Vitalik Buterin într-un recent Reddit AMA:

„Dacă vă aflați aici în Ethereum astăzi, ar trebui să fiți aici nu pentru că credeți că regulile actuale (economice sau tehnice) merită protejate și stabilizate cu orice preț, ci pentru că credeți în locul în care merge ecosistemul. […] Participarea la Ethereum este inevitabil, în parte, o predicție că foaia de parcurs este bună și că, odată ce acest proces de modernizare se va încheia, vom ajunge într-un loc în care rețeaua este eficientă, stabilă și puternică și capabilă să fie baza părți ale economiei globale ”


Dovada mizei în această etapă a Ethereum 2.0 este de fapt un pariu pe capacitatea dezvoltatorilor și a comunității Ethereum, care au construit deja atât de multe, de a oferi și mai mult lumii mari. Ar trebui să vă așteptați să blocați orice fonduri pentru care ați pus în acest contract de depozit macar doi ani, cel mai probabil mai mult. Vă rugăm să nu subestimați riscurile și să investiți doar ceea ce vă puteți permite să pierdeți. Cu toate acestea, contribuind la acest prim pas, participați la un moment potențial istoric pentru a împinge blockchain-urile publice în următoarea etapă de dezvoltare.

Să începem.

2. Declinarea responsabilității

Aceasta este o postare pe care o scriu ca angajat al ConsenSys și cineva care intenționează să mizeze efectiv pe lanțul de balize. Fosta declarație înseamnă că prioritizez produsele ConsenSys (produsele ConsenSys sunt de obicei cele mai bune din clasă pentru Ethereum și am, de asemenea, acces la echipe de ingineri care mă pot ajuta să răspund la întrebări și să depanez). Această din urmă afirmație înseamnă că optimizez din punct de vedere al costurilor și al ușurinței de utilizare: nu am mii de ETH pentru a oferi recompense substanțiale, așa că iau câteva comenzi rapide. De asemenea, nu vreau să trebuiască să mențin un server în apartamentul meu pentru costuri și scopuri logistice, așa că folosesc Amazon Web Services (AWS) pentru a găzdui nodul meu de validare. Este un serviciu pe care îl cunosc ca dezvoltator și este virtual, astfel încât să îl pot accesa de oriunde pentru întreținere. (Inițial, mă gândeam să îmi folosesc RAM Raspberry Pi de 8 GB, dar nu am vrut să fiu nevoit să vă faceți griji cu privire la conexiunea la internet, făcând ca site-ul să fie încă pornit, supraîncălzit și rapid, sau dacă câinele meu aruncă peste laptop când sunt plecat Aceasta este o opțiune și Ethereum pe ARM este un grup care furnizează materiale pentru miza Ethereum 2.0 pe Raspberry Pi) 

Mulți oameni din comunitatea cripto nu ar fi de acord cu utilizarea unui punct final Infura, mai degrabă decât cu un client local Ethereum 1.0 și cu găzduirea pe AWS (parte a goliatului Amazon). Acestea sunt deciziile pe care le-am luat pentru a face ca miza pe Ethereum 2.0 să fie cât se poate de simplă și accesibilă pentru indivizi, dar vine cu compromisuri pentru descentralizare și confidențialitate. Cu toate acestea, puteți urma tutorialul de direcție largă de mai jos și puteți alege să vă rulați propriul client Ethereum 1.0 și să găzduiți local. De fapt, dacă poți face asta, te-aș încuraja! 

3. Materiale și cerințe

Iată materialele de care vom avea nevoie și pașii de ansamblu pe care îi vom parcurge pe parcursul a trei postări:

Materiale

  • Un angajament de trei ani pentru a miza 32 ETH și a menține un nod validator
  • 32 ETH (plus <1 ETH pentru costurile de gaze)
  • 717,12 USD (preț de instanță rezervat pe trei ani pentru o instanță m5.xlarge) + 120 (costul unui an de 100 GB de stocare, presupunând în mod conservator o capacitate de stocare aproape completă) = 837,12 USD plătit pe parcursul anului către AWS
  • Extensia MetaMask (instalare gratuită
  • Cont Infura (nivel gratuit)

Pași

  1. Achiziționați 32 ETH pe MetaMask, Walkthrough Launchpad
  2. Configurați instanța AWS (angajamentul de trei ani, poate fi mai mic, dar economisiți bani cu mai mult timp și sunteți blocat), întăriți caracteristicile de securitate
  3. Importați cheile de verificare, rulați Teku, monitorizați configurarea 

Există câteva tutoriale minunate, mai generale, care parcurg acest proces, și anume pasajul lui Mara Schmiedt și Collin Myers în buletinul informativ Bankless. Acest tutorial va fi diferit pe măsură ce parcurg propriul meu proces de miză individual și adaug pași specifici configurării mele generale.

4. Achiziționarea 32 ETH pe MetaMask

Atât cel mai ușor, cât și cel mai greu pas al acestui tutorial. În timp ce scriu acest lucru, Ethereum trece printr-o cursă de preț care crește dramatic costul mizei (Evan Van Ness are o postare încântătoare care urmărește costul validării înapoi timp de mai multe luni, începând cu martie 2019, când a costat 3.100 USD pentru a cumpăra 32 ETH până în octombrie 2020 când costă 12.000 USD). Există câțiva oameni care au cumpărat și, ahem, HODLed Ethereum de ceva timp. Dacă nu v-ați aruncat criptoarea pe o pizza în 2010, considerați-vă un norocos – erm – investitor strategic.

De ce avem nevoie de un portofel bazat pe browser, cum ar fi MetaMask? Fluxul de blocare a ETH în contractul de depozit pe Ethereum 1.0 Mainnet și conectarea acestuia la lanțul Ethereum 2.0 Beacon necesită un fel de dans delicat. Cele două lanțuri folosesc clase diferite de criptografie, deci trebuie să generăm tipuri complet noi de chei criptografice. Aceste chei trebuie să fie conectate la adresele noastre Ethereum 1.0 cu 32 ETH. Ar fi foarte dificil de făcut singură, așa că Fundația Ethereum și ConsenSys au creat un site web care se ocupă de procesul numit Platforma de lansare. Pentru a interacționa cu acel site web, totuși, avem nevoie de un portofel bazat pe browser cu cheile Ethereum 1.0 asociate soldului nostru 32 ETH. Vom analiza mai târziu, dar am vrut să le spun oamenilor de ce facem acest lucru.

Dacă nu dețineți eter (moneda de bază pentru rețeaua Ethereum): Puteți cumpăra direct de pe MetaMask. De asemenea, puteți cumpăra ETH la bursele certificate zodia Gemeni, dar fi avertizat că există un proces KYC extins, iar Gemenii vor păstra și vor putea trimite înregistrări agențiilor locale, de stat și naționale. Dacă dețineți jetoane ERC-20, dar nu eter: Vă recomand să utilizați noile caracteristici swap ale MetaMask direct în portofelul MetaMask, care combină agregatoare de schimb descentralizate precum Uniswap și AirSwap pentru a obține cele mai bune prețuri și cele mai mici taxe de rețea. Dacă ETH-ul dvs. se află pe un portofel hardware Trezor sau Ledger, Vă recomandăm să urmați acești pași pentru a conecta portofelul respectiv la MetaMask. Folosesc MetaMask, dar Fundația Ethereum recomandă, de asemenea, portofele bazate pe browser, cum ar fi Portis sau Fortmatic

Pentru mine, a fost un pic deranjant să văd o sumă substanțială de bani la dispoziția mea, cu o semnătură criptografică simplă. Probabil un moment bun pentru a vă minuna de puterea incredibilă a cripto-ului pentru a putea acorda acest lucru persoanelor fizice, reamintind în același timp oamenilor să vă asigurați că ați făcut backup pentru cheile dvs. private sau pentru frazele de recuperare.

5. Prezentare generală a Launchpad-ului

Imagine: Launchpad.ethereum.org

Acum, că avem custodia 32 ETH pentru miza, putem merge la Launchpad.ethereum.org, site-ul web Launchpad pe care l-am menționat mai devreme. Ghidul Mara și Collin’s Bankless trece prin pagina inițială (prezentată mai jos) foarte bine și o mare parte din aceasta se explică de la sine, dar am vrut să dau propria mea interpretare personală cu privire la câteva lucruri:

Primii patru pași (Prezentare generală, Inscrie-te, Responsabilități, și Tăiere) sunt un sinopsis de bază al Ethereum 2.0, miza și responsabilitățile dumneavoastră ca validator. În esență, mecanismul consensului Dovada mizei se bazează pe „minerii” (în limbajul Dovada muncii) care își pun banii acolo unde le este gura, mai degrabă decât să cheltuiască cantități uriașe de rezolvări ale procesorului Dovada muncii. Acesta este cel de-al 32-lea ETH, miză de masă pentru participarea la consensul Proof of Stake. 

Și întrucât rețeaua este încă în curs de dezvoltare, nu există încă ieșiri pentru validatori (ce se întâmplă dacă găsiți hack-ul DAO în noua rețea? Nu vă putem lăsa să plecați …). Deci, toată lumea este pe termen lung. (care acoperă Întârziere transfer și Angajament)

În cele din urmă, dacă vă „comportați greșit” ca validator în rețea (fie din răutate sau ignoranță sau întâmplare), sunteți penalizat. În Ethereum 2.0, se numește tăiere. În ceea ce privește aspectul pozitiv, dacă vă comportați corect ca validator, primiți „recompensele miniere” asociate rețelei (vom discuta mai multe despre asta mai târziu). Deoparte, echilibrul descurajator / stimulent este diferit de Dovada muncii, unde există doar stimulente pentru ca minerii să nu saboteze rețeaua și să se comporte corect. 

Urmează sistemul cheie pe care l-am menționat anterior. Sistemul de semnături cheie pe care îl va folosi Ethereum 2.0 este BLS. Nu sunt un expert în criptografie, dar eliminarea de la BLS este că permite ca mai multe semnături digitale să fie prăbușite într-una singură verificabilă. Acest lucru este util pentru colectarea atestărilor balizei („Votează cu privire la validitatea unui bloc sau a unui far”). Cel mai relevant pentru noi, schema BLS este diferită de schema utilizată pentru Ethereum 1.0.

Pentru mai multe informații despre BLS, vă rugăm să consultați acest fir de la Jeff Coleman sau acest post Reddit despre istoria dezvoltării BLS pentru Ethereum 2.0

De obicei, schimbarea unei scheme de chei private pentru o rețea publică mare ar fi aproape imposibilă. Cu toate acestea, deoarece Ethereum 2.0 va funcționa alături de Ethereum 1.0, dezvoltatorii de bază au venit cu o soluție inteligentă, care este o strângere de mână clasică:

Platforma de lansare

În diagrama de mai sus, cheia albastră și casetele reprezintă Ethereum 1.0 și schema sa criptografică, iar cheia roșie și casetele reprezintă Ethereum 2.0 și schema sa criptografică. Contractul de depozit, care există pe Ethereum 1.0 Mainnet, permite utilizatorului să demonstreze că deține chei private pentru Ethereum 1.0 și Ethereum 2.0. Iată cum funcționează:

Tranzacția depusă la contractul de depozit pe Ethereum 1.0 trebuie să fie semnată de o cheie privată Ethereum 1.0 (la fel ca orice tranzacție trimisă pe Mainnet). Cu toate acestea, acea tranzacție este înconjurată de o altă semnătură de cheie privată, cheia privată Ethereum 2.0. Lanțul de balize urmărește contractul de depozit pe Ethereum 1.0, dacă o tranzacție validă este trimisă la contract cu soldul corect, lanțul de balize desfășoară apoi primul strat de criptare și accesează al doilea strat, semnătura digitală Ethereum 2.0. Aceasta este utilizată pentru a confirma adresa validatorului Ethereum 2.0 și a o conecta la o adresă Ethereum 1.0.

Pentru persoanele familiare cu Solidity, iată tranzacția care intră în contractul Ethereum 1.0, cu parametrul de semnătură BLS încercuit:

Mai există un parametru aici (acreditări de retragere) pe care nu l-am discutat, care este în esență o cheie cu o singură utilizare pentru a retrage 32 ETH după ce ni se permite acest lucru. Vom genera acest lucru și cu Launchpad.

După cum puteți vedea, este un proces complicat, care ar fi o provocare pentru un utilizator individual să facă solo. Launchpad ne oferă un proces ghidat pentru a ajuta și a reduce complexitatea.

Următoarele trei secțiuni (Angajament, Risc de adoptare timpurie și Confirmare) sunt un ultim memento despre angajamentul riscant și pe termen lung al participării la Ethereum 2.0 

Pentru mai multe despre terminologia Ethereum 2.0 și înțelegerea rolului unui validator, vă rugăm să consultați cele două piese excelente ale lui Alex Tudorache Termenii Ethereum 2.0 sunt demistiți și Călătoria unui validator prin lanțul farurilor.

6. Generarea cheii

Acum, că avem o imagine de ansamblu generală a rolului nostru în Ethereum 2.0 ca validator, vom continua cu procesul procesului: generând chei de validare și conectându-le la Ethereum 1.0 cu un transfer de 32 ETH la contractul Ethereum 1.0 Mainnet Deposit..

După confirmarea că ați citit dezvăluirile, Launchpad va parcurge opțiunile pe care le aveți pentru selectarea unui client Ethereum 1.0 și 2.0. Vom ajunge la acestea într-o altă postare și nu este o cerință să mergem mai departe. 

Apoi, veți accesa secțiunea „Generați cheile”, prezentată mai jos:

Am selectat 1 validator și îmi arată costul meu. Apoi cere sistemului meu de operare actual să mă ajute să descarc un mic software pentru a genera perechile de chei ale validatorului. Acest lucru este dificil, deoarece, în timp ce clientul meu de validare va rula pe Linux, eu folosesc un Mac de zi cu zi. Așa că selectez Mac și ne duce la pasul următor, întrebându-ne cum am dori să configurăm software-ul:

Aleg să descarc aplicația CLI și mă duce la pagina de descărcare de pe pagina Github a Fundației Ethereum (versiunea de lansare poate arăta diferit pentru dvs., asigurați-vă că este cea mai recentă versiune):

Derulați în jos pentru a vedea secțiunea de descărcare:

Descărcați fișierul `tar.gz` pentru sistemul dvs. de operare adecvat și despachetați fișierul.

Acum trebuie să ne deschidem terminalul din linia de comandă și să navigăm la directorul fișierului nostru despachetat, numit eth2deposit-cli. O comandă rapidă pentru unele mașini este să tastați cd, apoi să glisați și să fixați directorul în terminal, care vă va oferi calea către director. Apăsați Enter și, în directorul eth2deposit-cli, executați următoarea comandă furnizată de Launchpad:

./ deposit new-mnemonic –chain mainnet

Există un memento constant pentru a include –chain mainnet, deoarece tutorialele anterioare aveau lanțuri diferite pentru diferite rețele de testare. Deci, asigurați-vă că adăugați mainnet, altfel informațiile despre tranzacție nu vor fi valide!

Introduceți numărul de validatori pe care doriți să îl rulați și urmați pașii.

Nu voi distribui capturi de ecran pentru următorii pași, deoarece implică generarea de chei și parole sensibile. Două lucruri principale însă: 1) Faceți o copie de rezervă a expresiei mnemonice pe care o obțineți, deoarece aceasta este singura modalitate de a retrage ETH pe care o mizați odată ce este permis Acest pas este doar pentru utilizatorii Teku: Creați un fișier text simplu care conține parola pe care ați introdus-o pentru cheile de validare. Salvați-l cu același nume ca fișierul dvs. keystore.json, dar cu sufixul a.txt în același director cu cheile și informațiile de depozit. De exemplu, dacă fișierul dvs. de depozit de chei este KEYSTORE-M_123456_789_ABCD.json, fișierul în format text cu parola dvs. ar trebui numit KEYSTORE-M_123456_789_ABCD.txt. Acest lucru va fi folosit mai târziu la rularea Teku.

După ce rulați eth2deposit-cli de la terminalul dvs. și ați adăugat fișierul de parolă, directorul dvs. ar trebui să arate astfel:

eth2deposit-cli /

└── validator_key_info /

   ├── KEYSTORE-M_123456_789_ABCD.json

   ├── KEYSTORE-M_123456_789_ABCD.txt

   └── DEPOSIT_DATA_YOUR_TIMESTAMP_HERE.json

└── MNEMONIC_BACKUP.txt

7. Conectarea Ethereum 1.0 și 2.0 și blocarea 32 ETH

Ultimul pas pentru acest tutorial va fi trimiterea informațiilor de validare către contractul de depozit pe rețeaua principală Ethereum 1.0 cu informațiile corecte pe care lanțul de balize le va putea recunoaște (strângerea de mână am menționat anterior).

Fila „Încărcare validator” are un loc pentru a glisa și fixa celălalt fișier creat de eth2deposit-cli: Fișierul dvs. de date despre depozit (DEPOSIT_DATA_YOUR_TIMESTAMP_HERE.json în directorul de mai sus). Trageți și fixați acel fișier de pe computer pe locul de pe pagina Launchpad:

Dacă datele de depunere sunt corect formatate, veți vedea acest lucru:

Acum, Launchpad ne va cere să conectăm portofelul software la contul la care am trimis 32 ETH-ul nostru mai devreme:

După ce ați făcut acest lucru cu succes, veți vedea acest lucru:

Noile caracteristici de securitate de la MetaMask necesită ca un site web să solicite conectarea în mod specific cu fiecare cont – dacă contul cu 32 ETH nu este selectat atunci când vă conectați, deschideți MetaMask, faceți clic pe contul care are 32 ETH și conectați-l la Launchpad.

Când faceți clic pe Continuați, veți vedea un rezumat al informațiilor, împreună cu un accent suplimentar pe riscul și angajamentul pe termen lung al ceea ce urmează să faceți:

Odată ce ați parcurs cu atenție aceste dezvăluiri și avertismente, vine momentul adevărului:

După ce faceți clic pe „Inițiați tranzacția”, vă veți confrunta cu una dintre cele mai interesante casete de confirmare din VIAȚA (cripto) VOI! Respirați adânc, asigurați-vă că sunteți gata, deoarece nu mai aveți nicio întoarcere după ce ați apăsat confirmare! (Ei bine, MetaMask are o caracteristică „Anulare tranzacție” sensibilă la timp, deoarece este un portofel grozav, dar pretindeți-vă că nu ați avea asta!)

Odată ce totul a fost confirmat și extras, veți vedea un ecran de genul acesta:

8. Concluzie

Felicitări! Ați participat la una dintre cele mai interesante evoluții din istoria coordonării publice!!

Dar lucrarea abia a început. Următoarele noastre două postări vor configura o instanță a serverului AWS Ubuntu 20.04 pentru nodul nostru de validare Teku folosind Infura ca punct final Ethereum 1.0. Vom lucra apoi la întărirea securității și la monitorizarea nodurilor folosind un instrument precum Grafana. 

Pentru următoarea tranșă, tot ce ne trebuie din această postare este conținutul directorului eth2deposit-cli / validator_key_info, exemple date mai jos:

eth2deposit-cli /

└── validator_key_info /

   ├── KEYSTORE-M_123456_789_ABCD.json

   ├── KEYSTORE-M_123456_789_ABCD.txt

   └── DEPOSIT_DATA_YOUR_TIMESTAMP_HERE.json

Rămâneți aproape!

Mulțumesc lui James Beck, Meredith Baxter, Chaminda Divitotawela, Ben Edgington, The Dark Jester, Somer Esat, Joseph Lubin, Collin Meyers, Nick Nelson, Mara Schmiedt, Adrian Sutton și Alex Tudorache pentru sprijin și asistență tehnică.

BlockchainCryptoEthereum Ethereum 2.0 Newsletter Abonați-vă la newsletter-ul nostru pentru cele mai recente știri Ethereum, soluții pentru întreprinderi, resurse pentru dezvoltatori și multe altele. Adresa de e-mail Conținut exclusivEthereum Q3 2020 DeFi ReportRaport

Ethereum Q3 2020 DeFi Report

Ethereum Q2 2020 DeFi ReportRaport

Ethereum Q2 2020 DeFi Report

Ghid complet pentru rețelele de afaceri BlockchainGhid

Ghid complet pentru rețelele de afaceri Blockchain

Cum să construiți un produs Blockchain de succesWebinar

Cum să construiți un produs Blockchain de succes

Introducere în tokenizareWebinar

Introducere în tokenizare

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map