Kirjailija: Brett McLain, tekniikan johtaja - Crypto, Fiat, Staking
Jos olet kiinnostunut kryptovaluutoista, maksuista tai panostuksista ja haluat auttaa rakentamaan tulevaisuuden rahoitusjärjestelmää, rahoituksen suunnittelutiimi @ Kraken palkkaa!
Kun Kraken lanseerattiin kymmenen vuotta sitten, vain kolme kryptovaluuttaa tuettiin: BTC, LTC ja XRP.
Nykyään Kraken tukee 82 omaisuutta 33 lohkoketjussa ja panostuspalveluja kahdeksalle kryptovaluutalle.
Helpottaakseen miljoonia talletuksia, nostoja ja panostustapahtumia Krakenissa vuodessa, salaustekniikan tiimi tarjoaa satoja palveluita varmistaakseen varojen sujuvan vaihdon pörssiin ja sieltä pois. Näiden palveluiden taustalla oleva lohkoketjuohjelmisto päivitetään usein; joillekin aktiivisemmille lohkoketjuille kovat ja pehmeät haarukat voivat olla luonteeltaan kuukausittain, kun taas toiset, kuten Ethereum, ovat kaksi kertaa vuodessa. Yleensä lohkoketjuinfrastruktuurissamme on vähintään muutama ohjelmistopäivitys joka viikko.
Haaste tukea ja päivittää niin paljon erilaisia palveluita ja samalla rakentaa uusia voi olla pelottavaa.
Viimeisten 12 kuukauden aikana tiimimme on lisännyt tukea seuraaville:
- 60 uutta kryptovaluuttaa:
- 39 x ERC20 -tunnusta
- Polkadot (mainnetin lanseerauksessa)
- Kusama
- Filecoin (Mainnetin lanseerauksessa)
- Virtaus (mainnetin lanseerauksessa)
- Kava
- Energy Web Token (lanseerauksen yhteydessä)
- USDT (TRC20)
- 10 x Parachain -joukkolainat
- Solana
- 1 x SPL -tunnus (seerumi)
- Mina
- 8 uutta panostusta:
- Polkadot (mainnetin lanseerauksessa)
- Kusama
- Ethereum 2.0 (mainnet -lanseerauksessa)
- Virtaus (mainnetin lanseerauksessa)
- Cardano
- Maailmankaikkeus
- Kava
- Solana
Nämä saavutukset saavutettiin olemassa olevien integraatioidemme ylläpidon ohella. Salausryhmän insinöörit ovat vastuussa paitsi talossa kirjoitetusta yhdyskäytäväohjelmistosta, mutta myös lohkoketjuinfrastruktuurimme ylläpidosta ja käyttöönotosta, johon yhdyskäytävät tukeutuvat. Blockchain -kehityksen poljinnopeus näissä projekteissa voi olla rakkulainen, ja rikkoutuvat muutokset ja uudet uudet ominaisuudet tulevat usein ja joskus pienellä varoituksella.
Joten kuinka Kraken onnistuu julkaisemaan kymmeniä uusia tuotteita vuosittain pitäen samalla kiinni lohkoketjun nopeasta kehityksestä?
End to End (E2E) -testit!
Miksi arvostamme E2E -testejä ja vältämme pilkkaa
Krakenin varhaisista ajoista lähtien on korostettu, että E2E -testit ovat arvokkain testi, jonka insinööri voi rakentaa. Yksikkötesteillä on paikkansa, mutta monet kehittäjät, joilla ei ole kokemusta monimutkaisista integroinneista, kirjoittavat yleensä yksikkötestejä jokaiselle rakentamalleen koodikappaleelle uskomalla parantavansa kehittämänsä ohjelmiston yleistä laatua.
Vaikka tämä polku on täynnä hyviä aikomuksia, se voi usein aiheuttaa paljon tuskaa tiellä. Ylimääräinen luottamus yksikkötesteihin pyrkii vahvistamaan arkkitehtuuria; se on kuin kaattaisit epoksikerroksen koko koodikannasi päälle. Kytket koodin tiukasti sen testeihin, mikä tekee koodista jäykemmän, joustamattoman ja vastustuskykyisen. Jos sinun on tehtävä muutos, sinun on todennäköisesti tehtävä merkittäviä muutoksia testeihin ja joissakin tapauksissa heitettävä ne kokonaan pois. Refactoring -koodi on insinööritiimin keskeinen ominaisuus työkalupakissaan, ja kaikki, mikä lisää kitkaa uudelleenfaktoroinnin helppouteen, on arvioitava huolellisesti ennen käyttöönottoa. Kun koodia uudistetaan, hyvin suunniteltu E2E -testi ei usein vaadi monia muutoksia, ja se tarjoaa joustavuutta sovelluksen sisäisten suolien säätämisessä ja varmistaa samalla, että se jatkaa odotettua toimintaa.
Tarkoittaako tämä, että sinun ei pitäisi kirjoittaa yksikkötestejä? Ei lainkaan! On monia skenaarioita, joissa yksikkötestit ovat täydellinen ratkaisu, mutta olemme havainneet, että monimutkaisissa integraatioissa E2E -testit toimivat paremmin. Yleensä yksikkötestit ovat tehokkaimpia, kun ne on kirjoitettu koodille, joka täyttää seuraavat kriteerit:
- Algoritmisesti monimutkainen ja monia reunatapauksia.
- Tiukasti kattava ja hyvin määritellyt vaatimukset.
- Suorittaa yhden työyksikön.
- Valtioton.
Nämä pienet, tiukasti kattavat monimutkaisen koodin osat ovat usein suuremman sovelluksen rakennuspalikoita, ja vaikka refactor tapahtuisi, nämä toiminnot eivät todennäköisesti muutu. Maailmassa tämä olisi esimerkiksi osoitteen johtaminen, osoitteen vahvistus, tapahtuman allekirjoittaminen jne.
Keskeinen ote tässä on se, että pienenä insinööritiiminä emme pystyisi koskaan ylläpitämään tällä hetkellä tukemiemme palvelujen määrää, ja rakentaa uusia tuotteita ilman loppukokeita. Yksikkötestejä on pidettävä pöytäpanoksina, mutta ne eivät yksinään riitä pysymään tässä kehittyvässä tilassa. Sen sijaan olemme päättäneet investoida voimakkaasti vankkoihin integraatio- ja E2E -testeihin, jotka vahvistavat, että palvelumme toimivat menestyksekkäästi tavallisimmilla toimintatavoillaan.
E2E -testien haasteet
Vaikka E2E -testit voivat olla tehokkaita, ne eivät ole ihmelääke. Kun integroidaan kolmansien osapuolten palveluihin, tällaiset testit menettävät usein suuren arvon, koska tiettyjä päätepisteitä tai rajapintoja on pilkattava, jotta voidaan testata tietyn toiminnon tai puhelun kulku kokonaan. Mokit ovat vain niin hyviä kuin ymmärrät pilkattavaa palvelua, ja siksi ne voivat olla alttiita virheille, kun päivitykset ovat usein ja suuria. Oman koodin ja pilkkojen ylläpito rikkoo DRY -periaatetta (älä toista itseäsi), termiä, jonka keksivät David Thomas ja Andrew Hunt teoksessa The Pragmatic Programmer. Kirjassaan he sanovat, että "jokaisella tietämyksellä on oltava yksi, yksiselitteinen, arvovaltainen esitys järjestelmässä." Palvelun pilkkatun version luominen tarkoittaa, että kyseisestä palvelusta on nyt kaksi mahdollisesti erilaista kopiota: pilkattu versio ja todellinen versio. Virheet pilkatun riippuvuuden käyttäytymisen kääntämisessä ovat nyt toinen huolenaihe.
Sääntöjä pelastamaan
Onneksi useimmat lohkoketjut tukevat mahdollisuutta käyttää väliaikaisia yksityisiä verkkoja, jotka voidaan kehittää osana jatkuvan integraation (CI) / jatkuvan käyttöönoton (CD) prosessia. Suosituin esimerkki tästä on Bitcoinin regressiotestitila (regtest). Kun käynnistät bitcoindin "-regtest" -vaihtoehdolla, se luo uuden paikallisen lohkoketjuympäristön, jota voit hallita täysin. Regtest -tilan keskeinen piirre on, että voit louhia mielivaltaisen määrän lohkoja halutessasi, jolloin E2E -testisi voivat suorittaa edestakaiset matkat kaikenlaisten talletusten ja nostojen osalta ja simuloida satoja skenaarioita muutamassa sekunnissa. Reunatapauksia ja muita ainutlaatuisia skenaarioita voidaan helposti simuloida regtest-tilassa, kuten monisig-tapahtumat, uudelleenorganisoinnit, korvaaminen maksulla (RBF), lapsi maksaa vanhemmista (CPFP) ja paljon muuta! Nämä testit varmistavat paitsi, että koodimme ei sisällä virheitä, vaan myös vahvistaa lohkoketjun lopputilan ja kirjanpitomme varmistaaksemme, että kaikki toimii odotetulla tavalla.
Osana prosessia tuen lisäämiseksi uuteen kryptovaluuttaan Krakenissa, rahoitusryhmä rakentaa kaikkien uusien listausten testikehyksen. Tämä koodi on ylläpitojärjestelmämme perusta: aina kun uusi versio julkaistaan, on yksinkertaisesti päivitettävä lohkoketjusolmun versio ja suoritettava CI-putkilinjamme uudelleen varmistaaksemme, ettei muutoksia tapahdu. Julkaisutietojen huolellinen lukeminen ja yhteistyö yhteisön kanssa on edelleen erittäin tarpeellista, mutta nämä testit antavat meille luottamusta uusien versioiden julkaisemiseen, joita emme muuten olisi saaneet.
Luovat ratkaisut
Valitettavasti meille kaikki lohkoketjut eivät ole niin taistelutestattuja kuin Bitcoin. Uudet lohkoketjut esittelevät usein uusia konsepteja, ja tarjotakseen asiakkaillemme pääsyn jännittävimpiin uusiin tekniikoihin Kraken haluaa tuoda uusia lohkoketjuja mahdollisimman lähelle pääverkon alkua. Jotta Kraken voisi tukea uutta omaisuutta turvallisesti julkaisupäivänä tai sen lähellä, sen on joskus kehitettävä monimutkaisia testisarjoja luottamuksen saamiseksi integraatioon ja sen varmistamiseksi, että asiakasvarat eivät ole vaarassa.
Täydellinen esimerkki tästä on se, kun Kraken käynnisti Ethereum 2.0 -tuen vain kolme päivää sen jälkeen, kun mainnet julkaistiin 3. joulukuuta 1. Vaikka tuhannet ihmiset ja yritykset ympäri maailmaa auttoivat testaamaan Ethereum 2020: ta useilla testiverkkoilla, kuten Medalla ja Spadina, päätti viedä rekisteröintitestin käsitteen aivan uudelle tasolle tällä integroinnilla. Tiesimme jo varhain, että Ethereum 2.0 olisi merkittävä kehitys, ja että usko on osoittautunut todeksi, koska miljoonia ETH: tä on tähän mennessä panostettu majakkiketjuun, mukaan lukien yli 2.0 800,000 Krakenin asiakkaan panostamaa ETH: tä.
Alla näet kaavion palveluista, joita jatkuvan integroinnin (CI) putkemme pyörii ja katkaisee joka kerta, kun kehittäjä sitoutuu koodiin johonkin ETH2 -koodivarastostamme.
Korkealla tasolla testivirtaus on:
- Käynnistä ETH1 -ensisijaiset ja vaihtoehtoiset solmut (ne kukin vuorotellen kaivavat yksimielisyyttä) geneesillä, joka sisältää alkuperäisen määrän ETH: tä testattavaksi.
- Käynnistä ETH2 -majakkaketjun solmu yksityisenä ketjuna käyttämällä erityistä minimaalista kokoonpanotilaa, jossa vain 16 validoijaa tarvitaan geneesin aktivoimiseksi.
- Ota käyttöön ETH2 -älykäs sopimus ETH1 -lohkoketjuun.
- Tallenna ETH ETH2 -talletussopimukseen, jossa varat poltetaan ja vahvistimet luodaan ETH2 -ulkoiseen validointisolmuun. Nämä ovat validoijia, jotka vain käyttävät ETH2 -verkkoa ja joita kohdellaan ikään kuin ne olisivat Kraken -validoijien ulkopuolisia.
- Käynnistä ETH1- ja ETH2 -lohkotutkijat.
- Käynnistä tietokanta.
- Käynnistä Gateway ja allekirjoittajat.
- Lisää asiakaspyynnöt panokseen ETH -> ETH2.
- Gateway ottaa vastaan asiakaspyyntöjä ja lähettää ETH: n talletussopimukseen ETH1 -lohkoketjussa ja luo vastaavan määrän validoijia ETH2 -sisäiseen validointisolmuun. Validatorit on jaettu sisäisiin ja ulkoisiin validointisarjoihin, jotta voimme testata, mitä tapahtuu, kun validatorimme kaatuvat (testata leikkauksia, rangaistuksia, menetettyjä palkintoja) ja nähdä, mitä tapahtuu, kun muu verkko katkeaa tai offline -tilassa, mutta validoijamme pysyä pystyssä.
- Valvo, kunnes validoijat ovat aktiivisia ETH2 -ketjussa, aloita palkintojen, maksujen, testien leikkausten ja rangaistusten seuranta, menetettyjen palkkioiden havaitseminen ja maksa palkkioita asiakkaille.
- Suorita erillinen taloudellinen täsmäytysprosessi kaikissa tapahtumissa varmistaaksesi, että kaikki kirjanpitomme vastaavat oikein.
Yllä oleva on vain korkeatasoinen yhteenveto siitä, mitä testikehyksessämme tapahtuu; tapahtuu useita muita testejä, tarkastuksia ja validointeja. Jos kehittäjä tarvitsee virheenkorjausta tai tarkastella kumman tahansa verkon tilaa, hän voi kysyä lohkotutkijoilta, mitä on tapahtunut yhdellä silmäyksellä. Emme yleensä sisälly lohkotutkijoita CI-prosessiimme, mutta integraation monimutkaisuuden vuoksi oli hyödyllistä kehitystyön aikana visualisoida mitä ketjussa tapahtuu.
Saatat ajatella, että tämä lisää valtavaa viivettä CI -putkilinjaamme, mutta näin ei ole onneksi. Tällä hetkellä koko CI -putkilinja Ethereum 2.0 -repoomme kestää vain 14 minuuttia. Tämä sisältää kaikkien riippuvuuksien tarkastamisen/rakentamisen, kaikkien palvelujen käynnistämisen, erilaisten älykkäiden sopimusten käyttöönoton lohkoketjussa, louhintalohkot, validoijien luomisen ja kaikkien 100+ testiskenaarion läpikäymisen.
Loppuajatukset
Kattavien E2E -testien kehittäminen jokaiselle lohkoketjuintegraatiolle Krakenissa kuluttaa huomattavan määrän suunnitteluresursseja. Se on hinta, jonka maksamme mielellämme, koska tärkein huolemme on asiakkaidemme varojen turvallisuus ja sen varmistaminen, että heillä on laadukas kokemus alustallamme. Voisiko tiimimme julkaista enemmän tuotteita, jos käyttäisimme vähemmän aikaa testeihin uusien integraatioiden rakentamisessa? Ilman kysymystä. Tämä tekisi kuitenkin vastoin insinööritiimin ja koko yrityksen eetosta ja arvoja. Nämä testit varmistavat, että voimme päivittää turvallisesti uusiin blockchain -ohjelmistoversioihin, lisätä luottamusta kovien/pehmeiden haarukoiden aikana ja vähentää kehittäjien stressiä muutosten käyttöönotossa.
Miksi Kraken -insinöörit ovat alan arvostetuimpia? Tämä viesti Krakenin tekniikan johtaja Steve Hunt hahmottaa arvomme ja omistautumisemme muiden lohkoketjuinsinöörien auttamiseen.
Lähde: https://blog.kraken.com/post/10227/testing-crypto-payments-staking-at-kraken/
- &
- 000
- 11
- 2020
- pääsy
- Tili
- aktiivinen
- Kaikki
- Kaikki tapahtumat
- Salliminen
- Hakemus
- arkkitehtuuri
- noin
- etu
- Varat
- Taistelu
- majakkaketju
- Bitcoin
- blockchain
- BTC
- rakentaa
- Rakentaminen
- soittaa
- tapauksissa
- haaste
- muuttaa
- Tarkastukset
- lapsi
- koodi
- yhteistyö
- tuleva
- Yhteinen
- yhteisö
- Yritykset
- yritys
- luottamus
- Yhteisymmärrys
- jatkuu
- sopimus
- sopimukset
- Luominen
- Crypto
- cryptocurrencies
- kryptovaluutta
- tietokanta
- sopimus
- viivyttää
- Detection
- kehittää
- Kehittäjä
- kehittäjille
- Kehitys
- Johtaja
- Varhainen
- reuna
- Tehokas
- insinööri
- Tekniikka
- Engineers
- ympäristö
- ERC20
- ETH
- ethereum
- Ethereum 2.0
- eetos
- Tapahtumat
- Vaihdetaan
- FAST
- Ominaisuus
- Ominaisuudet
- Fiat
- taloudellinen
- Joustavuus
- virtaus
- Puitteet
- koko
- toiminto
- rahoitus
- varat
- tulevaisuutta
- general
- Mooseksen kirja
- hyvä
- suuri
- tätä
- Korkea
- Talo
- Miten
- HTTPS
- Sadat
- Mukaan lukien
- Kasvaa
- teollisuus
- Infrastruktuuri
- integraatio
- integraatiot
- eristäminen
- IT
- pito
- avain
- tuntemus
- Kraken
- suuri
- käynnistää
- johtaa
- Taso
- Ilmoitukset
- paikallinen
- LTC
- Tekeminen
- kaivos-
- kk
- Suosituin
- Multisig
- verkko
- Uudet ominaisuudet
- uusia tuotteita
- solmut
- kampanja
- toiminta
- Vaihtoehto
- tilata
- Muut
- Kipu
- Maksaa
- maksut
- foorumi
- Suosittu
- hinta
- yksityinen
- Tuotteemme
- hankkeet
- laatu
- Lukeminen
- vähentää
- riippuvuus
- vaatimukset
- Esittelymateriaalit
- REST
- Palkkiot
- Riski
- ajaa
- juoksu
- Turvallisuus
- Näytön
- Palvelut
- setti
- pieni
- fiksu
- älykäs sopimus
- Smart-sopimukset
- So
- Tuotteemme
- Tila
- osuus
- staking
- Alkaa
- Osavaltio
- stressi
- tuki
- Tuetut
- Tukee
- järjestelmä
- Technologies
- tilapäinen
- testi
- Testaus
- testit
- aika
- symbolinen
- ylin
- Seuranta
- kauppa
- Liiketoimet
- Päivitykset
- Päivitykset
- us
- arvo
- tilavuus
- verkko
- viikko
- sisällä
- Referenssit
- maailman-
- X
- XRP
- vuosi