ʻO ka ʻōlelo aʻoaʻo e pili ana i ka pūlima kikohoʻe ma blockchain

Mai ka manaʻo a hiki i ka hoʻokō: hoʻololi mākou i ka elliptic curve digital signature scheme i mea e hoʻoholo ai, a ma muli o ia mea mākou e hāʻawi ai i nā hana no ka loaʻa ʻana o nā helu pseudo-random i hiki ke hōʻoia i loko o ka blockchain.

ʻO ka ʻōlelo aʻoaʻo e pili ana i ka pūlima kikohoʻe ma blockchain

Manaʻo

I ka hāʻule o 2018, ua komo pū ka Waves blockchain Ua ho'ā 'ia nā 'aelike akamai mua, ua ala koke ka ninau e pili ana i ka hiki ke loaa helu pseudorandomhiki iā ʻoe ke hilinaʻi.

Ke kānalua nei au i kēia nīnau, ua hiki iaʻu i ka hopena: ʻo kekahi blockchain he cell; ʻaʻole hiki ke loaʻa kahi kumu hilinaʻi o ka entropy i kahi ʻōnaehana pani.

Akā makemake au i hoʻokahi manaʻo: inā haʻiʻōlelo kipi e hōʻailona i ka ʻikepili mea hoʻohana me kahi algorithm deterministic, a laila hiki i ka mea hoʻohana ke hōʻoia i kēlā hōʻailona me ka hoʻohana ʻana i ke kī lehulehu, a e hōʻoiaʻiʻo i ka waiwai o ka hopena. ʻAʻole hiki i ka ʻōlelo aʻoaʻo ke hoʻololi i kekahi mea; hoʻopuka ka algorithm i kahi hopena maopopo ʻole. ʻO ka mea nui, hoʻopaʻa ka mea hoʻohana i ka hopena, akā ʻaʻole ʻike ia a hiki i ka hoʻolaha ʻana o ka ʻōlelo. ʻIke ʻia ʻaʻole hiki iā ʻoe ke hilinaʻi i ka ʻōlelo aʻoaʻo, akā e nānā i ka hopena o kāna hana. A laila, i ka hihia o ka hōʻoia kūleʻa, hiki ke manaʻo ʻia kahi pūlima i kumu o ka entropy no kahi helu pseudorandom.

Hoʻohana ka Waves blockchain platform i kahi papa inoa EdDSA koho Ed25519. Ma kēia kumumanaʻo, aia ka pūlima i nā waiwai R a me S, kahi e hilinaʻi ai ʻo R i kahi waiwai random, a ua helu ʻia ʻo S ma muli o ka memo i kau inoa ʻia, ke kī pilikino a me ka helu like ʻole me R. ʻaʻohe hilinaʻi kūʻokoʻa no ka mea like He nui nā pūlima kūpono no kahi leka mea hoʻohana.

ʻOiaʻiʻo, ma kona ʻano maʻemaʻe, ʻaʻole hiki ke hoʻohana ʻia kēlā pūlima ma ke ʻano he kumu o nā helu pseudo-random, no ka mea, ʻaʻole i hoʻoholo ʻia a no laila, hiki ke maʻalahi i ka ʻōlelo.

Akā, e like me ka mea i ʻike ʻia, hiki ke hana i ka deterministic.

Nui koʻu manaolana no hiki ke hōʻoia ʻia ka hana ʻole (VRF), akā ma hope o ke aʻo ʻana i ka ʻenehana, pono wau e haʻalele i kēia koho. ʻOiai ke hāʻawi nei ʻo VRF i kahi mana hoʻoholo o ka pūlima a me kāna hōʻoiaʻiʻo, aia kahi wahi ʻē i ka algorithm e wehe ana i kahi lua ʻeleʻele no ka hoʻoponopono ʻana i ka ʻōlelo. ʻO ia hoʻi, i ka helu ʻana i ka waiwai o k (pauku 5.1) ua hoʻohana ʻia kahi kī pilikino, ʻaʻole i ʻike ʻia e ka mea hoʻohana, ʻo ia hoʻi ʻaʻole hiki i ka mea hoʻohana ke hōʻoia i ka pololei o ka helu ʻana o k, ʻo ia hoʻi, hiki i ka ʻōlelo aʻoaʻo ke hoʻohana i kekahi waiwai o k e pono ai a ma ka manawa like e mālama i kahi waihona o nā leka. o k a me ka ikepili i kakau inoa i mea e hiki ai ke helu hou i ka hopena i pololei mai ka manao o VRF. Inā ʻike ʻoe i kahi kiʻi e pili ana i ka VRF me ka ʻole o ka hōʻike ʻana i ke kī pilikino, hiki iā ʻoe ke akamai: e hōʻike i ka pono e hōʻike i ke kī, a i ʻole e hoʻokaʻawale iā ia mai ka helu ʻana o k, a laila e hōʻike ʻia ke kī pilikino i ka wā e ʻike ʻia ai ka pūlima mua. . Ma keʻano laulā, e like me ka mea i haʻi mua ʻia, kahi hoʻolālā ʻē aʻe no kahi ʻōlelo aʻoaʻo.

