ืืืืงืฆ'ืืื ืืื ืืื ืืืืืื ืืืฉื ืืช ืืืืืืื ืืฉืคืจ ืชืืืืื ืจืืื ืืืื ืืืื. ืืื ืืขืืืจ ืชืืืืืื ืืืืฆืจืื ืืืืชืืื ืืืจืื ืืืืืืืื, ืืืืื ืืืืจืืช ืืืืื ืืช ืฉื ืขืกืงืืืช ืคืื ื ืกืืืช, ืืคืืืช ืืช ืืขืืืช ืฉืืื ืืื ืืืคืฉืจ ืืืฆืืจ ืืคืืืงืฆืืืช DAPP ืืืืจื ืืืช ืืืืฆืขืืช ืืืืื ืืืืื ืืจืฉืชืืช ืืืืืจืืช.
ืืืืจ ืืืชืจืื ืืช ืืจืืื ืืืืืฉืืืื ืืืืืื ืื ืฉื ืืืืงืฆ'ืืื, ืื ืืืื ื ืจืื ืืคืชืืข ืฉืืืื ืืืืืื ืืืืืืื ืืื ืขืืืื ืื ืขืฉืชื ืืช ืืจืื ืืื ืชืขืฉืืื. ืืืขืื ืืื ืฉืืืืงืฆ'ืืื ืืืืืจื ื ืืืืืืจ ืืกืจ ืืืืืช ืืืจืืืืช. Ethereum ืืขืื ื-20 ืขืกืงืืืช ืืฉื ืืื, ืื ืฉืื ืืกืคืืง ืืื ืืขื ืืช ืขื ืืฆืจืืื ืฉื ืืขืกืงืื ืืืื ืืืื ืฉื ืืืื. ืืื ืขื ืืืช, ืืืจืืช ืืืฉืชืืฉืืช ืืืื ืืืืืืืช ืืืืงืฆ'ืืื ืืืกืกืืช ืื ืืืฉ ืืช Ethereum ืืฉื ืจืืช ืืืื ื ืืืืืื ืฉืื ืืคื ื ืคืจืืฆืืช ืืืฉืื ืจืฉืช.
ืืื ืืืืืื ืืืืืจ, ืืืืื ืืืืจืืืืช ืืืืืงืฆ'ืืื, ืืืื ืืคืชืืจ ืืช ื-Scalability Trilemma, ืฆืืืช ืืคืืชืื
ืชืืืืื ืืคืชื ืืคืืืื ืงืืฉ
1. ืืืฉืชืืฉ ืงืืจื ืืคืื ืงืฆืืืช ืืืืื ืืืื 'ืืคืงืื', ืืืขืืืจ ืืชืืื ืืช ืกืืื ื-ETH ืฉืืจืฆืื ื ืืืคืงืื ืืืกืืืื Plasma Cash. ืคืื ืงืฆืืืช ืืืืื ืืืื ืืืฆืจืช ืืกืืืื ืืืืฆืจืช ืืืจืืข ืืืืื.
2. ืฆืืชื Plasma Cash ืืื ืืืื ืืืืจืืขื ืืืืื ืืืืื ืืงืืืื ืืืจืืข ืขื ืืฆืืจืช ืืคืงืื ืืืืกืืคืื ืขืกืงื ืขื ืืฆืืจืช ืืกืืืื ืืืืืจ.
3. ืืขืช ืืขืช, ืฆืืชืื ืืืืืืื ืฉื ืคืืืื ืงืืฉ ืืืงืืื ืืช ืื ืืขืกืงืืืช ืืืืืืจ (ืขื ืืืืืื) ืืืืฆืจืื ืืื ืืืืง, ืืืฉืืื ืืช ืขืฅ ื- Merkle ืืืืชืื, ืืช ื-hash. ืืืืง ืื ื ืฉืื ืืฆืืชืื ืืืจืื ืืฆืืจื ืืืืืช. ืืฆืืชืื ืืืืงืื ืืื ื-Hash ืฉื Merkle ืชืงืฃ ืืืื ืืขืกืงืืืช ืชืงืคืืช (ืืืืืื, ืืื ืฉืืื ืืืกืืืื ืืื ืืืขืืื ืฉืื). ืืืืจ ืืืืืช ืืืกืืื, ืืฆืืืช ืงืืจื ืืคืื ืงืฆืื 'submitBlock' ืฉื ืืืืื ืืืื, ืฉืฉืืืจืช ืืช ืืกืคืจ ืืืืืง ืืืช ื-Hash ืฉื Merkle ืืฉืจืฉืจืช ืืงืฆื. ืืืืื ืืืื ืืืฆืจ ืืืจืืข ืืืฆืืืข ืขื ืืืกืคื ืืืฆืืืช ืฉื ืืืืง. ืขืกืงืืืช ืืืกืจืืช ืืืืืืจ.
4. ืฆืืชืื ืฉืืงืืืื ืืช ืืืจืืข ืืืฉืช ืืืกืืื ืืชืืืืื ืืืืื ืืช ืืขืกืงืืืช ืฉื ืืกืคื ืืืืืง.
5. ืืฉืื ืืกืืื, ืืืขืืื (ืื ืฉืืื ื ืืืขืืื) ืฉื ืืืกืืืื ืจืืฆื ืืืฉืื ืืืชื ืืคืืืื ืงืืฉ. ืืฉื ืื ืืื ืงืืจื ืืคืื ืงืฆืื `startExit`, ืืืขืืืจ ืืชืืื ืืืืข ืขื 2 ืืขืกืงืืืช ืืืืจืื ืืช ืขื ืืืกืืืื, ืืฉืจ ืืืฉืจืืช ืฉืืื ืืืขืืื ืฉื ืืืกืืืื. ืืืืื ืืืื, ืืืืฆืขืืช ื-Hash ืฉื Merkle, ืืืืง ื ืืืืืช ืฉื ืขืกืงืืืช ืืืืืงืื ืืฉืืื ืืช ืืืกืืืื ืืืฉืืื, ืฉืชืชืจืืฉ ืืขืื ืฉืืืขืืื.
6. ืื ืคืขืืืช ืืฉืืืช ืืืกืืืื ืืชืจืืฉื ืขื ืืคืจืืช (ืืืกืืืื ืืืฆื ืืืืจ ืชืืืืช ืืืื ืืืฉืืื ืื ืฉืืืกืืืื ืืืจ ืืื ืฉื ืืืฉืื ืืืจ ืืคื ื ืืืฉืืื), ืืืขืืื ืฉื ืืืกืืืื ืืืื ืืืคืจืื ืืช ืืืฉืืื ืชืื ืฉืืืขืืื.
ืืคืจืืืืช ืืืฉืืช ืืฉืชื ืืจืืื
1. ืฉืจืฉืจืช ืืฉืืจืฉ ืืื ื ืืืืขืช ืืืจ ืขื ืืขืกืงืืืช ืฉื ืืฆืจืืช ืืืืขืืจืืช ืืชืื ืืฉืจืฉืจืช ืืืช. ืืืืข ืขื ืื ืฉืืคืงืื ืืืฉื ETH ืืคืืืื ืงืืฉ ื ืฉืืจ ืฆืืืืจื.
2. ืฉืจืฉืจืช ืืืื ืืืคืฉืจืช ืขืกืงืืืช ืื ืื ืืืืืช ืืืืฆืขืืช zk-SNARKs.
ืขืจืืืช ืืื ืืืืืื
- NodeJS
- Redis
- ืืชืจืืื
- ืืืฆืง
ืืืืงื
ืชืื ืืื ืคืืชืื Plasma Cash, ืืืงื ื ืืช ืืืืจืืช ืืืขืจืืช ืืืฉืื ื ืืช ืืชืืฆืืืช ืืืืืช:
- ืขื 35 ืขืกืงืืืช ืืฉื ืืื ืืชืืืกืคืืช ืืืืืจ;
- ื ืืชื ืืืืกื ืขื 1 ืขืกืงืืืช ืืืืืง.
ืืืืงืืช ืืืฆืขื ื-3 ืืฉืจืชืื ืืืืื:
1. Intel Core i7-6700 Quad-Core Skylake ืืืื. NVMe SSD - 512 GB, 64 GB DDR4 RAM
ืืืขืื 3 ืฆืืชืื ืืืืชืื ืฉื ืคืืืื ืงืืฉ.
2. AMD Ryzen 7 1700X Octa-Core "Summit Ridge" (ืื), SATA SSD - 500 GB, 64 GB DDR4 RAM
ืฆืืืช ETH ืฉื Ropsten testnet ืืืขืื.
ืืืขืื 3 ืฆืืชืื ืืืืชืื ืฉื ืคืืืื ืงืืฉ.
3. Intel Core i9-9900K Octa-Core ืืืื. NVMe SSD - 1 TB, 64 GB DDR4 RAM
ืฆืืืช ืืืฉืช ืคืืืื ืืืืื ืืืขืื.
ืืืขืื 3 ืฆืืชืื ืืืืชืื ืฉื ืคืืืื ืงืืฉ.
ืืืฉืงื ืืืืงื ืืืืกืคืช ืขืกืงืืืช ืืจืฉืช Plasma Cash.
ืกื ืืื: 10 ืฆืืชื Plasma Cash ืืจืฉืช ืคืจืืืช.
ืืืื 1
ืืฉ ืืืืื ืฉื ืืืืืื ืขืกืงืืืช ืืื ืืืืง. ืืื, ืืืืืื ืขืกืงืืืช ืืชืืืงืืช ื-1 ืืืืงืื (ืฉืื ืืืขืจืืช ืืฆืืืื ืืงืืช ืืืง ืืืขืกืงืืืช ืืืืืืฉ ืชืื ืืื ืฉืืืืชื).
ืืฆื ืืชืืืชื: ืืืืง ืืืจืื #7; ืืืืืื ืขืกืงืืืช ืืืกืืืื ืื ืืืืืกื ืื ืืืกื ืื ืชืื ืื.
00:00 - ืชืืืืช ืชืกืจืื ืืฆืืจืช ืืขืกืงื
01:37 - 1 ืืืืืื ืขืกืงืืืช ื ืืฆืจื ืืืืื ืืฉืืืื ืืฆืืืช
01:46 - ืฆืืืช ืืืืฉื ืืงื 240 ืขืกืงืืืช ืืืืืืจ ืืืืคืกืื ืืืืง ืืก' 8. ืื ื ืจืืืื ืื ืฉ-320 ืืืฃ ืขืกืงืืืช ืืชืืืกืคืืช ืืืืืจ ืชืื 10 ืฉื ืืืช
01:58 - ืืืืง ืืก' 8 ื ืืชื ืื ืฉืื ืืืืืืช
02:03 - ืืืืง ืืก' 8 ืืืืืช ืืคืื ืงืฆืืืช 'submitBlock' ืฉื ืืืืื ืืืื ื ืงืจืืช ืขื ื-Hash ืฉื Merkle ืืืกืคืจ ืืืกืืื
02:10 - ืกืงืจืืคื ืืืืื ืกืืื ืืขืืื, ืฉืฉืื ืืืืืื ืขืกืงืืืช ื-1 ืฉื ืืืช
02:33 - ืฆืืชืื ืืืื ืืงืื ืืืืข ืฉืืืืง #8 ื ืืกืฃ ืืฉืจืฉืจืช ืืฉืืจืฉ, ืืืืื ืืืฆืข 240 ืขืกืงืืืช
02:40 - 240 ืืืฃ ืขืกืงืืืช ืืืกืจื ืืืืืืจ, ืฉืืืจ ื ืืฆืืืช ืืืืืง ืืก' 8
02:56 - ืฆืืืช ืืืฉื ืืงื ืืช 760 ืืขืกืงืืืช ืื ืืชืจืืช ืืืืืืจ ืืืื ืืืฉื ืืช ื-Hash ืฉื Merkle ืืืืืง ืืืชืืื ืืก' 9
03:20 - ืื ืืฆืืชืื ืืืืืื ืืืืืื 1 ืืืฃ ืขืกืงืืืช ืืืกืืืื ืื
03:35 - ืืืืง ืืก' 9 ื ืืชื ืื ืฉืื ืืืืืืช ืืฆืืชืื ืืืจืื
03:41 - ืืืจืขื ืฉืืืืช ืจืฉืช
04:40 - ืชื ืืืื ืืงืฆืื ืืืืชื ื ืืืืืืช ืืืืง ืืก' 9
04:54 - ืฆืืืช ืืืฉื ืืงื ืืช 760 ืืขืกืงืืืช ืื ืืชืจืืช ืืืืืืจ ืืืื ืืืฉื ืืช ื-Hash ืฉื Merkle ืืืืืง ืืืชืืื ืืก' 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 ืฉื ืืืช
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 ืืืฃ ืขืกืงืืืช ืืืกืืืื ืื
12:17 - ืฆืืืช ืืืืฉื ืืงื 330 ืขืกืงืืืช ืืืืืืจ ืืืืคืกืื ืืืืง ืืก' 12
12:32 - ืืืืง ืืก' 12 ื ืืชื ืื ืฉืื ืืฆืืชืื ืืืจืื ืืฆืืจื ืืืืืช
12:39 - ืืืืง ืืก' 12 ืืืืืช ืื ืฉืื ืืฉืจืฉืจืช ืืฉืืจืฉ
13:44 - ืื ืืฆืืชืื ืงืืืื ืืืืข ืืฉืจืฉืจืช ืืฉืืจืฉ ืฉืืืืง ืืก' 12 ื ืืกืฃ ืืืชืืืืื ืืืืื 330 ืขืกืงืืืช
14:50 - ืื ืืฆืืชืื ืืืืืื 2 ืืืืืื ืขืกืงืืืช ืืืกืืืื ืื
ืืืื 3
ืืฉืจืช ืืจืืฉืื ืืืฉื ื, ืฆืืืช ืืืืืช ืืื ืืืืืฃ ืืฆืืืช ืืืฉื.
ืืฆื ืืชืืืชื: ืืืืง ืืืจืื #84; 0 ืขืกืงืืืช ืืืกืืืื ืื ื ืฉืืจื ืืืกื ืื ืชืื ืื
00:00 - ืืืฉืงื 3 ืกืงืจืืคืืื ืฉืืืืฆืจืื ืืฉืืืืื ืืืืืื ืขืกืงืืืช ืื ืืื
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 ืฉื ืืืช, ืกืืื ืืขืืื
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 ืฉื ืืืช, ืกืืื ืืขืืื
02:38 - ืืืืง ืืก' 85 (256) ืืืืืช ืื ืฉืื ืืฉืจืฉืจืช ืืฉืืจืฉ
03:08 - ืกืงืจืืคื ืืก' 2 ืฉื ืฉืจืช ืกืืื ืืขืืื, ืฉืฉืื ืืืืืื ืขืกืงืืืช ืชืื 1 ืฉื ืืืช
03:38 - ืื ืืฆืืชืื ืงืืืื ืืืืข ืืฉืจืฉืจืช ืืฉืืจืฉ ืฉืืกืืืืช #85 (f21), #86(65e), #87(256) ื ืืกืคื ืืืืื ืืืืื ืขืกืงืืืช 330k, 250k, 111855
03:49 - ืืืืืจ ืกืืืงื ื-330k, 250k, 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) ื ืืกืคื ืืืชืืืืื ืืืืื ืขืกืงืืืช ืฉื 670k, 750k
06:50 - ืขืงื ืืฉื ืืชืงืฉืืจืช, ืืืืง ืืก' 85 (50a) ืื ืืืืช
06:55 โ ืฆืืืช ืฉืื ืืก' 2 ืืงื 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 ืืื-ืืืื.
5. ืขืืืื ืืืฆื ืืื ืืืื ืื ืชืงืช ืืช ืืงืฉืจ ืืื ืฆืืชืื ืืืฉืจ ืืชืจืืฉืื ืืืฉืืืื ืืจืืืื (ืืืืืื, ืื ืืืช ืขืฅ ืืจืงื ืืืืฉืื ื-hash ืฉืื).
ืืื ืืชืืืืื ื ืขื ืื ืื?
ืืืจืกื ืืจืืฉืื ื ืฉื ืฆืืืช Plasma Cash ืืืืชื ืืขืื ืงืืืืื ื ืฉืืืืื ืืขืฉืืช ืืื ืื ืืื ืืช: ืืงืื ืขืกืงืืืช, ืืืืืฉ ืืืืืช ืืืืงืื ืืืกืคืง API ืืืืฉื ืื ืชืื ืื. ืืืืืื ืฉ-NodeJS ืืื ืืงืืจื ืขื ืืื ืืืื, ืคืื ืงืฆืืืช ืืืืฉืื ืืืืื ืฉื ืขืฅ Merkle ืืกืื ืืช ืคืื ืงืฆืืืช ืืืกืคืช ืืขืกืงื. ืจืืื ื ืฉืชื ืืคืฉืจืืืืช ืืคืชืจืื ืืขืื ืื:
1. ืืคืขื ืืกืคืจ ืชืืืืื NodeJS, ืฉืื ืืื ืืื ืืืฆืข ืคืื ืงืฆืืืช ืกืคืฆืืคืืืช.
2. ืืฉืชืืฉ ื-worker_threads ืืืขืืจ ืืช ืืืืฆืืข ืฉื ืืืง ืืืงืื ืืฉืจืฉืืจืื.
ืืชืืฆืื ืืื, ืืฉืชืืฉื ื ืืฉืชื ืืืคืฉืจืืืืช ืื-ืืื ืืช: ืืืืคื ืืืืื ื ืืืืงื ื ืฆืืืช ืืื ื-3 ืืืงืื ืฉืืืืืื ืืขืืื ืื ืคืจื, ืื ืืืืชื ืืืื ืืืืคื ืกืื ืืจืื ื
1. ืฆืืืช ืืืฉื, ืฉืืงืื ืขืกืงืืืช ืืชืื ืืืืืจ ืืืืฆืจ ืืืืงืื.
2. ืฆืืืช ืืืืืช ืฉืืืืง ืืช ืชืงืคืืช ืืฆืืชืื.
3. ืฆืืืช API - ืืกืคืง API ืืืืฉื ืื ืชืื ืื.
ืืืงืจื ืื, ื ืืชื ืืืชืืืจ ืืื ืฆืืืช ืืืืฆืขืืช ืฉืงืข ืืื ืืงืก ืืืืฆืขืืช cli.
ืืขืืจื ื ืคืขืืืืช ืืืืืช, ืืื ืืืฉืื ืขืฅ ืืจืงื, ืืฉืจืฉืืจ ื ืคืจื.
ืืคืืื, ืืฉืื ื ืคืขืืื ืชืงืื ื ืฉื ืื ืคืื ืงืฆืืืช Plasma Cash ืื ืืื ืืช ืืืื ืชืงืืืช.
ืืืืจ ืฉืืืขืจืืช ืคืขืื, ืืชืืื ื ืืืืืง ืืช ืืืืืจืืช ืืืฆืขืจื ื ืงืืืื ื ืชืืฆืืืช ืื ืืฉืืืขืืช ืจืฆืื: 5 ืขืกืงืืืช ืืฉื ืืื ืืขื 000 ืขืกืงืืืช ืืืืืง. ืืืืชื ืฆืจืื ืืืืื ืื ืืืืฉื ืืฆืืจื ืื ื ืืื ื.
ืืืืชืืืื, ืืชืืื ื ืืืืืง ืืช ืื ืื ืื ืืชืงืฉืืจืช ืขื Plasma Cash ืืื ืืืืืช ืืช ืืืืืช ืืฉืื ืฉื ืืืขืจืืช. ืืชืื ื ืงืืื ืฉืฆืืืช Plasma Cash ืืกืคืง ืืืฉืง ืฉืงืข ืืื ืืงืก. ืืชืืืื ืื ืืื ืืืืกืก ืืงืกื. ืืืืืืงืื json ื ืฉืืื ืืืืฆืขืืช `JSON.parse()` ื-`JSON.stringify()`.
```json
{
"action": "sendTransaction",
"payload":{
"prevHash": "0x8a88cc4217745fd0b4eb161f6923235da10593be66b841d47da86b9cd95d93e0",
"prevBlock": 41,
"tokenId": "57570139642005649136210751546585740989890521125187435281313126554130572876445",
"newOwner": "0x200eabe5b26e547446ae5821622892291632d4f4",
"type": "pay",
"data": "",
"signature": "0xd1107d0c6df15e01e168e631a386363c72206cb75b233f8f3cf883134854967e1cd9b3306cc5c0ce58f0a7397ae9b2487501b56695fe3a3c90ec0f61c7ea4a721c"
}
}
```
ืืืื ื ืืช ืืืืจืืช ืืืขืืจื ืฉื ืขืฆืืื ืืืื ืืืฆืื ื ~ 130k ืืฉื ืืื. ื ืืกืื ื ืืืืืืฃ ืืช ืืคืื ืงืฆืืืช ืืกืื ืืจืืืืช ืืขืืืื ืขื json, ืื ืืืืฆืืขืื ืื ืืฉืชืคืจื. ืื ืืข ื-V8 ืืืื ืืืืืช ืืืชืื ืืืื ืืคืขืืืืช ืืื.
ืขืืื ื ืขื ืขืกืงืืืช, ืืกืืืื ืื ืืืกืืืืช ืืจื ืฉืืขืืจืื. ืืขืช ืืฆืืจืช ืฉืืขืืจืื ืืืื, ืืืืฆืืขืื ืืจืื ืคื 2, ืื ืฉืืขืื ืขื ืื ืฉ-OOP ืื ืืชืืื ืื ื. ืืืืชื ืฆืจืื ืืฉืืชื ืืื ืืืืฉื ืคืื ืงืฆืืื ืืืช ืืจืืื.
ืจืืฉืื ืืืกื ืื ืชืื ืื
ืืชืืืื, Redis ื ืืืจื ืืืืกืื ื ืชืื ืื ืืืื ืืคืชืจืื ืืช ืืคืจืืืืงืืืืืื ืืืืชืจ ืฉืขืื ื ืขื ืืืจืืฉืืช ืฉืื ื: ืืืกืื ืืคืชื-ืขืจื, ืขืืืื ืขื ืืืืืืช ืืืืื, ืกืืื. ืืฉืงื ื Redis-benchmark ืืงืืืื ื ~80 ืคืขืืืืช ืืฉื ืืื ืืืฆื ืฆื ืจืช 1.
ืืืืฆืืขืื ืืืืืื, ืืืืื ื ืืช Redis ืืฆืืจื ืขืืื ื ืืืชืจ:
- ื ืืฆืจ ืืืืืจ ืืฉืงืข ืืื ืืงืก.
- ืืฉืืชื ื ืืช ืฉืืืจืช ืืืฆื ืืืืกืง (ืืฆืืจื ืืืื ืืช, ื ืืชื ืืืืืืจ ืจืคืืืงื ืืืฉืืืจ ืืืืกืง ื-Redis ื ืคืจื).
ื-Redis, ืืืืจ ืืื ืืืืช ืืืืื ืืืืืื ืฉืื ื ืฆืจืืืื ืืืืืช ืืกืืืืื ืืืืืจ ืืช ืื ืืขืกืงืืืช ืืฉืืืืชื ืืืช ืืืืืืง ืขืกืงืืืช ืืืช ืืืช. ื ืืกืื ื ืืืฉืชืืฉ ืืจืฉืืื ืจืืืื, ืื ืืื ืืืืืช ืืืชืจ ืืขืช ืคืจืืงืช ืืจืฉืืื ืืืื.
ืืขืช ืฉืืืืฉ ื-NodeJS ืกืื ืืจืื, ืกืคืจืืืช Redis ืืฉืืื ืืืฆืืขืื ืฉื 18 ืขืกืงืืืช ืืฉื ืืื. ืืืืืจืืช ืืจืื ืคื 9.
ืืืืืื ืฉืืืื ืืจืื ืื ื ืฉืืืคืฉืจืืืืช ืืื ืืืืืืช ืืืืจืืจ ืคื 5, ืืชืืื ื ืืืฆืข ืืืคืืืืืืฆืื. ืฉืื ืื ื ืืช ืืกืคืจืืื ื- ioredis ืืงืืืื ื ืืืฆืืขืื ืฉื 25k ืืฉื ืืื. ืืืกืคื ื ืขืกืงืืืช ืืืช ืืืช ืืืืฆืขืืช ืืคืงืืื `hset`. ืื ืืฆืจื ื ืืจืื ืฉืืืืชืืช ืืจืืืก. ืขืื ืืจืขืืื ืืฉืื ืขืกืงืืืช ืืืฆืืืช ืืืฉืืื ืืืชื ืืคืงืืื ืืืช `hmset`. ืืชืืฆืื ืืื 32k ืืฉื ืืื.
ืืืื ืกืืืืช, ืืืชื ื ืชืืจ ืืืื, ืื ื ืขืืืืื ืขื ื ืชืื ืื ืืืืฆืขืืช `Buffer` ืืืคื ืฉืืกืชืืจ, ืื ืชืืืจ ืืืชื ืืืงืกื (`buffer.toString('hex')`) ืืคื ื ืืืชืืื, ืชืืื ืืงืื ืขืื ืืืฆืืขืื. ืืคืืื, ืืืืืจืืช ืืืืืื ื-35k ืืฉื ืืื. ื ืืื ืืขืืฉืื, ืืืืื ื ืืืฉืขืืช ืืืคืืืืืืฆืื ื ืืกืคืช.
ืืืื ื ืฆืจืืืื ืืขืืืจ ืืคืจืืืืงืื ืืื ืืจื ืื:
1. ืืืขืจืืช ืืจืื ืืืฉืืช ืืืืื, ืืชืืืืช ืืื', ืืืฉื ืื ืืื ืืงืืงื ืื ืชืื ืื ื-`Buffer.
2. ืืืฉืจ ื ืฉืืืื ืืื ืฉืืจืืชืื, ื ืชืื ืื ืืื ืืจืืื ืฉืืงืืื ืคืืืช ืืืงืกื. ืืืืืื, ืืืฉืจ ืฉืืืืื ืืืืง ืขื ืืืืืื ืขืกืงืืืช, ืื ืชืื ืื ืืืงืกื ืืืืืื ืืชืคืืก ืืืชืจ ื-1 ืืื-ืืืื.
3. ืฉืื ืื ืืชืืื ืฉื ื ืชืื ืื ืืฉืคืืข ืขื ืืืืฆืืขืื.
ืืื, ืืงืื ื ืืืกืืก ืืช ืืคืจืืืืงืื ืืืื ืืจื ืฉืื ื ืืืืกืื ืืืขืืจืช ื ืชืื ืื, ืฉืคืืชื ืขื ืืกืืก ืกืคืจืืืช `ืืื ืืจื-ื ืชืื ืื` ืื ืคืืื.
ืืชืืฆืื ืืื, ืงืืืื ื ืืช ืืื ื ืื ืชืื ืื ืืืืื:
-ืขึดืกืงึธื
```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,
}
```
- ืืกืืืื
```json
{
id: BD.types.string(null),
owner: BD.types.buffer(20),
block: BD.types.uint24le,
amount: BD.types.string(null),
}
```
-ืึทืืกืึนื
```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 ืืืืฆืขืืช ืฉืงืข ืืื ืืงืก
```json
{
type: BD.types.uint8,
messageId: BD.types.uint24le,
error: BD.types.uint8,
length: BD.types.uint24le,
payload: BD.types.buffer(({node}) => node.length)
}
```
ืฉื:
- 'ืกืื' - ืืคืขืืื ืฉืืฉ ืืืฆืข, ืืืฉื, 1 - sendTransaction, 2 - getTransaction;
- `ืืืขื` - ื ืชืื ืื ืฉืืฉ ืืืขืืืจ ืืคืื ืงืฆืื ืืืชืืืื;
- 'ืืืื ืืืืขื' - ืืืื ืืืืขื ืืื ืฉื ืืชื ืืืื ืืืืืช ืืช ืืชืืืื.
- ืคืจืืืืงืื ืืืื ืืจืืงืฆืื ืืื ืฆืืชืื
```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)
}
```
ืฉื:
- `ืงืื` โ ืงืื ืืืืขื, ืืืฉื 6 โ PREPARE_NEW_BLOCK, 7 โ BLOCK_VALID, 8 โ BLOCK_COMMIT;
- `versionProtocol` - ืืจืกืช ืคืจืืืืงืื, ืืืืืื ืฉื ืืชื ืืืขืืืช ืฆืืชืื ืขื ืืจืกืืืช ืฉืื ืืช ืืจืฉืช ืืื ืืืืืื ืืขืืื ืืืจืช;
- `seq` - ืืืื ืืืืขื;
- `countChunk` ะธ `chunkNumber` ืืืจืื ืืคืืฆืื ืืืืขืืช ืืืืืืช;
- 'ืืืจื' ะธ `ืืืขื` ืืืจื ืืื ืชืื ืื ืขืฆืื.
ืืืืืื ืฉืืงืืื ื ืืจืืฉ ืืช ืื ืชืื ืื, ืืืขืจืืช ืืกืืคืืช ืืืืจื ืืจืื ืืืชืจ ืืกืคืจืืืช `rlp` ืฉื Ethereum. ืืฆืขืจื ื, ืขืืืื ืื ืืฆืืื ื ืืกืจื ืื, ืฉืื ืืฉ ืฆืืจื ืืกืืื ืืช ืืืืื ืืืื, ืฉืื ื ืืชืื ื ืื ืืขืฉืืช ืืขืชืื.
ืื ืืฆืืื ื ืืืืืข ืืืืืจืืช 35 000 ืขืกืงืืืช ืืฉื ืืื, ืขืืื ื ืื ืืขืื ืืืชื ืืืื ืืืืคืืืืื. ืืืืืื ืฉืืื ืืฆืืจืช ืืืืืง ืืืฉืืขืจ ืืืงื 30 ืฉื ืืืช, ืขืืื ื ืืืืื ืืืืืง 1 000 000 ืขืกืงืืืช, ืืืืืจ ืืฉืืื ืืืชืจ 100 MB ืฉื ื ืชืื ืื.
ืืชืืืื, ืืฉืชืืฉื ื ืืกืคืจืืืช `ethereumjs-devp2p` ืืื ืืชืงืฉืจ ืืื ืฆืืชืื, ืื ืืื ืื ืืืื ืืืชืืืื ืขื ืื ืื ืืจืื ื ืชืื ืื. ืืชืืฆืื ืืื, ืืฉืชืืฉื ื ืืกืคืจืืืช `ws` ืืืืืจื ื ืฉืืืืช ื ืชืื ืื ืืื ืืจืืื ืืจื websocket. ืืืืื ืฉื ืชืงืื ื ืืืขืืืช ืื ืืฉืืืืช ืืืืืืช ื ืชืื ืื ืืืืืืช, ืืื ืืืืงื ื ืืืชื ืื ืชืืื ืืืขืช ืืืขืืืช ืืืื ื ืขืืื.
ืื ืืฆืืจืช ืขืฅ ืืจืงื ืืืืฉืื ืืืฉืืฉ 1 000 000 ืขืกืงืืืช ืืืจืฉืืช ืืขืจื 10 ืฉื ืืืช ืฉื ืืืฉืื ืจืฆืืฃ. ืืืืื ืืืื ืืื, ืืงืฉืจ ืขื ืื ืืฆืืชืื ืืฆืืื ืืืืฉืืจ. ืืืืื ืืืขืืืจ ืืช ืืืืฉืื ืืื ืืฉืจืฉืืจ ื ืคืจื.
ืืกืงื ืืช:
ืืืขืฉื, ืืืืฆืืื ืฉืื ื ืืื ื ืืืฉืื, ืื ืืฉืื ืื ืืืืืื ืจืืื ืฉืืืืื ืืืชื ืืขืช ืืคืืชืื.
- ืฉืืืืฉ ืืชืื ืืช ืคืื ืงืฆืืื ืื ืืืงืื ืชืื ืืช ืืื ืื ืขืฆืืื ืืฉืคืจ ืืช ืืคืจืืืืงืืืืืืช.
- ืืืื ืืืื ืืจืืข ืืืชืจ ืืืจืืืืงืืืจืช ืฉืืจืืช ืขืืืจ ืืขืจืืช NodeJS ืคืจืืืืงืืืืืช.
- ืฉืืืืฉ ื-worker_threads ืืืืฉืื ืืื ืืฉืคืจ ืืช ืืืขื ืืช ืืืขืจืืช, ืืืืืื ืืืฉืจ ืขืืกืงืื ืืคืขืืืืช I/O.
- ืฉืงืข ืืื ืืงืก ืืฆืื ืืืืืจ ืืืชืจ ืืืงืฉืืช http.
- ืื ืืชื ืฆืจืื ืืืขืืืจ ื ืชืื ืื ืืืืืื ืืืืืจืืช ืืจื ืืจืฉืช, ืขืืืฃ ืืืฉืชืืฉ ื-websockets ืืืฉืืื ื ืชืื ืื ืืื ืืจืืื, ืืืืืงืื ืื ืชืืื, ืืืชื ื ืืชื ืืืขืืืจ ืื ืื ืื ืืืืขืื, ืืื ืืฉืื ืืืชื ืืืืืขื ืืืช.
ืื ื ืืืืื ืื ืืชืื ืืืงืจ GitHub ืคึผืจืึนืึถืงื:
ืืืืืจ ื ืืชื ืืฉืืชืืฃ ืืืืกื ืืจ ื ืฉืืืื, ืืคืชื ืืืืจ
ืืงืืจ: www.habr.com