Írta: Brett McLain, mérnöki igazgató – Crypto, Fiat, Staking
Ha érdeklik a kriptovaluták, a fizetések vagy a befektetések, és szeretnél segíteni a jövő pénzügyi rendszerének felépítésében, a @ Kraken finanszírozási mérnöki csapata felvesz!
Amikor a Kraken egy évtizeddel ezelőtt elindult, csak három kriptovaluta támogatott: BTC, LTC és XRP.
Napjainkban a Kraken 82 eszközt támogat 33 blokkláncon, és 8 kriptovalutához kapcsolódó befektetési szolgáltatásokat.
Az évi több millió befizetés, kifizetés és tét tranzakciók megkönnyítése érdekében a Krakennél a kriptomérnöki csapat több száz szolgáltatást működtet, hogy biztosítsa a pénzeszközök zökkenőmentes áramlását a tőzsdén és onnan. Az e szolgáltatások alapjául szolgáló blokklánc-szoftver gyakran frissül; Néhány aktívabb blokklánc esetében a kemény és puha villák havi jellegűek lehetnek, míg mások, mint például az Ethereum, évente kétszeri események. Általában minden héten legalább néhány szoftverfrissítés érkezik a blokklánc-infrastruktúránkra.
Ijesztő lehet az a kihívás, hogy ilyen nagyszámú különböző szolgáltatást támogatjunk és frissítsünk, ugyanakkor újakat építsünk.
Az elmúlt 12 hónapban csapatunk további támogatást nyújtott:
- 60 új kriptovaluta:
- 39 x ERC20 token
- Polkadot (a hálózat indításakor)
- Kusama
- Filecoin (a főhálózat indításakor)
- Flow (a hálózat indításakor)
- Kava
- Energy Web Token (a hálózat indításakor)
- USDT (TRC20)
- 10 x Parachain Crowdloans
- Solana
- 1 x SPL token (szérum)
- Mina
- 8 új befektetési eszköz:
- Polkadot (a hálózat indításakor)
- Kusama
- Ethereum 2.0 (a hálózat indításakor)
- Flow (a hálózat indításakor)
- Cardano
- Világegyetem
- Kava
- Solana
Ezeket az eredményeket a meglévő integrációink fenntartása mellett értük el. A kriptocsapat mérnökei nemcsak a házon belül megírt átjárószoftverért felelősek, hanem a blokklánc-infrastruktúránk karbantartásáért és telepítéséért is, amelyre átjáróink támaszkodnak. A blokklánc-fejlesztés üteme ezeken a projekteken felháborító lehet, gyakran és néha kevés figyelmeztetéssel érkeznek megtörő változások és újdonságok.
Hogyan tud tehát a Kraken évente több tucat új terméket kiadni, miközben lépést tart a blokklánc-fejlesztés gyors ütemével?
End to End (E2E) tesztek!
Miért értékeljük az E2E teszteket és kerüljük a gúnyokat?
A Krakennél a kezdetek óta a hangsúly azon volt, hogy az E2E tesztek a legértékesebb tesztek, amelyeket egy mérnök elkészíthet. Az egységteszteknek megvan a maguk helye, de sok összetett integrációban járatlan fejlesztő hajlamos egységteszteket írni minden felépített kódrészlethez, abban a hitben, hogy ezzel javítja az általa fejlesztett szoftver általános minőségét.
Ez az út, bár tele van jó szándékkal, gyakran sok fájdalomhoz vezethet az úton. Az egységtesztekre való túlzott bizalom megerősíti az architektúrát; olyan, mintha egy réteg epoxit öntenénk a teljes kódalap tetejére. Szorosan összekapcsolja a kódot a tesztjeivel, így a kód merevebbé, rugalmatlanabbá és ellenállóbbá válik az újrafeldolgozással szemben. Ha módosítania kell, valószínűleg jelentős változtatásokat kell végrehajtania a teszteken, és bizonyos esetekben teljesen ki kell dobnia azokat. Az újrafaktorálási kód kulcsfontosságú képessége a mérnöki csapatnak az eszközkészletében, és mindent, ami súrlódást okoz az átalakítás egyszerűségéhez, alaposan ki kell értékelni a bevezetés előtt. A kód átalakítása során a jól megtervezett E2E teszt gyakran nem igényel sok változtatást, és rugalmasságot biztosít az alkalmazás belső elemeinek beállításában, miközben biztosítja, hogy továbbra is a várt módon működjön.
Ez azt jelenti, hogy nem szabad egységteszteket írni? Egyáltalán nem! Számos forgatókönyv létezik, ahol az egységtesztek jelentik a tökéletes megoldást, de azt tapasztaltuk, hogy összetett integrációk esetén az E2E tesztek jobban működnek. Általában az egységtesztek akkor a leghatékonyabbak, ha olyan kódra írják őket, amely megfelel a következő kritériumoknak:
- Algoritmikusan összetett, sok élességgel.
- Szigorúan meghatározott, jól meghatározott követelményekkel.
- Egyetlen munkaegységet hajt végre.
- Hontalan.
Ezek a kicsi, szorosan hatókörű összetett kóddarabok gyakran egy nagyobb alkalmazás építőkövei, és még ha átalakítás történne is, ezek a funkciók valószínűleg nem változnának. A mi világunkban ezek olyan dolgok, mint a címlevezetés, a címérvényesítés, a tranzakció aláírása stb.
A legfontosabb dolog az, hogy kis mérnöki csapatként soha nem tudjuk fenntartani a jelenleg támogatott szolgáltatások mennyiségét, és a új termékeket készíteni végpontokig tesztek nélkül. Az egységteszteket asztali tétnek kell tekinteni, de elszigetelten nem lennének elegendőek ahhoz, hogy lépést tartsunk ebben a fejlődő térben. Ehelyett úgy döntöttünk, hogy jelentős összegeket fektetünk be az integrációs és E2E-tesztek robusztus készleteibe, amelyek igazolják, hogy szolgáltatásaink sikeresen működnek-e a legáltalánosabb működési módjukban.
Az E2E tesztek kihívásai
Bár az E2E tesztek erősek lehetnek, nem csodaszer. Harmadik féltől származó szolgáltatásokkal való integráció során az ilyen típusú tesztek gyakran sokat veszítenek értékükből, mivel bizonyos végpontokat vagy interfészeket ki kell gúnyolni egy adott funkció vagy hívás folyamatának teljes teszteléséhez. A gúnyolódások csak annyira jók, amennyire megérti az Ön által kigúnyolt szolgáltatást, és ennek eredményeként gyakori és nagy mennyiségű frissítés esetén hibás lehet. A saját kódod és a gúnyod fenntartása sérti a DRY elvet (ne ismételd magad), ezt a kifejezést David Thomas és Andrew Hunt találta ki „A pragmatikus programozóban”. Könyvükben kijelentik, hogy „Minden tudásnak egyetlen, egyértelmű, hiteles reprezentációval kell rendelkeznie egy rendszeren belül”. Bármely szolgáltatás gúnyos verziójának létrehozása azt jelenti, hogy az említett szolgáltatásnak két, potenciálisan eltérő példánya létezik: az Ön által megcsúfolt és a tényleges verzió. A megcsúfolt függőség viselkedésének lefordításában elkövetett hibák egy másik aggály, amellyel számot kell adni.
Regtests a mentő
Szerencsére számunkra a legtöbb blokklánc támogatja az ideiglenes privát hálózatok futtatását, amelyek a folyamatos integrációs (CI) / folyamatos telepítési (CD) folyamatunk részeként felpörgethetők. A legnépszerűbb példa erre a Bitcoin regressziós teszt (regtest) módja. Amikor elindítja a bitcoindot a `-regtest` opcióval, az új helyi blokklánc-környezetet hoz létre, amelyet teljes mértékben Ön irányíthat. A regtest mód legfontosabb jellemzője, hogy tetszőleges számú blokkot bányászhat tetszőlegesen, lehetővé téve az E2E tesztjei számára, hogy minden típusú és változatú befizetéshez és kifizetéshez körutakat hajtsanak végre, másodpercek alatt szimulálva több száz forgatókönyvet. Az éles esetek és más egyedi forgatókönyvek egyszerűen szimulálhatók regtest módban, mint például a multisig-tranzakciók, az újraszervezések, a csere díjjal (RBF), a gyermek fizet a szülőért (CPFP) és így tovább! Ezek a tesztek nemcsak azt biztosítják, hogy kódunk ne tartalmazzon hibákat, hanem a blokklánc végállapotát és a főkönyveinket is érvényesíti, hogy minden a várt módon működjön.
A Kraken új kriptovalutájának támogatására irányuló folyamat részeként a finanszírozó csapat egy regtest keretrendszert épít ki minden új listára. Ez a kód képezi a karbantartási rendszerünk alapját: amikor új verzió jelenik meg, egyszerűen csak frissíteni kell a blokklánc csomópont verzióját, és újra kell futtatni a CI-folyamatunkat, hogy ne legyenek törésmentes változások. A kiadási megjegyzések gondos elolvasása és a közösséggel való együttműködés továbbra is nagyon szükséges, de ezek a tesztek önbizalmat adnak az új verziók kiadásában, amelyek egyébként nem lennének.
Kreatív megoldások
Sajnos számunkra nem minden blokklánc van olyan harcban tesztelt, mint a Bitcoin. Az új blokkláncok gyakran újszerű koncepciókat vezetnek be, és annak érdekében, hogy ügyfeleinknek hozzáférést biztosítsanak a legizgalmasabb új technológiákhoz, a Kraken előszeretettel indítja el az új blokkláncok támogatását a lehető legközelebb a mainnet kezdetéhez. Ahhoz, hogy biztonságosan támogassa az új eszközt a bevezetés időpontjában vagy annak közelében, a Krakennek néha összetett teszthevedereket kell kifejlesztenie, hogy bizalmat szerezzen az integrációban, és biztosítsa, hogy az ügyfelek pénzeszközei ne legyenek veszélyben.
Ennek tökéletes példája, hogy a Kraken csak 2.0 nappal azután indította el az Ethereum 3 támogatását, hogy a mainnet 1. december 2020-jén elindult. Bár világszerte magánszemélyek és cégek ezrei segítettek tesztelni az Ethereum 2.0-t több teszthálózaton, például a Medalla és a Spadina, mégis úgy döntött, hogy ezzel az integrációval egy teljesen más szintre emeli a regtestek fogalmát. Korán tudtuk, hogy az Ethereum 2.0 jelentős fejlesztés lesz, és ez a hiedelem igaznak bizonyult, mivel eddig több millió ETH került a jelzőláncba, köztük több mint 800,000 XNUMX ETH, amelyet a Kraken ügyfelei tettek fel.
Az alábbiakban azon szolgáltatások diagramját láthatja, amelyeket a folyamatos integrációs (CI) folyamatunk felpörget és lebont minden egyes alkalommal, amikor egy fejlesztő kódot köt valamelyik ETH2 kódtárunkba.
Magas szinten a tesztfolyamat a következő:
- Indítsa el az ETH1 elsődleges és alternatív csomópontjait (mindegyik felváltva bányászik a konszenzus érdekében) egy olyan genezissel, amely kezdeti mennyiségű ETH-t tartalmaz a teszteléshez.
- Indítsa el az ETH2 beacon lánc csomópontját privát láncként egy speciális minimális konfigurációs móddal, ahol mindössze 16 validátor szükséges a genezis aktiválásához.
- Telepítse az ETH2 intelligens szerződést az ETH1 blokkláncra.
- Helyezze be az ETH-t az ETH2 letéti szerződésbe, ahol az alapokat elégetik, és érvényesítőket hoznak létre az ETH2 külső érvényesítő csomóponton. Ezek olyan érvényesítők, amelyek csak az ETH2 hálózatot üzemeltetik, és úgy kezelik őket, mintha bármely Kraken validátoron kívül lennének.
- Indítsa el az ETH1 és ETH2 blokkfelfedezőket.
- Indítsa el az adatbázist.
- Indítsa el az átjárót és az aláírókat.
- Illessze be az ETH -> ETH2 tétre vonatkozó ügyfélkérelmeket.
- Az átjáró felveszi az ügyfelek kéréseit, és elküldi az ETH-t a letéti szerződésnek az ETH1 blokkláncon, és létrehoz egy megfelelő számú érvényesítőt az ETH2 belső érvényesítő csomóponton. Az érvényesítők belső és külső ellenőrző készletekre vannak felosztva, hogy tesztelhessük, mi történik, ha az érvényesítőink leállnak (a vágás, a büntetések, az elveszett jutalmak tesztelésére), és megtudjuk, mi történik, ha a hálózat többi része leáll, vagy offline állapotba kerül, de az érvényesítőink fent maradjon.
- Figyelje, amíg az érvényesítők aktívvá nem válnak az ETH2 láncon, kezdje el nyomon követni a jutalmakat, a kifizetéseket, tesztelje a levágást és a büntetéseket, az elveszett jutalom észlelését, és fizessen jutalmakat az ügyfeleknek.
- Futtassa le külön pénzügyi egyeztetési folyamatunkat az összes tranzakcióra vonatkozóan, hogy minden főkönyvünkben minden helyesen megegyezzen.
A fentiek csak egy magas szintű összefoglalása annak, ami a teszt keretein belül történik; számos más teszt, ellenőrzés és érvényesítés is előfordul. Ha egy fejlesztőnek hibakeresést kell végeznie, vagy meg kell néznie bármelyik hálózat állapotát, akkor konzultálhat a blokkfelfedezőkkel, hogy egy pillantással megtudja, mi történt pontosan. Általában nem veszünk bele blokkfelfedezőket a CI-folyamatba, de az integráció összetettsége miatt hasznos volt a fejlesztési szakaszban, hogy szemléltessük, mi történik a láncon.
Azt gondolhatnánk, hogy ez óriási késéssel jár a CI-folyamatban, de szerencsére nem ez a helyzet. Jelenleg az Ethereum 2.0 repónk teljes CI-folyamata mindössze 14 percet vesz igénybe. Ez magában foglalja az összes függőség auditálását/kiépítését, az összes szolgáltatás elindítását, különféle intelligens szerződések telepítését a blokkláncban, blokkok bányászatát, érvényesítők létrehozását, majd végigfut a 100+ tesztforgatókönyvön.
Záró gondolatok
Az átfogó E2E tesztek kidolgozása minden egyes blokklánc-integrációhoz a Krakennél jelentős mennyiségű mérnöki erőforrást emészt fel. Ezt az árat szívesen fizetjük, mivel a legfontosabb szempont ügyfeleink pénzeszközeinek biztonsága és annak biztosítása, hogy minőségi élményben részesüljenek platformunkon. Tudna-e csapatunk több terméket kiadni, ha kevesebb időt töltünk a tesztekkel az új integrációk kiépítésekor? Kérdés nélkül. Ez azonban nemcsak a mérnökcsapat, hanem a vállalat egészének szellemiségével és értékeivel ellentétes lenne. Ezek a tesztek biztosítják, hogy biztonságosan frissíthessünk a blokklánc-szoftver új verzióira, növeljük az önbizalmat a kemény/lágy forkok során, és csökkentsük a fejlesztői stresszt a változtatások bevezetésekor.
Miért a Kraken mérnökei a legelismertebbek az iparágban? Ez az üzenet Steve Hunt, a Kraken mérnöki alelnöke felvázolja értékeinket és elkötelezettségünket, hogy segítsünk más blokklánc-mérnököknek.
Forrás: https://blog.kraken.com/post/10227/testing-crypto-payments-staking-at-kraken/
- &
- 000
- 11
- 2020
- hozzáférés
- Fiók
- aktív
- Minden termék
- Minden tranzakció
- lehetővé téve
- Alkalmazás
- építészet
- körül
- vagyontárgy
- Eszközök
- Csata
- jeladó lánc
- Bitcoin
- blockchain
- BTC
- épít
- Épület
- hívás
- esetek
- kihívás
- változik
- Ellenőrzések
- gyermek
- kód
- együttműködés
- érkező
- Közös
- közösség
- Companies
- vállalat
- bizalom
- megegyezés
- tovább
- szerződés
- szerződések
- létrehozása
- crypto
- cryptocurrencies
- cryptocurrency
- adatbázis
- üzlet
- késleltetés
- Érzékelés
- Fejleszt
- Fejlesztő
- fejlesztők
- Fejlesztés
- Igazgató
- Korai
- él
- Hatékony
- mérnök
- Mérnöki
- Mérnökök
- Környezet
- ERC20
- ETH
- Ethereum
- ethereum 2.0
- étosz
- események
- csere
- GYORS
- Funkció
- Jellemzők
- Fiat
- pénzügyi
- Rugalmasság
- áramlási
- Keretrendszer
- Tele
- funkció
- finanszírozás
- alapok
- jövő
- általános
- Genezis
- jó
- nagy
- itt
- Magas
- Ház
- Hogyan
- HTTPS
- Több száz
- Beleértve
- Növelje
- ipar
- Infrastruktúra
- integráció
- integrációk
- szigetelés
- IT
- tartás
- Kulcs
- tudás
- Kraken
- nagy
- indít
- vezet
- szint
- listák
- helyi
- LTC
- Gyártás
- Bányászati
- hónap
- Legnepszerubb
- multisig
- hálózat
- Új funkciók
- új termékek
- csomópontok
- ajánlat
- üzemeltetési
- opció
- érdekében
- Más
- Fájdalom
- Fizet
- kifizetések
- emelvény
- Népszerű
- ár
- magán
- Termékek
- projektek
- világítás
- Olvasás
- csökkenteni
- bizalom
- követelmények
- Tudástár
- REST
- Jutalmak
- Kockázat
- futás
- futás
- Biztonság
- Képernyő
- Szolgáltatások
- készlet
- kicsi
- okos
- okos szerződés
- Intelligens szerződések
- So
- szoftver
- Hely
- tét
- kockára
- kezdet
- Állami
- feszültség
- támogatás
- Támogatott
- Támogatja
- rendszer
- Technologies
- ideiglenes
- teszt
- Tesztelés
- tesztek
- idő
- jelképes
- felső
- Csomagkövetés
- tranzakció
- Tranzakciók
- Frissítések
- Frissítés
- us
- érték
- kötet
- háló
- hét
- belül
- Munka
- világ
- X
- XRP
- év