Whakamātautau Tūmatanui: He Rongoā mo te Tūmataitinga me te Whakanuia i runga i te Ethereum

Poraka Poraka he hangarau auaha e oati ana ki te whakapai ake i nga wahanga maha o te oranga o te tangata. Ka whakawhitihia e ia nga tukanga me nga hua pono ki te waahi mamati, ka whakarite i te tere me te pono o nga whakawhitinga putea, te whakaiti i to raatau utu, ka taea hoki e koe te hanga i nga tono DAPP hou ma te whakamahi i nga kirimana atamai i roto i nga whatunga whakaheke.

I runga i te maha o nga painga me nga tono kanorau o poraka, he mea miharo pea kaore ano tenei hangarau whai mana i uru ki nga umanga katoa. Ko te raru ko te kore e taea te whakahiatotanga o nga poraka aukati hou. Ko nga mahi a Ethereum mo te 20 nga whakawhitinga mo te rua, kaore i te nui ki te whakatutuki i nga hiahia o nga pakihi hihiri o tenei ra. I te wa ano, ko nga kamupene e whakamahi ana i te hangarau poraka kei te ruarua ki te whakarere i a Ethereum na te nui o te tiaki i te hacking me te rahunga whatunga.

Hei whakarite i te whakamaaramatanga, te haumaru me te tauine i roto i te poraka, na reira ka whakatau i te Scalability Trilemma, te roopu whanaketanga. Te whai waahi hanga Plasma Cash, he mekameka apiti kei roto i te kirimana atamai me te whatunga tūmataiti i runga i Node.js, e whakawhiti ana i ia wa ki te mekameka pakiaka (Ethereum).

Whakamātautau Tūmatanui: He Rongoā mo te Tūmataitinga me te Whakanuia i runga i te Ethereum

Nga tukanga matua i roto i te Plasma Cash

1. Ka karangahia e te kaiwhakamahi te mahi kirimana atamai 'putunga', ka tukuna ki roto te nui o te ETH e hiahia ana ia ki te tuku ki te tohu Plasma Cash. Ko te mahi kirimana atamai ka hangaia he tohu me te whakaputa i tetahi huihuinga mo taua mea.

2. Ko nga putea Plasma Cash kua ohauru ki nga huihuinga kirimana atamai ka whiwhi i tetahi huihuinga mo te hanga putea me te taapiri i tetahi tauwhitinga mo te hanga tohu ki te puna.

3. I ia wa, ka tangohia e nga putea Plasma Cash motuhake nga whakawhitiwhitinga katoa mai i te puna (tae atu ki te 1 miriona) ka hanga he poraka mai i a raatau, tatauhia te rakau Merkle me, na reira, te hash. Ka tukuna tenei paraka ki etahi atu pona hei manatoko. Ka tirohia e nga pona mehemea kei te whaimana te Hash Merkle me te tika o nga whakawhitinga (hei tauira, ko te kaituku o te tohu te rangatira). Whai muri i te manatoko i te poraka, ka karangahia e te node te mahi `submitBlock` o te kirimana atamai, e tiaki ana i te nama poraka me te Hash Merkle ki te mekameka tapa. Ko te kirimana atamai ka whakaputa i tetahi huihuinga e tohu ana i te taapiri angitu o tetahi poraka. Ka tangohia nga whakawhitinga mai i te puna.

4. Ko nga pona ka whiwhi i te takahanga tuku poraka ka timata ki te whakamahi i nga tauwhitinga kua taapiri atu ki te poraka.

5. I tetahi wa, ka hiahia te rangatira (kaore ranei) o te tohu ki te tango mai i te Plasma Cash. Ki te mahi i tenei, ka karangahia e ia te mahi `startExit`, ka tukuna ki roto nga korero mo nga whakawhitinga whakamutunga 2 i runga i te tohu, e whakau ana ko ia te rangatira o te tohu. Ko te kirimana atamai, ma te whakamahi i te Merkle hash, ka tirotiro i te aroaro o nga whakawhitinga i roto i nga poraka me te tuku i te tohu mo te tangohanga, ka puta i roto i nga wiki e rua.

