Zephyrnet-logo

Hoe zeven teams samenwerkten om de grootste software-upgrade in het kosmos-universum te leveren

Datum:

Complexe softwareontwikkeling, gecoördineerd door teams op afstand, is een uitdaging om de gevreesde vertragingen te voorkomen. In de crypto-ecosystemen kan het mislukken van verzending een negatieve invloed hebben op de perceptie van de gemeenschap en op de symbolische waarde. De succesvolle release van de Cosmos Stargate-software-upgrade is een bewijs van een zwaarbevochten overwinning op deze uitdaging. Meer dan zeven teams hebben bijgedragen aan de release van Cosmos Stargate. We hebben de betrokken leidende teams gevraagd om hun inzichten bij te dragen aan hun reis om de Cosmos Stargate-release te verzenden. Deze teams omvatten het Cosmos SDK-team, de IBC- en Tendermint Core-teams bij Interchain GmbH, het Tendermint Inc-team, het Relayer-team, het Informal Systems-team en Iqlusion.

Hieronder vindt u een diepgaande casestudy van succes in teamwerk en coördinatie die uniek is voor de Cosmos-gemeenschap. We zijn verheugd om onze ervaringen op deze reis met de gemeenschap te delen, van wat we hebben gedaan, wat we hebben geleerd en wat de toekomst biedt als we de definitieve versie van de Cosmos Stargate lanceren.

In juli 2020 hebben we bij Iqlusion het ICF-team ingeschakeld om een ​​Cosmos Stargate-voorstel te organiseren en af ​​te leveren aan de Hub, waarin de gemeenschap zou worden gevraagd hun wens kenbaar te maken om de Cosmos Stargate naar de Hub te brengen. We waren ons ervan bewust dat de Stargate-versie impact zou hebben op de integraties van ecosysteempartners. Deze partners zouden worden blootgesteld aan een zeker risico om veranderingen te verbreken als gevolg van de Stargate-veranderingen.

In juli heeft het Iqlusion-team slack-kanalen geïnitialiseerd met toonaangevende Cosmos-integratiepartners, waaronder uitwisselingen en portemonnees. Tot de initiële partners behoorden toonaangevende cryptocurrency-uitwisselingen, Cosmos-portefeuilles en de beste Cosmos-validators. Naast het schetsen van de belangrijkste veranderingen, hebben we elke partner gevraagd om zijn vereisten voor een succesvolle integratietest van Cosmos Stargate met ons te delen.

Feedback van partners was vooral gericht op hun wens om de baanbrekende veranderingen van Amino naar Protobuf te begrijpen, evenals de implicaties van IBC voor uitwisselingen. Iqlusion wilde zoveel mogelijk ondersteuning bieden aan de belangrijkste partners en de gemeenschap rond de wijzigingen in het Amino-eindpunt en produceerde een Amino-auditdocument die bestond uit testen van eindpuntgedrag en updates van het Tendermint-team en portemonneepartners. Het Iqlusion-team ondersteunde uitwisselingen met een document dat uitwisselingen zou helpen de impact van IBC-functies in Cosmos Stargate te begrijpen en hun besluitvormingsproces te versterken.

Het iqlusion-team is in actief gesprek met vrijwel alle grote beurzen, bewaarders en portemonnees in het kosmos-ecosysteem.

Iqlusion volgde de releases van Cosmos stargate-upgrades om de eerste gaia-versie van Cosmos Stargate te leveren. Tot nu toe zijn er drie versies van de oorspronkelijke Cosmos Stargate Gaia binaire bestanden. Iqlusion heeft instructies gegeven aan de community om de testnetversies hier te downloaden en te openen: https://github.com/cosmosdevs/stargate. Nu de definitieve releasekandidaten voor Tendermint, SDK en IBC beschikbaar zijn, zal Iqlusion het Cosmos Stargate RC-testnet bouwen en uitbrengen.

De drie belangrijkste lessen voor Iqlusion draaien om de geweldige kwaliteit van de geleverde code om de impact van brekende wijzigingen op de infrastructuur van uitwisselings- en portefeuillepartners te minimaliseren.

  • Amino RPC-eindpunten. Het team implementeerde een zij-aan-zij weergave van elke RPC JSON-uitvoer. Uit vergelijkingen van elk van de resultaten blijkt dat het Cosmos SDK-team uitstekend behoud van verouderde eindpunten heeft. Slechts één eindpunt, QueryTxByHash, vertoonde het eindpunt een hoog risico op het breken van de queryresultaten.
    Iqlusion heeft via zijn infrastructuurpartners vernomen dat zij over de expertise beschikken om hun Stargate-vragen te stresstesten. Uit hun feedback en de positieve reactie op de Stargate-tests bleek dat ze klaar waren om met oudere Amino om te gaan en zich voor te bereiden op de nieuwe protobuf-eindpunten. Zie ons Amino-auditdocument en zorg ervoor dat je ook dekking hebt voor je Amino-vragen in de komende Cosmos Stargate.
  • IBC-functionaliteit is vooral belangrijk voor Cosmos-infrastructuurpartners zoals cryptocurrency-uitwisselingen. Beurzen verwachten dat IBC opwindende nieuwe mogelijkheden zal ontketenen, maar het is niet duidelijk hoe de vraag zal ontstaan ​​naarmate IBC-functies wijdverbreider worden. Om ervoor te zorgen dat uitwisselingen vertrouwen hebben in deze functies, heeft Iqlusion een IBC Readiness Matrix en geldstroomdiagram om aan te tonen hoe IBC de stroom van een hypothetische overdracht van tokens van de ene Cosmos-keten naar de andere zou begrijpen, terwijl hij een uitwisselingsportefeuille zou gebruiken.
    We verwachten dat uitwisselingen zullen beginnen met beperkte functies, maar hun IBC-vaardigheidsniveaus zullen verhogen naarmate ze zich op hun gemak voelen met Cosmos Stargate en naarmate hun gebruikers eisen dat hun portemonnee interactie heeft met IBC-activa.
  • Er zijn nog veel meer functies in Cosmos Stargate die van belang zijn voor infrastructuurpartners, waaronder de geautomatiseerde migratie en snelle statussynchronisatie. Dit betekent dat er veel vraag zal zijn naar deze functies op de Cosmos-hub en dat dit ten goede zal komen aan de Hub als leidende blockchain voor alle Cosmos-ketens.

