Connext v2.0 a Mainnet-en
tl;dr: Elszállítottuk a dolgot! 🚢
A v2.0 fantasztikus, mert: megduplázza azt, amit az emberek szeretnek a v1-ből, natívan támogatja a pénztárcákat, enyhíti a v1 fájdalmas pontjait, és javítja a bizalmi feltételezéseket.
A pénztárcák és dAppok a dokumentációnkban található gyorsindítással kezdhetik el. Egy folyamatban lévő (Rinkeby) dai kártya itt érhető el.
A Rinkeby teszteléssel, ellenőrzésekkel és hibajavítással töltött hosszú két hónap után telepítettük a Connext v2.0-ás verzióját! 🌟
- A legjobb hely, ahol belevághatsz, a gyorsindítási útmutató a dokumentációnkban.
- Jöjj, beszélj velünk a discordon, ha bármilyen kérdésed van.
- A kód elérhető a következő címen: https://github.com/ConnextProject/indra
- Work in progress Rinkeby v2.0 Dai Card is live at: https://rinkeby.indra.connext.network
Mi a helyzet a mainnet v2.0 Dai kártyával? Hamarosan! Azon dolgozunk, hogy ne legyenek olyan UI gubancok, amelyek miatt a felhasználók elveszíthetik a pénzüket.
A v2.0 Counterfactualon fut. Ha integrálod a v2.0-t, akkor végül támogatni fogod a State Channels keretrendszert is – a csatornák egységes szabványát az Ethereumon.
Hogyan működik?
Nézd meg a tesztnet posztunkat a technológia áttekintéséért!
Miért fontos a V2.0?
Két évvel ezelőtt egy egyszerű kérdéssel indítottuk el a Connextet:
“Hogyan tudunk 1 milliárd felhasználót az Ethereumhoz juttatni?”
Ez a kérdés rengeteg termékiteráción keresztül vezetett minket a skálázhatóság, az UX és az Ethereum transzferek találkozásánál. Feltételeztük, hogy a végfelhasználók zökkenőmentes és konzisztens élményt szeretnének a pénztárcájukban és az alkalmazásaikban, függetlenül attól, hogy van-e Ethereum gázsijuk, vagy mennyire zsúfolt a blokklánc, vagy akár attól, hogy milyen oldalláncon/plasmachain/shardon vannak.
Azt tudtuk, hogy valami fontosat találtunk, amikor az év elején kiszállítottuk a v1 Dai Cardot, és ilyen reakciókat láttunk:
A v2.0 megalkotásakor a céljaink egyszerűek voltak. Először is: megduplázni azt, amit a felhasználók már most is szeretnek a Connextben. Ez azt jelentette, hogy tovább egyszerűsítettük a Connext integrációkat, alapértelmezettként újra megvalósítottuk a linkeken keresztül történő egyszerű beszállást, és – ami a legfontosabb – tovább dolgoztunk azon, hogy a már most is varázslatos átutalások még gyorsabbak legyenek.
Második: a Connextet elsősorban pénztárca-tárca hálózattá architektúráltuk át, amelybe a dAppok a saját speciális felhasználási eseteikhez kapcsolódhatnak. Úgy találtuk, hogy a tárcák imádták a v1 által lehetővé tett felhasználói élményt, ezért újraterveztük a Connext klienst, hogy sokkal zökkenőmentesebben működjön együtt a meglévő tárcafejlesztési paradigmákkal a kulcskezelés és tárolás terén.
Harmadszor: újragondoltuk a felhasználók legnagyobb fájdalmas pontjainak megközelítését. A v1-ben a Connext legnehezebb része – nem meglepő módon – a csatornába való befizetés és a csatornából való kivonás folyamata volt onchain. A v2.0-ban nem csak egyszerűsítettük a befizetést/kivételt, hanem lehetővé tettük a pénztárcák számára, hogy a felhasználó csatornájának szolgáltatóját injektálják egy dApp-ba , megszüntetve annak szükségességét, hogy a felhasználóknak kezdetben egynél több csatornába kelljen befizetniük. A másik nagy fejfájás a v1-ben a protokoll rugalmatlansága volt, ami azt jelentette, hogy hetekig vagy hónapokig tartott a felhasználói visszajelzésekre való reagálás. A v2.0-ban ehelyett napok alatt hozzáadhatjuk az új alkalmazások vagy funkciók támogatását.
Negyedszer: hiteles, érdemi előrelépés afelé, hogy egy bizalom-csökkentett és decentralizált rendszerré váljunk. Bár a valódi decentralizáció még egy kicsit messze van, sikeresen áttértünk arra, hogy teljes mértékben ne legyen bizalmi rendszer, és lefektettük az alapokat a Lightning-stílusú multihop megvalósításához túl sok jövőbeli protokollváltoztatás nélkül. Ezt részletesebben a Trust Assumptions alább tárgyaljuk.
v2.0 Connext a csúcspontja az összes fantasztikus visszajelzésnek, amit eddig kaptunk a közösségtől, és egyben az első lépés egy olyan Ethereum kettes réteg felé, amely készen áll a mindennapi használatra.
Köszönjük mindenkinek, hogy részesei voltatok az eddigi csodálatos utazásunknak!
Bizalmi feltételezések
Amikor elindítottuk a Dai Cardot a Connext v1-en, felsoroltuk a hálózatunk főbb bizalmi feltételezéseit. Ezúttal a régi feltételezéseinket tekintjük át, amellett, hogy kitérünk a frissítéssel bevezetett újakra is.
A menet közbeni egyes fizetések letétbe helyezettek voltak
A v1-ben a felhasználói pénzeszközök mindig nem voltak letétbe helyezettek, de magukat az átutalásokat menet közben néha a hub tartotta. Ez különösen igaz volt a feltételesebb átutalásokra, például a Link kifizetésekre vagy az offline címzetteknek történő átutalásokra.
A v2.0-ban minden átutalás teljes mértékben nem letétbe helyezhető, még menet közben is. A hub nem képes ellopni a pénzedet. Ez azért lehetséges, mert a v2.0 natívan támogatja az általános állapotfrissítéseket a csatornákban, ami sokkal nagyobb rugalmasságot biztosít számukra.
A hub tartotta az állapot “fő” példányát, és az ügyfelek alapértelmezés szerint nem készítettek biztonsági másolatot az állapotról
A v1-ben, ha offline állapotba kerültél, a hub volt az egyetlen entitás, amely megőrizte az állapotodat. Ez nagyszerű volt az eszközök közötti kompatibilitás szempontjából, de azt jelentette, hogy a hubtól függött, hogy pontosan visszaállítja-e az állapotát, és hogy igazat mond-e a viták során. Eredetileg ezt az állapot IPFS-en történő mentésével akartuk megoldani, de azóta úgy döntöttünk, hogy más irányba megyünk.
A v2.0-ban az állapot tárolása és mentése a tárcára van bízva. A felhasználónak rendelkeznie kell az állapot helyi másolatával ahhoz, hogy egy csatornát futtasson, ami az állapot tartós “munkamásolataként” működik, de a tárcák további távoli biztonsági másolatokat is létrehozhatnak és valószínűleg létre is kell hozniuk. Az ügyfelek alapértelmezés szerint már nem állítják vissza az állapotot a hubból, bár opcionálisan megtehetik, ha a végfelhasználó úgy dönt. Azt sem követeljük meg többé, hogy a csatornák vitáit csak a csatorna tulajdonosa oldja meg – ez lehetővé teszi a pénztárca szolgáltatók számára, hogy Watchtowerként működjenek a felhasználóik számára.
A frissítések http-n keresztül történnek és cenzúrázhatóak
A v1-ben a hub egy REST szerver volt, és az ügyfelek http POST-okon keresztül kommunikálták a frissítéseket. Ez jó taktika volt az egyszerűség érdekében, de azt jelentette, hogy a hub egy nehézkes kérésalapú áramlást írt elő az állapotok frissítéséhez, és cenzúrázni tudta ezeket a frissítéseket.
A v2.0-ban áttértünk a NATS-re – egy rendkívül skálázható, könnyű, nyílt forráskódú, p2p üzenetküldő rendszerre. A NATS lehetővé teszi, hogy a hub eltávolodjon a http-kérés paradigmától, lehetővé téve, hogy az állapot több független másolata legyen. Sajnos a megfelelő működéshez még mindig szükség van egy üzenetküldő kiszolgáló implementálására (jelenleg a hubon található). Ez azt jelenti, hogy bár most már p2p, a központosított v2.0 hubban lévő üzenetek még mindig cenzúrázhatóak, mint a v1-ben.
A döntés, hogy kifejezetten a NATS-t használjuk, azonban egy lépés a probléma megoldása felé. A NATS támogatja a decentralizált (hálós) üzenetküldést sok üzenetküldő szerver klaszterezésével. Ez azt jelenti, hogy klaszterezett NATS példányokat szállíthatunk a Connext csomópontok részeként az esetleges decentralizált hálózatunkban, hogy ezzel együtt decentralizáljuk az üzenetküldő rétegünket.
Az átutalások a hubon keresztül történnek és cenzúrázhatóak
A v1-ben minden felhasználó letétbe helyezett csatornákat a hubon keresztül, majd a hubon keresztül továbbította az átutalásokat egymásnak (hasonlóan a 0x relayerek működéséhez). Ez egy bootstrapping technika volt egy megbízható, könnyen iterálható rendszer létrehozásához, miközben felhasználói adatokat gyűjtöttünk és különböző felhasználási eseteket teszteltünk. Ez azonban azt is jelentette, hogy a hubot cenzúrázni, DDoS-olni vagy leállítani lehetett, ami a fizetési szolgáltatásunkat offline állapotba hozta (bár a felhasználói pénzek nem vesznek el!).
A v2.0 induláskor ugyanezt a paradigmát használja, és továbbra is cenzúrázható. Még mindig van munka, amit el kell végezni, mielőtt valóban decentralizált hálózattá válhatunk. Azonban a p2p üzenetküldés és az általánosított állapot hozzáadása hatalmas lépés a jó irányba. Most már gyorsan iterálhatunk bővíthetőbb átviteli protokollokat anélkül, hogy a rendszer teljes újraírását vagy az interfészek drasztikus frissítését kellene elvégeznünk.
Az ügyfél proxyként a hub interfészén keresztül fér hozzá a Redlockhoz
A felhasználói állapot tárolásának decentralizálásával bevezettük az állapot egyidejű frissítésével kapcsolatos komplexitást. A centralizált szervereken az egyidejűséget az állapot zárolásával/feloldásával kezelik minden egyes műveletnél. A mi elosztott paradigmánkhoz a Redis elosztott zárolásait integráltuk a hubba. Sajnos a Redis nem natívan támogatott a böngészőkben, és a Webdis, a böngészőalapú Redis-interfész nem támogatja a Redlockot.
A hatékony szállítás érdekében egy proxy-interfészt építettünk, amelyet a hub hosztol, hogy az ügyfél lezárhassa/feloldhassa az állapotát. Rövid- és középtávon várhatóan újraimplementáljuk vagy módosítjuk a Webdis-t, hogy az elosztott zárolást is használhassa.
Technikai részletek
A szerződések független auditálása megtörtént:
- Auditjelentés készítése
- Decenter Audit Report
Mainnet szerződések:
- ChallengeRegistry.sol
- ConditionalTransactionDelegateTarget.sol
- CoinBalanceRefundApp.sol
- MultiAssetMultiPartyCoinTransferInterpreter.sol
- IdentityApp.sol
- MinimumViableMultisig.sol (singleton)
- ProxyFactory.sol
- SingleAssetTwoPartyCoinTransferInterpreter.sol
- TimeLockedPassThrough.sol
- TwoPartyFixedOutcomeInterpreter.sol
- TwoPartyFixedOutcomeFromVirtualAppInterpreter.sol
- SimpleTwoPartySwapApp.sol
- SimpleLinkedTransferApp.sol
- SimpleTransferApp.sol
Szerződéskód:
- Counterfactual Funding Protocol szerződések
- Counterfactual Adjudication szerződések
Leave a Reply