6. Mena i takahia te mahi tango tohu (i pau te tohu i muri i te tiimata o te tangohanga, na tetahi atu ranei te tohu i mua i te tangohanga), ka taea e te rangatira o te tohu te whakakore i te tangohanga i roto i nga wiki e rua.

Whakamātautau Tūmatanui: He Rongoā mo te Tūmataitinga me te Whakanuia i runga i te Ethereum

E rua nga huarahi ka whakatutukihia te matatapu

1. Ko te mekameka pakiaka kaore he mohio mo nga whakawhitinga ka mahia, ka tukuna atu ki roto i te mekameka tamaiti. Ko nga korero mo te hunga i tuku me te tango i te ETH mai i te Plasma Cash ka noho whanui tonu.

2. Ka taea e te mekameka tamaiti nga whakawhitinga kore ingoa ma te whakamahi i nga zk-SNARKs.

Tāpae hangarau

  • NodeJS
  • Redis
  • etherium
  • He oneone

Te whakamātautau

I a matou e whakawhanake ana i te Plasma Cash, i whakamatauria e matou te tere o te punaha ka whiwhi i nga hua e whai ake nei:

  • ki te 35 nga whakawhitinga mo ia hekona ka taapirihia ki te puna;
  • tae atu ki te 1 ka taea te penapena i roto i te poraka.

I whakahaerehia nga whakamatautau ki nga kaitoro e 3 e whai ake nei:

1. Intel Core i7-6700 Quad-Core Skylake incl. NVMe SSD – 512 GB, 64 GB DDR4 RAM
E 3 nga pona ukauka Plasma whakamana i whakaarahia.

2. AMD Ryzen 7 1700X Octa-Core "Summit Ridge" (Zen), SATA SSD - 500 GB, 64 GB DDR4 RAM
I whakaarahia te Ropsten testnet ETH node.
E 3 nga pona Moni Moni e whakamana ana i whakaarahia.

3. Intel Core i9-9900K Octa-Core incl. NVMe SSD – 1 TB, 64 GB DDR4 RAM
1 Kua hiki te node tukunga Moni Plasma.
E 3 nga pona Moni Moni e whakamana ana i whakaarahia.
I whakarewahia he whakamatautau ki te taapiri i nga whakawhitinga ki te whatunga Plasma Cash.

Te tapeke: 10 Plasma Cash nodes i roto i te whatunga tūmataiti.

Whakamātautau 1

He 1 miriona nga whakawhitinga mo ia poraka. Na reira, 1 miriona nga whakawhitinga ka taka ki roto i nga poraka 2 (mai i te mea e whakahaere ana te punaha ki te tango i tetahi waahanga o nga whakawhitinga me te tuku i te wa e tukuna ana).


Te ahua tuatahi: poraka whakamutunga #7; 1 miriona nga whakawhitinga me nga tohu kei te rongoa i roto i te papaarangi.

00:00 — te tiimata o te tuhinga whakaputa tauwhitinga
01:37 - 1 miriona tauwhitinga i hangaia ka timata te tuku ki te node
01:46 — 240k nga whakawhitinga mai i te puna kaukau me te puka poraka #8. Ka kite ano matou he 320k nga whakawhitinga ka taapirihia ki te puna wai i roto i te 10 hēkona
01:58 — ka hainatia te poraka #8 ka tukuna kia whakamanahia
02:03 — poraka #8 ka whakamanahia, ka karangahia te mahi `submitBlock` o te kirimana atamai me te tohu Merkle me te tau paraka
02:10 — ka mutu te mahi o te tuhinga whakaatu, i tukuna 1 miriona tauwhitinga i roto i te 32 hēkona
02:33 - i timata nga pona ki te whiwhi korero i tapirihia te poraka #8 ki te mekameka pakiaka, ka timata ki te mahi 240k whakawhitinga.
02:40 - 240k nga whakawhitinga i tangohia mai i te poka wai, kei te poraka #8
02:56 — ka tangohia e te node tuku nga toenga 760k whakawhitinga mai i te puna kaukau ka timata ki te tatau i te Hash Merkle me te haina poraka #9
03:20 - 1 miriona 240k nga whakawhitinga me nga tohu tohu kei roto i nga pona katoa
03:35 — ka hainatia te poraka #9 ka tukuna kia whakamanahia ki etahi atu pona
03:41 - I puta he hapa whatunga
04:40 — tatari mo te paraka #9 kua pau te whakamanatanga
04:54 — ka tangohia e te node tuku nga toenga 760k whakawhitinga mai i te puna kaukau ka timata ki te tatau i te Hash Merkle me te haina poraka #9
05:32 — ka hainatia te poraka #9 ka tukuna kia whakamanahia ki etahi atu pona
05:53 — ka whakamanahia te poraka #9 ka tukuna ki te mekameka pakiaka
06:17 - i timata nga pona ki te whiwhi korero kua taapirihia te poraka #9 ki te mekameka pakiaka ka timata ki te mahi 760k whakawhitinga.
06:47 — kua whakakorehia e te puna wai nga whakawhitinga kei te poraka #9
09:06 - kei roto i nga pona katoa te 2 miriona tauwhitinga me nga tohu

Whakamātautau 2

He tepe 350k mo ia poraka. Ko te mutunga, e 3 nga poraka.


Te ahua tuatahi: poraka whakamutunga #9; 2 miriona tauwhitinga me nga tohu kei te rongoa i roto i te paataka

00:00 — kua whakarewahia te tuhinga whakaputa tauwhitinga
00:44 - 1 miriona tauwhitinga i hangaia ka timata te tuku ki te node
00:56 — 320k nga whakawhitinga mai i te puna kaukau me te puka poraka #10. Ka kite ano matou he 320k nga whakawhitinga ka taapirihia ki te puna wai i roto i te 10 hēkona
01:12 — ka hainatia te paraka #10 ka tukuna ki etahi atu pona hei whakamana
01:18 — ka mutu te mahi o te tuhinga whakaatu, i tukuna 1 miriona tauwhitinga i roto i te 34 hēkona
01:20 — ka whakamanahia te poraka #10 ka tukuna ki te mekameka pakiaka
01:51 - i whiwhi korero nga pona katoa mai i te mekameka pakiaka i tapirihia te poraka #10 ka timata ki te tono 320k whakawhitinga.
02:01 - kua whakawāteahia te puna wai mō ngā tauwhitinga 320k i tāpirihia ki te poraka #10
02:15 — 350k nga tauwhitinga mai i te puna kaukau me te puka poraka #11.
02:34 — ka hainatia te paraka #11 ka tukuna ki etahi atu pona hei whakamana
02:51 — ka whakamanahia te poraka #11 ka tukuna ki te mekameka pakiaka
02:55 — te pona whakamutunga kua oti nga whakawhitinga mai i te poraka #10
10:59 — ko te tauwhitinga me te tukunga o te poraka #9 he roa rawa te wa i roto i te mekameka pakiaka, engari kua oti, ka whiwhi korero katoa mo nga pona ka timata ki te mahi 350k tauwhitinga.
11:05 - kua whakawāteahia te puna wai mō ngā tauwhitinga 320k i tāpirihia ki te poraka #11
12:10 - kei roto i nga pona katoa 1 miriona 670k whakawhitinga me nga tohu
12:17 — 330k nga whakawhitinga mai i te puna kaukau me te puka poraka #12.
12:32 — ka hainatia te paraka #12 ka tukuna ki etahi atu pona hei whakamana
12:39 — ka whakamanahia te poraka #12 ka tukuna ki te mekameka pakiaka
13:44 - i whiwhi korero nga pona katoa mai i te mekameka pakiaka i tapirihia te poraka #12 ka timata ki te tono 330k whakawhitinga.
14:50 - kei roto i nga pona katoa te 2 miriona tauwhitinga me nga tohu

Whakamātautau 3

I roto i nga tūmau tuatahi me te tuarua, i whakakapia tetahi node whakamana e te node tuku.


Te ahua tuatahi: poraka whakamutunga #84; 0 nga tauwhitinga me nga tohu kua tiakina i roto i te paataka raraunga

