E Habr!
Ma kēia ʻatikala e kamaʻilio wau e pili ana i ka hanauna o nā helu pseudo-random e nā poʻe i hilinaʻi ʻole kekahi i kekahi. E like me kā mākou e ʻike ai ma lalo nei, maʻalahi ka hoʻokō ʻana i kahi mea hana "kokoke" maikaʻi, akā paʻakikī kahi mea maikaʻi loa.
No ke aha e pono ai e hoʻopuka i nā helu maʻamau i waena o nā poʻe i hilinaʻi ʻole kekahi i kekahi? Hoʻokahi wahi noi ʻo nā noi decentralized. No ka laʻana, ʻo kahi noi e ʻae i ka bet mai kahi mea komo a pāpālua i ka nui me ka 49% probability a i ʻole ka lawe ʻana me ka probability 51% e hana wale nō inā hiki iā ia ke loaʻa i kahi helu maʻamau. Inā hiki i ka mea hoʻouka ke hoʻoikaika i ka hopena o ka mea hoʻopuka helu maʻamau, a hoʻonui iki i kona manawa e loaʻa ai kahi uku ma ka noi, e hoʻopau maʻalahi ʻo ia.
Ke hoʻolālā mākou i kahi protocol generation generation, makemake mākou e loaʻa iā ia ʻekolu mau waiwai:
-
Pono ʻo ia e ʻae ʻole. I nā huaʻōlelo ʻē aʻe, ʻaʻohe mea komo e hoʻohuli i ka hopena o ka mea hoʻoheheʻe helu random.
-
Pono ʻole ʻo ia e wānana. Ma nā huaʻōlelo ʻē aʻe, ʻaʻohe mea komo e hiki ke wānana i ka helu e hana ʻia (a i ʻole e hoʻohālikelike i kekahi o kāna mau waiwai) ma mua o ka hana ʻia ʻana.
-
Pono pono ka protocol, ʻo ia hoʻi, kūʻē i ka ʻoiaʻiʻo o ka haʻalele ʻana o kekahi hapa o nā mea komo mai ka pūnaewele a i ʻole e hoʻāʻo e hoʻōki i ka protocol.
Ma kēia ʻatikala e nānā mākou i ʻelua ala: RANDAO + VDF a me nā code erasure. Ma ka ʻāpana aʻe, e nānā kikoʻī mākou i ke ala e pili ana i nā pūlima paepae.
Akā ʻo ka mea mua, e nānā kāua i kahi algorithm maʻalahi a hoʻohana maʻamau i hiki ke ʻike ʻia, ʻike ʻole ʻia, akā pili ʻole.
RANDAO
He mea maʻalahi loa ʻo RANDAO a no laila e hoʻohana mau ʻia i ka hana ʻana i ka randomness. E koho mua nā mea hui pūnaewele i kahi helu pseudorandom, a laila hoʻouna kēlā me kēia mea i ka hash o ka helu i koho ʻia. A laila, huli ka poʻe hui e hōʻike i kā lākou mau helu i koho ʻia a hana i kahi hana XOR ma nā helu i hōʻike ʻia, a lilo ka hopena o kēia hana i ka hopena o ka protocol.
ʻO ka pae o ka paʻi ʻana i nā hashes ma mua o ka hōʻike ʻana i nā helu he mea pono ia i hiki ʻole i ka mea hoʻouka ke koho i kāna helu ma hope o kona ʻike ʻana i nā helu o nā mea ʻē aʻe. ʻAe kēia iā ia e hoʻoholo hoʻokahi i ka hoʻopuka ʻana o ka mea hoʻoheheʻe helu random.
I ka wā o ka protocol, pono nā poʻe e komo i kahi hoʻoholo maʻamau (i kapa ʻia ʻo consensus) ʻelua: i ka wā e hoʻomaka ai e hōʻike i nā helu i koho ʻia, a no laila e hoʻōki i ka ʻae ʻana i nā hashes, a i ka wā e hoʻōki ai i ka ʻae ʻana i nā helu i koho ʻia a me ka helu ʻana i ka hopena. helu. ʻO ka hoʻoholo ʻana i kēlā mau hoʻoholo ma waena o nā poʻe i hilinaʻi ʻole kekahi i kekahi, ʻaʻole ia he hana maʻalahi iā ia iho, a e hoʻi mākou iā ia i nā ʻatikala e hiki mai ana; ma kēia ʻatikala e manaʻo mākou ua loaʻa iā mākou kahi algorithm consensus.
ʻO wai o nā waiwai a mākou i hōʻike ai ma luna nei iā RANDAO? ʻAʻole hiki ke manaʻo ʻia, loaʻa i ka ikaika like me ka protocol consensus underlying, akā ʻo ia ke ʻano. Ma keʻano kūikawā, hiki i ka mea hoʻouka ke nānā i ka pūnaewele, a ma hope o ka hōʻikeʻana o nā poʻe'ē aʻe i kā lākou helu, hiki iā ia ke helu i kā lākou XOR, a hoʻoholo i ka hōʻikeʻana i kāna helu e hoʻoikaika i ka hopena. ʻOiai ke pale nei kēia i ka mea hoʻouka mai ka hoʻoholo ʻana i ka hoʻopuka o ka mea hoʻoheheʻe helu maʻamau, hāʻawi mau iā ia i 1 mau mana. A inā e hoʻomalu ka poʻe hoʻouka i kekahi mau mea komo, a laila e like ka helu o nā bits a lākou e mālama ai me ka helu o nā mea komo ma lalo o kā lākou mana.
Hiki ke hoʻemi nui ʻia ka mana o ka poʻe hoʻouka kaua ma ke koi ʻana i nā mea komo e hōʻike i nā helu ma ke ʻano. A laila hiki i ka mea hoʻouka ke hoʻoikaika i ka hopena inā wehe ʻia ma hope. ʻOiai ʻoi aku ka liʻiliʻi o ka hopena, ʻoi aku ka ʻino o ka algorithm.
RANDAO+VDF
ʻO kahi ala e hoʻokaʻawale ʻole ai iā RANDAO, ʻo ia kēia: ma hope o ka hōʻike ʻia ʻana o nā helu āpau a helu ʻia ka XOR, hāʻawi ʻia kāna hopena i loko o ka hoʻokomo o kahi hana, e lōʻihi loa ka manawa e helu ai, akā hiki iā ʻoe ke nānā i ka pololei o ka. helu wikiwiki loa.
(vdf_output, vdf_proof) = VDF_compute(input) // это очень медленно
correct = VDF_verify(input, vdf_output, vdf_proof) // это очень быстро
Kapa ʻia kēia hana ʻo Verifiable Delay Function, a i ʻole VDF. Inā ʻoi aku ka lōʻihi o ka helu ʻana i ka hopena hope ma mua o ka pae hōʻike helu, a laila ʻaʻole hiki i ka mea hoʻouka ke wānana i ka hopena o ka hōʻike ʻana a huna ʻana paha i kāna helu, a no laila e nalowale ʻo ia i ka manawa e hoʻohuli ai i ka hopena.
He paʻakikī loa ka hoʻomohala ʻana i nā VDF maikaʻi. He nui nā mea hoʻokō i kēia manawa, e.g.
ʻO ka paʻakikī nui loa o kēia ala ʻo ka hoʻonohonoho ʻana i ka VDF i hiki ʻole i kahi mea komo me nā lako loea kūikawā ke helu i ka VDF ma mua o ka pau ʻana o ka pae ʻike. ʻO ke kūpono, pono e loaʻa i ka algorithm kahi palena palekana koʻikoʻi, e ʻōlelo iā 10x. Hōʻike ka kiʻi ma lalo nei i ka hoʻouka ʻana o kahi mea hana i loaʻa kahi ASIC kūikawā e hiki ai iā ia ke holo wikiwiki i kahi VDF ma mua o ka manawa i hāʻawi ʻia e hōʻike i ka hōʻoia RANDAO. Hiki i kēlā me kēia mea ke helu i ka hopena hope me ka hoʻohana ʻana a i ʻole ka hoʻohana ʻana i kāna helu, a laila, ma muli o ka helu ʻana, koho i ka hōʻike ʻana a i ʻole.
No ka ʻohana VDF i ʻōlelo ʻia ma luna nei, hiki i ka hana o kahi ASIC i hoʻolaʻa ʻia ke 100+ mau manawa kiʻekiʻe ma mua o nā lako hana maʻamau. No laila, inā he 10 kekona ka manawa hōʻike, a laila pono ka VDF i helu ʻia ma ia ASIC e ʻoi aku ma mua o 100 kekona no ka loaʻa ʻana o kahi palena palekana 10x, a no laila ʻo ka VDF i helu ʻia ma nā lako waiwai pono e lawe i 100x 100 kekona = ~3 hola.
Hoʻolālā ka Ethereum Foundation e hoʻoponopono i kēia pilikia ma o ka hoʻokumu ʻana i kāna mau ASIC i loaʻa i ka lehulehu. Ke hiki mai kēia, hiki i nā protocols ʻē aʻe ke hoʻohana pono i kēia ʻenehana, akā a hiki i ia manawa ʻaʻole hiki ke hoʻohana ʻia ka RANDAO+VDF no nā protocols ʻaʻole hiki ke hoʻolilo i ka hoʻomohala ʻana i kā lākou mau ASIC.
Nui nā ʻatikala, wikiō a me nā ʻike ʻē aʻe e pili ana iā VDF i hōʻiliʻili ʻia ma
Hoʻohana mākou i nā code erasure
Ma kēia ʻāpana, e nānā mākou i kahi protocol generation number random e hoʻohana nei
ʻO ka manaʻo nui o ka protocol penei. No ka maʻalahi, e noʻonoʻo kākou he 100 mau mea komo. E noʻonoʻo nō hoʻi kākou he kī pilikino nā mea komo a pau ma ka ʻāina, a ua ʻike ʻia nā kī ākea o nā mea komo a pau e nā mea komo.
-
Hoʻopili ʻia kēlā me kēia mea komo i kahi kaula lōʻihi, wāwahi iā ia i 67 mau ʻāpana, hana i nā code holoi ʻia e loaʻa ai nā ʻāpana 100 i lawa ai nā 67 e hoʻihoʻi i ke kaula, hāʻawi i kēlā me kēia o nā ʻāpana 100 i kekahi o nā mea komo, a hoʻopili iā lākou me ka kī lehulehu o ka mea komo like. Hoʻopuka ʻia nā ʻāpana hoʻopaʻa ʻia a pau.
-
Hoʻohana nā mea komo i kekahi ʻano kuʻikahi e loaʻa ai ka ʻaelike ma nā pūʻulu coded mai 67 mau mea komo.
-
Ke loaʻa ka ʻae ʻana, lawe kēlā me kēia mea i nā ʻāpana i hoʻopaʻa ʻia i kēlā me kēia o nā pūʻulu 67 i hoʻopili ʻia me kā lākou kī lehulehu, wehe i nā ʻāpana āpau, a hoʻolaha i kēlā mau ʻāpana decrypted.
-
I ka pau ana o ka 67 mau mea komo i ka hana (3), hiki ke wehe a hana hou ia na hoonohonoho a pau ma muli o na waiwai o na code holoi, a hiki ke loaa ka helu hope ma ke ano he XOR o na lalani mua i hoomaka ai na mea komo ma (1) .
Hiki ke hōʻike ʻia kēia protocol me ka ʻole a me ka ʻike ʻole. Hoʻoholo ʻia ka helu maʻamau ma hope o ka loaʻa ʻana o ka ʻae ʻana, akā ʻaʻole ʻike ʻia e kekahi a hiki i ka ⅔ o nā mea komo e hoʻokaʻawale i nā ʻāpana i hoʻopili ʻia me kā lākou kī lehulehu. No laila, hoʻoholo ʻia ka helu maʻamau ma mua o ka paʻi ʻia ʻana o ka ʻike i lawa no ke kūkulu hou ʻana.
He aha ka hopena inā ma ka ʻanuʻu (1) hoʻouna kekahi o nā mea komo i nā ʻāpana i hoʻopaʻa ʻia i nā poʻe ʻē aʻe ʻaʻole ke code holoi pono no kekahi kaula? Me ka ʻole o nā hoʻololi hou, ʻaʻole hiki i nā mea komo ʻokoʻa ke hoʻihoʻi hou i ke kaula, a i ʻole e hoʻihoʻi hou i nā kaula like ʻole, a laila e loaʻa i nā poʻe ʻokoʻa kahi helu ʻokoʻa. No ka pale ʻana i kēia, hiki iā ʻoe ke hana i kēia: kēlā me kēia mea komo, me ka hoʻohui ʻana i nā ʻāpana i hoʻopaʻa ʻia, helu pū kekahi.
Aia ma ka ʻanuʻu (4) wehewehe ka mea komo i 67 beats no kekahi kaula a hoʻāʻo e hana hou i ke kaula kumu mai ia mau mea, hiki i kekahi o nā koho:
-
Hoʻihoʻi ʻia ke kaula, a inā e holoi hou ʻia, a helu ʻia ka lāʻau Merkle no nā ʻāpana i helu ʻia ma ka ʻāina, ua like ke kumu me ka mea i ʻae ʻia.
-
Hoʻihoʻi hou ʻia ka lālani, akā ʻaʻole i kūlike ke kumu i helu ʻia ma ka wahi i loaʻa ai ka ʻae.
-
ʻAʻole i hoʻihoʻi ʻia ka lālani.
He mea maʻalahi ka hōʻike ʻana inā loaʻa ke koho (1) no ka liʻiliʻi o hoʻokahi mea i komo ma luna, a laila ua loaʻa ke koho (1) no nā mea komo a pau, a ʻo ia hoʻi, inā loaʻa ke koho (2) a i ʻole (3) no hoʻokahi mea komo, a laila no nā mea komo a pau e hiki ke koho (2) a i ʻole (3). No laila, no kēlā me kēia lālani i ka hoʻonohonoho, e hoʻihoʻi maikaʻi ʻia nā mea komo a pau, a i ʻole nā poʻe komo a pau e hoʻihoʻi. ʻO ka helu random ka hopena he XOR o nā lālani wale nō i hiki i nā mea komo ke hoʻihoʻi.
Pulima paepae
ʻO kahi ala ʻē aʻe i ka randomness ʻo ka hoʻohana ʻana i ka mea i kapa ʻia ʻo BLS threshold signatures. ʻO kahi mea hoʻoheheʻe helu maʻamau e pili ana i nā pūlima paepae ua like nā hōʻoia like me ka algorithm e pili ana i ka code erasure i hōʻike ʻia ma luna, akā he helu asymptotic haʻahaʻa loa o nā memo i hoʻouna ʻia ma luna o ka pūnaewele no kēlā me kēia helu i hana ʻia.
ʻO nā pūlima BLS kahi hoʻolālā e hiki ai i nā mea komo ke hana i hoʻokahi pūlima maʻamau no kahi leka. Hoʻohana pinepine ʻia kēia mau pūlima e mālama i ka lewa a me ka bandwidth ma o ka koi ʻole ʻana i nā pūlima he nui e hoʻouna ʻia.
ʻO kahi noi maʻamau no nā pūlima BLS i nā protocol blockchain, i ka hoʻohui ʻana i nā helu maʻamau, ʻo ia ke kau inoa ʻana i nā protocol BFT. E ʻōlelo kākou he 100 ka poʻe i hana i nā poloka, a ua manaʻo ʻia kahi poloka inā he 67 o lākou e kau inoa. Hiki iā lākou ke waiho i kā lākou mau ʻāpana o ka pūlima BLS a hoʻohana i kekahi algorithm consensus e ʻae i ka 67 o lākou a laila hoʻohui iā lākou i hoʻokahi pūlima BLS. Hiki ke hoʻohana ʻia nā ʻāpana 67 (a ʻoi aku paha) e hana i ka pūlima hope, e hilinaʻi ʻia i ka hui ʻana o 67 mau pūlima a no laila e ʻokoʻa paha, ʻoiai nā koho like ʻole a nā mea komo 67 e hana i kahi pūlima ʻokoʻa pūlima no ka poloka. Pono nā mea i koe e loaʻa a hōʻoia i hoʻokahi wale nō pūlima no kēlā me kēia poloka, ma kahi o 67, ma luna o ka pūnaewele, kahi e hōʻemi nui ai i ka ukana ma ka pūnaewele.
ʻIke ʻia inā hana ʻia nā kī pilikino i hoʻohana ʻia e nā poʻe komo, a laila ʻaʻohe mea e hōʻuluʻulu ʻia nā pūlima 67 (a ʻoi aku, akā ʻaʻole liʻiliʻi), e like nō ka hopena. Hiki ke hoʻohana ʻia kēia ma ke ʻano he kumu o ka randomness: ʻae mua nā mea komo i kekahi memo a lākou e kau inoa ai (ʻo ia paha ka hopena o RANDAO a i ʻole ka hash o ka poloka hope loa, ʻaʻole ia he mea nui ke loli i kēlā me kēia manawa. a kūpaʻa) a hana i kahi pūlima BLS no ia. ʻAʻole hiki ke ʻike ʻia ka hopena o ka hanauna a hiki i ka hāʻawi ʻana o nā mea komo 67 i kā lākou mau ʻāpana, a ma hope o ia mea ua hoʻoholo mua ʻia ka hopena a ʻaʻole hiki ke hilinaʻi i nā hana a kekahi mea komo.
Hiki ke hoʻohana ʻia kēia ala i ka randomness inā lōʻihi ka liʻiliʻi o ⅔ o ka poʻe i komo ma ka pūnaewele e hahai ana i ka protocol, a ʻaʻole kūlike a ʻike ʻole ʻia inā lōʻihi ka liʻiliʻi o ⅓ o ka poʻe i komo i ka protocol. He mea nui e hoʻomaopopo i ka mea hoʻouka kaua e hoʻomalu i ka ʻoi aku ma mua o ⅓ akā ʻoi aku ka liʻiliʻi ma mua o ⅔ o nā mea komo hiki ke hoʻōki i ka protocol, akā ʻaʻole hiki ke wānana a hoʻololi i kāna huahana.
He kumuhana hoihoi loa nā pūlima paepae. Ma ka ʻaoʻao ʻelua o ka ʻatikala, e loiloi mākou i nā kikoʻī pehea e hana ai lākou, a pehea e pono ai ka hoʻopuka ʻana i nā kī komo i hiki ke hoʻohana ʻia nā pūlima paepae ma ke ʻano he mea hoʻopuka helu maʻamau.
I ka hopena
ʻO kēia ʻatikala ka mea mua ma kahi pūʻulu o nā ʻatikala blog loea
Ua wehe ʻia ka code protocol, ua kākau ʻia kā mākou hoʻokō ma Rust, hiki ke loaʻa
Hiki iā ʻoe ke ʻike i ke ʻano o ka hoʻomohala ʻana no NEAR a hoʻokolohua i ka IDE pūnaewele
Hiki iā ʻoe ke hahai i nā nūhou a pau ma ka ʻōlelo Lūkini ma
A hui hou koke iā 'oe!
Source: www.habr.com