Iqlusion zal het Cosmos Stargate Release-testnet op zijn github aankondigen, zodat partners een laatste ronde van integratietestactiviteiten kunnen geven. Iqlusion zal ook samenwerken met de verschillende Tendermint-teams om een ​​Cosmos Stargate bug bounty-programma te ontwikkelen en te lanceren. Het doel zal zijn om te beginnen met het testen van de component en de Gaia-releases, met prikkels om bugs en problemen in de releasekandidaten onder de aandacht te brengen.

Iqlusion is van plan om ook een live demo te presenteren van de automatische migratiefunctie van het Cosmos Stargate-testnet voor niet-keten-stop-upgrades. Zodra dit is voltooid, zal Iqlusion zijn Halloween-voorstel op 31 oktober 2020 voorbereiden voor het upgraden van de Cosmos Hub naar Cosmos Stargate.

Tendermint Core 0.34, de versie van Tendermint Core die de Stargate-upgrade ondersteunt, bevat een aantal nieuwe functies waar al maanden, zo niet jaren aan wordt gewerkt. Deze omvatten een nieuwe light client, die IBC meer veiligheid zal bieden; bijgewerkte bewijsverwerking, om knooppunten verantwoordelijk te houden voor pogingen om deze lichte cliënt voor de gek te houden; een migratie naar protocolbuffers voor serialisatie; en de statussynchronisatiefunctie, waarmee nieuwe knooppunten zich binnen enkele minuten in plaats van dagen kunnen aansluiten bij reeds bestaande netwerken. Gezamenlijk betekenen deze functies dat we verwachten dat Tendermint Core 0.34 de veiligste, snelste en meest bruikbare versie van Tendermint tot nu toe is.

Tendermint Core 0.34 introduceert een nieuwe implementatie van de light client. Deze nieuwe light-client introduceert een aantal veranderingen, maar het belangrijkste is dat hij een zwakke subjectiviteit heeft, wat betekent dat hij alleen blokheaders vertrouwt binnen de ontbindingsperiode. Dit is een belangrijke bepaling voor lichte klanten die in proof-of-stake-netwerken opereren, en is van cruciaal belang voor de veiligheid van IBC.

Voor meer informatie, inclusief details over het bedienen van de light client, zie ons bericht over de nieuwe light client: Alles wat u moet weten over de Tendermint Light Client.

De introductie van een nieuwe light-client vergroot ook het potentiële oppervlak voor aanvallers. Light clients moeten verdacht gedrag kunnen identificeren, het bewijsmateriaal van dat verdachte gedrag kunnen bundelen en het terugsturen naar de volledige knooppunten, zodat ze het kunnen verifiëren en eventuele knooppunten die zich misdragen verantwoordelijk kunnen houden. Voor meer informatie over de nieuwe levenscyclus en typen bewijsmateriaal, zie ADR59. Voor meer informatie over specifieke aanvallen op de light client, zie ADR56.

Samen met de andere projecten in de Cosmos-stack gebruikt Tendermint Core 0.34 protocolbuffers voor serialisatie, ter vervanging van een aangepast en onvoldoende ondersteund coderingsformaat. We verwachten dat deze verandering een orde van grootte verbetering in de prestaties van Tendermint en zijn downstream-afhankelijkheden zal opleveren, naast grote verbeteringen in onderhoudbaarheid, leesbaarheid en stabiliteit. Zie onze blogpost voor meer informatie over deze migratie: Tendermint 0.34, protocolbuffers en jij.

Tendermint Core 0.34 introduceert de nieuwe statussynchronisatiefunctie. Hierdoor kunnen nieuwe volledige knooppunten zich aansluiten bij reeds bestaande netwerken zonder de consensus blok voor blok opnieuw af te spelen. In plaats daarvan kunnen ze de applicatiestatus rechtstreeks vanaf andere volledige knooppunten synchroniseren. Voor de Cosmos Hub en andere langlevende netwerken kan dit de tijd die nodig is om een ​​nieuw knooppunt online te laten komen, verkorten van dagen naar minuten. Statussynchronisatie is een grote verbetering van de bruikbaarheid en wordt al jaren gevraagd. We zijn blij om het eindelijk in Tendermint 0.34 te kunnen verzenden!

