Offentlig testning av Ethereums sekretess- och skalbarhetslösning på molnplattformar

Blockchain-trenden fortsätter att ta fart. Fler och fler experter förutspår universell anpassning av denna teknik inom en snar framtid. För närvarande är flera problem som förhindrar detta olösta.

Först och främst skalar moderna blockchain-system inte bra. Ethereum har till exempel en genomströmning på endast 20 transaktioner per sekund, och trots sina många fördelar är det inte lämpligt för stora företag.

Samtidigt värderas Ethereum för sitt kraftfulla skydd mot hacking och nätverksfel. Så du ska inte skriva av honom. Det är mer vettigt att korrigera Ethereums brister och förvandla dem till fördelar.

Offentlig testning av Ethereums sekretess- och skalbarhetslösning på molnplattformar

Plasma Cash som en integritets- och skalbarhetslösning på Ethereum

Plasma är en teknik som introducerades av Vitalik Buterin, medgrundare av Ethereum-projektet, vid EthCC-konferensen i Paris 2018. Den utvecklades tillsammans med Joseph Poon, medgrundare av Lightning Network, och faktureras som en lösning för att öka datorkraften hos Ethereum blockchain. Den första nyheten om Plasma läckte till media 2017.

Denna plattform tillhandahåller ett externt lager av smarta kontrakt som kan interagera med den huvudsakliga blockkedjan, och därigenom avlasta rotkedjan, vilket minskar transaktionsavgifterna för smarta kontrakt och decentraliserade applikationer (DApps).

Detaljerad information om utvecklingen presenterades i dokumentet "Plasma: Skalbara autonoma smarta kontrakt", daterad augusti 2017.

Buterin erkände att Plasma har inneboende skalbarhetsproblem: Varje användare måste ladda ner och autentisera varje Plasma-block, vilket förhindrar exponentiell skalning.

För att rätta till denna brist utvecklades Plasma Cash – en underordnad kedja bestående av ett smart kontrakt och ett privat nätverk baserat på Node.js, som med jämna mellanrum överför sitt tillstånd till rotkedjan (Ethereum). Det ger decentralisering, säkerhet och skalbarhet i blockkedjan och löser därigenom skalbarhetstrilemmat.

En viktig fördel med Plasma Cash jämfört med Plasma är att det drar användarnas uppmärksamhet endast till de block som innehåller mynten de är intresserade av:

"Användare behöver nu kontrollera tillgängligheten och giltigheten av plasmakedjan endast för det specifika index som är associerat med mynten de vill spendera, äga och är intresserade av," sa Buterin.

Enligt utvecklarna är Plasma Cash ett effektivt botemedel mot hack i Ethereum. Varje plasmamynt har en ägare och är unik. Ingen kan ta en annan användares mynt i besittning utan hans vetskap. En myntinnehavare kan förhindra potentiella bedrägliga uttag genom "klagomåls"-systemet genom att tillhandahålla sina "bevisdata" i historien om deras mynt.

Testar Plasma Cash i Mongo Atlas

På grund av dess nyhet är Plasma Cash fortfarande lite studerad. Blockchain-experter testar aktivt dess interaktion med olika molntjänster och databaser, identifierar brister och hittar sätt att rätta till dem. Speciellt visade tester i Mongo Atlas följande fördelar när man arbetar med plasma:

  1. Tillförlitligt skydd mot dataförlust, eftersom det finns flera repliker som synkroniserar med varandra i klustret.
  2. Snabb åtkomst, eftersom ett kluster kan skapas på de tre mest populära molnplattformarna: Amazon, Google, Azure. Som ett resultat kan Plasma Cash-noden distribueras i många datacenter som ligger nära Mongo Atlas. Vi har bevisat att hastigheten inte sjunker mycket, även om plasmanoder är utplacerade i mer avlägsna datacenter.
  3. Plasmanoder, som används i skrivskyddat läge, kan anslutas till ett Mongo-kluster och placeras i olika delar av världen, vilket förbättrar geo-skalbarhet (noder är närmare användarna).
  4. Det är enkelt att distribuera en ny nod, eftersom du inte behöver synkronisera om allt. Du kan helt enkelt ansluta till ett befintligt Mongo-kluster eller snabbt göra en kopia och konfigurera en anslutning till det.
  5. Det är lätt att skala din databas. Med tiden blir mer data tillgänglig och du kan öka storleken på noderna i klustret efter behov.

Offentlig testning av Ethereums sekretess- och skalbarhetslösning på molnplattformar

Vi använde följande servrar för att utföra tester:

  • 3 virtuella Azure-servrar Standard E4s v3 (4 vcpus, 32 GiB minne). Varje server har 3 noder. En av dem kan skicka block till rotkedjan.
  • Varje nod är ansluten till sitt eget Mongo Atlas M50-kluster som innehåller 3 noder i replikläge.

Test 1

3 noder tar emot 100 9 transaktioner var. Totalt innehåller alla 300 noder XNUMX XNUMX transaktioner och tokens.


Det ursprungliga tillståndet: sista block #213; 0 transaktioner och tokens sparas i databasen.

00:00 — 3 skript lanseras som genererar och skickar 100 XNUMX transaktioner vardera
00:29 — Att skicka 100 1 transaktioner till noderna #2 och #XNUMX har börjat
00:32 — Att skicka 100 3 transaktioner till nod #XNUMX har börjat
00:32 — Nod #1 tog 11703 transaktioner från poolen och formulärblock #214 (9fb)
00:34 — Nod #2 tog 27088 transaktioner från poolen och formulärblock #214 (ef4)
00:34 — Block #214 (9fb) signeras och skickas till andra noder för validering
00:36 — Nod #3 tog 11900 transaktioner från poolen och formulärblock #214 (983)
00:37 — Block #214 (9fb) valideras och skickas till rotkedjan
00:38 — Block #214 (983) signeras och skickas till andra noder för validering
00:38 — Block #214 (ef4) signeras och skickas till andra noder för validering
00:40 — Block #214 (983) valideras och skickas till rotkedjan
00:41 — Alla noder fick information från rotkedjan att block #214 (9fb) lades till och börjar tillämpa 11703 transaktioner
00:45 — Alla noder fick information från rotkedjan att block #215 (983) lades till och börjar tillämpa 11900 transaktioner
00:51 — Block #214 (ef4) valideras och skickas till rotkedjan
00:52 — Nod #1 tog 51469 transaktioner från poolen och formulärblock #216 (ea0)
00:56 — Nod #3 tog 55102 transaktioner från poolen och formulärblock #216 (f75)
00:58 — Demoskriptet har avslutat sitt arbete för nod #2
00:58 — Block #216 (ea0) signeras och skickas till andra noder för validering
00:58 — Alla noder fick information från rotkedjan att block #216 (ef4) har lagts till och börjar tillämpa 27088 transaktioner
01:04 — Block #216 (f75) signeras och skickas till andra noder för validering
01:14 — Nod #2 tog 72912 transaktioner från poolen och formulärblock #217 (f85)
01:15 — Demoskriptet har slutat fungera för noderna #1 och #2
01:17 — Block #216 (f75) och #216 (ea0) valideras och skickas till rotkedjan
01:21 — Block #217 (f85) signeras och skickas till andra noder för validering
01:26 - Block #217 (f75) och #218 (ea0) läggs till i rotkedjan och noder börjar tillämpa 51469 respektive 55102 transaktioner
01:27 — Block #217 (a85) valideras och skickas till rotkedjan
01:41 — Nod #1 tog 36828 transaktioner från poolen och formulärblock #219 (46f)
01:41 — Nod #3 tog 32998 transaktioner från poolen och formulärblock #219 (bb3)
01:43 — Alla noder fick information från rotkedjan att block #219 (a85) har lagts till och börjar tillämpa 72912 transaktioner
01:46 — Block #219 (46f) signeras och skickas till andra noder för validering
01:46 — Block #219 (bb3) signeras och skickas till andra noder för validering
01:53 — Nod #2 behandlade alla 100 XNUMX transaktioner som fanns i poolen
02:37 — Block #219 (bb3) valideras och skickas till rotkedjan
02:41 — Block#219 (46f) valideras och skickas till rotkedjan
02:48 — Block #220 (bb3) och #221 (46f) läggs till i rotkedjan och noder börjar tillämpa 32998 respektive 36828 transaktioner
02:54 — Nod #1 behandlade alla 100 XNUMX transaktioner som fanns i poolen
02:55 — Nod #3 behandlade alla 100 XNUMX transaktioner som fanns i poolen
04:12 — Alla noder innehåller 300 221 transaktioner och tokens, sista block #XNUMX

Test 2

3 noder tar emot 1kk transaktioner var. Totalt innehåller alla 9 noder 3k transaktioner och tokens.

Det ursprungliga tillståndet: sista block #213; 0 transaktioner och tokens sparas i databasen.

00:00 — 3 skript lanseras som genererar och skickar 1kk transaktioner vardera
02:29 — Att skicka 1kk-transaktioner till noderna #1 och #2 har börjat
02:33 — Nod #1 tog 11668 transaktioner från poolen och formulärblock #222 (510)
02:35 — Block #222 (510) signeras och skickas till andra noder för validering
02:37 — Block #222 (510) valideras och skickas till rotkedjan
02:38 — Nod #2 tog 46378 transaktioner från poolen och formulärblock #222 (a9d)
02:38 — Att skicka 1kk-transaktioner till nod #3 har börjat
02:41 — Nod #3 tog 5504 transaktioner från poolen och formulärblock #222 (387)
02:42 — Block #222 (387) signeras och skickas till andra noder för validering
02:44 — Block #222 (a9d) signeras och skickas till andra noder för validering
02:44 — Block #222 (387) valideras och skickas till rotkedjan
02:49 — Block #222 (a9d) validerat och skickat till rotkedjan
02:56 - Block #222 (510) #223 (387) och #224 (a9d) läggs till i rotkedjan och noder börjar tillämpa 11668, 5504 respektive 46378 transaktioner
03:09 — Nod #1 tog 177170 transaktioner från poolen och formulärblock #225 (e50)
03:09 — Nod #3 tog 119327 transaktioner från poolen och formulärblock #225 (ccc)
03:10 — Nod #2 tog 149772 transaktioner från poolen och formulärblock #225 (404)
03:26 — Block #225 (ccc) signeras och skickas till andra noder för validering
03:32 — Block #225 (404) signeras och skickas till andra noder för validering
03:33 — Block #225 (e50) signeras och skickas till andra noder för validering
03:53 — Block #225 (ccc) validerat och skickat till rotkedjan
04:03 — Block #225 (e50) validerat och skickat till rotkedjan
04:04 — Block #225 (404) valideras och skickas till rotkedjan
04:06 — Alla noder fick information från rotkedjan att block #225 (ccc) lades till och börjar tillämpa 119327 transaktioner
04:14 — Alla noder fick information från rotkedjan att block #226 (404) lades till och börjar tillämpa 149772 transaktioner
04:16 — Alla noder fick information från rotkedjan att block #227 (e50) har lagts till och börjar tillämpa 177170 transaktioner
04:32 — Nod #3 tog 209436 transaktioner från poolen och formulärblock #228 (1e9)
04:40 — Nod #2 tog 212669 transaktioner från poolen och formulärblock #228 (e38)
04:40 — Nod #1 tog 190144 transaktioner från poolen och formulärblock #228 (861)
05:02 — Block #228 (1e9) signeras och skickas till andra noder för validering
05:08 — Block #228 (861) signeras och skickas till andra noder för validering
05:10 — Block #228 (e38) signeras och skickas till andra noder för validering
06:13 — Block #228 (1e9) validerat och skickat till rotkedjan
06:13 — Block #228 (861) valideras och skickas till rotkedjan
06:13 — Block #228 (e38) validerat och skickat till rotkedjan
06:39 - Block #228 (861) #229 (1e9) och #230 (e38) läggs till i rotkedjan och noder börjar tillämpa 190144, 209436 respektive 212669 transaktioner
07:07 — Nod #1 tog 199770 transaktioner från poolen och formulärblock #231 (e04)
07:09 — Nod #2 tog 190473 transaktioner från poolen och formulärblock #231 (36e)
07:09 — Nod #3 tog 178807 transaktioner från poolen och formulärblock #231 (f43)
07:34 — Block #231 (e04) signeras och skickas till andra noder för validering
07:37 — Block #231 (36e) signeras och skickas till andra noder för validering
07:37 — Block #231 (f43) signeras och skickas till andra noder för validering
08:49 — Block #231 (e04) validerat och skickat till rotkedjan
08:51 — Block #231 (f43) validerat och skickat till rotkedjan
08:52 — Block #231 (36e) validerat och skickat till rotkedjan
09:47 - Block #231 (e04) #232 (f43) och #233 (36e) läggs till i rotkedjan och noder börjar tillämpa 199770, 178807 respektive 190473 transaktioner
10:16 — Nod #1 tog 153075 transaktioner från poolen och formulärblock #234 (e04)
10:16 — Nod #2 tog 168035 transaktioner från poolen och formulärblock #234 (36e)
10:16 — Nod #3 tog 166685 transaktioner från poolen och formulärblock #234 (f43)
10:42 — Block #234 (56d) signeras och skickas till andra noder för validering
11:59 — Block #234 (1bb) valideras och skickas till rotkedjan
12:02 — Block #234 (58a) validerat och skickat till rotkedjan
12:02 — Block #234 (56d) validerat och skickat till rotkedjan
12:48 - Block #234 (1bb) #235 (58a) och #236 (56d) läggs till i rotkedjan och noder börjar tillämpa 153075, 168035 respektive 166685 transaktioner
13:14 — Nod #1 tog 112226 transaktioner från poolen och formulärblock #237 (5c0)
13:16 — Nod #2 tog 87550 transaktioner från poolen och formulärblock #234 (58a)
13:16 — Nod #3 tog 99594 transaktioner från poolen och formulärblock #234 (56d)
13:30 — Block #237 (5c0) signeras och skickas till andra noder för validering
13:32 — Block #237 (58a) signeras och skickas till andra noder för validering
13:34 — Block #237 (56d) signeras och skickas till andra noder för validering
14:47 — Block #237 (58a) validerat och skickat till rotkedjan
14:53 — Block #237 (5c0) validerades inte inom den angivna tiden
14:53 — Alla noder fick information från rotkedjan att block #237 (58a) lades till och börjar tillämpa 87550 transaktioner
14:54 — Block #237 (56d) validerat och skickat till rotkedjan
15:02 — Nod #1 tog 181206 transaktioner från poolen och formulärblock #238 (c5f)
15:06 — Alla noder fick information från rotkedjan att block #238 (56d) lades till och börjar tillämpa 99594 transaktioner
15:12 — Nod #2 tog 51990 transaktioner från poolen och formulärblock #239 (ad8)
15:20 — Block #239 (ad8) signeras och skickas till andra noder för validering
15:25 — Nod #3 tog 46685 transaktioner från poolen och formulärblock #239 (857)
15:30 — Block #238 (c5f) signeras och skickas till andra noder för validering
15:34 — Block #239 (857) signeras och skickas till andra noder för validering
16:32 — Block #239 (857) valideras och skickas till rotkedjan
16:42 — Alla noder fick information från rotkedjan att block #239 (857) lades till och börjar tillämpa 46685 transaktioner
16:42 — Block #238 (c5f) valideras och skickas till rotkedjan
16:42 — Block #239 (ad8) validerades inte inom den angivna tiden
16:54 — Nod #2 tog 96882 transaktioner från poolen och formulärblock #240 (e6e)
16:56 — Nod #3 tog 39704 240 transaktioner från poolen och formulärblock #47 (aXNUMX)
17:02 — Block #240 (a47) signeras och skickas till andra noder för validering
17:02 — Block #240 (e6e) signeras och skickas till andra noder för validering
17:18 — Alla noder fick information från rotkedjan att block #240 (c5f) lades till och börjar tillämpa 181206 transaktioner
17:45 — Block #240 (a47) valideras och skickas till rotkedjan
17:47 — Nod #1 tog 54956 transaktioner från poolen och formulärblock #241 (170)
17:59 — Block #241 (170) signeras och skickas till andra noder för validering
18:09 — Alla noder fick information från rotkedjan att block #241 (a47) har lagts till och börjar tillämpa 181206 transaktioner
18:20 — Nod #3 tog 39104 transaktioner från poolen och formulärblock #242 (955)
18:24 — Block #240 (e6e) valideras och skickas till rotkedjan
18:28 — Block #242 (955) signeras och skickas till andra noder för validering
18:09 — Alla noder fick information från rotkedjan att block #242 (e6e) har lagts till och börjar tillämpa 96882 transaktioner
19:06 — Demoskriptet har avslutat sitt arbete för nod #1
19:08 — Demoskriptet har avslutat sitt arbete för nod #2
19:08 — Nod #2 tog 48241 transaktioner från poolen och formulärblock #243 (fde)
19:14 — Block #243 (fde) signeras och skickas till andra noder för validering
19:18 — Block #241 (170) validerades inte inom den angivna tiden
19:28 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #243 (37c)
19:35 — Block #242 (955) valideras och skickas till rotkedjan
19:40 — Block #243 (37c) signeras och skickas till andra noder för validering
20:05 — Alla noder fick information från rotkedjan att block #243 (955) lades till och börjar tillämpa 39104 transaktioner
20:15 — Block #243 (fde) valideras och skickas till rotkedjan
20:19 — Nod #3 tog 42981 transaktioner från poolen och formulärblock #244 (9b5)
20:26 — Block #244 (9b5) signeras och skickas till andra noder för validering
20:28 - alla noder fick information från rotkedjan att block #244 (fde) lades till och börjar tillämpa 48241 transaktioner
20:32 — Nod #2 behandlade alla 1k transaktioner som fanns i poolen
21:05 — Block #243 (37c) validerades inte inom den angivna tiden
21:15 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #245 (37c)
21:32 — Block #245 (37c) signeras och skickas till andra noder för validering
21:42 — Block #244 (9b5) valideras och skickas till rotkedjan
21:50 — Alla noder fick information från rotkedjan att block #245 (9b5) har lagts till och börjar tillämpa 42981 transaktioner
22:04 — Nod #3 tog 45361 transaktioner från poolen och formulärblock #246 (3f9)
22:11 — Block #246 (3f9) signeras och skickas till andra noder för validering
22:51 — Block #245 (37c) validerades inte inom den angivna tiden
23:01 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #246 (37c)
23:08 — Demoskriptet har avslutat sitt arbete för nod #3
23:15 — Block #246 (37c) signeras och skickas till andra noder för validering
23:32 — Block #246 (3f9) validerades inte inom den angivna tiden
23:42 — Nod #3 tog 52173 transaktioner från poolen och formulärblock #246 (71d)
23:51 — Block #246 (71d) signeras och skickas till andra noder för validering
24:38 — Block #246 (37c) validerades inte inom den angivna tiden
25:01 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #246 (37c)
25:06 — Block #246 (71d) validerat och skickat till rotkedjan
25:12 — Block #246 (37c) signeras och skickas till andra noder för validering
25:14 — Alla noder fick information från rotkedjan att block #246 (71d) lades till och börjar tillämpa 52173 transaktioner
25:29 — Nod #3 behandlade alla 1k transaktioner som fanns i poolen
26:40 — Block #247 (37c) validerades inte inom den angivna tiden
26:47 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #247 (37c)
27:03 — Block #247 (37c) signeras och skickas till andra noder för validering
28:29 — Block #247 (37c) validerades inte inom den angivna tiden
28:35 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #247 (37c)
28:49 — Block #247 (37c) signeras och skickas till andra noder för validering
30:13 — Block #247 (37c) validerades inte inom den angivna tiden
30:23 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #247 (37c)
30:38 — Block #247 (37c) signeras och skickas till andra noder för validering
32:00 — Block #247 (37c) validerades inte inom den angivna tiden
32:11 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #247 (37c)
32:26 — Block #247 (37c) signeras och skickas till andra noder för validering
33:49 — Block #247 (37c) validerades inte inom den angivna tiden
33:59 — Nod #1 tog 86967 transaktioner från poolen och formulärblock #247 (37c)
34:12 — Block #247 (37c) signeras och skickas till andra noder för validering
35:34 — Block #247 (37c) validerat och skickat till rotkedjan
35:54 — Alla noder fick information från rotkedjan att block #247 (37c) lades till och börjar tillämpa 86967 transaktioner
36:11 — Nod #1 behandlade alla 1k transaktioner som fanns i poolen
55:12 - den första noden behandlade alla 3k-transaktioner

Offentlig testning av Ethereums sekretess- och skalbarhetslösning på molnplattformar

Resultat av

Det upptäcktes att virtuella Azure-servrar inte hade tillräckligt med processorkraft för att behandla ett så stort antal transaktioner. Men systemet klarade testernas huvuduppgift väl, nämligen att demonstrera driften av Plasma Cash med MongoDB.

Vi inbjuder dig att besöka GitHub projekt: https://github.com/opporty-com/Plasma-Cash/tree/new-version

Artikeln skrevs tillsammans av Alexander Nashivan, senior utvecklare Clever Solution Inc.

Tidigare utvecklingsteam Möjlighet Jag har redan testat hastigheten på Plasma Cash. Resultaten presenteras i Denna artikel.

Källa: will.com

Lägg en kommentar