00:00 — 3 nga tuhinga kua whakarewahia e whakaputa me te tuku 1 miriona tauwhitinga ia ia
01:38 — 1 miriona tauwhitinga i hangaia, ka timata te tuku ki te tuku i te node #3
01:50 — tuku kōpuku #3 i tango 330k whakawhitinga mai i te puna kaukau me te puka paraka #85 (f21). Ka kite ano matou he 350k nga whakawhitinga ka taapirihia ki te puna wai i roto i te 10 hēkona
01:53 — 1 miriona tauwhitinga i hangaia, ka timata te tuku ki te tuku i te node #1
01:50 — tuku kōpuku #3 i tango 330k whakawhitinga mai i te puna kaukau me te puka paraka #85 (f21). Ka kite ano matou he 350k nga whakawhitinga ka taapirihia ki te puna wai i roto i te 10 hēkona
02:01 — tuku kōpuku #1 i tango 250k whakawhitinga mai i te puna me te puka paraka #85 (65e)
02:06 — poraka #85 (f21) kua hainatia ka tukuna ki etahi atu pona hei whakamana
02:08 — tuhinga whakaatu mo te tūmau #3, i tukuna 1 miriona tauwhitinga i roto i te 30 hēkona, ka mutu te mahi
02:14 — paraka #85 (f21) ka whakamanahia ka tukuna ki te mekameka pakiaka
02:19 — ka hainatia te paraka #85 (65e) ka tukuna ki etahi atu pona hei whakamana
02:22 — 1 miriona tauwhitinga i hangaia, ka timata te tuku ki te tuku i te node #2
02:27 — poraka #85 (65e) ka whakamanahia ka tukuna ki te mekameka pakiaka
02:29 — tuku node #2 111855 nga whakawhitinga mai i te poka wai me nga puka poraka #85 (256).
02:36 — ka hainatia te paraka #85 (256) ka tukuna ki etahi atu pona hei whakamana
02:36 — tuhinga whakaatu mo te tūmau #1, i tukuna 1 miriona tauwhitinga i roto i te 42.5 hēkona, ka mutu te mahi
02:38 — poraka #85 (256) ka whakamanahia ka tukuna ki te mekameka pakiaka
03:08 — ka mutu te mahi a te tūmau #2, i tukuna 1 miriona tauwhitinga i roto i te 47 hēkona
03:38 - i whiwhi korero nga pona katoa mai i te mekameka pakiaka e aukati ana i te #85 (f21), #86(65e), #87(256) i tapirihia ka timata ki te tono 330k, 250k, 111855 whakawhitinga.
03:49 - i whakawāteahia te puna wai i te 330k, 250k, 111855 ngā whakawhitinga i tāpirihia ki ngā poraka #85 (f21), #86(65e), #87(256)
03:59 — tuku kōpuku #1 i tango 888145 whakawhitinga mai i te puna kaukau me te puka paraka #88 (214), tuku kōpuku #2 i tango 750k nga whakawhitiwhitinga mai i te puna me te puka paraka #88 (50a), tuku kōpuku #3 i tango 670k whakawhitinga mai i te poka wai me te paraka #88 (d3b)
04:44 — ka hainatia te paraka #88 (d3b) ka tukuna ki etahi atu pona hei whakamana
04:58 — ka hainatia te paraka #88 (214) ka tukuna ki etahi atu pona hei whakamana
05:11 — ka hainatia te paraka #88 (50a) ka tukuna ki etahi atu pona hei whakamana
05:11 — ka whakamanahia te poraka #85 (d3b) ka tukuna ki te mekameka pakiaka
05:36 — poraka #85 (214) ka whakamanahia ka tukuna ki te mekameka pakiaka
05:43 - kua whiwhi korero nga pona katoa mai i te mekameka pakiaka e poraka ana #88 (d3b), #89(214) kua taapirihia, ka timata ki te tono 670k, 750k whakawhitinga.
06:50 — na te kore korero, karekau te poraka #85 (50a) i whakamana
06:55 — tuku kōpuku #2 i tango 888145 tauwhitinga mai i te poka wai me nga puka paraka #90 (50a)
08:14 — ka hainatia te paraka #90 (50a) ka tukuna ki etahi atu pona hei whakamana
09:04 — ka whakamanahia te paraka #90 (50a) ka tukuna ki te mekameka pakiaka
11:23 - i whiwhi korero nga pona katoa mai i te mekameka pakiaka i tapirihia te poraka #90 (50a), ka timata ki te tono 888145 whakawhitinga. I taua wa ano, kua tukuna kee e te tūmau #3 nga whakawhitinga mai i nga poraka #88 (d3b), #89(214)
12:11 - kua kau nga puna katoa
13:41 — kei roto i nga pona katoa o te tūmau #3 3 miriona tauwhitinga me nga tohu
14:35 — kei roto i nga pona katoa o te tūmau #1 3 miriona tauwhitinga me nga tohu
19:24 — kei roto i nga pona katoa o te tūmau #2 3 miriona tauwhitinga me nga tohu

Tauraruraru

I te wa o te whakawhanaketanga o te Plasma Cash, i pa ki a maatau nga raru e whai ake nei, i whakatauhia e matou ka whakatauhia:

1. He raruraru i roto i te taunekeneke o nga momo mahi a te punaha. Hei tauira, ko te mahi o te whakauru i nga whakawhitinga ki te poka wai i aukati i te mahi o te tuku me te whakamana i nga poraka, me te rereke, i heke iho te tere.

2. Kaore i tino marama me pehea te tuku i te maha o nga whakawhitinga me te whakaiti i nga utu whakawhiti raraunga.

3. Kaore i te maarama me pehea me te waahi ka penapena raraunga kia tutuki ai nga hua teitei.

4. Kaore i tino marama me pehea te whakarite i tetahi whatunga i waenga i nga pona, na te mea ko te rahi o te poraka me te 1 miriona tauwhitinga ka eke ki te 100 MB.

5. Ko te mahi i roto i te aratau miro-kotahi ka pakaru te hononga i waenga i nga pona ka puta nga tatauranga roa (hei tauira, te hanga rakau Merkle me te tatau i tana hash).

I pehea ta matou mahi ki enei mea katoa?

Ko te putanga tuatahi o te Plasma Cash node he momo whakakotahi ka taea te mahi i nga mea katoa i te wa kotahi: te whakaae ki nga whakawhitinga, te tuku me te whakamana i nga poraka, me te whakarato i te API mo te uru ki nga raraunga. I te mea ko te NodeJS he miro-kotahi, na te mahi tatau rakau Merkle taumaha i aukati te mahi taapiri. E rua nga whiringa hei whakaoti i tenei raru:

1. Whakarewahia te maha o nga tukanga NodeJS, ka mahia e ia nga mahi motuhake.

2. Whakamahia te worker_threads ka nukuhia te mahinga o tetahi waahanga o te waehere ki nga miro.

Ko te mutunga, i whakamahia e matou nga whiringa e rua i te wa kotahi: ka wehewehea e matou tetahi node ki nga waahanga e 3 ka taea te mahi wehe, engari i te wa ano i te wa kotahi.

1. Node tuku, e whakaae ana ki nga whakawhitinga ki roto i te poka wai ka hanga poraka.

2. He node whakamana hei taki i te mana o nga pona.

3. API node - whakarato API mo te uru ki nga raraunga.

I tenei keehi, ka taea e koe te hono atu ki ia node ma te turanga unix ma te whakamahi cli.

I nekehia e matou nga mahi taumaha, penei i te tatau i te rakau Merkle, ki tetahi miro motuhake.

No reira, kua tutuki i a maatau te mahi o nga mahi Plasma Cash katoa i te wa kotahi me te kore he rahua.

I te wa e mahi ana te punaha, ka timata matou ki te whakamatautau i te tere, a, kaore i pai, ka whiwhi hua kaore i pai: 5 nga whakawhitinga mo ia hekona, tae atu ki te 000 nga whakawhitinga mo ia poraka. Me whakaaro ahau he aha nga mea i mahia hee.

Hei timata, i timata taatau ki te whakamatautau i te tikanga o te whakawhitiwhiti korero me te Plasma Cash kia mohio ai koe ki te kaha o te punaha. I tuhia e matou i mua ko te Plasma Cash node e whakarato ana i tetahi atanga turanga unix. I te timatanga ko te tuhi-tuhi. I tukuna nga mea json ma te whakamahi i te `JSON.parse()` me te `JSON.stringify()`.

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

