Veřejné testování řešení ochrany soukromí a škálovatelnosti Ethereum na cloudových platformách

Trend blockchainu nadále nabírá na síle. Stále více odborníků předpovídá v blízké budoucnosti univerzální adaptaci této technologie. V současné době zůstává nevyřešeno několik problémů, které tomu brání.

Za prvé, moderní blockchainové systémy se špatně škálují. Například Ethereum má propustnost pouze 20 transakcí za vteřinu a přes mnoho výhod není vhodné pro velké podniky.

Zároveň je Ethereum ceněno pro svou výkonnou ochranu proti hackerům a výpadkům sítě. Takže bys ho neměl odepisovat. Větší smysl má napravit nedostatky Etherea a přeměnit je na výhody.

Veřejné testování řešení ochrany soukromí a škálovatelnosti Ethereum na cloudových platformách

Plasma Cash jako řešení ochrany soukromí a škálovatelnosti na Ethereu

Plazma je technologie, kterou představil Vitalik Buterin, spoluzakladatel projektu Ethereum, na konferenci EthCC v Paříži v roce 2018. Byla vyvinuta společně s Josephem Poonem, spoluzakladatelem Lightning Network, a je účtována jako řešení pro zvýšení výpočetní výkon blockchainu Ethereum. První zprávy o Plasmě unikly do médií v roce 2017.

Tato platforma poskytuje externí vrstvu chytrých smluv, které mohou interagovat s hlavním blockchainem, a tím odlehčit kořenový řetězec, snížit transakční poplatky za chytré smlouvy a decentralizované aplikace (DApps).

Podrobné informace o vývoji byly uvedeny v dokumentu „Plazma: Škálovatelné autonomní inteligentní smlouvy“, ze srpna 2017.

Buterin uznal, že Plasma má inherentní problémy se škálovatelností: Každý uživatel si musí stáhnout a ověřit každý Plasma blok, což zabraňuje exponenciálnímu škálování.

K nápravě tohoto nedostatku byl vyvinut Plasma Cash – dětský řetězec skládající se z chytré smlouvy a privátní sítě založené na Node.js, která periodicky přenáší svůj stav do kořenového řetězce (Ethereum). Poskytuje decentralizaci, bezpečnost a škálovatelnost v blockchainu, čímž řeší Trilemma škálovatelnosti.

Důležitou výhodou Plasma Cash ve srovnání s Plasma je, že přitahuje pozornost uživatelů pouze k těm blokům, které obsahují coiny, o které mají zájem:

"Uživatelé nyní potřebují pouze zkontrolovat dostupnost a platnost plazmového řetězce pro konkrétní index spojený s mincemi, které chtějí utratit, vlastnit a o které mají zájem," řekl Buterin.

Podle vývojářů je Plasma Cash účinným lékem na hacky v Ethereu. Každá plazmová mince má svého majitele a je jedinečná. Nikdo se nemůže zmocnit mincí jiného uživatele bez jeho vědomí. Držitel mincí může zabránit potenciálním podvodným výběrům prostřednictvím „reklamačního“ systému tím, že poskytne své „důkazní údaje“ v historii své mince.

Testování Plasma Cash v Mongo Atlas

Vzhledem ke své novosti zůstává Plasma Cash málo prozkoumaná. Odborníci na blockchain aktivně testují jeho interakci s různými cloudovými službami a databázemi, identifikují nedostatky a hledají způsoby, jak je napravit. Zejména testy v Mongo Atlas odhalily následující výhody při práci s plazmou:

  1. Spolehlivá ochrana před ztrátou dat, protože v clusteru existuje několik vzájemně synchronizovaných replik.
  2. Rychlý přístup, protože cluster lze vytvořit na třech nejoblíbenějších cloudových platformách: Amazon, Google, Azure. Výsledkem je, že uzel Plasma Cash může být nasazen v mnoha datových centrech poblíž Mongo Atlas. Prokázali jsme, že rychlost příliš neklesá, i když jsou plazmové uzly nasazeny ve vzdálenějších datových centrech.
  3. Plazmové uzly, používané v režimu pouze pro čtení, mohou být připojeny k jednomu Mongo clusteru a umístěny v různých částech světa, které zlepšuje geografickou škálovatelnost (uzly jsou blíže uživatelům).
  4. Nasazení nového uzlu je snadné, protože nemusíte vše znovu synchronizovat. Můžete se jednoduše připojit ke stávajícímu clusteru Mongo nebo rychle vytvořit kopii a nakonfigurovat připojení k němu.
  5. Je snadné škálovat databázi. Postupem času bude k dispozici více dat a podle potřeby můžete zvětšit velikost uzlů v clusteru.

Veřejné testování řešení ochrany soukromí a škálovatelnosti Ethereum na cloudových platformách

K testování jsme použili následující servery:

  • 3 virtuální servery Azure Standard E4s v3 (4 vcpus, 32 GiB paměti). Každý server má 3 uzly. Jeden z nich může odesílat bloky do kořenového řetězce.
  • Každý uzel je připojen k vlastnímu clusteru Mongo Atlas M50 obsahujícímu 3 uzly v režimu repliky.

Test 1

3 uzly obdrží každý 100 9 transakcí. Celkem všech 300 uzlů obsahuje XNUMX tisíc transakcí a tokenů.


Počáteční stav: poslední blok #213; V databázi je uloženo 0 transakcí a tokenů.

00:00 — Spustí se 3 skripty, z nichž každý vygeneruje a odešle 100 XNUMX transakcí
00:29 — Odesílání 100 1 transakcí do uzlů #2 a #XNUMX začalo
00:32 — Odesílání 100 3 transakcí do uzlu #XNUMX začalo
00:32 — Uzel #1 vzal 11703 transakcí z fondu a bloku formulářů #214 (9fb)
00:34 — Uzel #2 vzal 27088 transakcí z fondu a bloku formulářů #214 (ef4)
00:34 — Blok #214 (9fb) je podepsán a odeslán do dalších uzlů k ověření
00:36 — Uzel #3 vzal 11900 transakcí z fondu a bloku formulářů #214 (983)
00:37 — Blok #214 (9fb) je ověřen a odeslán do kořenového řetězce
00:38 — Blok #214 (983) je podepsán a odeslán do jiných uzlů k ověření
00:38 — Blok #214 (ef4) je podepsán a odeslán do jiných uzlů k ověření
00:40 — Blok #214 (983) je ověřen a odeslán do kořenového řetězce
00:41 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #214 (9fb) a začaly uplatňovat 11703 transakcí
00:45 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #215 (983) a začalo uplatňovat 11900 transakcí
00:51 — Blok #214 (ef4) je ověřen a odeslán do kořenového řetězce
00:52 — Uzel #1 vzal 51469 transakcí z fondu a bloku formulářů #216 (ea0)
00:56 — Uzel #3 vzal 55102 transakcí z fondu a bloku formulářů #216 (f75)
00:58 — Demo skript dokončil svou práci pro uzel #2
00:58 — Blok #216 (ea0) je podepsán a odeslán do jiných uzlů k ověření
00:58 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #216 (ef4) a začnou uplatňovat 27088 transakcí
01:04 — Blok #216 (f75) je podepsán a odeslán do jiných uzlů k ověření
01:14 — Uzel #2 vzal 72912 transakcí z fondu a bloku formulářů #217 (f85)
01:15 — Demo skript dokončil práci pro uzly #1 a #2
01:17 — Bloky #216 (f75) a #216 (ea0) jsou ověřeny a odeslány do kořenového řetězce
01:21 — Blok #217 (f85) je podepsán a odeslán do dalších uzlů k ověření
01:26 — Bloky #217 (f75) a #218 (ea0) jsou přidány do kořenového řetězce a uzly začnou uplatňovat 51469 a 55102 transakcí.
01:27 — Blok #217 (a85) je ověřen a odeslán do kořenového řetězce
01:41 — Uzel #1 vzal 36828 transakcí z fondu a bloku formulářů #219 (46f)
01:41 — Uzel #3 vzal 32998 219 transakcí z fondu a bloku formulářů # 3 (bbXNUMX)
01:43 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #219 (a85) a začínají uplatňovat 72912 transakcí
01:46 — Blok #219 (46f) je podepsán a odeslán do dalších uzlů k ověření
01:46 — Blok #219 (bb3) je podepsán a odeslán do jiných uzlů k ověření
01:53 — Uzel #2 zpracoval všech 100 XNUMX transakcí, které byly ve fondu
02:37 — Blok #219 (bb3) je ověřen a odeslán do kořenového řetězce
02:41 — Blok #219 (46f) je ověřen a odeslán do kořenového řetězce
02:48 — Bloky #220 (bb3) a #221 (46f) jsou přidány do kořenového řetězce a uzly začnou uplatňovat 32998 a 36828 transakcí.
02:54 — Uzel #1 zpracoval všech 100 XNUMX transakcí, které byly ve fondu
02:55 — Uzel #3 zpracoval všech 100 XNUMX transakcí, které byly ve fondu
04:12 — Všechny uzly obsahují 300 221 transakcí a tokenů, poslední blok #XNUMX

Test 2

3 uzly obdrží každý 1kk transakce. Celkem všech 9 uzlů obsahuje 3 XNUMX transakcí a tokenů.

Počáteční stav: poslední blok #213; V databázi je uloženo 0 transakcí a tokenů.

00:00 — Spustí se 3 skripty, které generují a odesílají každý 1kk transakce
02:29 — Odesílání 1kk transakcí do uzlů #1 a #2 začalo
02:33 — Uzel #1 vzal 11668 transakcí z fondu a bloku formulářů #222 (510)
02:35 — Blok #222 (510) je podepsán a odeslán do jiných uzlů k ověření
02:37 — Blok #222 (510) je ověřen a odeslán do kořenového řetězce
02:38 — Uzel #2 vzal 46378 transakcí z fondu a bloku formulářů #222 (a9d)
02:38 — Odesílání 1kk transakcí do uzlu #3 začalo
02:41 — Uzel #3 vzal 5504 transakcí z fondu a bloku formulářů #222 (387)
02:42 — Blok #222 (387) je podepsán a odeslán do jiných uzlů k ověření
02:44 — Blok #222 (a9d) je podepsán a odeslán do jiných uzlů k ověření
02:44 — Blok #222 (387) je ověřen a odeslán do kořenového řetězce
02:49 — Blok #222 (a9d) ověřen a odeslán do kořenového řetězce
02:56 - Bloky #222 (510) #223 (387) a #224 (a9d) jsou přidány do kořenového řetězce a uzly začnou uplatňovat transakce 11668, 5504 a 46378 v tomto pořadí.
03:09 — Uzel #1 vzal 177170 transakcí z fondu a bloku formulářů #225 (e50)
03:09 — Uzel #3 vzal 119327 transakcí z fondu a bloku formulářů #225 (ccc)
03:10 — Uzel #2 vzal 149772 transakcí z fondu a bloku formulářů #225 (404)
03:26 — Blok #225 (ccc) je podepsán a odeslán do jiných uzlů k ověření
03:32 — Blok #225 (404) je podepsán a odeslán do jiných uzlů k ověření
03:33 — Blok #225 (e50) je podepsán a odeslán do jiných uzlů k ověření
03:53 — Blok #225 (ccc) ověřen a odeslán do kořenového řetězce
04:03 — Blok #225 (e50) ověřen a odeslán do kořenového řetězce
04:04 — Blok #225 (404) je ověřen a odeslán do kořenového řetězce
04:06 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #225 (ccc) a začalo se uplatňovat 119327 transakcí
04:14 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #226 (404) a začalo uplatňovat 149772 transakcí
04:16 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #227 (e50) a začíná uplatňovat 177170 transakcí
04:32 — Uzel #3 vzal 209436 transakcí z fondu a bloku formulářů #228 (1e9)
04:40 — Uzel #2 vzal 212669 transakcí z fondu a bloku formulářů #228 (e38)
04:40 — Uzel #1 vzal 190144 transakcí z fondu a bloku formulářů #228 (861)
05:02 — Blok #228 (1e9) je podepsán a odeslán do jiných uzlů k ověření
05:08 — Blok #228 (861) je podepsán a odeslán do jiných uzlů k ověření
05:10 — Blok #228 (e38) je podepsán a odeslán do jiných uzlů k ověření
06:13 — Blok #228 (1e9) ověřen a odeslán do kořenového řetězce
06:13 — Blok #228 (861) je ověřen a odeslán do kořenového řetězce
06:13 — Blok #228 (e38) ověřen a odeslán do kořenového řetězce
06:39 - Bloky #228 (861) #229 (1e9) a #230 (e38) jsou přidány do kořenového řetězce a uzly začnou uplatňovat transakce 190144, 209436 a 212669 v tomto pořadí.
07:07 — Uzel #1 vzal 199770 transakcí z fondu a bloku formulářů #231 (e04)
07:09 — Uzel #2 vzal 190473 transakcí z fondu a bloku formulářů #231 (36e)
07:09 — Uzel #3 vzal 178807 transakcí z fondu a bloku formulářů #231 (f43)
07:34 — Blok #231 (e04) je podepsán a odeslán do jiných uzlů k ověření
07:37 — Blok #231 (36e) je podepsán a odeslán do dalších uzlů k ověření
07:37 — Blok #231 (f43) je podepsán a odeslán do jiných uzlů k ověření
08:49 — Blok #231 (e04) ověřen a odeslán do kořenového řetězce
08:51 — Blok #231 (f43) ověřen a odeslán do kořenového řetězce
08:52 — Blok #231 (36e) ověřen a odeslán do kořenového řetězce
09:47 - Bloky #231 (e04) #232 (f43) a #233 (36e) jsou přidány do kořenového řetězce a uzly začnou uplatňovat transakce 199770, 178807 a 190473
10:16 — Uzel #1 vzal 153075 transakcí z fondu a bloku formulářů #234 (e04)
10:16 — Uzel #2 vzal 168035 transakcí z fondu a bloku formulářů #234 (36e)
10:16 — Uzel #3 vzal 166685 transakcí z fondu a bloku formulářů #234 (f43)
10:42 — Blok #234 (56d) je podepsán a odeslán do dalších uzlů k ověření
11:59 — Blok #234 (1bb) je ověřen a odeslán do kořenového řetězce
12:02 — Blok #234 (58a) ověřen a odeslán do kořenového řetězce
12:02 — Blok #234 (56d) ověřen a odeslán do kořenového řetězce
12:48 - Bloky #234 (1bb) #235 (58a) a #236 (56d) jsou přidány do kořenového řetězce a uzly začnou uplatňovat 153075, 168035 a 166685 transakcí v tomto pořadí.
13:14 — Uzel #1 vzal 112226 transakcí z fondu a bloku formulářů #237 (5c0)
13:16 — Uzel #2 vzal 87550 transakcí z fondu a bloku formulářů #234 (58a)
13:16 — Uzel #3 vzal 99594 transakcí z fondu a bloku formulářů #234 (56d)
13:30 — Blok #237 (5c0) je podepsán a odeslán do dalších uzlů k ověření
13:32 — Blok #237 (58a) je podepsán a odeslán do dalších uzlů k ověření
13:34 — Blok #237 (56d) je podepsán a odeslán do dalších uzlů k ověření
14:47 — Blok #237 (58a) ověřen a odeslán do kořenového řetězce
14:53 — Blok #237 (5c0) nebyl v určeném čase ověřen
14:53 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #237 (58a) a začalo uplatňovat 87550 transakcí
14:54 — Blok #237 (56d) ověřen a odeslán do kořenového řetězce
15:02 — Uzel #1 vzal 181206 transakcí z fondu a bloku formulářů #238 (c5f)
15:06 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #238 (56d) a začalo uplatňovat 99594 transakcí
15:12 — Uzel #2 vzal 51990 transakcí z fondu a bloku formulářů #239 (ad8)
15:20 — Blok #239 (ad8) je podepsán a odeslán do jiných uzlů k ověření
15:25 — Uzel #3 vzal 46685 transakcí z fondu a bloku formulářů #239 (857)
15:30 — Blok #238 (c5f) je podepsán a odeslán do dalších uzlů k ověření
15:34 — Blok #239 (857) je podepsán a odeslán do jiných uzlů k ověření
16:32 — Blok #239 (857) je ověřen a odeslán do kořenového řetězce
16:42 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #239 (857) a začalo uplatňovat 46685 transakcí
16:42 — Blok #238 (c5f) je ověřen a odeslán do kořenového řetězce
16:42 — Blok #239 (ad8) nebyl v určeném čase ověřen
16:54 — Uzel #2 vzal 96882 transakcí z fondu a bloku formulářů #240 (e6e)
16:56 — Uzel #3 vzal 39704 240 transakcí z fondu a bloku formulářů #47 (aXNUMX)
17:02 — Blok #240 (a47) je podepsán a odeslán do dalších uzlů k ověření
17:02 — Blok #240 (e6e) je podepsán a odeslán do dalších uzlů k ověření
17:18 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #240 (c5f) a začalo uplatňovat 181206 transakcí
17:45 — Blok #240 (a47) je ověřen a odeslán do kořenového řetězce
17:47 — Uzel #1 vzal 54956 transakcí z fondu a bloku formulářů #241 (170)
17:59 — Blok #241 (170) je podepsán a odeslán do jiných uzlů k ověření
18:09 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #241 (a47) a začínají uplatňovat 181206 transakcí
18:20 — Uzel #3 vzal 39104 transakcí z fondu a bloku formulářů #242 (955)
18:24 — Blok #240 (e6e) je ověřen a odeslán do kořenového řetězce
18:28 — Blok #242 (955) je podepsán a odeslán do jiných uzlů k ověření
18:09 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #242 (e6e) a začínají uplatňovat 96882 transakcí
19:06 — Demo skript dokončil svou práci pro uzel #1
19:08 — Demo skript dokončil svou práci pro uzel #2
19:08 — Uzel #2 vzal 48241 transakcí z fondu a bloku formulářů #243 (fde)
19:14 — Blok #243 (fde) je podepsán a odeslán do jiných uzlů k ověření
19:18 — Blok #241 (170) nebyl ve stanoveném čase ověřen
19:28 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #243 (37c)
19:35 — Blok #242 (955) je ověřen a odeslán do kořenového řetězce
19:40 — Blok #243 (37c) je podepsán a odeslán do dalších uzlů k ověření
20:05 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #243 (955) a začalo uplatňovat 39104 transakcí
20:15 — Blok #243 (fde) je ověřen a odeslán do kořenového řetězce
20:19 — Uzel #3 vzal 42981 transakcí z bloku a bloku formulářů #244 (9b5)
20:26 — Blok #244 (9b5) je podepsán a odeslán do dalších uzlů k ověření
20:28 - všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #244 (fde) a začínají uplatňovat 48241 transakcí
20:32 — Uzel #2 zpracoval všech 1 XNUMX transakcí, které byly ve fondu
21:05 — Blok #243 (37c) nebyl v určeném čase ověřen
21:15 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #245 (37c)
21:32 — Blok #245 (37c) je podepsán a odeslán do dalších uzlů k ověření
21:42 — Blok #244 (9b5) je ověřen a odeslán do kořenového řetězce
21:50 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #245 (9b5) a začínají uplatňovat 42981 transakcí
22:04 — Uzel #3 vzal 45361 transakcí z fondu a bloku formulářů #246 (3f9)
22:11 — Blok #246 (3f9) je podepsán a odeslán do dalších uzlů k ověření
22:51 — Blok #245 (37c) nebyl v určeném čase ověřen
23:01 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #246 (37c)
23:08 — Demo skript dokončil svou práci pro uzel #3
23:15 — Blok #246 (37c) je podepsán a odeslán do dalších uzlů k ověření
23:32 — Blok #246 (3f9) nebyl v určeném čase ověřen
23:42 — Uzel #3 vzal 52173 transakcí z fondu a bloku formulářů #246 (71d)
23:51 — Blok #246 (71d) je podepsán a odeslán do dalších uzlů k ověření
24:38 — Blok #246 (37c) nebyl v určeném čase ověřen
25:01 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #246 (37c)
25:06 — Blok #246 (71d) ověřen a odeslán do kořenového řetězce
25:12 — Blok #246 (37c) je podepsán a odeslán do dalších uzlů k ověření
25:14 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #246 (71d) a začalo uplatňovat 52173 transakcí
25:29 — Uzel #3 zpracoval všech 1 XNUMX transakcí, které byly ve fondu
26:40 — Blok #247 (37c) nebyl v určeném čase ověřen
26:47 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #247 (37c)
27:03 — Blok #247 (37c) je podepsán a odeslán do dalších uzlů k ověření
28:29 — Blok #247 (37c) nebyl v určeném čase ověřen
28:35 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #247 (37c)
28:49 — Blok #247 (37c) je podepsán a odeslán do dalších uzlů k ověření
30:13 — Blok #247 (37c) nebyl v určeném čase ověřen
30:23 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #247 (37c)
30:38 — Blok #247 (37c) je podepsán a odeslán do dalších uzlů k ověření
32:00 — Blok #247 (37c) nebyl v určeném čase ověřen
32:11 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #247 (37c)
32:26 — Blok #247 (37c) je podepsán a odeslán do dalších uzlů k ověření
33:49 — Blok #247 (37c) nebyl v určeném čase ověřen
33:59 — Uzel #1 vzal 86967 transakcí z bloku a bloku formulářů #247 (37c)
34:12 — Blok #247 (37c) je podepsán a odeslán do dalších uzlů k ověření
35:34 — Blok #247 (37c) ověřen a odeslán do kořenového řetězce
35:54 — Všechny uzly obdržely informace z kořenového řetězce, že byl přidán blok #247 (37c) a začalo uplatňovat 86967 transakcí
36:11 — Uzel #1 zpracoval všech 1 XNUMX transakcí, které byly ve fondu
55:12 - první uzel zpracoval všechny 3k transakcí

Veřejné testování řešení ochrany soukromí a škálovatelnosti Ethereum na cloudových platformách

Výsledky

Bylo zjištěno, že virtuální servery Azure nemají dostatečný výpočetní výkon na zpracování tak velkého počtu transakcí. Systém si ale dobře poradil s hlavním úkolem testů, totiž předvést fungování Plasma Cash s MongoDB.

Zveme vás k návštěvě GitHub projekt: https://github.com/opporty-com/Plasma-Cash/tree/new-version

Článek byl spoluautorem Alexandr Nashivan, senior vývojář Společnost Clever Solution Inc.

Dříve vývojový tým Opporty Rychlost Plasma Cash jsem již testoval. Výsledky jsou uvedeny v tento článek.

Zdroj: www.habr.com

Přidat komentář