Javno testiranje rješenja za privatnost i skalabilnost u Ethereumu na cloud platformama

Blockchain trend nastavlja rasti. Sve više stručnjaka predviđa univerzalnu prilagodbu ove tehnologije u bliskoj budućnosti. Trenutno su još uvijek neriješeni neki problemi koji otežavaju to.

Prije svega, moderni blockchain sustavi slabo se skaliraju. Na primjer, propusnost Ethereuma iznosi samo 20 transakcija u sekundi, a unatoč brojnim prednostima, nije pogodan za velike poslove.

U isto vrijeme, Ethereum se cijeni zbog snažne zaštite od hakiranja i mrežnih smetnji. Stoga ga ne treba odbaciti. Bolje je ispraviti nedostatke Ethereuma i pretvoriti ih u prednosti.

Javno testiranje rješenja za privatnost i skalabilnost u Ethereumu na cloud platformama

Plasma Cash kao rješenje za privatnost i skalabilnost u Ethereumu

Plasma – tehnologija koju je predstavio Vitalik Buterin, suosnivač projekta Ethereum, na konferenciji EthCC u Parizu 2018. godine. Razvijena je u suradnji s Josephom Poonom, suosnivačem Lightning Network, i reklamirana kao rješenje koje povećava računsku moć blockchaina Ethereum. Prve vijesti o Plasmi procurile su u medije 2017. godine.

Ova platforma predstavlja vanjsku razinu pametnih ugovora koji mogu interagirati s osnovnim blockchainom, oslobađajući tako korijenski lanac, smanjujući transakcijske naknade za pametne ugovore i decentralizirane aplikacije (DApps).

Detaljne informacije o razvoju bile su izložene u dokumentu "Plasma: Scalable Autonomous Smart Contracts", datiranom u kolovozu 2017. godine.

Buterin je priznao da Plasma ima problema sa skalabilnošću: svaki korisnik mora preuzeti i provjeriti autentičnost svake Plasma blokade, što sprečava eksponencijalno skaliranje.

Kako bi ispravila taj nedostatak, razvijena je Plasma Cash — podlanac koji se sastoji od pametnog ugovora i privatne mreže temeljen na Node.js, koja periodično prenosi svoje stanje u korijenski lanac (Ethereum). Ona osigurava decentralizaciju, sigurnost i skalabilnost u blockchainu, rješavajući tako Skalabilnost Trileme.

Važna prednost Plasma Cash-a u odnosu na Plasmu je ta što privlači pažnju korisnika samo na one blokove koji sadrže njihove interesantne novčiće:

„Sada korisnici moraju provjeravati dostupnost i ispravnost Plasma lanca samo za posebni indeks povezan s novčićima koje žele potrošiti, kojima posjeduju i koji ih zanimaju“, rekao je Buterin.

Prema riječima programera, Plasma Cash je učinkovito rješenje za hakiranje na Etheru. Svaki Plasma novčić ima vlasnika i jedinstven je. Nitko ne može prisvojiti novčiće drugog korisnika bez njegovog znanja. Vlasnik novčića može spriječiti potencijalni prijevarni ispad sredstava putem sustava „žalbi“, podnoseći svoje „dokazne podatke“ u povijesti svog novčića.

Testiranje Plasma Cash u Mongo Atlas

Zbog svoje novine, Plasma Cash je još uvijek malo istražena. Stručnjaci za blockchain aktivno testiraju njezinu interakciju s raznim cloud uslugama i bazama podataka, bilježe nedostatke i pronalaze načine za njihovo ispravljanje. Konkretno, testovi u Mongo Atlasu otkrili su sljedeće prednosti u radu s Plasmom:

  1. Pouzdana zaštita od gubitka podataka, jer se nekoliko replik međusobno sinkronizira u klasteru.
  2. Brzi pristup, jer se klaster može stvoriti na tri najpopularnije cloud platforme: Amazon, Google, Azure. Kao rezultat, Plasma Cash čvor može se implementirati u mnogim podatkovnim centrima koji su blizu Mongo Atlasa. Dokazali smo da brzina ne opada značajno, čak i ako se Plasma čvorovi implementiraju u udaljenim podatkovnim centrima.
  3. Plasma čvorovi, korišteni samo u načinu čitanja, mogu biti povezani s jednim Mongo klasterom i smješteni na različitim dijelovima svijeta, što poboljšava geo-masovnu skalabilnost (čvorovi su bliže korisnicima).
  4. Lako je implementirati novi čvor, jer nije potrebno sve ponovno sinkronizirati. Možete se jednostavno povezati s postojećim Mongo klasterom ili brzo napraviti kopiju i postaviti vezu s njom.
  5. Lako je skalirati bazu podataka. S vremenom se podaci povećavaju, te se može povećati veličina čvorova u klasteru prema potrebi.