I inehia e matou te tere whakawhiti o aua taonga, ka kitea ~ 130k ia hekona. I tamata matou ki te whakakapi i nga mahi paerewa mo te mahi me te json, engari kaore i pai ake te mahi. Ko te miihini V8 me tino arotau mo enei mahi.

I mahi tahi matou me nga whakawhitinga, nga tohu, me nga poraka i roto i nga karaehe. I te wa e hanga ana i enei karaehe, e 2 nga wa i heke te mahinga, e tohu ana kaore i te pai te OOP mo tatou. Me tuhi ano e au nga mea katoa ki te huarahi tino mahi.

Te tuhi i roto i te patengi raraunga

I te timatanga, i whiriwhiria a Redis mo te rokiroki raraunga ko tetahi o nga otinga tino whai hua e whakatutuki ana i o maatau whakaritenga: te rokiroki uara-matua, te mahi me nga ripanga hash, nga huinga. I whakarewahia e matou te redis-benchmark ka whiwhi ~80k nga mahi mo ia hekona i roto i te aratau paipa 1.

Mo nga mahi tino pai, he pai ake ta matou whakarite i a Redis:

  • Kua whakaritea he hononga turanga unix.
  • I monoa e matou te tiaki i te ahua ki te kōpae (mo te pono, ka taea e koe te whakarite tauira me te penapena ki te kōpae i roto i te Redis motuhake).

I Redis, ko te puna kaukau he ripanga hash no te mea me kaha ki te tiki i nga whakawhitinga katoa i roto i te patai kotahi me te whakakore i nga whakawhitiwhitinga takitahi. I whakamatau matou ki te whakamahi i te rarangi auau, engari he puhoi ake ina wetewete i te rarangi katoa.

I te wa e whakamahi ana i te NodeJS paerewa, i tutuki i nga whare pukapuka Redis he mahinga 18k mo ia hekona. I heke te tere e 9 nga wa.

I te mea i whakaatu mai te tohu tohu ki a maatau he 5 nga wa ka nui ake nga tupono, ka tiimata matou ki te arotau. I hurihia e matou te whare pukapuka ki te ioredis ka whiwhi mahi 25k ia hekona. I taapirihia e matou nga whakawhitinga takitahi ma te whakamahi i te tono `hset`. Na he maha nga patai i mahia e matou i Redis. I puea ake te whakaaro ki te whakakotahi i nga tauwhitinga ki nga roopu me te tuku ma te tono kotahi `hmset`. Ko te hua he 32k ia hekona.

He maha nga take, ka whakaahuahia e matou i raro nei, ka mahi tahi matou me nga raraunga ma te whakamahi i te `Buffer` a, ki te huri koe ki te kuputuhi (`buffer.toString('hex')`) i mua i te tuhi, ka taea e koe te tiki atu. mahi. Na, i piki ake te tere ki te 35k ia hekona. I tenei wa, i whakatau matou ki te aukati i te arotautanga.

Me huri matou ki te kawa rua na te mea:

1. He maha nga wa ka tatauhia e te punaha nga tohu, nga waitohu, me etahi atu, mo tenei ka hiahiatia he raraunga i roto i te `Buffer.

2. Ina tukuna i waenga i nga ratonga, ka iti ake te taumaha o nga raraunga rua i te tuhinga. Hei tauira, ka tukuna he poraka me te 1 miriona tauwhitinga, ka taea e nga raraunga i roto i te tuhinga te neke atu i te 300 megabytes.

3. Ko te whakarereke i nga raraunga ka pa ki te mahi.

No reira, ka mau matou i ta matou ake kawa-rua mo te penapena me te tuku raraunga, i whakawhanakehia i runga i te kaupapa o te whare pukapuka `rua-raraunga` whakamiharo.

Ko te mutunga, ka whiwhi matou i nga hanganga raraunga e whai ake nei:

—Whakawhitiwhiti

  ```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,
  }
  ```

— Tohu

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

—Poraka

  ```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,
  }
  ```

Ma nga whakahau o mua `BD.encode(poraka, Kawa).slice();` me `BD.decode(buffer, Protocol)` ka huri tatou i nga raraunga ki te `Buffer` mo te penapena ki Redis, ki te tuku whakamua ranei ki tetahi atu node me te tiki i te raraunga hoki.

E rua ano nga kawa rua mo te whakawhiti raraunga i waenga i nga ratonga:

— Kawa mo te taunekeneke me te Plasma Node ma te turanga unix

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

kei hea:

  • `momo` — te mahi ka mahia, hei tauira, 1 — sendTransaction, 2 — getTransaction;
  • `utumahi` — nga raraunga me tuku ki te mahi e tika ana;
  • `MessageId` — karere id kia mohio ai te whakautu.

— Kawa mo te taunekeneke i waenga i nga pona

  ```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)
  }
  ```

kei hea:

  • `waehere` — waehere karere, hei tauira 6 — PREPARE_NEW_BLOCK, 7 — BLOCK_VALID, 8 — BLOCK_COMMIT;
  • `versionProtocol` — putanga kawa, na te mea ka taea te whakaara i nga pona he rereke nga momo putanga ki runga i te whatunga ka taea te mahi rereke;
  • `seq` — tohu tohu karere;
  • `countChunk` и `chunkNumber` e tika ana mo te wehewehe i nga karere nui;
  • `roa` и `utumahi` te roa me te raraunga ake.

I te mea kua patohia e matou nga raraunga, he tere ake te punaha whakamutunga i te whare pukapuka `rlp` a Ethereum. Engari, kaore ano kia taea e matou te whakakore, na te mea he mea tika ki te whakaoti i te kirimana atamai, e whakamahere ana matou ki te mahi a muri ake nei.

Mena i kaha taatau ki te eke ki te tere 35 000 tauwhitinga ia hekona, me mahi ano tatou i roto i te waa tino pai. I te mea he 30 hēkona te roa o te hanga poraka, me whakauru ki roto i te poraka 1 000 000 whakawhitinga, ko te tikanga o te tuku atu 100 MB o nga raraunga.

I te timatanga, i whakamahia e matou te whare pukapuka `ethereumjs-devp2p` ki te whakawhiti korero i waenga i nga pona, engari kaore e taea e ia te nui o nga raraunga. Ko te mutunga mai, i whakamahia e matou te whare pukapuka `ws` me te whirihora i te tuku raraunga-rua ma te ipurangi. Ae ra, i raru ano matou i te wa e tuku ana i nga paanui raraunga nui, engari i wehewehea e matou ki nga wahanga, a inaianei kua kore enei raru.

Ka hanga ano he rakau Merkle me te tatau i te hash 1 000 000 tauwhitinga titau e pā ana ki 10 hēkona o te tātai haere tonu. I tenei wa, ka pakaru te hononga ki nga pona katoa. I whakatauhia kia nekehia tenei tatauranga ki tetahi miro motuhake.

Whakamutunga:

Inaa, ehara i te mea hou a maatau kitenga, engari na etahi take ka warewarehia e te tokomaha o nga tohunga i te wa e whanake ana.

  • Ma te whakamahi i te Papatono Taumahi hei utu mo te Papatono-Ahaahaa ka pai ake te hua.
  • He kino atu te monolith i te hoahoanga ratonga mo te punaha NodeJS whai hua.
  • Ma te whakamahi i te `worker_threads` mo te tatauranga taumaha ka pai ake te aro o te punaha, ina koa ka pa ki nga mahi i/o.
  • Ko te turanga unix he pumau me te tere ake i nga tono http.
  • Mena ka hiahia koe ki te whakawhiti tere i nga raraunga nui i runga i te whatunga, he pai ake te whakamahi i nga waahi tukutuku me te tuku i nga raraunga rua, ka wehewehea ki nga wahanga, ka taea te tuku atu ki te kore e tae mai, ka whakakotahi ki te karere kotahi.

Ka tono matou kia toro atu koe GitHub kaupapa: https://github.com/opporty-com/Plasma-Cash/tree/new-version

Na te tuhinga i tuhi tahi Alexander Nashivan, kaiwhakawhanake matua Maamaa Solution Inc.

Source: will.com

Tāpiri i te kōrero