Ma hope o ka noʻonoʻo liʻiliʻi a me ke noi ʻana i ke kākoʻo o nā mea loiloi kūloko, ua hānau ʻia ka papahana hana VECRO.

He pōkole ʻo VECRO no ka Verifiable Elliptic Curve Random Oracle, ʻo ia hoʻi ma ka ʻōlelo Lūkini, ʻo ia ka ʻōlelo kikoʻī hiki ke hōʻoia ʻia ma nā pihi elliptic.

Ua maʻalahi nā mea a pau; no ka hoʻokō ʻana i ka determinism, pono ʻoe e hoʻoponopono i ka waiwai o R ma mua o ka puka ʻana o ka leka e kau inoa ʻia. Inā paʻa ʻo R a he ʻāpana o ka leka i kau inoa ʻia, kahi e hōʻoiaʻiʻo ai ua hoʻokō ʻia ʻo R i ka memo i pūlima ʻia, ʻike ʻia ka waiwai o S e ka memo a ka mea hoʻohana a no laila hiki ke hoʻohana ʻia i kumu no nā helu pseudorandom.

I loko o ia ʻano hana, ʻaʻohe mea pili i ka hoʻopaʻa ʻia ʻana o R; ʻo ia ke kuleana o ka ʻōlelo. He mea nui ka hoʻoholo kūʻokoʻa ʻana o S e ka mea hoʻohana, akā ʻaʻole ʻike ʻia kona waiwai a hiki i ka hoʻolaha ʻana o ka ʻōlelo. ʻO nā mea a pau a mākou i makemake ai!

Ma ke kamaʻilio ʻana no R paʻa, e hoʻomaopopo i kēlā hoʻohana hou ʻia ʻo R i ke kau inoa ʻana i nā memo like ʻole, hōʻike kūʻokoʻa ia i ke kī pilikino i ka papahana EdDSA. He mea koʻikoʻi loa ia no ka mea nona ka ʻōlelo aʻoaʻo e hoʻopau i ka hiki ke hoʻohana hou iā R e kau inoa i nā memo mea hoʻohana like ʻole. ʻO ia hoʻi, me ka hoʻopunipuni a i ʻole ka hui ʻana, e pilikia mau ana ka ʻōlelo aʻoaʻo i ka nalowale ʻana o kāna kī pilikino.

Ma ka huina, pono e hāʻawi ka ʻōlelo aʻoaʻo i nā mea hoʻohana i ʻelua mau hana: ka hoʻomaka ʻana, e hoʻoponopono i ka waiwai R, a me ka pūlima, e hoʻihoʻi i ka waiwai S. waiwai R a me ka ʻikepili mea hoʻohana ʻole.

Hiki ke hoʻopaʻapaʻa ʻia ʻo kēia hoʻolālā no ka blockchain he mea ʻē aʻe ma mua o nā mea maʻamau commit-expand scheme. ʻO ka mea nui, ʻae, ʻo ia nō. Akā aia kekahi mau nuances. ʻO ka mea mua, hana mau ka oracle me ke kī like i nā hana āpau, no ka laʻana, maʻalahi kēia e hoʻohana i nā ʻaelike. ʻO ka lua, aia ka pilikia o ka nalo ʻana o ke kī pilikino inā hana hewa ia, no ka laʻana, ʻae ka ʻōlelo aʻoaʻo iā ʻoe e hana i nā laʻana o ka hopena, a laila lawa ia e hana i ʻelua mau hoʻāʻo e ʻike i ke kī pilikino a loaʻa piha. komo i ka ʻeke kālā. ʻO ke kolu, ʻo kahi pūlima i hōʻoia maoli ʻia ma ka blockchain a he kumu o ka randomness he nani.

No nā mahina ʻeono, ua hoʻomaka ka manaʻo o ka hoʻokō ʻana i koʻu poʻo, a hiki i ka manawa i ʻike ʻia ai ka hoʻoikaika ʻana ma ke ʻano hāʻawi kālā mai Waves Labs. Me ka hāʻawi kālā nui hiki mai ke kuleana nui, no laila aia ka papahana ma laila!

Ka hoʻokō