Javno testiranje rješenja za privatnost i skalabilnost u Ethereumu na cloud platformama

Koristili smo sljedeće poslužitelje za provođenje testova:

  • 3 virtualna Azure poslužitelja Standard E4s v3 (4 vCPU, 32 GiB memorije). Na svakom poslužitelju postavljene su 3 čvora. Jedan od njih može poslati blokove u korijenski lanac.
  • Svaki čvor je povezan sa svojim Mongo Atlas klasterom M50, koji sadrži 3 čvora u načinu replikacije.

Test 1

3 čvora primaju po 100k transakcija. Ukupno, u svih 9 čvorova se nalazi 300k transakcija i tokena.

Pogledajte video

Početno stanje: posljednji blok #213; u bazi je sačuvano 0 transakcija i tokena.

00:00 — Pokrenuta su 3 skripta koja generiraju i šalju po 100k transakcija
00:29 — Počelo slanje po 100k transakcija u čvorove #1 i #2
00:32 — Počelo slanje 100k transakcija čvoru #3
00:32 — Čvor #1 preuzeo iz bazena 11703 transakcije i formira blok #214 (9fb)
00:34 — Čvor #2 preuzeo iz bazena 27088 transakcija i formira blok #214 (ef4)
00:34 — Blok #214 (9fb) potpisan i šalje se drugim čvorovima na validaciju
00:36 — Čvor #3 preuzeo iz bazena 11900 transakcija i formira blok #214 (983)
00:37 — Blok #214 (9fb) validiran i poslan u korijenski lanac
00:38 — Blok #214 (983) potpisan i šalje se drugim čvorovima na validaciju
00:38 — Blok #214 (ef4) potpisan i šalje se drugim čvorovima na validaciju
00:40 — Blok #214 (983) validiran i poslan u korijenski lanac
00:41 — Svi čvorovi primili su iz korijenskog lanca informaciju da je blok #214 (9fb) dodan i počinju primjenjivati 11703 transakcije
00:45 — Svi čvorovi primili su iz korijenskog lanca informaciju da je blok #215 (983) dodan i počinju primjenjivati 11900 transakcija
00:51 — Blok #214 (ef4) validiran i poslan u korijenski lanac
00:52 — Čvor #1 preuzeo iz bazena 51469 transakcija i formira blok #216 (ea0)
00:56 — Čvor #3 preuzeo iz bazena 55102 transakcija i formira blok #216 (f75)
00:58 — Demo skript završio je svoj rad za čvor #2
00:58 — Blok #216 (ea0) potpisan i šalje se drugim čvorovima na validaciju
00:58 — Svi čvorovi primili su iz korijenskog lanca informaciju da je blok #216 (ef4) dodan i počinju primjenjivati 27088 transakcija
01:04 — Blok #216 (f75) potpisan i šalje se drugim čvorovima na validaciju
01:14 — Čvor #2 preuzeo iz bazena 72912 transakcija i formira blok #217 (f85)
01:15 — Demo skript završio je svoj rad za čvor #1 i #2
01:17 — Blokovi #216 (f75) i #216 (ea0) validirani i poslani u korijenski lanac
01:21 — Blok #217 (f85) potpisan i šalje se drugim čvorovima na validaciju
01:26 — Blokovi #217 (f75) i #218 (ea0) dodani u korijenski lanac i čvorovi počinju primjenjivati 51469 i 55102 transakcija prema tome
01:27 — Blok #217 (a85) validiran i poslan u korijenski lanac
01:41 — Čvor #1 preuzeo iz bazena 36828 transakcija i formira blok #219 (46f)
01:41 — Čvor #3 preuzeo iz bazena 32998 transakcija i formira blok #219 (bb3)
01:43 — Sve nodovi su dobili informacije iz korijenskog lanca o tome da je blok #219 (a85) dodat i počinju primjenjivati 72912 transakcija.
01:46 — Blok #219 (46f) je potpisan i šalje se drugim nodovima na validaciju.
01:46 — Blok #219 (bb3) je potpisan i šalje se drugim nodovima na validaciju.
01:53 — Noda #2 je obradila svih 100k transakcija koje su bile u radnoj grupi.
02:37 — Blok #219 (bb3) je validiran i poslan u korijenski lanac.
02:41 — Blok #219 (46f) je validiran i poslan u korijenski lanac.
02:48 — Blokovi #220 (bb3) i #221 (46f) su dodani u korijenski lanac, a nodovi počinju primjenjivati 32998 i 36828 transakcija соответственно.
02:54 — Noda #1 je obradila svih 100k transakcija koje su bile u radnoj grupi.
02:55 — Noda #3 je obradila svih 100k transakcija koje su bile u radnoj grupi.
04:12 — Svi nodovi sadrže po 300k transakcija i tokena posljednjeg bloka #221.

Test 2

3 nodovi primaju po 1k transakcija. U svim 9 nodovima se nalazi ukupno 3k transakcija i tokena.

Pogledajte video

Početno stanje: posljednji blok #213; u bazi je sačuvano 0 transakcija i tokena.

00:00 — Pokrenuta su 3 skripta koja generiraju i šalju po 1k transakcija.
02:29 — Počela je slanje po 1k transakcija u nodove #1 i #2.
02:33 — Noda #1 je uzela iz radne grupe 11668 transakcija i formira blok #222 (510).
02:35 — Blok #222 (510) je potpisan i šalje se drugim nodovima na validaciju.
02:37 — Blok #222 (510) je validiran i poslan u korijenski lanac.
02:38 — Noda #2 je uzela iz radne grupe 46378 transakcija i formira blok #222 (a9d).
02:38 — Počelo je slanje 1k transakcija nodu #3.
02:41 — Noda #3 je uzela iz radne grupe 5504 transakcija i formira blok #222 (387).
02:42 — Blok #222 (387) je potpisan i šalje se drugim nodovima na validaciju.
02:44 — Blok #222 (a9d) je potpisan i šalje se drugim nodovima na validaciju.
02:44 — Blok #222 (387) je validiran i poslan u korijenski lanac.
02:49 — Blok #222 (a9d) je validiran i poslan u korijenski lanac.
02:56 — Blokovi #222 (510), #223 (387) i #224 (a9d) su dodani u korijenski lanac, a nodovi počinju primjenjivati 11668, 5504 i 46378 transakcija соответственно.
03:09 — Noda #1 je uzela iz radne grupe 177170 transakcija i formira blok #225 (e50).
03:09 — Noda #3 je uzela iz radne grupe 119327 transakcija i formira blok #225 (ccc).
03:10 — Noda #2 je uzela iz radne grupe 149772 transakcija i formira blok #225 (404).
03:26 — Blok #225 (ccc) je potpisan i šalje se drugim nodovima na validaciju.
03:32 — Blok #225 (404) je potpisan i šalje se drugim nodovima na validaciju.
03:33 — Blok #225 (e50) je potpisan i šalje se drugim nodovima na validaciju.
03:53 — Blok #225 (ccc) je validiran i poslan u korijenski lanac.
04:03 — Blok #225 (e50) je validiran i poslan u korijensku lanac
04:04 — Blok #225 (404) je validiran i poslan u korijensku lanac
04:06 — Sve nodovi su primili iz korijenske lance informaciju da je blok #225 (ccc) dodan i počinju primijeniti 119327 transakcija
04:14 — Sve nodovi su primili iz korijenske lance informaciju da je blok #226 (404) dodan i počinju primijeniti 149772 transakcija
04:16 — Sve nodovi su primili iz korijenske lance informaciju da je blok #227 (e50) dodan i počinju primijeniti 177170 transakcija
04:32 — Noda #3 je uzela iz bazena 209436 transakcija i formira blok #228 (1e9)
04:40 — Noda #2 je uzela iz bazena 212669 transakcija i formira blok #228 (e38)
04:40 — Noda #1 je uzela iz bazena 190144 transakcija i formira blok #228 (861)
05:02 — Blok #228 (1e9) je potpisan i šalje se drugim nodovima na validaciju
05:08 — Blok #228 (861) je potpisan i šalje se drugim nodovima na validaciju
05:10 — Blok #228 (e38) je potpisan i šalje se drugim nodovima na validaciju
06:13 — Blok #228 (1e9) je validiran i poslan u korijensku lanac
06:13 — Blok #228 (861) je validiran i poslan u korijensku lanac
06:13 — Blok #228 (e38) je validiran i poslan u korijensku lanac
06:39 — Blokovi #228 (861), #229 (1e9) i #230 (e38) su dodani u korijensku lanac i nodovi počinju primjenjivati 190144, 209436 i 212669 transakcija redom
07:07 — Noda #1 je uzela iz bazena 199770 transakcija i formira blok #231 (e04)
07:09 — Noda #2 je uzela iz bazena 190473 transakcija i formira blok #231 (36e)
07:09 — Noda #3 je uzela iz bazena 178807 transakcija i formira blok #231 (f43)
07:34 — Blok #231 (e04) je potpisan i šalje se drugim nodovima na validaciju
07:37 — Blok #231 (36e) je potpisan i šalje se drugim nodovima na validaciju
07:37 — Blok #231 (f43) je potpisan i šalje se drugim nodovima na validaciju
08:49 — Blok #231 (e04) je validiran i poslan u korijensku lanac
08:51 — Blok #231 (f43) je validiran i poslan u korijensku lanac
08:52 — Blok #231 (36e) je validiran i poslan u korijensku lanac
09:47 — Blokovi #231 (e04), #232 (f43) i #233 (36e) su dodani u korijensku lanac i nodovi počinju primjenjivati 199770, 178807 i 190473 transakcija redom
10:16 — Noda #1 je uzela iz bazena 153075 transakcija i formira blok #234 (e04)
10:16 — Noda #2 je uzela iz bazena 168035 transakcija i formira blok #234 (36e)
10:16 — Noda #3 je uzela iz bazena 166685 transakcija i formira blok #234 (f43)
10:42 — Blok #234 (56d) je potpisan i šalje se drugim nodovima na validaciju
11:59 — Blok #234 (1bb) je provjeren i poslan u korijensku lanac
12:02 — Blok #234 (58a) je provjeren i poslan u korijensku lanac
12:02 — Blok #234 (56d) je provjeren i poslan u korijensku lanac
12:48 — Blokovi #234 (1bb), #235 (58a) i #236 (56d) su dodani u korijensku lanac, a čvorovi počinju primjenjivati 153075, 168035 i 166685 transakcija redom
13:14 — Čvor #1 je preuzeo iz grupe 112226 transakcija i formira blok #237 (5c0)
13:16 — Čvor #2 je preuzeo iz grupe 87550 transakcija i formira blok #234 (58a)
13:16 — Čvor #3 je preuzeo iz grupe 99594 transakcija i formira blok #234 (56d)
13:30 — Blok #237 (5c0) je potpisan i poslan drugim čvorovima na provjeru
13:32 — Blok #237 (58a) je potpisan i poslan drugim čvorovima na provjeru
13:34 — Blok #237 (56d) je potpisan i poslan drugim čvorovima na provjeru
14:47 — Blok #237 (58a) je provjeren i poslan u korijensku lanac
14:53 — Blok #237 (5c0) nije bio provjeren u zadanom vremenu
14:53 — Svi čvorovi su primili iz korijenske lanac informaciju da je blok #237 (58a) dodat i počinju primjenjivati 87550 transakcija
14:54 — Blok #237 (56d) je provjeren i poslan u korijensku lanac
15:02 — Čvor #1 je preuzeo iz grupe 181206 transakcija i formira blok #238 (c5f)
15:06 — Svi čvorovi su primili iz korijenske lanac informaciju da je blok #238 (56d) dodat i počinju primjenjivati 99594 transakcija
15:12 — Čvor #2 je preuzeo iz grupe 51990 transakcija i formira blok #239 (ad8)
15:20 — Blok #239 (ad8) je potpisan i poslan drugim čvorovima na provjeru
15:25 — Čvor #3 je preuzeo iz grupe 46685 transakcija i formira blok #239 (857)
15:30 — Blok #238 (c5f) je potpisan i poslan drugim čvorovima na provjeru
15:34 — Blok #239 (857) je potpisan i poslan drugim čvorovima na provjeru
16:32 — Blok #239 (857) je provjeren i poslan u korijensku lanac
16:42 — Svi čvorovi su primili iz korijenske lanac informaciju da je blok #239 (857) dodat i počinju primjenjivati 46685 transakcija
16:42 — Blok #238 (c5f) je provjeren i poslan u korijensku lanac
16:42 — Blok #239 (ad8) nije bio provjeren u zadanom vremenu
16:54 — Čvor #2 je preuzeo iz grupe 96882 transakcija i formira blok #240 (e6e)
16:56 — Čvor #3 je preuzeo iz grupe 39704 transakcija i formira blok #240 (a47)
17:02 — Blok #240 (a47) je potpisan i poslan drugim čvorovima na provjeru
17:02 — Blok #240 (e6e) je potpisan i poslan drugim čvorovima na provjeru
17:18 — Sve nodovi su primili iz korijenske lančane informacije da je blok #240 (c5f) dodan i počinju primjenjivati 181206 transakcija
17:45 — Blok #240 (a47) je validiran i poslan u korijensku lančanu
17:47 — Nodo #1 je uzela iz pool-a 54956 transakcija i formira blok #241 (170)
17:59 — Blok #241 (170) je potpisan i šalje se drugim nodovima na validaciju
18:09 — Sve nodovi su primili iz korijenske lančane informacije da je blok #241 (a47) dodan i počinju primjenjivati 181206 transakcija
18:20 — Nodo #3 je uzela iz pool-a 39104 transakcija i formira blok #242 (955)
18:24 — Blok #240 (e6e) je validiran i poslan u korijensku lančanu
18:28 — Blok #242 (955) je potpisan i šalje se drugim nodovima na validaciju
18:09 — Sve nodovi su primili iz korijenske lančane informacije da je blok #242 (e6e) dodan i počinju primjenjivati 96882 transakcija
19:06 — Demo skripta je završila svoj rad za nodo #1
19:08 — Demo skripta je završila svoj rad za nodo #2
19:08 — Nodo #2 je uzela iz pool-a 48241 transakcija i formira blok #243 (fde)
19:14 — Blok #243 (fde) je potpisan i šalje se drugim nodovima na validaciju
19:18 — Blok #241 (170) nije bio validiran u zadato vrijeme
19:28 — Nodo #1 je uzela iz pool-a 86967 transakcija i formira blok #243 (37c)
19:35 — Blok #242 (955) je validiran i poslan u korijensku lančanu
19:40 — Blok #243 (37c) je potpisan i šalje se drugim nodovima na validaciju
20:05 — Sve nodovi su primili iz korijenske lančane informacije da je blok #243 (955) dodan i počinju primjenjivati 39104 transakcija
20:15 — Blok #243 (fde) je validiran i poslan u korijensku lančanu
20:19 — Nodo #3 je uzela iz pool-a 42981 transakcija i formira blok #244 (9b5)
20:26 — Blok #244 (9b5) je potpisan i šalje se drugim nodovima na validaciju
20:28 — svi nodovi su primili iz korijenske lančane informacije da je blok #244 (fde) dodan i počinju primjenjivati 48241 transakcija
20:32 — Nodo #2 je obradila svih 1k transakcija koje su bile u pool-u
21:05 — Blok #243 (37c) nije bio validiran u zadato vrijeme
21:15 — Nodo #1 je uzela iz pool-a 86967 transakcija i formira blok #245 (37c)
21:32 — Blok #245 (37c) je potpisan i šalje se drugim nodovima na validaciju
21:42 — Blok #244 (9b5) je validiran i poslan u korijensku lančanu
21:50 — Sve nodovi su primili iz korijenske lančane informacije da je blok #245 (9b5) dodan i počinju primjenjivati 42981 transakcija
22:04 — Nodo #3 je uzela iz pool-a 45361 transakcija i formira blok #246 (3f9)
22:11 — Blok #246 (3f9) potpisan i šalje se drugim čvorovima na validaciju
22:51 — Blok #245 (37c) nije bio validiran u zadanom vremenu
23:01 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #246 (37c)
23:08 — Demo skripta završila je svoj rad za čvor #3
23:15 — Blok #246 (37c) potpisan i šalje se drugim čvorovima na validaciju
23:32 — Blok #246 (3f9) nije bio validiran u zadanom vremenu
23:42 — Čvor #3 preuzeo je iz pool-a 52173 transakcija i formira blok #246 (71d)
23:51 — Blok #246 (71d) potpisan i šalje se drugim čvorovima na validaciju
24:38 — Blok #246 (37c) nije bio validiran u zadanom vremenu
25:01 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #246 (37c)
25:06 — Blok #246 (71d) validiran i poslan u korijensku mrežu
25:12 — Blok #246 (37c) potpisan i šalje se drugim čvorovima na validaciju
25:14 — Svi čvorovi primili su iz korijenske mreže informacije da je blok #246 (71d) dodat i počinju primjenjivati 52173 transakcija
25:29 — Čvor #3 obradio je svih 1kk transakcija koje su bile u pool-u
26:40 — Blok #247 (37c) nije bio validiran u zadanom vremenu
26:47 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #247 (37c)
27:03 — Blok #247 (37c) potpisan i šalje se drugim čvorovima na validaciju
28:29 — Blok #247 (37c) nije bio validiran u zadanom vremenu
28:35 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #247 (37c)
28:49 — Blok #247 (37c) potpisan i šalje se drugim čvorovima na validaciju
30:13 — Blok #247 (37c) nije bio validiran u zadanom vremenu
30:23 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #247 (37c)
30:38 — Blok #247 (37c) potpisan i šalje se drugim čvorovima na validaciju
32:00 — Blok #247 (37c) nije bio validiran u zadanom vremenu
32:11 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #247 (37c)
32:26 — Blok #247 (37c) potpisan i šalje se drugim čvorovima na validaciju
33:49 — Blok #247 (37c) nije bio validiran u zadanom vremenu
33:59 — Čvor #1 preuzeo je iz pool-a 86967 transakcija i formira blok #247 (37c)
34:12 — Blok #247 (37c) potpisan i šalje se drugim čvorovima na validaciju
35:34 — Blok #247 (37c) validiran i poslan u korijensku mrežu
35:54 — Svi čvorovi primili su iz korijenske mreže informacije da je blok #247 (37c) dodat i počinju primjenjivati 86967 transakcija
36:11 — Čvor #1 obradio je svih 1kk transakcija koje su bile u pool-u
55:12 — prvi čvor obradio je svih 3kk transakcija

Javno testiranje rješenja za privatnost i skalabilnost u Ethereumu na cloud platformama

Zaključci

Utvrđeno je da virtualni serveri Azure nemaju dovoljnu procesorsku snagu za obradu tako velikog broja transakcija. No, s osnovnim zadatkom testova, a to je demonstracija rada Plasma Cash s MongoDB, sustav se dobro nosio.

Pozivamo vas da posjetite GitHub projekta: https://github.com/opporty-com/Plasma-Cash/tree/new-version

Članak je napisan u suradnji s Aleksandrom Našivanom, senior developerom Clever Solution Inc.

Ranije je tim razvijača Opporty već testirao brzinu Plasma Cash. Rezultati su izloženi u ovom članku.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster