ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ тСст: Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для приватности ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π² Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌΠ΅

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ β€” инновационная тСхнология, ΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰Π°Ρ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ сфСры чСловСчСской ΠΆΠΈΠ·Π½ΠΈ. Она пСрСносит Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ процСссы ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ пространство, обСспСчиваСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ финансовых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, сниТаСт ΠΈΡ… ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ соврСмСнныС DAPP прилоТСния с использованиСм ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² Π² Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сСтях.

Учитывая многочислСнныС прСимущСства ΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ сфСры примСнСния Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странным, Ρ‡Ρ‚ΠΎ эта ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰Π°Ρ тСхнология Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ»Π° Π²ΠΎ всС отрасли. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ соврСмСнным Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ. Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 20 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду, Ρ‡Ρ‚ΠΎ нСдостаточно для удовлСтворСния потрСбностСй соврСмСнного Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎΠ³ΠΎ бизнСса. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Π½Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌΠ° ΠΈΠ·-Π·Π° Π΅Π³ΠΎ высокой стСпСни Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π²Π·Π»ΠΎΠΌΠ° ΠΈ сбоСв сСти.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅, Ρ€Π΅ΡˆΠ°Ρ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π’Ρ€ΠΈΠ»Π΅ΠΌΠΌΡƒ ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Opporty создала Plasma Cash β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΡŽΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ сСти Π½Π° основС Node.js, пСриодичСски ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅ΠΉ своС состояниС Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ (Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌ).

ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ тСст: Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для приватности ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π² Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌΠ΅

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ процСссы Π² Plasma Cash

1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° `deposit`, пСрСдавая Π² Π½Π΅Π΅ сумму Π² ETH, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎΠΊΠ΅Π½ Plasma Cash. Ѐункция смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° создаСт Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ событиС ΠΎΠ± этом.

2. Plasma Cash Π½ΠΎΠ΄Ρ‹, подписанныС Π½Π° события смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ событиС ΠΎ создании Π΄Π΅ΠΏΠΎΠ·ΠΈΡ‚Π° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π² ΠΏΡƒΠ» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΎ создании Ρ‚ΠΎΠΊΠ΅Π½Π°.

3. ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠ΄Ρ‹ Plasma Cash Π±Π΅Ρ€ΡƒΡ‚ всС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ· ΠΏΡƒΠ»Π° (Π΄ΠΎ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°) ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠ· Π½ΠΈΡ… Π±Π»ΠΎΠΊ, Π²Ρ‹ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠœΠ΅Ρ€ΠΊΠ»Π΅ ΠΈ, соотвСтсвСнно, Ρ…Π΅Ρˆ. Π”Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ. Ноды ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ Π»ΠΈ Ρ…Π΅Ρˆ ΠœΠ΅Ρ€ΠΊΠ»Π΅, Π²Π°Π»ΠΈΠ΄Π½Ρ‹ Π»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, являСтся Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Π° Π΅Π³ΠΎ собствСнником). ПослС Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠ° Π½ΠΎΠ΄Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `submitBlock` смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, которая сохраняСт Π² ΠΊΠΎΠ½Ρ€Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π½ΠΎΠΌΠ΅Ρ€ ΠΈ Ρ…Π΅Ρˆ ΠœΠ΅Ρ€ΠΊΠ»Π΅ Π±Π»ΠΎΠΊΠ°. Π‘ΠΌΠ°Ρ€Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ событиС ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠ°. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· ΠΏΡƒΠ»Π°.

4. Ноды, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ событиС ΠΎ сабмитС Π±Π»ΠΎΠΊΠ°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ Π² Π±Π»ΠΎΠΊ.

5. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ собствСнник (ΠΈΠ»ΠΈ Π½Π΅ собствСнник) Ρ‚ΠΎΠΊΠ΅Π½Π° Ρ…ΠΎΡ‡Π΅Ρ‚ вывСсти Π΅Π³ΠΎ ΠΈΠ· Plasma Cash. Для этого ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `startExit`, пСрСдавая Π² Π½Π΅Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ послСдних 2 транзакциях ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ являСтся Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Ρ‚ΠΎΠΊΠ΅Π½Π°. Π‘ΠΌΠ°Ρ€Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ…Π΅Ρˆ ΠœΠ΅Ρ€ΠΊΠ»Π΅, провСряСт Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Π±Π»ΠΎΠΊΠ°Ρ… ΠΈ отправляСт Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° Π²Ρ‹Π²ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ.

6. Если опСрация Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡΠΌΠΈ (Ρ‚ΠΎΠΊΠ΅Π½ Π±Ρ‹Π» ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½ послС Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ Π΄ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° ΡƒΠΆΠ΅ Π±Ρ‹Π» Ρ‡ΡƒΠΆΠΈΠΌ), собствСнник Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ Π΄Π²ΡƒΡ… нСдСль.

ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ тСст: Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для приватности ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π² Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌΠ΅

ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ достигаСтся двумя способами

1. ΠšΠΎΡ€Π½Π΅Π²Π°Ρ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ транзакциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ остаСтся информация ΠΎ Ρ‚ΠΎΠΌ, ΠΊΡ‚ΠΎ Π·Π°Π²Π΅Π» ΠΈ Π²Ρ‹Π²Π΅Π» ETH Π²/с Plasma Cash.

2. ДочСрняя Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ zk-SNARKs.

ВСхнологичСский стСк

  • NodeJS
  • Redis
  • Etherium
  • Soild

ВСстированиС

Разрабатывая Plasma Cash, ΠΌΡ‹ протСстировали ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

  • Π΄ΠΎ 35 000 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΡƒΠ»;
  • Π΄ΠΎ 1 000 000 Ρ‚Ρ€Π°Π·Π°ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ хранится Π² Π±Π»ΠΎΠΊΠ΅.

ВСсты ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π° 3 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сСрвСрах:

1. Intel Core i7-6700 Quad-Core Skylake incl. NVMe SSD β€” 512 GB, 64 GB DDR4 RAM
Π‘Ρ‹Π»ΠΈ подняты 3 Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Plasma Cash Π½ΠΎΠ΄Ρ‹.

2. AMD Ryzen 7 1700X Octa-Core Β«Summit RidgeΒ» (Zen), SATA SSD β€” 500 GB, 64 GB DDR4 RAM
Π‘Ρ‹Π»Π° поднята Ropsten testnet ETH Π½ΠΎΠ΄Π°.
Π‘Ρ‹Π»ΠΎ поднято 3 Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Plasma Cash Π½ΠΎΠ΄Ρ‹.

3. Intel Core i9-9900K Octa-Core incl. NVMe SSD β€” 1 TB, 64 GB DDR4 RAM
Π‘Ρ‹Π»Π° поднята 1 сабмит Plasma Cash Π½ΠΎΠ΄Π°.
Π‘Ρ‹Π»ΠΎ поднято 3 Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Plasma Cash Π½ΠΎΠ΄Ρ‹.
Запускался тСст Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Plasma Cash ΡΠ΅Ρ‚ΡŒ.

Π˜Ρ‚ΠΎΠ³ΠΎ: 10 Plasma Cash Π½ΠΎΠ΄ Π² ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ сСти.

ВСст 1

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈΠΌΠΈΡ‚ Π½Π° 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Π±Π»ΠΎΠΊΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² 2 Π±Π»ΠΎΠΊΠ° (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ систСма успСваСт Π²Π·ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π·Π°ΡΠ°Π±ΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ).


Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС: послСдний Π±Π»ΠΎΠΊ #7; Π² Π±Π°Π·Π΅ сохранСно 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ².

00:00 β€” запуск скрипта Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
01:37 β€” создано 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² Π½ΠΎΠ΄Ρƒ
01:46 β€” сабмит Π½ΠΎΠ΄Π° взяла ΠΈΠ· ΠΏΡƒΠ»Π° 240ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #8. Π’Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡƒΠ» добавляСтся 320ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 10 сСк
01:58 β€” Π±Π»ΠΎΠΊ #8 подписан ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
02:03 β€” Π±Π»ΠΎΠΊ #8 ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π²Ρ‹Π·Π²Π°Π½Π° функция `submitBlock` смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° с Ρ…Π΅ΡˆΠ΅ΠΌ ΠœΠ΅Ρ€ΠΊΠ»Π΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π±Π»ΠΎΠΊΠ°
02:10 β€” Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π΅ΠΌΠΎ-скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 32 сСк
02:33 β€” Π½ΠΎΠ΄Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ #8 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ, ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 240ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
02:40 β€” ΠΈΠ· ΠΏΡƒΠ»Π° Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ 240ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π² Π±Π»ΠΎΠΊΠ΅ #8
02:56 β€” сабмит Π½ΠΎΠ΄Π° взяла ΠΈΠ· ΠΏΡƒΠ»Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ 760ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ…Π΅Ρˆ ΠœΠ΅Ρ€ΠΊΠ»Π΅ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ #9
03:20 β€” всС Π½ΠΎΠ΄Ρ‹ содСрТат 1ΠΌΠ»Π½ 240ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
03:35 β€” Π±Π»ΠΎΠΊ #9 подписан ΠΈ отправляСтся Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΠΎΠ΄Ρ‹
03:41 β€” ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка сСти
04:40 β€” ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠ° #9
04:54 β€” сабмит Π½ΠΎΠ΄Π° взяла ΠΈΠ· ΠΏΡƒΠ»Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ 760ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ…Π΅Ρˆ ΠœΠ΅Ρ€ΠΊΠ»Π΅ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ #9
05:32 β€” Π±Π»ΠΎΠΊ #9 подписан ΠΈ отправляСтся Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΠΎΠ΄Ρ‹
05:53 β€” Π±Π»ΠΎΠΊ #9 ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π΄Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
06:17 β€” Π½ΠΎΠ΄Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ #9 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 760ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
06:47 β€” ΠΏΡƒΠ» очистился ΠΎΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π±Π»ΠΎΠΊΠ΅ #9
09:06 β€” всС Π½ΠΎΠ΄Ρ‹ содСрТат 2 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

ВСст 2

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈΠΌΠΈΡ‚ Π² 350ΠΊ Π½Π° Π±Π»ΠΎΠΊ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠΌΠ΅Π΅ΠΌ 3 Π±Π»ΠΎΠΊΠ°.


Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС: послСдний Π±Π»ΠΎΠΊ #9; Π² Π±Π°Π·Π΅ сохранСно 2 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

00:00 β€” скрипт Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½
00:44 β€” создано 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² Π½ΠΎΠ΄Ρƒ
00:56 β€” сабмит Π½ΠΎΠ΄Π° взяла ΠΈΠ· ΠΏΡƒΠ»Π° 320ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #10. Π’Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡƒΠ» добавляСтся 320ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 10 сСк
01:12 β€” Π±Π»ΠΎΠΊ #10 подписан ΠΈ отправляСтся ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
01:18 β€” Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π΅ΠΌΠΎ-скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 34 сСк
01:20 β€” Π±Π»ΠΎΠΊ #10 ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
01:51 β€” всС Π½ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ #10 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ 320ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
02:01 β€” ΠΏΡƒΠ» очистился Π½Π° 320ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ Π² Π±Π»ΠΎΠΊ #10
02:15 β€” сабмит Π½ΠΎΠ΄Π° взяла ΠΈΠ· ΠΏΡƒΠ»Π° 350ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #11
02:34 β€” Π±Π»ΠΎΠΊ #11 подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
02:51 β€” Π±Π»ΠΎΠΊ #11 ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΡ‡ΠΎΠΊΡƒ
02:55 β€” послСдняя Π½ΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±Π»ΠΎΠΊΠ° #10
10:59 β€” ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ транзакция с сабмитом Π±Π»ΠΎΠΊΠ° #9, Π½ΠΎ ΠΎΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ ΠΈ всС Π½ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΠ± этом ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 350ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
11:05 β€” ΠΏΡƒΠ» очистился Π½Π° 320ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ Π² Π±Π»ΠΎΠΊ #11
12:10 β€” всС Π½ΠΎΠ΄Ρ‹ содСрТат 1 ΠΌΠ»Π½ 670ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
12:17 β€” сабмит Π½ΠΎΠ΄Π° взяла ΠΈΠ· pool 330ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #12
12:32 β€” Π±Π»ΠΎΠΊ #12 подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
12:39 β€” Π±Π»ΠΎΠΊ #12 ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
13:44 β€” всС Π½ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ #12 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ 330ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
14:50 β€” всС Π½ΠΎΠ΄Ρ‹ содСрТат 2 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