Naast veel van de hierboven genoemde belangrijkste functies bevat Tendermint Core 0.34 een aantal kleinere functies en bugfixes. Deze omvatten het repareren van de hashing van lege datasets, waardoor de applicatie de app-hash van InitChain kan retourneren, het repareren van een bug in het schema van de validator-voorstellen, en het toestaan ​​​​dat ketens op een willekeurige initiële hoogte beginnen.

  • De werkzaamheden voor de behandeling van bewijsmateriaal waren een samenwerking tussen het onderzoeksteam van Informele systemen, en het Tendermint Core-team, op Interchain GmbH. Het team van Informal neemt vaak het voortouw bij het ontwerpen en specificeren van protocol-zwaar werk, zoals de behandeling van bewijsmateriaal, terwijl het team van Interchain GmbH verantwoordelijk is voor de implementatie en het polijsten van dit werk. Maar er was al vroeg sprake van miscommunicatie toen het team van Interchain GmbH begon te werken aan de werkzaamheden voor de behandeling van bewijsmateriaal: het team van Interchain was van mening dat de specificaties voor de behandeling van bewijsmateriaal waren geratificeerd, terwijl dat niet het geval was; en de uitvoering begon voortijdig. Als gevolg daarvan waren er verschillende herschrijvingen van zowel de specificatie als de implementatie, en dit vertraagde de release van Tendermint Core 0.34.
    Om ervoor te zorgen dat de samenwerking in de toekomst soepeler verloopt, investeren we in onze coördinatie met het onderzoeksteam, te beginnen met een uniforme specificatierepository die zal fungeren als één enkele bron van waarheid voor alle Tendermint-specificaties. We werken ook aan gedeelde roadmaps die protocolafhankelijkheden voor aankomende Tendermint Core-functies kunnen benadrukken.
  • Eén van de vroege release-kandidaten voor Tendermint Core 0.34 bevatte een bug die door onze vrienden was ontdekt Oasis Labs. Oasis is om vele redenen een fantastische integratiepartner geweest, maar gedeeltelijk omdat ze hun eigen uitgebreide end-to-end-tests uitvoeren. Hoewel Tendermint Core een solide dekking voor unit-tests heeft gehad en grondig is getest via zowel gestimuleerde als meer informele testnetten, ontbrak het aan een echt end-to-end testframework dat de software in een verscheidenheid aan configuraties en omgevingen op de proef zou kunnen stellen. . De bug in de release candidate was een van onze motivaties om ons eigen end-to-end testsysteem te bouwen. Meer over het plan voor deze werkzaamheden – die inmiddels bijna afgerond zijn – leest u in onze end-to-end test-RFC.

We plannen momenteel de volgende twee substantiële Tendermint Core-releases, die zich zullen concentreren op prestaties, correctheid en vooral stabiliteit. Gedurende deze twee releases zullen we het blokprotocol stabiliseren, evenals alle blootgestelde API's, inclusief Go API's, ter voorbereiding op Tendermint Core 1.0. We zien Tendermint Core 1.0 als een stukje stabiele en vertrouwde infrastructuur.

Houd ons in de gaten voor een meer gedetailleerd stappenplan binnenkort!

Regen Network nam in maart/april 2020 de rol van hoofdonderhouder over. Ons plan was om langzaam te werken aan het upgraden van de Cosmos SDK om een ​​slanke en krachtige basis te worden om verbinding te maken met het ecosysteem van aangepaste modules dat zich ontwikkelt. Er waren verschillende belangrijke belemmeringen voor het functioneren van de SDK op de manier waarop ketenbouwers als Regen dat nodig hadden. Op praktisch niveau betekende dit een grote refactoring van het coderings- en serialisatieformaat van de Cosmos SDK van Amino naar Protocolbuffers. Dit heeft de prestaties en ontwikkelaarservaring van de SDK enorm verbeterd.

Wat is Protobuf-codering? “Protocolbuffers zijn een taalneutraal, platformneutraal, uitbreidbaar mechanisme voor het serialiseren van gestructureerde gegevens – denk aan XML, maar dan kleiner, sneller en eenvoudiger. Je definieert één keer hoe je wilt dat je data worden gestructureerd, en vervolgens kun je speciaal gegenereerde broncode gebruiken om je gestructureerde data eenvoudig te schrijven en te lezen van en naar verschillende datastromen en met behulp van verschillende talen.” - Van de google protobuf-pagina

