á ááľ áĽá á¨á°áá áá á áááľ áááťáťá áá á¨áᣠáá ፠á´áááá ááᢠáĽááá°á áá°áśá˝á áĽá áááśá˝á áá° á˛ááłá áŚáł áŤáľá°áááá, á¨áááááľ ááĽááśá˝á ááĽááľ áĽá á áľá°áááááľ áŤá¨áááŁá, ááá¸áá ááááłá, áĽá áĽáá˛áá áŤáá°áá¨á á ááłá¨ áá¨áŚá˝ ááľáĽ áááá áŽááľáŤáśá˝á á áá áá áááá DAPP áá°áá áŞáŤáá˝á áĽáá˛ááĽáŠ áŤáľá˝áááłá.
á¨áĽáááźáá áĽá áĽá áá˝á áĽá á¨á°ááŤáŠ á á°ááŁá áá á¨áááľ ááľáĽ á ááľááŁáľ áá á°áľá á°áŞ á´áááá áá° áĽáŤááłááą á˘ááąáľáľáŞ áá áááŁáą á¨ááŤáľááá áááľá áá˝ááᢠá˝áአáááá áŤáá°áá¨á blockchains scalability áĽáĽá¨áľ áá. Ethereum á á°á¨ááľ áá° 20 á¨áá°ááą ááĽááśá˝á áŤáŤááłáᣠáá á á¨ááŹáá á°áááá áááśá˝ ááááľ áááááľ á á á áá°ááᢠá á°ááłáłá áá á¨áĽáááźáá á´ááááá á¨áá áá áŠáŁááŤáá˝ á¨á áá áĽá á¨á ááłá¨ áá¨áĽ áĽáá˝áśá˝ á¨áá°á áĽá á áľáááŤá°áááľ á¤á˛áŹáá ááá°á á¸á áááá˘
á áĽáááźáá ááľáĽ áŤáá°áá¨á áŁá°á
áááľ áĽá ááľáááľá ááá¨ááἠáŁá áá
á ᨠScalability Trilemma áŁá¨áááľ áĄáľáá áááłáľá˘
á áááá áĽáŹ áááἠááľáĽ ááá áá°áśá˝
1. á°á ááá áá° áááá áĽáŹ áááἠááľáá°áŤ ááľááŁáľ á¨áááááá á¨á˘á˛á¤á˝ áá á á ááľá°ááá á¨áľáááľ áŽááľáŤáąá á°ááŁá 'á°ááá' ááááᢠá¨áľáááľ áŽááľáŤáą á°ááŁá áśá¨á áááĽáŤá áĽá áľá áĽáą ááľá°áľ áááĽáŤáá˘
2. ááľáááľ áŽááľáŤáľ ááá áśá˝ á¨á°áááᥠá¨áááá áĽáŹ áááἠááśá˝ á°ááá áááἠáľáááá á ááľá°áľ ááá áá áĽá á áááłá áá ááľáá°áŤ áľáááá á ááĽááľ áá¨ááŤáá˘
3. á á¨áááᣠáአá¨áááá áĽáŹ áááἠááśá˝ áááá ááĽááśá˝ á¨ááá áááłá (áĽáľá¨ 1 áááŽá) ááľá°á á¨ááą á ááľ áĽáá ááá°ááłáᣠá¨ááááá áá áŤá°á áĽá á áá áá á¨áľ áá˝á˘ áá áĽááł ááá¨áá፠áá° ááá˝ á áááá˝ áááŤáᢠááľááá ááááą á¨áááá áá˝ áľáááá áááá áĽá ááĽááśáš áľááá áááá¸áá áŤá¨áááŁá (áááłá á¨ááááą ááŞá áŁáá¤áľ áááá)ᢠáĽááłáá áŤá¨ááá á áá ááľááá ááááľ á¨áľáááľ áŽááľáŤáąá `submitBlock` á°ááŁá áá áŤáᣠáá á á¨ááá ááĽáŠá áĽá Merkle hash áá° á áá á°áá°ááľ áááĽáŁáᢠáĽáἠáŽááľáŤáą á¨áĽááá á á°áłáŤ áááł áá¨ááá á¨ááŤááááľ ááľá°áľ áááĽáŤáᢠááĽááśá˝ á¨áááłá ááľáĽ ááááłá.
4. á¨ááá ááľá¨á¨á˘áŤ ááľá°áľ á¨ááá á á áááá˝ áá° áĽááłá á¨á°á¨ááŠáľá ááĽááśá˝ áá°áá á ááááŤáá˘
5. á á ááľ áá áľáŁ á¨ááľáá°áŤá áŁáá¤áľ (ááá áŁáá¤áľ áŤáááá) á¨áááá áĽáŹ áááἠáááŁáľ áááááᢠáá áá áááľá¨á á¨`startExit` á°ááŁáá áá áŤááᣠá áśá¨á áá áľááááľ 2 ááĽááśá˝ áá¨á áá° áĽáą áŤáľá°ááááᣠáá á á¨ááľáá°áŤá áŁáá¤áľ áááá áŤá¨áááŁáᢠáľáááľ áŽááľáŤáą á¨áááá áá˝á á áá áá á áĽááŽá˝ ááľáĽ áŤá ááĽááśá˝ áááŤá¸áá áŤá¨áááŁá áĽá á¨ááľááá ááľáá°áŤáá áááŤá áá á á áááľ áłáááłáľ ááľáĽ áá¨á°áłáá˘
6. á¨ááľáá°áŤ ááľááŁáľ áááá á¨á°áá¸á áĽá°áśá˝ áá á¨á°á¨á°áą (ááááą á¨ááľáááá áá°áľ á¨á°ááᨠá áá ááá ááľáá°áŤá á¨áááŁáą á ááľ á¨áá á°á áá á) á¨ááľáá°áŤá áŁáá¤áľ á áááľ áłáááłáľ ááľáĽ ááľááŁáľá ááľá ááľá¨á áá˝ááá˘
áááááľ á¨áááá á áááľ ááááśá˝ ááá˘
1. á¨áľá á°áá°ááą á áá á°áá°ááľ ááľáĽ áľáááá አáĽá áľááá°ááá ááĽááśá˝ ááá á¨ááŤááá ááá á¨ááᢠETHá á¨áááá áĽáŹ áááἠáá áĽááłáľááá áĽá áĽááłáᣠá¨áááá˝ áá¨á ááá ááá˘
2. á¨áá á°áá°ááľ zk-SNARKs á áá áá áľá-á áᣠááĽááśá˝á ááá áłáá˘
á¨á´áááá ááá
- NodeJS
- Redis
- á˘á´áŞá¨á
- á áá
áá¨áŤ
á¨áááá áĽáŹ áááἠá áááááľ áá áłáá á¨áľáááąá ááĽááľ ááľáá á¨áá¨á°ááľá áá¤áśá˝ á ááá°ááá˘
- á á°á¨ááľ áĽáľá¨ 35 á¨áá°ááą ááĽááśá˝ áá° áááłá ááłá¨áá;
- á áĽáá ááľáĽ áĽáľá¨ 1 á¨áá°ááą ááĽááśá˝ áááᥠáá˝ááá˘
á áá¨á°ááľ 3 á ááááŽá˝ áá áá¨áŤáá˝ á°áŤáá°ááá˘
1. Intel Core i7-6700 Quad-Core Skylake á¨ááŽ. NVMe SSD - 512 ááŁáŁ 64 áᣠDDR4 áŤá
3 á¨ááŤá¨ááᥠá¨áááá áááἠááśá˝ á°ááľá°ááá˘
2. AMD Ryzen 7 1700X Octa-Core "Summit Ridge" (áá)ᣠSATA SSD - 500 ááŁáŁ 64 áᣠDDR4 RAM
á¨Ropsten testnet ETH ááľ á°ááľáˇáá˘
3 á¨ááŤá¨ááᥠá¨áááá áááἠááśá˝ á°ááľá°ááá˘
3. á˘áá´á áŽá i9-9900K Octa-áŽá á¨ááŽ. NVMe SSD - 1 á´áŁáŁ 64 áᣠDDR4 áŤá
1 á¨áááá áááἠááľá¨á¨á˘áŤ ááľááá ááááľ á°ááľáˇáá˘
3 á¨ááŤá¨ááᥠá¨áááá áááἠááśá˝ á°ááľá°ááá˘
áá° áááá áŤá˝ ááľááá ááĽááśá˝á ááá¨áá áá¨áŤ á°ááá¨á˘
á á áá: 10 á¨áááá áááἠááśá˝ á áá á ááłá¨áá¨áĽ ááľáĽá˘
áá¨áŤ 1
á áĽáá á¨1 áááŽá ááĽááśá˝ áá°áĽ á áᢠáľááá , 1 áááŽá ááĽááśá˝ á 2 áĽááŽá˝ ááľáĽ áááľáá (á˛áľá°á á¨ááĽááąá á áŤá ááľáś á áááá áľ áá ááľááŁáľ áľáááŤáľá˝áá).
á¨ááááŞáŤ áááł: á¨áá¨á¨áťá áĽááł #7; 1 áááŽá ááĽááśá˝ áĽá áśá¨áá˝ á áá¨á ááą ááľáĽ á°á¨áá˝á°ááá˘
00:00 - á¨ááĽááľ áááá¨áľ áľááŞááľ ááááŞáŤ
01:37 - 1 áááŽá ááĽááśá˝ á°ááĽá¨á áá° ááľááá ááááľ ááá á°ááá¨
01:46 - ááľááá ááááľ á áľáᣠ240k ááĽááśá˝á á¨ááá áá°á° áĽá á
á˝ á ááľ ááĽá 8. á 320 á°á¨ááľ ááľáĽ 10k ááĽááśá˝ áá° áááłá á˛á¨áአáĽááŤááá˘
01:58 â áĽááł ááĽá 8 á°áááá áĽá ááá¨ááἠá°ááłáá˘
02:03 â áĽáá #8 á¨á°á¨ááá á˛áá á¨áľáááľ áŽááľáŤáą `submitBlock` á°ááŁá á áááá áá˝ áĽá á áĽáá ááĽá ááŁááá˘
02:10 â á 1 á°á¨ááľ ááľáĽ 32 áááŽá ááĽááśá˝á á¨áᨠá¨ááłáŤ áľááŞááľ áĽáŤáá á á ááá
02:33 - á áááá˝ ááĽá 8 áĽááł áá° áľáá á°áá°ááľ áá¨ááŠá áĽá 240k ááĽááśá˝á áá¨ááá á¨ááá¨áá áá¨á ááá á áááŠ
02:40 - 240áşá
ááĽááśá˝ á¨ááá áááłá á°ááá°ááᣠáĽááá
á ááľááá á áĽáá # 8 ááľáĽ áá¸áá˘
02:56 - ááľááá ááááľ á áľáᣠá¨áá¨áá 760áşá
ááĽááśá˝ á¨áááłá áá ááľáś á¨áááá áá˝ á ááľááľ áĽá áĽáá #9 ááá¨á ááá¨á˘
03:20 - ááá á áááá˝ 1 áááŽá 240k ááĽááśá˝á áĽá áśá¨áá˝á áááá
03:35 â áĽááł #9 á°áááá áĽá áááá˝ á áááá˝ áá¨áá፠á°ááłáá˘
03:41 - á¨á ááłá¨ áá¨áĽ áľá
á°áľ á°á¨áľáˇáá˘
04:40 - áĽááł #9 áá¨áá፠áá á ááá
04:54 - ááľááá ááááľ á áľáᣠá¨áá¨áá 760áşá
ááĽááśá˝ á¨áááłá áá ááľáś á¨áááá áá˝ á ááľááľ áĽá áĽáá #9 ááá¨á ááá¨á˘
05:32 â áĽááł #9 á°áááá áĽá áááá˝ á áááá˝ áá¨áá፠á°ááłáá˘
05:53 â áĽááł #9 á°á¨ááá§á áĽá áá° áľáá á°áá°ááľ á°ááłáá˘
06:17 - á áááá˝ ááĽá 9 áĽááł áá° áľáá á°áá°ááľ á°á¨áᎠ760k ááĽááśá˝á áá¨ááá áĽáá°ááᨠáá¨á ááá á áááŠ
06:47 - áááłá á á ááľ ááĽá 9 ááľáĽ áŤá ááĽááśá˝ á¸áľáˇáá˘
09:06 - ááá á áááá˝ 2 áááŽá ááĽááśá˝ áĽá áśá¨áá˝ áááá
áá¨áŤ 2
á áĽáá 350k áá°áĽ á áᢠá áá¤áąá, 3 áĽááŽá˝ á áá.
á¨ááááŞáŤ áááł: á¨áá¨á¨áťá áĽááł # 9; 2 áááŽá ááĽááśá˝ áĽá áśá¨áá˝ á áá¨á ááą ááľáĽ á°á¨áá˝á°ááá˘
00:00 - á¨ááĽááľ áááá¨áľ áľááŞááľ ááľááá á°áááŻáá˘
00:44 - 1 áááŽá ááĽááśá˝ á°ááĽá¨á áá° ááľááá ááááľ ááá á°ááá¨
00:56 - ááľááá ááááľ á áľáᣠ320k ááĽááśá˝á á¨ááá áá°á° áĽá á
á˝ á ááľ ááĽá 10. á 320 á°á¨ááľ ááľáĽ 10k ááĽááśá˝ áá° áááłá á˛á¨áአáĽááŤááá˘
01:12 â áĽááł # 10 á°áááá áĽá ááá¨áá፠áá° ááá˝ á áááá˝ á°ááłáá˘
01:18 â á 1 á°á¨ááľ ááľáĽ 34 áááŽá ááĽááśá˝á á¨áᨠá¨ááłáŤ áľááŞááľ áĽáŤáá á á ááá
01:20 - áĽááł # 10 á°á¨ááá§á áĽá áá° áľáá á°áá°ááľ áááŤá
01:51 - ááá á áááá˝ ááĽá 10 áłááá áĽá 320k ááĽááśá˝á áá°áá á á¨ááá¨á á¨áľá á°áá°ááľ áá¨á á°ááĽááá
02:01 - áááłá #320á ááááľ áá°á¨áአ10k ááĽááśá˝ á¸áľáˇá
02:15 - ááľááá ááááľ á áľá¨áἠ350k ááĽááśá˝á á¨ááá áááł áá°á° áĽá á
á˝ ááĽá 11
02:34 â áĽááł ááĽá 11 á°áááá áĽá ááá¨áá፠áá° ááá˝ á áááá˝ á°ááłáá˘
02:51 - áĽááł # 11 á°á¨ááá§á áĽá áá° áľáá á°áá°ááľ á°ááłá
02:55 - á¨áá¨á¨áťá ááľááá ááááľ á¨ááĽáĽá # 10 á¨á°á ááá ááĽááśá˝
10:59 - á¨áĽáá ááĽá 9 á¨ááľá¨á¨áĽ ááĽááľ á áľá á°áá°ááľ ááľáĽ á áŁá á¨á
á áá áá
áˇá ᣠáá á°á ááá áĽá ááá á áááá˝ áľá áĽáą áá¨á á°ááĽáá 350k ááĽááśá˝á áá¨ááá áááŠá˘
11:05 - áááłá #320á ááááľ áá°á¨áአ11k ááĽááśá˝ á¸áľáˇá
12:10 - ááá á áááá˝ 1 áááŽá 670k ááĽááśá˝ áĽá áśá¨áá˝ áááá
12:17 - ááľááá ááááľ á áľá¨áἠ330k ááĽááśá˝á á¨ááá áááł áá°á° áĽá á
á˝ ááĽá 12
12:32 â áĽááł ááĽá 12 á°áááá áĽá ááá¨áá፠áá° ááá˝ á áááá˝ á°ááłáá˘
12:39 - áĽááł # 12 á°á¨ááá§á áĽá áá° áľáá á°áá°ááľ áááŤá
13:44 - ááá á áááá˝ ááĽá 12 áłááá áĽá 330k ááĽááśá˝á áá°áá á á¨ááá¨á á¨áľá á°áá°ááľ áá¨á á°ááĽááá
14:50 - ááá á áááá˝ 2 áááŽá ááĽááśá˝ áĽá áśá¨áá˝ áááá
áá¨áŤ 3
á ááááŞáŤá áĽá á ááá°áá á ááááŽá˝ ááľáĽ á ááľ á¨ááŤá¨ááἠááľááá ááááľ á ááľá¨á¨á˘áŤ ááľááá ááááľ á°á°ááˇáá˘
á¨ááááŞáŤ áááł: á¨áá¨á¨áťá áĽááł # 84; á áá¨á ááą ááľáĽ á¨á°ááᥠ0 ááĽááśá˝ áĽá áśá¨áá˝
00:00 â áĽáŤááłááłá¸á 3 áááŽá ááĽááśá˝á á¨ááŤááአáĽá á¨ááአ1 áľááŞááśá˝ á°ááá¨ááá˘
01:38 â 1 áááŽá ááĽááśá˝ á°ááĽá¨á ááľááá ááááľ ááĽá 3 áááľááŁáľ ááá á°ááá¨
01:50 - ááľááá ááááľ ááĽá 3 á áľáᣠ330k ááĽááśá˝á á¨áááłá áá°á° áĽá á
á˝ ááĽá 85 (f21)ᢠá 350 á°á¨ááľ ááľáĽ 10k ááĽááśá˝ áá° áááłá á˛á¨áአáĽááŤááá˘
01:53 â 1 áááŽá ááĽááśá˝ á°ááĽá¨á ááľááá ááááľ ááĽá 1 áááľááŁáľ ááá á°ááá¨
01:50 - ááľááá ááááľ ááĽá 3 á áľáᣠ330k ááĽááśá˝á á¨áááłá áá°á° áĽá á
á˝ ááĽá 85 (f21)ᢠá 350 á°á¨ááľ ááľáĽ 10k ááĽááśá˝ áá° áááłá á˛á¨áአáĽááŤááá˘
02:01 â ááľááá ááááľ ááĽá 1 á áľáᣠ250k ááĽááśá˝á á¨áááłá áá°á° áĽá á
á˝ ááĽá 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) á¨áá¨ááááá áá¨á á¨áľá á°áá°ááľ á°ááĽáá 330k ᣠ250k ᣠ111855 ááĽááśá˝á áá°áá á áááŠ
03:49 - áááłá á 330k, 250k, 111855 áá° áĽááŽá˝ á¨áłá¨á ááĽááśá˝ # 85 (f21), # 86 (65e), # 87 (256) áá á¸áľáˇá.
03:59 - ááľááá ááááľ ááĽá 1 á¨áááłá 888145 ááĽááśá˝á áá°á° áĽá á
á˝ ááĽá 88 (214) ᣠááľááá ááááľ #2 á áľáᣠ750k ááĽááśá˝á á¨áááłá áá°á° áĽá á
á˝ ááĽá 88 (50a) á áᾠᣠááľááá # 3 670k ááĽááśá˝á áá°á° ᨠáááłá áĽá á
ážá˝ áĽááł ááĽá 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 áááŽá ááĽááśá˝á áĽá ááááśá˝á áááá
áĽáá ááśá˝
á áááá áĽáŹ áááἠáááľ áá áľ á¨áá¨á°ááľá á˝ááŽá˝ á ááĽáááᣠááľ á ááľ á¨ááłáá¸á áĽá áĽá¨ááłáá¸á ááá˘
1. á á°ááŤáŠ á¨áľáááľ á°ááŁáŤáľ ááľá°ááĽá ááľáĽ áááľ. áááłáᣠá áááłá áá ááĽááśá˝á á¨áá¨áá á°ááŁá áĽááŽá˝á á¨ááľá¨á¨áĽ áĽá á¨áá¨ááἠáľáŤá á ááśáłáᣠá á°ááŤáá á°áá ááĽááľ áĽáá˛áááľ á áľáááá˘
2. á¨ááἠááľá°ááá ááŞáá˝á á ááááľá áľ áá áĽá á á áŁá áĽá ááĽááśá˝á áĽáá´áľ áĽáá°ááá áá˛áŤáá ááá˝ á ááá á¨áá˘
3. á¨áá°á áá¤áľ áááááľ áá¨áá áĽáá´áľ áĽá á¨áľ áá¨áá¸áľ áĽáá°ááťá ááá˝ á ááá á¨áá˘
4. 1 áááŽá ááĽááśá˝ áŤáá á¨ááá áá á 100 áᣠáŤá á áľááááľáľ á á áááá˝ ááŤá¨á á ááłá¨ áá¨áĽá áĽáá´áľ áá°áŤááľ áĽáá°ááťá ááá á ááá á¨áá˘
5. á áá á áá áááł ááľáŤáľ á¨á á áľááśá˝ á˛á¨á°áą (áááłá á¨áááá áá ááááŁáľ áĽá áá˝áá á ááľááľ) ááŤá¨á áŤááá áááááľ áŤáááŁá.
áá á áá áĽáá´áľ áŤááá?
á¨áááá áĽáŹ áááἠááľááá ááááľ á¨ááááŞáŤá áľáŞáľ áááá ááá á á°ááłáłá áá ááľá¨á á¨áá˝á á¨ááŁáá á áááľ áá áᥠááĽááśá˝á ááá áᣠáĽááŽá˝á ááľááŁáľ áĽá áá¨ááἠáĽá áááĽá áááááľ á¤áá á áá á¨áĽá˘ NodeJS á¤á°á áá á-áá áľáááᣠá¨áŁáą á¨áááá áá áľááľ á°ááŁá á¨á°á¨á᪠ááĽááľ á°ááŁáŠá á ááśáłáᢠáá áá á˝áá ááááłáľ áááľ á ááŤáŽá˝á á áá°áá-
1. á ááŤáł ᨠNodeJS áá°áśá˝á áŤáľáááŠ, áĽáŤááłááłá¸á á¨á°áá°á á°ááŁáŤáľá áŤá¨áááá.
2. Worker_threads á°á áá áĽá á¨áŽáąá á¨á°áá°á ááá áá° ááŽá˝ á áááłá áľá˘
á áá¤áąá ᣠáááąáá á ááŤáŽá˝ á á ááľ áá á°á ááá-á á áááᎠá ááľ ááľááá ááááľ á á°ááĽá áá አá áá˝á á 3 áááá˝ á¨ááááá ᣠáá á á°ááłáłá áá á á°ááłáłá ááá˘
1. áá° áááłá ááľáĽ ááĽááśá˝á á¨ááá á áĽá áĽááŽá˝á á¨áááĽá á¨ááľá¨á¨á˘áŤ ááľááá ááááľá˘
2. á¨á áááá˝á áľááááááľ á¨ááŤá¨ááἠá¨á°á¨ááá ááľááá ááááľá˘
3. API node - áááĽá áááľá¨áľ á¤áá á áŤáááŁáá˘
á áá áááł, ááá á áá áá á áĽáŤááłááą ááľááá ááááľ á áŠáááľ áśáŹáľ á áŠá áááááľ áá˝áá.
áĽáá° áááá ááá ááľááľá á¨ááłá°á á¨áŁáľ áľáŤáá˝á áá° á°áᨠáá áá°áľáá˘
áľááá á¨áááá áĽáŹ áááἠá°ááŁáŤáľá á á ááľ áá áĽá áŤáááá ááľááśá˝ áá°á á áľáŤ á áłáá°ááá˘
áľáááą áĽáŤ áá á¨áá á áá ááĽááąá ááá°á˝ áááá áĽá á ááŤáłáá áááł, á áĽáᢠáŤááá áá¤áľ á ááá°áá-á á´áŽááľ 5 ááĽááśá˝ áĽá á á ááľ áĽááł áĽáľá¨ 000 ááĽááśá˝. á áľá á°áľ á¨á°á°áá á¨áá ááá áá á¨áĽáá˘
ááááá á¨áľáááąá á¨áá°á á á á áááá á¨áááá áĽáŹ áááἠáá á¨áááá áá´á ááá¨á áááá. á¨áááá áĽáŹ áááἠááľ á¨áŠáááľ áśáŹáľ á áááá˝ áĽáá°áá°áĽ áá°á áĽáá á˝áááᢠááááŞáŤ áá á á˝áá áá á¨á°áá á¨á° áá áᢠ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 á áľáááá áĽá ~80k áľáŤáá˝á á á°á¨ááľ á 1 á¨áááááááá áááł á ááá°ááá˘
áá¨áá°á á ááťá¸áᣠRedisá á¨á áá á á°áἠá áľá°áŤááááááĄ-
- á¨áŠáááľ áśáŹáľ áááááľ á°ááĽáŻáá˘
- áááąá áá° á˛áľá ááľáááĽá á á°ááááá (áá áľá°áááááľ, á á áááááľ áĽá á á°áᨠRedis ááľáĽ áá° á˛áľá ááľááἠáá˝áá).
á áŹá˛áľ ááľáĽ áááł á¨áá˝ á á¨á´á áá ááááŤáąá áááá ááĽááśá˝ á á ááľ áĽáŤá á°ááľáŽ áááŁáľ áĽá ááĽááśá˝á á ááľ á á ááľ áá°á¨á ááťá á ááĽáᢠáá°á á áááá ááá áá ááá¨á áá áᣠáá áááá áááá áľááááľ áááá ááá˘
áá°á á NodeJS á˛á áá á¨áŹá˛áľ á¤á°-ááááá˝ á á°á¨ááľ á¨18k ááĽááśá˝ á ááťá¸á á áłáá°ááᢠááĽááą 9 áá áááˇáá˘
áááłá¨áŞáŤá ááľáá˝ á ááá˝ 5 áĽáĽá áĽáá°áá áᥠáľááłá¨áᣠáááťá¸áľ ááááᢠá¤á° ááá ááąá áá° ioredis ááá¨á á á°á¨ááľ 25k á ááťá¸á á ááá°ááᢠá¨`hset` áľáááá á áá áá ááĽááśá˝á á ááľ á á ááľ á¨áá¨ááᢠáľááá á áŹá˛áľ ááľáĽ áĽá áá ááá˝á áĽá¨áá áá áá áᢠááłáĄ á¨á°ááłá ááĽááśá˝á áá° áŁá˝ á ááŁáá á á ááľ áľááá `hmset` áááá ááᢠáá¤áą á á°á¨ááľ 32k áá.
á¨áá á áłá˝ á áááááá¸á á áĽá ááááŤáśá˝ á¨ááἠáá á¨ááá°áŤá `Buffer`á á áá áá áá áĽá áĽáá°ááłá¨áᣠá¨áááá á ááľ áá° á˝áá (`buffer.toString('hex')`) á¨áá¨áŠáľ á°á¨á᪠ááááľ áá˝ááᢠá ááťá¸á. áľááá ááĽááą á á°á¨ááľ áá° 35k á¨á áĽááᢠá á áá áá, á°á¨á᪠áááťá¸áľá áááá ááľááá.
áá° áááľáŽá˝ ááŽáśáŽá ááá¨á áá á¨áĽá ááááŤáąááĄ-
1. áľáááą áĽá áá áá˝áᣠááááá˝áᣠááá° áŤá°ááᣠáĽá ááá á á `ááľ ááľáĽ ááἠáŤáľáááááá˘
2. á á áááááśá˝ ááŤá¨á á˛ááᣠáááľáŽá˝ ááἠá¨á˝áá áŤáá° áááááᢠáááłá, ᨠ1 áááŽá ááĽááśá˝ áá áĽáá á˛áá á á˝áá ááľáĽ áŤáá áá¨á ᨠ300 áááŁááľ á áá áááľáľ áá˝áá.
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Âť áĽááááŁáá ááἠáá° áá.
áĽáá˛áá á á áááááśá˝ ááŤá¨á áááĽá áááľá°ááá 2 áááľáŽá˝ ááŽáśáŽáá˝ á ááá˘
- á¨áááá ááľ áá á áŠáááľ áśáŹáľ á áŠá ááááŁáŁáľ ááŽáśáŽá
```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;
- 'áááľ' - áá° á°áá˘á á°ááŁá ááľá°ááá á¨ááŤáľáááá áááĽ;
- '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)
}
```
á¨áľ
- 'áŽáľ' - á¨áááĽááľ áŽáľ ᣠáááłá 6 - PREPARE_NEW_BLOCK ᣠ7 - BLOCK_VALID ᣠ8 - BLOCK_COMMIT;
- `áľáŞáľ ááŽáśáŽá' - á¨á°ááŤáŠ áľáŞáśá˝ áŤáá¸á á áááá˝ á á ááłá¨ áá¨áĄ áá áááą áľááá˝á áĽá á á°áᨠááááľ áá አáľááá˝á á¨ááŽáśáŽá áĽáŞáľ;
- 'á´á' - á¨áááĽááľ áááŤ;
- 'countChunk' и 'á¸áá ááĽá' áľááá áááááśá˝á ááá¨ááá á áľááá;
- 'ááááľ' и 'áááľ' ááááľ áĽá ááᥠáŤáą.
áááĄá á áľááľáá áľáá°á¨áĽáá á¨áá¨á¨áťá áľáááľ á¨Ethereum `rlp` á¤á°-áá˝áááľ á áŁá ááŁá ááᢠáĽáá° á áááłá°á áá ááá°ááą ááá°áŤá áŤááľááá áĽáἠáá áá ááá á áľááá áľááá áĽáľáŤáá áĽáᢠáááľ á ááťáááá˘
ááĽááľ áá ááľá¨áľ á¨áťáá 35 000 á á´áŽááľ ááĽááśá˝áŁ áĽáá á á°ááťá¸ áá ááľáĽ áĽááąá ááľáŹáľ á ááĽáᢠáááłáá á¨ááá ááľá¨áł áá 30 á°á¨ááľ áľááááľáľ á áĽáá ááľáĽ ááŤá°áľ á ááĽá 1 000 000 ááĽááśá˝, áá á áááľ á°á¨á᪠ááá áááľ áá 100 áᣠáááĽá˘
ááááŞáŤ áá `ehereumjs-devp2p` áááĽá¨áŞáá á°á á áá á ááśá˝ ááŤá¨á áááááá áá áᣠááá áá áá á áŤá á ááἠááľá°áááľ á ááťááᢠá áá ááááŤáľ á¨âšwsâş á¤á°-áá˝áááľá á°á á áá áááľáŽá˝ áłáł á ááĽáśáŹáľ áááá á ááááᢠáĽááἠáá, áľááá á¨ááἠááŹáśá˝á áľáááá á˝ááŽá˝ á ááĽáááá, ááá áá áá° áááááŽá˝ á¨áááá áĽá á áá áĽááá á˝ááŽá˝ á áá°áá.
áĽáá˛áá á¨áááá áá á ááá á áĽá áá˝áá á ááľááľ áá 1 000 000 ááĽááśá˝ áľá áá ááá 10 ááŁáááľ áŤáá áľááľ á°á¨ááśá˝. á áá áá á¨ááá á áááá˝ áá áŤáá áááááľ ááá¨áĽá áááŁá áŤá. áá áá áľááľ áá° á¨á°áᨠáá áááááłááľ á°ááľáá.
áá°áá°ááŤ-
áĽáá° áĽáááą á¨áá, áááśáťá˝á á á˛áľ á áá°áá, ááá áá á áá ááááŤáľ áĽá áŁáááŤáá˝ á áá°á áá áĽáŤá áľá áĽáááą áá¨áłá.
- á ááá á°áŽá ááŽááŤááá áááł á°ááŁáŤá ááŽááŤááá áá áá áááłáááľá áŤáťá˝ááá˘
- ááááľ ááááłá NodeJS áľáááľ á¨á áááááľ á ááá´áá¸á á¨á¨á ááá˘
- áá¨áŁáľ áľááľ `á¨á°áŤá°á_ááŽá˝'á áá áá á¨áľáááľ ááá˝ á°áŞááľá áŤáťá˝áááŁá á°áá á¨i/o áľáŤáá˝ áá á˛áááá˘
- áŠáááľ áśáŹáľ ᨠhttp áĽáŤááá˝ á¨á áá á¨á°á¨áá áĽá ááŁá ááá˘
- á ááľááአáá áľáá áá¨áá á ááĽááľ ááľá°ááá áŤáľáááááľ ááĽáśáŹáśá˝á áá áá áĽá áááľáŽá˝ áá¨ááá˝á ááá ááťáá áŁá áááááŽá˝ á¨á°á¨ááá ᣠáĽááą áŤáá°á¨áą áá°ááá áá˝áá ᣠáĽá á¨á፠áá° á ááľ áááĽááľ ááŁááŤáá˘
áĽááľáľáá á áĽáááĽááááᢠá¨ááá ááŽáááľ
á˝áá á á፠á¨á°áťáá á á áááłáá°á ááşáŤáᣠá¨áá°á ááá˘
ááá: hab.com