ВСст 3

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ сСрвСрах, ΠΎΠ΄Π½Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Π½ΠΎΠ΄Π° Π±Ρ‹Π»Π° Π·Π°ΠΌΠ΅Π½Π΅Π½Π° Π½Π° сабмит Π½ΠΎΠ΄Ρƒ.


Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС: послСдний Π±Π»ΠΎΠΊ #84; Π² Π±Π°Π·Π΅ сохранСно 0 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

00:00 β€” Π—Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ 3 скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎ 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
01:38 β€” создано 1ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² сабмит Π½ΠΎΠ΄Ρƒ #3
01:50 β€” сабмит Π½ΠΎΠ΄Π° #3 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 330ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #85 (f21). Π’Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡƒΠ» добавляСтся 350ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 10 сСк
01:53 β€” создано 1ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² сабмит Π½ΠΎΠ΄Ρƒ #1
01:50 β€” сабмит Π½ΠΎΠ΄Π° #3 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 330ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #85 (f21). Π’Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡƒΠ» добавляСтся 350ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 10 сСк
02:01 β€” сабмит Π½ΠΎΠ΄Π° #1 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 250ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #85 (65e)
02:06 β€” Π±Π»ΠΎΠΊ #85 (f21) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
02:08 β€” Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π΅ΠΌΠΎ-скрипт сСрвСра #3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» 1ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 30 сСкунд
02:14 β€” Π±Π»ΠΎΠΊ #85 (f21) ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
02:19 β€” Π±Π»ΠΎΠΊ #85 (65e) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
02:22 β€” создано 1ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² сабмит Π½ΠΎΠ΄Ρƒ #2
02:27 β€” Π±Π»ΠΎΠΊ #85 (65e) ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
02:29 β€” сабмит Π½ΠΎΠ΄Π° #2 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 111855 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #85 (256).
02:36 β€” Π±Π»ΠΎΠΊ #85 (256) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
02:36 β€” Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π΅ΠΌΠΎ-скрипт сСрвСра #1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» 1ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 42.5 сСкунд
02:38 β€” Π±Π»ΠΎΠΊ #85 (256) ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
03:08 β€” Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π΅Π»ΠΎ-скрипт сСрвСра #2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» 1ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° 47 сСк
03:38 β€” всС Π½ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ #85 (f21), #86(65e), #87(256) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ 330ΠΊ, 250ΠΊ, 111855 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
03:49 β€” ΠΏΡƒΠ» очистился Π½Π° 330ΠΊ, 250ΠΊ, 111855 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Π±Π»ΠΎΠΊΠΈ #85 (f21), #86(65e), #87(256)
03:59 β€” сабмит Π½ΠΎΠ΄Π° #1 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 888145 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #88 (214), сабмит Π½ΠΎΠ΄Π° #2 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 750ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #88 (50a), сабмит Π½ΠΎΠ΄Π° #3 взяла ΠΈΠ· ΠΏΡƒΠ»Π° 670ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #88 (d3b)
04:44 β€” Π±Π»ΠΎΠΊ #88 (d3b) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
04:58 β€” Π±Π»ΠΎΠΊ #88 (214) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
05:11 β€” Π±Π»ΠΎΠΊ #88 (50a) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
05:11 β€” Π±Π»ΠΎΠΊ #85 (d3b) ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
05:36 β€” Π±Π»ΠΎΠΊ #85 (214) ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
05:43 β€” всС Π½ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ #88 (d3b), #89(214) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ 670ΠΊ, 750ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
06:50 β€” ΠΈΠ·-Π·Π° ΠΎΠ±Ρ€Ρ‹Π²Π° связи Π±Π»ΠΎΠΊ #85 (50a) Π½Π΅ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½
06:55 β€” сабмит Π½ΠΎΠ΄Π° #2 взяла ΠΈΠ· pool 888145 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊ #90 (50a)
08:14 β€” Π±Π»ΠΎΠΊ #90 (50a) подписан ΠΈ отправляСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ
09:04 β€” Π±Π»ΠΎΠΊ #90 (50a) ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ
11:23 β€” всС Π½ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ #90 (50a) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ 888145 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΈ этом ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ сСрвСр #3 ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² #88 (d3b), #89(214)
12:11 β€” всС ΠΏΡƒΠ»Ρ‹ пусты
13:41 β€” всС Π½ΠΎΠ΄Ρ‹ сСрвСра #3 содСрТат 3ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
14:35 β€” всС Π½ΠΎΠ΄Ρ‹ сСрвСра #1 содСрТат 3ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
19:24 β€” всС Π½ΠΎΠ΄Ρ‹ сСрвСра #2 содСрТат 3ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

ΠŸΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΈΡ

Π’ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Plasma Cash ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постСпСнно Ρ€Π΅ΡˆΠ°Π»ΠΈ ΠΈ Ρ€Π΅ΡˆΠ°Π΅ΠΌ:

1. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ взаимодСйствия Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ систСмы. НапримСр, функция добавлСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΠΈΠΉ Π² ΠΏΡƒΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ сабмита ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ², ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ‡Ρ‚ΠΎ Π²Π΅Π»ΠΎ ΠΊ просадкС скорости.

2. НС сразу Π±Ρ‹Π»ΠΎ ясно, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈ этом ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ расходы Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

3. НС Π±Ρ‹Π»ΠΎ ясно, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ Π³Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ высоких Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

4. НС Π±Ρ‹Π»ΠΎ ясно, ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° с 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠΌ Ρ‚Ρ€Π°Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 100 Мб.

5. Π Π°Π±ΠΎΡ‚Π° Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π²Π΅Ρ‚ соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° происходят Π΄ΠΎΠ»Π³ΠΈΠ΅ вычислСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, построСниС Π΄Π΅Ρ€Π΅Π²Π° ΠœΠ΅Ρ€ΠΊΠ»Π΅ ΠΈ вычислСниС Π΅Π³ΠΎ Ρ…Π΅ΡˆΠ°).

Как ΠΌΡ‹ со всСм этим ΡΠΏΡ€Π°Π²ΠΈΠ»ΠΈΡΡŒ?

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия Plasma Cash Π½ΠΎΠ΄Ρ‹ прСдставляла собой Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠΌΠ±Π°ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ³ Π΄Π΅Π»Π°Ρ‚ΡŒ всС ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ: ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΡΠ°Π±ΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ, прСдоставлял API для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ NodeJS ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ однопоточная, тяТСлая функция расчСта Π΄Π΅Ρ€Π΅Π²Π° ΠœΠ΅Ρ€ΠΊΠ»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ добавлСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠœΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

1. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько NodeJS процСссов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ worker_threads ΠΈ вынСсти Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ части ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΡ‚ΠΎΠΊΠΈ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ воспользовались ΠΎΠ±Π΅ΠΈΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ: логичСски Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ Π½ΠΎΠ΄Ρƒ Π½Π° 3 части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя синхронно