Aan de andere kant, ondanks dat het verouderde CosmosSDK-coderingssysteem, amino, een grote barrière wordt voor de acceptatie door ontwikkelaars en gebruikers, wordt op amino gebaseerde codering gebruikt door 100% van de Cosmos Hub-gemeenschap van gebruikers. Tot deze gebruikers behoren grote beurzen en portemonnees, en het leek niet verstandig om ze allemaal te dwingen een enorme verandering door te voeren. We wilden ook de verouderde toegang tot amino-codering behouden voor gebruikers die om andere redenen de voorkeur geven aan het gebruik van dat formaat. Daarom heeft ons team extreem hard gewerkt om het mogelijk te maken het coderingsformaat te kiezen. Dit betekent dat het oude amino-formaat wordt ondersteund, evenals het nieuwe protobuf-formaat. Ervoor zorgen dat gebruikers tijdens de reis naar Stargate en IBC, als ze ervoor kiezen om op de korte termijn bij amino te blijven om de tijd en risico's van ontwikkelaars te verminderen, dat kunnen. Andere gebruikers die willen spelen met het krachtigere protobuf-coderingsformaat kunnen daarvoor kiezen.

Een van onze grootste lessen tijdens het werken aan de Stargate-upgrade was dat het een stuk moeilijker is om achterwaartse compatibiliteit te behouden. Er zijn veel plaatsen waar het technisch eenvoudiger en sneller voor ons zou zijn geweest om Amino er volledig uit te halen en alleen een werkende, op Protobuf gebaseerde Cosmos SDK in te bouwen, maar omdat we het oude Amino-transactiepad wilden behouden (om het gemakkelijker te maken voor clientmigraties), moesten we een aanzienlijke hoeveelheid tijd besteden aan het abstract maken van het serialisatieformaat en het handmatig afstemmen op verschillende gebieden van de verschillende implementaties in zowel Amino- als Protocolbuffers.

Een tweede belangrijke les is dat het bij het uitvoeren van een grote refactor ongelooflijk moeilijk is om vooraf alle reikwijdte te kennen. Er waren veel onzekerheden met de protobuf-migratie, en verschillende gevallen waarin een ogenschijnlijk kleine en eenvoudige taak enorm in omvang groeide en de releasedatum weken terugschoot. Wees conservatief met schattingen, nauwkeurige schattingen maken van grote refactoren is HARD!

Ten slotte is het beter om de eerste keer de knoop door te hakken en de dingen op de juiste manier te doen als je voor de keuze staat om een ​​probleem nu of later aan te pakken. We hebben de knoop doorgehakt toen we veel van de integratietests van de SDK-modules overzetten naar de SDK, die voorheen alleen in de Gaia-opslagplaats stond. Nadat we de meeste integratietests hadden gekopieerd, besloten we later de manier waarop integratietests werden uitgevoerd, te herstructureren in een in-process testnetwerktestframework. Dit leidde tot veel dubbel werk: het voor de tweede keer overbrengen van alle integratietests naar het nieuwe raamwerk, en het zou veel schoner zijn geweest als we begonnen waren met het bouwen van het nieuwe testraamwerk, en vervolgens alle tests slechts één keer hadden overgezet.

Visie:

Onze visie van 1.0 is dat de Cosmos SDK een stabiel platform biedt voor een bloeiend en interoperabel module-ecosysteem. Het zal een niveau van stabiliteit bieden zodat gedecentraliseerde apps met een lange levensduur kunnen werken. We willen het gebruik van blockchain-applicaties toegankelijk maken voor een veel bredere groep gebruikers door beter sleutel- en vergoedingsbeheer.

Het bereiken van een 1.0 van de Cosmos SDK is een soms controversieel en altijd ongrijpbaar concept geweest. Het lijkt er echter op dat er een consensus ontstaat over een slanke, modulaire en veilige kern-SDK en een ecosysteem van applicatiespecifieke modules die de manifestatie zijn van de oorspronkelijke visie van de SDK die in zicht komt. Kijk hier eens naar gesprek tussen Alessio Treglia, Ethan Frey en Aaron Craelius over hoe we een stabiele 1.0-versie van de Cosmos SDK kunnen realiseren.

Het Regen-team implementeert, in samenwerking met ICF en Tendermint, samen met andere fantastische ecosysteemteams, een goed georganiseerd protocol voor bijdragen en besluiten het maken van toevoegingen aan de Cosmos SDK, evenals het publiceren van een routekaart voor 2021 op hoog niveau die openbaar is en waar commentaar op kan worden gegeven.

Het SDK-team heeft tweewekelijkse architectuurbeoordelingsgesprekken en maandelijks Cosmos SDK-gebruiker gemeenschapsoproep.

Akash Network nam vanaf juli 2020 het onderhoud van de Golang IBC Relayer over. Daarvoor schreef Jack Zampolin, in samenwerking met Iqlusion, de eerste implementatie waarin werd gedemonstreerd hoe IBC moest worden gebruikt. Die relayer was vanaf maart te zien in de Game of Zones-competitie, die de gemeenschap liet zien hoe dicht dit kenmerkende stukje infrastructuur klaar is voor gebruik.

Nadat hij naar Akash was verhuisd, bleef Jack aan de relayer werken en sloot hij in augustus een contract met de ICF om ervoor te zorgen dat dit cruciale onderdeel van de IBC-infrastructuur in goede staat verkeert voor de lancering van het protocol. Sindsdien heeft het Akash-team nauw samengewerkt met zowel Interchain Berlin als het ICF-team om ervoor te zorgen dat de relayer gereed is voor Stargate.

