Offentlig test af Ethereums privatlivs- og skalerbarhedsløsning på cloud-platforme

Blockchain-trenden fortsætter med at tage fart. Flere og flere eksperter forudser universel tilpasning af denne teknologi i den nærmeste fremtid. I øjeblikket er flere problemer, der forhindrer dette, uløste.

Først og fremmest skalerer moderne blockchain-systemer ikke godt. Eksempelvis har Ethereum en gennemstrømning på kun 20 transaktioner i sekundet, og på trods af sine mange fordele er det ikke egnet til store virksomheder.

Samtidig er Ethereum værdsat for sin kraftfulde beskyttelse mod hacking og netværksfejl. Så du skal ikke afskrive ham. Det giver mere mening at rette op på Ethereums mangler og gøre dem til fordele.

Offentlig test af Ethereums privatlivs- og skalerbarhedsløsning på cloud-platforme

Plasma Cash som en privatlivs- og skalerbarhedsløsning på Ethereum

Plasma er en teknologi introduceret af Vitalik Buterin, medstifter af Ethereum-projektet, på EthCC-konferencen i Paris i 2018. Den blev udviklet i fællesskab med Joseph Poon, medstifter af Lightning Network, og faktureres som en løsning til at øge Ethereum blockchains regnekraft. Den første nyhed om Plasma lækket til medierne i 2017.

Denne platform giver et eksternt lag af smarte kontrakter, der kan interagere med den primære blockchain og derved aflaste rodkæden, hvilket reducerer transaktionsgebyrer for smarte kontrakter og decentraliserede applikationer (DApps).

Detaljerede oplysninger om udviklingen blev præsenteret i dokumentet "Plasma: Skalerbare autonome smarte kontrakter", dateret august 2017.

Buterin erkendte, at Plasma har iboende skalerbarhedsproblemer: Hver bruger skal downloade og autentificere hver Plasma-blok, hvilket forhindrer eksponentiel skalering.

For at rette op på denne mangel blev Plasma Cash udviklet - en børnekæde bestående af en smart kontrakt og et privat netværk baseret på Node.js, som med jævne mellemrum overfører sin tilstand til rodkæden (Ethereum). Det giver decentralisering, sikkerhed og skalerbarhed i blockchain og løser derved skalerbarhedstrilemmaet.

En vigtig fordel ved Plasma Cash sammenlignet med Plasma er, at det kun tiltrækker brugernes opmærksomhed på de blokke, der indeholder de mønter, de er interesserede i:

"Brugere behøver nu kun at kontrollere tilgængeligheden og gyldigheden af ​​plasmakæden for det specifikke indeks, der er forbundet med de mønter, de ønsker at bruge, eje og er interesseret i," sagde Buterin.

Ifølge udviklerne er Plasma Cash en effektiv kur mod hacks i Ethereum. Hver Plasma-mønt har en ejer og er unik. Ingen kan tage en anden brugers mønter i besiddelse uden hans viden. En møntholder kan forhindre potentielle svigagtige hævninger gennem "klage"-systemet ved at præsentere deres "bevisdata" i historien om deres mønt.

Test af plasmakontanter i Mongo Atlas

På grund af dets nyhed er Plasma Cash stadig lidt undersøgt. Blockchain-eksperter tester aktivt dets interaktion med forskellige cloud-tjenester og databaser, identificerer mangler og finder måder at rette dem på. Især tests i Mongo Atlas afslørede følgende fordele ved arbejde med plasma:

  1. Pålidelig beskyttelse mod tab af data, da der er flere replikaer, der synkroniserer med hinanden i klyngen.
  2. Hurtig adgang, da en klynge kan oprettes på de tre mest populære cloud-platforme: Amazon, Google, Azure. Som et resultat kan Plasma Cash-knuden implementeres i mange datacentre, der ligger tæt på Mongo Atlas. Vi har bevist, at hastigheden ikke falder meget, selvom Plasma-noder er indsat i mere fjerntliggende datacentre.
  3. Plasma noder, der bruges i skrivebeskyttet tilstand, kan forbindes til en Mongo-klynge og placeres i forskellige dele af verden, hvilket forbedrer geo-skalerbarhed (knudepunkter er tættere på brugerne).
  4. Det er nemt at implementere en ny node, da du ikke behøver at synkronisere alt igen. Du kan blot oprette forbindelse til en eksisterende Mongo-klynge eller hurtigt lave en kopi og konfigurere en forbindelse til den.
  5. Det er nemt at skalere din database. Over tid bliver flere data tilgængelige, og du kan øge størrelsen af ​​noderne i klyngen efter behov.

Offentlig test af Ethereums privatlivs- og skalerbarhedsløsning på cloud-platforme

Vi brugte følgende servere til at udføre tests:

  • 3 virtuelle Azure-servere Standard E4s v3 (4 vcpus, 32 GiB hukommelse). Hver server har 3 noder. En af dem kan indsende blokke til rodkæden.
  • Hver node er forbundet til sin egen Mongo Atlas M50-klynge, der indeholder 3 noder i replika-tilstand.

Test 1

3 noder modtager 100 transaktioner hver. I alt indeholder alle 9 noder 300 transaktioner og tokens.


Den oprindelige tilstand: sidste blok #213; 0 transaktioner og tokens gemmes i databasen.

00:00 — Der lanceres 3 scripts, der genererer og sender 100 transaktioner hver
00:29 — Afsendelse af 100 transaktioner til node #1 og #2 er begyndt
00:32 — Afsendelse af 100 transaktioner til node #3 er begyndt
00:32 — Node #1 tog 11703 transaktioner fra puljen og formularer blok #214 (9fb)
00:34 — Node #2 tog 27088 transaktioner fra puljen og formularer blok #214 (ef4)
00:34 — Blok #214 (9fb) er underskrevet og sendt til andre noder til validering
00:36 — Node #3 tog 11900 transaktioner fra puljen og formularer blok #214 (983)
00:37 — Blok #214 (9fb) er valideret og sendt til rodkæden
00:38 — Blok #214 (983) er underskrevet og sendt til andre noder til validering
00:38 — Blok #214 (ef4) er underskrevet og sendt til andre noder til validering
00:40 — Blok #214 (983) er valideret og sendt til rodkæden
00:41 — Alle noder modtog information fra rodkæden om, at blok #214 (9fb) blev tilføjet og begynder at anvende 11703 transaktioner
00:45 — Alle noder modtog information fra rodkæden om, at blok #215 (983) blev tilføjet og begynder at anvende 11900 transaktioner
00:51 — Blok #214 (ef4) er valideret og sendt til rodkæden
00:52 — Node #1 tog 51469 transaktioner fra puljen og formularer blok #216 (ea0)
00:56 — Node #3 tog 55102 transaktioner fra puljen og formularer blok #216 (f75)
00:58 — Demoscriptet har afsluttet sit arbejde for node #2
00:58 — Blok #216 (ea0) er underskrevet og sendt til andre noder til validering
00:58 — Alle noder modtog information fra rodkæden om, at blok #216 (ef4) er blevet tilføjet og begynder at anvende 27088 transaktioner
01:04 — Blok #216 (f75) er underskrevet og sendt til andre noder til validering
01:14 — Node #2 tog 72912 transaktioner fra puljen og formularer blok #217 (f85)
01:15 — Demoscriptet er færdigt med at fungere for noderne #1 og #2
01:17 — Blokke #216 (f75) og #216 (ea0) valideres og sendes til rodkæden
01:21 — Blok #217 (f85) er underskrevet og sendt til andre noder til validering
01:26 - Blokke #217 (f75) og #218 (ea0) føjes til rodkæden, og noder begynder at anvende henholdsvis 51469 og 55102 transaktioner
01:27 — Blok #217 (a85) er valideret og sendt til rodkæden
01:41 — Node #1 tog 36828 transaktioner fra puljen og formularer blok #219 (46f)
01:41 — Node #3 tog 32998 transaktioner fra puljen og formularblok #219 (bb3)
01:43 — Alle noder modtog information fra rodkæden om, at blok #219 (a85) er blevet tilføjet og begynder at anvende 72912 transaktioner
01:46 — Blok #219 (46f) er underskrevet og sendt til andre noder til validering
01:46 — Blok #219 (bb3) er underskrevet og sendt til andre noder til validering
01:53 — Node #2 behandlede alle 100 transaktioner, der var i puljen
02:37 — Blok #219 (bb3) er valideret og sendt til rodkæden
02:41 — Blok#219 (46f) valideres og sendes til rodkæden
02:48 — Blokke #220 (bb3) og #221 (46f) føjes til rodkæden, og noder begynder at anvende henholdsvis 32998 og 36828 transaktioner
02:54 — Node #1 behandlede alle 100 transaktioner, der var i puljen
02:55 — Node #3 behandlede alle 100 transaktioner, der var i puljen
04:12 — Alle noder indeholder 300 transaktioner og tokens, sidste blok #221

Test 2

3 noder modtager 1kk transaktioner hver. I alt indeholder alle 9 noder 3k transaktioner og tokens.

Den oprindelige tilstand: sidste blok #213; 0 transaktioner og tokens gemmes i databasen.

00:00 — 3 scripts lanceres, der genererer og sender 1kk transaktioner hver
02:29 — Afsendelse af 1kk transaktioner til node #1 og #2 er begyndt
02:33 — Node #1 tog 11668 transaktioner fra puljen og formularer blok #222 (510)
02:35 — Blok #222 (510) er underskrevet og sendt til andre noder til validering
02:37 — Blok #222 (510) er valideret og sendt til rodkæden
02:38 — Node #2 tog 46378 transaktioner fra puljen og formularer blok #222 (a9d)
02:38 — Afsendelse af 1kk-transaktioner til node #3 er begyndt
02:41 — Node #3 tog 5504 transaktioner fra puljen og formularer blok #222 (387)
02:42 — Blok #222 (387) er underskrevet og sendt til andre noder til validering
02:44 — Blok #222 (a9d) er underskrevet og sendt til andre noder til validering
02:44 — Blok #222 (387) er valideret og sendt til rodkæden
02:49 — Blok #222 (a9d) valideret og sendt til rodkæden
02:56 - Blokke #222 (510) #223 (387) og #224 (a9d) føjes til rodkæden, og noder begynder at anvende henholdsvis 11668, 5504 og 46378 transaktioner
03:09 — Node #1 tog 177170 transaktioner fra puljen og formularblok #225 (e50)
03:09 — Node #3 tog 119327 transaktioner fra puljen og formularblok #225 (ccc)
03:10 — Node #2 tog 149772 transaktioner fra puljen og formularer blok #225 (404)
03:26 — Blok #225 (ccc) er underskrevet og sendt til andre noder til validering
03:32 — Blok #225 (404) er underskrevet og sendt til andre noder til validering
03:33 — Blok #225 (e50) er underskrevet og sendt til andre noder til validering
03:53 — Blok #225 (ccc) valideret og sendt til rodkæden
04:03 — Blok #225 (e50) valideret og sendt til rodkæden
04:04 — Blok #225 (404) er valideret og sendt til rodkæden
04:06 — Alle noder modtog information fra rodkæden om, at blok #225 (ccc) blev tilføjet og begynder at anvende 119327 transaktioner
04:14 — Alle noder modtog information fra rodkæden om, at blok #226 (404) blev tilføjet og begynder at anvende 149772 transaktioner
04:16 — Alle noder modtog information fra rodkæden om, at blok #227 (e50) er blevet tilføjet og begynder at anvende 177170 transaktioner
04:32 — Node #3 tog 209436 transaktioner fra puljen og formularblok #228 (1e9)
04:40 — Node #2 tog 212669 transaktioner fra puljen og formularblok #228 (e38)
04:40 — Node #1 tog 190144 transaktioner fra puljen og formularer blok #228 (861)
05:02 — Blok #228 (1e9) er underskrevet og sendt til andre noder til validering
05:08 — Blok #228 (861) er underskrevet og sendt til andre noder til validering
05:10 — Blok #228 (e38) er underskrevet og sendt til andre noder til validering
06:13 — Blok #228 (1e9) valideret og sendt til rodkæden
06:13 — Blok #228 (861) er valideret og sendt til rodkæden
06:13 — Blok #228 (e38) valideret og sendt til rodkæden
06:39 - Blokke #228 (861) #229 (1e9) og #230 (e38) føjes til rodkæden, og noder begynder at anvende henholdsvis 190144, 209436 og 212669 transaktioner
07:07 — Node #1 tog 199770 transaktioner fra puljen og formularblok #231 (e04)
07:09 — Node #2 tog 190473 transaktioner fra puljen og formularblok #231 (36e)
07:09 — Node #3 tog 178807 transaktioner fra puljen og formularer blok #231 (f43)
07:34 — Blok #231 (e04) er underskrevet og sendt til andre noder til validering
07:37 — Blok #231 (36e) er underskrevet og sendt til andre noder til validering
07:37 — Blok #231 (f43) er underskrevet og sendt til andre noder til validering
08:49 — Blok #231 (e04) valideret og sendt til rodkæden
08:51 — Blok #231 (f43) valideret og sendt til rodkæden
08:52 — Blok #231 (36e) valideret og sendt til rodkæden
09:47 - Blokke #231 (e04) #232 (f43) og #233 (36e) føjes til rodkæden, og noder begynder at anvende henholdsvis 199770, 178807 og 190473 transaktioner
10:16 — Node #1 tog 153075 transaktioner fra puljen og formularblok #234 (e04)
10:16 — Node #2 tog 168035 transaktioner fra puljen og formularblok #234 (36e)
10:16 — Node #3 tog 166685 transaktioner fra puljen og formularer blok #234 (f43)
10:42 — Blok #234 (56d) er underskrevet og sendt til andre noder til validering
11:59 — Blok #234 (1bb) er valideret og sendt til rodkæden
12:02 — Blok #234 (58a) valideret og sendt til rodkæden
12:02 — Blok #234 (56d) valideret og sendt til rodkæden
12:48 - Blokke #234 (1bb) #235 (58a) og #236 (56d) føjes til rodkæden, og noder begynder at anvende henholdsvis 153075, 168035 og 166685 transaktioner
13:14 — Node #1 tog 112226 transaktioner fra puljen og formularblok #237 (5c0)
13:16 — Node #2 tog 87550 transaktioner fra puljen og formularer blok #234 (58a)
13:16 — Node #3 tog 99594 transaktioner fra puljen og formularer blok #234 (56d)
13:30 — Blok #237 (5c0) er underskrevet og sendt til andre noder til validering
13:32 — Blok #237 (58a) er underskrevet og sendt til andre noder til validering
13:34 — Blok #237 (56d) er underskrevet og sendt til andre noder til validering
14:47 — Blok #237 (58a) valideret og sendt til rodkæden
14:53 — Blok #237 (5c0) blev ikke valideret inden for den angivne tid
14:53 — Alle noder modtog information fra rodkæden om, at blok #237 (58a) blev tilføjet og begynder at anvende 87550 transaktioner
14:54 — Blok #237 (56d) valideret og sendt til rodkæden
15:02 — Node #1 tog 181206 transaktioner fra puljen og formularblok #238 (c5f)
15:06 — Alle noder modtog information fra rodkæden om, at blok #238 (56d) blev tilføjet og begynder at anvende 99594 transaktioner
15:12 — Node #2 tog 51990 transaktioner fra puljen og formularblok #239 (ad8)
15:20 — Blok #239 (ad8) er underskrevet og sendt til andre noder til validering
15:25 — Node #3 tog 46685 transaktioner fra puljen og formularer blok #239 (857)
15:30 — Blok #238 (c5f) er underskrevet og sendt til andre noder til validering
15:34 — Blok #239 (857) er underskrevet og sendt til andre noder til validering
16:32 — Blok #239 (857) er valideret og sendt til rodkæden
16:42 — Alle noder modtog information fra rodkæden om, at blok #239 (857) blev tilføjet og begynder at anvende 46685 transaktioner
16:42 — Blok #238 (c5f) er valideret og sendt til rodkæden
16:42 — Blok #239 (ad8) blev ikke valideret inden for den angivne tid
16:54 — Node #2 tog 96882 transaktioner fra puljen og formularblok #240 (e6e)
16:56 — Node #3 tog 39704 transaktioner fra puljen og formularblok #240 (a47)
17:02 — Blok #240 (a47) er underskrevet og sendt til andre noder til validering
17:02 — Blok #240 (e6e) er underskrevet og sendt til andre noder til validering
17:18 — Alle noder modtog information fra rodkæden om, at blok #240 (c5f) blev tilføjet og begynder at anvende 181206 transaktioner
17:45 — Blok #240 (a47) er valideret og sendt til rodkæden
17:47 — Node #1 tog 54956 transaktioner fra puljen og formularer blok #241 (170)
17:59 — Blok #241 (170) er underskrevet og sendt til andre noder til validering
18:09 — Alle noder modtog information fra rodkæden om, at blok #241 (a47) er blevet tilføjet og begynder at anvende 181206 transaktioner
18:20 — Node #3 tog 39104 transaktioner fra puljen og formularer blok #242 (955)
18:24 — Blok #240 (e6e) er valideret og sendt til rodkæden
18:28 — Blok #242 (955) er underskrevet og sendt til andre noder til validering
18:09 — Alle noder modtog information fra rodkæden om, at blok #242 (e6e) er blevet tilføjet og begynder at anvende 96882 transaktioner
19:06 — Demoscriptet har afsluttet sit arbejde for node #1
19:08 — Demoscriptet har afsluttet sit arbejde for node #2
19:08 — Node #2 tog 48241 transaktioner fra puljen og formularblok #243 (fde)
19:14 — Blok #243 (fde) er underskrevet og sendt til andre noder til validering
19:18 — Blok #241 (170) blev ikke valideret inden for den angivne tid
19:28 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #243 (37c)
19:35 — Blok #242 (955) er valideret og sendt til rodkæden
19:40 — Blok #243 (37c) er underskrevet og sendt til andre noder til validering
20:05 — Alle noder modtog information fra rodkæden om, at blok #243 (955) blev tilføjet og begynder at anvende 39104 transaktioner
20:15 — Blok #243 (fde) er valideret og sendt til rodkæden
20:19 — Node #3 tog 42981 transaktioner fra puljen og formularer blok #244 (9b5)
20:26 — Blok #244 (9b5) er underskrevet og sendt til andre noder til validering
20:28 - alle noder modtog information fra rodkæden om, at blok #244 (fde) blev tilføjet og begynder at anvende 48241 transaktioner
20:32 — Node #2 behandlede alle 1 transaktioner, der var i puljen
21:05 — Blok #243 (37c) blev ikke valideret inden for den angivne tid
21:15 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #245 (37c)
21:32 — Blok #245 (37c) er underskrevet og sendt til andre noder til validering
21:42 — Blok #244 (9b5) er valideret og sendt til rodkæden
21:50 — Alle noder modtog information fra rodkæden om, at blok #245 (9b5) er blevet tilføjet og begynder at anvende 42981 transaktioner
22:04 — Node #3 tog 45361 transaktioner fra puljen og formularblok #246 (3f9)
22:11 — Blok #246 (3f9) er underskrevet og sendt til andre noder til validering
22:51 — Blok #245 (37c) blev ikke valideret inden for den angivne tid
23:01 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #246 (37c)
23:08 — Demoscriptet har afsluttet sit arbejde for node #3
23:15 — Blok #246 (37c) er underskrevet og sendt til andre noder til validering
23:32 — Blok #246 (3f9) blev ikke valideret inden for den angivne tid
23:42 — Node #3 tog 52173 transaktioner fra puljen og formularer blok #246 (71d)
23:51 — Blok #246 (71d) er underskrevet og sendt til andre noder til validering
24:38 — Blok #246 (37c) blev ikke valideret inden for den angivne tid
25:01 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #246 (37c)
25:06 — Blok #246 (71d) valideret og sendt til rodkæden
25:12 — Blok #246 (37c) er underskrevet og sendt til andre noder til validering
25:14 — Alle noder modtog information fra rodkæden om, at blok #246 (71d) blev tilføjet og begynder at anvende 52173 transaktioner
25:29 — Node #3 behandlede alle 1 transaktioner, der var i puljen
26:40 — Blok #247 (37c) blev ikke valideret inden for den angivne tid
26:47 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #247 (37c)
27:03 — Blok #247 (37c) er underskrevet og sendt til andre noder til validering
28:29 — Blok #247 (37c) blev ikke valideret inden for den angivne tid
28:35 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #247 (37c)
28:49 — Blok #247 (37c) er underskrevet og sendt til andre noder til validering
30:13 — Blok #247 (37c) blev ikke valideret inden for den angivne tid
30:23 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #247 (37c)
30:38 — Blok #247 (37c) er underskrevet og sendt til andre noder til validering
32:00 — Blok #247 (37c) blev ikke valideret inden for den angivne tid
32:11 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #247 (37c)
32:26 — Blok #247 (37c) er underskrevet og sendt til andre noder til validering
33:49 — Blok #247 (37c) blev ikke valideret inden for den angivne tid
33:59 — Node #1 tog 86967 transaktioner fra puljen og formularer blok #247 (37c)
34:12 — Blok #247 (37c) er underskrevet og sendt til andre noder til validering
35:34 — Blok #247 (37c) valideret og sendt til rodkæden
35:54 — Alle noder modtog information fra rodkæden om, at blok #247 (37c) blev tilføjet og begynder at anvende 86967 transaktioner
36:11 — Node #1 behandlede alle 1 transaktioner, der var i puljen
55:12 - den første node behandlede alle 3k transaktioner

Offentlig test af Ethereums privatlivs- og skalerbarhedsløsning på cloud-platforme

Resultaterne af

Det blev opdaget, at virtuelle Azure-servere ikke havde nok processorkraft til at behandle et så stort antal transaktioner. Men systemet klarede testens hovedopgave godt, nemlig at demonstrere driften af ​​Plasma Cash med MongoDB.

Vi inviterer dig på besøg GitHub projekt: https://github.com/opporty-com/Plasma-Cash/tree/new-version

Artiklen er medskrevet af Alexander Nashivan, seniorudvikler Clever Solution Inc.

Tidligere udviklingsteam Opporty Jeg har allerede testet hastigheden af ​​Plasma Cash. Resultaterne præsenteres i denne artikel.

Kilde: www.habr.com

Tilføj en kommentar