1. Π‘Π°Π±ΠΌΠΈΡ‚ Π½ΠΎΠ΄Π°, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΏΡƒΠ» ΠΈ занимаСтся созданиСм Π±Π»ΠΎΠΊΠΎΠ².

2. Π’Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Π½ΠΎΠ΄Π°, которая провСряСт Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ΄.

3. API Π½ΠΎΠ΄Π° β€” прСдоставляСт API для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

ΠŸΡ€ΠΈ этом ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· unix socket посрСдством cli.

ВяТСлыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ расчСт Π΄Π΅Ρ€Π΅Π²Π° ΠœΠ΅Ρ€ΠΊΠ»Π΅, ΠΌΡ‹ вынСсли Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ добились Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Plasma Cash ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π±Π΅Π· сбоСв.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°, ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ, ΠΊ соТалСнию, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹: 5 000 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду ΠΈ Π΄ΠΎ 50 000 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Π±Π»ΠΎΠΊΠ΅. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Ρ‹ΡΡΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ общСния с Plasma Cash, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΈΠΊΠΎΠ²ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы. Π Π°Π½Π΅Π΅ ΠΌΡ‹ писали, Ρ‡Ρ‚ΠΎ Plasma Cash Π½ΠΎΠ΄Π° прСдоставляСт unix socket интСрфСйс. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ Π±Ρ‹Π» тСкстовым. json ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π»ΠΈΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ `JSON.parse()` ΠΈ `JSON.stringify()`.

```json
{
  "action": "sendTransaction",
  "payload":{
    "prevHash": "0x8a88cc4217745fd0b4eb161f6923235da10593be66b841d47da86b9cd95d93e0",
    "prevBlock": 41,
    "tokenId": "57570139642005649136210751546585740989890521125187435281313126554130572876445",
    "newOwner": "0x200eabe5b26e547446ae5821622892291632d4f4",
    "type": "pay",
    "data": "",
    "signature": "0xd1107d0c6df15e01e168e631a386363c72206cb75b233f8f3cf883134854967e1cd9b3306cc5c0ce58f0a7397ae9b2487501b56695fe3a3c90ec0f61c7ea4a721c"
  }
}
```

ΠœΡ‹ Π·Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ пСрСсылки Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ~ 130ΠΊ Π² сСкунду. ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с json, Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΠ»ΠΎΡΡŒ. Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ V8 Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π Π°Π±ΠΎΡ‚Π° с транзакциями, Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Ρƒ нас ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ Ρ‡Π΅Ρ€Π΅Π· классы. ΠŸΡ€ΠΈ создании Ρ‚Π°ΠΊΠΈΡ… классов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ просСла Π² 2 Ρ€Π°Π·Π°, Ρ‡Ρ‚ΠΎ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚: OOP Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС Π½Π° чисто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

Π—Π°ΠΏΠΈΡΡŒ Π² Π±Π°Π·Ρƒ

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Redis ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ ΠΈΠ· самых ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ удовлСтворяСт нашим Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: key-value Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ€Π°Π±ΠΎΡ‚Π° с hash-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, мноТСства. Запустили redis-benchmark ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ~80ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 1 pipelining.

Для высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΡ‹ настроили Redis Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΎ:

  • Установили unix socket соСдинСниС.
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ сохранСния состояния Π½Π° диск (для надСТности ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ ΠΈ ΡƒΠΆΠ΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Redis Π΄Π΅Π»Π°Ρ‚ΡŒ сохранСниС Π½Π° диск).

Π’ Redis ΠΏΡƒΠ» β€” это Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ всС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΈΠΌ запросом ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ΅. ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ список, Π½ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ всСго списка.

ΠŸΡ€ΠΈ использовании стандартной NodeJS Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Redis ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² 18ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду. CΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡƒΠΏΠ°Π»Π° Π² 9 Ρ€Π°Π·.

Π’Π°ΠΊ ΠΊΠ°ΠΊ benchmark ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π°ΠΌ возмоТности явно Π² 5 Ρ€Π°Π· большС, Π½Π°Ρ‡Π°Π»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ПомСняли Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π½Π° ioredis ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΆΠ΅ 25ΠΊ Π² сСкунду. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ добавляли ΠΏΠΎΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `hset`. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ запросов Π² Redis. Π’ΠΎΠ·Π½ΠΈΠΊΠ»Π° идСя ΠΎΠ±ΡŠΠ΅Π΄Π΅Π½ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΏΠ°Ρ‡ΠΊΠΈ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ `hmset`. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” 32ΠΊ Π² сСк.

По нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ опишСм Π½ΠΈΠΆΠ΅, с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ `Buffer` ΠΈ, ΠΊΠ°ΠΊ оказалось, Ссли Π΅Π³ΠΎ пСрСвСсти Π² тСкст (`buffer.toString(‘hex’)`) ΠΏΠ΅Ρ€Π΅Π΄ записью, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π΄ΠΎ 35ΠΊ Π² сСкунду. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

Нам ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ:

1. БистСма часто высчитываСт Ρ…Π΅ΡˆΠΈ, подписи ΠΈ Ρ‚.ΠΏ., ΠΈ для этого Π΅ΠΉ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ Π² `Buffer.

2. ΠŸΡ€ΠΈ пСрСсылкС ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ вСсят мСньшС, Ρ‡Π΅ΠΌ тСкст. НапримСр, ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π±Π»ΠΎΠΊΠ° с 1 ΠΌΠ»Π½ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π΄Π°Π½Π½Ρ‹Π΅ Π² тСкстС ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС 300 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚.

3. ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π° основу ΠΌΡ‹ взяли собствСнный Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» хранСния ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π½Π° Π±Π°Π·Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ `binary-data`.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…:

β€” Transaction

  ```json
  {
    prevHash: BD.types.buffer(20),
    prevBlock: BD.types.uint24le,
    tokenId: BD.types.string(null),
    type: BD.types.uint8,
    newOwner: BD.types.buffer(20),
    dataLength: BD.types.uint24le,
    data: BD.types.buffer(({current}) => current.dataLength),
    signature: BD.types.buffer(65),
    hash: BD.types.buffer(32),
    blockNumber: BD.types.uint24le,
    timestamp: BD.types.uint48le,
  }
  ```

β€” Token

  ```json
  {
    id: BD.types.string(null),
    owner: BD.types.buffer(20),
    block: BD.types.uint24le,
    amount: BD.types.string(null),
  }
  ```

β€” Block

  ```json
  {
    number: BD.types.uint24le,
    merkleRootHash: BD.types.buffer(32),
    signature: BD.types.buffer(65),
    countTx: BD.types.uint24le,
    transactions: BD.types.array(Transaction.Protocol, ({current}) => current.countTx),
    timestamp: BD.types.uint48le,
  }
  ```

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ `BD.encode(block, Protocol).slice();` ΠΈ ` BD.decode(buffer, Protocol)` ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² `Buffer` для сохранСния Π² Redis ΠΈΠ»ΠΈ пСрСсылки Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½ΠΎΠ΄Π΅ ΠΈ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π’Π°ΠΊΠΆΠ΅ Ρƒ нас Π΅ΡΡ‚ΡŒ 2 Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами:

β€” ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» для взаимодСйствия с Plasma Node посрСдством unix socket

  ```json
  {
    type: BD.types.uint8,
    messageId: BD.types.uint24le,
    error: BD.types.uint8,
    length: BD.types.uint24le,
    payload: BD.types.buffer(({node}) => node.length)
  }
  ```

Π³Π΄Π΅:

  • `type` β€” дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 β€” sendTransaction, 2 β€” getTransaction;
  • `payload` β€” Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ;
  • `messageId` β€” ΠΈΠ΄ сообщСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚.

β€” ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ

  ```json
  {
    code: BD.types.uint8,
    versionProtocol: BD.types.uint24le,
    seq: BD.types.uint8,
    countChunk: BD.types.uint24le,
    chunkNumber: BD.types.uint24le,
    length: BD.types.uint24le,
    payload: BD.types.buffer(({node}) => node.length)
  }
  ```

Π³Π΄Π΅:

  • `code` β€” ΠΊΠΎΠ΄ сообщСниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 6 β€” PREPARE_NEW_BLOCK, 7 β€” BLOCK_VALID, 8 β€” BLOCK_COMMIT;
  • `versionProtocol` β€” вСрсия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ подняты Π½ΠΎΠ΄Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ;
  • `seq` β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния;
  • `countChunk` ΠΈ `chunkNumber` Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для дроблСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сообщСний;
  • `length` ΠΈ `payload` Π΄Π»ΠΈΠ½Π° ΠΈ сами Π΄Π°Π½Π½Ρ‹Π΅.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, конСчная систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ `rlp` Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΡ‚ Π­Ρ„ΠΈΡ€ΠΈΡƒΠΌΠ°. К соТалСнию, Π½Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ Π½Π΅Π΅ отказался, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Если Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ скорости 35 000 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду, Π½Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ врСмя формирования Π±Π»ΠΎΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 30 сСкунд, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π±Π»ΠΎΠΊ 1 000 000 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ пСрСсылку Π±ΠΎΠ»Π΅Π΅ 100 ΠΌΠ± Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ использовали `ethereumjs-devp2p` Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для связи Π½ΠΎΠ΄, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ ΡΠΏΡ€Π°Π²Π»ΡΠ»Π°ΡΡŒ с Ρ‚Π°ΠΊΠΈΠΌ количСством Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ воспользовались Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `ws` ΠΈ настроили пСрСсылку Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ websocket. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ пСрСсылкС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΡ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ ΠΈΡ… Π½Π° Ρ‡Π°Π½ΠΊΠΈ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ‚.

Π’Π°ΠΊΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²Π° ΠœΠ΅Ρ€ΠΊΠ»Π΅ ΠΈ высчитываниС Ρ…Π΅ΡˆΠ° 1 000 000 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 10 сСкунд Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ вычислСния. Π—Π° это врСмя успСваСт ΠΎΠ±ΠΎΡ€Π²Π°Ρ‚ΡŒΡΡ соСдинСниС со всСми Π½ΠΎΠ΄Π°ΠΌΠΈ. Π‘Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ пСрСнСсти это вычислСниС Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹:

На самом Π΄Π΅Π»Π΅, наши Π²Ρ‹Π²ΠΎΠ΄Ρ‹ Π½Π΅ Π½ΠΎΠ²Ρ‹, Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ спСциалисты Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎ Π½ΠΈΡ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

  • ИспользованиС Functional Programming вмСсто Object-Oriented Programming ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ сСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы Π½Π° NodeJS.
  • ИспользованиС `worker_threads` для тяТСлых вычислСний ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ систСмы, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с опСрациями i/o.
  • unix socket ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΈ быстрСС Ρ‡Π΅ΠΌ http запросы.
  • Если Π½ΡƒΠΆΠ½ΠΎ быстро ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ большиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ сСти, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡΡ websocket-Π°ΠΌΠΈ ΠΈ ΡΠ»Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Π΅ Π½Π° Ρ‡Π°Π½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Ссли ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠΉΠ΄ΡƒΡ‚, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎ сообщСниС.

ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ вас ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ GitHub ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: https://github.com/opporty-com/Plasma-Cash/tree/new-version

Π‘Ρ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° написана Π² соавторствС с АлСксандром Нашиваном, ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Clever Solution Inc.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