Onze grootste leerervaring bij het ontwikkelen van de relayer is wat een geweldige, ondersteunende en productieve gemeenschap Cosmos is: het Agoric-team, dat een belangrijke rol speelt bij het omzetten van IBC van een idee in een realiteit, het AiB-team dat onvermoeibaar de ontwikkelaarservaring verbetert, het team van Interchain Berlin dat doet het zware werk van het specificeren en implementeren van het protocol en de nieuwe functies in tendermint, het Iqlusion-team dat projectmanagement, cruciale codebijdragen en vooral leiderschap levert, de ICF die financiering en visie brengt, het informele team dat kritisch werk doet aan de light client en de roestrelais, het Regen-team dat de SDK leidt en protobuf introduceert, en alle individuele bijdragers die samenwerken om IBC werkelijkheid te maken. Deze kleine groep, die al een hele mond vol is om te erkennen, wordt snel zo groot dat als dit artikel over een maand of zo zou worden geschreven, er nog eens 20 tot 30 teams zouden zijn bijgekomen.

Er komen binnenkort een aantal spannende functies naar een relayer bij jou in de buurt!

  • Monitoring van wangedrag en automatische indiening
  • Relayer-statistieken zoals portefeuillesaldo's, betaalde vergoedingen, doorgegeven pakketten, enz.... geëxporteerd via een Prometheus-server voor snelle en gemakkelijke statistieken.
  • REST-server die de functionaliteit van de CLI vrijgeeft om de configuratie en werking van de geautomatiseerde relayer eenvoudig te maken voor uitwisselingen en andere gebruiksscenario's met grote volumes
  • Verdere ontwikkeling van de gebeurtenisgestuurde relayerfunctionaliteit, inclusief gebeurtenisgestuurde verbinding/kanaalcreatie. Wij hebben een ingediend ADR naar de SDK om dit werk te ondersteunen
  • Functies ter ondersteuning van toepassingen die in productie afhankelijk zijn van IBC: als u een IBC-compatibele keten gebruikt en u functies van de relayer nodig heeft, neem dan contact met ons op!

Het Informal Systems-team heeft leiding gegeven aan de formele specificatie-inspanningen voor cruciale elementen van de Cosmos-technologiestack, waarbij TLA+ is gebruikt om protocollen en hun eigenschappen formeel te specificeren, en met behulp van onze interne modelchecker. apalache, om deze eigenschappen te verifiëren. We hebben uitgebreide specificaties voor de Tendermint Light-client in het Engels en TLA+, die de implementatie-inspanningen voor zowel het Go- als het Rust-team begeleidden. We hebben ook de bestaande Engelse IBC-specificatie zorgvuldig beoordeeld en zijn bijna klaar TLA+ specificaties voor het volledige IBC-protocol. Dit kunnen enkele van de grootste openbare TLA+-specificaties ooit zijn! Onze inspanningen op het gebied van protocolbeoordeling en specificatie zijn naar boven gekomen talrijke bugs gedurende het hele proces in zowel de light-client als IBC, die inmiddels zijn opgelost, en we blijven actief in de beveiliging van Tendermint en IBC door middel van codebeoordelingen en gezamenlijk beheer van de Bug Bounty-programma.

Wij gebruiken nu ook Apalache automatisch genereren complexe tests voor zowel Go- als Rust-implementaties van de Tendermint light-client en IBC rechtstreeks vanuit de TLA+-specificaties – zogenaamde “Modelgebaseerd testen”. Dit heeft het potentieel om de testdekking aanzienlijk te verbeteren, de inspanningen voor testonderhoud te verminderen en ervoor te zorgen dat de specificaties en software op één lijn blijven.

Tendermint-rs is een Rust-implementatie van de belangrijkste Tendermint-datastructuren, voornamelijk gebruikt in de Tendermint sleutelbeheersysteem, maar ook door openbare op Tendermint gebaseerde netwerken zoals Crypto.com. We hebben de bibliotheek in de komende versie v0.17 compatibel te zijn met Stargate en v0.34 van Tendermint Core, in wezen alle sporen van Amino verwijderen ten gunste van protocolbuffers, en het herstructureren van de code om de ergonomie voor ontwikkelaars te verbeteren door de protobuf-serialisatietypen te scheiden van de in-memory “domein typen”. We hebben ook een geïmplementeerd complete light-client in Rust, dat kan worden gecompileerd naar WebAssembly, en een nieuw WebSocket-client voor communicatie met volledige Tendermint-nodes.

Ibc-rs is een Rust-implementatie van het IBC-protocol en de relayer. Terwijl de ontwikkeling begon vóór Stargate, de laatste versie 0.0.4 is geüpgraded voor Stargate-compatibiliteit. De codebase bevindt zich nog in een vroeg stadium, maar de IBC-client en verbindingshandlers zijn geïmplementeerd en de eerste sporen van een relayer en protobuf-compatibele transactieondertekening beginnen te verschijnen!

We zijn oorspronkelijk begonnen met het uitgangspunt van ‘Verification Driven Development’, een benadering van softwareontwikkeling die fundamenteel gemotiveerd zou worden door de zorgen van formele verificatie. Naarmate we vorderden, merkten we echter dat we een meer ontwikkelingsgerichte verificatie wilden. Uiteindelijk is het bouwen en verifiëren van software, vooral in een context met meerdere entiteiten, een delicate dans die voortdurende feedback vereist tussen protocolonderzoekers en software-ingenieurs. Uiteindelijk is werkende software het allerbelangrijkste, en als verificatie daar niet in dienst van staat, waar is het dan eigenlijk goed voor? Hoewel het formeel specificeren van de protocollen ons heeft geholpen er helderder over na te denken en een aantal belangrijke bugs aan het licht heeft gebracht, is het meest waardevolle artefact waarschijnlijk het op modellen gebaseerde testen: complexe testgevallen die rechtstreeks uit de TLA+-specificaties worden gegenereerd en die kunnen worden uitgevoerd tegen alle protocollen. implementatie.

Op een gegeven moment vroeg een van onze onderzoeksingenieurs: "Wat is een protobuf en waarom besteden we er zoveel tijd aan om erover te praten?" Dit was een grimmige demonstratie van de kloof die kan ontstaan ​​tussen de belangen van software en onderzoekstechniek. Voor dit laatste is serialisatie slechts een implementatiedetail. Maar in zekere zin is het het ultieme implementatiedetail, omdat het de compatibiliteit met andere implementaties definieert en de fysieke instantiatie van het protocol buiten het geheugen van de computer biedt. De keuze voor Amino vroeg in het leven van Cosmos heeft meerdere implementaties buitengewoon moeilijk gemaakt, en het is een enorme inspanning van veel teams geweest om Amino te herzien en te vervangen door de gestandaardiseerde protocolbuffers. We zijn er zeker van dat de inspanningen in schoppen vruchten zullen afwerpen. We hebben ook geleerd hoe belangrijk het is om de serialisatiecode te scheiden van de rest van uw logica, door deze zo ver mogelijk naar de randen van uw software te duwen. Dit zorgt ervoor dat ontwikkelaars zich niet al te veel zorgen hoeven te maken over serialisatie, maakt het gemakkelijker om achterwaartse compatibiliteit te bieden en vereenvoudigt het werk van het upgraden van de serialisatie in de toekomst. Bekijk hoe tendermint-rs implementeerde zijn domeintypen, los van de protobuf-typen, als voorbeeld hiervan.

We hebben geweldige eerste resultaten gezien bij het genereren van tests voor de Rust Light-client, die nu ook worden toegepast op de Go Light-client. Er is nog veel meer werk te doen bij het definiëren van hoe de tests moeten worden gegenereerd en wat voor soort cases moeten worden onderzocht, en bij het uitbreiden van de modelgebaseerde tests met aanvullende vormen van fuzzing. We kijken er ook naar uit om tests te genereren voor alle aspecten van IBC en deze te gebruiken om compatibiliteit tussen de Go- en Rust-implementaties en toekomstige implementaties in andere talen te garanderen.

Nu we de Amino-bult voorbij zijn en de Cosmos-SDK is gestabiliseerd, werken we aan een complete IBC-relayer in Rust. De Rust-relayer zal het uitstekende werk van de Go-relayer aanvullen. Een belangrijk aandachtspunt van de Rust-relayer is het vastleggen van randgevallen en faalmodi, vooral veroorzaakt door relayer-races en kwaadaardige relayers. Het zal ook enige klantdiversiteit bieden aan het groeiende Cosmos-ecosysteem, waardoor meer integratiepunten in Rust mogelijk worden, en het zal zich richten op compilatie in WebAssembly. We werken ook aan volledige implementaties van de IBC-handlers in Rust, waardoor andere blockchain-applicaties die in Rust zijn geschreven eenvoudig via IBC in het Cosmos-netwerk kunnen worden geïntegreerd.

We zijn van plan om tendermint-rs te laten evolueren naar een volwaardige Tendermint volledige node-implementatie in Rust. We werken nauw samen met het Tendermint Core-team aan onze plannen om ervoor te zorgen dat onze routekaarten op één lijn blijven en dat onze wederzijdse inspanningen constructief op elkaar reageren. We zijn van plan om te beginnen met een eenvoudig P2P-zaadknooppunt in Rust dat zal helpen bij peer-discovery op Stargate-netwerken, en kijken ernaar uit om met het Tendermint Core-team samen te werken aan langverwachte upgrades voor het volledige Tendermint P2P-subsysteem.

We blijven de belangrijkste Cosmos-protocollen zorgvuldig beoordelen met het oog op het formeel specificeren ervan en het verbeteren van de testdekking van de implementaties. Naarmate het ecosysteem blijft groeien, zullen er steeds meer protocollen online komen, van bruggen naar andere blockchains, tot geautomatiseerde marktmakers, stakingderivaten, interchain staking, uitbreidingen van IBC en meer. Informele plannen om deel te nemen aan protocol- en implementatiebeoordeling voor deze cruciale componenten om de hoge kwaliteitsnorm voor software waar Cosmos zo bekend om staat, te helpen handhaven.

Tendermint Inc en vrienden!

Wij bij Tendermint Inc hebben onszelf in de schoenen van Cosmos SDK-clientapplicatieontwikkelaars geplaatst en ons gefocust op het verbeteren van hun ontwikkelingservaring.

Ten eerste is erkend dat het tempo van de Go API-evolutie meedogenloos is geweest en dat ontwikkelaars voortdurend een inhaalslag hebben gemaakt. Om dit aan te pakken, en in samenwerking met configuratie en Regen Networks hebben we de Cosmos-SDK v0.39 “Launchpad” releaseserie gelanceerd. Dit heeft twee doelen: het bieden van een stabiel platform voor gebruik door Cosmos-SDK-applicatieontwikkelaars en het bieden van een soepel migratiepad naar Stargate.

Ten tweede zijn wij van mening dat het ontwikkelen en implementeren van blockchain-applicaties net zo eenvoudig moet zijn als het schrijven van traditionele webapplicaties. Ons nieuwe product — Sterrenpoort – is ontworpen om precies dat te doen – en doet het ook. De reacties uit de gemeenschap zijn overweldigend.

We hebben ons resoluut achter de Cosmos-gemeenschap als geheel geplaatst. We hebben ontwikkelaars ondersteund bij het migreren van hun code naar Cosmos SDK v0.39 Launchpad door patches in te dienen en pull-aanvragen voor hun codebasis te openen, waardoor ze technische ondersteuning van ongekend hoge kwaliteit kregen (van geval tot geval).

We hebben

  • Geleverd een veiligere uitvoering van de sleutelhanger die toepassingen gebruiken om de sleutels van gebruikers op te slaan.
  • De Cosmos Upgrade Manager geïntegreerd in de Cosmos SDK.
  • De Rosetta API-specificaties van Coinbase geïmplementeerd in Cosmos SDK.
  • De interne onderdelen van het Cosmos SDK-bouwsysteem geoptimaliseerd, tests geschreven (een heleboel tests!).
  • Bijgedragen aan het ontwerp van de nieuwe testtools voor integratietesten.

Om het Stargate-initiatief te ondersteunen en het bewustzijn rond de nieuwe functies die naar Cosmos komen te vergroten, heeft Tendermint een website gebouwd https://stargate.cosmos.network/ De prachtig vormgegeven website biedt een overzicht van de veranderingen die met Stargate worden geïntroduceerd, bevat een gedetailleerd overzicht van de lopende testnetten en beschikt over een voortgangstracker. Sinds de lancering medio juli heeft de website ruim 13,000 unieke impressies gegenereerd. Gemiddelde tijd op pagina: 5 min.

Naast het leveren van ontwerpmiddelen die het bewustzijn rondom het Stargate-evenement hebben ondersteund, heeft het team van Tendermint Inc ook een voortrekkersrol gespeeld bij het leveren van updates aan de gemeenschap door het gebruik van verschillende initiatieven zoals de Engineering-updates of Today in Cosmos-recensies. Door de sociale kanalen te beheren en te vullen met constante updates over de stand van de ontwikkeling van het Cosmos Ecosysteem, konden we effectief communiceren met onze grotere gemeenschap en hen op de hoogte houden van de voortgang van de teams.

De waarde van het team, de gemeenschap en doorzettingsvermogen.

De ontwikkelingscyclus van Stargate is een uitdaging gebleken voor onze organisatie, maar toch bleef het team gefocust op de Cosmos Hub en zijn gemeenschap, waardoor struikelblokken uiteindelijk werden omgezet in springplanken naar nieuwe kansen. Stargate is een introspectieve reis geweest die ons ertoe heeft gebracht onze passie te herontdekken.

We leerden hoe belangrijk het is om actief naar de Gemeenschap te luisteren. We hebben gedebatteerd, gediscussieerd, afspraken gemaakt en, belangrijker nog, voortgebouwd op hun feedback. wij geloven dat Sterrenpoort is misschien wel het meest prominente voorbeeld van hoe feedback in actie kan worden omgezet.

Ten slotte hebben we geleerd dat samenwerking de kern vormt van succesvolle, ambitieuze technologieën zoals IBC. Samenwerken met zoveel teams over de hele wereld om Stargate te lanceren was een unieke ervaring waar we ten volle van genoten.

Ten eerste zijn we van plan onze ruim 15 jaar ervaring en expertise op het gebied van systeemontwikkeling op het spel te blijven zetten bij de ontwikkeling van de Cosmos SDK.

In samenwerking met B-oogstzijn we begonnen te werken aan een Automated Market Making (AMM)-module binnen de Cosmos SDK, en brengen daarmee het concept van gedecentraliseerde uitwisselingen naar het Cosmos-netwerk.

We zijn een nieuw project gestart, gesponsord door Interchain Foundation, genaamd Cosmos Cash. Dit is gericht op de instrumenten die nodig zijn om gedecentraliseerde, digitale en universele betalingssystemen te leveren, gebaseerd op een netwerk van geautoriseerde emittenten. De intentie? Een veilige, efficiënte en universele methode om op een wrijvingsloze en grenzeloze manier toegang te krijgen tot diensten en goederen te kopen.

Last but not least worden we groter en sterker. In de afgelopen drie maanden is het Engineering- en DevX-team respectievelijk in omvang verdubbeld en verdrievoudigd, klaar voor de volgende ontwikkelingscyclus van de Cosmos-technologiecorestack, producten en technologieën van partners.

Het Inter Blockchain-communicatieprotocol (IBC) is de kernwaardepropositie voor Cosmos geweest sinds de introductie op de whitepaper. De Stargate-release van de Cosmos SDK levert eindelijk de belofte op van een ecosysteem van onderling verbonden blockchains met de eerste versie van IBC.

Interchain GmbH heeft het afgelopen jaar leiding gegeven aan de totstandkoming van een canonieke specificatie voor het IBC-protocol. Deze specificatie schetst de datastructuren en interfaces die nodig zijn voor een keten die IBC ondersteunt (kernprotocol en applicaties erbovenop). De specificatie is ontwikkeld door een aantal belanghebbenden (Interchain GmbH, Tendermint Inc, Agoric, Informal Systems en anderen) en geconsolideerd in een reeks Interchain-normen (ICS).

De eerste implementatie van het protocol is ontwikkeld in Golang, als een Cosmos SDK module. De implementatie bestond uit verschillende functies:

  • : Implementatie van de IBC-specificatie voor transport, bestelling en authenticatie van pakketten (TAO). Ondersteunt lichte clientstatusinterfaces, verbindings- en kanaalhandshakes, pakketverwerking en hostnaamvalidatie.
  • : Elke implementatie omvat het maken van klanten, het bijwerken van klanten, het afhandelen van upgrades, het verifiëren van bewijzen en het afhandelen van wangedrag. De ondersteunde clients voor IBC v1 op de stargate-release zijn: solo-machineclient, Tendermint Core-client en localhost-client.
  • : De IBC-module ondersteunt vervangbare tokenoverdrachten tussen verbonden ketens.
  • : Een ontwikkelaarsvriendelijk testpakket dat het unit- en end-to-end testen van IBC-kerndatastructuren, gebruikersstromen en IBC-applicaties vereenvoudigt.
  • : Ondersteuning voor CLI- en gRPC-services voor interactie met het kernprotocol en applicatielagen.
  • : IBC v1 ondersteunt alleen protobuf als coderingsformaat (dwz geen ondersteuning voor legacy amino).
  • : Het IBC-team heeft ook een objectcapaciteitsmodule ontwikkeld die IBC-poortbinding ondersteunt. Het is gebouwd als een zelfstandige module die andere SDK-modules en -applicaties ondersteunt.

Nadat Game of Zones was afgerond, hebben we ons geconcentreerd op het opnieuw ontwerpen van de clients en UX rond de relayer. Dit resulteerde in de creatie van nieuwe queries en de implementatie van de IBC-appmodule-interface en callbacks. Dankzij deze toevoegingen konden we ontwikkelaars op een eenvoudige manier aangepaste applicaties bovenop IBC maken.

Een ketenupgrade moet rekening houden met speciale randgevallen voor zowel geplande als ongeplande upgrades (bijvoorbeeld wanneer een keten stopt vanwege een bug die moet worden gepatcht) die al dan niet belangrijke wijzigingen kunnen bevatten. Enkele van deze randgevallen die in de implementatie zijn opgenomen, waren: het voorkomen van upgrades naar verlopen clients, integratie met de upgrademodule om te controleren wat het laatste geplande upgradeplan is, en het aanpassen van de light client-statussen om zowel het versienummer (epoch) als de blokhoogte. Daarnaast hebben we de optie toegevoegd om bevroren of verlopen klanten bij te werken via een governancevoorstel. Hierdoor kunnen eerder vergrendelde fondsen opnieuw worden ontgrendeld met een geldige blokheader. Zie voor meer informatie over clientherstelmechanismen ADR26.

De kernimplementatie van de IBC-client moest opnieuw worden vormgegeven nadat we waren begonnen met de implementatie van de solomachine-client, omdat we ons realiseerden dat onze implementatie niet modulair genoeg was om nieuwe light-clientstatussen te ondersteunen. De IBC-implementatie op de Stargate-release is opnieuw vormgegeven om aanvullende lichte clients van BFT-ketens, zoals Polkadot's, te ondersteunen OPA klant.

Het IBC-team plant de volgende reeks functies voor de IBC-implementatie, zowel op kernprotocolniveau als als IBC-applicaties. De meest opvallende kernfuncties zijn onder meer cross-chain validatie voor gedeelde beveiliging, multi-hop pakketroutering (dat wil zeggen kanalen met meer dan één verbinding), NFT via IBC, enz. We verwachten dat aanvullende functieverzoeken zullen worden opgenomen naarmate de gemeenschap met het protocol interageert. .

Wij hebben ervoor betaald.

De bazaar is sterker dan de kathedraal.

Cosmos SDK v1.0, meer bestuursmogelijkheden, verbeterde UX voor sleutel- en accountbeheer, delegatie van vergoedingen, IBC op andere netwerken, portemonnees met meerdere ketens, branderketens…. Het internet van blockchains

Source: https://blog.cosmos.network/how-seven-teams-collaborated-to-deliver-the-biggest-software-upgrade-in-the-cosmos-universe-2288f4f9afe8?source=rss—-6c5d35b77e13—4

spot_img

Laatste intelligentie

spot_img