Yazan: Brett McLain, Mühendislik Direktörü – Crypto, Fiat, Stake
Kripto para birimleri, ödemeler veya staking ile ilgileniyorsanız ve geleceğin finansal sistemini oluşturmaya yardımcı olmak istiyorsanız, fon mühendisliği ekibi @ Kraken sizi işe alıyor!
Kraken on yıl önce piyasaya çıktığında, yalnızca üç kripto para birimi destekleniyordu: BTC, LTC ve XRP.
Bugün Kraken, 82 blok zincirinde 33 varlığı ve 8 kripto para birimi için staking hizmetlerini destekliyor.
Kraken'de yılda milyonlarca para yatırma, çekme ve stake işlemini kolaylaştırmak için kripto mühendisliği ekibi, borsaya girip çıkan fonların sorunsuz akışını sağlamak için yüzlerce hizmet yürütüyor. Bu hizmetleri destekleyen blok zinciri yazılımı sık sık güncellenir; Daha aktif blok zincirlerinden bazıları için, sert ve yumuşak çatallar doğası gereği aylık olabilirken, Ethereum gibi diğerleri yılda iki kez gerçekleşen olaylardır. Genel olarak blok zinciri altyapımızda her hafta en az birkaç yazılım güncellemesi yapılır.
Bu kadar çok sayıda farklı hizmeti desteklerken ve güncellerken aynı zamanda yenilerini oluşturmanın zorluğu göz korkutucu olabilir.
Son 12 ayda ekibimiz aşağıdakiler için destek ekledi:
- 60 yeni kripto para birimi:
- 39 x ERC20 jetonu
- Polkadot (ana ağ açılışında)
- Kusama
- Filecoin (ana ağ açılışında)
- Akış (ana ağ açılışında)
- Kava
- Energy Web Token (ana ağ açılışında)
- USDT (TRC20)
- 10 x Parachain Kitle Kredisi
- Solana
- 1 x SPL jetonu (Serum)
- Mina
- 8 yeni stake varlığı:
- Polkadot (ana ağ açılışında)
- Kusama
- Ethereum 2.0 (ana ağ açılışında)
- Akış (ana ağ açılışında)
- Cardano
- kozmos
- Kava
- Solana
Bu başarılar, mevcut entegrasyonlarımızın bakımının yanı sıra gerçekleştirildi. Kripto ekibinin mühendisleri, yalnızca evde yazılan ağ geçidi yazılımından değil, aynı zamanda ağ geçitlerimizin güvendiği blok zinciri altyapımızın bakımından ve dağıtımından da sorumludur. Bu projelerdeki blok zinciri geliştirme kadansı, sık sık ve bazen çok az uyarı ile gelen son değişiklikler ve yeni yeni özellikler ile kabarcıklı olabilir.
Peki Kraken, blok zinciri geliştirmenin hızlı temposuna ayak uydururken her yıl düzinelerce yeni ürünü piyasaya sürmeyi nasıl başarıyor?
Uçtan Uca (E2E) Testler!
Neden E2E testlerine değer veriyor ve taklitlerden kaçınıyoruz?
Kraken'deki ilk günlerinden beri, E2E testlerinin bir mühendisin yapabileceği en değerli test türü olduğu vurgulanmıştır. Birim testlerinin yeri vardır, ancak karmaşık entegrasyonlar konusunda deneyimsiz birçok geliştirici, geliştirdikleri yazılımın genel kalitesini iyileştirdikleri inancıyla oluşturdukları her kod parçası için birim testleri yazma eğilimindedir.
Bu yol, iyi niyetlerle dolu olsa da, çoğu zaman yolda çok fazla acıya yol açabilir. Birim testlerine aşırı güvenmek, mimarinizi sağlamlaştırma eğilimindedir; tüm kod tabanınızın üzerine bir epoksi tabakası dökmek gibidir. Kodu, testlerine sıkı bir şekilde bağlayarak, kodu daha katı, esnek olmayan ve yeniden düzenlemeye karşı dirençli hale getiriyorsunuz. Bir değişiklik yapmanız gerekiyorsa, muhtemelen testlerde önemli değişiklikler yapmanız ve bazı durumlarda bunları tamamen atmanız gerekecektir. Yeniden düzenleme kodu, bir mühendislik ekibinin araç setinde bulunması gereken önemli bir yetenektir ve yeniden düzenleme kolaylığına sürtünme katan her şey tanıtılmadan önce dikkatlice değerlendirilmelidir. Kodu yeniden düzenlerken, iyi tasarlanmış bir E2E testi genellikle çok fazla değişiklik gerektirmez ve bir uygulamanın beklendiği gibi çalışmaya devam etmesini sağlarken bir yandan da uygulamanın iç yapısını ayarlamada esneklik sağlar.
Bu, birim testleri yazmamanız gerektiği anlamına mı geliyor? Hiç de bile! Birim testlerinin mükemmel çözüm olduğu birçok senaryo vardır, ancak karmaşık entegrasyonlar için E2E testlerinin daha iyi çalıştığını gördük. Genel olarak, birim testleri, aşağıdaki kriterleri karşılayan kod için yazıldığında en etkilidir:
- Birçok uç durumla algoritmik olarak karmaşık.
- İyi tanımlanmış gereksinimlerle sıkı bir şekilde kapsamlandırılmıştır.
- Tek bir iş birimini tamamlar.
- Vatansız.
Bu küçük, dar kapsamlı karmaşık kod parçaları genellikle daha büyük bir uygulamanın yapı taşlarıdır ve bir yeniden düzenleme gerçekleşse bile, bu işlevlerin değişmesi olası değildir. Dünyamızda bu, adres türetme, adres doğrulama, işlem imzalama vb.
Buradaki temel çıkarım, küçük bir mühendislik ekibi olarak şu anda desteklediğimiz hizmet hacmini korumamızın hiçbir yolu olmadığıdır. ve uçtan uca testler olmadan yeni ürünler oluşturun. Birim testleri, masa bahisleri olarak düşünülmelidir, ancak tek başına, bu gelişen alana ayak uydurmamız için yeterli olmazlar. Bunun yerine, hizmetlerimizin en yaygın çalışma modlarında başarılı bir şekilde çalışacağını doğrulayan sağlam entegrasyon setlerine ve E2E testlerine yoğun bir şekilde yatırım yapmayı seçtik.
E2E testlerinin zorlukları
E2E testleri güçlü olabilse de, her derde deva değil. Üçüncü taraf hizmetleriyle entegre edildiğinde, belirli bir işlevin veya çağrının akışını tam olarak test etmek için belirli uç noktaların veya arayüzlerin taklit edilmesi gerektiğinden, bu tür testler genellikle değerlerini büyük ölçüde kaybeder. Sahteler, yalnızca alay ettiğiniz hizmetten anladığınız kadar iyidir ve sonuç olarak, güncellemeler sık ve büyük olduğunda hataya açık olabilirler. Kendi kodunuzu ve alaylarınızı korumak, David Thomas ve Andrew Hunt tarafından “The Pragmatic Programmer” da icat edilen bir terim olan DRY ilkesinin (kendinizi tekrar etmeyin) ihlalidir. Kitaplarında, "Her bilgi parçasının bir sistem içinde tek, açık ve yetkili bir temsili olması gerektiğini" belirtiyorlar. Herhangi bir hizmetin sahte bir sürümünün oluşturulması, söz konusu hizmetin artık potansiyel olarak farklı iki kopyası olduğu anlamına gelir: alaylı sürümünüz ve gerçek sürüm. Alaycı bağımlılığın davranışını tercüme etmedeki hatalar, artık hesaba katılması gereken başka bir endişe kaynağıdır.
Kurtarmak için testler
Neyse ki bizim için çoğu blok zinciri, sürekli entegrasyon (CI) / sürekli dağıtım (CD) sürecimizin bir parçası olarak oluşturulabilen geçici özel ağları çalıştırma yeteneğini destekler. Bunun en popüler örneği Bitcoin'in regresyon testi (regtest) modudur. `-regtest` seçeneği ile bitcoind başlattığınızda, üzerinde tam kontrole sahip olduğunuz yeni bir yerel blok zinciri ortamı yaratır. Regtest modunun temel özelliği, istediğiniz sayıda blok madenciliği yapabilmeniz ve E2E testlerinizin her tür ve varyasyondaki para yatırma ve çekme işlemleri için gidiş dönüşleri tamamlamasına izin vererek, saniyeler içinde yüzlerce senaryoyu simüle edebilmenizdir. Uç durumlar ve diğer benzersiz senaryolar, çoklu imza işlemleri, yeniden organizasyonlar, ücretle değiştirme (RBF), ebeveyn için çocuk ödemesi (CPFP) ve daha fazlası gibi yeniden test modunda kolayca simüle edilebilir! Bu testler yalnızca kodumuzun hata içermediğinden emin olmakla kalmaz, aynı zamanda her şeyin beklendiği gibi çalıştığından emin olmak için blok zincirinin ve defterlerimizin son durumunu doğrular.
Kraken'de yeni bir kripto para birimi için destek ekleme sürecinin bir parçası olarak, finansman ekibi tüm yeni listeler için bir tekrar testi çerçevesi oluşturur. Bu kod, bakım rejimimizin temelidir: ne zaman yeni bir sürüm yayınlanırsa, bu sadece blok zinciri düğüm sürümünü güncellemek ve herhangi bir bozulma olmamasını sağlamak için CI boru hattımızı yeniden çalıştırmak meselesidir. Sürüm notlarının dikkatli bir şekilde okunması ve toplulukla işbirliği hala çok gereklidir, ancak bu testler bize aksi takdirde sahip olamayacağımız yeni sürümleri yayınlama konusunda güven veriyor.
Yaratıcı çözümler
Ne yazık ki bizim için tüm blok zincirleri Bitcoin kadar savaşta test edilmedi. Yeni blok zincirler genellikle yeni konseptler sunar ve müşterilerimize en heyecan verici yeni teknolojilere erişim sunmak için Kraken, ana ağın başlangıcına mümkün olduğunca yakın yeni blok zincirleri için destek başlatmayı tercih eder. Lansman tarihinde veya yakın bir tarihte yeni bir varlığı güvenli bir şekilde desteklemek için, Kraken'in bazen entegrasyona güven kazanmak ve müşteri fonlarının risk altında olmamasını sağlamak için karmaşık test koşumları geliştirmesi gerekir.
Bunun mükemmel bir örneği, Kraken'in 2.0 Aralık 3'de ana ağ yayına girdikten sadece 1 gün sonra Ethereum 2020 desteğini başlatmasıdır. Dünya çapında binlerce kişi ve şirket, Medalla ve Spadina gibi birden fazla test ağında Ethereum 2.0'ın test edilmesine yardımcı olsa da, biz hala bu entegrasyon ile regtest kavramını bambaşka bir boyuta taşımaya karar verdi. Ethereum 2.0'ın önemli bir gelişme olacağını erkenden biliyorduk ve bu inancın doğru olduğu kanıtlandı, çünkü şimdiye kadar milyonlarca ETH, Kraken müşterileri tarafından stake edilen 800,000'den fazla ETH de dahil olmak üzere işaret zincirinde stake edildi.
Aşağıda, bir geliştiricinin ETH2 kod havuzlarımızdan birine kod taahhüt ettiği her seferinde, sürekli entegrasyon (CI) ardışık düzenimizin döndüğü ve parçaladığı hizmet kümesinin bir diyagramını görebilirsiniz.
Yüksek düzeyde, test akışı:
- ETH1 birincil ve alternatif düğümlerini (her biri sırayla fikir birliği için madenciliği alır) test için ilk miktarda ETH içeren bir oluşumla başlatın.
- ETH2 işaret zinciri düğümünü, oluşumu etkinleştirmek için yalnızca 16 doğrulayıcının gerekli olduğu özel bir minimal yapılandırma modunu kullanarak özel bir zincir olarak başlatın.
- ETH2 akıllı sözleşmesini ETH1 blok zincirine dağıtın.
- ETH'yi, fonların yakıldığı ve ETH2 harici doğrulayıcı düğümünde doğrulayıcıların oluşturulduğu ETH2 mevduat sözleşmesine yatırın. Bunlar, yalnızca ETH2 ağını çalıştıran doğrulayıcılardır ve herhangi bir Kraken doğrulayıcısının dışındaymış gibi muamele görürler.
- ETH1 ve ETH2 blok gezginlerini başlatın.
- Veritabanını Başlatın.
- Ağ Geçidi ve İmzacılar'ı başlatın.
- ETH -> ETH2 stake etmek için müşteri isteklerini ekleyin.
- Ağ geçidi, müşteri isteklerini alır ve ETH1 blok zincirindeki para yatırma sözleşmesine ETH gönderir ve ETH2 dahili doğrulayıcı düğümünde karşılık gelen sayıda doğrulayıcı oluşturur. Doğrulayıcılar, dahili ve harici doğrulayıcı kümelerine ayrılmıştır, böylece doğrulayıcılarımız düştüğünde ne olduğunu test edebiliriz (kesme, cezalar, kayıp ödülleri test etmek için) ve ağın geri kalanı çöktüğünde veya çevrimdışı olduğunda, ancak doğrulayıcılarımız olduğunda ne olduğunu görebiliriz. yukarı kal.
- Doğrulayıcılar ETH2 zincirinde aktif olana kadar izleyin, ödülleri, ödemeleri, kesintileri ve cezaları test etmeye, kayıp ödül algılamayı ve müşterilere ödülleri ödemeye başlayın.
- Tüm defterlerimizdeki her şeyin doğru şekilde eşleştiğinden emin olmak için tüm işlemlerde ayrı finansal mutabakat sürecimizi çalıştırın.
Yukarıdakiler, test çerçevemizde neler olup bittiğinin yalnızca üst düzey bir özetidir; meydana gelen başka testler, kontroller ve doğrulamalar vardır. Bir geliştiricinin bir şeyde hata ayıklaması veya herhangi bir ağın durumuna bakması gerekiyorsa, bir bakışta tam olarak ne olduğunu görmek için blok gezginlerine danışabilirler. CI işlem hattımıza genellikle blok araştırmacılarını dahil etmiyoruz, ancak entegrasyonun karmaşıklığı göz önüne alındığında, geliştirme aşamasında zincirde neler olduğunu görselleştirmek yardımcı oldu.
Bunun CI boru hattımıza çok büyük bir gecikme eklediğini düşünebilirsiniz, ancak neyse ki durum böyle değil. Şu anda, Ethereum 2.0 depomuz için tam CI işlem hattının çalışması sadece 14 dakika sürüyor. Bu, tüm bağımlılıkları denetlemeyi/inşa etmeyi, tüm hizmetleri başlatmayı, blok zincirine çeşitli akıllı sözleşmeleri dağıtmayı, blokları madencilik, doğrulayıcıları oluşturmayı ve ardından 100'den fazla test senaryosunu çalıştırmayı içerir.
Son Düşüncelerimiz
Kraken'deki her bir blok zinciri entegrasyonu için kapsamlı E2E testleri geliştirmek, önemli miktarda mühendislik kaynağı tüketir. Bu, memnuniyetle ödediğimiz bir bedeldir, çünkü en büyük endişemiz, müşterilerimizin fonlarının güvenliği ve platformumuzda kaliteli bir deneyim yaşamalarını sağlamaktır. Yeni entegrasyonlar oluştururken testlere daha az zaman harcarsak, ekibimiz daha fazla ürün yayınlayabilir mi? Sorgusuz sualsiz. Ancak, bunu yapmak yalnızca mühendislik ekibinin değil, bir bütün olarak şirketin değerlerine ve değerlerine aykırı olacaktır. Bu testler, blok zinciri yazılımının yeni sürümlerine güvenli bir şekilde güncelleme yapabilmemizi, sert/yumuşak çatallar sırasında güveni artırmamızı ve değişiklikleri dağıtırken geliştirici stresini azaltmamızı sağlar.
Kraken mühendisleri neden sektördeki en saygın kişilerden biridir? Bu mesaj Kraken'in Mühendislik Başkan Yardımcısı Steve Hunt, değerlerimizi ve diğer blockchain mühendislerine yardım etmeye olan bağlılığımızı özetliyor.
Kaynak: https://blog.kraken.com/post/10227/testing-crypto-payments-staking-at-kraken/
- &
- 000
- 11
- 2020
- erişim
- Hesap
- aktif
- Türkiye
- Tüm İşlemler
- Izin
- Uygulama
- mimari
- etrafında
- varlık
- Varlıklar
- Savaş
- işaret zinciri
- Bitcoin
- blockchain
- BTC
- inşa etmek
- bina
- çağrı
- durumlarda
- meydan okuma
- değişiklik
- Çekler
- çocuk
- kod
- işbirliği
- gelecek
- ortak
- topluluk
- Şirketler
- şirket
- güven
- Fikir birliği
- devam ediyor
- sözleşme
- sözleşmeleri
- Oluşturma
- kripto
- cryptocurrencies
- cryptocurrency
- veritabanı
- anlaşma
- geciktirmek
- Bulma
- geliştirmek
- Geliştirici
- geliştiriciler
- gelişme
- yönetmen
- Erken
- kenar
- Etkili
- mühendis
- Mühendislik
- Mühendisler
- çevre
- Ethereum
- ETH
- Ethereum
- Ethereum 2.0
- Ethos
- olaylar
- takas
- HIZLI
- Özellikler(Hazırlık aşamasında)
- Özellikler
- emir
- mali
- Esneklik
- akış
- iskelet
- tam
- işlev
- finansman
- para
- gelecek
- genel
- Oluşum
- Tercih Etmenizin
- harika
- okuyun
- Yüksek
- ev
- Ne kadar
- HTTPS
- Yüzlerce
- Dahil olmak üzere
- Artırmak
- sanayi
- Altyapı
- bütünleşme
- entegrasyonlar
- izolasyon
- IT
- koruma
- anahtar
- bilgi
- deniz canavarı
- büyük
- başlatmak
- öncülük etmek
- seviye
- Deneyimler
- yerel
- LTC
- Yapımı
- Madencilik
- ay
- En popüler
- çoklu imza
- ağ
- Yeni Özellikler
- Yeni ürünler
- düğümler
- teklif
- işletme
- seçenek
- sipariş
- Diğer
- Ağrı
- ödemeler
- platform
- Popüler
- fiyat
- özel
- Ürünler
- Projeler
- kalite
- Okuma
- azaltmak
- güven
- Yer Alan Kurallar
- Kaynaklar
- DİNLENME
- "Rewards"
- Risk
- koşmak
- koşu
- Güvenlik
- Ekran
- Hizmetler
- set
- küçük
- akıllı
- akıllı sözleşme
- Akıllı Sözleşmeler
- So
- Yazılım
- uzay
- kazık
- Staking
- başlama
- Eyalet
- stres
- destek
- destekli
- Destekler
- sistem
- Teknolojileri
- geçici
- test
- Test yapmak
- testleri
- zaman
- simge
- üst
- Takip
- işlem
- işlemler
- Güncelleme
- Güncellemeler
- us
- değer
- hacim
- ağ
- hafta
- içinde
- İş
- Dünya
- X
- XRP
- yıl