No laila, ma kēia papahana Ua hoʻokō ʻia ʻo VECRO ma ka Waves blockchain i ka noi-pane mode me ka hoʻohana ʻana i nā hana hoʻoili ma waena o ka mea hoʻohana a me ka ʻōlelo. I ka manawa like, ua hoʻokomo ʻia kahi palapala ma ka moʻolelo oracle e hoʻokele pono i ka hana e like me ka loiloi i hōʻike ʻia ma luna. Ua hōʻoia ʻia nā kālepa Oracle a ua hoʻihoʻi ʻia ke kaulahao holoʻokoʻa o ka pilina mea hoʻohana. Hoʻopili ʻia nā hana ʻehā a pau i ka hōʻoia ʻana i ka waiwai hope; ua hoʻopaʻa ʻia ka ʻaelike akamai iā lākou me kahi kaula hōʻoia koʻikoʻi, e nānā ana i nā waiwai āpau i kēlā me kēia pae a waiho ʻole kahi wahi no kekahi manipulation.

Eia hou, e waiho a hoʻomaʻamaʻa. ʻAʻole hana wale ka ʻōlelo aʻoaʻo e like me ka papahana i manaʻo ʻia. Hoʻomalu piha ʻia kāna hana ma ka pae blockchain e ka mea i hoʻokumu ʻia paa me ka aelike akamai. E hele i ka hema a ʻaʻole hele wale ke kālepa. No laila, inā hoʻokomo ʻia kahi kālepa i loko o ka blockchain, ʻaʻole pono ka mea hoʻohana e nānā i kekahi mea; ua nānā mua nā haneli o nā nodes pūnaewele i nā mea āpau nona.

I kēia manawa, aia hoʻokahi VECRO e holo ana ma ka Waves mainnet (hiki iā ʻoe ke holo iā ʻoe iho, ʻaʻole paʻakikī, wale nō. e nānā i ka laʻana hoʻonohonoho). Ke holo nei ke code i kēia manawa ma PHP (on WavesKit, e pili ana i ka mea Ua haʻi mua wau iā ʻoe).

No ka hoʻohana ʻana i ka lawelawe oracle pono ʻoe:

  • Hoʻoponopono iā R;
    • E hoʻouna ma kahi liʻiliʻi he 0.005 Waves i ka inoa inoa inoa init@vecr;
    • E loaʻa i ka R-code ma ka māhele hoʻopili i ka hoʻoili ʻana o 1 R-vecr hōʻailona mai ka ʻōlelo a ka mea hoʻohana;
  • E kiʻi i kahi pūlima;
    • E hoʻouna ma kahi liʻiliʻi 0.005 Waves i ka huaʻōlelo ʻo random@vecr, a pono hoʻi e hōʻike i ka R-code i loaʻa mua a me nā ʻikepili mea hoʻohana hou aʻe ma ke kahua hoʻopili;
    • E kiʻi i ka S-code ma ke kahua hoʻopili i ka hoʻoili ʻana o 1 S-vecr hōʻailona mai ka ʻōlelo aʻoaʻo i ka mea hoʻohana;
  • E hoʻohana i ka S-code ma ke ʻano he kumu o ka helu pseudo-random.

Nā nuances o ka hoʻokō o kēia manawa:

  • Hoʻohana ʻia nā nalu i hoʻouna ʻia i ka ʻōlelo aʻoaʻo ma ke ʻano he komisina no ka hoʻihoʻi ʻana i ka mea hoʻohana, a hiki i ka nui o 1 Waves;
  • ʻO R-code ka hui pū ʻana o kahi byte o ke ʻano 'R' a me kahi waiwai 32-byte base58-encoded R;
  • Pono ka R-code i ka hoʻopili ʻana ma mua, hiki mai ka ʻikepili mea hoʻohana ma hope o R-code;
  • ʻO S-code ka hui ʻana o kahi byte o ke ʻano 'S' a me kahi waiwai 32-byte base58-encoded o S;
  • ʻO S ka hopena o ka mahele modulo, no laila ʻaʻole hiki iā ʻoe ke hoʻohana iā S ma ke ʻano he helu pseudorandom 256-bit piha (hiki ke manaʻo ʻia kēia helu he helu kiʻekiʻe o 252-bit pseudorandom helu);
  • ʻO ka koho maʻalahi ka hoʻohana ʻana i ka hash S-code ma ke ʻano he helu pseudo-random.

Laʻana o ka loaʻa ʻana o ka S-code:

Mai kahi hiʻohiʻona ʻenehana, ua mākaukau loa ka oracle no ka hana, hiki iā ʻoe ke hoʻohana palekana. Mai ka manaʻo o ka hoʻohana ʻana e ka mea hoʻohana maʻamau, aia kahi hemahema o kahi interface kiʻi kūpono; pono e kali kēia.

E hauʻoli wau e pane i nā nīnau a e ʻae i nā manaʻo, mahalo.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka